forked from Minki/linux
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>
This commit is contained in:
parent
a6c83ccf3c
commit
12a303e3b8
@ -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));
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user