linux/drivers/net/bonding
Jay Vosburgh 2d6682db11 bonding: fix 802.3ad standards compliance error
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: Jay Vosburgh <fubar@us.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2009-11-15 22:21:34 -08:00
..
Makefile bonding: send IPv6 neighbor advertisement on failover 2008-11-06 00:49:37 -05:00
bond_3ad.c bonding: fix 802.3ad standards compliance error 2009-11-15 22:21:34 -08:00
bond_3ad.h Remove duplicate slow protocol define in bond_3ad.h 2009-05-09 13:15:49 -07:00
bond_alb.c bond: Add support for multiple network namespaces 2009-10-30 12:41:21 -07:00
bond_alb.h Convert bonding timers to workqueues 2007-10-23 20:32:00 -04:00
bond_ipv6.c bond: Add support for multiple network namespaces 2009-10-30 12:41:21 -07:00
bond_main.c bond: Get the rtnl_link_ops support correct 2009-10-30 12:41:22 -07:00
bond_sysfs.c bond: Add support for multiple network namespaces 2009-10-30 12:41:21 -07:00
bonding.h bond: Add support for multiple network namespaces 2009-10-30 12:41:21 -07:00