1
0
mirror of git://projects.qi-hardware.com/openwrt-xburst.git synced 2024-09-18 00:30:14 +03:00
openwrt-xburst/target/linux/rb532/patches-2.6.28/017-korina_fix_loop_back_rx_desc.patch
kaloz 2f1b56443c refresh patches
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@15581 3c298f89-4303-0410-b956-a3cf2f4a3e73
2009-05-04 11:35:08 +00:00

31 lines
1.1 KiB
Diff

After the last loop iteration, i has the value RC32434_NUM_RDS and
therefore leads to an index overflow when used afterwards to address the
last element. This is yet another another bug introduced when rewriting
parts of the driver for upstream preparation, as the original driver
used 'RC32434_NUM_RDS - 1' instead.
Signed-off-by: Phil Sutter <n0-1@freewrt.org>
---
drivers/net/korina.c | 9 +++++----
1 files changed, 5 insertions(+), 4 deletions(-)
--- a/drivers/net/korina.c
+++ b/drivers/net/korina.c
@@ -766,11 +766,12 @@ static void korina_alloc_ring(struct net
lp->rd_ring[i].link = CPHYSADDR(&lp->rd_ring[i+1]);
}
- /* loop back */
- lp->rd_ring[i].link = CPHYSADDR(&lp->rd_ring[0]);
- lp->rx_next_done = 0;
+ /* loop back receive descriptors, so the last
+ * descriptor points to the first one */
+ lp->rd_ring[i - 1].link = CPHYSADDR(&lp->rd_ring[0]);
+ lp->rd_ring[i - 1].control |= DMA_DESC_COD;
- lp->rd_ring[i].control |= DMA_DESC_COD;
+ lp->rx_next_done = 0;
lp->rx_chain_head = 0;
lp->rx_chain_tail = 0;
lp->rx_chain_status = desc_empty;