git: bce864d1c274 - main - bnxt: Don't restart on VLAN changes

From: Kevin Bowling <kbowling_at_FreeBSD.org>
Date: Thu, 24 Aug 2023 20:51:56 UTC
The branch main has been updated by kbowling:

URL: https://cgit.FreeBSD.org/src/commit/?id=bce864d1c274faeb6678028aad1e07e91fe430ac

commit bce864d1c274faeb6678028aad1e07e91fe430ac
Author:     Kevin Bowling <kbowling@FreeBSD.org>
AuthorDate: 2023-08-24 20:16:24 +0000
Commit:     Kevin Bowling <kbowling@FreeBSD.org>
CommitDate: 2023-08-24 20:46:56 +0000

    bnxt: Don't restart on VLAN changes
    
    In rS360398, a new iflib device method was added with default of opt out
    for VLAN events needing an interface reset.
    
    This is unintentional for bnxt(4) and is causing another bug in its VLAN
    initialization code to affect the common case of adding and removing
    VLANs on an existing interface.
    
    PR:             269133
    Tested by:      kp
    MFC after:      2 weeks
    Sponsored by:   BBOX.io
    Differential Revision:  https://reviews.freebsd.org/D41558
---
 sys/dev/bnxt/if_bnxt.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/sys/dev/bnxt/if_bnxt.c b/sys/dev/bnxt/if_bnxt.c
index 2796eed94e11..25715756ce29 100644
--- a/sys/dev/bnxt/if_bnxt.c
+++ b/sys/dev/bnxt/if_bnxt.c
@@ -224,6 +224,7 @@ static uint8_t get_phy_type(struct bnxt_softc *softc);
 static uint64_t bnxt_get_baudrate(struct bnxt_link_info *link);
 static void bnxt_get_wol_settings(struct bnxt_softc *softc);
 static int bnxt_wol_config(if_ctx_t ctx);
+static bool bnxt_if_needs_restart(if_ctx_t, enum iflib_restart_event);
 
 /*
  * Device Interface Declaration
@@ -288,6 +289,8 @@ static device_method_t bnxt_iflib_methods[] = {
 	DEVMETHOD(ifdi_shutdown, bnxt_shutdown),
 	DEVMETHOD(ifdi_resume, bnxt_resume),
 
+	DEVMETHOD(ifdi_needs_restart, bnxt_if_needs_restart),
+
 	DEVMETHOD_END
 };
 
@@ -2497,6 +2500,16 @@ bnxt_wol_config(if_ctx_t ctx)
 	return 0;
 }
 
+static bool
+bnxt_if_needs_restart(if_ctx_t ctx __unused, enum iflib_restart_event event)
+{
+	switch (event) {
+	case IFLIB_RESTART_VLAN_CONFIG:
+	default:
+		return (false);
+	}
+}
+
 static int
 bnxt_shutdown(if_ctx_t ctx)
 {