ipv6: add ipv6_addr_hash() helper
commitddbe503203855939946430e39bae58de11b70b69
authorEric Dumazet <edumazet@google.com>
Wed, 18 Jul 2012 08:11:12 +0000 (18 08:11 +0000)
committerDavid S. Miller <davem@davemloft.net>
Wed, 18 Jul 2012 18:28:46 +0000 (18 11:28 -0700)
tree1605a8d3b14a92819eb8ed47ae5a84c1b66e12f8
parentdc9059512c09d09b99de6cd3a8bc842507934cbb
ipv6: add ipv6_addr_hash() helper

Introduce ipv6_addr_hash() helper doing a XOR on all bits
of an IPv6 address, with an optimized x86_64 version.

Use it in flow dissector, as suggested by Andrew McGregor,
to reduce hash collision probabilities in fq_codel (and other
users of flow dissector)

Use it in ip6_tunnel.c and use more bit shuffling, as suggested
by David Laight, as existing hash was ignoring most of them.

Use it in sunrpc and use more bit shuffling, using hash_32().

Use it in net/ipv6/addrconf.c, using hash_32() as well.

As a cleanup, use it in net/ipv4/tcp_metrics.c

Signed-off-by: Eric Dumazet <edumazet@google.com>
Reported-by: Andrew McGregor <andrewmcgr@gmail.com>
Cc: Dave Taht <dave.taht@gmail.com>
Cc: Tom Herbert <therbert@google.com>
Cc: David Laight <David.Laight@ACULAB.COM>
Cc: Joe Perches <joe@perches.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/net/addrconf.h
include/net/ipv6.h
net/core/flow_dissector.c
net/ipv4/tcp_metrics.c
net/ipv6/addrconf.c
net/ipv6/ip6_tunnel.c
net/sunrpc/svcauth_unix.c