Commit ce04d635 authored by Jianhua Xie's avatar Jianhua Xie Committed by David S. Miller

bonding: enhance L2 hash helper with packet type

Current L2 hash helper calculates destination eth addr and
source ether addr as L2 hash factors.  This patch is adding
packet type ID field into L2 hash factors.  While one of
BOND_XMIT_POLICY_LAYER2 or BOND_XMIT_POLICY_{LAYER|ENCAP}23
is applied, for the 2nd level hash, enhanced hash method can
help to distribute different types of packets like IPv4/IPv6
packets to different slave devices.

CC: Jay Vosburgh <j.vosburgh@gmail.com>
CC: Veaceslav Falico <vfalico@gmail.com>
CC: Andy Gospodarek <andy@greyhouse.net>
CC: David S. Miller <davem@davemloft.net>
CC: Pan Jiafei <Jiafei.Pan@freescale.com>
Acked-by: default avatarEric Dumazet <edumazet@google.com>
Signed-off-by: default avatarJianhua Xie <jianhua.xie@freescale.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent c2659479
...@@ -2977,11 +2977,11 @@ static struct notifier_block bond_netdev_notifier = { ...@@ -2977,11 +2977,11 @@ static struct notifier_block bond_netdev_notifier = {
/* L2 hash helper */ /* L2 hash helper */
static inline u32 bond_eth_hash(struct sk_buff *skb) static inline u32 bond_eth_hash(struct sk_buff *skb)
{ {
struct ethhdr *data = (struct ethhdr *)skb->data; struct ethhdr *ep, hdr_tmp;
if (skb_headlen(skb) >= offsetof(struct ethhdr, h_proto))
return data->h_dest[5] ^ data->h_source[5];
ep = skb_header_pointer(skb, 0, sizeof(hdr_tmp), &hdr_tmp);
if (ep)
return ep->h_dest[5] ^ ep->h_source[5] ^ ep->h_proto;
return 0; return 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment