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