[Devel] [PATCH RHEL7 COMMIT] rh/bnxt_en: reverse order of TX disable and carrier off

Konstantin Khorenko khorenko at virtuozzo.com
Thu Dec 15 20:27:33 MSK 2022


The commit is pushed to "branch-rh7-3.10.0-1160.80.1.vz7.191.x-ovz" and will appear at https://src.openvz.org/scm/ovz/vzkernel.git
after rh7-3.10.0-1160.80.1.vz7.191.4
------>
commit 4af0b89f8a6d1e29a9c77bca272f711bc1beccad
Author: Edwin Peer <edwin.peer at broadcom.com>
Date:   Thu Feb 11 02:24:23 2021 -0500

    rh/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().
    
    mFixes: c0c050c58d84 ("bnxt_en: New Broadcom ethernet driver.")
    Signed-off-by: Edwin Peer <edwin.peer at broadcom.com>
    Signed-off-by: Michael Chan <michael.chan at broadcom.com>
    Signed-off-by: David S. Miller <davem at davemloft.net>
    
    The patch is backported from RHEL7.9 kernel 3.10.0-1160.81.1.el7:
    https://access.redhat.com/labs/rhcb/RHEL-7.9/kernel-3.10.0-1160.81.1.el7/patches/blob/1498-netdrv-bnxt_en-reverse-order-of-TX-disable-and-carri.patch
    
      From: Jamie Bainbridge <jbainbri at redhat.com>
      Date: Thu, 11 Feb 2021 02:24:23 -0500
      Subject: [PATCH 1498/1510] [netdrv] bnxt_en: reverse order of TX
               disable andcarrier off
      Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2110869
    
    https://jira.sw.ru/browse/PSBM-144136
    (cherry picked from ms commit 132e0b65dc2b8bfa9721bfce834191f24fd1d7ed)
    Signed-off-by: Konstantin Khorenko <khorenko at virtuozzo.com>
---
 drivers/net/ethernet/broadcom/bnxt/bnxt.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
index 2b21970a2841..351ab994b773 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
@@ -7794,9 +7794,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)


More information about the Devel mailing list