hash: add new Toeplitz hash implementation
[dpdk.git] / lib / hash / rte_thash_gfni.h
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright(c) 2021 Intel Corporation
3  */
4
5 #ifndef _RTE_THASH_GFNI_H_
6 #define _RTE_THASH_GFNI_H_
7
8 #ifdef __cplusplus
9 extern "C" {
10 #endif
11
12 #include <rte_log.h>
13
14 #ifdef RTE_ARCH_X86
15
16 #include <rte_thash_x86_gfni.h>
17
18 #endif
19
20 #ifndef RTE_THASH_GFNI_DEFINED
21
22 /**
23  * Calculate Toeplitz hash.
24  * Dummy implementation.
25  *
26  * @warning
27  * @b EXPERIMENTAL: this API may change without prior notice.
28  *
29  * @param m
30  *  Pointer to the matrices generated from the corresponding
31  *  RSS hash key using rte_thash_complete_matrix().
32  * @param tuple
33  *  Pointer to the data to be hashed. Data must be in network byte order.
34  * @param len
35  *  Length of the data to be hashed.
36  * @return
37  *  Calculated Toeplitz hash value.
38  */
39 __rte_experimental
40 static inline uint32_t
41 rte_thash_gfni(const uint64_t *mtrx __rte_unused,
42         const uint8_t *key __rte_unused, int len __rte_unused)
43 {
44         RTE_LOG(ERR, HASH, "%s is undefined under given arch\n", __func__);
45         return 0;
46 }
47
48 #endif /* RTE_THASH_GFNI_DEFINED */
49
50 #ifdef __cplusplus
51 }
52 #endif
53
54 #endif /* _RTE_THASH_GFNI_H_ */