|
@@ -104,26 +104,22 @@ static int ip6_frag_reasm(struct frag_queue *fq, struct sk_buff *prev,
|
|
unsigned int inet6_hash_frag(__be32 id, const struct in6_addr *saddr,
|
|
unsigned int inet6_hash_frag(__be32 id, const struct in6_addr *saddr,
|
|
const struct in6_addr *daddr, u32 rnd)
|
|
const struct in6_addr *daddr, u32 rnd)
|
|
{
|
|
{
|
|
- u32 a, b, c;
|
|
|
|
-
|
|
|
|
- a = (__force u32)saddr->s6_addr32[0];
|
|
|
|
- b = (__force u32)saddr->s6_addr32[1];
|
|
|
|
- c = (__force u32)saddr->s6_addr32[2];
|
|
|
|
-
|
|
|
|
- a += JHASH_GOLDEN_RATIO;
|
|
|
|
- b += JHASH_GOLDEN_RATIO;
|
|
|
|
- c += rnd;
|
|
|
|
- __jhash_mix(a, b, c);
|
|
|
|
-
|
|
|
|
- a += (__force u32)saddr->s6_addr32[3];
|
|
|
|
- b += (__force u32)daddr->s6_addr32[0];
|
|
|
|
- c += (__force u32)daddr->s6_addr32[1];
|
|
|
|
- __jhash_mix(a, b, c);
|
|
|
|
-
|
|
|
|
- a += (__force u32)daddr->s6_addr32[2];
|
|
|
|
- b += (__force u32)daddr->s6_addr32[3];
|
|
|
|
- c += (__force u32)id;
|
|
|
|
- __jhash_mix(a, b, c);
|
|
|
|
|
|
+ u32 c;
|
|
|
|
+
|
|
|
|
+ c = jhash_3words((__force u32)saddr->s6_addr32[0],
|
|
|
|
+ (__force u32)saddr->s6_addr32[1],
|
|
|
|
+ (__force u32)saddr->s6_addr32[2],
|
|
|
|
+ rnd);
|
|
|
|
+
|
|
|
|
+ c = jhash_3words((__force u32)saddr->s6_addr32[3],
|
|
|
|
+ (__force u32)daddr->s6_addr32[0],
|
|
|
|
+ (__force u32)daddr->s6_addr32[1],
|
|
|
|
+ c);
|
|
|
|
+
|
|
|
|
+ c = jhash_3words((__force u32)daddr->s6_addr32[2],
|
|
|
|
+ (__force u32)daddr->s6_addr32[3],
|
|
|
|
+ (__force u32)id,
|
|
|
|
+ c);
|
|
|
|
|
|
return c & (INETFRAGS_HASHSZ - 1);
|
|
return c & (INETFRAGS_HASHSZ - 1);
|
|
}
|
|
}
|