public inbox for netdev@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCHv2 net-next 0/3] bonding: fix 802.3ad churn machine and port state issues
@ 2026-01-14  6:49 Hangbin Liu
  2026-01-14  6:49 ` [PATCHv2 net-next 1/3] bonding: set AD_RX_PORT_DISABLED when disabling a port Hangbin Liu
                   ` (3 more replies)
  0 siblings, 4 replies; 15+ messages in thread
From: Hangbin Liu @ 2026-01-14  6:49 UTC (permalink / raw)
  To: netdev
  Cc: Jay Vosburgh, Andrew Lunn, David S. Miller, Eric Dumazet,
	Jakub Kicinski, Paolo Abeni, Simon Horman, Mahesh Bandewar,
	Shuah Khan, linux-kselftest, Hangbin Liu

This series fixes two issues in the bonding 802.3ad implementation
related to port state management and churn detection:

1. When disabling a port, we need to set AD_RX_PORT_DISABLED to ensure
   proper state machine transitions, preventing ports from getting stuck
   in AD_RX_CURRENT state.

2. The ad_churn_machine implementation is restructured to follow IEEE
   802.1AX-2014 specifications correctly. The current implementation has
   several issues: it doesn't transition to "none" state immediately when
   synchronization is achieved, and can get stuck in churned state in
   multi-aggregator scenarios.

3. Selftests are enhanced to validate both mux state machine and churn
   state logic under aggregator selection and failover scenarios.

These changes ensure proper LACP state machine behavior and fix issues
where ports could remain in incorrect states during aggregator failover.


v2:
  * The changes are large and not urgent. Post to net-next as Paolo suggested
  * set AD_RX_PORT_DISABLED only in ad_agg_selection_logic to avoid side effect. (Paolo Abeni)
  * remove actor_churn as it can only be true when the state is ACTOR_CHURN (Paolo Abeni)
  * remove AD_PORT_CHURNED since we don't need it anywhere (Paolo Abeni)
  * I didn't add new helper for ad_churn_machine() as it looks not help much.

v1: https://lore.kernel.org/netdev/20251124043310.34073-1-liuhangbin@gmail.com

Hangbin Liu (3):
  bonding: set AD_RX_PORT_DISABLED when disabling a port
  bonding: restructure ad_churn_machine
  selftests: bonding: add mux and churn state testing

 drivers/net/bonding/bond_3ad.c                | 97 ++++++++++++++-----
 .../selftests/drivers/net/bonding/Makefile    |  2 +-
 ...nd_lacp_prio.sh => bond_lacp_ad_select.sh} | 73 ++++++++++++++
 3 files changed, 146 insertions(+), 26 deletions(-)
 rename tools/testing/selftests/drivers/net/bonding/{bond_lacp_prio.sh => bond_lacp_ad_select.sh} (64%)

-- 
2.50.1


^ permalink raw reply	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2026-02-26 12:40 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-01-14  6:49 [PATCHv2 net-next 0/3] bonding: fix 802.3ad churn machine and port state issues Hangbin Liu
2026-01-14  6:49 ` [PATCHv2 net-next 1/3] bonding: set AD_RX_PORT_DISABLED when disabling a port Hangbin Liu
2026-01-14  6:49 ` [PATCHv2 net-next 2/3] bonding: restructure ad_churn_machine Hangbin Liu
2026-01-19 20:22   ` Jakub Kicinski
2026-01-20  5:51     ` Hangbin Liu
2026-01-20  8:29     ` Paolo Abeni
2026-01-20 23:11       ` Jakub Kicinski
2026-01-21  7:58         ` Paolo Abeni
2026-01-22  1:10           ` Jakub Kicinski
2026-01-14  6:49 ` [PATCHv2 net-next 3/3] selftests: bonding: add mux and churn state testing Hangbin Liu
2026-02-02  1:14 ` [PATCHv2 net-next 0/3] bonding: fix 802.3ad churn machine and port state issues Hangbin Liu
2026-02-02  9:27   ` Paolo Abeni
2026-02-23  1:55     ` Hangbin Liu
2026-02-26 11:55       ` Paolo Abeni
2026-02-26 12:40         ` Hangbin Liu

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox