From 6c7f40ae71f19e6a15f49e9a4dc45d1a53122d49 Mon Sep 17 00:00:00 2001 From: blogic Date: Sun, 25 Oct 2009 14:34:55 +0000 Subject: [ramips] fixes dma bug in eth driver, that was caused under high net load. the dma ring was not initialized on time git-svn-id: svn://svn.openwrt.org/openwrt/trunk@18149 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- target/linux/ramips/files/drivers/net/ramips.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'target/linux/ramips/files') diff --git a/target/linux/ramips/files/drivers/net/ramips.c b/target/linux/ramips/files/drivers/net/ramips.c index 1689f0a18..e634453bf 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; } -- cgit v1.2.3