• Jay Vosburgh's avatar
    bonding: fix 802.3ad standards compliance error · 2d6682db
    Jay Vosburgh authored
    The language of 802.3ad 43.4.9 requires the "recordPDU" function
    to, in part, compare the Partner parameter values in a received LACPDU
    to the stored Actor values.  If those match, then the Partner's
    synchronization state is set to true.
    
    	The current 802.3ad implementation is performing these steps out
    of order; first, the synchronization check is done, then the paramters are
    checked to see if they match (the synch check being done against a match
    check of a prior LACPDU).  This causes delays in establishing aggregators
    in some circumstances.
    
    	This patch modifies the 802.3ad code to call __choose_matched,
    the function that does the "match" comparisions, as the first step of
    __record_pdu, instead of immediately afterwards.  This new behavior is
    in compliance with the language of the standard.
    
    	Some additional commentary relating to code vs. standard is also
    added.
    
    	Reported by Martin Patterson <martin@gear6.com> who also supplied
    the logic of the fix and verified the patch.
    Signed-off-by: default avatarJay Vosburgh <fubar@us.ibm.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    2d6682db
bond_3ad.c 79.8 KB