Messages in this thread Patch in this message | ![/](/images/icornerl.gif) | | From | Thomas Bogendoerfer <> | Subject | [PATCH net] bonding: 802.3ad: Avoid packet loss when switching aggregator | Date | Thu, 4 Apr 2024 13:49:08 +0200 |
| |
If selection logic decides to switch to a new aggregator it disables all ports of the old aggregator, but doesn't enable ports on the new aggregator. These ports will eventually be enabled when the next LACPDU is received, which might take some time and without an active port transmitted frames are dropped. Avoid this by enabling already collected ports of the new aggregator immediately.
Signed-off-by: Thomas Bogendoerfer <tbogendoerfer@suse.de> --- drivers/net/bonding/bond_3ad.c | 7 +++++++ 1 file changed, 7 insertions(+)
diff --git a/drivers/net/bonding/bond_3ad.c b/drivers/net/bonding/bond_3ad.c index c6807e473ab7..529e2a7c51e2 100644 --- a/drivers/net/bonding/bond_3ad.c +++ b/drivers/net/bonding/bond_3ad.c @@ -1876,6 +1876,13 @@ static void ad_agg_selection_logic(struct aggregator *agg, __disable_port(port); } } + + /* enable ports on new active aggregator */ + for (port = best->lag_ports; port; + port = port->next_port_in_aggregator) { + __enable_port(port); + } + /* Slave array needs update. */ *update_slave_arr = true; } -- 2.35.3
| ![\](/images/icornerr.gif) |