diff options
author | Jay Vosburgh <fubar@us.ibm.com> | 2005-06-26 17:54:11 -0400 |
---|---|---|
committer | Jeff Garzik <jgarzik@pobox.com> | 2005-06-26 17:54:11 -0400 |
commit | 169a3e66637c667b43dab7c319ffd5c99804cad8 (patch) | |
tree | f10f7c82ca44b871ae1391c5a3d35a65c463fc9b /drivers/net/bonding/bonding.h | |
parent | c3ade5cad07f4d67f2e16a28f3c73d9483a55e0e (diff) |
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>
Diffstat (limited to 'drivers/net/bonding/bonding.h')
-rw-r--r-- | drivers/net/bonding/bonding.h | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/drivers/net/bonding/bonding.h b/drivers/net/bonding/bonding.h index 6558af22eda4..d27f377b3eeb 100644 --- a/drivers/net/bonding/bonding.h +++ b/drivers/net/bonding/bonding.h | |||
@@ -25,6 +25,10 @@ | |||
25 | * | 25 | * |
26 | * 2003/12/01 - Shmulik Hen <shmulik.hen at intel dot com> | 26 | * 2003/12/01 - Shmulik Hen <shmulik.hen at intel dot com> |
27 | * - Code cleanup and style changes | 27 | * - Code cleanup and style changes |
28 | * | ||
29 | * 2005/05/05 - Jason Gabler <jygabler at lbl dot gov> | ||
30 | * - added "xmit_policy" kernel parameter for alternate hashing policy | ||
31 | * support for mode 2 | ||
28 | */ | 32 | */ |
29 | 33 | ||
30 | #ifndef _LINUX_BONDING_H | 34 | #ifndef _LINUX_BONDING_H |
@@ -36,8 +40,8 @@ | |||
36 | #include "bond_3ad.h" | 40 | #include "bond_3ad.h" |
37 | #include "bond_alb.h" | 41 | #include "bond_alb.h" |
38 | 42 | ||
39 | #define DRV_VERSION "2.6.2" | 43 | #define DRV_VERSION "2.6.3" |
40 | #define DRV_RELDATE "June 5, 2005" | 44 | #define DRV_RELDATE "June 8, 2005" |
41 | #define DRV_NAME "bonding" | 45 | #define DRV_NAME "bonding" |
42 | #define DRV_DESCRIPTION "Ethernet Channel Bonding Driver" | 46 | #define DRV_DESCRIPTION "Ethernet Channel Bonding Driver" |
43 | 47 | ||
@@ -137,6 +141,7 @@ | |||
137 | 141 | ||
138 | struct bond_params { | 142 | struct bond_params { |
139 | int mode; | 143 | int mode; |
144 | int xmit_policy; | ||
140 | int miimon; | 145 | int miimon; |
141 | int arp_interval; | 146 | int arp_interval; |
142 | int use_carrier; | 147 | int use_carrier; |
@@ -198,6 +203,7 @@ struct bonding { | |||
198 | #endif /* CONFIG_PROC_FS */ | 203 | #endif /* CONFIG_PROC_FS */ |
199 | struct list_head bond_list; | 204 | struct list_head bond_list; |
200 | struct dev_mc_list *mc_list; | 205 | struct dev_mc_list *mc_list; |
206 | int (*xmit_hash_policy)(struct sk_buff *, struct net_device *, int); | ||
201 | u32 master_ip; | 207 | u32 master_ip; |
202 | u16 flags; | 208 | u16 flags; |
203 | struct ad_bond_info ad_info; | 209 | struct ad_bond_info ad_info; |