xref: /dpdk/drivers/net/ntnic/include/hw_mod_tpe_v3.h (revision 7f058028ff772ef7a413a6fa41e87f41276df110)
1 /*
2  * SPDX-License-Identifier: BSD-3-Clause
3  * Copyright(c) 2023 Napatech A/S
4  */
5 
6 #ifndef _HW_MOD_TPE_V3_H_
7 #define _HW_MOD_TPE_V3_H_
8 
9 #include <stdint.h>
10 
11 struct tpe_v1_rpp_v0_rcp_s {
12 	uint32_t exp;
13 };
14 
15 struct tpe_v1_ins_v1_rcp_s {
16 	uint32_t dyn;
17 	uint32_t ofs;
18 	uint32_t len;
19 };
20 
21 struct tpe_v3_rpl_v4_rcp_s {
22 	uint32_t dyn;
23 	uint32_t ofs;
24 	uint32_t len;
25 	uint32_t rpl_ptr;
26 	uint32_t ext_prio;
27 	uint32_t eth_type_wr;
28 };
29 
30 struct tpe_v1_rpl_v2_ext_s {
31 	uint32_t rpl_ptr;
32 	uint32_t meta_rpl_len;	/* SW only */
33 };
34 
35 struct tpe_v1_rpl_v2_rpl_s {
36 	uint32_t value[4];
37 };
38 
39 struct tpe_v1_cpy_v1_rcp_s {
40 	uint32_t reader_select;
41 	uint32_t dyn;
42 	uint32_t ofs;
43 	uint32_t len;
44 };
45 
46 struct tpe_v1_hfu_v1_rcp_s {
47 	uint32_t len_a_wr;
48 	uint32_t len_a_outer_l4_len;
49 	uint32_t len_a_pos_dyn;
50 	uint32_t len_a_pos_ofs;
51 	uint32_t len_a_add_dyn;
52 	uint32_t len_a_add_ofs;
53 	uint32_t len_a_sub_dyn;
54 
55 	uint32_t len_b_wr;
56 	uint32_t len_b_pos_dyn;
57 	uint32_t len_b_pos_ofs;
58 	uint32_t len_b_add_dyn;
59 	uint32_t len_b_add_ofs;
60 	uint32_t len_b_sub_dyn;
61 
62 	uint32_t len_c_wr;
63 	uint32_t len_c_pos_dyn;
64 	uint32_t len_c_pos_ofs;
65 	uint32_t len_c_add_dyn;
66 	uint32_t len_c_add_ofs;
67 	uint32_t len_c_sub_dyn;
68 
69 	uint32_t ttl_wr;
70 	uint32_t ttl_pos_dyn;
71 	uint32_t ttl_pos_ofs;
72 
73 	uint32_t cs_inf;
74 	uint32_t l3_prt;
75 	uint32_t l3_frag;
76 	uint32_t tunnel;
77 	uint32_t l4_prt;
78 	uint32_t outer_l3_ofs;
79 	uint32_t outer_l4_ofs;
80 	uint32_t inner_l3_ofs;
81 	uint32_t inner_l4_ofs;
82 };
83 
84 struct tpe_v1_csu_v0_rcp_s {
85 	uint32_t ol3_cmd;
86 	uint32_t ol4_cmd;
87 	uint32_t il3_cmd;
88 	uint32_t il4_cmd;
89 };
90 
91 struct tpe_v2_rpp_v1_ifr_rcp_s {
92 	uint32_t ipv4_en;
93 	uint32_t ipv4_df_drop;
94 	uint32_t ipv6_en;
95 	uint32_t ipv6_drop;
96 	uint32_t mtu;
97 };
98 
99 struct tpe_v2_ifr_v1_rcp_s {
100 	uint32_t ipv4_en;
101 	uint32_t ipv4_df_drop;
102 	uint32_t ipv6_en;
103 	uint32_t ipv6_drop;
104 	uint32_t mtu;
105 };
106 
107 struct hw_mod_tpe_v3_s {
108 	struct tpe_v1_rpp_v0_rcp_s *rpp_rcp;
109 
110 	struct tpe_v1_ins_v1_rcp_s *ins_rcp;
111 
112 	struct tpe_v3_rpl_v4_rcp_s *rpl_rcp;
113 	struct tpe_v1_rpl_v2_ext_s *rpl_ext;
114 	struct tpe_v1_rpl_v2_rpl_s *rpl_rpl;
115 
116 	struct tpe_v1_cpy_v1_rcp_s *cpy_rcp;
117 
118 	struct tpe_v1_hfu_v1_rcp_s *hfu_rcp;
119 
120 	struct tpe_v1_csu_v0_rcp_s *csu_rcp;
121 
122 	struct tpe_v2_rpp_v1_ifr_rcp_s *rpp_ifr_rcp;
123 	struct tpe_v2_ifr_v1_rcp_s *ifr_rcp;
124 };
125 
126 #endif	/* _HW_MOD_TPE_V3_H_ */
127