With rotates instead of shifts, the upper and lower 16 bits of the returned
hash are always the same.

Signed-off-by: Ben Pfaff <b...@nicira.com>
---
 lib/hash.h |    6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/lib/hash.h b/lib/hash.h
index 701e686..96866c4 100644
--- a/lib/hash.h
+++ b/lib/hash.h
@@ -152,11 +152,11 @@ static inline uint32_t mhash_add(uint32_t hash, uint32_t 
data)
 static inline uint32_t mhash_finish(uint32_t hash, size_t n)
 {
     hash ^= n * 4;
-    hash ^= hash_rot(hash, 16);
+    hash ^= hash >> 16;
     hash *= 0x85ebca6b;
-    hash ^= hash_rot(hash, 13);
+    hash ^= hash >> 13;
     hash *= 0xc2b2ae35;
-    hash ^= hash_rot(hash, 16);
+    hash ^= hash >> 16;
     return hash;
 }
 
-- 
1.7.2.5

_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to