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 <[email protected]>
Reported-by: Andrew McGregor <[email protected]>
Cc: Dave Taht <[email protected]>
Cc: Tom Herbert <[email protected]>
Cc: David Laight <[email protected]>
Cc: Joe Perches <[email protected]>
Signed-off-by: David S. Miller <[email protected]>