diff --git a/sys/net/ieee8023ad_lacp.c b/sys/net/ieee8023ad_lacp.c index 70de743..5060223 100644 --- a/sys/net/ieee8023ad_lacp.c +++ b/sys/net/ieee8023ad_lacp.c @@ -947,6 +947,7 @@ lacp_select_active_aggregator(struct lacp_softc *lsc) struct lacp_aggregator *best_la = NULL; uint64_t best_speed = 0; char buf[LACP_LAGIDSTR_MAX+1]; + u_char zero_mac[] = { 0, 0, 0, 0, 0, 0 }; LACP_TRACE(NULL); @@ -957,6 +958,13 @@ lacp_select_active_aggregator(struct lacp_softc *lsc) continue; } + /* + * Skip aggregators that has no partner. + */ + if (!memcmp(LACP_SYS_MAC(la->la_partner), + zero_mac, sizeof(zero_mac))) + continue; + speed = lacp_aggregator_bandwidth(la); LACP_DPRINTF((NULL, "%s, speed=%jd, nports=%d\n", lacp_format_lagid_aggregator(la, buf, sizeof(buf)), diff --git a/sys/net/ieee8023ad_lacp.h b/sys/net/ieee8023ad_lacp.h index 9481ce2..4076513 100644 --- a/sys/net/ieee8023ad_lacp.h +++ b/sys/net/ieee8023ad_lacp.h @@ -264,6 +264,7 @@ struct lacp_softc { ((((s1) ^ (s2)) & (mask)) == 0) #define LACP_SYS_PRI(peer) (peer).lip_systemid.lsi_prio +#define LACP_SYS_MAC(peer) (peer).lip_systemid.lsi_mac #define LACP_PORT(_lp) ((struct lacp_port *)(_lp)->lp_psc) #define LACP_SOFTC(_sc) ((struct lacp_softc *)(_sc)->sc_psc)