summaryrefslogtreecommitdiffstats
path: root/net/core/dev.c
diff options
context:
space:
mode:
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>2012-09-16 17:31:36 -0700
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2012-09-16 17:31:36 -0700
commit7ac3c93e5dd74486ca4f8f0b02ae55182658d2e5 (patch)
tree08b949c872aefbc0f8e12bdcc4dc82297bdd0f2e /net/core/dev.c
parent23666a74c9f552bc9cfef20ded1b8b29bedb80c6 (diff)
parent5698bd757d55b1bb87edd1a9744ab09c142abfc2 (diff)
downloadlinux-7ac3c93e5dd74486ca4f8f0b02ae55182658d2e5.tar.gz
linux-7ac3c93e5dd74486ca4f8f0b02ae55182658d2e5.tar.bz2
linux-7ac3c93e5dd74486ca4f8f0b02ae55182658d2e5.zip
Merge 3.6-rc6 into tty-next
This pulls in the fixes in 3.6-rc6 Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
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)
if (!skb_flow_dissect(skb, &keys))
return;
- if (keys.ports) {
- if ((__force u16)keys.port16[1] < (__force u16)keys.port16[0])
- swap(keys.port16[0], keys.port16[1]);
+ if (keys.ports)
skb->l4_rxhash = 1;
- }
/* get a consistent hash (same value on both flow directions) */
- if ((__force u32)keys.dst < (__force u32)keys.src)
+ if (((__force u32)keys.dst < (__force u32)keys.src) ||
+ (((__force u32)keys.dst == (__force u32)keys.src) &&
+ ((__force u16)keys.port16[1] < (__force u16)keys.port16[0]))) {
swap(keys.dst, keys.src);
+ swap(keys.port16[0], keys.port16[1]);
+ }
hash = jhash_3words((__force u32)keys.dst,
(__force u32)keys.src,