Date: Mon, 06 Jul 2026 01:43:07 +0000 From: Konstantin Belousov <kib@FreeBSD.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org Cc: Andrew Gallatin <gallatin@FreeBSD.org> Subject: git: 020f7f6cf1ff - stable/15 - lacp: fix link state with multiple aggregators Message-ID: <6a4b082b.3da59.4a08b651@gitrepo.freebsd.org>
index | next in thread | raw e-mail
The branch stable/15 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=020f7f6cf1ff2ace74c84dbb1caaf8cd5e71209d commit 020f7f6cf1ff2ace74c84dbb1caaf8cd5e71209d Author: Andrew Gallatin <gallatin@FreeBSD.org> AuthorDate: 2026-05-12 12:52:24 +0000 Commit: Konstantin Belousov <kib@FreeBSD.org> CommitDate: 2026-07-06 01:35:54 +0000 lacp: fix link state with multiple aggregators (cherry picked from commit 9f69446d45484c16d2b9b9bf71bbb2fca86cb6e5) --- sys/net/ieee8023ad_lacp.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/sys/net/ieee8023ad_lacp.c b/sys/net/ieee8023ad_lacp.c index 02aa1aaa0eee..9726b4c4dff8 100644 --- a/sys/net/ieee8023ad_lacp.c +++ b/sys/net/ieee8023ad_lacp.c @@ -682,6 +682,7 @@ static void lacp_disable_distributing(struct lacp_port *lp) { struct lacp_aggregator *la = lp->lp_aggregator; + struct lacp_aggregator *la_active; struct lacp_softc *lsc = lp->lp_lsc; struct lagg_softc *sc = lsc->lsc_softc; char buf[LACP_LAGIDSTR_MAX+1]; @@ -703,7 +704,6 @@ lacp_disable_distributing(struct lacp_port *lp) TAILQ_REMOVE(&la->la_ports, lp, lp_dist_q); la->la_nports--; - sc->sc_active = la->la_nports; if (lsc->lsc_active_aggregator == la) { lacp_suppress_distributing(lsc, la); @@ -713,6 +713,8 @@ lacp_disable_distributing(struct lacp_port *lp) } lp->lp_state &= ~LACP_STATE_DISTRIBUTING; + la_active = lsc->lsc_active_aggregator; + sc->sc_active = la_active != NULL ? la_active->la_nports : 0; if_link_state_change(sc->sc_ifp, sc->sc_active ? LINK_STATE_UP : LINK_STATE_DOWN); } @@ -721,6 +723,7 @@ static void lacp_enable_distributing(struct lacp_port *lp) { struct lacp_aggregator *la = lp->lp_aggregator; + struct lacp_aggregator *la_active; struct lacp_softc *lsc = lp->lp_lsc; struct lagg_softc *sc = lsc->lsc_softc; char buf[LACP_LAGIDSTR_MAX+1]; @@ -739,7 +742,6 @@ lacp_enable_distributing(struct lacp_port *lp) KASSERT(la->la_refcnt > la->la_nports, ("aggregator refcnt invalid")); TAILQ_INSERT_HEAD(&la->la_ports, lp, lp_dist_q); la->la_nports++; - sc->sc_active = la->la_nports; lp->lp_state |= LACP_STATE_DISTRIBUTING; @@ -750,6 +752,8 @@ lacp_enable_distributing(struct lacp_port *lp) /* try to become the active aggregator */ lacp_select_active_aggregator(lsc); + la_active = lsc->lsc_active_aggregator; + sc->sc_active = la_active != NULL ? la_active->la_nports : 0; if_link_state_change(sc->sc_ifp, sc->sc_active ? LINK_STATE_UP : LINK_STATE_DOWN); }home | help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?6a4b082b.3da59.4a08b651>
