This patch fixes unstable LACP negotiation when bonding is configured in passive mode (`lacp_active=off`).
Previously, the actor would stop sending LACPDUs after initial negotiation succeeded, leading to the partner timing out and restarting the negotiation cycle. This resulted in continuous LACP state flapping.
The fix ensures the passive actor starts sending periodic LACPDUs after receiving the first LACPDU from the partner, in accordance with IEEE 802.1AX-2020 section 6.4.1.
Out of topic: Although this patch addresses a functional bug and could be considered for `net`, I'm slightly concerned about potential regressions, as it changes the current bonding LACP protocol behavior.
It might be safer to merge this through `net-next` first to allow broader testing. Thoughts?
Hangbin Liu (2): bonding: send LACPDUs periodically in passive mode after receiving partner's LACPDU selftests: bonding: add test for passive LACP mode
drivers/net/bonding/bond_3ad.c | 72 ++++++++++---- drivers/net/bonding/bond_options.c | 1 + include/net/bond_3ad.h | 1 + .../selftests/drivers/net/bonding/Makefile | 3 +- .../drivers/net/bonding/bond_passive_lacp.sh | 93 +++++++++++++++++++ 5 files changed, 151 insertions(+), 19 deletions(-) create mode 100755 tools/testing/selftests/drivers/net/bonding/bond_passive_lacp.sh