bonding: xor/802.3ad improved slave hash
commit169a3e66637c667b43dab7c319ffd5c99804cad8
authorJay Vosburgh <fubar@us.ibm.com>
Sun, 26 Jun 2005 21:54:11 +0000 (26 17:54 -0400)
committerJeff Garzik <jgarzik@pobox.com>
Sun, 26 Jun 2005 21:54:11 +0000 (26 17:54 -0400)
treef10f7c82ca44b871ae1391c5a3d35a65c463fc9b
parentc3ade5cad07f4d67f2e16a28f3c73d9483a55e0e
bonding: xor/802.3ad improved slave hash

Add support for alternate slave selection algorithms to bonding
balance-xor and 802.3ad modes.  Default mode (what we have now: xor of
MAC addresses) is "layer2", new choice is "layer3+4", using IP and port
information for hashing to select peer.

Originally submitted by Jason Gabler for balance-xor mode;
modified by Jay Vosburgh to additionally support 802.3ad mode.  Jason's
original comment is as follows:

The attached patch to the Linux Etherchannel Bonding driver modifies the
driver's "balance-xor" mode as follows:

      - alternate hashing policy support for mode 2
        * Added kernel parameter "xmit_policy" to allow the specification
          of different hashing policies for mode 2.  The original mode 2
          policy is the default, now found in xmit_hash_policy_layer2().
        * Added xmit_hash_policy_layer34()

This patch was inspired by hashing policies implemented by Cisco,
Foundry and IBM, which are explained in
Foundry documentation found at:
http://www.foundrynet.com/services/documentation/sribcg/Trunking.html#112750

Signed-off-by: Jason Gabler <jygabler@lbl.gov>
Signed-off-by: Jay Vosburgh <fubar@us.ibm.com>
drivers/net/bonding/bond_3ad.c
drivers/net/bonding/bond_main.c
drivers/net/bonding/bonding.h
include/linux/if_bonding.h