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