From: Edwin Peer Date: Thu, 11 Feb 2021 07:24:23 +0000 (-0500) Subject: bnxt_en: reverse order of TX disable and carrier off X-Git-Tag: io_uring-worker.v3-2021-02-25~99^2~10^2~25^2~1 X-Git-Url: https://git.kernel.dk/?a=commitdiff_plain;h=132e0b65dc2b8bfa9721bfce834191f24fd1d7ed;p=linux-2.6-block.git bnxt_en: reverse order of TX disable and carrier off A TX queue can potentially immediately timeout after it is stopped and the last TX timestamp on that queue was more than 5 seconds ago with carrier still up. Prevent these intermittent false TX timeouts by bringing down carrier first before calling netif_tx_disable(). Fixes: c0c050c58d84 ("bnxt_en: New Broadcom ethernet driver.") Signed-off-by: Edwin Peer Signed-off-by: Michael Chan Signed-off-by: David S. Miller --- diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c index d10e4f85dd11..1c96b7ba24f2 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c @@ -8856,9 +8856,10 @@ void bnxt_tx_disable(struct bnxt *bp) txr->dev_state = BNXT_DEV_STATE_CLOSING; } } + /* Drop carrier first to prevent TX timeout */ + netif_carrier_off(bp->dev); /* Stop all TX queues */ netif_tx_disable(bp->dev); - netif_carrier_off(bp->dev); } void bnxt_tx_enable(struct bnxt *bp)