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