From 9763f432cfdd75b799d8c9aa10c8eb5277746275 Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Sun, 1 Feb 2015 08:20:37 +0000 Subject: ramips: fix ethernet driver tx completion polling - budget is decremented with completed frames, so don't check if done is smaller - ACK the interrupt before processing further frames to fix a small race condition. Signed-off-by: Felix Fietkau git-svn-id: svn://svn.openwrt.org/openwrt/trunk@44234 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- .../linux/ramips/files/drivers/net/ethernet/ralink/ralink_soc_eth.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'target/linux/ramips/files') diff --git a/target/linux/ramips/files/drivers/net/ethernet/ralink/ralink_soc_eth.c b/target/linux/ramips/files/drivers/net/ethernet/ralink/ralink_soc_eth.c index 9900a5e508..12c6ccaf98 100644 --- a/target/linux/ramips/files/drivers/net/ethernet/ralink/ralink_soc_eth.c +++ b/target/linux/ramips/files/drivers/net/ethernet/ralink/ralink_soc_eth.c @@ -902,11 +902,11 @@ txpoll_again: if (!done) return 0; - if (done < budget) { + if (budget) { + fe_reg_w32(tx_intr, FE_REG_FE_INT_STATUS); hwidx = fe_reg_r32(FE_REG_TX_DTX_IDX0); if (idx != hwidx) goto txpoll_again; - fe_reg_w32(tx_intr, FE_REG_FE_INT_STATUS); } netdev_completed_queue(netdev, done, bytes_compl); -- cgit v1.2.3