Re: [RESEND][PATCH 1/3] PPPoE: improved hashing routine
From: David Miller <davem@davemloft.net>
Date: 2007-07-31 08:26:10
From: David Miller <davem@davemloft.net>
Date: 2007-07-31 08:26:10
From: Florian Zumbiehl <redacted> Date: Tue, 31 Jul 2007 10:07:19 +0200
Erm, I'd say this not only produces different results than the old version, but it also produces "wrong" results, in that it ignores quite a bit of the data that's supposed to be hashed. If I didn't overlook something, it only considers addr&0x0f0f0f0f0f00 and sid&0x0f0f, given the right endianness of addr and that PPPOE_HASH_SIZE stays 16.
You're right, I need to fix the shifts up. How does this version look? hash ^= (hash >> 4) ^ (hash >> 12) ^ (hash >> 20); return (head ^ (hash >> 8) ^ (hash >> 24)) & (PPPOE_HASH_SIZE - 1); Actually it might be simpler and more efficient to just make PPPOE_HASH_SHIFT be 8.