xref: /dpdk/drivers/net/ntnic/include/hw_mod_hsh_v5.h (revision a5a5d5bb316a1b65c92bdc436462b9e24d051108)
1*a5a5d5bbSOleksandr Kolomeiets /*
2*a5a5d5bbSOleksandr Kolomeiets  * SPDX-License-Identifier: BSD-3-Clause
3*a5a5d5bbSOleksandr Kolomeiets  * Copyright(c) 2023 Napatech A/S
4*a5a5d5bbSOleksandr Kolomeiets  */
5*a5a5d5bbSOleksandr Kolomeiets 
6*a5a5d5bbSOleksandr Kolomeiets #ifndef _HW_MOD_HSH_V5_H_
7*a5a5d5bbSOleksandr Kolomeiets #define _HW_MOD_HSH_V5_H_
8*a5a5d5bbSOleksandr Kolomeiets 
9*a5a5d5bbSOleksandr Kolomeiets #include <stdint.h>
10*a5a5d5bbSOleksandr Kolomeiets 
11*a5a5d5bbSOleksandr Kolomeiets #define HSH_RCP_MAC_PORT_MASK_SIZE 4
12*a5a5d5bbSOleksandr Kolomeiets #define HSH_RCP_WORD_MASK_SIZE 10
13*a5a5d5bbSOleksandr Kolomeiets /* Toeplitz hash key size in 32-bit words, e.g. 10 words means 320 bits, i.e. 40 Bytes */
14*a5a5d5bbSOleksandr Kolomeiets #define HSH_RCP_KEY_SIZE 10
15*a5a5d5bbSOleksandr Kolomeiets 
16*a5a5d5bbSOleksandr Kolomeiets struct hsh_v5_rcp_s {
17*a5a5d5bbSOleksandr Kolomeiets 	uint32_t load_dist_type;
18*a5a5d5bbSOleksandr Kolomeiets 	uint32_t mac_port_mask[HSH_RCP_MAC_PORT_MASK_SIZE];
19*a5a5d5bbSOleksandr Kolomeiets 	uint32_t sort;
20*a5a5d5bbSOleksandr Kolomeiets 	uint32_t qw0_pe;
21*a5a5d5bbSOleksandr Kolomeiets 	int32_t qw0_ofs;
22*a5a5d5bbSOleksandr Kolomeiets 	uint32_t qw4_pe;
23*a5a5d5bbSOleksandr Kolomeiets 	int32_t qw4_ofs;
24*a5a5d5bbSOleksandr Kolomeiets 	uint32_t w8_pe;
25*a5a5d5bbSOleksandr Kolomeiets 	int32_t w8_ofs;
26*a5a5d5bbSOleksandr Kolomeiets 	uint32_t w8_sort;
27*a5a5d5bbSOleksandr Kolomeiets 	uint32_t w9_pe;
28*a5a5d5bbSOleksandr Kolomeiets 	int32_t w9_ofs;
29*a5a5d5bbSOleksandr Kolomeiets 	uint32_t w9_sort;
30*a5a5d5bbSOleksandr Kolomeiets 	uint32_t w9_p;
31*a5a5d5bbSOleksandr Kolomeiets 	uint32_t p_mask;
32*a5a5d5bbSOleksandr Kolomeiets 	uint32_t word_mask[HSH_RCP_WORD_MASK_SIZE];
33*a5a5d5bbSOleksandr Kolomeiets 	uint32_t seed;
34*a5a5d5bbSOleksandr Kolomeiets 	uint32_t tnl_p;
35*a5a5d5bbSOleksandr Kolomeiets 	uint32_t hsh_valid;
36*a5a5d5bbSOleksandr Kolomeiets 	uint32_t hsh_type;
37*a5a5d5bbSOleksandr Kolomeiets 	uint32_t toeplitz;	/* Toeplitz enabled / disabled */
38*a5a5d5bbSOleksandr Kolomeiets 	uint32_t k[HSH_RCP_KEY_SIZE];	/* Toeplitz hash key */
39*a5a5d5bbSOleksandr Kolomeiets 	uint32_t auto_ipv4_mask;
40*a5a5d5bbSOleksandr Kolomeiets };
41*a5a5d5bbSOleksandr Kolomeiets 
42*a5a5d5bbSOleksandr Kolomeiets struct hw_mod_hsh_v5_s {
43*a5a5d5bbSOleksandr Kolomeiets 	struct hsh_v5_rcp_s *rcp;
44*a5a5d5bbSOleksandr Kolomeiets };
45*a5a5d5bbSOleksandr Kolomeiets 
46*a5a5d5bbSOleksandr Kolomeiets #endif	/* _HW_MOD_HSH_V5_H_ */
47