xref: /dpdk/drivers/net/ntnic/include/hw_mod_cat_v18.h (revision 636b2cfe0259549bb8df98c30651c90355b679b7)
1*636b2cfeSOleksandr Kolomeiets /*
2*636b2cfeSOleksandr Kolomeiets  * SPDX-License-Identifier: BSD-3-Clause
3*636b2cfeSOleksandr Kolomeiets  * Copyright(c) 2023 Napatech A/S
4*636b2cfeSOleksandr Kolomeiets  */
5*636b2cfeSOleksandr Kolomeiets 
6*636b2cfeSOleksandr Kolomeiets #ifndef _HW_MOD_CAT_V18_H_
7*636b2cfeSOleksandr Kolomeiets #define _HW_MOD_CAT_V18_H_
8*636b2cfeSOleksandr Kolomeiets 
9*636b2cfeSOleksandr Kolomeiets #include <stdint.h>
10*636b2cfeSOleksandr Kolomeiets 
11*636b2cfeSOleksandr Kolomeiets struct cat_v18_cfn_s {
12*636b2cfeSOleksandr Kolomeiets 	uint32_t enable;
13*636b2cfeSOleksandr Kolomeiets 	uint32_t inv;
14*636b2cfeSOleksandr Kolomeiets 	/* protocol checks */
15*636b2cfeSOleksandr Kolomeiets 	uint32_t ptc_inv;
16*636b2cfeSOleksandr Kolomeiets 	uint32_t ptc_isl;
17*636b2cfeSOleksandr Kolomeiets 	uint32_t ptc_cfp;
18*636b2cfeSOleksandr Kolomeiets 	uint32_t ptc_mac;
19*636b2cfeSOleksandr Kolomeiets 	uint32_t ptc_l2;
20*636b2cfeSOleksandr Kolomeiets 	uint32_t ptc_vntag;
21*636b2cfeSOleksandr Kolomeiets 	uint32_t ptc_vlan;
22*636b2cfeSOleksandr Kolomeiets 	uint32_t ptc_mpls;
23*636b2cfeSOleksandr Kolomeiets 	uint32_t ptc_l3;
24*636b2cfeSOleksandr Kolomeiets 	uint32_t ptc_frag;
25*636b2cfeSOleksandr Kolomeiets 	uint32_t ptc_ip_prot;
26*636b2cfeSOleksandr Kolomeiets 	uint32_t ptc_l4;
27*636b2cfeSOleksandr Kolomeiets 	uint32_t ptc_tunnel;
28*636b2cfeSOleksandr Kolomeiets 	uint32_t ptc_tnl_l2;
29*636b2cfeSOleksandr Kolomeiets 	uint32_t ptc_tnl_vlan;
30*636b2cfeSOleksandr Kolomeiets 	uint32_t ptc_tnl_mpls;
31*636b2cfeSOleksandr Kolomeiets 	uint32_t ptc_tnl_l3;
32*636b2cfeSOleksandr Kolomeiets 	uint32_t ptc_tnl_frag;
33*636b2cfeSOleksandr Kolomeiets 	uint32_t ptc_tnl_ip_prot;
34*636b2cfeSOleksandr Kolomeiets 	uint32_t ptc_tnl_l4;
35*636b2cfeSOleksandr Kolomeiets 	/* error checks */
36*636b2cfeSOleksandr Kolomeiets 	uint32_t err_inv;
37*636b2cfeSOleksandr Kolomeiets 	uint32_t err_cv;
38*636b2cfeSOleksandr Kolomeiets 	uint32_t err_fcs;
39*636b2cfeSOleksandr Kolomeiets 	uint32_t err_trunc;
40*636b2cfeSOleksandr Kolomeiets 	uint32_t err_l3_cs;
41*636b2cfeSOleksandr Kolomeiets 	uint32_t err_l4_cs;
42*636b2cfeSOleksandr Kolomeiets 	/* in port */
43*636b2cfeSOleksandr Kolomeiets 	uint32_t mac_port;
44*636b2cfeSOleksandr Kolomeiets 	/* pattern matcher */
45*636b2cfeSOleksandr Kolomeiets 	uint32_t pm_cmp[2];
46*636b2cfeSOleksandr Kolomeiets 	uint32_t pm_dct;
47*636b2cfeSOleksandr Kolomeiets 	uint32_t pm_ext_inv;
48*636b2cfeSOleksandr Kolomeiets 	uint32_t pm_cmb;
49*636b2cfeSOleksandr Kolomeiets 	uint32_t pm_and_inv;
50*636b2cfeSOleksandr Kolomeiets 	uint32_t pm_or_inv;
51*636b2cfeSOleksandr Kolomeiets 	uint32_t pm_inv;
52*636b2cfeSOleksandr Kolomeiets 	uint32_t lc;
53*636b2cfeSOleksandr Kolomeiets 	uint32_t lc_inv;
54*636b2cfeSOleksandr Kolomeiets 	uint32_t km_or;
55*636b2cfeSOleksandr Kolomeiets };
56*636b2cfeSOleksandr Kolomeiets 
57*636b2cfeSOleksandr Kolomeiets struct cat_v18_kce_s {
58*636b2cfeSOleksandr Kolomeiets 	uint32_t enable_bm;
59*636b2cfeSOleksandr Kolomeiets };
60*636b2cfeSOleksandr Kolomeiets 
61*636b2cfeSOleksandr Kolomeiets struct cat_v18_kcs_s {
62*636b2cfeSOleksandr Kolomeiets 	uint32_t category;
63*636b2cfeSOleksandr Kolomeiets };
64*636b2cfeSOleksandr Kolomeiets 
65*636b2cfeSOleksandr Kolomeiets struct cat_v18_fte_s {
66*636b2cfeSOleksandr Kolomeiets 	uint32_t enable_bm;
67*636b2cfeSOleksandr Kolomeiets };
68*636b2cfeSOleksandr Kolomeiets 
69*636b2cfeSOleksandr Kolomeiets struct cat_v18_cte_s {
70*636b2cfeSOleksandr Kolomeiets 	union {
71*636b2cfeSOleksandr Kolomeiets 		uint32_t enable_bm;
72*636b2cfeSOleksandr Kolomeiets 		struct {
73*636b2cfeSOleksandr Kolomeiets 			uint32_t col : 1;
74*636b2cfeSOleksandr Kolomeiets 			uint32_t cor : 1;
75*636b2cfeSOleksandr Kolomeiets 			uint32_t hsh : 1;
76*636b2cfeSOleksandr Kolomeiets 			uint32_t qsl : 1;
77*636b2cfeSOleksandr Kolomeiets 			uint32_t ipf : 1;
78*636b2cfeSOleksandr Kolomeiets 			uint32_t slc : 1;
79*636b2cfeSOleksandr Kolomeiets 			uint32_t pdb : 1;
80*636b2cfeSOleksandr Kolomeiets 			uint32_t msk : 1;
81*636b2cfeSOleksandr Kolomeiets 			uint32_t hst : 1;
82*636b2cfeSOleksandr Kolomeiets 			uint32_t epp : 1;
83*636b2cfeSOleksandr Kolomeiets 			uint32_t tpe : 1;
84*636b2cfeSOleksandr Kolomeiets 		} b;
85*636b2cfeSOleksandr Kolomeiets 	};
86*636b2cfeSOleksandr Kolomeiets };
87*636b2cfeSOleksandr Kolomeiets 
88*636b2cfeSOleksandr Kolomeiets struct cat_v18_cts_s {
89*636b2cfeSOleksandr Kolomeiets 	uint32_t cat_a;
90*636b2cfeSOleksandr Kolomeiets 	uint32_t cat_b;
91*636b2cfeSOleksandr Kolomeiets };
92*636b2cfeSOleksandr Kolomeiets 
93*636b2cfeSOleksandr Kolomeiets struct cat_v18_cot_s {
94*636b2cfeSOleksandr Kolomeiets 	uint32_t color;
95*636b2cfeSOleksandr Kolomeiets 	uint32_t km;
96*636b2cfeSOleksandr Kolomeiets };
97*636b2cfeSOleksandr Kolomeiets 
98*636b2cfeSOleksandr Kolomeiets struct cat_v18_cct_s {
99*636b2cfeSOleksandr Kolomeiets 	uint32_t color;
100*636b2cfeSOleksandr Kolomeiets 	uint32_t km;
101*636b2cfeSOleksandr Kolomeiets };
102*636b2cfeSOleksandr Kolomeiets 
103*636b2cfeSOleksandr Kolomeiets struct cat_v18_exo_s {
104*636b2cfeSOleksandr Kolomeiets 	uint32_t dyn;
105*636b2cfeSOleksandr Kolomeiets 	int32_t ofs;
106*636b2cfeSOleksandr Kolomeiets };
107*636b2cfeSOleksandr Kolomeiets 
108*636b2cfeSOleksandr Kolomeiets struct cat_v18_rck_s {
109*636b2cfeSOleksandr Kolomeiets 	uint32_t rck_data;
110*636b2cfeSOleksandr Kolomeiets };
111*636b2cfeSOleksandr Kolomeiets 
112*636b2cfeSOleksandr Kolomeiets struct cat_v18_len_s {
113*636b2cfeSOleksandr Kolomeiets 	uint32_t lower;
114*636b2cfeSOleksandr Kolomeiets 	uint32_t upper;
115*636b2cfeSOleksandr Kolomeiets 	uint32_t dyn1;
116*636b2cfeSOleksandr Kolomeiets 	uint32_t dyn2;
117*636b2cfeSOleksandr Kolomeiets 	uint32_t inv;
118*636b2cfeSOleksandr Kolomeiets };
119*636b2cfeSOleksandr Kolomeiets 
120*636b2cfeSOleksandr Kolomeiets struct cat_v18_kcc_s {
121*636b2cfeSOleksandr Kolomeiets 	uint32_t key[2];
122*636b2cfeSOleksandr Kolomeiets 	uint32_t category;
123*636b2cfeSOleksandr Kolomeiets 	uint32_t id;
124*636b2cfeSOleksandr Kolomeiets };
125*636b2cfeSOleksandr Kolomeiets 
126*636b2cfeSOleksandr Kolomeiets struct hw_mod_cat_v18_s {
127*636b2cfeSOleksandr Kolomeiets 	struct cat_v18_cfn_s *cfn;
128*636b2cfeSOleksandr Kolomeiets 	struct cat_v18_kce_s *kce;
129*636b2cfeSOleksandr Kolomeiets 	struct cat_v18_kcs_s *kcs;
130*636b2cfeSOleksandr Kolomeiets 	struct cat_v18_fte_s *fte;
131*636b2cfeSOleksandr Kolomeiets 	struct cat_v18_cte_s *cte;
132*636b2cfeSOleksandr Kolomeiets 	struct cat_v18_cts_s *cts;
133*636b2cfeSOleksandr Kolomeiets 	struct cat_v18_cot_s *cot;
134*636b2cfeSOleksandr Kolomeiets 	struct cat_v18_cct_s *cct;
135*636b2cfeSOleksandr Kolomeiets 	struct cat_v18_exo_s *exo;
136*636b2cfeSOleksandr Kolomeiets 	struct cat_v18_rck_s *rck;
137*636b2cfeSOleksandr Kolomeiets 	struct cat_v18_len_s *len;
138*636b2cfeSOleksandr Kolomeiets 	struct cat_v18_kcc_s *kcc_cam;
139*636b2cfeSOleksandr Kolomeiets };
140*636b2cfeSOleksandr Kolomeiets 
141*636b2cfeSOleksandr Kolomeiets #endif	/* _HW_MOD_CAT_V18_H_ */
142