diff options
author | Florian Fainelli <florian@openwrt.org> | 2009-03-15 12:56:39 +0000 |
---|---|---|
committer | Florian Fainelli <florian@openwrt.org> | 2009-03-15 12:56:39 +0000 |
commit | 499fa7f7a12864f7d9637b52dbc23c6cb572243e (patch) | |
tree | 71c61df0a3a052ca694ba475d16d843ee242c651 /target/linux/rb532/patches-2.6.28/017-korina_fix_loop_back_rx_desc.patch | |
parent | a54018aa87473925942be51e70e8306ee46f1acc (diff) | |
download | upstream-499fa7f7a12864f7d9637b52dbc23c6cb572243e.tar.gz upstream-499fa7f7a12864f7d9637b52dbc23c6cb572243e.tar.bz2 upstream-499fa7f7a12864f7d9637b52dbc23c6cb572243e.zip |
add 2.6.28 patches and kernel config
SVN-Revision: 14884
Diffstat (limited to 'target/linux/rb532/patches-2.6.28/017-korina_fix_loop_back_rx_desc.patch')
-rw-r--r-- | target/linux/rb532/patches-2.6.28/017-korina_fix_loop_back_rx_desc.patch | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/target/linux/rb532/patches-2.6.28/017-korina_fix_loop_back_rx_desc.patch b/target/linux/rb532/patches-2.6.28/017-korina_fix_loop_back_rx_desc.patch new file mode 100644 index 0000000000..0484f2cbe5 --- /dev/null +++ b/target/linux/rb532/patches-2.6.28/017-korina_fix_loop_back_rx_desc.patch @@ -0,0 +1,36 @@ +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(-) + +diff --git a/drivers/net/korina.c b/drivers/net/korina.c +index 1d6e48e..67fbdf4 100644 +--- a/drivers/net/korina.c ++++ b/drivers/net/korina.c +@@ -769,11 +769,12 @@ static void korina_alloc_ring(struct net_device *dev) + 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; +-- +1.5.6.4 + + |