]> git.proxmox.com Git - mirror_ubuntu-focal-kernel.git/commitdiff
bnxt_en: reverse order of TX disable and carrier off
authorEdwin Peer <edwin.peer@broadcom.com>
Thu, 11 Feb 2021 07:24:23 +0000 (02:24 -0500)
committerKleber Sacilotto de Souza <kleber.souza@canonical.com>
Wed, 14 Apr 2021 16:31:23 +0000 (18:31 +0200)
BugLink: https://bugs.launchpad.net/bugs/1918974
[ Upstream commit 132e0b65dc2b8bfa9721bfce834191f24fd1d7ed ]

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 <edwin.peer@broadcom.com>
Signed-off-by: Michael Chan <michael.chan@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
Signed-off-by: Kamal Mostafa <kamal@canonical.com>
Signed-off-by: Kelsey Skunberg <kelsey.skunberg@canonical.com>
drivers/net/ethernet/broadcom/bnxt/bnxt.c

index 7c8187d386756aa1ba370a7b230f9506a01589c0..4ae49d92c1eed7ea33f6e307d7cde6000d964fd0 100644 (file)
@@ -8347,9 +8347,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)