diff options
author | John Crispin <john@openwrt.org> | 2009-10-25 14:34:55 +0000 |
---|---|---|
committer | John Crispin <john@openwrt.org> | 2009-10-25 14:34:55 +0000 |
commit | 9126be5b6e62a087d337a2a47d15724fe77bb4ec (patch) | |
tree | 226b04e1ec8e2ce40aa31cfd5a4f0e8a377e4ea7 /target | |
parent | 6d7b5a7e62932119304158efff3c0b4bba877ca0 (diff) | |
download | upstream-9126be5b6e62a087d337a2a47d15724fe77bb4ec.tar.gz upstream-9126be5b6e62a087d337a2a47d15724fe77bb4ec.tar.bz2 upstream-9126be5b6e62a087d337a2a47d15724fe77bb4ec.zip |
fixes dma bug in eth driver, that was caused under high net load. the dma ring was not initialized on time
SVN-Revision: 18149
Diffstat (limited to 'target')
-rw-r--r-- | target/linux/ramips/files/drivers/net/ramips.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/target/linux/ramips/files/drivers/net/ramips.c b/target/linux/ramips/files/drivers/net/ramips.c index 1689f0a18f..e634453bf5 100644 --- a/target/linux/ramips/files/drivers/net/ramips.c +++ b/target/linux/ramips/files/drivers/net/ramips.c @@ -248,6 +248,8 @@ ramips_eth_irq(int irq, void *dev) struct raeth_priv *priv = netdev_priv(dev); unsigned long fe_int = ramips_fe_rr(RAMIPS_FE_INT_STATUS); + ramips_fe_wr(0xFFFFFFFF, RAMIPS_FE_INT_STATUS); + if(fe_int & RAMIPS_RX_DLY_INT) { ramips_fe_wr(ramips_fe_rr(RAMIPS_FE_INT_ENABLE) & ~(RAMIPS_RX_DLY_INT), @@ -255,8 +257,7 @@ ramips_eth_irq(int irq, void *dev) tasklet_schedule(&priv->rx_tasklet); } if(fe_int & RAMIPS_TX_DLY_INT) - tasklet_schedule(&priv->tx_housekeeping_tasklet); - ramips_fe_wr(0xFFFFFFFF, RAMIPS_FE_INT_STATUS); + ramips_eth_tx_housekeeping((unsigned long)dev); return IRQ_HANDLED; } |