• Aahil Awatramani's avatar
    bonding: Add independent control state machine · 240fd405
    Aahil Awatramani authored
    Add support for the independent control state machine per IEEE
    802.1AX-2008 5.4.15 in addition to the existing implementation of the
    coupled control state machine.
    
    Introduces two new states, AD_MUX_COLLECTING and AD_MUX_DISTRIBUTING in
    the LACP MUX state machine for separated handling of an initial
    Collecting state before the Collecting and Distributing state. This
    enables a port to be in a state where it can receive incoming packets
    while not still distributing. This is useful for reducing packet loss when
    a port begins distributing before its partner is able to collect.
    
    Added new functions such as bond_set_slave_tx_disabled_flags and
    bond_set_slave_rx_enabled_flags to precisely manage the port's collecting
    and distributing states. Previously, there was no dedicated method to
    disable TX while keeping RX enabled, which this patch addresses.
    
    Note that the regular flow process in the kernel's bonding driver remains
    unaffected by this patch. The extension requires explicit opt-in by the
    user (in order to ensure no disruptions for existing setups) via netlink
    support using the new bonding parameter coupled_control. The default value
    for coupled_control is set to 1 so as to preserve existing behaviour.
    Signed-off-by: default avatarAahil Awatramani <aahila@google.com>
    Reviewed-by: default avatarHangbin Liu <liuhangbin@gmail.com>
    Link: https://lore.kernel.org/r/20240202175858.1573852-1-aahila@google.comSigned-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
    240fd405
bond_3ad.h 9.42 KB