examples/l3fwd: merge l3fwd-acl example
[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 /**
49  * Bulk implementation for Toeplitz hash.
50  * Dummy implementation.
51  *
52  * @warning
53  * @b EXPERIMENTAL: this API may change without prior notice.
54  *
55  * @param m
56  *  Pointer to the matrices generated from the corresponding
57  *  RSS hash key using rte_thash_complete_matrix().
58  * @param len
59  *  Length of the largest data buffer to be hashed.
60  * @param tuple
61  *  Array of the pointers on data to be hashed.
62  *  Data must be in network byte order.
63  * @param val
64  *  Array of uint32_t where to put calculated Toeplitz hash values
65  * @param num
66  *  Number of tuples to hash.
67  */
68 __rte_experimental
69 static inline void
70 rte_thash_gfni_bulk(const uint64_t *mtrx __rte_unused,
71         int len __rte_unused, uint8_t *tuple[] __rte_unused,
72         uint32_t val[], uint32_t num)
73 {
74         unsigned int i;
75
76         RTE_LOG(ERR, HASH, "%s is undefined under given arch\n", __func__);
77         for (i = 0; i < num; i++)
78                 val[i] = 0;
79 }
80
81 #endif /* RTE_THASH_GFNI_DEFINED */
82
83 #ifdef __cplusplus
84 }
85 #endif
86
87 #endif /* _RTE_THASH_GFNI_H_ */