Page MenuHomeFreeBSD

lacp: fix link state with multiple aggregators
AcceptedPublic

Authored by gallatin on Wed, Apr 22, 3:39 PM.
Tags
None
Referenced Files
F153977646: D56579.diff
Sat, Apr 25, 5:35 AM
Unknown Object (File)
Wed, Apr 22, 4:02 PM

Details

Summary

When we have multiple aggregators, the link state should reflect the state of the active aggregator.

This change was prompted by a script pruning 10GbE interfaces from an lacp bundle with 100GbE
interfaces. Mixing speeds like this creates multiple aggregators.
When the last 10GbE interface was removed, lagg0 would loose link because the
current aggregator's port count would drop to 0, even though the 100GbE aggregator had
active ports. This left the system in a hard to diagnose state where lagg0 reported "active",
but all outgoing IP traffic was dropped, due to the RT_LINK_IS_UP() check noticing lagg0's
if_link_state was marked as down.

Diff Detail

Repository
rG FreeBSD src repository
Lint
Lint Skipped
Unit
Tests Skipped

Event Timeline

zlei added a subscriber: zlei.

Looks good to me.

sys/net/ieee8023ad_lacp.c
756

So we shall have at least one active aggregator when the port start distributing. I think la_active != NULL is always true here.

This revision is now accepted and ready to land.Fri, Apr 24, 7:23 AM