| From 347ed54cf912b1b30b0690e7ecf4d55f57e52a5d Mon Sep 17 00:00:00 2001 |
| From: htbegin <hotforest@gmail.com> |
| Date: Mon, 1 Oct 2012 16:42:43 +0000 |
| Subject: net: ethernet: davinci_cpdma: decrease the desc count when cleaning up the remaining packets |
| |
| |
| From: htbegin <hotforest@gmail.com> |
| |
| [ Upstream commit ffb5ba90017505a19e238e986e6d33f09e4df765 ] |
| |
| chan->count is used by rx channel. If the desc count is not updated by |
| the clean up loop in cpdma_chan_stop, the value written to the rxfree |
| register in cpdma_chan_start will be incorrect. |
| |
| Signed-off-by: Tao Hou <hotforest@gmail.com> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| drivers/net/davinci_cpdma.c | 1 + |
| 1 file changed, 1 insertion(+) |
| |
| --- a/drivers/net/davinci_cpdma.c |
| +++ b/drivers/net/davinci_cpdma.c |
| @@ -849,6 +849,7 @@ int cpdma_chan_stop(struct cpdma_chan *c |
| |
| next_dma = desc_read(desc, hw_next); |
| chan->head = desc_from_phys(pool, next_dma); |
| + chan->count--; |
| chan->stats.teardown_dequeue++; |
| |
| /* issue callback without locks held */ |