diff options
-rw-r--r-- | drivers/net/ethernet/freescale/fec_main.c | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/drivers/net/ethernet/freescale/fec_main.c b/drivers/net/ethernet/freescale/fec_main.c index 3fedb5f6cb7a..d48e16da198a 100644 --- a/drivers/net/ethernet/freescale/fec_main.c +++ b/drivers/net/ethernet/freescale/fec_main.c @@ -1200,12 +1200,6 @@ fec_enet_tx(struct net_device *ndev) /* Update pointer to next buffer descriptor to be transmitted */ bdp = fec_enet_get_nextdesc(bdp, fep); - - /* Since we have freed up a buffer, the ring is no longer full - */ - if (netif_queue_stopped(ndev) && - fec_enet_get_free_txdesc_num(fep) >= fep->tx_wake_threshold) - netif_wake_queue(ndev); } netdev_completed_queue(ndev, pkts_compl, bytes_compl); @@ -1213,6 +1207,10 @@ fec_enet_tx(struct net_device *ndev) /* ERR006538: Keep the transmitter going */ if (bdp != fep->cur_tx && readl(fep->hwp + FEC_X_DES_ACTIVE) == 0) writel(0, fep->hwp + FEC_X_DES_ACTIVE); + + if (netif_queue_stopped(ndev) && + fec_enet_get_free_txdesc_num(fep) >= fep->tx_wake_threshold) + netif_wake_queue(ndev); } /* During a receive, the cur_rx points to the current incoming buffer. |