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

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
...@@ -406,37 +406,36 @@ static int cpdma_chan_fit_rate(struct cpdma_chan *ch, u32 rate, ...@@ -406,37 +406,36 @@ static int cpdma_chan_fit_rate(struct cpdma_chan *ch, u32 rate,
struct cpdma_chan *chan; struct cpdma_chan *chan;
u32 old_rate = ch->rate; u32 old_rate = ch->rate;
u32 new_rmask = 0; u32 new_rmask = 0;
int rlim = 1; int rlim = 0;
int i; int i;
*prio_mode = 0;
for (i = tx_chan_num(0); i < tx_chan_num(CPDMA_MAX_CHANNELS); i++) { for (i = tx_chan_num(0); i < tx_chan_num(CPDMA_MAX_CHANNELS); i++) {
chan = ctlr->channels[i]; chan = ctlr->channels[i];
if (!chan) { if (!chan)
rlim = 0;
continue; continue;
}
if (chan == ch) if (chan == ch)
chan->rate = rate; chan->rate = rate;
if (chan->rate) { if (chan->rate) {
if (rlim) { rlim = 1;
new_rmask |= chan->mask; new_rmask |= chan->mask;
} else { continue;
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;
} }
if (rlim)
goto err;
} }
*rmask = new_rmask; *rmask = new_rmask;
*prio_mode = rlim;
return 0; 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, static u32 cpdma_chan_set_factors(struct cpdma_ctlr *ctlr,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment