Index: sys/net/ieee8023ad_lacp.c =================================================================== --- sys/net/ieee8023ad_lacp.c +++ sys/net/ieee8023ad_lacp.c @@ -566,7 +566,6 @@ lp->lp_aggregator = NULL; lacp_sm_rx_set_expired(lp); LACP_UNLOCK(lsc); - lacp_linkstate(lgp); return (0); } Index: sys/net/if_lagg.c =================================================================== --- sys/net/if_lagg.c +++ sys/net/if_lagg.c @@ -759,7 +759,6 @@ ifp->if_index)) break; } - LAGG_RUNLOCK(); if (tlp != NULL) CK_SLIST_INSERT_AFTER(tlp, lp, lp_entries); else @@ -774,10 +773,13 @@ lagg_port_destroy(lp, 0); if (oldmtu != -1) (*ifp->if_ioctl)(ifp, SIOCSIFMTU, (caddr_t)&ifr); + LAGG_RUNLOCK(); return (error); } + LAGG_RUNLOCK(); /* Update lagg capabilities */ + lagg_proto_linkstate(sc, lp); lagg_capabilities(sc); lagg_linkstate(sc); @@ -828,6 +830,7 @@ LAGG_XLOCK_ASSERT(sc); + LAGG_RLOCK(); if (rundelport) lagg_proto_delport(sc, lp); @@ -850,6 +853,7 @@ /* Finally, remove the port from the lagg */ CK_SLIST_REMOVE(&sc->sc_ports, lp, lagg_port, lp_entries); sc->sc_count--; + LAGG_RUNLOCK(); /* Update the primary interface */ if (lp == sc->sc_primary) {