From 9126be5b6e62a087d337a2a47d15724fe77bb4ec Mon Sep 17 00:00:00 2001
From: John Crispin <john@openwrt.org>
Date: Sun, 25 Oct 2009 14:34:55 +0000
Subject: [PATCH] fixes dma bug in eth driver, that was caused under high net
 load. the dma ring was not initialized on time

SVN-Revision: 18149
---
 target/linux/ramips/files/drivers/net/ramips.c | 5 +++--
 1 file 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;
 }
 
-- 
2.30.2