summaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/ti
diff options
context:
space:
mode:
authorGrygorii Strashko <grygorii.strashko@ti.com>2017-01-06 14:07:30 -0600
committerDavid S. Miller <davem@davemloft.net>2017-01-07 20:48:14 -0500
commit12a303e3b8136a89f0864a577a69f6a40b65fbe5 (patch)
tree3bf2e81fb6cf00a263baee2dbbc007e6c841e57f /drivers/net/ethernet/ti
parenta6c83ccf3c534214e0aeb167a70391864da9b1fc (diff)
downloadop-kernel-dev-12a303e3b8136a89f0864a577a69f6a40b65fbe5.zip
op-kernel-dev-12a303e3b8136a89f0864a577a69f6a40b65fbe5.tar.gz
net: ethernet: ti: cpdma: fix desc re-queuing
The currently processing cpdma descriptor with EOQ flag set may contain two values in Next Descriptor Pointer field: - valid pointer: means CPDMA missed addition of new desc in queue; - null: no more descriptors in queue. In the later case, it's not required to write to HDP register, but now CPDMA does it. Hence, add additional check for Next Descriptor Pointer != null in cpdma_chan_process() function before writing in HDP register. Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/ti')
-rw-r--r--drivers/net/ethernet/ti/davinci_cpdma.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/net/ethernet/ti/davinci_cpdma.c b/drivers/net/ethernet/ti/davinci_cpdma.c
index d6f0ded..a53b384 100644
--- a/drivers/net/ethernet/ti/davinci_cpdma.c
+++ b/drivers/net/ethernet/ti/davinci_cpdma.c
@@ -1159,7 +1159,7 @@ static int __cpdma_chan_process(struct cpdma_chan *chan)
chan->count--;
chan->stats.good_dequeue++;
- if (status & CPDMA_DESC_EOQ) {
+ if ((status & CPDMA_DESC_EOQ) && chan->head) {
chan->stats.requeue++;
chan_write(chan, hdp, desc_phys(pool, chan->head));
}
OpenPOWER on IntegriCloud