From d519e5fd0ddab14b65085d281fd729b609405971 Mon Sep 17 00:00:00 2001 From: zfdx123 <2915441170@qq.com> Date: Sun, 12 Feb 2023 18:55:17 +0800 Subject: [PATCH] Revert "ramips: ethernet: fix to interrupt handling" Fixes 7620/7621 transmit timed out issue. Close: #10920 --- .../files/drivers/net/ethernet/ralink/mtk_eth_soc.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/target/linux/ramips/files/drivers/net/ethernet/ralink/mtk_eth_soc.c b/target/linux/ramips/files/drivers/net/ethernet/ralink/mtk_eth_soc.c index 01b74d808..75fab7b45 100644 --- a/target/linux/ramips/files/drivers/net/ethernet/ralink/mtk_eth_soc.c +++ b/target/linux/ramips/files/drivers/net/ethernet/ralink/mtk_eth_soc.c @@ -889,8 +889,6 @@ static int fe_poll_rx(struct napi_struct *napi, int budget, struct fe_rx_dma *rxd, trxd; int done = 0, pad; - fe_reg_w32(rx_intr, FE_REG_FE_INT_STATUS); - if (netdev->features & NETIF_F_RXCSUM) checksum_bit = soc->checksum_bit; else @@ -983,6 +981,9 @@ release_desc: done++; } + if (done < budget) + fe_reg_w32(rx_intr, FE_REG_FE_INT_STATUS); + return done; } @@ -997,8 +998,6 @@ static int fe_poll_tx(struct fe_priv *priv, int budget, u32 tx_intr, u32 idx, hwidx; struct fe_tx_ring *ring = &priv->tx_ring; - fe_reg_w32(tx_intr, FE_REG_FE_INT_STATUS); - idx = ring->tx_free_idx; hwidx = fe_reg_r32(FE_REG_TX_DTX_IDX0); @@ -1022,7 +1021,9 @@ static int fe_poll_tx(struct fe_priv *priv, int budget, u32 tx_intr, if (idx == hwidx) { /* read hw index again make sure no new tx packet */ hwidx = fe_reg_r32(FE_REG_TX_DTX_IDX0); - if (idx != hwidx) + if (idx == hwidx) + fe_reg_w32(tx_intr, FE_REG_FE_INT_STATUS); + else *tx_again = 1; } else { *tx_again = 1;