Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4bb6c356 authored by Ivan Khoronzhuk's avatar Ivan Khoronzhuk Committed by David S. Miller
Browse files

net: ethernet: ti: cpdma: fit rated channels in backward order



According to TRM tx rated channels should be in 7..0 order,
so correct it.

Reviewed-by: default avatarIlias Apalodimas <ilias.apalodimas@linaro.org>
Reviewed-by: default avatarGrygorii Strashko <grygorii.strashko@ti.com>
Signed-off-by: default avatarIvan Khoronzhuk <ivan.khoronzhuk@linaro.org>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 79b3325d
Loading
Loading
Loading
Loading
+15 −16
Original line number Diff line number Diff line
@@ -406,37 +406,36 @@ static int cpdma_chan_fit_rate(struct cpdma_chan *ch, u32 rate,
	struct cpdma_chan *chan;
	u32 old_rate = ch->rate;
	u32 new_rmask = 0;
	int rlim = 1;
	int rlim = 0;
	int i;

	*prio_mode = 0;
	for (i = tx_chan_num(0); i < tx_chan_num(CPDMA_MAX_CHANNELS); i++) {
		chan = ctlr->channels[i];
		if (!chan) {
			rlim = 0;
		if (!chan)
			continue;
		}

		if (chan == ch)
			chan->rate = rate;

		if (chan->rate) {
			if (rlim) {
			rlim = 1;
			new_rmask |= chan->mask;
			} else {
				ch->rate = old_rate;
				dev_err(ctlr->dev, "Prev channel of %dch is not rate limited\n",
					chan->chan_num);
				return -EINVAL;
			}
		} else {
			*prio_mode = 1;
			rlim = 0;
			continue;
		}

		if (rlim)
			goto err;
	}

	*rmask = new_rmask;
	*prio_mode = rlim;
	return 0;

err:
	ch->rate = old_rate;
	dev_err(ctlr->dev, "Upper cpdma ch%d is not rate limited\n",
		chan->chan_num);
	return -EINVAL;
}

static u32 cpdma_chan_set_factors(struct cpdma_ctlr *ctlr,