• Wilson Kok's avatar
    bonding: fix incorrect lacp mux state when agg not active · 63b46242
    Wilson Kok authored
    This patch attempts to fix the following problems when an actor or
    partner's aggregator is not active:
        1. a slave's lacp port state is marked as AD_STATE_SYNCHRONIZATION
           even if it is attached to an inactive aggregator. LACP advertises
           this state to the partner, making the partner think he can move
           into COLLECTING_DISTRIBUTING state even though this link will not
           pass traffic on the local side
    
        2. a slave goes into COLLECTING_DISTRIBUTING state without checking
           if the aggregator is actually active
    
        3. when in COLLECTING_DISTRIBUTING state, the partner parameters may
           change, e.g. the partner_oper_port_state.SYNCHRONIZATION. The
           local mux machine is not reacting to the change and continue to
           keep the slave and bond up
    
        4. When bond slave leaves an inactive aggregator and joins an active
           aggregator, the actor oper port state need to update to SYNC state.
    
    v2:
     * fix style issues in bond_3ad.c
    
    Cc: Andy Gospodarek <gospo@cumulusnetworks.com>
    Reviewed-by: default avatarNikolay Aleksandrov <nikolay@redhat.com>
    Signed-off-by: default avatarWilson Kok <wkok@cumulusnetworks.com>
    Signed-off-by: default avatarJonathan Toppins <jtoppins@cumulusnetworks.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    63b46242
bond_3ad.c 77.4 KB