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 3a8475a63ddc7b06921f9f19d610c67d62cc15b8..96bc0e5fb1163c530cf61f14a3ab11ca643d1875 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
@@ -899,9 +899,6 @@ txpoll_again:
 	}
 	priv->tx_free_idx = idx;
 
-	if (!done)
-		return 0;
-
 	if (budget) {
 		fe_reg_w32(tx_intr, FE_REG_FE_INT_STATUS);
 		hwidx = fe_reg_r32(FE_REG_TX_DTX_IDX0);
@@ -909,6 +906,9 @@ txpoll_again:
 			goto txpoll_again;
 	}
 
+	if (!done)
+		return 0;
+
 	netdev_completed_queue(netdev, done, bytes_compl);
 	if (unlikely(netif_queue_stopped(netdev) &&
 				netif_carrier_ok(netdev))) {