fast_hash: avoid indirect function calls
[platform/kernel/linux-rpi.git] / include / asm-generic / hash.h
1 #ifndef __ASM_GENERIC_HASH_H
2 #define __ASM_GENERIC_HASH_H
3
4 #include <linux/jhash.h>
5
6 /**
7  *      arch_fast_hash - Caclulates a hash over a given buffer that can have
8  *                       arbitrary size. This function will eventually use an
9  *                       architecture-optimized hashing implementation if
10  *                       available, and trades off distribution for speed.
11  *
12  *      @data: buffer to hash
13  *      @len: length of buffer in bytes
14  *      @seed: start seed
15  *
16  *      Returns 32bit hash.
17  */
18 static inline u32 arch_fast_hash(const void *data, u32 len, u32 seed)
19 {
20         return jhash(data, len, seed);
21 }
22
23 /**
24  *      arch_fast_hash2 - Caclulates a hash over a given buffer that has a
25  *                        size that is of a multiple of 32bit words. This
26  *                        function will eventually use an architecture-
27  *                        optimized hashing implementation if available,
28  *                        and trades off distribution for speed.
29  *
30  *      @data: buffer to hash (must be 32bit padded)
31  *      @len: number of 32bit words
32  *      @seed: start seed
33  *
34  *      Returns 32bit hash.
35  */
36 static inline u32 arch_fast_hash2(const u32 *data, u32 len, u32 seed)
37 {
38         return jhash2(data, len, seed);
39 }
40
41 #endif /* __ASM_GENERIC_HASH_H */