net/qede: change copyright info to Cavium
[dpdk.git] / drivers / net / qede / base / ecore_hsi_eth.h
1 /*
2  * Copyright (c) 2016 - 2018 Cavium Inc.
3  * All rights reserved.
4  * www.cavium.com
5  *
6  * See LICENSE.qede_pmd for copyright and licensing details.
7  */
8
9 #ifndef __ECORE_HSI_ETH__
10 #define __ECORE_HSI_ETH__
11 /************************************************************************/
12 /* Add include to common eth target for both eCore and protocol driver */
13 /************************************************************************/
14 #include "eth_common.h"
15
16 /*
17  * The eth storm context for the Tstorm
18  */
19 struct tstorm_eth_conn_st_ctx {
20         __le32 reserved[4];
21 };
22
23 /*
24  * The eth storm context for the Pstorm
25  */
26 struct pstorm_eth_conn_st_ctx {
27         __le32 reserved[8];
28 };
29
30 /*
31  * The eth storm context for the Xstorm
32  */
33 struct xstorm_eth_conn_st_ctx {
34         __le32 reserved[60];
35 };
36
37 struct e4_xstorm_eth_conn_ag_ctx {
38         u8 reserved0 /* cdu_validation */;
39         u8 eth_state /* state */;
40         u8 flags0;
41 /* exist_in_qm0 */
42 #define E4_XSTORM_ETH_CONN_AG_CTX_EXIST_IN_QM0_MASK            0x1
43 #define E4_XSTORM_ETH_CONN_AG_CTX_EXIST_IN_QM0_SHIFT           0
44 /* exist_in_qm1 */
45 #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED1_MASK               0x1
46 #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED1_SHIFT              1
47 /* exist_in_qm2 */
48 #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED2_MASK               0x1
49 #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED2_SHIFT              2
50 /* exist_in_qm3 */
51 #define E4_XSTORM_ETH_CONN_AG_CTX_EXIST_IN_QM3_MASK            0x1
52 #define E4_XSTORM_ETH_CONN_AG_CTX_EXIST_IN_QM3_SHIFT           3
53 /* bit4 */
54 #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED3_MASK               0x1
55 #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED3_SHIFT              4
56 /* cf_array_active */
57 #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED4_MASK               0x1
58 #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED4_SHIFT              5
59 /* bit6 */
60 #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED5_MASK               0x1
61 #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED5_SHIFT              6
62 /* bit7 */
63 #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED6_MASK               0x1
64 #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED6_SHIFT              7
65         u8 flags1;
66 /* bit8 */
67 #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED7_MASK               0x1
68 #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED7_SHIFT              0
69 /* bit9 */
70 #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED8_MASK               0x1
71 #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED8_SHIFT              1
72 /* bit10 */
73 #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED9_MASK               0x1
74 #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED9_SHIFT              2
75 /* bit11 */
76 #define E4_XSTORM_ETH_CONN_AG_CTX_BIT11_MASK                   0x1
77 #define E4_XSTORM_ETH_CONN_AG_CTX_BIT11_SHIFT                  3
78 /* bit12 */
79 #define E4_XSTORM_ETH_CONN_AG_CTX_BIT12_MASK                   0x1
80 #define E4_XSTORM_ETH_CONN_AG_CTX_BIT12_SHIFT                  4
81 /* bit13 */
82 #define E4_XSTORM_ETH_CONN_AG_CTX_BIT13_MASK                   0x1
83 #define E4_XSTORM_ETH_CONN_AG_CTX_BIT13_SHIFT                  5
84 /* bit14 */
85 #define E4_XSTORM_ETH_CONN_AG_CTX_TX_RULE_ACTIVE_MASK          0x1
86 #define E4_XSTORM_ETH_CONN_AG_CTX_TX_RULE_ACTIVE_SHIFT         6
87 /* bit15 */
88 #define E4_XSTORM_ETH_CONN_AG_CTX_DQ_CF_ACTIVE_MASK            0x1
89 #define E4_XSTORM_ETH_CONN_AG_CTX_DQ_CF_ACTIVE_SHIFT           7
90         u8 flags2;
91 /* timer0cf */
92 #define E4_XSTORM_ETH_CONN_AG_CTX_CF0_MASK                     0x3
93 #define E4_XSTORM_ETH_CONN_AG_CTX_CF0_SHIFT                    0
94 /* timer1cf */
95 #define E4_XSTORM_ETH_CONN_AG_CTX_CF1_MASK                     0x3
96 #define E4_XSTORM_ETH_CONN_AG_CTX_CF1_SHIFT                    2
97 /* timer2cf */
98 #define E4_XSTORM_ETH_CONN_AG_CTX_CF2_MASK                     0x3
99 #define E4_XSTORM_ETH_CONN_AG_CTX_CF2_SHIFT                    4
100 /* timer_stop_all */
101 #define E4_XSTORM_ETH_CONN_AG_CTX_CF3_MASK                     0x3
102 #define E4_XSTORM_ETH_CONN_AG_CTX_CF3_SHIFT                    6
103         u8 flags3;
104 /* cf4 */
105 #define E4_XSTORM_ETH_CONN_AG_CTX_CF4_MASK                     0x3
106 #define E4_XSTORM_ETH_CONN_AG_CTX_CF4_SHIFT                    0
107 /* cf5 */
108 #define E4_XSTORM_ETH_CONN_AG_CTX_CF5_MASK                     0x3
109 #define E4_XSTORM_ETH_CONN_AG_CTX_CF5_SHIFT                    2
110 /* cf6 */
111 #define E4_XSTORM_ETH_CONN_AG_CTX_CF6_MASK                     0x3
112 #define E4_XSTORM_ETH_CONN_AG_CTX_CF6_SHIFT                    4
113 /* cf7 */
114 #define E4_XSTORM_ETH_CONN_AG_CTX_CF7_MASK                     0x3
115 #define E4_XSTORM_ETH_CONN_AG_CTX_CF7_SHIFT                    6
116         u8 flags4;
117 /* cf8 */
118 #define E4_XSTORM_ETH_CONN_AG_CTX_CF8_MASK                     0x3
119 #define E4_XSTORM_ETH_CONN_AG_CTX_CF8_SHIFT                    0
120 /* cf9 */
121 #define E4_XSTORM_ETH_CONN_AG_CTX_CF9_MASK                     0x3
122 #define E4_XSTORM_ETH_CONN_AG_CTX_CF9_SHIFT                    2
123 /* cf10 */
124 #define E4_XSTORM_ETH_CONN_AG_CTX_CF10_MASK                    0x3
125 #define E4_XSTORM_ETH_CONN_AG_CTX_CF10_SHIFT                   4
126 /* cf11 */
127 #define E4_XSTORM_ETH_CONN_AG_CTX_CF11_MASK                    0x3
128 #define E4_XSTORM_ETH_CONN_AG_CTX_CF11_SHIFT                   6
129         u8 flags5;
130 /* cf12 */
131 #define E4_XSTORM_ETH_CONN_AG_CTX_CF12_MASK                    0x3
132 #define E4_XSTORM_ETH_CONN_AG_CTX_CF12_SHIFT                   0
133 /* cf13 */
134 #define E4_XSTORM_ETH_CONN_AG_CTX_CF13_MASK                    0x3
135 #define E4_XSTORM_ETH_CONN_AG_CTX_CF13_SHIFT                   2
136 /* cf14 */
137 #define E4_XSTORM_ETH_CONN_AG_CTX_CF14_MASK                    0x3
138 #define E4_XSTORM_ETH_CONN_AG_CTX_CF14_SHIFT                   4
139 /* cf15 */
140 #define E4_XSTORM_ETH_CONN_AG_CTX_CF15_MASK                    0x3
141 #define E4_XSTORM_ETH_CONN_AG_CTX_CF15_SHIFT                   6
142         u8 flags6;
143 /* cf16 */
144 #define E4_XSTORM_ETH_CONN_AG_CTX_GO_TO_BD_CONS_CF_MASK        0x3
145 #define E4_XSTORM_ETH_CONN_AG_CTX_GO_TO_BD_CONS_CF_SHIFT       0
146 /* cf_array_cf */
147 #define E4_XSTORM_ETH_CONN_AG_CTX_MULTI_UNICAST_CF_MASK        0x3
148 #define E4_XSTORM_ETH_CONN_AG_CTX_MULTI_UNICAST_CF_SHIFT       2
149 /* cf18 */
150 #define E4_XSTORM_ETH_CONN_AG_CTX_DQ_CF_MASK                   0x3
151 #define E4_XSTORM_ETH_CONN_AG_CTX_DQ_CF_SHIFT                  4
152 /* cf19 */
153 #define E4_XSTORM_ETH_CONN_AG_CTX_TERMINATE_CF_MASK            0x3
154 #define E4_XSTORM_ETH_CONN_AG_CTX_TERMINATE_CF_SHIFT           6
155         u8 flags7;
156 /* cf20 */
157 #define E4_XSTORM_ETH_CONN_AG_CTX_FLUSH_Q0_MASK                0x3
158 #define E4_XSTORM_ETH_CONN_AG_CTX_FLUSH_Q0_SHIFT               0
159 /* cf21 */
160 #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED10_MASK              0x3
161 #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED10_SHIFT             2
162 /* cf22 */
163 #define E4_XSTORM_ETH_CONN_AG_CTX_SLOW_PATH_MASK               0x3
164 #define E4_XSTORM_ETH_CONN_AG_CTX_SLOW_PATH_SHIFT              4
165 /* cf0en */
166 #define E4_XSTORM_ETH_CONN_AG_CTX_CF0EN_MASK                   0x1
167 #define E4_XSTORM_ETH_CONN_AG_CTX_CF0EN_SHIFT                  6
168 /* cf1en */
169 #define E4_XSTORM_ETH_CONN_AG_CTX_CF1EN_MASK                   0x1
170 #define E4_XSTORM_ETH_CONN_AG_CTX_CF1EN_SHIFT                  7
171         u8 flags8;
172 /* cf2en */
173 #define E4_XSTORM_ETH_CONN_AG_CTX_CF2EN_MASK                   0x1
174 #define E4_XSTORM_ETH_CONN_AG_CTX_CF2EN_SHIFT                  0
175 /* cf3en */
176 #define E4_XSTORM_ETH_CONN_AG_CTX_CF3EN_MASK                   0x1
177 #define E4_XSTORM_ETH_CONN_AG_CTX_CF3EN_SHIFT                  1
178 /* cf4en */
179 #define E4_XSTORM_ETH_CONN_AG_CTX_CF4EN_MASK                   0x1
180 #define E4_XSTORM_ETH_CONN_AG_CTX_CF4EN_SHIFT                  2
181 /* cf5en */
182 #define E4_XSTORM_ETH_CONN_AG_CTX_CF5EN_MASK                   0x1
183 #define E4_XSTORM_ETH_CONN_AG_CTX_CF5EN_SHIFT                  3
184 /* cf6en */
185 #define E4_XSTORM_ETH_CONN_AG_CTX_CF6EN_MASK                   0x1
186 #define E4_XSTORM_ETH_CONN_AG_CTX_CF6EN_SHIFT                  4
187 /* cf7en */
188 #define E4_XSTORM_ETH_CONN_AG_CTX_CF7EN_MASK                   0x1
189 #define E4_XSTORM_ETH_CONN_AG_CTX_CF7EN_SHIFT                  5
190 /* cf8en */
191 #define E4_XSTORM_ETH_CONN_AG_CTX_CF8EN_MASK                   0x1
192 #define E4_XSTORM_ETH_CONN_AG_CTX_CF8EN_SHIFT                  6
193 /* cf9en */
194 #define E4_XSTORM_ETH_CONN_AG_CTX_CF9EN_MASK                   0x1
195 #define E4_XSTORM_ETH_CONN_AG_CTX_CF9EN_SHIFT                  7
196         u8 flags9;
197 /* cf10en */
198 #define E4_XSTORM_ETH_CONN_AG_CTX_CF10EN_MASK                  0x1
199 #define E4_XSTORM_ETH_CONN_AG_CTX_CF10EN_SHIFT                 0
200 /* cf11en */
201 #define E4_XSTORM_ETH_CONN_AG_CTX_CF11EN_MASK                  0x1
202 #define E4_XSTORM_ETH_CONN_AG_CTX_CF11EN_SHIFT                 1
203 /* cf12en */
204 #define E4_XSTORM_ETH_CONN_AG_CTX_CF12EN_MASK                  0x1
205 #define E4_XSTORM_ETH_CONN_AG_CTX_CF12EN_SHIFT                 2
206 /* cf13en */
207 #define E4_XSTORM_ETH_CONN_AG_CTX_CF13EN_MASK                  0x1
208 #define E4_XSTORM_ETH_CONN_AG_CTX_CF13EN_SHIFT                 3
209 /* cf14en */
210 #define E4_XSTORM_ETH_CONN_AG_CTX_CF14EN_MASK                  0x1
211 #define E4_XSTORM_ETH_CONN_AG_CTX_CF14EN_SHIFT                 4
212 /* cf15en */
213 #define E4_XSTORM_ETH_CONN_AG_CTX_CF15EN_MASK                  0x1
214 #define E4_XSTORM_ETH_CONN_AG_CTX_CF15EN_SHIFT                 5
215 /* cf16en */
216 #define E4_XSTORM_ETH_CONN_AG_CTX_GO_TO_BD_CONS_CF_EN_MASK     0x1
217 #define E4_XSTORM_ETH_CONN_AG_CTX_GO_TO_BD_CONS_CF_EN_SHIFT    6
218 /* cf_array_cf_en */
219 #define E4_XSTORM_ETH_CONN_AG_CTX_MULTI_UNICAST_CF_EN_MASK     0x1
220 #define E4_XSTORM_ETH_CONN_AG_CTX_MULTI_UNICAST_CF_EN_SHIFT    7
221         u8 flags10;
222 /* cf18en */
223 #define E4_XSTORM_ETH_CONN_AG_CTX_DQ_CF_EN_MASK                0x1
224 #define E4_XSTORM_ETH_CONN_AG_CTX_DQ_CF_EN_SHIFT               0
225 /* cf19en */
226 #define E4_XSTORM_ETH_CONN_AG_CTX_TERMINATE_CF_EN_MASK         0x1
227 #define E4_XSTORM_ETH_CONN_AG_CTX_TERMINATE_CF_EN_SHIFT        1
228 /* cf20en */
229 #define E4_XSTORM_ETH_CONN_AG_CTX_FLUSH_Q0_EN_MASK             0x1
230 #define E4_XSTORM_ETH_CONN_AG_CTX_FLUSH_Q0_EN_SHIFT            2
231 /* cf21en */
232 #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED11_MASK              0x1
233 #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED11_SHIFT             3
234 /* cf22en */
235 #define E4_XSTORM_ETH_CONN_AG_CTX_SLOW_PATH_EN_MASK            0x1
236 #define E4_XSTORM_ETH_CONN_AG_CTX_SLOW_PATH_EN_SHIFT           4
237 /* cf23en */
238 #define E4_XSTORM_ETH_CONN_AG_CTX_TPH_ENABLE_EN_RESERVED_MASK  0x1
239 #define E4_XSTORM_ETH_CONN_AG_CTX_TPH_ENABLE_EN_RESERVED_SHIFT 5
240 /* rule0en */
241 #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED12_MASK              0x1
242 #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED12_SHIFT             6
243 /* rule1en */
244 #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED13_MASK              0x1
245 #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED13_SHIFT             7
246         u8 flags11;
247 /* rule2en */
248 #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED14_MASK              0x1
249 #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED14_SHIFT             0
250 /* rule3en */
251 #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED15_MASK              0x1
252 #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED15_SHIFT             1
253 /* rule4en */
254 #define E4_XSTORM_ETH_CONN_AG_CTX_TX_DEC_RULE_EN_MASK          0x1
255 #define E4_XSTORM_ETH_CONN_AG_CTX_TX_DEC_RULE_EN_SHIFT         2
256 /* rule5en */
257 #define E4_XSTORM_ETH_CONN_AG_CTX_RULE5EN_MASK                 0x1
258 #define E4_XSTORM_ETH_CONN_AG_CTX_RULE5EN_SHIFT                3
259 /* rule6en */
260 #define E4_XSTORM_ETH_CONN_AG_CTX_RULE6EN_MASK                 0x1
261 #define E4_XSTORM_ETH_CONN_AG_CTX_RULE6EN_SHIFT                4
262 /* rule7en */
263 #define E4_XSTORM_ETH_CONN_AG_CTX_RULE7EN_MASK                 0x1
264 #define E4_XSTORM_ETH_CONN_AG_CTX_RULE7EN_SHIFT                5
265 /* rule8en */
266 #define E4_XSTORM_ETH_CONN_AG_CTX_A0_RESERVED1_MASK            0x1
267 #define E4_XSTORM_ETH_CONN_AG_CTX_A0_RESERVED1_SHIFT           6
268 /* rule9en */
269 #define E4_XSTORM_ETH_CONN_AG_CTX_RULE9EN_MASK                 0x1
270 #define E4_XSTORM_ETH_CONN_AG_CTX_RULE9EN_SHIFT                7
271         u8 flags12;
272 /* rule10en */
273 #define E4_XSTORM_ETH_CONN_AG_CTX_RULE10EN_MASK                0x1
274 #define E4_XSTORM_ETH_CONN_AG_CTX_RULE10EN_SHIFT               0
275 /* rule11en */
276 #define E4_XSTORM_ETH_CONN_AG_CTX_RULE11EN_MASK                0x1
277 #define E4_XSTORM_ETH_CONN_AG_CTX_RULE11EN_SHIFT               1
278 /* rule12en */
279 #define E4_XSTORM_ETH_CONN_AG_CTX_A0_RESERVED2_MASK            0x1
280 #define E4_XSTORM_ETH_CONN_AG_CTX_A0_RESERVED2_SHIFT           2
281 /* rule13en */
282 #define E4_XSTORM_ETH_CONN_AG_CTX_A0_RESERVED3_MASK            0x1
283 #define E4_XSTORM_ETH_CONN_AG_CTX_A0_RESERVED3_SHIFT           3
284 /* rule14en */
285 #define E4_XSTORM_ETH_CONN_AG_CTX_RULE14EN_MASK                0x1
286 #define E4_XSTORM_ETH_CONN_AG_CTX_RULE14EN_SHIFT               4
287 /* rule15en */
288 #define E4_XSTORM_ETH_CONN_AG_CTX_RULE15EN_MASK                0x1
289 #define E4_XSTORM_ETH_CONN_AG_CTX_RULE15EN_SHIFT               5
290 /* rule16en */
291 #define E4_XSTORM_ETH_CONN_AG_CTX_RULE16EN_MASK                0x1
292 #define E4_XSTORM_ETH_CONN_AG_CTX_RULE16EN_SHIFT               6
293 /* rule17en */
294 #define E4_XSTORM_ETH_CONN_AG_CTX_RULE17EN_MASK                0x1
295 #define E4_XSTORM_ETH_CONN_AG_CTX_RULE17EN_SHIFT               7
296         u8 flags13;
297 /* rule18en */
298 #define E4_XSTORM_ETH_CONN_AG_CTX_RULE18EN_MASK                0x1
299 #define E4_XSTORM_ETH_CONN_AG_CTX_RULE18EN_SHIFT               0
300 /* rule19en */
301 #define E4_XSTORM_ETH_CONN_AG_CTX_RULE19EN_MASK                0x1
302 #define E4_XSTORM_ETH_CONN_AG_CTX_RULE19EN_SHIFT               1
303 /* rule20en */
304 #define E4_XSTORM_ETH_CONN_AG_CTX_A0_RESERVED4_MASK            0x1
305 #define E4_XSTORM_ETH_CONN_AG_CTX_A0_RESERVED4_SHIFT           2
306 /* rule21en */
307 #define E4_XSTORM_ETH_CONN_AG_CTX_A0_RESERVED5_MASK            0x1
308 #define E4_XSTORM_ETH_CONN_AG_CTX_A0_RESERVED5_SHIFT           3
309 /* rule22en */
310 #define E4_XSTORM_ETH_CONN_AG_CTX_A0_RESERVED6_MASK            0x1
311 #define E4_XSTORM_ETH_CONN_AG_CTX_A0_RESERVED6_SHIFT           4
312 /* rule23en */
313 #define E4_XSTORM_ETH_CONN_AG_CTX_A0_RESERVED7_MASK            0x1
314 #define E4_XSTORM_ETH_CONN_AG_CTX_A0_RESERVED7_SHIFT           5
315 /* rule24en */
316 #define E4_XSTORM_ETH_CONN_AG_CTX_A0_RESERVED8_MASK            0x1
317 #define E4_XSTORM_ETH_CONN_AG_CTX_A0_RESERVED8_SHIFT           6
318 /* rule25en */
319 #define E4_XSTORM_ETH_CONN_AG_CTX_A0_RESERVED9_MASK            0x1
320 #define E4_XSTORM_ETH_CONN_AG_CTX_A0_RESERVED9_SHIFT           7
321         u8 flags14;
322 /* bit16 */
323 #define E4_XSTORM_ETH_CONN_AG_CTX_EDPM_USE_EXT_HDR_MASK        0x1
324 #define E4_XSTORM_ETH_CONN_AG_CTX_EDPM_USE_EXT_HDR_SHIFT       0
325 /* bit17 */
326 #define E4_XSTORM_ETH_CONN_AG_CTX_EDPM_SEND_RAW_L3L4_MASK      0x1
327 #define E4_XSTORM_ETH_CONN_AG_CTX_EDPM_SEND_RAW_L3L4_SHIFT     1
328 /* bit18 */
329 #define E4_XSTORM_ETH_CONN_AG_CTX_EDPM_INBAND_PROP_HDR_MASK    0x1
330 #define E4_XSTORM_ETH_CONN_AG_CTX_EDPM_INBAND_PROP_HDR_SHIFT   2
331 /* bit19 */
332 #define E4_XSTORM_ETH_CONN_AG_CTX_EDPM_SEND_EXT_TUNNEL_MASK    0x1
333 #define E4_XSTORM_ETH_CONN_AG_CTX_EDPM_SEND_EXT_TUNNEL_SHIFT   3
334 /* bit20 */
335 #define E4_XSTORM_ETH_CONN_AG_CTX_L2_EDPM_ENABLE_MASK          0x1
336 #define E4_XSTORM_ETH_CONN_AG_CTX_L2_EDPM_ENABLE_SHIFT         4
337 /* bit21 */
338 #define E4_XSTORM_ETH_CONN_AG_CTX_ROCE_EDPM_ENABLE_MASK        0x1
339 #define E4_XSTORM_ETH_CONN_AG_CTX_ROCE_EDPM_ENABLE_SHIFT       5
340 /* cf23 */
341 #define E4_XSTORM_ETH_CONN_AG_CTX_TPH_ENABLE_MASK              0x3
342 #define E4_XSTORM_ETH_CONN_AG_CTX_TPH_ENABLE_SHIFT             6
343         u8 edpm_event_id /* byte2 */;
344         __le16 physical_q0 /* physical_q0 */;
345         __le16 e5_reserved1 /* physical_q1 */;
346         __le16 edpm_num_bds /* physical_q2 */;
347         __le16 tx_bd_cons /* word3 */;
348         __le16 tx_bd_prod /* word4 */;
349         __le16 updated_qm_pq_id /* word5 */;
350         __le16 conn_dpi /* conn_dpi */;
351         u8 byte3 /* byte3 */;
352         u8 byte4 /* byte4 */;
353         u8 byte5 /* byte5 */;
354         u8 byte6 /* byte6 */;
355         __le32 reg0 /* reg0 */;
356         __le32 reg1 /* reg1 */;
357         __le32 reg2 /* reg2 */;
358         __le32 reg3 /* reg3 */;
359         __le32 reg4 /* reg4 */;
360         __le32 reg5 /* cf_array0 */;
361         __le32 reg6 /* cf_array1 */;
362         __le16 word7 /* word7 */;
363         __le16 word8 /* word8 */;
364         __le16 word9 /* word9 */;
365         __le16 word10 /* word10 */;
366         __le32 reg7 /* reg7 */;
367         __le32 reg8 /* reg8 */;
368         __le32 reg9 /* reg9 */;
369         u8 byte7 /* byte7 */;
370         u8 byte8 /* byte8 */;
371         u8 byte9 /* byte9 */;
372         u8 byte10 /* byte10 */;
373         u8 byte11 /* byte11 */;
374         u8 byte12 /* byte12 */;
375         u8 byte13 /* byte13 */;
376         u8 byte14 /* byte14 */;
377         u8 byte15 /* byte15 */;
378         u8 e5_reserved /* e5_reserved */;
379         __le16 word11 /* word11 */;
380         __le32 reg10 /* reg10 */;
381         __le32 reg11 /* reg11 */;
382         __le32 reg12 /* reg12 */;
383         __le32 reg13 /* reg13 */;
384         __le32 reg14 /* reg14 */;
385         __le32 reg15 /* reg15 */;
386         __le32 reg16 /* reg16 */;
387         __le32 reg17 /* reg17 */;
388         __le32 reg18 /* reg18 */;
389         __le32 reg19 /* reg19 */;
390         __le16 word12 /* word12 */;
391         __le16 word13 /* word13 */;
392         __le16 word14 /* word14 */;
393         __le16 word15 /* word15 */;
394 };
395
396 /*
397  * The eth storm context for the Ystorm
398  */
399 struct ystorm_eth_conn_st_ctx {
400         __le32 reserved[8];
401 };
402
403 struct e4_ystorm_eth_conn_ag_ctx {
404         u8 byte0 /* cdu_validation */;
405         u8 state /* state */;
406         u8 flags0;
407 /* exist_in_qm0 */
408 #define E4_YSTORM_ETH_CONN_AG_CTX_BIT0_MASK                  0x1
409 #define E4_YSTORM_ETH_CONN_AG_CTX_BIT0_SHIFT                 0
410 /* exist_in_qm1 */
411 #define E4_YSTORM_ETH_CONN_AG_CTX_BIT1_MASK                  0x1
412 #define E4_YSTORM_ETH_CONN_AG_CTX_BIT1_SHIFT                 1
413 #define E4_YSTORM_ETH_CONN_AG_CTX_TX_BD_CONS_UPD_CF_MASK     0x3 /* cf0 */
414 #define E4_YSTORM_ETH_CONN_AG_CTX_TX_BD_CONS_UPD_CF_SHIFT    2
415 #define E4_YSTORM_ETH_CONN_AG_CTX_PMD_TERMINATE_CF_MASK      0x3 /* cf1 */
416 #define E4_YSTORM_ETH_CONN_AG_CTX_PMD_TERMINATE_CF_SHIFT     4
417 #define E4_YSTORM_ETH_CONN_AG_CTX_CF2_MASK                   0x3 /* cf2 */
418 #define E4_YSTORM_ETH_CONN_AG_CTX_CF2_SHIFT                  6
419         u8 flags1;
420 /* cf0en */
421 #define E4_YSTORM_ETH_CONN_AG_CTX_TX_BD_CONS_UPD_CF_EN_MASK  0x1
422 #define E4_YSTORM_ETH_CONN_AG_CTX_TX_BD_CONS_UPD_CF_EN_SHIFT 0
423 /* cf1en */
424 #define E4_YSTORM_ETH_CONN_AG_CTX_PMD_TERMINATE_CF_EN_MASK   0x1
425 #define E4_YSTORM_ETH_CONN_AG_CTX_PMD_TERMINATE_CF_EN_SHIFT  1
426 /* cf2en */
427 #define E4_YSTORM_ETH_CONN_AG_CTX_CF2EN_MASK                 0x1
428 #define E4_YSTORM_ETH_CONN_AG_CTX_CF2EN_SHIFT                2
429 /* rule0en */
430 #define E4_YSTORM_ETH_CONN_AG_CTX_RULE0EN_MASK               0x1
431 #define E4_YSTORM_ETH_CONN_AG_CTX_RULE0EN_SHIFT              3
432 /* rule1en */
433 #define E4_YSTORM_ETH_CONN_AG_CTX_RULE1EN_MASK               0x1
434 #define E4_YSTORM_ETH_CONN_AG_CTX_RULE1EN_SHIFT              4
435 /* rule2en */
436 #define E4_YSTORM_ETH_CONN_AG_CTX_RULE2EN_MASK               0x1
437 #define E4_YSTORM_ETH_CONN_AG_CTX_RULE2EN_SHIFT              5
438 /* rule3en */
439 #define E4_YSTORM_ETH_CONN_AG_CTX_RULE3EN_MASK               0x1
440 #define E4_YSTORM_ETH_CONN_AG_CTX_RULE3EN_SHIFT              6
441 /* rule4en */
442 #define E4_YSTORM_ETH_CONN_AG_CTX_RULE4EN_MASK               0x1
443 #define E4_YSTORM_ETH_CONN_AG_CTX_RULE4EN_SHIFT              7
444         u8 tx_q0_int_coallecing_timeset /* byte2 */;
445         u8 byte3 /* byte3 */;
446         __le16 word0 /* word0 */;
447         __le32 terminate_spqe /* reg0 */;
448         __le32 reg1 /* reg1 */;
449         __le16 tx_bd_cons_upd /* word1 */;
450         __le16 word2 /* word2 */;
451         __le16 word3 /* word3 */;
452         __le16 word4 /* word4 */;
453         __le32 reg2 /* reg2 */;
454         __le32 reg3 /* reg3 */;
455 };
456
457 struct e4_tstorm_eth_conn_ag_ctx {
458         u8 byte0 /* cdu_validation */;
459         u8 byte1 /* state */;
460         u8 flags0;
461 #define E4_TSTORM_ETH_CONN_AG_CTX_BIT0_MASK      0x1 /* exist_in_qm0 */
462 #define E4_TSTORM_ETH_CONN_AG_CTX_BIT0_SHIFT     0
463 #define E4_TSTORM_ETH_CONN_AG_CTX_BIT1_MASK      0x1 /* exist_in_qm1 */
464 #define E4_TSTORM_ETH_CONN_AG_CTX_BIT1_SHIFT     1
465 #define E4_TSTORM_ETH_CONN_AG_CTX_BIT2_MASK      0x1 /* bit2 */
466 #define E4_TSTORM_ETH_CONN_AG_CTX_BIT2_SHIFT     2
467 #define E4_TSTORM_ETH_CONN_AG_CTX_BIT3_MASK      0x1 /* bit3 */
468 #define E4_TSTORM_ETH_CONN_AG_CTX_BIT3_SHIFT     3
469 #define E4_TSTORM_ETH_CONN_AG_CTX_BIT4_MASK      0x1 /* bit4 */
470 #define E4_TSTORM_ETH_CONN_AG_CTX_BIT4_SHIFT     4
471 #define E4_TSTORM_ETH_CONN_AG_CTX_BIT5_MASK      0x1 /* bit5 */
472 #define E4_TSTORM_ETH_CONN_AG_CTX_BIT5_SHIFT     5
473 #define E4_TSTORM_ETH_CONN_AG_CTX_CF0_MASK       0x3 /* timer0cf */
474 #define E4_TSTORM_ETH_CONN_AG_CTX_CF0_SHIFT      6
475         u8 flags1;
476 #define E4_TSTORM_ETH_CONN_AG_CTX_CF1_MASK       0x3 /* timer1cf */
477 #define E4_TSTORM_ETH_CONN_AG_CTX_CF1_SHIFT      0
478 #define E4_TSTORM_ETH_CONN_AG_CTX_CF2_MASK       0x3 /* timer2cf */
479 #define E4_TSTORM_ETH_CONN_AG_CTX_CF2_SHIFT      2
480 #define E4_TSTORM_ETH_CONN_AG_CTX_CF3_MASK       0x3 /* timer_stop_all */
481 #define E4_TSTORM_ETH_CONN_AG_CTX_CF3_SHIFT      4
482 #define E4_TSTORM_ETH_CONN_AG_CTX_CF4_MASK       0x3 /* cf4 */
483 #define E4_TSTORM_ETH_CONN_AG_CTX_CF4_SHIFT      6
484         u8 flags2;
485 #define E4_TSTORM_ETH_CONN_AG_CTX_CF5_MASK       0x3 /* cf5 */
486 #define E4_TSTORM_ETH_CONN_AG_CTX_CF5_SHIFT      0
487 #define E4_TSTORM_ETH_CONN_AG_CTX_CF6_MASK       0x3 /* cf6 */
488 #define E4_TSTORM_ETH_CONN_AG_CTX_CF6_SHIFT      2
489 #define E4_TSTORM_ETH_CONN_AG_CTX_CF7_MASK       0x3 /* cf7 */
490 #define E4_TSTORM_ETH_CONN_AG_CTX_CF7_SHIFT      4
491 #define E4_TSTORM_ETH_CONN_AG_CTX_CF8_MASK       0x3 /* cf8 */
492 #define E4_TSTORM_ETH_CONN_AG_CTX_CF8_SHIFT      6
493         u8 flags3;
494 #define E4_TSTORM_ETH_CONN_AG_CTX_CF9_MASK       0x3 /* cf9 */
495 #define E4_TSTORM_ETH_CONN_AG_CTX_CF9_SHIFT      0
496 #define E4_TSTORM_ETH_CONN_AG_CTX_CF10_MASK      0x3 /* cf10 */
497 #define E4_TSTORM_ETH_CONN_AG_CTX_CF10_SHIFT     2
498 #define E4_TSTORM_ETH_CONN_AG_CTX_CF0EN_MASK     0x1 /* cf0en */
499 #define E4_TSTORM_ETH_CONN_AG_CTX_CF0EN_SHIFT    4
500 #define E4_TSTORM_ETH_CONN_AG_CTX_CF1EN_MASK     0x1 /* cf1en */
501 #define E4_TSTORM_ETH_CONN_AG_CTX_CF1EN_SHIFT    5
502 #define E4_TSTORM_ETH_CONN_AG_CTX_CF2EN_MASK     0x1 /* cf2en */
503 #define E4_TSTORM_ETH_CONN_AG_CTX_CF2EN_SHIFT    6
504 #define E4_TSTORM_ETH_CONN_AG_CTX_CF3EN_MASK     0x1 /* cf3en */
505 #define E4_TSTORM_ETH_CONN_AG_CTX_CF3EN_SHIFT    7
506         u8 flags4;
507 #define E4_TSTORM_ETH_CONN_AG_CTX_CF4EN_MASK     0x1 /* cf4en */
508 #define E4_TSTORM_ETH_CONN_AG_CTX_CF4EN_SHIFT    0
509 #define E4_TSTORM_ETH_CONN_AG_CTX_CF5EN_MASK     0x1 /* cf5en */
510 #define E4_TSTORM_ETH_CONN_AG_CTX_CF5EN_SHIFT    1
511 #define E4_TSTORM_ETH_CONN_AG_CTX_CF6EN_MASK     0x1 /* cf6en */
512 #define E4_TSTORM_ETH_CONN_AG_CTX_CF6EN_SHIFT    2
513 #define E4_TSTORM_ETH_CONN_AG_CTX_CF7EN_MASK     0x1 /* cf7en */
514 #define E4_TSTORM_ETH_CONN_AG_CTX_CF7EN_SHIFT    3
515 #define E4_TSTORM_ETH_CONN_AG_CTX_CF8EN_MASK     0x1 /* cf8en */
516 #define E4_TSTORM_ETH_CONN_AG_CTX_CF8EN_SHIFT    4
517 #define E4_TSTORM_ETH_CONN_AG_CTX_CF9EN_MASK     0x1 /* cf9en */
518 #define E4_TSTORM_ETH_CONN_AG_CTX_CF9EN_SHIFT    5
519 #define E4_TSTORM_ETH_CONN_AG_CTX_CF10EN_MASK    0x1 /* cf10en */
520 #define E4_TSTORM_ETH_CONN_AG_CTX_CF10EN_SHIFT   6
521 #define E4_TSTORM_ETH_CONN_AG_CTX_RULE0EN_MASK   0x1 /* rule0en */
522 #define E4_TSTORM_ETH_CONN_AG_CTX_RULE0EN_SHIFT  7
523         u8 flags5;
524 #define E4_TSTORM_ETH_CONN_AG_CTX_RULE1EN_MASK   0x1 /* rule1en */
525 #define E4_TSTORM_ETH_CONN_AG_CTX_RULE1EN_SHIFT  0
526 #define E4_TSTORM_ETH_CONN_AG_CTX_RULE2EN_MASK   0x1 /* rule2en */
527 #define E4_TSTORM_ETH_CONN_AG_CTX_RULE2EN_SHIFT  1
528 #define E4_TSTORM_ETH_CONN_AG_CTX_RULE3EN_MASK   0x1 /* rule3en */
529 #define E4_TSTORM_ETH_CONN_AG_CTX_RULE3EN_SHIFT  2
530 #define E4_TSTORM_ETH_CONN_AG_CTX_RULE4EN_MASK   0x1 /* rule4en */
531 #define E4_TSTORM_ETH_CONN_AG_CTX_RULE4EN_SHIFT  3
532 #define E4_TSTORM_ETH_CONN_AG_CTX_RULE5EN_MASK   0x1 /* rule5en */
533 #define E4_TSTORM_ETH_CONN_AG_CTX_RULE5EN_SHIFT  4
534 #define E4_TSTORM_ETH_CONN_AG_CTX_RX_BD_EN_MASK  0x1 /* rule6en */
535 #define E4_TSTORM_ETH_CONN_AG_CTX_RX_BD_EN_SHIFT 5
536 #define E4_TSTORM_ETH_CONN_AG_CTX_RULE7EN_MASK   0x1 /* rule7en */
537 #define E4_TSTORM_ETH_CONN_AG_CTX_RULE7EN_SHIFT  6
538 #define E4_TSTORM_ETH_CONN_AG_CTX_RULE8EN_MASK   0x1 /* rule8en */
539 #define E4_TSTORM_ETH_CONN_AG_CTX_RULE8EN_SHIFT  7
540         __le32 reg0 /* reg0 */;
541         __le32 reg1 /* reg1 */;
542         __le32 reg2 /* reg2 */;
543         __le32 reg3 /* reg3 */;
544         __le32 reg4 /* reg4 */;
545         __le32 reg5 /* reg5 */;
546         __le32 reg6 /* reg6 */;
547         __le32 reg7 /* reg7 */;
548         __le32 reg8 /* reg8 */;
549         u8 byte2 /* byte2 */;
550         u8 byte3 /* byte3 */;
551         __le16 rx_bd_cons /* word0 */;
552         u8 byte4 /* byte4 */;
553         u8 byte5 /* byte5 */;
554         __le16 rx_bd_prod /* word1 */;
555         __le16 word2 /* conn_dpi */;
556         __le16 word3 /* word3 */;
557         __le32 reg9 /* reg9 */;
558         __le32 reg10 /* reg10 */;
559 };
560
561 struct e4_ustorm_eth_conn_ag_ctx {
562         u8 byte0 /* cdu_validation */;
563         u8 byte1 /* state */;
564         u8 flags0;
565 /* exist_in_qm0 */
566 #define E4_USTORM_ETH_CONN_AG_CTX_BIT0_MASK                    0x1
567 #define E4_USTORM_ETH_CONN_AG_CTX_BIT0_SHIFT                   0
568 /* exist_in_qm1 */
569 #define E4_USTORM_ETH_CONN_AG_CTX_BIT1_MASK                    0x1
570 #define E4_USTORM_ETH_CONN_AG_CTX_BIT1_SHIFT                   1
571 /* timer0cf */
572 #define E4_USTORM_ETH_CONN_AG_CTX_TX_PMD_TERMINATE_CF_MASK     0x3
573 #define E4_USTORM_ETH_CONN_AG_CTX_TX_PMD_TERMINATE_CF_SHIFT    2
574 /* timer1cf */
575 #define E4_USTORM_ETH_CONN_AG_CTX_RX_PMD_TERMINATE_CF_MASK     0x3
576 #define E4_USTORM_ETH_CONN_AG_CTX_RX_PMD_TERMINATE_CF_SHIFT    4
577 /* timer2cf */
578 #define E4_USTORM_ETH_CONN_AG_CTX_CF2_MASK                     0x3
579 #define E4_USTORM_ETH_CONN_AG_CTX_CF2_SHIFT                    6
580         u8 flags1;
581 /* timer_stop_all */
582 #define E4_USTORM_ETH_CONN_AG_CTX_CF3_MASK                     0x3
583 #define E4_USTORM_ETH_CONN_AG_CTX_CF3_SHIFT                    0
584 /* cf4 */
585 #define E4_USTORM_ETH_CONN_AG_CTX_TX_ARM_CF_MASK               0x3
586 #define E4_USTORM_ETH_CONN_AG_CTX_TX_ARM_CF_SHIFT              2
587 /* cf5 */
588 #define E4_USTORM_ETH_CONN_AG_CTX_RX_ARM_CF_MASK               0x3
589 #define E4_USTORM_ETH_CONN_AG_CTX_RX_ARM_CF_SHIFT              4
590 /* cf6 */
591 #define E4_USTORM_ETH_CONN_AG_CTX_TX_BD_CONS_UPD_CF_MASK       0x3
592 #define E4_USTORM_ETH_CONN_AG_CTX_TX_BD_CONS_UPD_CF_SHIFT      6
593         u8 flags2;
594 /* cf0en */
595 #define E4_USTORM_ETH_CONN_AG_CTX_TX_PMD_TERMINATE_CF_EN_MASK  0x1
596 #define E4_USTORM_ETH_CONN_AG_CTX_TX_PMD_TERMINATE_CF_EN_SHIFT 0
597 /* cf1en */
598 #define E4_USTORM_ETH_CONN_AG_CTX_RX_PMD_TERMINATE_CF_EN_MASK  0x1
599 #define E4_USTORM_ETH_CONN_AG_CTX_RX_PMD_TERMINATE_CF_EN_SHIFT 1
600 /* cf2en */
601 #define E4_USTORM_ETH_CONN_AG_CTX_CF2EN_MASK                   0x1
602 #define E4_USTORM_ETH_CONN_AG_CTX_CF2EN_SHIFT                  2
603 /* cf3en */
604 #define E4_USTORM_ETH_CONN_AG_CTX_CF3EN_MASK                   0x1
605 #define E4_USTORM_ETH_CONN_AG_CTX_CF3EN_SHIFT                  3
606 /* cf4en */
607 #define E4_USTORM_ETH_CONN_AG_CTX_TX_ARM_CF_EN_MASK            0x1
608 #define E4_USTORM_ETH_CONN_AG_CTX_TX_ARM_CF_EN_SHIFT           4
609 /* cf5en */
610 #define E4_USTORM_ETH_CONN_AG_CTX_RX_ARM_CF_EN_MASK            0x1
611 #define E4_USTORM_ETH_CONN_AG_CTX_RX_ARM_CF_EN_SHIFT           5
612 /* cf6en */
613 #define E4_USTORM_ETH_CONN_AG_CTX_TX_BD_CONS_UPD_CF_EN_MASK    0x1
614 #define E4_USTORM_ETH_CONN_AG_CTX_TX_BD_CONS_UPD_CF_EN_SHIFT   6
615 /* rule0en */
616 #define E4_USTORM_ETH_CONN_AG_CTX_RULE0EN_MASK                 0x1
617 #define E4_USTORM_ETH_CONN_AG_CTX_RULE0EN_SHIFT                7
618         u8 flags3;
619 /* rule1en */
620 #define E4_USTORM_ETH_CONN_AG_CTX_RULE1EN_MASK                 0x1
621 #define E4_USTORM_ETH_CONN_AG_CTX_RULE1EN_SHIFT                0
622 /* rule2en */
623 #define E4_USTORM_ETH_CONN_AG_CTX_RULE2EN_MASK                 0x1
624 #define E4_USTORM_ETH_CONN_AG_CTX_RULE2EN_SHIFT                1
625 /* rule3en */
626 #define E4_USTORM_ETH_CONN_AG_CTX_RULE3EN_MASK                 0x1
627 #define E4_USTORM_ETH_CONN_AG_CTX_RULE3EN_SHIFT                2
628 /* rule4en */
629 #define E4_USTORM_ETH_CONN_AG_CTX_RULE4EN_MASK                 0x1
630 #define E4_USTORM_ETH_CONN_AG_CTX_RULE4EN_SHIFT                3
631 /* rule5en */
632 #define E4_USTORM_ETH_CONN_AG_CTX_RULE5EN_MASK                 0x1
633 #define E4_USTORM_ETH_CONN_AG_CTX_RULE5EN_SHIFT                4
634 /* rule6en */
635 #define E4_USTORM_ETH_CONN_AG_CTX_RULE6EN_MASK                 0x1
636 #define E4_USTORM_ETH_CONN_AG_CTX_RULE6EN_SHIFT                5
637 /* rule7en */
638 #define E4_USTORM_ETH_CONN_AG_CTX_RULE7EN_MASK                 0x1
639 #define E4_USTORM_ETH_CONN_AG_CTX_RULE7EN_SHIFT                6
640 /* rule8en */
641 #define E4_USTORM_ETH_CONN_AG_CTX_RULE8EN_MASK                 0x1
642 #define E4_USTORM_ETH_CONN_AG_CTX_RULE8EN_SHIFT                7
643         u8 byte2 /* byte2 */;
644         u8 byte3 /* byte3 */;
645         __le16 word0 /* conn_dpi */;
646         __le16 tx_bd_cons /* word1 */;
647         __le32 reg0 /* reg0 */;
648         __le32 reg1 /* reg1 */;
649         __le32 reg2 /* reg2 */;
650         __le32 tx_int_coallecing_timeset /* reg3 */;
651         __le16 tx_drv_bd_cons /* word2 */;
652         __le16 rx_drv_cqe_cons /* word3 */;
653 };
654
655 /*
656  * The eth storm context for the Ustorm
657  */
658 struct ustorm_eth_conn_st_ctx {
659         __le32 reserved[40];
660 };
661
662 /*
663  * The eth storm context for the Mstorm
664  */
665 struct mstorm_eth_conn_st_ctx {
666         __le32 reserved[8];
667 };
668
669 /*
670  * eth connection context
671  */
672 struct e4_eth_conn_context {
673 /* tstorm storm context */
674         struct tstorm_eth_conn_st_ctx tstorm_st_context;
675         struct regpair tstorm_st_padding[2] /* padding */;
676 /* pstorm storm context */
677         struct pstorm_eth_conn_st_ctx pstorm_st_context;
678 /* xstorm storm context */
679         struct xstorm_eth_conn_st_ctx xstorm_st_context;
680 /* xstorm aggregative context */
681         struct e4_xstorm_eth_conn_ag_ctx xstorm_ag_context;
682 /* ystorm storm context */
683         struct ystorm_eth_conn_st_ctx ystorm_st_context;
684 /* ystorm aggregative context */
685         struct e4_ystorm_eth_conn_ag_ctx ystorm_ag_context;
686 /* tstorm aggregative context */
687         struct e4_tstorm_eth_conn_ag_ctx tstorm_ag_context;
688 /* ustorm aggregative context */
689         struct e4_ustorm_eth_conn_ag_ctx ustorm_ag_context;
690 /* ustorm storm context */
691         struct ustorm_eth_conn_st_ctx ustorm_st_context;
692 /* mstorm storm context */
693         struct mstorm_eth_conn_st_ctx mstorm_st_context;
694 };
695
696
697 /*
698  * Ethernet filter types: mac/vlan/pair
699  */
700 enum eth_error_code {
701         ETH_OK = 0x00 /* command succeeded */,
702 /* mac add filters command failed due to cam full state */
703         ETH_FILTERS_MAC_ADD_FAIL_FULL,
704 /* mac add filters command failed due to mtt2 full state */
705         ETH_FILTERS_MAC_ADD_FAIL_FULL_MTT2,
706 /* mac add filters command failed due to duplicate mac address */
707         ETH_FILTERS_MAC_ADD_FAIL_DUP_MTT2,
708 /* mac add filters command failed due to duplicate mac address */
709         ETH_FILTERS_MAC_ADD_FAIL_DUP_STT2,
710 /* mac delete filters command failed due to not found state */
711         ETH_FILTERS_MAC_DEL_FAIL_NOF,
712 /* mac delete filters command failed due to not found state */
713         ETH_FILTERS_MAC_DEL_FAIL_NOF_MTT2,
714 /* mac delete filters command failed due to not found state */
715         ETH_FILTERS_MAC_DEL_FAIL_NOF_STT2,
716 /* mac add filters command failed due to MAC Address of 00:00:00:00:00:00 */
717         ETH_FILTERS_MAC_ADD_FAIL_ZERO_MAC,
718 /* vlan add filters command failed due to cam full state */
719         ETH_FILTERS_VLAN_ADD_FAIL_FULL,
720 /* vlan add filters command failed due to duplicate VLAN filter */
721         ETH_FILTERS_VLAN_ADD_FAIL_DUP,
722 /* vlan delete filters command failed due to not found state */
723         ETH_FILTERS_VLAN_DEL_FAIL_NOF,
724 /* vlan delete filters command failed due to not found state */
725         ETH_FILTERS_VLAN_DEL_FAIL_NOF_TT1,
726 /* pair add filters command failed due to duplicate request */
727         ETH_FILTERS_PAIR_ADD_FAIL_DUP,
728 /* pair add filters command failed due to full state */
729         ETH_FILTERS_PAIR_ADD_FAIL_FULL,
730 /* pair add filters command failed due to full state */
731         ETH_FILTERS_PAIR_ADD_FAIL_FULL_MAC,
732 /* pair add filters command failed due not found state */
733         ETH_FILTERS_PAIR_DEL_FAIL_NOF,
734 /* pair add filters command failed due not found state */
735         ETH_FILTERS_PAIR_DEL_FAIL_NOF_TT1,
736 /* pair add filters command failed due to MAC Address of 00:00:00:00:00:00 */
737         ETH_FILTERS_PAIR_ADD_FAIL_ZERO_MAC,
738 /* vni add filters command failed due to cam full state */
739         ETH_FILTERS_VNI_ADD_FAIL_FULL,
740 /* vni add filters command failed due to duplicate VNI filter */
741         ETH_FILTERS_VNI_ADD_FAIL_DUP,
742         ETH_FILTERS_GFT_UPDATE_FAIL /* Fail update GFT filter. */,
743         MAX_ETH_ERROR_CODE
744 };
745
746
747 /*
748  * opcodes for the event ring
749  */
750 enum eth_event_opcode {
751         ETH_EVENT_UNUSED,
752         ETH_EVENT_VPORT_START,
753         ETH_EVENT_VPORT_UPDATE,
754         ETH_EVENT_VPORT_STOP,
755         ETH_EVENT_TX_QUEUE_START,
756         ETH_EVENT_TX_QUEUE_STOP,
757         ETH_EVENT_RX_QUEUE_START,
758         ETH_EVENT_RX_QUEUE_UPDATE,
759         ETH_EVENT_RX_QUEUE_STOP,
760         ETH_EVENT_FILTERS_UPDATE,
761         ETH_EVENT_RX_ADD_OPENFLOW_FILTER,
762         ETH_EVENT_RX_DELETE_OPENFLOW_FILTER,
763         ETH_EVENT_RX_CREATE_OPENFLOW_ACTION,
764         ETH_EVENT_RX_ADD_UDP_FILTER,
765         ETH_EVENT_RX_DELETE_UDP_FILTER,
766         ETH_EVENT_RX_CREATE_GFT_ACTION,
767         ETH_EVENT_RX_GFT_UPDATE_FILTER,
768         ETH_EVENT_TX_QUEUE_UPDATE,
769         MAX_ETH_EVENT_OPCODE
770 };
771
772
773 /*
774  * Classify rule types in E2/E3
775  */
776 enum eth_filter_action {
777         ETH_FILTER_ACTION_UNUSED,
778         ETH_FILTER_ACTION_REMOVE,
779         ETH_FILTER_ACTION_ADD,
780 /* Remove all filters of given type and vport ID. */
781         ETH_FILTER_ACTION_REMOVE_ALL,
782         MAX_ETH_FILTER_ACTION
783 };
784
785
786 /*
787  * Command for adding/removing a classification rule $$KEEP_ENDIANNESS$$
788  */
789 struct eth_filter_cmd {
790         u8 type /* Filter Type (MAC/VLAN/Pair/VNI) */;
791         u8 vport_id /* the vport id */;
792         u8 action /* filter command action: add/remove/replace */;
793         u8 reserved0;
794         __le32 vni;
795         __le16 mac_lsb;
796         __le16 mac_mid;
797         __le16 mac_msb;
798         __le16 vlan_id;
799 };
800
801
802 /*
803  *  $$KEEP_ENDIANNESS$$
804  */
805 struct eth_filter_cmd_header {
806         u8 rx /* If set, apply these commands to the RX path */;
807         u8 tx /* If set, apply these commands to the TX path */;
808         u8 cmd_cnt /* Number of filter commands */;
809 /* 0 - dont assert in case of filter configuration error. Just return an error
810  * code. 1 - assert in case of filter configuration error.
811  */
812         u8 assert_on_error;
813         u8 reserved1[4];
814 };
815
816
817 /*
818  * Ethernet filter types: mac/vlan/pair
819  */
820 enum eth_filter_type {
821         ETH_FILTER_TYPE_UNUSED,
822         ETH_FILTER_TYPE_MAC /* Add/remove a MAC address */,
823         ETH_FILTER_TYPE_VLAN /* Add/remove a VLAN */,
824         ETH_FILTER_TYPE_PAIR /* Add/remove a MAC-VLAN pair */,
825         ETH_FILTER_TYPE_INNER_MAC /* Add/remove a inner MAC address */,
826         ETH_FILTER_TYPE_INNER_VLAN /* Add/remove a inner VLAN */,
827         ETH_FILTER_TYPE_INNER_PAIR /* Add/remove a inner MAC-VLAN pair */,
828 /* Add/remove a inner MAC-VNI pair */
829         ETH_FILTER_TYPE_INNER_MAC_VNI_PAIR,
830         ETH_FILTER_TYPE_MAC_VNI_PAIR /* Add/remove a MAC-VNI pair */,
831         ETH_FILTER_TYPE_VNI /* Add/remove a VNI */,
832         MAX_ETH_FILTER_TYPE
833 };
834
835
836 /*
837  * eth IPv4 Fragment Type
838  */
839 enum eth_ipv4_frag_type {
840         ETH_IPV4_NOT_FRAG /* IPV4 Packet Not Fragmented */,
841 /* First Fragment of IPv4 Packet (contains headers) */
842         ETH_IPV4_FIRST_FRAG,
843 /* Non-First Fragment of IPv4 Packet (does not contain headers) */
844         ETH_IPV4_NON_FIRST_FRAG,
845         MAX_ETH_IPV4_FRAG_TYPE
846 };
847
848
849 /*
850  * eth IPv4 Fragment Type
851  */
852 enum eth_ip_type {
853         ETH_IPV4 /* IPv4 */,
854         ETH_IPV6 /* IPv6 */,
855         MAX_ETH_IP_TYPE
856 };
857
858
859 /*
860  * Ethernet Ramrod Command IDs
861  */
862 enum eth_ramrod_cmd_id {
863         ETH_RAMROD_UNUSED,
864         ETH_RAMROD_VPORT_START /* VPort Start Ramrod */,
865         ETH_RAMROD_VPORT_UPDATE /* VPort Update Ramrod */,
866         ETH_RAMROD_VPORT_STOP /* VPort Stop Ramrod */,
867         ETH_RAMROD_RX_QUEUE_START /* RX Queue Start Ramrod */,
868         ETH_RAMROD_RX_QUEUE_STOP /* RX Queue Stop Ramrod */,
869         ETH_RAMROD_TX_QUEUE_START /* TX Queue Start Ramrod */,
870         ETH_RAMROD_TX_QUEUE_STOP /* TX Queue Stop Ramrod */,
871         ETH_RAMROD_FILTERS_UPDATE /* Add or Remove Mac/Vlan/Pair filters */,
872         ETH_RAMROD_RX_QUEUE_UPDATE /* RX Queue Update Ramrod */,
873 /* RX - Create an Openflow Action */
874         ETH_RAMROD_RX_CREATE_OPENFLOW_ACTION,
875 /* RX - Add an Openflow Filter to the Searcher */
876         ETH_RAMROD_RX_ADD_OPENFLOW_FILTER,
877 /* RX - Delete an Openflow Filter to the Searcher */
878         ETH_RAMROD_RX_DELETE_OPENFLOW_FILTER,
879 /* RX - Add a UDP Filter to the Searcher */
880         ETH_RAMROD_RX_ADD_UDP_FILTER,
881 /* RX - Delete a UDP Filter to the Searcher */
882         ETH_RAMROD_RX_DELETE_UDP_FILTER,
883         ETH_RAMROD_RX_CREATE_GFT_ACTION /* RX - Create a Gft Action */,
884 /* RX - Add/Delete a GFT Filter to the Searcher */
885         ETH_RAMROD_GFT_UPDATE_FILTER,
886         ETH_RAMROD_TX_QUEUE_UPDATE /* TX Queue Update Ramrod */,
887         MAX_ETH_RAMROD_CMD_ID
888 };
889
890
891 /*
892  * return code from eth sp ramrods
893  */
894 struct eth_return_code {
895         u8 value;
896 /* error code (use enum eth_error_code) */
897 #define ETH_RETURN_CODE_ERR_CODE_MASK  0x1F
898 #define ETH_RETURN_CODE_ERR_CODE_SHIFT 0
899 #define ETH_RETURN_CODE_RESERVED_MASK  0x3
900 #define ETH_RETURN_CODE_RESERVED_SHIFT 5
901 /* rx path - 0, tx path - 1 */
902 #define ETH_RETURN_CODE_RX_TX_MASK     0x1
903 #define ETH_RETURN_CODE_RX_TX_SHIFT    7
904 };
905
906
907 /*
908  * What to do in case an error occurs
909  */
910 enum eth_tx_err {
911         ETH_TX_ERR_DROP /* Drop erroneous packet. */,
912 /* Assert an interrupt for PF, declare as malicious for VF */
913         ETH_TX_ERR_ASSERT_MALICIOUS,
914         MAX_ETH_TX_ERR
915 };
916
917
918 /*
919  * Array of the different error type behaviors
920  */
921 struct eth_tx_err_vals {
922         __le16 values;
923 /* Wrong VLAN insertion mode (use enum eth_tx_err) */
924 #define ETH_TX_ERR_VALS_ILLEGAL_VLAN_MODE_MASK            0x1
925 #define ETH_TX_ERR_VALS_ILLEGAL_VLAN_MODE_SHIFT           0
926 /* Packet is below minimal size (use enum eth_tx_err) */
927 #define ETH_TX_ERR_VALS_PACKET_TOO_SMALL_MASK             0x1
928 #define ETH_TX_ERR_VALS_PACKET_TOO_SMALL_SHIFT            1
929 /* Vport has sent spoofed packet (use enum eth_tx_err) */
930 #define ETH_TX_ERR_VALS_ANTI_SPOOFING_ERR_MASK            0x1
931 #define ETH_TX_ERR_VALS_ANTI_SPOOFING_ERR_SHIFT           2
932 /* Packet with illegal type of inband tag (use enum eth_tx_err) */
933 #define ETH_TX_ERR_VALS_ILLEGAL_INBAND_TAGS_MASK          0x1
934 #define ETH_TX_ERR_VALS_ILLEGAL_INBAND_TAGS_SHIFT         3
935 /* Packet marked for VLAN insertion when inband tag is present
936  * (use enum eth_tx_err)
937  */
938 #define ETH_TX_ERR_VALS_VLAN_INSERTION_W_INBAND_TAG_MASK  0x1
939 #define ETH_TX_ERR_VALS_VLAN_INSERTION_W_INBAND_TAG_SHIFT 4
940 /* Non LSO packet larger than MTU (use enum eth_tx_err) */
941 #define ETH_TX_ERR_VALS_MTU_VIOLATION_MASK                0x1
942 #define ETH_TX_ERR_VALS_MTU_VIOLATION_SHIFT               5
943 /* VF/PF has sent LLDP/PFC or any other type of control packet which is not
944  * allowed to (use enum eth_tx_err)
945  */
946 #define ETH_TX_ERR_VALS_ILLEGAL_CONTROL_FRAME_MASK        0x1
947 #define ETH_TX_ERR_VALS_ILLEGAL_CONTROL_FRAME_SHIFT       6
948 #define ETH_TX_ERR_VALS_RESERVED_MASK                     0x1FF
949 #define ETH_TX_ERR_VALS_RESERVED_SHIFT                    7
950 };
951
952
953 /*
954  * vport rss configuration data
955  */
956 struct eth_vport_rss_config {
957         __le16 capabilities;
958 /* configuration of the IpV4 2-tuple capability */
959 #define ETH_VPORT_RSS_CONFIG_IPV4_CAPABILITY_MASK        0x1
960 #define ETH_VPORT_RSS_CONFIG_IPV4_CAPABILITY_SHIFT       0
961 /* configuration of the IpV6 2-tuple capability */
962 #define ETH_VPORT_RSS_CONFIG_IPV6_CAPABILITY_MASK        0x1
963 #define ETH_VPORT_RSS_CONFIG_IPV6_CAPABILITY_SHIFT       1
964 /* configuration of the IpV4 4-tuple capability for TCP */
965 #define ETH_VPORT_RSS_CONFIG_IPV4_TCP_CAPABILITY_MASK    0x1
966 #define ETH_VPORT_RSS_CONFIG_IPV4_TCP_CAPABILITY_SHIFT   2
967 /* configuration of the IpV6 4-tuple capability for TCP */
968 #define ETH_VPORT_RSS_CONFIG_IPV6_TCP_CAPABILITY_MASK    0x1
969 #define ETH_VPORT_RSS_CONFIG_IPV6_TCP_CAPABILITY_SHIFT   3
970 /* configuration of the IpV4 4-tuple capability for UDP */
971 #define ETH_VPORT_RSS_CONFIG_IPV4_UDP_CAPABILITY_MASK    0x1
972 #define ETH_VPORT_RSS_CONFIG_IPV4_UDP_CAPABILITY_SHIFT   4
973 /* configuration of the IpV6 4-tuple capability for UDP */
974 #define ETH_VPORT_RSS_CONFIG_IPV6_UDP_CAPABILITY_MASK    0x1
975 #define ETH_VPORT_RSS_CONFIG_IPV6_UDP_CAPABILITY_SHIFT   5
976 /* configuration of the 5-tuple capability */
977 #define ETH_VPORT_RSS_CONFIG_EN_5_TUPLE_CAPABILITY_MASK  0x1
978 #define ETH_VPORT_RSS_CONFIG_EN_5_TUPLE_CAPABILITY_SHIFT 6
979 /* if set update the rss keys */
980 #define ETH_VPORT_RSS_CONFIG_RESERVED0_MASK              0x1FF
981 #define ETH_VPORT_RSS_CONFIG_RESERVED0_SHIFT             7
982 /* The RSS engine ID. Must be allocated to each vport with RSS enabled.
983  * Total number of RSS engines is ETH_RSS_ENGINE_NUM_ , according to chip type.
984  */
985         u8 rss_id;
986         u8 rss_mode /* The RSS mode for this function */;
987         u8 update_rss_key /* if set update the rss key */;
988 /* if set update the indirection table values */
989         u8 update_rss_ind_table;
990 /* if set update the capabilities and indirection table size. */
991         u8 update_rss_capabilities;
992         u8 tbl_size /* rss mask (Tbl size) */;
993         __le32 reserved2[2];
994 /* RSS indirection table */
995         __le16 indirection_table[ETH_RSS_IND_TABLE_ENTRIES_NUM];
996 /* RSS key supplied to us by OS */
997         __le32 rss_key[ETH_RSS_KEY_SIZE_REGS];
998         __le32 reserved3[2];
999 };
1000
1001
1002 /*
1003  * eth vport RSS mode
1004  */
1005 enum eth_vport_rss_mode {
1006         ETH_VPORT_RSS_MODE_DISABLED /* RSS Disabled */,
1007         ETH_VPORT_RSS_MODE_REGULAR /* Regular (ndis-like) RSS */,
1008         MAX_ETH_VPORT_RSS_MODE
1009 };
1010
1011
1012 /*
1013  * Command for setting classification flags for a vport $$KEEP_ENDIANNESS$$
1014  */
1015 struct eth_vport_rx_mode {
1016         __le16 state;
1017 /* drop all unicast packets */
1018 #define ETH_VPORT_RX_MODE_UCAST_DROP_ALL_MASK          0x1
1019 #define ETH_VPORT_RX_MODE_UCAST_DROP_ALL_SHIFT         0
1020 /* accept all unicast packets (subject to vlan) */
1021 #define ETH_VPORT_RX_MODE_UCAST_ACCEPT_ALL_MASK        0x1
1022 #define ETH_VPORT_RX_MODE_UCAST_ACCEPT_ALL_SHIFT       1
1023 /* accept all unmatched unicast packets */
1024 #define ETH_VPORT_RX_MODE_UCAST_ACCEPT_UNMATCHED_MASK  0x1
1025 #define ETH_VPORT_RX_MODE_UCAST_ACCEPT_UNMATCHED_SHIFT 2
1026 /* drop all multicast packets */
1027 #define ETH_VPORT_RX_MODE_MCAST_DROP_ALL_MASK          0x1
1028 #define ETH_VPORT_RX_MODE_MCAST_DROP_ALL_SHIFT         3
1029 /* accept all multicast packets (subject to vlan) */
1030 #define ETH_VPORT_RX_MODE_MCAST_ACCEPT_ALL_MASK        0x1
1031 #define ETH_VPORT_RX_MODE_MCAST_ACCEPT_ALL_SHIFT       4
1032 /* accept all broadcast packets (subject to vlan) */
1033 #define ETH_VPORT_RX_MODE_BCAST_ACCEPT_ALL_MASK        0x1
1034 #define ETH_VPORT_RX_MODE_BCAST_ACCEPT_ALL_SHIFT       5
1035 #define ETH_VPORT_RX_MODE_RESERVED1_MASK               0x3FF
1036 #define ETH_VPORT_RX_MODE_RESERVED1_SHIFT              6
1037 };
1038
1039
1040 /*
1041  * Command for setting tpa parameters
1042  */
1043 struct eth_vport_tpa_param {
1044         u8 tpa_ipv4_en_flg /* Enable TPA for IPv4 packets */;
1045         u8 tpa_ipv6_en_flg /* Enable TPA for IPv6 packets */;
1046         u8 tpa_ipv4_tunn_en_flg /* Enable TPA for IPv4 over tunnel */;
1047         u8 tpa_ipv6_tunn_en_flg /* Enable TPA for IPv6 over tunnel */;
1048 /* If set, start each TPA segment on new BD (GRO mode). One BD per segment
1049  * allowed.
1050  */
1051         u8 tpa_pkt_split_flg;
1052 /* If set, put header of first TPA segment on first BD and data on second BD. */
1053         u8 tpa_hdr_data_split_flg;
1054 /* If set, GRO data consistent will checked for TPA continue */
1055         u8 tpa_gro_consistent_flg;
1056 /* maximum number of opened aggregations per v-port  */
1057         u8 tpa_max_aggs_num;
1058         __le16 tpa_max_size /* maximal size for the aggregated TPA packets */;
1059 /* minimum TCP payload size for a packet to start aggregation */
1060         __le16 tpa_min_size_to_start;
1061 /* minimum TCP payload size for a packet to continue aggregation */
1062         __le16 tpa_min_size_to_cont;
1063 /* maximal number of buffers that can be used for one aggregation */
1064         u8 max_buff_num;
1065         u8 reserved;
1066 };
1067
1068
1069 /*
1070  * Command for setting classification flags for a vport $$KEEP_ENDIANNESS$$
1071  */
1072 struct eth_vport_tx_mode {
1073         __le16 state;
1074 /* drop all unicast packets */
1075 #define ETH_VPORT_TX_MODE_UCAST_DROP_ALL_MASK    0x1
1076 #define ETH_VPORT_TX_MODE_UCAST_DROP_ALL_SHIFT   0
1077 /* accept all unicast packets (subject to vlan) */
1078 #define ETH_VPORT_TX_MODE_UCAST_ACCEPT_ALL_MASK  0x1
1079 #define ETH_VPORT_TX_MODE_UCAST_ACCEPT_ALL_SHIFT 1
1080 /* drop all multicast packets */
1081 #define ETH_VPORT_TX_MODE_MCAST_DROP_ALL_MASK    0x1
1082 #define ETH_VPORT_TX_MODE_MCAST_DROP_ALL_SHIFT   2
1083 /* accept all multicast packets (subject to vlan) */
1084 #define ETH_VPORT_TX_MODE_MCAST_ACCEPT_ALL_MASK  0x1
1085 #define ETH_VPORT_TX_MODE_MCAST_ACCEPT_ALL_SHIFT 3
1086 /* accept all broadcast packets (subject to vlan) */
1087 #define ETH_VPORT_TX_MODE_BCAST_ACCEPT_ALL_MASK  0x1
1088 #define ETH_VPORT_TX_MODE_BCAST_ACCEPT_ALL_SHIFT 4
1089 #define ETH_VPORT_TX_MODE_RESERVED1_MASK         0x7FF
1090 #define ETH_VPORT_TX_MODE_RESERVED1_SHIFT        5
1091 };
1092
1093
1094 /*
1095  * GFT filter update action type.
1096  */
1097 enum gft_filter_update_action {
1098         GFT_ADD_FILTER,
1099         GFT_DELETE_FILTER,
1100         MAX_GFT_FILTER_UPDATE_ACTION
1101 };
1102
1103
1104
1105
1106 /*
1107  * Ramrod data for rx add openflow filter
1108  */
1109 struct rx_add_openflow_filter_data {
1110         __le16 action_icid /* CID of Action to run for this filter */;
1111         u8 priority /* Searcher String - Packet priority */;
1112         u8 reserved0;
1113         __le32 tenant_id /* Searcher String - Tenant ID */;
1114 /* Searcher String - Destination Mac Bytes 0 to 1 */
1115         __le16 dst_mac_hi;
1116 /* Searcher String - Destination Mac Bytes 2 to 3 */
1117         __le16 dst_mac_mid;
1118 /* Searcher String - Destination Mac Bytes 4 to 5 */
1119         __le16 dst_mac_lo;
1120         __le16 src_mac_hi /* Searcher String - Source Mac 0 to 1 */;
1121         __le16 src_mac_mid /* Searcher String - Source Mac 2 to 3 */;
1122         __le16 src_mac_lo /* Searcher String - Source Mac 4 to 5 */;
1123         __le16 vlan_id /* Searcher String - Vlan ID */;
1124         __le16 l2_eth_type /* Searcher String - Last L2 Ethertype */;
1125         u8 ipv4_dscp /* Searcher String - IPv4 6 MSBs of the TOS Field */;
1126         u8 ipv4_frag_type /* Searcher String - IPv4 Fragmentation Type */;
1127         u8 ipv4_over_ip /* Searcher String - IPv4 Over IP Type */;
1128         u8 tenant_id_exists /* Searcher String - Tenant ID Exists */;
1129         __le32 ipv4_dst_addr /* Searcher String - IPv4 Destination Address */;
1130         __le32 ipv4_src_addr /* Searcher String - IPv4 Source Address */;
1131         __le16 l4_dst_port /* Searcher String - TCP/UDP Destination Port */;
1132         __le16 l4_src_port /* Searcher String - TCP/UDP Source Port */;
1133 };
1134
1135
1136 /*
1137  * Ramrod data for rx create gft action
1138  */
1139 struct rx_create_gft_action_data {
1140         u8 vport_id /* Vport Id of GFT Action  */;
1141         u8 reserved[7];
1142 };
1143
1144
1145 /*
1146  * Ramrod data for rx create openflow action
1147  */
1148 struct rx_create_openflow_action_data {
1149         u8 vport_id /* ID of RX queue */;
1150         u8 reserved[7];
1151 };
1152
1153
1154 /*
1155  * Ramrod data for rx queue start ramrod
1156  */
1157 struct rx_queue_start_ramrod_data {
1158         __le16 rx_queue_id /* ID of RX queue */;
1159         __le16 num_of_pbl_pages /* Number of pages in CQE PBL */;
1160         __le16 bd_max_bytes /* maximal bytes that can be places on the bd */;
1161         __le16 sb_id /* Status block ID */;
1162         u8 sb_index /* index of the protocol index */;
1163         u8 vport_id /* ID of virtual port */;
1164         u8 default_rss_queue_flg /* set queue as default rss queue if set */;
1165         u8 complete_cqe_flg /* post completion to the CQE ring if set */;
1166         u8 complete_event_flg /* post completion to the event ring if set */;
1167         u8 stats_counter_id /* Statistics counter ID */;
1168         u8 pin_context /* Pin context in CCFC to improve performance */;
1169         u8 pxp_tph_valid_bd /* PXP command TPH Valid - for BD/SGE fetch */;
1170 /* PXP command TPH Valid - for packet placement */
1171         u8 pxp_tph_valid_pkt;
1172 /* PXP command Steering tag hint. Use enum pxp_tph_st_hint */
1173         u8 pxp_st_hint;
1174         __le16 pxp_st_index /* PXP command Steering tag index */;
1175 /* Indicates that current queue belongs to poll-mode driver */
1176         u8 pmd_mode;
1177 /* Indicates that the current queue is using the TX notification queue
1178  * mechanism - should be set only for PMD queue
1179  */
1180         u8 notify_en;
1181 /* Initial value for the toggle valid bit - used in PMD mode */
1182         u8 toggle_val;
1183 /* Index of RX producers in VF zone. Used for VF only. */
1184         u8 vf_rx_prod_index;
1185 /* Backward compatibility mode. If set, unprotected mStorm queue zone will used
1186  * for VF RX producers instead of VF zone.
1187  */
1188         u8 vf_rx_prod_use_zone_a;
1189         u8 reserved[5];
1190         __le16 reserved1 /* FW reserved. */;
1191         struct regpair cqe_pbl_addr /* Base address on host of CQE PBL */;
1192         struct regpair bd_base /* bd address of the first bd page */;
1193         struct regpair reserved2 /* FW reserved. */;
1194 };
1195
1196
1197 /*
1198  * Ramrod data for rx queue stop ramrod
1199  */
1200 struct rx_queue_stop_ramrod_data {
1201         __le16 rx_queue_id /* ID of RX queue */;
1202         u8 complete_cqe_flg /* post completion to the CQE ring if set */;
1203         u8 complete_event_flg /* post completion to the event ring if set */;
1204         u8 vport_id /* ID of virtual port */;
1205         u8 reserved[3];
1206 };
1207
1208
1209 /*
1210  * Ramrod data for rx queue update ramrod
1211  */
1212 struct rx_queue_update_ramrod_data {
1213         __le16 rx_queue_id /* ID of RX queue */;
1214         u8 complete_cqe_flg /* post completion to the CQE ring if set */;
1215         u8 complete_event_flg /* post completion to the event ring if set */;
1216         u8 vport_id /* ID of virtual port */;
1217 /* If set, update default rss queue to this RX queue. */
1218         u8 set_default_rss_queue;
1219         u8 reserved[3];
1220         u8 reserved1 /* FW reserved. */;
1221         u8 reserved2 /* FW reserved. */;
1222         u8 reserved3 /* FW reserved. */;
1223         __le16 reserved4 /* FW reserved. */;
1224         __le16 reserved5 /* FW reserved. */;
1225         struct regpair reserved6 /* FW reserved. */;
1226 };
1227
1228
1229 /*
1230  * Ramrod data for rx Add UDP Filter
1231  */
1232 struct rx_udp_filter_data {
1233         __le16 action_icid /* CID of Action to run for this filter */;
1234         __le16 vlan_id /* Searcher String - Vlan ID */;
1235         u8 ip_type /* Searcher String - IP Type */;
1236         u8 tenant_id_exists /* Searcher String - Tenant ID Exists */;
1237         __le16 reserved1;
1238 /* Searcher String - IP Destination Address, for IPv4 use ip_dst_addr[0] only */
1239         __le32 ip_dst_addr[4];
1240 /* Searcher String - IP Source Address, for IPv4 use ip_dst_addr[0] only */
1241         __le32 ip_src_addr[4];
1242         __le16 udp_dst_port /* Searcher String - UDP Destination Port */;
1243         __le16 udp_src_port /* Searcher String - UDP Source Port */;
1244         __le32 tenant_id /* Searcher String - Tenant ID */;
1245 };
1246
1247
1248 /*
1249  * add or delete GFT filter - filter is packet header of type of packet wished
1250  * to pass certain FW flow
1251  */
1252 struct rx_update_gft_filter_data {
1253 /* Pointer to Packet Header That Defines GFT Filter */
1254         struct regpair pkt_hdr_addr;
1255         __le16 pkt_hdr_length /* Packet Header Length */;
1256 /* Action icid. Valid if action_icid_valid flag set. */
1257         __le16 action_icid;
1258         __le16 rx_qid /* RX queue ID. Valid if rx_qid_valid set. */;
1259         __le16 flow_id /* RX flow ID. Valid if flow_id_valid set. */;
1260 /* RX vport Id. For drop flow, set to ETH_GFT_TRASHCAN_VPORT. */
1261         __le16 vport_id;
1262 /* If set, action_icid will used for GFT filter update. */
1263         u8 action_icid_valid;
1264 /* If set, rx_qid will used for traffic steering, in additional to vport_id.
1265  * flow_id_valid must be cleared. If cleared, queue ID will selected by RSS.
1266  */
1267         u8 rx_qid_valid;
1268 /* If set, flow_id will reported by CQE, rx_qid_valid must be cleared. If
1269  * cleared, flow_id 0 will reported by CQE.
1270  */
1271         u8 flow_id_valid;
1272         u8 filter_action /* Use to set type of action on filter */;
1273 /* 0 - dont assert in case of error. Just return an error code. 1 - assert in
1274  * case of error.
1275  */
1276         u8 assert_on_error;
1277 /* If set, inner VLAN will be removed regardless to VPORT configuration.
1278  * Supported by E4 only.
1279  */
1280         u8 inner_vlan_removal_en;
1281 };
1282
1283
1284
1285 /*
1286  * Ramrod data for tx queue start ramrod
1287  */
1288 struct tx_queue_start_ramrod_data {
1289         __le16 sb_id /* Status block ID */;
1290         u8 sb_index /* Status block protocol index */;
1291         u8 vport_id /* VPort ID */;
1292         u8 reserved0 /* FW reserved. (qcn_rl_en) */;
1293         u8 stats_counter_id /* Statistics counter ID to use */;
1294         __le16 qm_pq_id /* QM PQ ID */;
1295         u8 flags;
1296 /* 0: Enable QM opportunistic flow. 1: Disable QM opportunistic flow */
1297 #define TX_QUEUE_START_RAMROD_DATA_DISABLE_OPPORTUNISTIC_MASK  0x1
1298 #define TX_QUEUE_START_RAMROD_DATA_DISABLE_OPPORTUNISTIC_SHIFT 0
1299 /* If set, Test Mode - packets will be duplicated by Xstorm handler */
1300 #define TX_QUEUE_START_RAMROD_DATA_TEST_MODE_PKT_DUP_MASK      0x1
1301 #define TX_QUEUE_START_RAMROD_DATA_TEST_MODE_PKT_DUP_SHIFT     1
1302 /* If set, Test Mode - packets destination will be determined by dest_port_mode
1303  * field from Tx BD
1304  */
1305 #define TX_QUEUE_START_RAMROD_DATA_TEST_MODE_TX_DEST_MASK      0x1
1306 #define TX_QUEUE_START_RAMROD_DATA_TEST_MODE_TX_DEST_SHIFT     2
1307 /* Indicates that current queue belongs to poll-mode driver */
1308 #define TX_QUEUE_START_RAMROD_DATA_PMD_MODE_MASK               0x1
1309 #define TX_QUEUE_START_RAMROD_DATA_PMD_MODE_SHIFT              3
1310 /* Indicates that the current queue is using the TX notification queue
1311  * mechanism - should be set only for PMD queue
1312  */
1313 #define TX_QUEUE_START_RAMROD_DATA_NOTIFY_EN_MASK              0x1
1314 #define TX_QUEUE_START_RAMROD_DATA_NOTIFY_EN_SHIFT             4
1315 /* Pin context in CCFC to improve performance */
1316 #define TX_QUEUE_START_RAMROD_DATA_PIN_CONTEXT_MASK            0x1
1317 #define TX_QUEUE_START_RAMROD_DATA_PIN_CONTEXT_SHIFT           5
1318 #define TX_QUEUE_START_RAMROD_DATA_RESERVED1_MASK              0x3
1319 #define TX_QUEUE_START_RAMROD_DATA_RESERVED1_SHIFT             6
1320         u8 pxp_st_hint /* PXP command Steering tag hint */;
1321         u8 pxp_tph_valid_bd /* PXP command TPH Valid - for BD fetch */;
1322         u8 pxp_tph_valid_pkt /* PXP command TPH Valid - for packet fetch */;
1323         __le16 pxp_st_index /* PXP command Steering tag index */;
1324 /* TX completion min agg size - for PMD queues */
1325         __le16 comp_agg_size;
1326         __le16 queue_zone_id /* queue zone ID to use */;
1327         __le16 reserved2 /* FW reserved. (test_dup_count) */;
1328         __le16 pbl_size /* Number of BD pages pointed by PBL */;
1329 /* unique Queue ID - currently used only by PMD flow */
1330         __le16 tx_queue_id;
1331 /* Unique Same-As-Last Resource ID - improves performance for same-as-last
1332  * packets per connection (range 0..ETH_TX_NUM_SAME_AS_LAST_ENTRIES-1 IDs
1333  * available)
1334  */
1335         __le16 same_as_last_id;
1336         __le16 reserved[3];
1337         struct regpair pbl_base_addr /* address of the pbl page */;
1338 /* BD consumer address in host - for PMD queues */
1339         struct regpair bd_cons_address;
1340 };
1341
1342
1343 /*
1344  * Ramrod data for tx queue stop ramrod
1345  */
1346 struct tx_queue_stop_ramrod_data {
1347         __le16 reserved[4];
1348 };
1349
1350
1351 /*
1352  * Ramrod data for tx queue update ramrod
1353  */
1354 struct tx_queue_update_ramrod_data {
1355         __le16 update_qm_pq_id_flg /* Flag to Update QM PQ ID */;
1356         __le16 qm_pq_id /* Updated QM PQ ID */;
1357         __le32 reserved0;
1358         struct regpair reserved1[5];
1359 };
1360
1361
1362
1363 /*
1364  * Ramrod data for vport update ramrod
1365  */
1366 struct vport_filter_update_ramrod_data {
1367 /* Header for Filter Commands (RX/TX, Add/Remove/Replace, etc) */
1368         struct eth_filter_cmd_header filter_cmd_hdr;
1369 /* Filter Commands */
1370         struct eth_filter_cmd filter_cmds[ETH_FILTER_RULES_COUNT];
1371 };
1372
1373
1374 /*
1375  * Ramrod data for vport start ramrod
1376  */
1377 struct vport_start_ramrod_data {
1378         u8 vport_id;
1379         u8 sw_fid;
1380         __le16 mtu;
1381         u8 drop_ttl0_en /* if set, drop packet with ttl=0 */;
1382         u8 inner_vlan_removal_en;
1383         struct eth_vport_rx_mode rx_mode /* Rx filter data */;
1384         struct eth_vport_tx_mode tx_mode /* Tx filter data */;
1385 /* TPA configuration parameters */
1386         struct eth_vport_tpa_param tpa_param;
1387         __le16 default_vlan /* Default Vlan value to be forced by FW */;
1388         u8 tx_switching_en /* Tx switching is enabled for current Vport */;
1389 /* Anti-spoofing verification is set for current Vport */
1390         u8 anti_spoofing_en;
1391 /* If set, the default Vlan value is forced by the FW */
1392         u8 default_vlan_en;
1393 /* If set, the vport handles PTP Timesync Packets */
1394         u8 handle_ptp_pkts;
1395 /* If enable then innerVlan will be striped and not written to cqe */
1396         u8 silent_vlan_removal_en;
1397 /* If set untagged filter (vlan0) is added to current Vport, otherwise port is
1398  * marked as any-vlan
1399  */
1400         u8 untagged;
1401 /* Desired behavior per TX error type */
1402         struct eth_tx_err_vals tx_err_behav;
1403 /* If set, ETH header padding will not inserted. placement_offset will be zero.
1404  */
1405         u8 zero_placement_offset;
1406 /* If set, control frames will be filtered according to MAC check. */
1407         u8 ctl_frame_mac_check_en;
1408 /* If set, control frames will be filtered according to ethtype check. */
1409         u8 ctl_frame_ethtype_check_en;
1410         u8 reserved[1];
1411 };
1412
1413
1414 /*
1415  * Ramrod data for vport stop ramrod
1416  */
1417 struct vport_stop_ramrod_data {
1418         u8 vport_id;
1419         u8 reserved[7];
1420 };
1421
1422
1423 /*
1424  * Ramrod data for vport update ramrod
1425  */
1426 struct vport_update_ramrod_data_cmn {
1427         u8 vport_id;
1428         u8 update_rx_active_flg /* set if rx active flag should be handled */;
1429         u8 rx_active_flg /* rx active flag value */;
1430         u8 update_tx_active_flg /* set if tx active flag should be handled */;
1431         u8 tx_active_flg /* tx active flag value */;
1432         u8 update_rx_mode_flg /* set if rx state data should be handled */;
1433         u8 update_tx_mode_flg /* set if tx state data should be handled */;
1434 /* set if approx. mcast data should be handled */
1435         u8 update_approx_mcast_flg;
1436         u8 update_rss_flg /* set if rss data should be handled  */;
1437 /* set if inner_vlan_removal_en should be handled */
1438         u8 update_inner_vlan_removal_en_flg;
1439         u8 inner_vlan_removal_en;
1440 /* set if tpa parameters should be handled, TPA must be disable before */
1441         u8 update_tpa_param_flg;
1442         u8 update_tpa_en_flg /* set if tpa enable changes */;
1443 /* set if tx switching en flag should be handled */
1444         u8 update_tx_switching_en_flg;
1445         u8 tx_switching_en /* tx switching en value */;
1446 /* set if anti spoofing flag should be handled */
1447         u8 update_anti_spoofing_en_flg;
1448         u8 anti_spoofing_en /* Anti-spoofing verification en value */;
1449 /* set if handle_ptp_pkts should be handled. */
1450         u8 update_handle_ptp_pkts;
1451 /* If set, the vport handles PTP Timesync Packets */
1452         u8 handle_ptp_pkts;
1453 /* If set, the default Vlan enable flag is updated */
1454         u8 update_default_vlan_en_flg;
1455 /* If set, the default Vlan value is forced by the FW */
1456         u8 default_vlan_en;
1457 /* If set, the default Vlan value is updated */
1458         u8 update_default_vlan_flg;
1459         __le16 default_vlan /* Default Vlan value to be forced by FW */;
1460 /* set if accept_any_vlan should be handled */
1461         u8 update_accept_any_vlan_flg;
1462         u8 accept_any_vlan /* accept_any_vlan updated value */;
1463 /* Set to remove vlan silently, update_inner_vlan_removal_en_flg must be enabled
1464  * as well. If Rx is in noSgl mode send rx_queue_update_ramrod_data
1465  */
1466         u8 silent_vlan_removal_en;
1467 /* If set, MTU will be updated. Vport must be not active. */
1468         u8 update_mtu_flg;
1469         __le16 mtu /* New MTU value. Used if update_mtu_flg are set */;
1470 /* If set, ctl_frame_mac_check_en and ctl_frame_ethtype_check_en will be
1471  * updated
1472  */
1473         u8 update_ctl_frame_checks_en_flg;
1474 /* If set, control frames will be filtered according to MAC check. */
1475         u8 ctl_frame_mac_check_en;
1476 /* If set, control frames will be filtered according to ethtype check. */
1477         u8 ctl_frame_ethtype_check_en;
1478         u8 reserved[15];
1479 };
1480
1481 struct vport_update_ramrod_mcast {
1482         __le32 bins[ETH_MULTICAST_MAC_BINS_IN_REGS] /* multicast bins */;
1483 };
1484
1485 /*
1486  * Ramrod data for vport update ramrod
1487  */
1488 struct vport_update_ramrod_data {
1489 /* Common data for all vport update ramrods */
1490         struct vport_update_ramrod_data_cmn common;
1491         struct eth_vport_rx_mode rx_mode /* vport rx mode bitmap */;
1492         struct eth_vport_tx_mode tx_mode /* vport tx mode bitmap */;
1493         __le32 reserved[3];
1494 /* TPA configuration parameters */
1495         struct eth_vport_tpa_param tpa_param;
1496         struct vport_update_ramrod_mcast approx_mcast;
1497         struct eth_vport_rss_config rss_config /* rss config data */;
1498 };
1499
1500
1501
1502
1503
1504
1505 struct E4XstormEthConnAgCtxDqExtLdPart {
1506         u8 reserved0 /* cdu_validation */;
1507         u8 eth_state /* state */;
1508         u8 flags0;
1509 /* exist_in_qm0 */
1510 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_EXIST_IN_QM0_MASK            0x1
1511 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_EXIST_IN_QM0_SHIFT           0
1512 /* exist_in_qm1 */
1513 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED1_MASK               0x1
1514 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED1_SHIFT              1
1515 /* exist_in_qm2 */
1516 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED2_MASK               0x1
1517 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED2_SHIFT              2
1518 /* exist_in_qm3 */
1519 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_EXIST_IN_QM3_MASK            0x1
1520 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_EXIST_IN_QM3_SHIFT           3
1521 /* bit4 */
1522 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED3_MASK               0x1
1523 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED3_SHIFT              4
1524 /* cf_array_active */
1525 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED4_MASK               0x1
1526 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED4_SHIFT              5
1527 /* bit6 */
1528 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED5_MASK               0x1
1529 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED5_SHIFT              6
1530 /* bit7 */
1531 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED6_MASK               0x1
1532 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED6_SHIFT              7
1533         u8 flags1;
1534 /* bit8 */
1535 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED7_MASK               0x1
1536 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED7_SHIFT              0
1537 /* bit9 */
1538 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED8_MASK               0x1
1539 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED8_SHIFT              1
1540 /* bit10 */
1541 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED9_MASK               0x1
1542 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED9_SHIFT              2
1543 /* bit11 */
1544 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_BIT11_MASK                   0x1
1545 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_BIT11_SHIFT                  3
1546 /* bit12 */
1547 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_BIT12_MASK                   0x1
1548 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_BIT12_SHIFT                  4
1549 /* bit13 */
1550 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_BIT13_MASK                   0x1
1551 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_BIT13_SHIFT                  5
1552 /* bit14 */
1553 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_TX_RULE_ACTIVE_MASK          0x1
1554 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_TX_RULE_ACTIVE_SHIFT         6
1555 /* bit15 */
1556 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_DQ_CF_ACTIVE_MASK            0x1
1557 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_DQ_CF_ACTIVE_SHIFT           7
1558         u8 flags2;
1559 /* timer0cf */
1560 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF0_MASK                     0x3
1561 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF0_SHIFT                    0
1562 /* timer1cf */
1563 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF1_MASK                     0x3
1564 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF1_SHIFT                    2
1565 /* timer2cf */
1566 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF2_MASK                     0x3
1567 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF2_SHIFT                    4
1568 /* timer_stop_all */
1569 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF3_MASK                     0x3
1570 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF3_SHIFT                    6
1571         u8 flags3;
1572 /* cf4 */
1573 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF4_MASK                     0x3
1574 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF4_SHIFT                    0
1575 /* cf5 */
1576 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF5_MASK                     0x3
1577 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF5_SHIFT                    2
1578 /* cf6 */
1579 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF6_MASK                     0x3
1580 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF6_SHIFT                    4
1581 /* cf7 */
1582 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF7_MASK                     0x3
1583 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF7_SHIFT                    6
1584         u8 flags4;
1585 /* cf8 */
1586 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF8_MASK                     0x3
1587 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF8_SHIFT                    0
1588 /* cf9 */
1589 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF9_MASK                     0x3
1590 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF9_SHIFT                    2
1591 /* cf10 */
1592 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF10_MASK                    0x3
1593 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF10_SHIFT                   4
1594 /* cf11 */
1595 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF11_MASK                    0x3
1596 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF11_SHIFT                   6
1597         u8 flags5;
1598 /* cf12 */
1599 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF12_MASK                    0x3
1600 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF12_SHIFT                   0
1601 /* cf13 */
1602 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF13_MASK                    0x3
1603 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF13_SHIFT                   2
1604 /* cf14 */
1605 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF14_MASK                    0x3
1606 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF14_SHIFT                   4
1607 /* cf15 */
1608 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF15_MASK                    0x3
1609 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF15_SHIFT                   6
1610         u8 flags6;
1611 /* cf16 */
1612 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_GO_TO_BD_CONS_CF_MASK        0x3
1613 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_GO_TO_BD_CONS_CF_SHIFT       0
1614 /* cf_array_cf */
1615 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_MULTI_UNICAST_CF_MASK        0x3
1616 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_MULTI_UNICAST_CF_SHIFT       2
1617 /* cf18 */
1618 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_DQ_CF_MASK                   0x3
1619 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_DQ_CF_SHIFT                  4
1620 /* cf19 */
1621 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_TERMINATE_CF_MASK            0x3
1622 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_TERMINATE_CF_SHIFT           6
1623         u8 flags7;
1624 /* cf20 */
1625 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_FLUSH_Q0_MASK                0x3
1626 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_FLUSH_Q0_SHIFT               0
1627 /* cf21 */
1628 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED10_MASK              0x3
1629 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED10_SHIFT             2
1630 /* cf22 */
1631 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_SLOW_PATH_MASK               0x3
1632 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_SLOW_PATH_SHIFT              4
1633 /* cf0en */
1634 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF0EN_MASK                   0x1
1635 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF0EN_SHIFT                  6
1636 /* cf1en */
1637 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF1EN_MASK                   0x1
1638 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF1EN_SHIFT                  7
1639         u8 flags8;
1640 /* cf2en */
1641 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF2EN_MASK                   0x1
1642 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF2EN_SHIFT                  0
1643 /* cf3en */
1644 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF3EN_MASK                   0x1
1645 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF3EN_SHIFT                  1
1646 /* cf4en */
1647 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF4EN_MASK                   0x1
1648 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF4EN_SHIFT                  2
1649 /* cf5en */
1650 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF5EN_MASK                   0x1
1651 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF5EN_SHIFT                  3
1652 /* cf6en */
1653 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF6EN_MASK                   0x1
1654 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF6EN_SHIFT                  4
1655 /* cf7en */
1656 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF7EN_MASK                   0x1
1657 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF7EN_SHIFT                  5
1658 /* cf8en */
1659 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF8EN_MASK                   0x1
1660 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF8EN_SHIFT                  6
1661 /* cf9en */
1662 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF9EN_MASK                   0x1
1663 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF9EN_SHIFT                  7
1664         u8 flags9;
1665 /* cf10en */
1666 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF10EN_MASK                  0x1
1667 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF10EN_SHIFT                 0
1668 /* cf11en */
1669 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF11EN_MASK                  0x1
1670 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF11EN_SHIFT                 1
1671 /* cf12en */
1672 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF12EN_MASK                  0x1
1673 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF12EN_SHIFT                 2
1674 /* cf13en */
1675 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF13EN_MASK                  0x1
1676 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF13EN_SHIFT                 3
1677 /* cf14en */
1678 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF14EN_MASK                  0x1
1679 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF14EN_SHIFT                 4
1680 /* cf15en */
1681 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF15EN_MASK                  0x1
1682 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF15EN_SHIFT                 5
1683 /* cf16en */
1684 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_GO_TO_BD_CONS_CF_EN_MASK     0x1
1685 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_GO_TO_BD_CONS_CF_EN_SHIFT    6
1686 /* cf_array_cf_en */
1687 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_MULTI_UNICAST_CF_EN_MASK     0x1
1688 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_MULTI_UNICAST_CF_EN_SHIFT    7
1689         u8 flags10;
1690 /* cf18en */
1691 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_DQ_CF_EN_MASK                0x1
1692 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_DQ_CF_EN_SHIFT               0
1693 /* cf19en */
1694 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_TERMINATE_CF_EN_MASK         0x1
1695 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_TERMINATE_CF_EN_SHIFT        1
1696 /* cf20en */
1697 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_FLUSH_Q0_EN_MASK             0x1
1698 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_FLUSH_Q0_EN_SHIFT            2
1699 /* cf21en */
1700 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED11_MASK              0x1
1701 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED11_SHIFT             3
1702 /* cf22en */
1703 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_SLOW_PATH_EN_MASK            0x1
1704 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_SLOW_PATH_EN_SHIFT           4
1705 /* cf23en */
1706 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_TPH_ENABLE_EN_RESERVED_MASK  0x1
1707 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_TPH_ENABLE_EN_RESERVED_SHIFT 5
1708 /* rule0en */
1709 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED12_MASK              0x1
1710 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED12_SHIFT             6
1711 /* rule1en */
1712 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED13_MASK              0x1
1713 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED13_SHIFT             7
1714         u8 flags11;
1715 /* rule2en */
1716 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED14_MASK              0x1
1717 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED14_SHIFT             0
1718 /* rule3en */
1719 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED15_MASK              0x1
1720 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED15_SHIFT             1
1721 /* rule4en */
1722 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_TX_DEC_RULE_EN_MASK          0x1
1723 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_TX_DEC_RULE_EN_SHIFT         2
1724 /* rule5en */
1725 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE5EN_MASK                 0x1
1726 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE5EN_SHIFT                3
1727 /* rule6en */
1728 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE6EN_MASK                 0x1
1729 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE6EN_SHIFT                4
1730 /* rule7en */
1731 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE7EN_MASK                 0x1
1732 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE7EN_SHIFT                5
1733 /* rule8en */
1734 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED1_MASK            0x1
1735 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED1_SHIFT           6
1736 /* rule9en */
1737 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE9EN_MASK                 0x1
1738 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE9EN_SHIFT                7
1739         u8 flags12;
1740 /* rule10en */
1741 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE10EN_MASK                0x1
1742 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE10EN_SHIFT               0
1743 /* rule11en */
1744 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE11EN_MASK                0x1
1745 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE11EN_SHIFT               1
1746 /* rule12en */
1747 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED2_MASK            0x1
1748 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED2_SHIFT           2
1749 /* rule13en */
1750 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED3_MASK            0x1
1751 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED3_SHIFT           3
1752 /* rule14en */
1753 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE14EN_MASK                0x1
1754 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE14EN_SHIFT               4
1755 /* rule15en */
1756 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE15EN_MASK                0x1
1757 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE15EN_SHIFT               5
1758 /* rule16en */
1759 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE16EN_MASK                0x1
1760 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE16EN_SHIFT               6
1761 /* rule17en */
1762 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE17EN_MASK                0x1
1763 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE17EN_SHIFT               7
1764         u8 flags13;
1765 /* rule18en */
1766 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE18EN_MASK                0x1
1767 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE18EN_SHIFT               0
1768 /* rule19en */
1769 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE19EN_MASK                0x1
1770 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE19EN_SHIFT               1
1771 /* rule20en */
1772 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED4_MASK            0x1
1773 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED4_SHIFT           2
1774 /* rule21en */
1775 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED5_MASK            0x1
1776 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED5_SHIFT           3
1777 /* rule22en */
1778 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED6_MASK            0x1
1779 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED6_SHIFT           4
1780 /* rule23en */
1781 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED7_MASK            0x1
1782 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED7_SHIFT           5
1783 /* rule24en */
1784 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED8_MASK            0x1
1785 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED8_SHIFT           6
1786 /* rule25en */
1787 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED9_MASK            0x1
1788 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED9_SHIFT           7
1789         u8 flags14;
1790 /* bit16 */
1791 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_EDPM_USE_EXT_HDR_MASK        0x1
1792 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_EDPM_USE_EXT_HDR_SHIFT       0
1793 /* bit17 */
1794 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_EDPM_SEND_RAW_L3L4_MASK      0x1
1795 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_EDPM_SEND_RAW_L3L4_SHIFT     1
1796 /* bit18 */
1797 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_EDPM_INBAND_PROP_HDR_MASK    0x1
1798 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_EDPM_INBAND_PROP_HDR_SHIFT   2
1799 /* bit19 */
1800 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_EDPM_SEND_EXT_TUNNEL_MASK    0x1
1801 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_EDPM_SEND_EXT_TUNNEL_SHIFT   3
1802 /* bit20 */
1803 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_L2_EDPM_ENABLE_MASK          0x1
1804 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_L2_EDPM_ENABLE_SHIFT         4
1805 /* bit21 */
1806 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_ROCE_EDPM_ENABLE_MASK        0x1
1807 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_ROCE_EDPM_ENABLE_SHIFT       5
1808 /* cf23 */
1809 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_TPH_ENABLE_MASK              0x3
1810 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_TPH_ENABLE_SHIFT             6
1811         u8 edpm_event_id /* byte2 */;
1812         __le16 physical_q0 /* physical_q0 */;
1813         __le16 e5_reserved1 /* physical_q1 */;
1814         __le16 edpm_num_bds /* physical_q2 */;
1815         __le16 tx_bd_cons /* word3 */;
1816         __le16 tx_bd_prod /* word4 */;
1817         __le16 updated_qm_pq_id /* word5 */;
1818         __le16 conn_dpi /* conn_dpi */;
1819         u8 byte3 /* byte3 */;
1820         u8 byte4 /* byte4 */;
1821         u8 byte5 /* byte5 */;
1822         u8 byte6 /* byte6 */;
1823         __le32 reg0 /* reg0 */;
1824         __le32 reg1 /* reg1 */;
1825         __le32 reg2 /* reg2 */;
1826         __le32 reg3 /* reg3 */;
1827         __le32 reg4 /* reg4 */;
1828 };
1829
1830
1831 struct e4_mstorm_eth_conn_ag_ctx {
1832         u8 byte0 /* cdu_validation */;
1833         u8 byte1 /* state */;
1834         u8 flags0;
1835 #define E4_MSTORM_ETH_CONN_AG_CTX_EXIST_IN_QM0_MASK  0x1 /* exist_in_qm0 */
1836 #define E4_MSTORM_ETH_CONN_AG_CTX_EXIST_IN_QM0_SHIFT 0
1837 #define E4_MSTORM_ETH_CONN_AG_CTX_BIT1_MASK          0x1 /* exist_in_qm1 */
1838 #define E4_MSTORM_ETH_CONN_AG_CTX_BIT1_SHIFT         1
1839 #define E4_MSTORM_ETH_CONN_AG_CTX_CF0_MASK           0x3 /* cf0 */
1840 #define E4_MSTORM_ETH_CONN_AG_CTX_CF0_SHIFT          2
1841 #define E4_MSTORM_ETH_CONN_AG_CTX_CF1_MASK           0x3 /* cf1 */
1842 #define E4_MSTORM_ETH_CONN_AG_CTX_CF1_SHIFT          4
1843 #define E4_MSTORM_ETH_CONN_AG_CTX_CF2_MASK           0x3 /* cf2 */
1844 #define E4_MSTORM_ETH_CONN_AG_CTX_CF2_SHIFT          6
1845         u8 flags1;
1846 #define E4_MSTORM_ETH_CONN_AG_CTX_CF0EN_MASK         0x1 /* cf0en */
1847 #define E4_MSTORM_ETH_CONN_AG_CTX_CF0EN_SHIFT        0
1848 #define E4_MSTORM_ETH_CONN_AG_CTX_CF1EN_MASK         0x1 /* cf1en */
1849 #define E4_MSTORM_ETH_CONN_AG_CTX_CF1EN_SHIFT        1
1850 #define E4_MSTORM_ETH_CONN_AG_CTX_CF2EN_MASK         0x1 /* cf2en */
1851 #define E4_MSTORM_ETH_CONN_AG_CTX_CF2EN_SHIFT        2
1852 #define E4_MSTORM_ETH_CONN_AG_CTX_RULE0EN_MASK       0x1 /* rule0en */
1853 #define E4_MSTORM_ETH_CONN_AG_CTX_RULE0EN_SHIFT      3
1854 #define E4_MSTORM_ETH_CONN_AG_CTX_RULE1EN_MASK       0x1 /* rule1en */
1855 #define E4_MSTORM_ETH_CONN_AG_CTX_RULE1EN_SHIFT      4
1856 #define E4_MSTORM_ETH_CONN_AG_CTX_RULE2EN_MASK       0x1 /* rule2en */
1857 #define E4_MSTORM_ETH_CONN_AG_CTX_RULE2EN_SHIFT      5
1858 #define E4_MSTORM_ETH_CONN_AG_CTX_RULE3EN_MASK       0x1 /* rule3en */
1859 #define E4_MSTORM_ETH_CONN_AG_CTX_RULE3EN_SHIFT      6
1860 #define E4_MSTORM_ETH_CONN_AG_CTX_RULE4EN_MASK       0x1 /* rule4en */
1861 #define E4_MSTORM_ETH_CONN_AG_CTX_RULE4EN_SHIFT      7
1862         __le16 word0 /* word0 */;
1863         __le16 word1 /* word1 */;
1864         __le32 reg0 /* reg0 */;
1865         __le32 reg1 /* reg1 */;
1866 };
1867
1868
1869
1870
1871
1872 struct e4_xstorm_eth_hw_conn_ag_ctx {
1873         u8 reserved0 /* cdu_validation */;
1874         u8 eth_state /* state */;
1875         u8 flags0;
1876 /* exist_in_qm0 */
1877 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_EXIST_IN_QM0_MASK            0x1
1878 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_EXIST_IN_QM0_SHIFT           0
1879 /* exist_in_qm1 */
1880 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED1_MASK               0x1
1881 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED1_SHIFT              1
1882 /* exist_in_qm2 */
1883 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED2_MASK               0x1
1884 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED2_SHIFT              2
1885 /* exist_in_qm3 */
1886 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_EXIST_IN_QM3_MASK            0x1
1887 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_EXIST_IN_QM3_SHIFT           3
1888 /* bit4 */
1889 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED3_MASK               0x1
1890 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED3_SHIFT              4
1891 /* cf_array_active */
1892 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED4_MASK               0x1
1893 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED4_SHIFT              5
1894 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED5_MASK               0x1 /* bit6 */
1895 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED5_SHIFT              6
1896 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED6_MASK               0x1 /* bit7 */
1897 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED6_SHIFT              7
1898         u8 flags1;
1899 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED7_MASK               0x1 /* bit8 */
1900 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED7_SHIFT              0
1901 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED8_MASK               0x1 /* bit9 */
1902 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED8_SHIFT              1
1903 /* bit10 */
1904 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED9_MASK               0x1
1905 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED9_SHIFT              2
1906 /* bit11 */
1907 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_BIT11_MASK                   0x1
1908 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_BIT11_SHIFT                  3
1909 /* bit12 */
1910 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_BIT12_MASK                   0x1
1911 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_BIT12_SHIFT                  4
1912 /* bit13 */
1913 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_BIT13_MASK                   0x1
1914 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_BIT13_SHIFT                  5
1915 /* bit14 */
1916 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_TX_RULE_ACTIVE_MASK          0x1
1917 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_TX_RULE_ACTIVE_SHIFT         6
1918 /* bit15 */
1919 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_DQ_CF_ACTIVE_MASK            0x1
1920 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_DQ_CF_ACTIVE_SHIFT           7
1921         u8 flags2;
1922 /* timer0cf */
1923 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF0_MASK                     0x3
1924 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF0_SHIFT                    0
1925 /* timer1cf */
1926 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF1_MASK                     0x3
1927 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF1_SHIFT                    2
1928 /* timer2cf */
1929 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF2_MASK                     0x3
1930 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF2_SHIFT                    4
1931 /* timer_stop_all */
1932 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF3_MASK                     0x3
1933 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF3_SHIFT                    6
1934         u8 flags3;
1935 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF4_MASK                     0x3 /* cf4 */
1936 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF4_SHIFT                    0
1937 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF5_MASK                     0x3 /* cf5 */
1938 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF5_SHIFT                    2
1939 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF6_MASK                     0x3 /* cf6 */
1940 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF6_SHIFT                    4
1941 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF7_MASK                     0x3 /* cf7 */
1942 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF7_SHIFT                    6
1943         u8 flags4;
1944 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF8_MASK                     0x3 /* cf8 */
1945 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF8_SHIFT                    0
1946 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF9_MASK                     0x3 /* cf9 */
1947 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF9_SHIFT                    2
1948 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF10_MASK                    0x3 /* cf10 */
1949 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF10_SHIFT                   4
1950 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF11_MASK                    0x3 /* cf11 */
1951 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF11_SHIFT                   6
1952         u8 flags5;
1953 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF12_MASK                    0x3 /* cf12 */
1954 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF12_SHIFT                   0
1955 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF13_MASK                    0x3 /* cf13 */
1956 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF13_SHIFT                   2
1957 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF14_MASK                    0x3 /* cf14 */
1958 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF14_SHIFT                   4
1959 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF15_MASK                    0x3 /* cf15 */
1960 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF15_SHIFT                   6
1961         u8 flags6;
1962 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_GO_TO_BD_CONS_CF_MASK        0x3 /* cf16 */
1963 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_GO_TO_BD_CONS_CF_SHIFT       0
1964 /* cf_array_cf */
1965 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_MULTI_UNICAST_CF_MASK        0x3
1966 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_MULTI_UNICAST_CF_SHIFT       2
1967 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_DQ_CF_MASK                   0x3 /* cf18 */
1968 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_DQ_CF_SHIFT                  4
1969 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_TERMINATE_CF_MASK            0x3 /* cf19 */
1970 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_TERMINATE_CF_SHIFT           6
1971         u8 flags7;
1972 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_FLUSH_Q0_MASK                0x3 /* cf20 */
1973 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_FLUSH_Q0_SHIFT               0
1974 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED10_MASK              0x3 /* cf21 */
1975 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED10_SHIFT             2
1976 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_SLOW_PATH_MASK               0x3 /* cf22 */
1977 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_SLOW_PATH_SHIFT              4
1978 /* cf0en */
1979 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF0EN_MASK                   0x1
1980 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF0EN_SHIFT                  6
1981 /* cf1en */
1982 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF1EN_MASK                   0x1
1983 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF1EN_SHIFT                  7
1984         u8 flags8;
1985 /* cf2en */
1986 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF2EN_MASK                   0x1
1987 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF2EN_SHIFT                  0
1988 /* cf3en */
1989 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF3EN_MASK                   0x1
1990 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF3EN_SHIFT                  1
1991 /* cf4en */
1992 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF4EN_MASK                   0x1
1993 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF4EN_SHIFT                  2
1994 /* cf5en */
1995 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF5EN_MASK                   0x1
1996 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF5EN_SHIFT                  3
1997 /* cf6en */
1998 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF6EN_MASK                   0x1
1999 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF6EN_SHIFT                  4
2000 /* cf7en */
2001 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF7EN_MASK                   0x1
2002 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF7EN_SHIFT                  5
2003 /* cf8en */
2004 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF8EN_MASK                   0x1
2005 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF8EN_SHIFT                  6
2006 /* cf9en */
2007 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF9EN_MASK                   0x1
2008 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF9EN_SHIFT                  7
2009         u8 flags9;
2010 /* cf10en */
2011 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF10EN_MASK                  0x1
2012 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF10EN_SHIFT                 0
2013 /* cf11en */
2014 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF11EN_MASK                  0x1
2015 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF11EN_SHIFT                 1
2016 /* cf12en */
2017 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF12EN_MASK                  0x1
2018 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF12EN_SHIFT                 2
2019 /* cf13en */
2020 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF13EN_MASK                  0x1
2021 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF13EN_SHIFT                 3
2022 /* cf14en */
2023 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF14EN_MASK                  0x1
2024 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF14EN_SHIFT                 4
2025 /* cf15en */
2026 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF15EN_MASK                  0x1
2027 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF15EN_SHIFT                 5
2028 /* cf16en */
2029 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_GO_TO_BD_CONS_CF_EN_MASK     0x1
2030 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_GO_TO_BD_CONS_CF_EN_SHIFT    6
2031 /* cf_array_cf_en */
2032 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_MULTI_UNICAST_CF_EN_MASK     0x1
2033 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_MULTI_UNICAST_CF_EN_SHIFT    7
2034         u8 flags10;
2035 /* cf18en */
2036 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_DQ_CF_EN_MASK                0x1
2037 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_DQ_CF_EN_SHIFT               0
2038 /* cf19en */
2039 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_TERMINATE_CF_EN_MASK         0x1
2040 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_TERMINATE_CF_EN_SHIFT        1
2041 /* cf20en */
2042 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_FLUSH_Q0_EN_MASK             0x1
2043 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_FLUSH_Q0_EN_SHIFT            2
2044 /* cf21en */
2045 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED11_MASK              0x1
2046 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED11_SHIFT             3
2047 /* cf22en */
2048 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_SLOW_PATH_EN_MASK            0x1
2049 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_SLOW_PATH_EN_SHIFT           4
2050 /* cf23en */
2051 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_TPH_ENABLE_EN_RESERVED_MASK  0x1
2052 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_TPH_ENABLE_EN_RESERVED_SHIFT 5
2053 /* rule0en */
2054 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED12_MASK              0x1
2055 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED12_SHIFT             6
2056 /* rule1en */
2057 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED13_MASK              0x1
2058 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED13_SHIFT             7
2059         u8 flags11;
2060 /* rule2en */
2061 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED14_MASK              0x1
2062 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED14_SHIFT             0
2063 /* rule3en */
2064 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED15_MASK              0x1
2065 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED15_SHIFT             1
2066 /* rule4en */
2067 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_TX_DEC_RULE_EN_MASK          0x1
2068 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_TX_DEC_RULE_EN_SHIFT         2
2069 /* rule5en */
2070 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE5EN_MASK                 0x1
2071 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE5EN_SHIFT                3
2072 /* rule6en */
2073 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE6EN_MASK                 0x1
2074 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE6EN_SHIFT                4
2075 /* rule7en */
2076 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE7EN_MASK                 0x1
2077 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE7EN_SHIFT                5
2078 /* rule8en */
2079 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED1_MASK            0x1
2080 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED1_SHIFT           6
2081 /* rule9en */
2082 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE9EN_MASK                 0x1
2083 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE9EN_SHIFT                7
2084         u8 flags12;
2085 /* rule10en */
2086 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE10EN_MASK                0x1
2087 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE10EN_SHIFT               0
2088 /* rule11en */
2089 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE11EN_MASK                0x1
2090 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE11EN_SHIFT               1
2091 /* rule12en */
2092 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED2_MASK            0x1
2093 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED2_SHIFT           2
2094 /* rule13en */
2095 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED3_MASK            0x1
2096 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED3_SHIFT           3
2097 /* rule14en */
2098 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE14EN_MASK                0x1
2099 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE14EN_SHIFT               4
2100 /* rule15en */
2101 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE15EN_MASK                0x1
2102 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE15EN_SHIFT               5
2103 /* rule16en */
2104 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE16EN_MASK                0x1
2105 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE16EN_SHIFT               6
2106 /* rule17en */
2107 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE17EN_MASK                0x1
2108 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE17EN_SHIFT               7
2109         u8 flags13;
2110 /* rule18en */
2111 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE18EN_MASK                0x1
2112 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE18EN_SHIFT               0
2113 /* rule19en */
2114 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE19EN_MASK                0x1
2115 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE19EN_SHIFT               1
2116 /* rule20en */
2117 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED4_MASK            0x1
2118 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED4_SHIFT           2
2119 /* rule21en */
2120 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED5_MASK            0x1
2121 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED5_SHIFT           3
2122 /* rule22en */
2123 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED6_MASK            0x1
2124 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED6_SHIFT           4
2125 /* rule23en */
2126 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED7_MASK            0x1
2127 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED7_SHIFT           5
2128 /* rule24en */
2129 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED8_MASK            0x1
2130 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED8_SHIFT           6
2131 /* rule25en */
2132 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED9_MASK            0x1
2133 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED9_SHIFT           7
2134         u8 flags14;
2135 /* bit16 */
2136 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_EDPM_USE_EXT_HDR_MASK        0x1
2137 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_EDPM_USE_EXT_HDR_SHIFT       0
2138 /* bit17 */
2139 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_EDPM_SEND_RAW_L3L4_MASK      0x1
2140 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_EDPM_SEND_RAW_L3L4_SHIFT     1
2141 /* bit18 */
2142 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_EDPM_INBAND_PROP_HDR_MASK    0x1
2143 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_EDPM_INBAND_PROP_HDR_SHIFT   2
2144 /* bit19 */
2145 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_EDPM_SEND_EXT_TUNNEL_MASK    0x1
2146 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_EDPM_SEND_EXT_TUNNEL_SHIFT   3
2147 /* bit20 */
2148 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_L2_EDPM_ENABLE_MASK          0x1
2149 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_L2_EDPM_ENABLE_SHIFT         4
2150 /* bit21 */
2151 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_ROCE_EDPM_ENABLE_MASK        0x1
2152 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_ROCE_EDPM_ENABLE_SHIFT       5
2153 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_TPH_ENABLE_MASK              0x3 /* cf23 */
2154 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_TPH_ENABLE_SHIFT             6
2155         u8 edpm_event_id /* byte2 */;
2156         __le16 physical_q0 /* physical_q0 */;
2157         __le16 e5_reserved1 /* physical_q1 */;
2158         __le16 edpm_num_bds /* physical_q2 */;
2159         __le16 tx_bd_cons /* word3 */;
2160         __le16 tx_bd_prod /* word4 */;
2161         __le16 updated_qm_pq_id /* word5 */;
2162         __le16 conn_dpi /* conn_dpi */;
2163 };
2164
2165
2166
2167 /*
2168  * GFT CAM line struct
2169  */
2170 struct gft_cam_line {
2171         __le32 camline;
2172 /* Indication if the line is valid. */
2173 #define GFT_CAM_LINE_VALID_MASK      0x1
2174 #define GFT_CAM_LINE_VALID_SHIFT     0
2175 /* Data bits, the word that compared with the profile key */
2176 #define GFT_CAM_LINE_DATA_MASK       0x3FFF
2177 #define GFT_CAM_LINE_DATA_SHIFT      1
2178 /* Mask bits, indicate the bits in the data that are Dont-Care */
2179 #define GFT_CAM_LINE_MASK_BITS_MASK  0x3FFF
2180 #define GFT_CAM_LINE_MASK_BITS_SHIFT 15
2181 #define GFT_CAM_LINE_RESERVED1_MASK  0x7
2182 #define GFT_CAM_LINE_RESERVED1_SHIFT 29
2183 };
2184
2185
2186 /*
2187  * GFT CAM line struct (for driversim use)
2188  */
2189 struct gft_cam_line_mapped {
2190         __le32 camline;
2191 /* Indication if the line is valid. */
2192 #define GFT_CAM_LINE_MAPPED_VALID_MASK                     0x1
2193 #define GFT_CAM_LINE_MAPPED_VALID_SHIFT                    0
2194 /* use enum gft_profile_ip_version (use enum gft_profile_ip_version) */
2195 #define GFT_CAM_LINE_MAPPED_IP_VERSION_MASK                0x1
2196 #define GFT_CAM_LINE_MAPPED_IP_VERSION_SHIFT               1
2197 /* use enum gft_profile_ip_version (use enum gft_profile_ip_version) */
2198 #define GFT_CAM_LINE_MAPPED_TUNNEL_IP_VERSION_MASK         0x1
2199 #define GFT_CAM_LINE_MAPPED_TUNNEL_IP_VERSION_SHIFT        2
2200 /* use enum gft_profile_upper_protocol_type
2201  * (use enum gft_profile_upper_protocol_type)
2202  */
2203 #define GFT_CAM_LINE_MAPPED_UPPER_PROTOCOL_TYPE_MASK       0xF
2204 #define GFT_CAM_LINE_MAPPED_UPPER_PROTOCOL_TYPE_SHIFT      3
2205 /* use enum gft_profile_tunnel_type (use enum gft_profile_tunnel_type) */
2206 #define GFT_CAM_LINE_MAPPED_TUNNEL_TYPE_MASK               0xF
2207 #define GFT_CAM_LINE_MAPPED_TUNNEL_TYPE_SHIFT              7
2208 #define GFT_CAM_LINE_MAPPED_PF_ID_MASK                     0xF
2209 #define GFT_CAM_LINE_MAPPED_PF_ID_SHIFT                    11
2210 /* use enum gft_profile_ip_version (use enum gft_profile_ip_version) */
2211 #define GFT_CAM_LINE_MAPPED_IP_VERSION_MASK_MASK           0x1
2212 #define GFT_CAM_LINE_MAPPED_IP_VERSION_MASK_SHIFT          15
2213 /* use enum gft_profile_ip_version (use enum gft_profile_ip_version) */
2214 #define GFT_CAM_LINE_MAPPED_TUNNEL_IP_VERSION_MASK_MASK    0x1
2215 #define GFT_CAM_LINE_MAPPED_TUNNEL_IP_VERSION_MASK_SHIFT   16
2216 /* use enum gft_profile_upper_protocol_type
2217  * (use enum gft_profile_upper_protocol_type)
2218  */
2219 #define GFT_CAM_LINE_MAPPED_UPPER_PROTOCOL_TYPE_MASK_MASK  0xF
2220 #define GFT_CAM_LINE_MAPPED_UPPER_PROTOCOL_TYPE_MASK_SHIFT 17
2221 /* use enum gft_profile_tunnel_type (use enum gft_profile_tunnel_type) */
2222 #define GFT_CAM_LINE_MAPPED_TUNNEL_TYPE_MASK_MASK          0xF
2223 #define GFT_CAM_LINE_MAPPED_TUNNEL_TYPE_MASK_SHIFT         21
2224 #define GFT_CAM_LINE_MAPPED_PF_ID_MASK_MASK                0xF
2225 #define GFT_CAM_LINE_MAPPED_PF_ID_MASK_SHIFT               25
2226 #define GFT_CAM_LINE_MAPPED_RESERVED1_MASK                 0x7
2227 #define GFT_CAM_LINE_MAPPED_RESERVED1_SHIFT                29
2228 };
2229
2230
2231 union gft_cam_line_union {
2232         struct gft_cam_line cam_line;
2233         struct gft_cam_line_mapped cam_line_mapped;
2234 };
2235
2236
2237 /*
2238  * Used in gft_profile_key: Indication for ip version
2239  */
2240 enum gft_profile_ip_version {
2241         GFT_PROFILE_IPV4 = 0,
2242         GFT_PROFILE_IPV6 = 1,
2243         MAX_GFT_PROFILE_IP_VERSION
2244 };
2245
2246
2247 /*
2248  * Profile key stucr fot GFT logic in Prs
2249  */
2250 struct gft_profile_key {
2251         __le16 profile_key;
2252 /* use enum gft_profile_ip_version (use enum gft_profile_ip_version) */
2253 #define GFT_PROFILE_KEY_IP_VERSION_MASK           0x1
2254 #define GFT_PROFILE_KEY_IP_VERSION_SHIFT          0
2255 /* use enum gft_profile_ip_version (use enum gft_profile_ip_version) */
2256 #define GFT_PROFILE_KEY_TUNNEL_IP_VERSION_MASK    0x1
2257 #define GFT_PROFILE_KEY_TUNNEL_IP_VERSION_SHIFT   1
2258 /* use enum gft_profile_upper_protocol_type
2259  * (use enum gft_profile_upper_protocol_type)
2260  */
2261 #define GFT_PROFILE_KEY_UPPER_PROTOCOL_TYPE_MASK  0xF
2262 #define GFT_PROFILE_KEY_UPPER_PROTOCOL_TYPE_SHIFT 2
2263 /* use enum gft_profile_tunnel_type (use enum gft_profile_tunnel_type) */
2264 #define GFT_PROFILE_KEY_TUNNEL_TYPE_MASK          0xF
2265 #define GFT_PROFILE_KEY_TUNNEL_TYPE_SHIFT         6
2266 #define GFT_PROFILE_KEY_PF_ID_MASK                0xF
2267 #define GFT_PROFILE_KEY_PF_ID_SHIFT               10
2268 #define GFT_PROFILE_KEY_RESERVED0_MASK            0x3
2269 #define GFT_PROFILE_KEY_RESERVED0_SHIFT           14
2270 };
2271
2272
2273 /*
2274  * Used in gft_profile_key: Indication for tunnel type
2275  */
2276 enum gft_profile_tunnel_type {
2277         GFT_PROFILE_NO_TUNNEL = 0,
2278         GFT_PROFILE_VXLAN_TUNNEL = 1,
2279         GFT_PROFILE_GRE_MAC_OR_NVGRE_TUNNEL = 2,
2280         GFT_PROFILE_GRE_IP_TUNNEL = 3,
2281         GFT_PROFILE_GENEVE_MAC_TUNNEL = 4,
2282         GFT_PROFILE_GENEVE_IP_TUNNEL = 5,
2283         MAX_GFT_PROFILE_TUNNEL_TYPE
2284 };
2285
2286
2287 /*
2288  * Used in gft_profile_key: Indication for protocol type
2289  */
2290 enum gft_profile_upper_protocol_type {
2291         GFT_PROFILE_ROCE_PROTOCOL = 0,
2292         GFT_PROFILE_RROCE_PROTOCOL = 1,
2293         GFT_PROFILE_FCOE_PROTOCOL = 2,
2294         GFT_PROFILE_ICMP_PROTOCOL = 3,
2295         GFT_PROFILE_ARP_PROTOCOL = 4,
2296         GFT_PROFILE_USER_TCP_SRC_PORT_1_INNER = 5,
2297         GFT_PROFILE_USER_TCP_DST_PORT_1_INNER = 6,
2298         GFT_PROFILE_TCP_PROTOCOL = 7,
2299         GFT_PROFILE_USER_UDP_DST_PORT_1_INNER = 8,
2300         GFT_PROFILE_USER_UDP_DST_PORT_2_OUTER = 9,
2301         GFT_PROFILE_UDP_PROTOCOL = 10,
2302         GFT_PROFILE_USER_IP_1_INNER = 11,
2303         GFT_PROFILE_USER_IP_2_OUTER = 12,
2304         GFT_PROFILE_USER_ETH_1_INNER = 13,
2305         GFT_PROFILE_USER_ETH_2_OUTER = 14,
2306         GFT_PROFILE_RAW = 15,
2307         MAX_GFT_PROFILE_UPPER_PROTOCOL_TYPE
2308 };
2309
2310
2311 /*
2312  * GFT RAM line struct
2313  */
2314 struct gft_ram_line {
2315         __le32 lo;
2316 #define GFT_RAM_LINE_VLAN_SELECT_MASK              0x3
2317 #define GFT_RAM_LINE_VLAN_SELECT_SHIFT             0
2318 #define GFT_RAM_LINE_TUNNEL_ENTROPHY_MASK          0x1
2319 #define GFT_RAM_LINE_TUNNEL_ENTROPHY_SHIFT         2
2320 #define GFT_RAM_LINE_TUNNEL_TTL_EQUAL_ONE_MASK     0x1
2321 #define GFT_RAM_LINE_TUNNEL_TTL_EQUAL_ONE_SHIFT    3
2322 #define GFT_RAM_LINE_TUNNEL_TTL_MASK               0x1
2323 #define GFT_RAM_LINE_TUNNEL_TTL_SHIFT              4
2324 #define GFT_RAM_LINE_TUNNEL_ETHERTYPE_MASK         0x1
2325 #define GFT_RAM_LINE_TUNNEL_ETHERTYPE_SHIFT        5
2326 #define GFT_RAM_LINE_TUNNEL_DST_PORT_MASK          0x1
2327 #define GFT_RAM_LINE_TUNNEL_DST_PORT_SHIFT         6
2328 #define GFT_RAM_LINE_TUNNEL_SRC_PORT_MASK          0x1
2329 #define GFT_RAM_LINE_TUNNEL_SRC_PORT_SHIFT         7
2330 #define GFT_RAM_LINE_TUNNEL_DSCP_MASK              0x1
2331 #define GFT_RAM_LINE_TUNNEL_DSCP_SHIFT             8
2332 #define GFT_RAM_LINE_TUNNEL_OVER_IP_PROTOCOL_MASK  0x1
2333 #define GFT_RAM_LINE_TUNNEL_OVER_IP_PROTOCOL_SHIFT 9
2334 #define GFT_RAM_LINE_TUNNEL_DST_IP_MASK            0x1
2335 #define GFT_RAM_LINE_TUNNEL_DST_IP_SHIFT           10
2336 #define GFT_RAM_LINE_TUNNEL_SRC_IP_MASK            0x1
2337 #define GFT_RAM_LINE_TUNNEL_SRC_IP_SHIFT           11
2338 #define GFT_RAM_LINE_TUNNEL_PRIORITY_MASK          0x1
2339 #define GFT_RAM_LINE_TUNNEL_PRIORITY_SHIFT         12
2340 #define GFT_RAM_LINE_TUNNEL_PROVIDER_VLAN_MASK     0x1
2341 #define GFT_RAM_LINE_TUNNEL_PROVIDER_VLAN_SHIFT    13
2342 #define GFT_RAM_LINE_TUNNEL_VLAN_MASK              0x1
2343 #define GFT_RAM_LINE_TUNNEL_VLAN_SHIFT             14
2344 #define GFT_RAM_LINE_TUNNEL_DST_MAC_MASK           0x1
2345 #define GFT_RAM_LINE_TUNNEL_DST_MAC_SHIFT          15
2346 #define GFT_RAM_LINE_TUNNEL_SRC_MAC_MASK           0x1
2347 #define GFT_RAM_LINE_TUNNEL_SRC_MAC_SHIFT          16
2348 #define GFT_RAM_LINE_TTL_EQUAL_ONE_MASK            0x1
2349 #define GFT_RAM_LINE_TTL_EQUAL_ONE_SHIFT           17
2350 #define GFT_RAM_LINE_TTL_MASK                      0x1
2351 #define GFT_RAM_LINE_TTL_SHIFT                     18
2352 #define GFT_RAM_LINE_ETHERTYPE_MASK                0x1
2353 #define GFT_RAM_LINE_ETHERTYPE_SHIFT               19
2354 #define GFT_RAM_LINE_RESERVED0_MASK                0x1
2355 #define GFT_RAM_LINE_RESERVED0_SHIFT               20
2356 #define GFT_RAM_LINE_TCP_FLAG_FIN_MASK             0x1
2357 #define GFT_RAM_LINE_TCP_FLAG_FIN_SHIFT            21
2358 #define GFT_RAM_LINE_TCP_FLAG_SYN_MASK             0x1
2359 #define GFT_RAM_LINE_TCP_FLAG_SYN_SHIFT            22
2360 #define GFT_RAM_LINE_TCP_FLAG_RST_MASK             0x1
2361 #define GFT_RAM_LINE_TCP_FLAG_RST_SHIFT            23
2362 #define GFT_RAM_LINE_TCP_FLAG_PSH_MASK             0x1
2363 #define GFT_RAM_LINE_TCP_FLAG_PSH_SHIFT            24
2364 #define GFT_RAM_LINE_TCP_FLAG_ACK_MASK             0x1
2365 #define GFT_RAM_LINE_TCP_FLAG_ACK_SHIFT            25
2366 #define GFT_RAM_LINE_TCP_FLAG_URG_MASK             0x1
2367 #define GFT_RAM_LINE_TCP_FLAG_URG_SHIFT            26
2368 #define GFT_RAM_LINE_TCP_FLAG_ECE_MASK             0x1
2369 #define GFT_RAM_LINE_TCP_FLAG_ECE_SHIFT            27
2370 #define GFT_RAM_LINE_TCP_FLAG_CWR_MASK             0x1
2371 #define GFT_RAM_LINE_TCP_FLAG_CWR_SHIFT            28
2372 #define GFT_RAM_LINE_TCP_FLAG_NS_MASK              0x1
2373 #define GFT_RAM_LINE_TCP_FLAG_NS_SHIFT             29
2374 #define GFT_RAM_LINE_DST_PORT_MASK                 0x1
2375 #define GFT_RAM_LINE_DST_PORT_SHIFT                30
2376 #define GFT_RAM_LINE_SRC_PORT_MASK                 0x1
2377 #define GFT_RAM_LINE_SRC_PORT_SHIFT                31
2378         __le32 hi;
2379 #define GFT_RAM_LINE_DSCP_MASK                     0x1
2380 #define GFT_RAM_LINE_DSCP_SHIFT                    0
2381 #define GFT_RAM_LINE_OVER_IP_PROTOCOL_MASK         0x1
2382 #define GFT_RAM_LINE_OVER_IP_PROTOCOL_SHIFT        1
2383 #define GFT_RAM_LINE_DST_IP_MASK                   0x1
2384 #define GFT_RAM_LINE_DST_IP_SHIFT                  2
2385 #define GFT_RAM_LINE_SRC_IP_MASK                   0x1
2386 #define GFT_RAM_LINE_SRC_IP_SHIFT                  3
2387 #define GFT_RAM_LINE_PRIORITY_MASK                 0x1
2388 #define GFT_RAM_LINE_PRIORITY_SHIFT                4
2389 #define GFT_RAM_LINE_PROVIDER_VLAN_MASK            0x1
2390 #define GFT_RAM_LINE_PROVIDER_VLAN_SHIFT           5
2391 #define GFT_RAM_LINE_VLAN_MASK                     0x1
2392 #define GFT_RAM_LINE_VLAN_SHIFT                    6
2393 #define GFT_RAM_LINE_DST_MAC_MASK                  0x1
2394 #define GFT_RAM_LINE_DST_MAC_SHIFT                 7
2395 #define GFT_RAM_LINE_SRC_MAC_MASK                  0x1
2396 #define GFT_RAM_LINE_SRC_MAC_SHIFT                 8
2397 #define GFT_RAM_LINE_TENANT_ID_MASK                0x1
2398 #define GFT_RAM_LINE_TENANT_ID_SHIFT               9
2399 #define GFT_RAM_LINE_RESERVED1_MASK                0x3FFFFF
2400 #define GFT_RAM_LINE_RESERVED1_SHIFT               10
2401 };
2402
2403
2404 /*
2405  * Used in the first 2 bits for gft_ram_line: Indication for vlan mask
2406  */
2407 enum gft_vlan_select {
2408         INNER_PROVIDER_VLAN = 0,
2409         INNER_VLAN = 1,
2410         OUTER_PROVIDER_VLAN = 2,
2411         OUTER_VLAN = 3,
2412         MAX_GFT_VLAN_SELECT
2413 };
2414
2415
2416 #endif /* __ECORE_HSI_ETH__ */