On Mon, Nov 26, 2012 at 01:39:00PM +0100, Sven Eckelmann wrote:
On Monday 26 November 2012 13:30:02 Antonio Quartulli wrote: [...]
The in kernel implementation will create a different hash sum -> tt entries will end up in a different bucket -> CRC will be different (please correct me about the last step... just had this problem in the back of my head).
CRC computation does not rely on entries positions, because the real CRC16 is computed on the client mac address only (and this is the same everywhere) then the results are XOR'd together. Since XOR is commutative we do not need to keep the same order network wide.
I've already wrote this two 2 1/2 hours ago.
Instead, your reasoning is correct for DAT, but for the global DAT hash function only. The local one can be whatever we need, so we can also use jhash for this.
Please define global and local DAT hash function. Because you use the same function in both places.
Yes, sorry, it's my fault. At the very beginning DAT had two distinct hash functions (before it got merged) but then I decided to use the same everywhere.
At this point I would rather suggest to leave DAT as it is (so v2 it's fine with me).
Thank you.
Cheers,