X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=include%2Fnet%2Finet6_hashtables.h;h=668056b4bb0b9982b249b96bf8c33ceb5435c912;hb=3e37c3f9978839d91188e4ca0cc662a7245f28e4;hp=c28e424f53d9eb5e28d1480d55562668ef0dba16;hpb=c4366889dda8110247be59ca41fddb82951a8c26;p=linux-2.6 diff --git a/include/net/inet6_hashtables.h b/include/net/inet6_hashtables.h index c28e424f53..668056b4bb 100644 --- a/include/net/inet6_hashtables.h +++ b/include/net/inet6_hashtables.h @@ -19,6 +19,9 @@ #include #include #include +#include + +#include #include @@ -28,12 +31,11 @@ struct inet_hashinfo; static inline unsigned int inet6_ehashfn(const struct in6_addr *laddr, const u16 lport, const struct in6_addr *faddr, const __be16 fport) { - unsigned int hashent = (lport ^ (__force u16)fport); + u32 ports = (lport ^ (__force u16)fport); - hashent ^= (__force u32)(laddr->s6_addr32[3] ^ faddr->s6_addr32[3]); - hashent ^= hashent >> 16; - hashent ^= hashent >> 8; - return hashent; + return jhash_3words((__force u32)laddr->s6_addr32[3], + (__force u32)faddr->s6_addr32[3], + ports, inet_ehash_secret); } static inline int inet6_sk_ehashfn(const struct sock *sk)