aboutsummaryrefslogtreecommitdiffstats
path: root/net/core/dev.c
diff options
context:
space:
mode:
authorTony Lindgren <tony@atomide.com>2012-09-24 14:42:13 -0400
committerTony Lindgren <tony@atomide.com>2012-09-24 14:42:13 -0400
commit3fe05bd9980df7207a35b4841a94dc2875e86960 (patch)
treeb5bb9287088955d2b4b4552b4a4ca9c4c40769a4 /net/core/dev.c
parent6bfc82ff589a00e5fbc12b958c649d703d273c86 (diff)
parent5698bd757d55b1bb87edd1a9744ab09c142abfc2 (diff)
Merge tag 'v3.6-rc6' into devel-dt
Linux 3.6-rc6
Diffstat (limited to 'net/core/dev.c')
-rw-r--r--net/core/dev.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/net/core/dev.c b/net/core/dev.c
index 83988362805e..d7fe32c946c1 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -2647,15 +2647,16 @@ void __skb_get_rxhash(struct sk_buff *skb)
2647 if (!skb_flow_dissect(skb, &keys)) 2647 if (!skb_flow_dissect(skb, &keys))
2648 return; 2648 return;
2649 2649
2650 if (keys.ports) { 2650 if (keys.ports)
2651 if ((__force u16)keys.port16[1] < (__force u16)keys.port16[0])
2652 swap(keys.port16[0], keys.port16[1]);
2653 skb->l4_rxhash = 1; 2651 skb->l4_rxhash = 1;
2654 }
2655 2652
2656 /* get a consistent hash (same value on both flow directions) */ 2653 /* get a consistent hash (same value on both flow directions) */
2657 if ((__force u32)keys.dst < (__force u32)keys.src) 2654 if (((__force u32)keys.dst < (__force u32)keys.src) ||
2655 (((__force u32)keys.dst == (__force u32)keys.src) &&
2656 ((__force u16)keys.port16[1] < (__force u16)keys.port16[0]))) {
2658 swap(keys.dst, keys.src); 2657 swap(keys.dst, keys.src);
2658 swap(keys.port16[0], keys.port16[1]);
2659 }
2659 2660
2660 hash = jhash_3words((__force u32)keys.dst, 2661 hash = jhash_3words((__force u32)keys.dst,
2661 (__force u32)keys.src, 2662 (__force u32)keys.src,