bonding: enhance L2 hash helper with packet type
[pandora-kernel.git] / drivers / net / bonding / bond_main.c
index 1ff676c..a2c4e8d 100644 (file)
@@ -2977,11 +2977,11 @@ static struct notifier_block bond_netdev_notifier = {
 /* L2 hash helper */
 static inline u32 bond_eth_hash(struct sk_buff *skb)
 {
-       struct ethhdr *data = (struct ethhdr *)skb->data;
-
-       if (skb_headlen(skb) >= offsetof(struct ethhdr, h_proto))
-               return data->h_dest[5] ^ data->h_source[5];
+       struct ethhdr *ep, hdr_tmp;
 
+       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;
 }