From b4bd28a490012ecbce292561da404d4e9b02d24b Mon Sep 17 00:00:00 2001 From: Christophe Fontaine Date: Wed, 31 May 2017 11:27:19 +0200 Subject: Remove calls to crc_u32 and add clib_crc32c for armv8+crc crc_u32 was not defined for non x86_64 with SSE4.2 processors. Calls to "crc_u32" are removed and replaced by either a call to clib_crc32c or a call to clib_xxhash, as the result is not used as a check value but as a hash. Change-Id: I3af4d68e2e5ebd0c9b0a6090f848d043cb0f20a2 Signed-off-by: Christophe Fontaine --- src/plugins/flowprobe/node.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'src/plugins/flowprobe') diff --git a/src/plugins/flowprobe/node.c b/src/plugins/flowprobe/node.c index 6a539db9..80bfa9b5 100644 --- a/src/plugins/flowprobe/node.c +++ b/src/plugins/flowprobe/node.c @@ -17,6 +17,7 @@ #include #include #include +#include #include #include #include @@ -258,10 +259,16 @@ static inline u32 flowprobe_hash (flowprobe_key_t * k) { flowprobe_main_t *fm = &flowprobe_main; - int i; u32 h = 0; - for (i = 0; i < sizeof (k->as_u32) / sizeof (u32); i++) - h = crc_u32 (k->as_u32[i], h); + +#ifdef clib_crc32c_uses_intrinsics + h = clib_crc32c ((u8 *) k->as_u32, FLOWPROBE_KEY_IN_U32); +#else + u64 tmp = + k->as_u32[0] ^ k->as_u32[1] ^ k->as_u32[2] ^ k->as_u32[3] ^ k->as_u32[4]; + h = clib_xxhash (tmp); +#endif + return h >> (32 - fm->ht_log2len); } -- cgit 1.2.3-korg