diff options
Diffstat (limited to 'samples')
| -rw-r--r-- | samples/bpf/hash_func01.h | 55 |
1 files changed, 0 insertions, 55 deletions
diff --git a/samples/bpf/hash_func01.h b/samples/bpf/hash_func01.h deleted file mode 100644 index 38255812e376..000000000000 --- a/samples/bpf/hash_func01.h +++ /dev/null @@ -1,55 +0,0 @@ -/* SPDX-License-Identifier: LGPL-2.1 - * - * Based on Paul Hsieh's (LGPG 2.1) hash function - * From: http://www.azillionmonkeys.com/qed/hash.html - */ - -#define get16bits(d) (*((const __u16 *) (d))) - -static __always_inline -__u32 SuperFastHash (const char *data, int len, __u32 initval) { - __u32 hash = initval; - __u32 tmp; - int rem; - - if (len <= 0 || data == NULL) return 0; - - rem = len & 3; - len >>= 2; - - /* Main loop */ -#pragma clang loop unroll(full) - for (;len > 0; len--) { - hash += get16bits (data); - tmp = (get16bits (data+2) << 11) ^ hash; - hash = (hash << 16) ^ tmp; - data += 2*sizeof (__u16); - hash += hash >> 11; - } - - /* Handle end cases */ - switch (rem) { - case 3: hash += get16bits (data); - hash ^= hash << 16; - hash ^= ((signed char)data[sizeof (__u16)]) << 18; - hash += hash >> 11; - break; - case 2: hash += get16bits (data); - hash ^= hash << 11; - hash += hash >> 17; - break; - case 1: hash += (signed char)*data; - hash ^= hash << 10; - hash += hash >> 1; - } - - /* Force "avalanching" of final 127 bits */ - hash ^= hash << 3; - hash += hash >> 5; - hash ^= hash << 4; - hash += hash >> 17; - hash ^= hash << 25; - hash += hash >> 6; - - return hash; -} |
