vec_free(mem);
}
-#if __SSE4_2__ && !defined (__i386__)
+#if defined(clib_crc32c_uses_intrinsics) && !defined (__i386__)
static_always_inline
u32 lb_hash_hash(u64 k0, u64 k1, u64 k2, u64 k3, u64 k4)
{
u64 val = 0;
- val = _mm_crc32_u64(val, k0);
- val = _mm_crc32_u64(val, k1);
- val = _mm_crc32_u64(val, k2);
- val = _mm_crc32_u64(val, k3);
- val = _mm_crc32_u64(val, k4);
+ val = crc32_u64(val, k0);
+ val = crc32_u64(val, k1);
+ val = crc32_u64(val, k2);
+ val = crc32_u64(val, k3);
+ val = crc32_u64(val, k4);
return (u32) val;
}
#else
bfd_calc_echo_checksum (u32 discriminator, u64 expire_time, u32 secret)
{
u64 checksum = 0;
-#if __SSE4_2__ && !defined (__i386__)
- checksum = _mm_crc32_u64 (0, discriminator);
- checksum = _mm_crc32_u64 (checksum, expire_time);
- checksum = _mm_crc32_u64 (checksum, secret);
+#if defined(clib_crc32c_uses_intrinsics) && !defined (__i386__)
+ checksum = crc32_u64 (0, discriminator);
+ checksum = crc32_u64 (checksum, expire_time);
+ checksum = crc32_u64 (checksum, secret);
#else
checksum = clib_xxhash (discriminator ^ expire_time ^ secret);
#endif
#define clib_crc32c_uses_intrinsics
#include <x86intrin.h>
+#define crc32_u64 _mm_crc32_u64
+
static_always_inline u32
clib_crc32c (u8 * s, int len)
{
#define clib_crc32c_uses_intrinsics
#include <arm_acle.h>
+
+#define crc32_u64 __crc32cd
+
static_always_inline u32
clib_crc32c (u8 * s, int len)
{
always_inline u64
clib_cuckoo_hash_8_8 (clib_cuckoo_kv_8_8_t * v)
{
-#if __SSE4_2__ && !defined (__i386__)
- return _mm_crc32_u64 (0, v->key);
+#if defined(clib_crc32c_uses_intrinsics) && !defined (__i386__)
+ return crc32_u64 (0, v->key);
#else
return clib_xxhash (v->key);
#endif
# is not completly biased.
for asid in self.ass:
if load[asid] < len(self.packets) / (len(self.ass) * 2):
- self.log(
+ self.logger.error(
"ASS is not balanced: load[%d] = %d" % (asid, load[asid]))
raise Exception("Load Balancer algorithm is biased")