mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2025-01-03 12:24:45 +08:00
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: Ilias Apalodimas <ilias.apalodimas@linaro.org> Reviewed-by: Grygorii Strashko <grygorii.strashko@ti.com> Signed-off-by: Ivan Khoronzhuk <ivan.khoronzhuk@linaro.org> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
79b3325d0d
commit
4bb6c356a0
@ -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) {
|
||||
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;
|
||||
rlim = 1;
|
||||
new_rmask |= chan->mask;
|
||||
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,
|
||||
|
Loading…
Reference in New Issue
Block a user