b1cab2910f4ca7db9880b5d05345303495f1501f
[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 xstorm_eth_conn_ag_ctx {
36         u8 reserved0 /* cdu_validation */;
37         u8 eth_state /* state */;
38         u8 flags0;
39 /* exist_in_qm0 */
40 #define XSTORM_ETH_CONN_AG_CTX_EXIST_IN_QM0_MASK            0x1
41 #define XSTORM_ETH_CONN_AG_CTX_EXIST_IN_QM0_SHIFT           0
42 /* exist_in_qm1 */
43 #define XSTORM_ETH_CONN_AG_CTX_RESERVED1_MASK               0x1
44 #define XSTORM_ETH_CONN_AG_CTX_RESERVED1_SHIFT              1
45 /* exist_in_qm2 */
46 #define XSTORM_ETH_CONN_AG_CTX_RESERVED2_MASK               0x1
47 #define XSTORM_ETH_CONN_AG_CTX_RESERVED2_SHIFT              2
48 /* exist_in_qm3 */
49 #define XSTORM_ETH_CONN_AG_CTX_EXIST_IN_QM3_MASK            0x1
50 #define XSTORM_ETH_CONN_AG_CTX_EXIST_IN_QM3_SHIFT           3
51 #define XSTORM_ETH_CONN_AG_CTX_RESERVED3_MASK               0x1 /* bit4 */
52 #define XSTORM_ETH_CONN_AG_CTX_RESERVED3_SHIFT              4
53 /* cf_array_active */
54 #define XSTORM_ETH_CONN_AG_CTX_RESERVED4_MASK               0x1
55 #define XSTORM_ETH_CONN_AG_CTX_RESERVED4_SHIFT              5
56 #define XSTORM_ETH_CONN_AG_CTX_RESERVED5_MASK               0x1 /* bit6 */
57 #define XSTORM_ETH_CONN_AG_CTX_RESERVED5_SHIFT              6
58 #define XSTORM_ETH_CONN_AG_CTX_RESERVED6_MASK               0x1 /* bit7 */
59 #define XSTORM_ETH_CONN_AG_CTX_RESERVED6_SHIFT              7
60         u8 flags1;
61 #define XSTORM_ETH_CONN_AG_CTX_RESERVED7_MASK               0x1 /* bit8 */
62 #define XSTORM_ETH_CONN_AG_CTX_RESERVED7_SHIFT              0
63 #define XSTORM_ETH_CONN_AG_CTX_RESERVED8_MASK               0x1 /* bit9 */
64 #define XSTORM_ETH_CONN_AG_CTX_RESERVED8_SHIFT              1
65 #define XSTORM_ETH_CONN_AG_CTX_RESERVED9_MASK               0x1 /* bit10 */
66 #define XSTORM_ETH_CONN_AG_CTX_RESERVED9_SHIFT              2
67 #define XSTORM_ETH_CONN_AG_CTX_BIT11_MASK                   0x1 /* bit11 */
68 #define XSTORM_ETH_CONN_AG_CTX_BIT11_SHIFT                  3
69 #define XSTORM_ETH_CONN_AG_CTX_E5_RESERVED2_MASK            0x1 /* bit12 */
70 #define XSTORM_ETH_CONN_AG_CTX_E5_RESERVED2_SHIFT           4
71 #define XSTORM_ETH_CONN_AG_CTX_E5_RESERVED3_MASK            0x1 /* bit13 */
72 #define XSTORM_ETH_CONN_AG_CTX_E5_RESERVED3_SHIFT           5
73 #define XSTORM_ETH_CONN_AG_CTX_TX_RULE_ACTIVE_MASK          0x1 /* bit14 */
74 #define XSTORM_ETH_CONN_AG_CTX_TX_RULE_ACTIVE_SHIFT         6
75 #define XSTORM_ETH_CONN_AG_CTX_DQ_CF_ACTIVE_MASK            0x1 /* bit15 */
76 #define XSTORM_ETH_CONN_AG_CTX_DQ_CF_ACTIVE_SHIFT           7
77         u8 flags2;
78 #define XSTORM_ETH_CONN_AG_CTX_CF0_MASK                     0x3 /* timer0cf */
79 #define XSTORM_ETH_CONN_AG_CTX_CF0_SHIFT                    0
80 #define XSTORM_ETH_CONN_AG_CTX_CF1_MASK                     0x3 /* timer1cf */
81 #define XSTORM_ETH_CONN_AG_CTX_CF1_SHIFT                    2
82 #define XSTORM_ETH_CONN_AG_CTX_CF2_MASK                     0x3 /* timer2cf */
83 #define XSTORM_ETH_CONN_AG_CTX_CF2_SHIFT                    4
84 /* timer_stop_all */
85 #define XSTORM_ETH_CONN_AG_CTX_CF3_MASK                     0x3
86 #define XSTORM_ETH_CONN_AG_CTX_CF3_SHIFT                    6
87         u8 flags3;
88 #define XSTORM_ETH_CONN_AG_CTX_CF4_MASK                     0x3 /* cf4 */
89 #define XSTORM_ETH_CONN_AG_CTX_CF4_SHIFT                    0
90 #define XSTORM_ETH_CONN_AG_CTX_CF5_MASK                     0x3 /* cf5 */
91 #define XSTORM_ETH_CONN_AG_CTX_CF5_SHIFT                    2
92 #define XSTORM_ETH_CONN_AG_CTX_CF6_MASK                     0x3 /* cf6 */
93 #define XSTORM_ETH_CONN_AG_CTX_CF6_SHIFT                    4
94 #define XSTORM_ETH_CONN_AG_CTX_CF7_MASK                     0x3 /* cf7 */
95 #define XSTORM_ETH_CONN_AG_CTX_CF7_SHIFT                    6
96         u8 flags4;
97 #define XSTORM_ETH_CONN_AG_CTX_CF8_MASK                     0x3 /* cf8 */
98 #define XSTORM_ETH_CONN_AG_CTX_CF8_SHIFT                    0
99 #define XSTORM_ETH_CONN_AG_CTX_CF9_MASK                     0x3 /* cf9 */
100 #define XSTORM_ETH_CONN_AG_CTX_CF9_SHIFT                    2
101 #define XSTORM_ETH_CONN_AG_CTX_CF10_MASK                    0x3 /* cf10 */
102 #define XSTORM_ETH_CONN_AG_CTX_CF10_SHIFT                   4
103 #define XSTORM_ETH_CONN_AG_CTX_CF11_MASK                    0x3 /* cf11 */
104 #define XSTORM_ETH_CONN_AG_CTX_CF11_SHIFT                   6
105         u8 flags5;
106 #define XSTORM_ETH_CONN_AG_CTX_CF12_MASK                    0x3 /* cf12 */
107 #define XSTORM_ETH_CONN_AG_CTX_CF12_SHIFT                   0
108 #define XSTORM_ETH_CONN_AG_CTX_CF13_MASK                    0x3 /* cf13 */
109 #define XSTORM_ETH_CONN_AG_CTX_CF13_SHIFT                   2
110 #define XSTORM_ETH_CONN_AG_CTX_CF14_MASK                    0x3 /* cf14 */
111 #define XSTORM_ETH_CONN_AG_CTX_CF14_SHIFT                   4
112 #define XSTORM_ETH_CONN_AG_CTX_CF15_MASK                    0x3 /* cf15 */
113 #define XSTORM_ETH_CONN_AG_CTX_CF15_SHIFT                   6
114         u8 flags6;
115 #define XSTORM_ETH_CONN_AG_CTX_GO_TO_BD_CONS_CF_MASK        0x3 /* cf16 */
116 #define XSTORM_ETH_CONN_AG_CTX_GO_TO_BD_CONS_CF_SHIFT       0
117 /* cf_array_cf */
118 #define XSTORM_ETH_CONN_AG_CTX_MULTI_UNICAST_CF_MASK        0x3
119 #define XSTORM_ETH_CONN_AG_CTX_MULTI_UNICAST_CF_SHIFT       2
120 #define XSTORM_ETH_CONN_AG_CTX_DQ_CF_MASK                   0x3 /* cf18 */
121 #define XSTORM_ETH_CONN_AG_CTX_DQ_CF_SHIFT                  4
122 #define XSTORM_ETH_CONN_AG_CTX_TERMINATE_CF_MASK            0x3 /* cf19 */
123 #define XSTORM_ETH_CONN_AG_CTX_TERMINATE_CF_SHIFT           6
124         u8 flags7;
125 #define XSTORM_ETH_CONN_AG_CTX_FLUSH_Q0_MASK                0x3 /* cf20 */
126 #define XSTORM_ETH_CONN_AG_CTX_FLUSH_Q0_SHIFT               0
127 #define XSTORM_ETH_CONN_AG_CTX_RESERVED10_MASK              0x3 /* cf21 */
128 #define XSTORM_ETH_CONN_AG_CTX_RESERVED10_SHIFT             2
129 #define XSTORM_ETH_CONN_AG_CTX_SLOW_PATH_MASK               0x3 /* cf22 */
130 #define XSTORM_ETH_CONN_AG_CTX_SLOW_PATH_SHIFT              4
131 #define XSTORM_ETH_CONN_AG_CTX_CF0EN_MASK                   0x1 /* cf0en */
132 #define XSTORM_ETH_CONN_AG_CTX_CF0EN_SHIFT                  6
133 #define XSTORM_ETH_CONN_AG_CTX_CF1EN_MASK                   0x1 /* cf1en */
134 #define XSTORM_ETH_CONN_AG_CTX_CF1EN_SHIFT                  7
135         u8 flags8;
136 #define XSTORM_ETH_CONN_AG_CTX_CF2EN_MASK                   0x1 /* cf2en */
137 #define XSTORM_ETH_CONN_AG_CTX_CF2EN_SHIFT                  0
138 #define XSTORM_ETH_CONN_AG_CTX_CF3EN_MASK                   0x1 /* cf3en */
139 #define XSTORM_ETH_CONN_AG_CTX_CF3EN_SHIFT                  1
140 #define XSTORM_ETH_CONN_AG_CTX_CF4EN_MASK                   0x1 /* cf4en */
141 #define XSTORM_ETH_CONN_AG_CTX_CF4EN_SHIFT                  2
142 #define XSTORM_ETH_CONN_AG_CTX_CF5EN_MASK                   0x1 /* cf5en */
143 #define XSTORM_ETH_CONN_AG_CTX_CF5EN_SHIFT                  3
144 #define XSTORM_ETH_CONN_AG_CTX_CF6EN_MASK                   0x1 /* cf6en */
145 #define XSTORM_ETH_CONN_AG_CTX_CF6EN_SHIFT                  4
146 #define XSTORM_ETH_CONN_AG_CTX_CF7EN_MASK                   0x1 /* cf7en */
147 #define XSTORM_ETH_CONN_AG_CTX_CF7EN_SHIFT                  5
148 #define XSTORM_ETH_CONN_AG_CTX_CF8EN_MASK                   0x1 /* cf8en */
149 #define XSTORM_ETH_CONN_AG_CTX_CF8EN_SHIFT                  6
150 #define XSTORM_ETH_CONN_AG_CTX_CF9EN_MASK                   0x1 /* cf9en */
151 #define XSTORM_ETH_CONN_AG_CTX_CF9EN_SHIFT                  7
152         u8 flags9;
153 #define XSTORM_ETH_CONN_AG_CTX_CF10EN_MASK                  0x1 /* cf10en */
154 #define XSTORM_ETH_CONN_AG_CTX_CF10EN_SHIFT                 0
155 #define XSTORM_ETH_CONN_AG_CTX_CF11EN_MASK                  0x1 /* cf11en */
156 #define XSTORM_ETH_CONN_AG_CTX_CF11EN_SHIFT                 1
157 #define XSTORM_ETH_CONN_AG_CTX_CF12EN_MASK                  0x1 /* cf12en */
158 #define XSTORM_ETH_CONN_AG_CTX_CF12EN_SHIFT                 2
159 #define XSTORM_ETH_CONN_AG_CTX_CF13EN_MASK                  0x1 /* cf13en */
160 #define XSTORM_ETH_CONN_AG_CTX_CF13EN_SHIFT                 3
161 #define XSTORM_ETH_CONN_AG_CTX_CF14EN_MASK                  0x1 /* cf14en */
162 #define XSTORM_ETH_CONN_AG_CTX_CF14EN_SHIFT                 4
163 #define XSTORM_ETH_CONN_AG_CTX_CF15EN_MASK                  0x1 /* cf15en */
164 #define XSTORM_ETH_CONN_AG_CTX_CF15EN_SHIFT                 5
165 #define XSTORM_ETH_CONN_AG_CTX_GO_TO_BD_CONS_CF_EN_MASK     0x1 /* cf16en */
166 #define XSTORM_ETH_CONN_AG_CTX_GO_TO_BD_CONS_CF_EN_SHIFT    6
167 /* cf_array_cf_en */
168 #define XSTORM_ETH_CONN_AG_CTX_MULTI_UNICAST_CF_EN_MASK     0x1
169 #define XSTORM_ETH_CONN_AG_CTX_MULTI_UNICAST_CF_EN_SHIFT    7
170         u8 flags10;
171 #define XSTORM_ETH_CONN_AG_CTX_DQ_CF_EN_MASK                0x1 /* cf18en */
172 #define XSTORM_ETH_CONN_AG_CTX_DQ_CF_EN_SHIFT               0
173 #define XSTORM_ETH_CONN_AG_CTX_TERMINATE_CF_EN_MASK         0x1 /* cf19en */
174 #define XSTORM_ETH_CONN_AG_CTX_TERMINATE_CF_EN_SHIFT        1
175 #define XSTORM_ETH_CONN_AG_CTX_FLUSH_Q0_EN_MASK             0x1 /* cf20en */
176 #define XSTORM_ETH_CONN_AG_CTX_FLUSH_Q0_EN_SHIFT            2
177 #define XSTORM_ETH_CONN_AG_CTX_RESERVED11_MASK              0x1 /* cf21en */
178 #define XSTORM_ETH_CONN_AG_CTX_RESERVED11_SHIFT             3
179 #define XSTORM_ETH_CONN_AG_CTX_SLOW_PATH_EN_MASK            0x1 /* cf22en */
180 #define XSTORM_ETH_CONN_AG_CTX_SLOW_PATH_EN_SHIFT           4
181 #define XSTORM_ETH_CONN_AG_CTX_TPH_ENABLE_EN_RESERVED_MASK  0x1 /* cf23en */
182 #define XSTORM_ETH_CONN_AG_CTX_TPH_ENABLE_EN_RESERVED_SHIFT 5
183 #define XSTORM_ETH_CONN_AG_CTX_RESERVED12_MASK              0x1 /* rule0en */
184 #define XSTORM_ETH_CONN_AG_CTX_RESERVED12_SHIFT             6
185 #define XSTORM_ETH_CONN_AG_CTX_RESERVED13_MASK              0x1 /* rule1en */
186 #define XSTORM_ETH_CONN_AG_CTX_RESERVED13_SHIFT             7
187         u8 flags11;
188 #define XSTORM_ETH_CONN_AG_CTX_RESERVED14_MASK              0x1 /* rule2en */
189 #define XSTORM_ETH_CONN_AG_CTX_RESERVED14_SHIFT             0
190 #define XSTORM_ETH_CONN_AG_CTX_RESERVED15_MASK              0x1 /* rule3en */
191 #define XSTORM_ETH_CONN_AG_CTX_RESERVED15_SHIFT             1
192 #define XSTORM_ETH_CONN_AG_CTX_TX_DEC_RULE_EN_MASK          0x1 /* rule4en */
193 #define XSTORM_ETH_CONN_AG_CTX_TX_DEC_RULE_EN_SHIFT         2
194 #define XSTORM_ETH_CONN_AG_CTX_RULE5EN_MASK                 0x1 /* rule5en */
195 #define XSTORM_ETH_CONN_AG_CTX_RULE5EN_SHIFT                3
196 #define XSTORM_ETH_CONN_AG_CTX_RULE6EN_MASK                 0x1 /* rule6en */
197 #define XSTORM_ETH_CONN_AG_CTX_RULE6EN_SHIFT                4
198 #define XSTORM_ETH_CONN_AG_CTX_RULE7EN_MASK                 0x1 /* rule7en */
199 #define XSTORM_ETH_CONN_AG_CTX_RULE7EN_SHIFT                5
200 #define XSTORM_ETH_CONN_AG_CTX_A0_RESERVED1_MASK            0x1 /* rule8en */
201 #define XSTORM_ETH_CONN_AG_CTX_A0_RESERVED1_SHIFT           6
202 #define XSTORM_ETH_CONN_AG_CTX_RULE9EN_MASK                 0x1 /* rule9en */
203 #define XSTORM_ETH_CONN_AG_CTX_RULE9EN_SHIFT                7
204         u8 flags12;
205 #define XSTORM_ETH_CONN_AG_CTX_RULE10EN_MASK                0x1 /* rule10en */
206 #define XSTORM_ETH_CONN_AG_CTX_RULE10EN_SHIFT               0
207 #define XSTORM_ETH_CONN_AG_CTX_RULE11EN_MASK                0x1 /* rule11en */
208 #define XSTORM_ETH_CONN_AG_CTX_RULE11EN_SHIFT               1
209 #define XSTORM_ETH_CONN_AG_CTX_A0_RESERVED2_MASK            0x1 /* rule12en */
210 #define XSTORM_ETH_CONN_AG_CTX_A0_RESERVED2_SHIFT           2
211 #define XSTORM_ETH_CONN_AG_CTX_A0_RESERVED3_MASK            0x1 /* rule13en */
212 #define XSTORM_ETH_CONN_AG_CTX_A0_RESERVED3_SHIFT           3
213 #define XSTORM_ETH_CONN_AG_CTX_RULE14EN_MASK                0x1 /* rule14en */
214 #define XSTORM_ETH_CONN_AG_CTX_RULE14EN_SHIFT               4
215 #define XSTORM_ETH_CONN_AG_CTX_RULE15EN_MASK                0x1 /* rule15en */
216 #define XSTORM_ETH_CONN_AG_CTX_RULE15EN_SHIFT               5
217 #define XSTORM_ETH_CONN_AG_CTX_RULE16EN_MASK                0x1 /* rule16en */
218 #define XSTORM_ETH_CONN_AG_CTX_RULE16EN_SHIFT               6
219 #define XSTORM_ETH_CONN_AG_CTX_RULE17EN_MASK                0x1 /* rule17en */
220 #define XSTORM_ETH_CONN_AG_CTX_RULE17EN_SHIFT               7
221         u8 flags13;
222 #define XSTORM_ETH_CONN_AG_CTX_RULE18EN_MASK                0x1 /* rule18en */
223 #define XSTORM_ETH_CONN_AG_CTX_RULE18EN_SHIFT               0
224 #define XSTORM_ETH_CONN_AG_CTX_RULE19EN_MASK                0x1 /* rule19en */
225 #define XSTORM_ETH_CONN_AG_CTX_RULE19EN_SHIFT               1
226 #define XSTORM_ETH_CONN_AG_CTX_A0_RESERVED4_MASK            0x1 /* rule20en */
227 #define XSTORM_ETH_CONN_AG_CTX_A0_RESERVED4_SHIFT           2
228 #define XSTORM_ETH_CONN_AG_CTX_A0_RESERVED5_MASK            0x1 /* rule21en */
229 #define XSTORM_ETH_CONN_AG_CTX_A0_RESERVED5_SHIFT           3
230 #define XSTORM_ETH_CONN_AG_CTX_A0_RESERVED6_MASK            0x1 /* rule22en */
231 #define XSTORM_ETH_CONN_AG_CTX_A0_RESERVED6_SHIFT           4
232 #define XSTORM_ETH_CONN_AG_CTX_A0_RESERVED7_MASK            0x1 /* rule23en */
233 #define XSTORM_ETH_CONN_AG_CTX_A0_RESERVED7_SHIFT           5
234 #define XSTORM_ETH_CONN_AG_CTX_A0_RESERVED8_MASK            0x1 /* rule24en */
235 #define XSTORM_ETH_CONN_AG_CTX_A0_RESERVED8_SHIFT           6
236 #define XSTORM_ETH_CONN_AG_CTX_A0_RESERVED9_MASK            0x1 /* rule25en */
237 #define XSTORM_ETH_CONN_AG_CTX_A0_RESERVED9_SHIFT           7
238         u8 flags14;
239 #define XSTORM_ETH_CONN_AG_CTX_EDPM_USE_EXT_HDR_MASK        0x1 /* bit16 */
240 #define XSTORM_ETH_CONN_AG_CTX_EDPM_USE_EXT_HDR_SHIFT       0
241 #define XSTORM_ETH_CONN_AG_CTX_EDPM_SEND_RAW_L3L4_MASK      0x1 /* bit17 */
242 #define XSTORM_ETH_CONN_AG_CTX_EDPM_SEND_RAW_L3L4_SHIFT     1
243 #define XSTORM_ETH_CONN_AG_CTX_EDPM_INBAND_PROP_HDR_MASK    0x1 /* bit18 */
244 #define XSTORM_ETH_CONN_AG_CTX_EDPM_INBAND_PROP_HDR_SHIFT   2
245 #define XSTORM_ETH_CONN_AG_CTX_EDPM_SEND_EXT_TUNNEL_MASK    0x1 /* bit19 */
246 #define XSTORM_ETH_CONN_AG_CTX_EDPM_SEND_EXT_TUNNEL_SHIFT   3
247 #define XSTORM_ETH_CONN_AG_CTX_L2_EDPM_ENABLE_MASK          0x1 /* bit20 */
248 #define XSTORM_ETH_CONN_AG_CTX_L2_EDPM_ENABLE_SHIFT         4
249 #define XSTORM_ETH_CONN_AG_CTX_ROCE_EDPM_ENABLE_MASK        0x1 /* bit21 */
250 #define XSTORM_ETH_CONN_AG_CTX_ROCE_EDPM_ENABLE_SHIFT       5
251 #define XSTORM_ETH_CONN_AG_CTX_TPH_ENABLE_MASK              0x3 /* cf23 */
252 #define XSTORM_ETH_CONN_AG_CTX_TPH_ENABLE_SHIFT             6
253         u8 edpm_event_id /* byte2 */;
254         __le16 physical_q0 /* physical_q0 */;
255         __le16 e5_reserved1 /* physical_q1 */;
256         __le16 edpm_num_bds /* physical_q2 */;
257         __le16 tx_bd_cons /* word3 */;
258         __le16 tx_bd_prod /* word4 */;
259         __le16 updated_qm_pq_id /* word5 */;
260         __le16 conn_dpi /* conn_dpi */;
261         u8 byte3 /* byte3 */;
262         u8 byte4 /* byte4 */;
263         u8 byte5 /* byte5 */;
264         u8 byte6 /* byte6 */;
265         __le32 reg0 /* reg0 */;
266         __le32 reg1 /* reg1 */;
267         __le32 reg2 /* reg2 */;
268         __le32 reg3 /* reg3 */;
269         __le32 reg4 /* reg4 */;
270         __le32 reg5 /* cf_array0 */;
271         __le32 reg6 /* cf_array1 */;
272         __le16 word7 /* word7 */;
273         __le16 word8 /* word8 */;
274         __le16 word9 /* word9 */;
275         __le16 word10 /* word10 */;
276         __le32 reg7 /* reg7 */;
277         __le32 reg8 /* reg8 */;
278         __le32 reg9 /* reg9 */;
279         u8 byte7 /* byte7 */;
280         u8 byte8 /* byte8 */;
281         u8 byte9 /* byte9 */;
282         u8 byte10 /* byte10 */;
283         u8 byte11 /* byte11 */;
284         u8 byte12 /* byte12 */;
285         u8 byte13 /* byte13 */;
286         u8 byte14 /* byte14 */;
287         u8 byte15 /* byte15 */;
288         u8 e5_reserved /* e5_reserved */;
289         __le16 word11 /* word11 */;
290         __le32 reg10 /* reg10 */;
291         __le32 reg11 /* reg11 */;
292         __le32 reg12 /* reg12 */;
293         __le32 reg13 /* reg13 */;
294         __le32 reg14 /* reg14 */;
295         __le32 reg15 /* reg15 */;
296         __le32 reg16 /* reg16 */;
297         __le32 reg17 /* reg17 */;
298         __le32 reg18 /* reg18 */;
299         __le32 reg19 /* reg19 */;
300         __le16 word12 /* word12 */;
301         __le16 word13 /* word13 */;
302         __le16 word14 /* word14 */;
303         __le16 word15 /* word15 */;
304 };
305
306 /*
307  * The eth storm context for the Ystorm
308  */
309 struct ystorm_eth_conn_st_ctx {
310         __le32 reserved[8];
311 };
312
313 struct ystorm_eth_conn_ag_ctx {
314         u8 byte0 /* cdu_validation */;
315         u8 state /* state */;
316         u8 flags0;
317 #define YSTORM_ETH_CONN_AG_CTX_BIT0_MASK                  0x1 /* exist_in_qm0 */
318 #define YSTORM_ETH_CONN_AG_CTX_BIT0_SHIFT                 0
319 #define YSTORM_ETH_CONN_AG_CTX_BIT1_MASK                  0x1 /* exist_in_qm1 */
320 #define YSTORM_ETH_CONN_AG_CTX_BIT1_SHIFT                 1
321 #define YSTORM_ETH_CONN_AG_CTX_TX_BD_CONS_UPD_CF_MASK     0x3 /* cf0 */
322 #define YSTORM_ETH_CONN_AG_CTX_TX_BD_CONS_UPD_CF_SHIFT    2
323 #define YSTORM_ETH_CONN_AG_CTX_PMD_TERMINATE_CF_MASK      0x3 /* cf1 */
324 #define YSTORM_ETH_CONN_AG_CTX_PMD_TERMINATE_CF_SHIFT     4
325 #define YSTORM_ETH_CONN_AG_CTX_CF2_MASK                   0x3 /* cf2 */
326 #define YSTORM_ETH_CONN_AG_CTX_CF2_SHIFT                  6
327         u8 flags1;
328 #define YSTORM_ETH_CONN_AG_CTX_TX_BD_CONS_UPD_CF_EN_MASK  0x1 /* cf0en */
329 #define YSTORM_ETH_CONN_AG_CTX_TX_BD_CONS_UPD_CF_EN_SHIFT 0
330 #define YSTORM_ETH_CONN_AG_CTX_PMD_TERMINATE_CF_EN_MASK   0x1 /* cf1en */
331 #define YSTORM_ETH_CONN_AG_CTX_PMD_TERMINATE_CF_EN_SHIFT  1
332 #define YSTORM_ETH_CONN_AG_CTX_CF2EN_MASK                 0x1 /* cf2en */
333 #define YSTORM_ETH_CONN_AG_CTX_CF2EN_SHIFT                2
334 #define YSTORM_ETH_CONN_AG_CTX_RULE0EN_MASK               0x1 /* rule0en */
335 #define YSTORM_ETH_CONN_AG_CTX_RULE0EN_SHIFT              3
336 #define YSTORM_ETH_CONN_AG_CTX_RULE1EN_MASK               0x1 /* rule1en */
337 #define YSTORM_ETH_CONN_AG_CTX_RULE1EN_SHIFT              4
338 #define YSTORM_ETH_CONN_AG_CTX_RULE2EN_MASK               0x1 /* rule2en */
339 #define YSTORM_ETH_CONN_AG_CTX_RULE2EN_SHIFT              5
340 #define YSTORM_ETH_CONN_AG_CTX_RULE3EN_MASK               0x1 /* rule3en */
341 #define YSTORM_ETH_CONN_AG_CTX_RULE3EN_SHIFT              6
342 #define YSTORM_ETH_CONN_AG_CTX_RULE4EN_MASK               0x1 /* rule4en */
343 #define YSTORM_ETH_CONN_AG_CTX_RULE4EN_SHIFT              7
344         u8 tx_q0_int_coallecing_timeset /* byte2 */;
345         u8 byte3 /* byte3 */;
346         __le16 word0 /* word0 */;
347         __le32 terminate_spqe /* reg0 */;
348         __le32 reg1 /* reg1 */;
349         __le16 tx_bd_cons_upd /* word1 */;
350         __le16 word2 /* word2 */;
351         __le16 word3 /* word3 */;
352         __le16 word4 /* word4 */;
353         __le32 reg2 /* reg2 */;
354         __le32 reg3 /* reg3 */;
355 };
356
357 struct tstorm_eth_conn_ag_ctx {
358         u8 byte0 /* cdu_validation */;
359         u8 byte1 /* state */;
360         u8 flags0;
361 #define TSTORM_ETH_CONN_AG_CTX_BIT0_MASK      0x1 /* exist_in_qm0 */
362 #define TSTORM_ETH_CONN_AG_CTX_BIT0_SHIFT     0
363 #define TSTORM_ETH_CONN_AG_CTX_BIT1_MASK      0x1 /* exist_in_qm1 */
364 #define TSTORM_ETH_CONN_AG_CTX_BIT1_SHIFT     1
365 #define TSTORM_ETH_CONN_AG_CTX_BIT2_MASK      0x1 /* bit2 */
366 #define TSTORM_ETH_CONN_AG_CTX_BIT2_SHIFT     2
367 #define TSTORM_ETH_CONN_AG_CTX_BIT3_MASK      0x1 /* bit3 */
368 #define TSTORM_ETH_CONN_AG_CTX_BIT3_SHIFT     3
369 #define TSTORM_ETH_CONN_AG_CTX_BIT4_MASK      0x1 /* bit4 */
370 #define TSTORM_ETH_CONN_AG_CTX_BIT4_SHIFT     4
371 #define TSTORM_ETH_CONN_AG_CTX_BIT5_MASK      0x1 /* bit5 */
372 #define TSTORM_ETH_CONN_AG_CTX_BIT5_SHIFT     5
373 #define TSTORM_ETH_CONN_AG_CTX_CF0_MASK       0x3 /* timer0cf */
374 #define TSTORM_ETH_CONN_AG_CTX_CF0_SHIFT      6
375         u8 flags1;
376 #define TSTORM_ETH_CONN_AG_CTX_CF1_MASK       0x3 /* timer1cf */
377 #define TSTORM_ETH_CONN_AG_CTX_CF1_SHIFT      0
378 #define TSTORM_ETH_CONN_AG_CTX_CF2_MASK       0x3 /* timer2cf */
379 #define TSTORM_ETH_CONN_AG_CTX_CF2_SHIFT      2
380 #define TSTORM_ETH_CONN_AG_CTX_CF3_MASK       0x3 /* timer_stop_all */
381 #define TSTORM_ETH_CONN_AG_CTX_CF3_SHIFT      4
382 #define TSTORM_ETH_CONN_AG_CTX_CF4_MASK       0x3 /* cf4 */
383 #define TSTORM_ETH_CONN_AG_CTX_CF4_SHIFT      6
384         u8 flags2;
385 #define TSTORM_ETH_CONN_AG_CTX_CF5_MASK       0x3 /* cf5 */
386 #define TSTORM_ETH_CONN_AG_CTX_CF5_SHIFT      0
387 #define TSTORM_ETH_CONN_AG_CTX_CF6_MASK       0x3 /* cf6 */
388 #define TSTORM_ETH_CONN_AG_CTX_CF6_SHIFT      2
389 #define TSTORM_ETH_CONN_AG_CTX_CF7_MASK       0x3 /* cf7 */
390 #define TSTORM_ETH_CONN_AG_CTX_CF7_SHIFT      4
391 #define TSTORM_ETH_CONN_AG_CTX_CF8_MASK       0x3 /* cf8 */
392 #define TSTORM_ETH_CONN_AG_CTX_CF8_SHIFT      6
393         u8 flags3;
394 #define TSTORM_ETH_CONN_AG_CTX_CF9_MASK       0x3 /* cf9 */
395 #define TSTORM_ETH_CONN_AG_CTX_CF9_SHIFT      0
396 #define TSTORM_ETH_CONN_AG_CTX_CF10_MASK      0x3 /* cf10 */
397 #define TSTORM_ETH_CONN_AG_CTX_CF10_SHIFT     2
398 #define TSTORM_ETH_CONN_AG_CTX_CF0EN_MASK     0x1 /* cf0en */
399 #define TSTORM_ETH_CONN_AG_CTX_CF0EN_SHIFT    4
400 #define TSTORM_ETH_CONN_AG_CTX_CF1EN_MASK     0x1 /* cf1en */
401 #define TSTORM_ETH_CONN_AG_CTX_CF1EN_SHIFT    5
402 #define TSTORM_ETH_CONN_AG_CTX_CF2EN_MASK     0x1 /* cf2en */
403 #define TSTORM_ETH_CONN_AG_CTX_CF2EN_SHIFT    6
404 #define TSTORM_ETH_CONN_AG_CTX_CF3EN_MASK     0x1 /* cf3en */
405 #define TSTORM_ETH_CONN_AG_CTX_CF3EN_SHIFT    7
406         u8 flags4;
407 #define TSTORM_ETH_CONN_AG_CTX_CF4EN_MASK     0x1 /* cf4en */
408 #define TSTORM_ETH_CONN_AG_CTX_CF4EN_SHIFT    0
409 #define TSTORM_ETH_CONN_AG_CTX_CF5EN_MASK     0x1 /* cf5en */
410 #define TSTORM_ETH_CONN_AG_CTX_CF5EN_SHIFT    1
411 #define TSTORM_ETH_CONN_AG_CTX_CF6EN_MASK     0x1 /* cf6en */
412 #define TSTORM_ETH_CONN_AG_CTX_CF6EN_SHIFT    2
413 #define TSTORM_ETH_CONN_AG_CTX_CF7EN_MASK     0x1 /* cf7en */
414 #define TSTORM_ETH_CONN_AG_CTX_CF7EN_SHIFT    3
415 #define TSTORM_ETH_CONN_AG_CTX_CF8EN_MASK     0x1 /* cf8en */
416 #define TSTORM_ETH_CONN_AG_CTX_CF8EN_SHIFT    4
417 #define TSTORM_ETH_CONN_AG_CTX_CF9EN_MASK     0x1 /* cf9en */
418 #define TSTORM_ETH_CONN_AG_CTX_CF9EN_SHIFT    5
419 #define TSTORM_ETH_CONN_AG_CTX_CF10EN_MASK    0x1 /* cf10en */
420 #define TSTORM_ETH_CONN_AG_CTX_CF10EN_SHIFT   6
421 #define TSTORM_ETH_CONN_AG_CTX_RULE0EN_MASK   0x1 /* rule0en */
422 #define TSTORM_ETH_CONN_AG_CTX_RULE0EN_SHIFT  7
423         u8 flags5;
424 #define TSTORM_ETH_CONN_AG_CTX_RULE1EN_MASK   0x1 /* rule1en */
425 #define TSTORM_ETH_CONN_AG_CTX_RULE1EN_SHIFT  0
426 #define TSTORM_ETH_CONN_AG_CTX_RULE2EN_MASK   0x1 /* rule2en */
427 #define TSTORM_ETH_CONN_AG_CTX_RULE2EN_SHIFT  1
428 #define TSTORM_ETH_CONN_AG_CTX_RULE3EN_MASK   0x1 /* rule3en */
429 #define TSTORM_ETH_CONN_AG_CTX_RULE3EN_SHIFT  2
430 #define TSTORM_ETH_CONN_AG_CTX_RULE4EN_MASK   0x1 /* rule4en */
431 #define TSTORM_ETH_CONN_AG_CTX_RULE4EN_SHIFT  3
432 #define TSTORM_ETH_CONN_AG_CTX_RULE5EN_MASK   0x1 /* rule5en */
433 #define TSTORM_ETH_CONN_AG_CTX_RULE5EN_SHIFT  4
434 #define TSTORM_ETH_CONN_AG_CTX_RX_BD_EN_MASK  0x1 /* rule6en */
435 #define TSTORM_ETH_CONN_AG_CTX_RX_BD_EN_SHIFT 5
436 #define TSTORM_ETH_CONN_AG_CTX_RULE7EN_MASK   0x1 /* rule7en */
437 #define TSTORM_ETH_CONN_AG_CTX_RULE7EN_SHIFT  6
438 #define TSTORM_ETH_CONN_AG_CTX_RULE8EN_MASK   0x1 /* rule8en */
439 #define TSTORM_ETH_CONN_AG_CTX_RULE8EN_SHIFT  7
440         __le32 reg0 /* reg0 */;
441         __le32 reg1 /* reg1 */;
442         __le32 reg2 /* reg2 */;
443         __le32 reg3 /* reg3 */;
444         __le32 reg4 /* reg4 */;
445         __le32 reg5 /* reg5 */;
446         __le32 reg6 /* reg6 */;
447         __le32 reg7 /* reg7 */;
448         __le32 reg8 /* reg8 */;
449         u8 byte2 /* byte2 */;
450         u8 byte3 /* byte3 */;
451         __le16 rx_bd_cons /* word0 */;
452         u8 byte4 /* byte4 */;
453         u8 byte5 /* byte5 */;
454         __le16 rx_bd_prod /* word1 */;
455         __le16 word2 /* conn_dpi */;
456         __le16 word3 /* word3 */;
457         __le32 reg9 /* reg9 */;
458         __le32 reg10 /* reg10 */;
459 };
460
461 struct ustorm_eth_conn_ag_ctx {
462         u8 byte0 /* cdu_validation */;
463         u8 byte1 /* state */;
464         u8 flags0;
465 /* exist_in_qm0 */
466 #define USTORM_ETH_CONN_AG_CTX_BIT0_MASK                    0x1
467 #define USTORM_ETH_CONN_AG_CTX_BIT0_SHIFT                   0
468 /* exist_in_qm1 */
469 #define USTORM_ETH_CONN_AG_CTX_BIT1_MASK                    0x1
470 #define USTORM_ETH_CONN_AG_CTX_BIT1_SHIFT                   1
471 #define USTORM_ETH_CONN_AG_CTX_TX_PMD_TERMINATE_CF_MASK     0x3 /* timer0cf */
472 #define USTORM_ETH_CONN_AG_CTX_TX_PMD_TERMINATE_CF_SHIFT    2
473 #define USTORM_ETH_CONN_AG_CTX_RX_PMD_TERMINATE_CF_MASK     0x3 /* timer1cf */
474 #define USTORM_ETH_CONN_AG_CTX_RX_PMD_TERMINATE_CF_SHIFT    4
475 #define USTORM_ETH_CONN_AG_CTX_CF2_MASK                     0x3 /* timer2cf */
476 #define USTORM_ETH_CONN_AG_CTX_CF2_SHIFT                    6
477         u8 flags1;
478 /* timer_stop_all */
479 #define USTORM_ETH_CONN_AG_CTX_CF3_MASK                     0x3
480 #define USTORM_ETH_CONN_AG_CTX_CF3_SHIFT                    0
481 #define USTORM_ETH_CONN_AG_CTX_TX_ARM_CF_MASK               0x3 /* cf4 */
482 #define USTORM_ETH_CONN_AG_CTX_TX_ARM_CF_SHIFT              2
483 #define USTORM_ETH_CONN_AG_CTX_RX_ARM_CF_MASK               0x3 /* cf5 */
484 #define USTORM_ETH_CONN_AG_CTX_RX_ARM_CF_SHIFT              4
485 #define USTORM_ETH_CONN_AG_CTX_TX_BD_CONS_UPD_CF_MASK       0x3 /* cf6 */
486 #define USTORM_ETH_CONN_AG_CTX_TX_BD_CONS_UPD_CF_SHIFT      6
487         u8 flags2;
488 #define USTORM_ETH_CONN_AG_CTX_TX_PMD_TERMINATE_CF_EN_MASK  0x1 /* cf0en */
489 #define USTORM_ETH_CONN_AG_CTX_TX_PMD_TERMINATE_CF_EN_SHIFT 0
490 #define USTORM_ETH_CONN_AG_CTX_RX_PMD_TERMINATE_CF_EN_MASK  0x1 /* cf1en */
491 #define USTORM_ETH_CONN_AG_CTX_RX_PMD_TERMINATE_CF_EN_SHIFT 1
492 #define USTORM_ETH_CONN_AG_CTX_CF2EN_MASK                   0x1 /* cf2en */
493 #define USTORM_ETH_CONN_AG_CTX_CF2EN_SHIFT                  2
494 #define USTORM_ETH_CONN_AG_CTX_CF3EN_MASK                   0x1 /* cf3en */
495 #define USTORM_ETH_CONN_AG_CTX_CF3EN_SHIFT                  3
496 #define USTORM_ETH_CONN_AG_CTX_TX_ARM_CF_EN_MASK            0x1 /* cf4en */
497 #define USTORM_ETH_CONN_AG_CTX_TX_ARM_CF_EN_SHIFT           4
498 #define USTORM_ETH_CONN_AG_CTX_RX_ARM_CF_EN_MASK            0x1 /* cf5en */
499 #define USTORM_ETH_CONN_AG_CTX_RX_ARM_CF_EN_SHIFT           5
500 #define USTORM_ETH_CONN_AG_CTX_TX_BD_CONS_UPD_CF_EN_MASK    0x1 /* cf6en */
501 #define USTORM_ETH_CONN_AG_CTX_TX_BD_CONS_UPD_CF_EN_SHIFT   6
502 #define USTORM_ETH_CONN_AG_CTX_RULE0EN_MASK                 0x1 /* rule0en */
503 #define USTORM_ETH_CONN_AG_CTX_RULE0EN_SHIFT                7
504         u8 flags3;
505 #define USTORM_ETH_CONN_AG_CTX_RULE1EN_MASK                 0x1 /* rule1en */
506 #define USTORM_ETH_CONN_AG_CTX_RULE1EN_SHIFT                0
507 #define USTORM_ETH_CONN_AG_CTX_RULE2EN_MASK                 0x1 /* rule2en */
508 #define USTORM_ETH_CONN_AG_CTX_RULE2EN_SHIFT                1
509 #define USTORM_ETH_CONN_AG_CTX_RULE3EN_MASK                 0x1 /* rule3en */
510 #define USTORM_ETH_CONN_AG_CTX_RULE3EN_SHIFT                2
511 #define USTORM_ETH_CONN_AG_CTX_RULE4EN_MASK                 0x1 /* rule4en */
512 #define USTORM_ETH_CONN_AG_CTX_RULE4EN_SHIFT                3
513 #define USTORM_ETH_CONN_AG_CTX_RULE5EN_MASK                 0x1 /* rule5en */
514 #define USTORM_ETH_CONN_AG_CTX_RULE5EN_SHIFT                4
515 #define USTORM_ETH_CONN_AG_CTX_RULE6EN_MASK                 0x1 /* rule6en */
516 #define USTORM_ETH_CONN_AG_CTX_RULE6EN_SHIFT                5
517 #define USTORM_ETH_CONN_AG_CTX_RULE7EN_MASK                 0x1 /* rule7en */
518 #define USTORM_ETH_CONN_AG_CTX_RULE7EN_SHIFT                6
519 #define USTORM_ETH_CONN_AG_CTX_RULE8EN_MASK                 0x1 /* rule8en */
520 #define USTORM_ETH_CONN_AG_CTX_RULE8EN_SHIFT                7
521         u8 byte2 /* byte2 */;
522         u8 byte3 /* byte3 */;
523         __le16 word0 /* conn_dpi */;
524         __le16 tx_bd_cons /* word1 */;
525         __le32 reg0 /* reg0 */;
526         __le32 reg1 /* reg1 */;
527         __le32 reg2 /* reg2 */;
528         __le32 tx_int_coallecing_timeset /* reg3 */;
529         __le16 tx_drv_bd_cons /* word2 */;
530         __le16 rx_drv_cqe_cons /* word3 */;
531 };
532
533 /*
534  * The eth storm context for the Ustorm
535  */
536 struct ustorm_eth_conn_st_ctx {
537         __le32 reserved[40];
538 };
539
540 /*
541  * The eth storm context for the Mstorm
542  */
543 struct mstorm_eth_conn_st_ctx {
544         __le32 reserved[8];
545 };
546
547 /*
548  * eth connection context
549  */
550 struct eth_conn_context {
551 /* tstorm storm context */
552         struct tstorm_eth_conn_st_ctx tstorm_st_context;
553         struct regpair tstorm_st_padding[2] /* padding */;
554 /* pstorm storm context */
555         struct pstorm_eth_conn_st_ctx pstorm_st_context;
556 /* xstorm storm context */
557         struct xstorm_eth_conn_st_ctx xstorm_st_context;
558 /* xstorm aggregative context */
559         struct xstorm_eth_conn_ag_ctx xstorm_ag_context;
560 /* ystorm storm context */
561         struct ystorm_eth_conn_st_ctx ystorm_st_context;
562 /* ystorm aggregative context */
563         struct ystorm_eth_conn_ag_ctx ystorm_ag_context;
564 /* tstorm aggregative context */
565         struct tstorm_eth_conn_ag_ctx tstorm_ag_context;
566 /* ustorm aggregative context */
567         struct ustorm_eth_conn_ag_ctx ustorm_ag_context;
568 /* ustorm storm context */
569         struct ustorm_eth_conn_st_ctx ustorm_st_context;
570 /* mstorm storm context */
571         struct mstorm_eth_conn_st_ctx mstorm_st_context;
572 };
573
574
575 /*
576  * Ethernet filter types: mac/vlan/pair
577  */
578 enum eth_error_code {
579         ETH_OK = 0x00 /* command succeeded */,
580 /* mac add filters command failed due to cam full state */
581         ETH_FILTERS_MAC_ADD_FAIL_FULL,
582 /* mac add filters command failed due to mtt2 full state */
583         ETH_FILTERS_MAC_ADD_FAIL_FULL_MTT2,
584 /* mac add filters command failed due to duplicate mac address */
585         ETH_FILTERS_MAC_ADD_FAIL_DUP_MTT2,
586 /* mac add filters command failed due to duplicate mac address */
587         ETH_FILTERS_MAC_ADD_FAIL_DUP_STT2,
588 /* mac delete filters command failed due to not found state */
589         ETH_FILTERS_MAC_DEL_FAIL_NOF,
590 /* mac delete filters command failed due to not found state */
591         ETH_FILTERS_MAC_DEL_FAIL_NOF_MTT2,
592 /* mac delete filters command failed due to not found state */
593         ETH_FILTERS_MAC_DEL_FAIL_NOF_STT2,
594 /* mac add filters command failed due to MAC Address of 00:00:00:00:00:00 */
595         ETH_FILTERS_MAC_ADD_FAIL_ZERO_MAC,
596 /* vlan add filters command failed due to cam full state */
597         ETH_FILTERS_VLAN_ADD_FAIL_FULL,
598 /* vlan add filters command failed due to duplicate VLAN filter */
599         ETH_FILTERS_VLAN_ADD_FAIL_DUP,
600 /* vlan delete filters command failed due to not found state */
601         ETH_FILTERS_VLAN_DEL_FAIL_NOF,
602 /* vlan delete filters command failed due to not found state */
603         ETH_FILTERS_VLAN_DEL_FAIL_NOF_TT1,
604 /* pair add filters command failed due to duplicate request */
605         ETH_FILTERS_PAIR_ADD_FAIL_DUP,
606 /* pair add filters command failed due to full state */
607         ETH_FILTERS_PAIR_ADD_FAIL_FULL,
608 /* pair add filters command failed due to full state */
609         ETH_FILTERS_PAIR_ADD_FAIL_FULL_MAC,
610 /* pair add filters command failed due not found state */
611         ETH_FILTERS_PAIR_DEL_FAIL_NOF,
612 /* pair add filters command failed due not found state */
613         ETH_FILTERS_PAIR_DEL_FAIL_NOF_TT1,
614 /* pair add filters command failed due to MAC Address of 00:00:00:00:00:00 */
615         ETH_FILTERS_PAIR_ADD_FAIL_ZERO_MAC,
616 /* vni add filters command failed due to cam full state */
617         ETH_FILTERS_VNI_ADD_FAIL_FULL,
618 /* vni add filters command failed due to duplicate VNI filter */
619         ETH_FILTERS_VNI_ADD_FAIL_DUP,
620         ETH_FILTERS_GFT_UPDATE_FAIL /* Fail update GFT filter. */,
621         MAX_ETH_ERROR_CODE
622 };
623
624
625 /*
626  * opcodes for the event ring
627  */
628 enum eth_event_opcode {
629         ETH_EVENT_UNUSED,
630         ETH_EVENT_VPORT_START,
631         ETH_EVENT_VPORT_UPDATE,
632         ETH_EVENT_VPORT_STOP,
633         ETH_EVENT_TX_QUEUE_START,
634         ETH_EVENT_TX_QUEUE_STOP,
635         ETH_EVENT_RX_QUEUE_START,
636         ETH_EVENT_RX_QUEUE_UPDATE,
637         ETH_EVENT_RX_QUEUE_STOP,
638         ETH_EVENT_FILTERS_UPDATE,
639         ETH_EVENT_RX_ADD_OPENFLOW_FILTER,
640         ETH_EVENT_RX_DELETE_OPENFLOW_FILTER,
641         ETH_EVENT_RX_CREATE_OPENFLOW_ACTION,
642         ETH_EVENT_RX_ADD_UDP_FILTER,
643         ETH_EVENT_RX_DELETE_UDP_FILTER,
644         ETH_EVENT_RX_CREATE_GFT_ACTION,
645         ETH_EVENT_RX_GFT_UPDATE_FILTER,
646         ETH_EVENT_TX_QUEUE_UPDATE,
647         MAX_ETH_EVENT_OPCODE
648 };
649
650
651 /*
652  * Classify rule types in E2/E3
653  */
654 enum eth_filter_action {
655         ETH_FILTER_ACTION_UNUSED,
656         ETH_FILTER_ACTION_REMOVE,
657         ETH_FILTER_ACTION_ADD,
658 /* Remove all filters of given type and vport ID. */
659         ETH_FILTER_ACTION_REMOVE_ALL,
660         MAX_ETH_FILTER_ACTION
661 };
662
663
664 /*
665  * Command for adding/removing a classification rule $$KEEP_ENDIANNESS$$
666  */
667 struct eth_filter_cmd {
668         u8 type /* Filter Type (MAC/VLAN/Pair/VNI) */;
669         u8 vport_id /* the vport id */;
670         u8 action /* filter command action: add/remove/replace */;
671         u8 reserved0;
672         __le32 vni;
673         __le16 mac_lsb;
674         __le16 mac_mid;
675         __le16 mac_msb;
676         __le16 vlan_id;
677 };
678
679
680 /*
681  *  $$KEEP_ENDIANNESS$$
682  */
683 struct eth_filter_cmd_header {
684         u8 rx /* If set, apply these commands to the RX path */;
685         u8 tx /* If set, apply these commands to the TX path */;
686         u8 cmd_cnt /* Number of filter commands */;
687 /* 0 - dont assert in case of filter configuration error. Just return an error
688  * code. 1 - assert in case of filter configuration error.
689  */
690         u8 assert_on_error;
691         u8 reserved1[4];
692 };
693
694
695 /*
696  * Ethernet filter types: mac/vlan/pair
697  */
698 enum eth_filter_type {
699         ETH_FILTER_TYPE_UNUSED,
700         ETH_FILTER_TYPE_MAC /* Add/remove a MAC address */,
701         ETH_FILTER_TYPE_VLAN /* Add/remove a VLAN */,
702         ETH_FILTER_TYPE_PAIR /* Add/remove a MAC-VLAN pair */,
703         ETH_FILTER_TYPE_INNER_MAC /* Add/remove a inner MAC address */,
704         ETH_FILTER_TYPE_INNER_VLAN /* Add/remove a inner VLAN */,
705         ETH_FILTER_TYPE_INNER_PAIR /* Add/remove a inner MAC-VLAN pair */,
706 /* Add/remove a inner MAC-VNI pair */
707         ETH_FILTER_TYPE_INNER_MAC_VNI_PAIR,
708         ETH_FILTER_TYPE_MAC_VNI_PAIR /* Add/remove a MAC-VNI pair */,
709         ETH_FILTER_TYPE_VNI /* Add/remove a VNI */,
710         MAX_ETH_FILTER_TYPE
711 };
712
713
714 /*
715  * inner to inner vlan priority translation configurations
716  */
717 struct eth_in_to_in_pri_map_cfg {
718 /* If set, non_rdma_in_to_in_pri_map or rdma_in_to_in_pri_map will be used for
719  * inner to inner priority mapping depending on protocol type
720  */
721         u8 inner_vlan_pri_remap_en;
722         u8 reserved[7];
723 /* Map for inner to inner vlan priority translation for Non RDMA protocols, used
724  * for TenantDcb. Set inner_vlan_pri_remap_en, when init the map.
725  */
726         u8 non_rdma_in_to_in_pri_map[8];
727 /* Map for inner to inner vlan priority translation for RDMA protocols, used for
728  * TenantDcb. Set inner_vlan_pri_remap_en, when init the map.
729  */
730         u8 rdma_in_to_in_pri_map[8];
731 };
732
733
734 /*
735  * eth IPv4 Fragment Type
736  */
737 enum eth_ipv4_frag_type {
738         ETH_IPV4_NOT_FRAG /* IPV4 Packet Not Fragmented */,
739 /* First Fragment of IPv4 Packet (contains headers) */
740         ETH_IPV4_FIRST_FRAG,
741 /* Non-First Fragment of IPv4 Packet (does not contain headers) */
742         ETH_IPV4_NON_FIRST_FRAG,
743         MAX_ETH_IPV4_FRAG_TYPE
744 };
745
746
747 /*
748  * eth IPv4 Fragment Type
749  */
750 enum eth_ip_type {
751         ETH_IPV4 /* IPv4 */,
752         ETH_IPV6 /* IPv6 */,
753         MAX_ETH_IP_TYPE
754 };
755
756
757 /*
758  * Ethernet Ramrod Command IDs
759  */
760 enum eth_ramrod_cmd_id {
761         ETH_RAMROD_UNUSED,
762         ETH_RAMROD_VPORT_START /* VPort Start Ramrod */,
763         ETH_RAMROD_VPORT_UPDATE /* VPort Update Ramrod */,
764         ETH_RAMROD_VPORT_STOP /* VPort Stop Ramrod */,
765         ETH_RAMROD_RX_QUEUE_START /* RX Queue Start Ramrod */,
766         ETH_RAMROD_RX_QUEUE_STOP /* RX Queue Stop Ramrod */,
767         ETH_RAMROD_TX_QUEUE_START /* TX Queue Start Ramrod */,
768         ETH_RAMROD_TX_QUEUE_STOP /* TX Queue Stop Ramrod */,
769         ETH_RAMROD_FILTERS_UPDATE /* Add or Remove Mac/Vlan/Pair filters */,
770         ETH_RAMROD_RX_QUEUE_UPDATE /* RX Queue Update Ramrod */,
771 /* RX - Create an Openflow Action */
772         ETH_RAMROD_RX_CREATE_OPENFLOW_ACTION,
773 /* RX - Add an Openflow Filter to the Searcher */
774         ETH_RAMROD_RX_ADD_OPENFLOW_FILTER,
775 /* RX - Delete an Openflow Filter to the Searcher */
776         ETH_RAMROD_RX_DELETE_OPENFLOW_FILTER,
777 /* RX - Add a UDP Filter to the Searcher */
778         ETH_RAMROD_RX_ADD_UDP_FILTER,
779 /* RX - Delete a UDP Filter to the Searcher */
780         ETH_RAMROD_RX_DELETE_UDP_FILTER,
781         ETH_RAMROD_RX_CREATE_GFT_ACTION /* RX - Create a Gft Action */,
782 /* RX - Add/Delete a GFT Filter to the Searcher */
783         ETH_RAMROD_GFT_UPDATE_FILTER,
784         ETH_RAMROD_TX_QUEUE_UPDATE /* TX Queue Update Ramrod */,
785         MAX_ETH_RAMROD_CMD_ID
786 };
787
788
789 /*
790  * return code from eth sp ramrods
791  */
792 struct eth_return_code {
793         u8 value;
794 /* error code (use enum eth_error_code) */
795 #define ETH_RETURN_CODE_ERR_CODE_MASK  0x1F
796 #define ETH_RETURN_CODE_ERR_CODE_SHIFT 0
797 #define ETH_RETURN_CODE_RESERVED_MASK  0x3
798 #define ETH_RETURN_CODE_RESERVED_SHIFT 5
799 /* rx path - 0, tx path - 1 */
800 #define ETH_RETURN_CODE_RX_TX_MASK     0x1
801 #define ETH_RETURN_CODE_RX_TX_SHIFT    7
802 };
803
804
805 /*
806  * What to do in case an error occurs
807  */
808 enum eth_tx_err {
809         ETH_TX_ERR_DROP /* Drop erroneous packet. */,
810 /* Assert an interrupt for PF, declare as malicious for VF */
811         ETH_TX_ERR_ASSERT_MALICIOUS,
812         MAX_ETH_TX_ERR
813 };
814
815
816 /*
817  * Array of the different error type behaviors
818  */
819 struct eth_tx_err_vals {
820         __le16 values;
821 /* Wrong VLAN insertion mode (use enum eth_tx_err) */
822 #define ETH_TX_ERR_VALS_ILLEGAL_VLAN_MODE_MASK            0x1
823 #define ETH_TX_ERR_VALS_ILLEGAL_VLAN_MODE_SHIFT           0
824 /* Packet is below minimal size (use enum eth_tx_err) */
825 #define ETH_TX_ERR_VALS_PACKET_TOO_SMALL_MASK             0x1
826 #define ETH_TX_ERR_VALS_PACKET_TOO_SMALL_SHIFT            1
827 /* Vport has sent spoofed packet (use enum eth_tx_err) */
828 #define ETH_TX_ERR_VALS_ANTI_SPOOFING_ERR_MASK            0x1
829 #define ETH_TX_ERR_VALS_ANTI_SPOOFING_ERR_SHIFT           2
830 /* Packet with illegal type of inband tag (use enum eth_tx_err) */
831 #define ETH_TX_ERR_VALS_ILLEGAL_INBAND_TAGS_MASK          0x1
832 #define ETH_TX_ERR_VALS_ILLEGAL_INBAND_TAGS_SHIFT         3
833 /* Packet marked for VLAN insertion when inband tag is present
834  * (use enum eth_tx_err)
835  */
836 #define ETH_TX_ERR_VALS_VLAN_INSERTION_W_INBAND_TAG_MASK  0x1
837 #define ETH_TX_ERR_VALS_VLAN_INSERTION_W_INBAND_TAG_SHIFT 4
838 /* Non LSO packet larger than MTU (use enum eth_tx_err) */
839 #define ETH_TX_ERR_VALS_MTU_VIOLATION_MASK                0x1
840 #define ETH_TX_ERR_VALS_MTU_VIOLATION_SHIFT               5
841 /* VF/PF has sent LLDP/PFC or any other type of control packet which is not
842  * allowed to (use enum eth_tx_err)
843  */
844 #define ETH_TX_ERR_VALS_ILLEGAL_CONTROL_FRAME_MASK        0x1
845 #define ETH_TX_ERR_VALS_ILLEGAL_CONTROL_FRAME_SHIFT       6
846 #define ETH_TX_ERR_VALS_RESERVED_MASK                     0x1FF
847 #define ETH_TX_ERR_VALS_RESERVED_SHIFT                    7
848 };
849
850
851 /*
852  * vport rss configuration data
853  */
854 struct eth_vport_rss_config {
855         __le16 capabilities;
856 /* configuration of the IpV4 2-tuple capability */
857 #define ETH_VPORT_RSS_CONFIG_IPV4_CAPABILITY_MASK        0x1
858 #define ETH_VPORT_RSS_CONFIG_IPV4_CAPABILITY_SHIFT       0
859 /* configuration of the IpV6 2-tuple capability */
860 #define ETH_VPORT_RSS_CONFIG_IPV6_CAPABILITY_MASK        0x1
861 #define ETH_VPORT_RSS_CONFIG_IPV6_CAPABILITY_SHIFT       1
862 /* configuration of the IpV4 4-tuple capability for TCP */
863 #define ETH_VPORT_RSS_CONFIG_IPV4_TCP_CAPABILITY_MASK    0x1
864 #define ETH_VPORT_RSS_CONFIG_IPV4_TCP_CAPABILITY_SHIFT   2
865 /* configuration of the IpV6 4-tuple capability for TCP */
866 #define ETH_VPORT_RSS_CONFIG_IPV6_TCP_CAPABILITY_MASK    0x1
867 #define ETH_VPORT_RSS_CONFIG_IPV6_TCP_CAPABILITY_SHIFT   3
868 /* configuration of the IpV4 4-tuple capability for UDP */
869 #define ETH_VPORT_RSS_CONFIG_IPV4_UDP_CAPABILITY_MASK    0x1
870 #define ETH_VPORT_RSS_CONFIG_IPV4_UDP_CAPABILITY_SHIFT   4
871 /* configuration of the IpV6 4-tuple capability for UDP */
872 #define ETH_VPORT_RSS_CONFIG_IPV6_UDP_CAPABILITY_MASK    0x1
873 #define ETH_VPORT_RSS_CONFIG_IPV6_UDP_CAPABILITY_SHIFT   5
874 /* configuration of the 5-tuple capability */
875 #define ETH_VPORT_RSS_CONFIG_EN_5_TUPLE_CAPABILITY_MASK  0x1
876 #define ETH_VPORT_RSS_CONFIG_EN_5_TUPLE_CAPABILITY_SHIFT 6
877 /* if set update the rss keys */
878 #define ETH_VPORT_RSS_CONFIG_RESERVED0_MASK              0x1FF
879 #define ETH_VPORT_RSS_CONFIG_RESERVED0_SHIFT             7
880 /* The RSS engine ID. Must be allocated to each vport with RSS enabled.
881  * Total number of RSS engines is ETH_RSS_ENGINE_NUM_ , according to chip type.
882  */
883         u8 rss_id;
884         u8 rss_mode /* The RSS mode for this function */;
885         u8 update_rss_key /* if set update the rss key */;
886 /* if set update the indirection table values */
887         u8 update_rss_ind_table;
888 /* if set update the capabilities and indirection table size. */
889         u8 update_rss_capabilities;
890         u8 tbl_size /* rss mask (Tbl size) */;
891         __le32 reserved2[2];
892 /* RSS indirection table */
893         __le16 indirection_table[ETH_RSS_IND_TABLE_ENTRIES_NUM];
894 /* RSS key supplied to us by OS */
895         __le32 rss_key[ETH_RSS_KEY_SIZE_REGS];
896         __le32 reserved3[2];
897 };
898
899
900 /*
901  * eth vport RSS mode
902  */
903 enum eth_vport_rss_mode {
904         ETH_VPORT_RSS_MODE_DISABLED /* RSS Disabled */,
905         ETH_VPORT_RSS_MODE_REGULAR /* Regular (ndis-like) RSS */,
906         MAX_ETH_VPORT_RSS_MODE
907 };
908
909
910 /*
911  * Command for setting classification flags for a vport $$KEEP_ENDIANNESS$$
912  */
913 struct eth_vport_rx_mode {
914         __le16 state;
915 /* drop all unicast packets */
916 #define ETH_VPORT_RX_MODE_UCAST_DROP_ALL_MASK          0x1
917 #define ETH_VPORT_RX_MODE_UCAST_DROP_ALL_SHIFT         0
918 /* accept all unicast packets (subject to vlan) */
919 #define ETH_VPORT_RX_MODE_UCAST_ACCEPT_ALL_MASK        0x1
920 #define ETH_VPORT_RX_MODE_UCAST_ACCEPT_ALL_SHIFT       1
921 /* accept all unmatched unicast packets */
922 #define ETH_VPORT_RX_MODE_UCAST_ACCEPT_UNMATCHED_MASK  0x1
923 #define ETH_VPORT_RX_MODE_UCAST_ACCEPT_UNMATCHED_SHIFT 2
924 /* drop all multicast packets */
925 #define ETH_VPORT_RX_MODE_MCAST_DROP_ALL_MASK          0x1
926 #define ETH_VPORT_RX_MODE_MCAST_DROP_ALL_SHIFT         3
927 /* accept all multicast packets (subject to vlan) */
928 #define ETH_VPORT_RX_MODE_MCAST_ACCEPT_ALL_MASK        0x1
929 #define ETH_VPORT_RX_MODE_MCAST_ACCEPT_ALL_SHIFT       4
930 /* accept all broadcast packets (subject to vlan) */
931 #define ETH_VPORT_RX_MODE_BCAST_ACCEPT_ALL_MASK        0x1
932 #define ETH_VPORT_RX_MODE_BCAST_ACCEPT_ALL_SHIFT       5
933 /* accept any VNI in tunnel VNI classification. Used for default queue. */
934 #define ETH_VPORT_RX_MODE_ACCEPT_ANY_VNI_MASK          0x1
935 #define ETH_VPORT_RX_MODE_ACCEPT_ANY_VNI_SHIFT         6
936 #define ETH_VPORT_RX_MODE_RESERVED1_MASK               0x1FF
937 #define ETH_VPORT_RX_MODE_RESERVED1_SHIFT              7
938 };
939
940
941 /*
942  * Command for setting tpa parameters
943  */
944 struct eth_vport_tpa_param {
945         u8 tpa_ipv4_en_flg /* Enable TPA for IPv4 packets */;
946         u8 tpa_ipv6_en_flg /* Enable TPA for IPv6 packets */;
947         u8 tpa_ipv4_tunn_en_flg /* Enable TPA for IPv4 over tunnel */;
948         u8 tpa_ipv6_tunn_en_flg /* Enable TPA for IPv6 over tunnel */;
949 /* If set, start each TPA segment on new BD (GRO mode). One BD per segment
950  * allowed.
951  */
952         u8 tpa_pkt_split_flg;
953 /* If set, put header of first TPA segment on first BD and data on second BD. */
954         u8 tpa_hdr_data_split_flg;
955 /* If set, GRO data consistent will checked for TPA continue */
956         u8 tpa_gro_consistent_flg;
957 /* maximum number of opened aggregations per v-port  */
958         u8 tpa_max_aggs_num;
959         __le16 tpa_max_size /* maximal size for the aggregated TPA packets */;
960 /* minimum TCP payload size for a packet to start aggregation */
961         __le16 tpa_min_size_to_start;
962 /* minimum TCP payload size for a packet to continue aggregation */
963         __le16 tpa_min_size_to_cont;
964 /* maximal number of buffers that can be used for one aggregation */
965         u8 max_buff_num;
966         u8 reserved;
967 };
968
969
970 /*
971  * Command for setting classification flags for a vport $$KEEP_ENDIANNESS$$
972  */
973 struct eth_vport_tx_mode {
974         __le16 state;
975 /* drop all unicast packets */
976 #define ETH_VPORT_TX_MODE_UCAST_DROP_ALL_MASK    0x1
977 #define ETH_VPORT_TX_MODE_UCAST_DROP_ALL_SHIFT   0
978 /* accept all unicast packets (subject to vlan) */
979 #define ETH_VPORT_TX_MODE_UCAST_ACCEPT_ALL_MASK  0x1
980 #define ETH_VPORT_TX_MODE_UCAST_ACCEPT_ALL_SHIFT 1
981 /* drop all multicast packets */
982 #define ETH_VPORT_TX_MODE_MCAST_DROP_ALL_MASK    0x1
983 #define ETH_VPORT_TX_MODE_MCAST_DROP_ALL_SHIFT   2
984 /* accept all multicast packets (subject to vlan) */
985 #define ETH_VPORT_TX_MODE_MCAST_ACCEPT_ALL_MASK  0x1
986 #define ETH_VPORT_TX_MODE_MCAST_ACCEPT_ALL_SHIFT 3
987 /* accept all broadcast packets (subject to vlan) */
988 #define ETH_VPORT_TX_MODE_BCAST_ACCEPT_ALL_MASK  0x1
989 #define ETH_VPORT_TX_MODE_BCAST_ACCEPT_ALL_SHIFT 4
990 #define ETH_VPORT_TX_MODE_RESERVED1_MASK         0x7FF
991 #define ETH_VPORT_TX_MODE_RESERVED1_SHIFT        5
992 };
993
994
995 /*
996  * GFT filter update action type.
997  */
998 enum gft_filter_update_action {
999         GFT_ADD_FILTER,
1000         GFT_DELETE_FILTER,
1001         MAX_GFT_FILTER_UPDATE_ACTION
1002 };
1003
1004
1005
1006
1007 /*
1008  * Ramrod data for rx add openflow filter
1009  */
1010 struct rx_add_openflow_filter_data {
1011         __le16 action_icid /* CID of Action to run for this filter */;
1012         u8 priority /* Searcher String - Packet priority */;
1013         u8 reserved0;
1014         __le32 tenant_id /* Searcher String - Tenant ID */;
1015 /* Searcher String - Destination Mac Bytes 0 to 1 */
1016         __le16 dst_mac_hi;
1017 /* Searcher String - Destination Mac Bytes 2 to 3 */
1018         __le16 dst_mac_mid;
1019 /* Searcher String - Destination Mac Bytes 4 to 5 */
1020         __le16 dst_mac_lo;
1021         __le16 src_mac_hi /* Searcher String - Source Mac 0 to 1 */;
1022         __le16 src_mac_mid /* Searcher String - Source Mac 2 to 3 */;
1023         __le16 src_mac_lo /* Searcher String - Source Mac 4 to 5 */;
1024         __le16 vlan_id /* Searcher String - Vlan ID */;
1025         __le16 l2_eth_type /* Searcher String - Last L2 Ethertype */;
1026         u8 ipv4_dscp /* Searcher String - IPv4 6 MSBs of the TOS Field */;
1027         u8 ipv4_frag_type /* Searcher String - IPv4 Fragmentation Type */;
1028         u8 ipv4_over_ip /* Searcher String - IPv4 Over IP Type */;
1029         u8 tenant_id_exists /* Searcher String - Tenant ID Exists */;
1030         __le32 ipv4_dst_addr /* Searcher String - IPv4 Destination Address */;
1031         __le32 ipv4_src_addr /* Searcher String - IPv4 Source Address */;
1032         __le16 l4_dst_port /* Searcher String - TCP/UDP Destination Port */;
1033         __le16 l4_src_port /* Searcher String - TCP/UDP Source Port */;
1034 };
1035
1036
1037 /*
1038  * Ramrod data for rx create gft action
1039  */
1040 struct rx_create_gft_action_data {
1041         u8 vport_id /* Vport Id of GFT Action  */;
1042         u8 reserved[7];
1043 };
1044
1045
1046 /*
1047  * Ramrod data for rx create openflow action
1048  */
1049 struct rx_create_openflow_action_data {
1050         u8 vport_id /* ID of RX queue */;
1051         u8 reserved[7];
1052 };
1053
1054
1055 /*
1056  * Ramrod data for rx queue start ramrod
1057  */
1058 struct rx_queue_start_ramrod_data {
1059         __le16 rx_queue_id /* ID of RX queue */;
1060         __le16 num_of_pbl_pages /* Number of pages in CQE PBL */;
1061         __le16 bd_max_bytes /* maximal bytes that can be places on the bd */;
1062         __le16 sb_id /* Status block ID */;
1063         u8 sb_index /* index of the protocol index */;
1064         u8 vport_id /* ID of virtual port */;
1065         u8 default_rss_queue_flg /* set queue as default rss queue if set */;
1066         u8 complete_cqe_flg /* post completion to the CQE ring if set */;
1067         u8 complete_event_flg /* post completion to the event ring if set */;
1068         u8 stats_counter_id /* Statistics counter ID */;
1069         u8 pin_context /* Pin context in CCFC to improve performance */;
1070         u8 pxp_tph_valid_bd /* PXP command TPH Valid - for BD/SGE fetch */;
1071 /* PXP command TPH Valid - for packet placement */
1072         u8 pxp_tph_valid_pkt;
1073 /* PXP command Steering tag hint. Use enum pxp_tph_st_hint */
1074         u8 pxp_st_hint;
1075         __le16 pxp_st_index /* PXP command Steering tag index */;
1076 /* Indicates that current queue belongs to poll-mode driver */
1077         u8 pmd_mode;
1078 /* Indicates that the current queue is using the TX notification queue
1079  * mechanism - should be set only for PMD queue
1080  */
1081         u8 notify_en;
1082 /* Initial value for the toggle valid bit - used in PMD mode */
1083         u8 toggle_val;
1084 /* Index of RX producers in VF zone. Used for VF only. */
1085         u8 vf_rx_prod_index;
1086 /* Backward compatibility mode. If set, unprotected mStorm queue zone will used
1087  * for VF RX producers instead of VF zone.
1088  */
1089         u8 vf_rx_prod_use_zone_a;
1090         u8 reserved[5];
1091         __le16 reserved1 /* FW reserved. */;
1092         struct regpair cqe_pbl_addr /* Base address on host of CQE PBL */;
1093         struct regpair bd_base /* bd address of the first bd page */;
1094         struct regpair reserved2 /* FW reserved. */;
1095 };
1096
1097
1098 /*
1099  * Ramrod data for rx queue stop ramrod
1100  */
1101 struct rx_queue_stop_ramrod_data {
1102         __le16 rx_queue_id /* ID of RX queue */;
1103         u8 complete_cqe_flg /* post completion to the CQE ring if set */;
1104         u8 complete_event_flg /* post completion to the event ring if set */;
1105         u8 vport_id /* ID of virtual port */;
1106         u8 reserved[3];
1107 };
1108
1109
1110 /*
1111  * Ramrod data for rx queue update ramrod
1112  */
1113 struct rx_queue_update_ramrod_data {
1114         __le16 rx_queue_id /* ID of RX queue */;
1115         u8 complete_cqe_flg /* post completion to the CQE ring if set */;
1116         u8 complete_event_flg /* post completion to the event ring if set */;
1117         u8 vport_id /* ID of virtual port */;
1118 /* If set, update default rss queue to this RX queue. */
1119         u8 set_default_rss_queue;
1120         u8 reserved[3];
1121         u8 reserved1 /* FW reserved. */;
1122         u8 reserved2 /* FW reserved. */;
1123         u8 reserved3 /* FW reserved. */;
1124         __le16 reserved4 /* FW reserved. */;
1125         __le16 reserved5 /* FW reserved. */;
1126         struct regpair reserved6 /* FW reserved. */;
1127 };
1128
1129
1130 /*
1131  * Ramrod data for rx Add UDP Filter
1132  */
1133 struct rx_udp_filter_data {
1134         __le16 action_icid /* CID of Action to run for this filter */;
1135         __le16 vlan_id /* Searcher String - Vlan ID */;
1136         u8 ip_type /* Searcher String - IP Type */;
1137         u8 tenant_id_exists /* Searcher String - Tenant ID Exists */;
1138         __le16 reserved1;
1139 /* Searcher String - IP Destination Address, for IPv4 use ip_dst_addr[0] only */
1140         __le32 ip_dst_addr[4];
1141 /* Searcher String - IP Source Address, for IPv4 use ip_dst_addr[0] only */
1142         __le32 ip_src_addr[4];
1143         __le16 udp_dst_port /* Searcher String - UDP Destination Port */;
1144         __le16 udp_src_port /* Searcher String - UDP Source Port */;
1145         __le32 tenant_id /* Searcher String - Tenant ID */;
1146 };
1147
1148
1149 /*
1150  * add or delete GFT filter - filter is packet header of type of packet wished
1151  * to pass certain FW flow
1152  */
1153 struct rx_update_gft_filter_data {
1154 /* Pointer to Packet Header That Defines GFT Filter */
1155         struct regpair pkt_hdr_addr;
1156         __le16 pkt_hdr_length /* Packet Header Length */;
1157 /* Action icid. Valid if action_icid_valid flag set. */
1158         __le16 action_icid;
1159         __le16 rx_qid /* RX queue ID. Valid if rx_qid_valid set. */;
1160         __le16 flow_id /* RX flow ID. Valid if flow_id_valid set. */;
1161 /* RX vport Id. For drop flow, set to ETH_GFT_TRASHCAN_VPORT. */
1162         __le16 vport_id;
1163 /* If set, action_icid will used for GFT filter update. */
1164         u8 action_icid_valid;
1165 /* If set, rx_qid will used for traffic steering, in additional to vport_id.
1166  * flow_id_valid must be cleared. If cleared, queue ID will selected by RSS.
1167  */
1168         u8 rx_qid_valid;
1169 /* If set, flow_id will reported by CQE, rx_qid_valid must be cleared. If
1170  * cleared, flow_id 0 will reported by CQE.
1171  */
1172         u8 flow_id_valid;
1173         u8 filter_action /* Use to set type of action on filter */;
1174 /* 0 - dont assert in case of error. Just return an error code. 1 - assert in
1175  * case of error.
1176  */
1177         u8 assert_on_error;
1178 /* If set, inner VLAN will be removed regardless to VPORT configuration.
1179  * Supported by E4 only.
1180  */
1181         u8 inner_vlan_removal_en;
1182 };
1183
1184
1185
1186 /*
1187  * Ramrod data for tx queue start ramrod
1188  */
1189 struct tx_queue_start_ramrod_data {
1190         __le16 sb_id /* Status block ID */;
1191         u8 sb_index /* Status block protocol index */;
1192         u8 vport_id /* VPort ID */;
1193         u8 reserved0 /* FW reserved. (qcn_rl_en) */;
1194         u8 stats_counter_id /* Statistics counter ID to use */;
1195         __le16 qm_pq_id /* QM PQ ID */;
1196         u8 flags;
1197 /* 0: Enable QM opportunistic flow. 1: Disable QM opportunistic flow */
1198 #define TX_QUEUE_START_RAMROD_DATA_DISABLE_OPPORTUNISTIC_MASK  0x1
1199 #define TX_QUEUE_START_RAMROD_DATA_DISABLE_OPPORTUNISTIC_SHIFT 0
1200 /* If set, Test Mode - packets will be duplicated by Xstorm handler */
1201 #define TX_QUEUE_START_RAMROD_DATA_TEST_MODE_PKT_DUP_MASK      0x1
1202 #define TX_QUEUE_START_RAMROD_DATA_TEST_MODE_PKT_DUP_SHIFT     1
1203 /* If set, Test Mode - packets destination will be determined by dest_port_mode
1204  * field from Tx BD
1205  */
1206 #define TX_QUEUE_START_RAMROD_DATA_TEST_MODE_TX_DEST_MASK      0x1
1207 #define TX_QUEUE_START_RAMROD_DATA_TEST_MODE_TX_DEST_SHIFT     2
1208 /* Indicates that current queue belongs to poll-mode driver */
1209 #define TX_QUEUE_START_RAMROD_DATA_PMD_MODE_MASK               0x1
1210 #define TX_QUEUE_START_RAMROD_DATA_PMD_MODE_SHIFT              3
1211 /* Indicates that the current queue is using the TX notification queue
1212  * mechanism - should be set only for PMD queue
1213  */
1214 #define TX_QUEUE_START_RAMROD_DATA_NOTIFY_EN_MASK              0x1
1215 #define TX_QUEUE_START_RAMROD_DATA_NOTIFY_EN_SHIFT             4
1216 /* Pin context in CCFC to improve performance */
1217 #define TX_QUEUE_START_RAMROD_DATA_PIN_CONTEXT_MASK            0x1
1218 #define TX_QUEUE_START_RAMROD_DATA_PIN_CONTEXT_SHIFT           5
1219 #define TX_QUEUE_START_RAMROD_DATA_RESERVED1_MASK              0x3
1220 #define TX_QUEUE_START_RAMROD_DATA_RESERVED1_SHIFT             6
1221         u8 pxp_st_hint /* PXP command Steering tag hint */;
1222         u8 pxp_tph_valid_bd /* PXP command TPH Valid - for BD fetch */;
1223         u8 pxp_tph_valid_pkt /* PXP command TPH Valid - for packet fetch */;
1224         __le16 pxp_st_index /* PXP command Steering tag index */;
1225 /* TX completion min agg size - for PMD queues */
1226         __le16 comp_agg_size;
1227         __le16 queue_zone_id /* queue zone ID to use */;
1228         __le16 reserved2 /* FW reserved. (test_dup_count) */;
1229         __le16 pbl_size /* Number of BD pages pointed by PBL */;
1230 /* unique Queue ID - currently used only by PMD flow */
1231         __le16 tx_queue_id;
1232 /* Unique Same-As-Last Resource ID - improves performance for same-as-last
1233  * packets per connection (range 0..ETH_TX_NUM_SAME_AS_LAST_ENTRIES-1 IDs
1234  * available)
1235  */
1236         __le16 same_as_last_id;
1237         __le16 reserved[3];
1238         struct regpair pbl_base_addr /* address of the pbl page */;
1239 /* BD consumer address in host - for PMD queues */
1240         struct regpair bd_cons_address;
1241 };
1242
1243
1244 /*
1245  * Ramrod data for tx queue stop ramrod
1246  */
1247 struct tx_queue_stop_ramrod_data {
1248         __le16 reserved[4];
1249 };
1250
1251
1252 /*
1253  * Ramrod data for tx queue update ramrod
1254  */
1255 struct tx_queue_update_ramrod_data {
1256         __le16 update_qm_pq_id_flg /* Flag to Update QM PQ ID */;
1257         __le16 qm_pq_id /* Updated QM PQ ID */;
1258         __le32 reserved0;
1259         struct regpair reserved1[5];
1260 };
1261
1262
1263 /*
1264  * Inner to Inner VLAN priority map update mode
1265  */
1266 enum update_in_to_in_pri_map_mode_enum {
1267 /* Inner to Inner VLAN priority map update Disabled */
1268         ETH_IN_TO_IN_PRI_MAP_UPDATE_DISABLED,
1269 /* Update Inner to Inner VLAN priority map for non RDMA protocols */
1270         ETH_IN_TO_IN_PRI_MAP_UPDATE_NON_RDMA_TBL,
1271 /* Update Inner to Inner VLAN priority map for RDMA protocols */
1272         ETH_IN_TO_IN_PRI_MAP_UPDATE_RDMA_TBL,
1273         MAX_UPDATE_IN_TO_IN_PRI_MAP_MODE_ENUM
1274 };
1275
1276
1277
1278 /*
1279  * Ramrod data for vport update ramrod
1280  */
1281 struct vport_filter_update_ramrod_data {
1282 /* Header for Filter Commands (RX/TX, Add/Remove/Replace, etc) */
1283         struct eth_filter_cmd_header filter_cmd_hdr;
1284 /* Filter Commands */
1285         struct eth_filter_cmd filter_cmds[ETH_FILTER_RULES_COUNT];
1286 };
1287
1288
1289 /*
1290  * Ramrod data for vport start ramrod
1291  */
1292 struct vport_start_ramrod_data {
1293         u8 vport_id;
1294         u8 sw_fid;
1295         __le16 mtu;
1296         u8 drop_ttl0_en /* if set, drop packet with ttl=0 */;
1297         u8 inner_vlan_removal_en;
1298         struct eth_vport_rx_mode rx_mode /* Rx filter data */;
1299         struct eth_vport_tx_mode tx_mode /* Tx filter data */;
1300 /* TPA configuration parameters */
1301         struct eth_vport_tpa_param tpa_param;
1302         __le16 default_vlan /* Default Vlan value to be forced by FW */;
1303         u8 tx_switching_en /* Tx switching is enabled for current Vport */;
1304 /* Anti-spoofing verification is set for current Vport */
1305         u8 anti_spoofing_en;
1306 /* If set, the default Vlan value is forced by the FW */
1307         u8 default_vlan_en;
1308 /* If set, the vport handles PTP Timesync Packets */
1309         u8 handle_ptp_pkts;
1310 /* If enable then innerVlan will be striped and not written to cqe */
1311         u8 silent_vlan_removal_en;
1312 /* If set untagged filter (vlan0) is added to current Vport, otherwise port is
1313  * marked as any-vlan
1314  */
1315         u8 untagged;
1316 /* Desired behavior per TX error type */
1317         struct eth_tx_err_vals tx_err_behav;
1318 /* If set, ETH header padding will not inserted. placement_offset will be zero.
1319  */
1320         u8 zero_placement_offset;
1321 /* If set, control frames will be filtered according to MAC check. */
1322         u8 ctl_frame_mac_check_en;
1323 /* If set, control frames will be filtered according to ethtype check. */
1324         u8 ctl_frame_ethtype_check_en;
1325 /* If set, the inner vlan (802.1q tag) priority that is written to cqe will be
1326  * zero out, used for TenantDcb
1327  */
1328         u8 wipe_inner_vlan_pri_en;
1329 /* inner to inner vlan priority translation configurations */
1330         struct eth_in_to_in_pri_map_cfg in_to_in_vlan_pri_map_cfg;
1331 };
1332
1333
1334 /*
1335  * Ramrod data for vport stop ramrod
1336  */
1337 struct vport_stop_ramrod_data {
1338         u8 vport_id;
1339         u8 reserved[7];
1340 };
1341
1342
1343 /*
1344  * Ramrod data for vport update ramrod
1345  */
1346 struct vport_update_ramrod_data_cmn {
1347         u8 vport_id;
1348         u8 update_rx_active_flg /* set if rx active flag should be handled */;
1349         u8 rx_active_flg /* rx active flag value */;
1350         u8 update_tx_active_flg /* set if tx active flag should be handled */;
1351         u8 tx_active_flg /* tx active flag value */;
1352         u8 update_rx_mode_flg /* set if rx state data should be handled */;
1353         u8 update_tx_mode_flg /* set if tx state data should be handled */;
1354 /* set if approx. mcast data should be handled */
1355         u8 update_approx_mcast_flg;
1356         u8 update_rss_flg /* set if rss data should be handled  */;
1357 /* set if inner_vlan_removal_en should be handled */
1358         u8 update_inner_vlan_removal_en_flg;
1359         u8 inner_vlan_removal_en;
1360 /* set if tpa parameters should be handled, TPA must be disable before */
1361         u8 update_tpa_param_flg;
1362         u8 update_tpa_en_flg /* set if tpa enable changes */;
1363 /* set if tx switching en flag should be handled */
1364         u8 update_tx_switching_en_flg;
1365         u8 tx_switching_en /* tx switching en value */;
1366 /* set if anti spoofing flag should be handled */
1367         u8 update_anti_spoofing_en_flg;
1368         u8 anti_spoofing_en /* Anti-spoofing verification en value */;
1369 /* set if handle_ptp_pkts should be handled. */
1370         u8 update_handle_ptp_pkts;
1371 /* If set, the vport handles PTP Timesync Packets */
1372         u8 handle_ptp_pkts;
1373 /* If set, the default Vlan enable flag is updated */
1374         u8 update_default_vlan_en_flg;
1375 /* If set, the default Vlan value is forced by the FW */
1376         u8 default_vlan_en;
1377 /* If set, the default Vlan value is updated */
1378         u8 update_default_vlan_flg;
1379         __le16 default_vlan /* Default Vlan value to be forced by FW */;
1380 /* set if accept_any_vlan should be handled */
1381         u8 update_accept_any_vlan_flg;
1382         u8 accept_any_vlan /* accept_any_vlan updated value */;
1383 /* Set to remove vlan silently, update_inner_vlan_removal_en_flg must be enabled
1384  * as well. If Rx is in noSgl mode send rx_queue_update_ramrod_data
1385  */
1386         u8 silent_vlan_removal_en;
1387 /* If set, MTU will be updated. Vport must be not active. */
1388         u8 update_mtu_flg;
1389         __le16 mtu /* New MTU value. Used if update_mtu_flg are set */;
1390 /* If set, ctl_frame_mac_check_en and ctl_frame_ethtype_check_en will be
1391  * updated
1392  */
1393         u8 update_ctl_frame_checks_en_flg;
1394 /* If set, control frames will be filtered according to MAC check. */
1395         u8 ctl_frame_mac_check_en;
1396 /* If set, control frames will be filtered according to ethtype check. */
1397         u8 ctl_frame_ethtype_check_en;
1398 /* Indicates to update RDMA or NON-RDMA vlan remapping priority table according
1399  * to update_in_to_in_pri_map_mode_enum, used for TenantDcb (use enum
1400  * update_in_to_in_pri_map_mode_enum)
1401  */
1402         u8 update_in_to_in_pri_map_mode;
1403 /* Map for inner to inner vlan priority translation, used for TenantDcb. */
1404         u8 in_to_in_pri_map[8];
1405         u8 reserved[6];
1406 };
1407
1408 struct vport_update_ramrod_mcast {
1409         __le32 bins[ETH_MULTICAST_MAC_BINS_IN_REGS] /* multicast bins */;
1410 };
1411
1412 /*
1413  * Ramrod data for vport update ramrod
1414  */
1415 struct vport_update_ramrod_data {
1416 /* Common data for all vport update ramrods */
1417         struct vport_update_ramrod_data_cmn common;
1418         struct eth_vport_rx_mode rx_mode /* vport rx mode bitmap */;
1419         struct eth_vport_tx_mode tx_mode /* vport tx mode bitmap */;
1420         __le32 reserved[3];
1421 /* TPA configuration parameters */
1422         struct eth_vport_tpa_param tpa_param;
1423         struct vport_update_ramrod_mcast approx_mcast;
1424         struct eth_vport_rss_config rss_config /* rss config data */;
1425 };
1426
1427
1428
1429
1430
1431
1432 struct E4XstormEthConnAgCtxDqExtLdPart {
1433         u8 reserved0 /* cdu_validation */;
1434         u8 eth_state /* state */;
1435         u8 flags0;
1436 /* exist_in_qm0 */
1437 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_EXIST_IN_QM0_MASK            0x1
1438 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_EXIST_IN_QM0_SHIFT           0
1439 /* exist_in_qm1 */
1440 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED1_MASK               0x1
1441 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED1_SHIFT              1
1442 /* exist_in_qm2 */
1443 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED2_MASK               0x1
1444 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED2_SHIFT              2
1445 /* exist_in_qm3 */
1446 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_EXIST_IN_QM3_MASK            0x1
1447 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_EXIST_IN_QM3_SHIFT           3
1448 /* bit4 */
1449 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED3_MASK               0x1
1450 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED3_SHIFT              4
1451 /* cf_array_active */
1452 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED4_MASK               0x1
1453 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED4_SHIFT              5
1454 /* bit6 */
1455 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED5_MASK               0x1
1456 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED5_SHIFT              6
1457 /* bit7 */
1458 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED6_MASK               0x1
1459 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED6_SHIFT              7
1460         u8 flags1;
1461 /* bit8 */
1462 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED7_MASK               0x1
1463 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED7_SHIFT              0
1464 /* bit9 */
1465 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED8_MASK               0x1
1466 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED8_SHIFT              1
1467 /* bit10 */
1468 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED9_MASK               0x1
1469 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED9_SHIFT              2
1470 /* bit11 */
1471 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_BIT11_MASK                   0x1
1472 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_BIT11_SHIFT                  3
1473 /* bit12 */
1474 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_BIT12_MASK                   0x1
1475 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_BIT12_SHIFT                  4
1476 /* bit13 */
1477 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_BIT13_MASK                   0x1
1478 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_BIT13_SHIFT                  5
1479 /* bit14 */
1480 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_TX_RULE_ACTIVE_MASK          0x1
1481 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_TX_RULE_ACTIVE_SHIFT         6
1482 /* bit15 */
1483 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_DQ_CF_ACTIVE_MASK            0x1
1484 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_DQ_CF_ACTIVE_SHIFT           7
1485         u8 flags2;
1486 /* timer0cf */
1487 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF0_MASK                     0x3
1488 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF0_SHIFT                    0
1489 /* timer1cf */
1490 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF1_MASK                     0x3
1491 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF1_SHIFT                    2
1492 /* timer2cf */
1493 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF2_MASK                     0x3
1494 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF2_SHIFT                    4
1495 /* timer_stop_all */
1496 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF3_MASK                     0x3
1497 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF3_SHIFT                    6
1498         u8 flags3;
1499 /* cf4 */
1500 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF4_MASK                     0x3
1501 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF4_SHIFT                    0
1502 /* cf5 */
1503 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF5_MASK                     0x3
1504 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF5_SHIFT                    2
1505 /* cf6 */
1506 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF6_MASK                     0x3
1507 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF6_SHIFT                    4
1508 /* cf7 */
1509 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF7_MASK                     0x3
1510 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF7_SHIFT                    6
1511         u8 flags4;
1512 /* cf8 */
1513 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF8_MASK                     0x3
1514 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF8_SHIFT                    0
1515 /* cf9 */
1516 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF9_MASK                     0x3
1517 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF9_SHIFT                    2
1518 /* cf10 */
1519 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF10_MASK                    0x3
1520 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF10_SHIFT                   4
1521 /* cf11 */
1522 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF11_MASK                    0x3
1523 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF11_SHIFT                   6
1524         u8 flags5;
1525 /* cf12 */
1526 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF12_MASK                    0x3
1527 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF12_SHIFT                   0
1528 /* cf13 */
1529 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF13_MASK                    0x3
1530 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF13_SHIFT                   2
1531 /* cf14 */
1532 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF14_MASK                    0x3
1533 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF14_SHIFT                   4
1534 /* cf15 */
1535 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF15_MASK                    0x3
1536 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF15_SHIFT                   6
1537         u8 flags6;
1538 /* cf16 */
1539 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_GO_TO_BD_CONS_CF_MASK        0x3
1540 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_GO_TO_BD_CONS_CF_SHIFT       0
1541 /* cf_array_cf */
1542 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_MULTI_UNICAST_CF_MASK        0x3
1543 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_MULTI_UNICAST_CF_SHIFT       2
1544 /* cf18 */
1545 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_DQ_CF_MASK                   0x3
1546 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_DQ_CF_SHIFT                  4
1547 /* cf19 */
1548 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_TERMINATE_CF_MASK            0x3
1549 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_TERMINATE_CF_SHIFT           6
1550         u8 flags7;
1551 /* cf20 */
1552 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_FLUSH_Q0_MASK                0x3
1553 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_FLUSH_Q0_SHIFT               0
1554 /* cf21 */
1555 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED10_MASK              0x3
1556 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED10_SHIFT             2
1557 /* cf22 */
1558 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_SLOW_PATH_MASK               0x3
1559 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_SLOW_PATH_SHIFT              4
1560 /* cf0en */
1561 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF0EN_MASK                   0x1
1562 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF0EN_SHIFT                  6
1563 /* cf1en */
1564 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF1EN_MASK                   0x1
1565 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF1EN_SHIFT                  7
1566         u8 flags8;
1567 /* cf2en */
1568 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF2EN_MASK                   0x1
1569 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF2EN_SHIFT                  0
1570 /* cf3en */
1571 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF3EN_MASK                   0x1
1572 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF3EN_SHIFT                  1
1573 /* cf4en */
1574 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF4EN_MASK                   0x1
1575 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF4EN_SHIFT                  2
1576 /* cf5en */
1577 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF5EN_MASK                   0x1
1578 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF5EN_SHIFT                  3
1579 /* cf6en */
1580 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF6EN_MASK                   0x1
1581 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF6EN_SHIFT                  4
1582 /* cf7en */
1583 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF7EN_MASK                   0x1
1584 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF7EN_SHIFT                  5
1585 /* cf8en */
1586 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF8EN_MASK                   0x1
1587 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF8EN_SHIFT                  6
1588 /* cf9en */
1589 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF9EN_MASK                   0x1
1590 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF9EN_SHIFT                  7
1591         u8 flags9;
1592 /* cf10en */
1593 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF10EN_MASK                  0x1
1594 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF10EN_SHIFT                 0
1595 /* cf11en */
1596 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF11EN_MASK                  0x1
1597 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF11EN_SHIFT                 1
1598 /* cf12en */
1599 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF12EN_MASK                  0x1
1600 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF12EN_SHIFT                 2
1601 /* cf13en */
1602 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF13EN_MASK                  0x1
1603 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF13EN_SHIFT                 3
1604 /* cf14en */
1605 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF14EN_MASK                  0x1
1606 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF14EN_SHIFT                 4
1607 /* cf15en */
1608 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF15EN_MASK                  0x1
1609 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF15EN_SHIFT                 5
1610 /* cf16en */
1611 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_GO_TO_BD_CONS_CF_EN_MASK     0x1
1612 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_GO_TO_BD_CONS_CF_EN_SHIFT    6
1613 /* cf_array_cf_en */
1614 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_MULTI_UNICAST_CF_EN_MASK     0x1
1615 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_MULTI_UNICAST_CF_EN_SHIFT    7
1616         u8 flags10;
1617 /* cf18en */
1618 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_DQ_CF_EN_MASK                0x1
1619 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_DQ_CF_EN_SHIFT               0
1620 /* cf19en */
1621 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_TERMINATE_CF_EN_MASK         0x1
1622 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_TERMINATE_CF_EN_SHIFT        1
1623 /* cf20en */
1624 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_FLUSH_Q0_EN_MASK             0x1
1625 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_FLUSH_Q0_EN_SHIFT            2
1626 /* cf21en */
1627 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED11_MASK              0x1
1628 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED11_SHIFT             3
1629 /* cf22en */
1630 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_SLOW_PATH_EN_MASK            0x1
1631 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_SLOW_PATH_EN_SHIFT           4
1632 /* cf23en */
1633 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_TPH_ENABLE_EN_RESERVED_MASK  0x1
1634 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_TPH_ENABLE_EN_RESERVED_SHIFT 5
1635 /* rule0en */
1636 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED12_MASK              0x1
1637 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED12_SHIFT             6
1638 /* rule1en */
1639 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED13_MASK              0x1
1640 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED13_SHIFT             7
1641         u8 flags11;
1642 /* rule2en */
1643 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED14_MASK              0x1
1644 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED14_SHIFT             0
1645 /* rule3en */
1646 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED15_MASK              0x1
1647 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED15_SHIFT             1
1648 /* rule4en */
1649 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_TX_DEC_RULE_EN_MASK          0x1
1650 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_TX_DEC_RULE_EN_SHIFT         2
1651 /* rule5en */
1652 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE5EN_MASK                 0x1
1653 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE5EN_SHIFT                3
1654 /* rule6en */
1655 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE6EN_MASK                 0x1
1656 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE6EN_SHIFT                4
1657 /* rule7en */
1658 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE7EN_MASK                 0x1
1659 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE7EN_SHIFT                5
1660 /* rule8en */
1661 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED1_MASK            0x1
1662 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED1_SHIFT           6
1663 /* rule9en */
1664 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE9EN_MASK                 0x1
1665 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE9EN_SHIFT                7
1666         u8 flags12;
1667 /* rule10en */
1668 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE10EN_MASK                0x1
1669 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE10EN_SHIFT               0
1670 /* rule11en */
1671 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE11EN_MASK                0x1
1672 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE11EN_SHIFT               1
1673 /* rule12en */
1674 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED2_MASK            0x1
1675 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED2_SHIFT           2
1676 /* rule13en */
1677 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED3_MASK            0x1
1678 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED3_SHIFT           3
1679 /* rule14en */
1680 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE14EN_MASK                0x1
1681 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE14EN_SHIFT               4
1682 /* rule15en */
1683 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE15EN_MASK                0x1
1684 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE15EN_SHIFT               5
1685 /* rule16en */
1686 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE16EN_MASK                0x1
1687 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE16EN_SHIFT               6
1688 /* rule17en */
1689 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE17EN_MASK                0x1
1690 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE17EN_SHIFT               7
1691         u8 flags13;
1692 /* rule18en */
1693 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE18EN_MASK                0x1
1694 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE18EN_SHIFT               0
1695 /* rule19en */
1696 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE19EN_MASK                0x1
1697 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE19EN_SHIFT               1
1698 /* rule20en */
1699 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED4_MASK            0x1
1700 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED4_SHIFT           2
1701 /* rule21en */
1702 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED5_MASK            0x1
1703 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED5_SHIFT           3
1704 /* rule22en */
1705 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED6_MASK            0x1
1706 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED6_SHIFT           4
1707 /* rule23en */
1708 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED7_MASK            0x1
1709 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED7_SHIFT           5
1710 /* rule24en */
1711 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED8_MASK            0x1
1712 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED8_SHIFT           6
1713 /* rule25en */
1714 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED9_MASK            0x1
1715 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED9_SHIFT           7
1716         u8 flags14;
1717 /* bit16 */
1718 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_EDPM_USE_EXT_HDR_MASK        0x1
1719 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_EDPM_USE_EXT_HDR_SHIFT       0
1720 /* bit17 */
1721 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_EDPM_SEND_RAW_L3L4_MASK      0x1
1722 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_EDPM_SEND_RAW_L3L4_SHIFT     1
1723 /* bit18 */
1724 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_EDPM_INBAND_PROP_HDR_MASK    0x1
1725 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_EDPM_INBAND_PROP_HDR_SHIFT   2
1726 /* bit19 */
1727 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_EDPM_SEND_EXT_TUNNEL_MASK    0x1
1728 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_EDPM_SEND_EXT_TUNNEL_SHIFT   3
1729 /* bit20 */
1730 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_L2_EDPM_ENABLE_MASK          0x1
1731 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_L2_EDPM_ENABLE_SHIFT         4
1732 /* bit21 */
1733 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_ROCE_EDPM_ENABLE_MASK        0x1
1734 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_ROCE_EDPM_ENABLE_SHIFT       5
1735 /* cf23 */
1736 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_TPH_ENABLE_MASK              0x3
1737 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_TPH_ENABLE_SHIFT             6
1738         u8 edpm_event_id /* byte2 */;
1739         __le16 physical_q0 /* physical_q0 */;
1740         __le16 e5_reserved1 /* physical_q1 */;
1741         __le16 edpm_num_bds /* physical_q2 */;
1742         __le16 tx_bd_cons /* word3 */;
1743         __le16 tx_bd_prod /* word4 */;
1744         __le16 updated_qm_pq_id /* word5 */;
1745         __le16 conn_dpi /* conn_dpi */;
1746         u8 byte3 /* byte3 */;
1747         u8 byte4 /* byte4 */;
1748         u8 byte5 /* byte5 */;
1749         u8 byte6 /* byte6 */;
1750         __le32 reg0 /* reg0 */;
1751         __le32 reg1 /* reg1 */;
1752         __le32 reg2 /* reg2 */;
1753         __le32 reg3 /* reg3 */;
1754         __le32 reg4 /* reg4 */;
1755 };
1756
1757
1758 struct mstorm_eth_conn_ag_ctx {
1759         u8 byte0 /* cdu_validation */;
1760         u8 byte1 /* state */;
1761         u8 flags0;
1762 #define MSTORM_ETH_CONN_AG_CTX_EXIST_IN_QM0_MASK  0x1 /* exist_in_qm0 */
1763 #define MSTORM_ETH_CONN_AG_CTX_EXIST_IN_QM0_SHIFT 0
1764 #define MSTORM_ETH_CONN_AG_CTX_BIT1_MASK          0x1 /* exist_in_qm1 */
1765 #define MSTORM_ETH_CONN_AG_CTX_BIT1_SHIFT         1
1766 #define MSTORM_ETH_CONN_AG_CTX_CF0_MASK           0x3 /* cf0 */
1767 #define MSTORM_ETH_CONN_AG_CTX_CF0_SHIFT          2
1768 #define MSTORM_ETH_CONN_AG_CTX_CF1_MASK           0x3 /* cf1 */
1769 #define MSTORM_ETH_CONN_AG_CTX_CF1_SHIFT          4
1770 #define MSTORM_ETH_CONN_AG_CTX_CF2_MASK           0x3 /* cf2 */
1771 #define MSTORM_ETH_CONN_AG_CTX_CF2_SHIFT          6
1772         u8 flags1;
1773 #define MSTORM_ETH_CONN_AG_CTX_CF0EN_MASK         0x1 /* cf0en */
1774 #define MSTORM_ETH_CONN_AG_CTX_CF0EN_SHIFT        0
1775 #define MSTORM_ETH_CONN_AG_CTX_CF1EN_MASK         0x1 /* cf1en */
1776 #define MSTORM_ETH_CONN_AG_CTX_CF1EN_SHIFT        1
1777 #define MSTORM_ETH_CONN_AG_CTX_CF2EN_MASK         0x1 /* cf2en */
1778 #define MSTORM_ETH_CONN_AG_CTX_CF2EN_SHIFT        2
1779 #define MSTORM_ETH_CONN_AG_CTX_RULE0EN_MASK       0x1 /* rule0en */
1780 #define MSTORM_ETH_CONN_AG_CTX_RULE0EN_SHIFT      3
1781 #define MSTORM_ETH_CONN_AG_CTX_RULE1EN_MASK       0x1 /* rule1en */
1782 #define MSTORM_ETH_CONN_AG_CTX_RULE1EN_SHIFT      4
1783 #define MSTORM_ETH_CONN_AG_CTX_RULE2EN_MASK       0x1 /* rule2en */
1784 #define MSTORM_ETH_CONN_AG_CTX_RULE2EN_SHIFT      5
1785 #define MSTORM_ETH_CONN_AG_CTX_RULE3EN_MASK       0x1 /* rule3en */
1786 #define MSTORM_ETH_CONN_AG_CTX_RULE3EN_SHIFT      6
1787 #define MSTORM_ETH_CONN_AG_CTX_RULE4EN_MASK       0x1 /* rule4en */
1788 #define MSTORM_ETH_CONN_AG_CTX_RULE4EN_SHIFT      7
1789         __le16 word0 /* word0 */;
1790         __le16 word1 /* word1 */;
1791         __le32 reg0 /* reg0 */;
1792         __le32 reg1 /* reg1 */;
1793 };
1794
1795
1796
1797
1798
1799 struct xstorm_eth_hw_conn_ag_ctx {
1800         u8 reserved0 /* cdu_validation */;
1801         u8 eth_state /* state */;
1802         u8 flags0;
1803 /* exist_in_qm0 */
1804 #define XSTORM_ETH_HW_CONN_AG_CTX_EXIST_IN_QM0_MASK            0x1
1805 #define XSTORM_ETH_HW_CONN_AG_CTX_EXIST_IN_QM0_SHIFT           0
1806 /* exist_in_qm1 */
1807 #define XSTORM_ETH_HW_CONN_AG_CTX_RESERVED1_MASK               0x1
1808 #define XSTORM_ETH_HW_CONN_AG_CTX_RESERVED1_SHIFT              1
1809 /* exist_in_qm2 */
1810 #define XSTORM_ETH_HW_CONN_AG_CTX_RESERVED2_MASK               0x1
1811 #define XSTORM_ETH_HW_CONN_AG_CTX_RESERVED2_SHIFT              2
1812 /* exist_in_qm3 */
1813 #define XSTORM_ETH_HW_CONN_AG_CTX_EXIST_IN_QM3_MASK            0x1
1814 #define XSTORM_ETH_HW_CONN_AG_CTX_EXIST_IN_QM3_SHIFT           3
1815 #define XSTORM_ETH_HW_CONN_AG_CTX_RESERVED3_MASK               0x1 /* bit4 */
1816 #define XSTORM_ETH_HW_CONN_AG_CTX_RESERVED3_SHIFT              4
1817 /* cf_array_active */
1818 #define XSTORM_ETH_HW_CONN_AG_CTX_RESERVED4_MASK               0x1
1819 #define XSTORM_ETH_HW_CONN_AG_CTX_RESERVED4_SHIFT              5
1820 #define XSTORM_ETH_HW_CONN_AG_CTX_RESERVED5_MASK               0x1 /* bit6 */
1821 #define XSTORM_ETH_HW_CONN_AG_CTX_RESERVED5_SHIFT              6
1822 #define XSTORM_ETH_HW_CONN_AG_CTX_RESERVED6_MASK               0x1 /* bit7 */
1823 #define XSTORM_ETH_HW_CONN_AG_CTX_RESERVED6_SHIFT              7
1824         u8 flags1;
1825 #define XSTORM_ETH_HW_CONN_AG_CTX_RESERVED7_MASK               0x1 /* bit8 */
1826 #define XSTORM_ETH_HW_CONN_AG_CTX_RESERVED7_SHIFT              0
1827 #define XSTORM_ETH_HW_CONN_AG_CTX_RESERVED8_MASK               0x1 /* bit9 */
1828 #define XSTORM_ETH_HW_CONN_AG_CTX_RESERVED8_SHIFT              1
1829 #define XSTORM_ETH_HW_CONN_AG_CTX_RESERVED9_MASK               0x1 /* bit10 */
1830 #define XSTORM_ETH_HW_CONN_AG_CTX_RESERVED9_SHIFT              2
1831 #define XSTORM_ETH_HW_CONN_AG_CTX_BIT11_MASK                   0x1 /* bit11 */
1832 #define XSTORM_ETH_HW_CONN_AG_CTX_BIT11_SHIFT                  3
1833 #define XSTORM_ETH_HW_CONN_AG_CTX_E5_RESERVED2_MASK            0x1 /* bit12 */
1834 #define XSTORM_ETH_HW_CONN_AG_CTX_E5_RESERVED2_SHIFT           4
1835 #define XSTORM_ETH_HW_CONN_AG_CTX_E5_RESERVED3_MASK            0x1 /* bit13 */
1836 #define XSTORM_ETH_HW_CONN_AG_CTX_E5_RESERVED3_SHIFT           5
1837 #define XSTORM_ETH_HW_CONN_AG_CTX_TX_RULE_ACTIVE_MASK          0x1 /* bit14 */
1838 #define XSTORM_ETH_HW_CONN_AG_CTX_TX_RULE_ACTIVE_SHIFT         6
1839 #define XSTORM_ETH_HW_CONN_AG_CTX_DQ_CF_ACTIVE_MASK            0x1 /* bit15 */
1840 #define XSTORM_ETH_HW_CONN_AG_CTX_DQ_CF_ACTIVE_SHIFT           7
1841         u8 flags2;
1842 /* timer0cf */
1843 #define XSTORM_ETH_HW_CONN_AG_CTX_CF0_MASK                     0x3
1844 #define XSTORM_ETH_HW_CONN_AG_CTX_CF0_SHIFT                    0
1845 /* timer1cf */
1846 #define XSTORM_ETH_HW_CONN_AG_CTX_CF1_MASK                     0x3
1847 #define XSTORM_ETH_HW_CONN_AG_CTX_CF1_SHIFT                    2
1848 /* timer2cf */
1849 #define XSTORM_ETH_HW_CONN_AG_CTX_CF2_MASK                     0x3
1850 #define XSTORM_ETH_HW_CONN_AG_CTX_CF2_SHIFT                    4
1851 /* timer_stop_all */
1852 #define XSTORM_ETH_HW_CONN_AG_CTX_CF3_MASK                     0x3
1853 #define XSTORM_ETH_HW_CONN_AG_CTX_CF3_SHIFT                    6
1854         u8 flags3;
1855 #define XSTORM_ETH_HW_CONN_AG_CTX_CF4_MASK                     0x3 /* cf4 */
1856 #define XSTORM_ETH_HW_CONN_AG_CTX_CF4_SHIFT                    0
1857 #define XSTORM_ETH_HW_CONN_AG_CTX_CF5_MASK                     0x3 /* cf5 */
1858 #define XSTORM_ETH_HW_CONN_AG_CTX_CF5_SHIFT                    2
1859 #define XSTORM_ETH_HW_CONN_AG_CTX_CF6_MASK                     0x3 /* cf6 */
1860 #define XSTORM_ETH_HW_CONN_AG_CTX_CF6_SHIFT                    4
1861 #define XSTORM_ETH_HW_CONN_AG_CTX_CF7_MASK                     0x3 /* cf7 */
1862 #define XSTORM_ETH_HW_CONN_AG_CTX_CF7_SHIFT                    6
1863         u8 flags4;
1864 #define XSTORM_ETH_HW_CONN_AG_CTX_CF8_MASK                     0x3 /* cf8 */
1865 #define XSTORM_ETH_HW_CONN_AG_CTX_CF8_SHIFT                    0
1866 #define XSTORM_ETH_HW_CONN_AG_CTX_CF9_MASK                     0x3 /* cf9 */
1867 #define XSTORM_ETH_HW_CONN_AG_CTX_CF9_SHIFT                    2
1868 #define XSTORM_ETH_HW_CONN_AG_CTX_CF10_MASK                    0x3 /* cf10 */
1869 #define XSTORM_ETH_HW_CONN_AG_CTX_CF10_SHIFT                   4
1870 #define XSTORM_ETH_HW_CONN_AG_CTX_CF11_MASK                    0x3 /* cf11 */
1871 #define XSTORM_ETH_HW_CONN_AG_CTX_CF11_SHIFT                   6
1872         u8 flags5;
1873 #define XSTORM_ETH_HW_CONN_AG_CTX_CF12_MASK                    0x3 /* cf12 */
1874 #define XSTORM_ETH_HW_CONN_AG_CTX_CF12_SHIFT                   0
1875 #define XSTORM_ETH_HW_CONN_AG_CTX_CF13_MASK                    0x3 /* cf13 */
1876 #define XSTORM_ETH_HW_CONN_AG_CTX_CF13_SHIFT                   2
1877 #define XSTORM_ETH_HW_CONN_AG_CTX_CF14_MASK                    0x3 /* cf14 */
1878 #define XSTORM_ETH_HW_CONN_AG_CTX_CF14_SHIFT                   4
1879 #define XSTORM_ETH_HW_CONN_AG_CTX_CF15_MASK                    0x3 /* cf15 */
1880 #define XSTORM_ETH_HW_CONN_AG_CTX_CF15_SHIFT                   6
1881         u8 flags6;
1882 #define XSTORM_ETH_HW_CONN_AG_CTX_GO_TO_BD_CONS_CF_MASK        0x3 /* cf16 */
1883 #define XSTORM_ETH_HW_CONN_AG_CTX_GO_TO_BD_CONS_CF_SHIFT       0
1884 /* cf_array_cf */
1885 #define XSTORM_ETH_HW_CONN_AG_CTX_MULTI_UNICAST_CF_MASK        0x3
1886 #define XSTORM_ETH_HW_CONN_AG_CTX_MULTI_UNICAST_CF_SHIFT       2
1887 #define XSTORM_ETH_HW_CONN_AG_CTX_DQ_CF_MASK                   0x3 /* cf18 */
1888 #define XSTORM_ETH_HW_CONN_AG_CTX_DQ_CF_SHIFT                  4
1889 #define XSTORM_ETH_HW_CONN_AG_CTX_TERMINATE_CF_MASK            0x3 /* cf19 */
1890 #define XSTORM_ETH_HW_CONN_AG_CTX_TERMINATE_CF_SHIFT           6
1891         u8 flags7;
1892 #define XSTORM_ETH_HW_CONN_AG_CTX_FLUSH_Q0_MASK                0x3 /* cf20 */
1893 #define XSTORM_ETH_HW_CONN_AG_CTX_FLUSH_Q0_SHIFT               0
1894 #define XSTORM_ETH_HW_CONN_AG_CTX_RESERVED10_MASK              0x3 /* cf21 */
1895 #define XSTORM_ETH_HW_CONN_AG_CTX_RESERVED10_SHIFT             2
1896 #define XSTORM_ETH_HW_CONN_AG_CTX_SLOW_PATH_MASK               0x3 /* cf22 */
1897 #define XSTORM_ETH_HW_CONN_AG_CTX_SLOW_PATH_SHIFT              4
1898 #define XSTORM_ETH_HW_CONN_AG_CTX_CF0EN_MASK                   0x1 /* cf0en */
1899 #define XSTORM_ETH_HW_CONN_AG_CTX_CF0EN_SHIFT                  6
1900 #define XSTORM_ETH_HW_CONN_AG_CTX_CF1EN_MASK                   0x1 /* cf1en */
1901 #define XSTORM_ETH_HW_CONN_AG_CTX_CF1EN_SHIFT                  7
1902         u8 flags8;
1903 #define XSTORM_ETH_HW_CONN_AG_CTX_CF2EN_MASK                   0x1 /* cf2en */
1904 #define XSTORM_ETH_HW_CONN_AG_CTX_CF2EN_SHIFT                  0
1905 #define XSTORM_ETH_HW_CONN_AG_CTX_CF3EN_MASK                   0x1 /* cf3en */
1906 #define XSTORM_ETH_HW_CONN_AG_CTX_CF3EN_SHIFT                  1
1907 #define XSTORM_ETH_HW_CONN_AG_CTX_CF4EN_MASK                   0x1 /* cf4en */
1908 #define XSTORM_ETH_HW_CONN_AG_CTX_CF4EN_SHIFT                  2
1909 #define XSTORM_ETH_HW_CONN_AG_CTX_CF5EN_MASK                   0x1 /* cf5en */
1910 #define XSTORM_ETH_HW_CONN_AG_CTX_CF5EN_SHIFT                  3
1911 #define XSTORM_ETH_HW_CONN_AG_CTX_CF6EN_MASK                   0x1 /* cf6en */
1912 #define XSTORM_ETH_HW_CONN_AG_CTX_CF6EN_SHIFT                  4
1913 #define XSTORM_ETH_HW_CONN_AG_CTX_CF7EN_MASK                   0x1 /* cf7en */
1914 #define XSTORM_ETH_HW_CONN_AG_CTX_CF7EN_SHIFT                  5
1915 #define XSTORM_ETH_HW_CONN_AG_CTX_CF8EN_MASK                   0x1 /* cf8en */
1916 #define XSTORM_ETH_HW_CONN_AG_CTX_CF8EN_SHIFT                  6
1917 #define XSTORM_ETH_HW_CONN_AG_CTX_CF9EN_MASK                   0x1 /* cf9en */
1918 #define XSTORM_ETH_HW_CONN_AG_CTX_CF9EN_SHIFT                  7
1919         u8 flags9;
1920 #define XSTORM_ETH_HW_CONN_AG_CTX_CF10EN_MASK                  0x1 /* cf10en */
1921 #define XSTORM_ETH_HW_CONN_AG_CTX_CF10EN_SHIFT                 0
1922 #define XSTORM_ETH_HW_CONN_AG_CTX_CF11EN_MASK                  0x1 /* cf11en */
1923 #define XSTORM_ETH_HW_CONN_AG_CTX_CF11EN_SHIFT                 1
1924 #define XSTORM_ETH_HW_CONN_AG_CTX_CF12EN_MASK                  0x1 /* cf12en */
1925 #define XSTORM_ETH_HW_CONN_AG_CTX_CF12EN_SHIFT                 2
1926 #define XSTORM_ETH_HW_CONN_AG_CTX_CF13EN_MASK                  0x1 /* cf13en */
1927 #define XSTORM_ETH_HW_CONN_AG_CTX_CF13EN_SHIFT                 3
1928 #define XSTORM_ETH_HW_CONN_AG_CTX_CF14EN_MASK                  0x1 /* cf14en */
1929 #define XSTORM_ETH_HW_CONN_AG_CTX_CF14EN_SHIFT                 4
1930 #define XSTORM_ETH_HW_CONN_AG_CTX_CF15EN_MASK                  0x1 /* cf15en */
1931 #define XSTORM_ETH_HW_CONN_AG_CTX_CF15EN_SHIFT                 5
1932 #define XSTORM_ETH_HW_CONN_AG_CTX_GO_TO_BD_CONS_CF_EN_MASK     0x1 /* cf16en */
1933 #define XSTORM_ETH_HW_CONN_AG_CTX_GO_TO_BD_CONS_CF_EN_SHIFT    6
1934 /* cf_array_cf_en */
1935 #define XSTORM_ETH_HW_CONN_AG_CTX_MULTI_UNICAST_CF_EN_MASK     0x1
1936 #define XSTORM_ETH_HW_CONN_AG_CTX_MULTI_UNICAST_CF_EN_SHIFT    7
1937         u8 flags10;
1938 #define XSTORM_ETH_HW_CONN_AG_CTX_DQ_CF_EN_MASK                0x1 /* cf18en */
1939 #define XSTORM_ETH_HW_CONN_AG_CTX_DQ_CF_EN_SHIFT               0
1940 #define XSTORM_ETH_HW_CONN_AG_CTX_TERMINATE_CF_EN_MASK         0x1 /* cf19en */
1941 #define XSTORM_ETH_HW_CONN_AG_CTX_TERMINATE_CF_EN_SHIFT        1
1942 #define XSTORM_ETH_HW_CONN_AG_CTX_FLUSH_Q0_EN_MASK             0x1 /* cf20en */
1943 #define XSTORM_ETH_HW_CONN_AG_CTX_FLUSH_Q0_EN_SHIFT            2
1944 #define XSTORM_ETH_HW_CONN_AG_CTX_RESERVED11_MASK              0x1 /* cf21en */
1945 #define XSTORM_ETH_HW_CONN_AG_CTX_RESERVED11_SHIFT             3
1946 #define XSTORM_ETH_HW_CONN_AG_CTX_SLOW_PATH_EN_MASK            0x1 /* cf22en */
1947 #define XSTORM_ETH_HW_CONN_AG_CTX_SLOW_PATH_EN_SHIFT           4
1948 #define XSTORM_ETH_HW_CONN_AG_CTX_TPH_ENABLE_EN_RESERVED_MASK  0x1 /* cf23en */
1949 #define XSTORM_ETH_HW_CONN_AG_CTX_TPH_ENABLE_EN_RESERVED_SHIFT 5
1950 #define XSTORM_ETH_HW_CONN_AG_CTX_RESERVED12_MASK              0x1 /* rule0en */
1951 #define XSTORM_ETH_HW_CONN_AG_CTX_RESERVED12_SHIFT             6
1952 #define XSTORM_ETH_HW_CONN_AG_CTX_RESERVED13_MASK              0x1 /* rule1en */
1953 #define XSTORM_ETH_HW_CONN_AG_CTX_RESERVED13_SHIFT             7
1954         u8 flags11;
1955 #define XSTORM_ETH_HW_CONN_AG_CTX_RESERVED14_MASK              0x1 /* rule2en */
1956 #define XSTORM_ETH_HW_CONN_AG_CTX_RESERVED14_SHIFT             0
1957 #define XSTORM_ETH_HW_CONN_AG_CTX_RESERVED15_MASK              0x1 /* rule3en */
1958 #define XSTORM_ETH_HW_CONN_AG_CTX_RESERVED15_SHIFT             1
1959 #define XSTORM_ETH_HW_CONN_AG_CTX_TX_DEC_RULE_EN_MASK          0x1 /* rule4en */
1960 #define XSTORM_ETH_HW_CONN_AG_CTX_TX_DEC_RULE_EN_SHIFT         2
1961 #define XSTORM_ETH_HW_CONN_AG_CTX_RULE5EN_MASK                 0x1 /* rule5en */
1962 #define XSTORM_ETH_HW_CONN_AG_CTX_RULE5EN_SHIFT                3
1963 #define XSTORM_ETH_HW_CONN_AG_CTX_RULE6EN_MASK                 0x1 /* rule6en */
1964 #define XSTORM_ETH_HW_CONN_AG_CTX_RULE6EN_SHIFT                4
1965 #define XSTORM_ETH_HW_CONN_AG_CTX_RULE7EN_MASK                 0x1 /* rule7en */
1966 #define XSTORM_ETH_HW_CONN_AG_CTX_RULE7EN_SHIFT                5
1967 #define XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED1_MASK            0x1 /* rule8en */
1968 #define XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED1_SHIFT           6
1969 #define XSTORM_ETH_HW_CONN_AG_CTX_RULE9EN_MASK                 0x1 /* rule9en */
1970 #define XSTORM_ETH_HW_CONN_AG_CTX_RULE9EN_SHIFT                7
1971         u8 flags12;
1972 /* rule10en */
1973 #define XSTORM_ETH_HW_CONN_AG_CTX_RULE10EN_MASK                0x1
1974 #define XSTORM_ETH_HW_CONN_AG_CTX_RULE10EN_SHIFT               0
1975 /* rule11en */
1976 #define XSTORM_ETH_HW_CONN_AG_CTX_RULE11EN_MASK                0x1
1977 #define XSTORM_ETH_HW_CONN_AG_CTX_RULE11EN_SHIFT               1
1978 /* rule12en */
1979 #define XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED2_MASK            0x1
1980 #define XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED2_SHIFT           2
1981 /* rule13en */
1982 #define XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED3_MASK            0x1
1983 #define XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED3_SHIFT           3
1984 /* rule14en */
1985 #define XSTORM_ETH_HW_CONN_AG_CTX_RULE14EN_MASK                0x1
1986 #define XSTORM_ETH_HW_CONN_AG_CTX_RULE14EN_SHIFT               4
1987 /* rule15en */
1988 #define XSTORM_ETH_HW_CONN_AG_CTX_RULE15EN_MASK                0x1
1989 #define XSTORM_ETH_HW_CONN_AG_CTX_RULE15EN_SHIFT               5
1990 /* rule16en */
1991 #define XSTORM_ETH_HW_CONN_AG_CTX_RULE16EN_MASK                0x1
1992 #define XSTORM_ETH_HW_CONN_AG_CTX_RULE16EN_SHIFT               6
1993 /* rule17en */
1994 #define XSTORM_ETH_HW_CONN_AG_CTX_RULE17EN_MASK                0x1
1995 #define XSTORM_ETH_HW_CONN_AG_CTX_RULE17EN_SHIFT               7
1996         u8 flags13;
1997 /* rule18en */
1998 #define XSTORM_ETH_HW_CONN_AG_CTX_RULE18EN_MASK                0x1
1999 #define XSTORM_ETH_HW_CONN_AG_CTX_RULE18EN_SHIFT               0
2000 /* rule19en */
2001 #define XSTORM_ETH_HW_CONN_AG_CTX_RULE19EN_MASK                0x1
2002 #define XSTORM_ETH_HW_CONN_AG_CTX_RULE19EN_SHIFT               1
2003 /* rule20en */
2004 #define XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED4_MASK            0x1
2005 #define XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED4_SHIFT           2
2006 /* rule21en */
2007 #define XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED5_MASK            0x1
2008 #define XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED5_SHIFT           3
2009 /* rule22en */
2010 #define XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED6_MASK            0x1
2011 #define XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED6_SHIFT           4
2012 /* rule23en */
2013 #define XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED7_MASK            0x1
2014 #define XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED7_SHIFT           5
2015 /* rule24en */
2016 #define XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED8_MASK            0x1
2017 #define XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED8_SHIFT           6
2018 /* rule25en */
2019 #define XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED9_MASK            0x1
2020 #define XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED9_SHIFT           7
2021         u8 flags14;
2022 #define XSTORM_ETH_HW_CONN_AG_CTX_EDPM_USE_EXT_HDR_MASK        0x1 /* bit16 */
2023 #define XSTORM_ETH_HW_CONN_AG_CTX_EDPM_USE_EXT_HDR_SHIFT       0
2024 #define XSTORM_ETH_HW_CONN_AG_CTX_EDPM_SEND_RAW_L3L4_MASK      0x1 /* bit17 */
2025 #define XSTORM_ETH_HW_CONN_AG_CTX_EDPM_SEND_RAW_L3L4_SHIFT     1
2026 #define XSTORM_ETH_HW_CONN_AG_CTX_EDPM_INBAND_PROP_HDR_MASK    0x1 /* bit18 */
2027 #define XSTORM_ETH_HW_CONN_AG_CTX_EDPM_INBAND_PROP_HDR_SHIFT   2
2028 #define XSTORM_ETH_HW_CONN_AG_CTX_EDPM_SEND_EXT_TUNNEL_MASK    0x1 /* bit19 */
2029 #define XSTORM_ETH_HW_CONN_AG_CTX_EDPM_SEND_EXT_TUNNEL_SHIFT   3
2030 #define XSTORM_ETH_HW_CONN_AG_CTX_L2_EDPM_ENABLE_MASK          0x1 /* bit20 */
2031 #define XSTORM_ETH_HW_CONN_AG_CTX_L2_EDPM_ENABLE_SHIFT         4
2032 #define XSTORM_ETH_HW_CONN_AG_CTX_ROCE_EDPM_ENABLE_MASK        0x1 /* bit21 */
2033 #define XSTORM_ETH_HW_CONN_AG_CTX_ROCE_EDPM_ENABLE_SHIFT       5
2034 #define XSTORM_ETH_HW_CONN_AG_CTX_TPH_ENABLE_MASK              0x3 /* cf23 */
2035 #define XSTORM_ETH_HW_CONN_AG_CTX_TPH_ENABLE_SHIFT             6
2036         u8 edpm_event_id /* byte2 */;
2037         __le16 physical_q0 /* physical_q0 */;
2038         __le16 e5_reserved1 /* physical_q1 */;
2039         __le16 edpm_num_bds /* physical_q2 */;
2040         __le16 tx_bd_cons /* word3 */;
2041         __le16 tx_bd_prod /* word4 */;
2042         __le16 updated_qm_pq_id /* word5 */;
2043         __le16 conn_dpi /* conn_dpi */;
2044 };
2045
2046
2047
2048 /*
2049  * GFT CAM line struct
2050  */
2051 struct gft_cam_line {
2052         __le32 camline;
2053 /* Indication if the line is valid. */
2054 #define GFT_CAM_LINE_VALID_MASK      0x1
2055 #define GFT_CAM_LINE_VALID_SHIFT     0
2056 /* Data bits, the word that compared with the profile key */
2057 #define GFT_CAM_LINE_DATA_MASK       0x3FFF
2058 #define GFT_CAM_LINE_DATA_SHIFT      1
2059 /* Mask bits, indicate the bits in the data that are Dont-Care */
2060 #define GFT_CAM_LINE_MASK_BITS_MASK  0x3FFF
2061 #define GFT_CAM_LINE_MASK_BITS_SHIFT 15
2062 #define GFT_CAM_LINE_RESERVED1_MASK  0x7
2063 #define GFT_CAM_LINE_RESERVED1_SHIFT 29
2064 };
2065
2066
2067 /*
2068  * GFT CAM line struct (for driversim use)
2069  */
2070 struct gft_cam_line_mapped {
2071         __le32 camline;
2072 /* Indication if the line is valid. */
2073 #define GFT_CAM_LINE_MAPPED_VALID_MASK                     0x1
2074 #define GFT_CAM_LINE_MAPPED_VALID_SHIFT                    0
2075 /* use enum gft_profile_ip_version (use enum gft_profile_ip_version) */
2076 #define GFT_CAM_LINE_MAPPED_IP_VERSION_MASK                0x1
2077 #define GFT_CAM_LINE_MAPPED_IP_VERSION_SHIFT               1
2078 /* use enum gft_profile_ip_version (use enum gft_profile_ip_version) */
2079 #define GFT_CAM_LINE_MAPPED_TUNNEL_IP_VERSION_MASK         0x1
2080 #define GFT_CAM_LINE_MAPPED_TUNNEL_IP_VERSION_SHIFT        2
2081 /* use enum gft_profile_upper_protocol_type
2082  * (use enum gft_profile_upper_protocol_type)
2083  */
2084 #define GFT_CAM_LINE_MAPPED_UPPER_PROTOCOL_TYPE_MASK       0xF
2085 #define GFT_CAM_LINE_MAPPED_UPPER_PROTOCOL_TYPE_SHIFT      3
2086 /* use enum gft_profile_tunnel_type (use enum gft_profile_tunnel_type) */
2087 #define GFT_CAM_LINE_MAPPED_TUNNEL_TYPE_MASK               0xF
2088 #define GFT_CAM_LINE_MAPPED_TUNNEL_TYPE_SHIFT              7
2089 #define GFT_CAM_LINE_MAPPED_PF_ID_MASK                     0xF
2090 #define GFT_CAM_LINE_MAPPED_PF_ID_SHIFT                    11
2091 /* use enum gft_profile_ip_version (use enum gft_profile_ip_version) */
2092 #define GFT_CAM_LINE_MAPPED_IP_VERSION_MASK_MASK           0x1
2093 #define GFT_CAM_LINE_MAPPED_IP_VERSION_MASK_SHIFT          15
2094 /* use enum gft_profile_ip_version (use enum gft_profile_ip_version) */
2095 #define GFT_CAM_LINE_MAPPED_TUNNEL_IP_VERSION_MASK_MASK    0x1
2096 #define GFT_CAM_LINE_MAPPED_TUNNEL_IP_VERSION_MASK_SHIFT   16
2097 /* use enum gft_profile_upper_protocol_type
2098  * (use enum gft_profile_upper_protocol_type)
2099  */
2100 #define GFT_CAM_LINE_MAPPED_UPPER_PROTOCOL_TYPE_MASK_MASK  0xF
2101 #define GFT_CAM_LINE_MAPPED_UPPER_PROTOCOL_TYPE_MASK_SHIFT 17
2102 /* use enum gft_profile_tunnel_type (use enum gft_profile_tunnel_type) */
2103 #define GFT_CAM_LINE_MAPPED_TUNNEL_TYPE_MASK_MASK          0xF
2104 #define GFT_CAM_LINE_MAPPED_TUNNEL_TYPE_MASK_SHIFT         21
2105 #define GFT_CAM_LINE_MAPPED_PF_ID_MASK_MASK                0xF
2106 #define GFT_CAM_LINE_MAPPED_PF_ID_MASK_SHIFT               25
2107 #define GFT_CAM_LINE_MAPPED_RESERVED1_MASK                 0x7
2108 #define GFT_CAM_LINE_MAPPED_RESERVED1_SHIFT                29
2109 };
2110
2111
2112 union gft_cam_line_union {
2113         struct gft_cam_line cam_line;
2114         struct gft_cam_line_mapped cam_line_mapped;
2115 };
2116
2117
2118 /*
2119  * Used in gft_profile_key: Indication for ip version
2120  */
2121 enum gft_profile_ip_version {
2122         GFT_PROFILE_IPV4 = 0,
2123         GFT_PROFILE_IPV6 = 1,
2124         MAX_GFT_PROFILE_IP_VERSION
2125 };
2126
2127
2128 /*
2129  * Profile key stucr fot GFT logic in Prs
2130  */
2131 struct gft_profile_key {
2132         __le16 profile_key;
2133 /* use enum gft_profile_ip_version (use enum gft_profile_ip_version) */
2134 #define GFT_PROFILE_KEY_IP_VERSION_MASK           0x1
2135 #define GFT_PROFILE_KEY_IP_VERSION_SHIFT          0
2136 /* use enum gft_profile_ip_version (use enum gft_profile_ip_version) */
2137 #define GFT_PROFILE_KEY_TUNNEL_IP_VERSION_MASK    0x1
2138 #define GFT_PROFILE_KEY_TUNNEL_IP_VERSION_SHIFT   1
2139 /* use enum gft_profile_upper_protocol_type
2140  * (use enum gft_profile_upper_protocol_type)
2141  */
2142 #define GFT_PROFILE_KEY_UPPER_PROTOCOL_TYPE_MASK  0xF
2143 #define GFT_PROFILE_KEY_UPPER_PROTOCOL_TYPE_SHIFT 2
2144 /* use enum gft_profile_tunnel_type (use enum gft_profile_tunnel_type) */
2145 #define GFT_PROFILE_KEY_TUNNEL_TYPE_MASK          0xF
2146 #define GFT_PROFILE_KEY_TUNNEL_TYPE_SHIFT         6
2147 #define GFT_PROFILE_KEY_PF_ID_MASK                0xF
2148 #define GFT_PROFILE_KEY_PF_ID_SHIFT               10
2149 #define GFT_PROFILE_KEY_RESERVED0_MASK            0x3
2150 #define GFT_PROFILE_KEY_RESERVED0_SHIFT           14
2151 };
2152
2153
2154 /*
2155  * Used in gft_profile_key: Indication for tunnel type
2156  */
2157 enum gft_profile_tunnel_type {
2158         GFT_PROFILE_NO_TUNNEL = 0,
2159         GFT_PROFILE_VXLAN_TUNNEL = 1,
2160         GFT_PROFILE_GRE_MAC_OR_NVGRE_TUNNEL = 2,
2161         GFT_PROFILE_GRE_IP_TUNNEL = 3,
2162         GFT_PROFILE_GENEVE_MAC_TUNNEL = 4,
2163         GFT_PROFILE_GENEVE_IP_TUNNEL = 5,
2164         MAX_GFT_PROFILE_TUNNEL_TYPE
2165 };
2166
2167
2168 /*
2169  * Used in gft_profile_key: Indication for protocol type
2170  */
2171 enum gft_profile_upper_protocol_type {
2172         GFT_PROFILE_ROCE_PROTOCOL = 0,
2173         GFT_PROFILE_RROCE_PROTOCOL = 1,
2174         GFT_PROFILE_FCOE_PROTOCOL = 2,
2175         GFT_PROFILE_ICMP_PROTOCOL = 3,
2176         GFT_PROFILE_ARP_PROTOCOL = 4,
2177         GFT_PROFILE_USER_TCP_SRC_PORT_1_INNER = 5,
2178         GFT_PROFILE_USER_TCP_DST_PORT_1_INNER = 6,
2179         GFT_PROFILE_TCP_PROTOCOL = 7,
2180         GFT_PROFILE_USER_UDP_DST_PORT_1_INNER = 8,
2181         GFT_PROFILE_USER_UDP_DST_PORT_2_OUTER = 9,
2182         GFT_PROFILE_UDP_PROTOCOL = 10,
2183         GFT_PROFILE_USER_IP_1_INNER = 11,
2184         GFT_PROFILE_USER_IP_2_OUTER = 12,
2185         GFT_PROFILE_USER_ETH_1_INNER = 13,
2186         GFT_PROFILE_USER_ETH_2_OUTER = 14,
2187         GFT_PROFILE_RAW = 15,
2188         MAX_GFT_PROFILE_UPPER_PROTOCOL_TYPE
2189 };
2190
2191
2192 /*
2193  * GFT RAM line struct
2194  */
2195 struct gft_ram_line {
2196         __le32 lo;
2197 #define GFT_RAM_LINE_VLAN_SELECT_MASK              0x3
2198 #define GFT_RAM_LINE_VLAN_SELECT_SHIFT             0
2199 #define GFT_RAM_LINE_TUNNEL_ENTROPHY_MASK          0x1
2200 #define GFT_RAM_LINE_TUNNEL_ENTROPHY_SHIFT         2
2201 #define GFT_RAM_LINE_TUNNEL_TTL_EQUAL_ONE_MASK     0x1
2202 #define GFT_RAM_LINE_TUNNEL_TTL_EQUAL_ONE_SHIFT    3
2203 #define GFT_RAM_LINE_TUNNEL_TTL_MASK               0x1
2204 #define GFT_RAM_LINE_TUNNEL_TTL_SHIFT              4
2205 #define GFT_RAM_LINE_TUNNEL_ETHERTYPE_MASK         0x1
2206 #define GFT_RAM_LINE_TUNNEL_ETHERTYPE_SHIFT        5
2207 #define GFT_RAM_LINE_TUNNEL_DST_PORT_MASK          0x1
2208 #define GFT_RAM_LINE_TUNNEL_DST_PORT_SHIFT         6
2209 #define GFT_RAM_LINE_TUNNEL_SRC_PORT_MASK          0x1
2210 #define GFT_RAM_LINE_TUNNEL_SRC_PORT_SHIFT         7
2211 #define GFT_RAM_LINE_TUNNEL_DSCP_MASK              0x1
2212 #define GFT_RAM_LINE_TUNNEL_DSCP_SHIFT             8
2213 #define GFT_RAM_LINE_TUNNEL_OVER_IP_PROTOCOL_MASK  0x1
2214 #define GFT_RAM_LINE_TUNNEL_OVER_IP_PROTOCOL_SHIFT 9
2215 #define GFT_RAM_LINE_TUNNEL_DST_IP_MASK            0x1
2216 #define GFT_RAM_LINE_TUNNEL_DST_IP_SHIFT           10
2217 #define GFT_RAM_LINE_TUNNEL_SRC_IP_MASK            0x1
2218 #define GFT_RAM_LINE_TUNNEL_SRC_IP_SHIFT           11
2219 #define GFT_RAM_LINE_TUNNEL_PRIORITY_MASK          0x1
2220 #define GFT_RAM_LINE_TUNNEL_PRIORITY_SHIFT         12
2221 #define GFT_RAM_LINE_TUNNEL_PROVIDER_VLAN_MASK     0x1
2222 #define GFT_RAM_LINE_TUNNEL_PROVIDER_VLAN_SHIFT    13
2223 #define GFT_RAM_LINE_TUNNEL_VLAN_MASK              0x1
2224 #define GFT_RAM_LINE_TUNNEL_VLAN_SHIFT             14
2225 #define GFT_RAM_LINE_TUNNEL_DST_MAC_MASK           0x1
2226 #define GFT_RAM_LINE_TUNNEL_DST_MAC_SHIFT          15
2227 #define GFT_RAM_LINE_TUNNEL_SRC_MAC_MASK           0x1
2228 #define GFT_RAM_LINE_TUNNEL_SRC_MAC_SHIFT          16
2229 #define GFT_RAM_LINE_TTL_EQUAL_ONE_MASK            0x1
2230 #define GFT_RAM_LINE_TTL_EQUAL_ONE_SHIFT           17
2231 #define GFT_RAM_LINE_TTL_MASK                      0x1
2232 #define GFT_RAM_LINE_TTL_SHIFT                     18
2233 #define GFT_RAM_LINE_ETHERTYPE_MASK                0x1
2234 #define GFT_RAM_LINE_ETHERTYPE_SHIFT               19
2235 #define GFT_RAM_LINE_RESERVED0_MASK                0x1
2236 #define GFT_RAM_LINE_RESERVED0_SHIFT               20
2237 #define GFT_RAM_LINE_TCP_FLAG_FIN_MASK             0x1
2238 #define GFT_RAM_LINE_TCP_FLAG_FIN_SHIFT            21
2239 #define GFT_RAM_LINE_TCP_FLAG_SYN_MASK             0x1
2240 #define GFT_RAM_LINE_TCP_FLAG_SYN_SHIFT            22
2241 #define GFT_RAM_LINE_TCP_FLAG_RST_MASK             0x1
2242 #define GFT_RAM_LINE_TCP_FLAG_RST_SHIFT            23
2243 #define GFT_RAM_LINE_TCP_FLAG_PSH_MASK             0x1
2244 #define GFT_RAM_LINE_TCP_FLAG_PSH_SHIFT            24
2245 #define GFT_RAM_LINE_TCP_FLAG_ACK_MASK             0x1
2246 #define GFT_RAM_LINE_TCP_FLAG_ACK_SHIFT            25
2247 #define GFT_RAM_LINE_TCP_FLAG_URG_MASK             0x1
2248 #define GFT_RAM_LINE_TCP_FLAG_URG_SHIFT            26
2249 #define GFT_RAM_LINE_TCP_FLAG_ECE_MASK             0x1
2250 #define GFT_RAM_LINE_TCP_FLAG_ECE_SHIFT            27
2251 #define GFT_RAM_LINE_TCP_FLAG_CWR_MASK             0x1
2252 #define GFT_RAM_LINE_TCP_FLAG_CWR_SHIFT            28
2253 #define GFT_RAM_LINE_TCP_FLAG_NS_MASK              0x1
2254 #define GFT_RAM_LINE_TCP_FLAG_NS_SHIFT             29
2255 #define GFT_RAM_LINE_DST_PORT_MASK                 0x1
2256 #define GFT_RAM_LINE_DST_PORT_SHIFT                30
2257 #define GFT_RAM_LINE_SRC_PORT_MASK                 0x1U
2258 #define GFT_RAM_LINE_SRC_PORT_SHIFT                31
2259         __le32 hi;
2260 #define GFT_RAM_LINE_DSCP_MASK                     0x1
2261 #define GFT_RAM_LINE_DSCP_SHIFT                    0
2262 #define GFT_RAM_LINE_OVER_IP_PROTOCOL_MASK         0x1
2263 #define GFT_RAM_LINE_OVER_IP_PROTOCOL_SHIFT        1
2264 #define GFT_RAM_LINE_DST_IP_MASK                   0x1
2265 #define GFT_RAM_LINE_DST_IP_SHIFT                  2
2266 #define GFT_RAM_LINE_SRC_IP_MASK                   0x1
2267 #define GFT_RAM_LINE_SRC_IP_SHIFT                  3
2268 #define GFT_RAM_LINE_PRIORITY_MASK                 0x1
2269 #define GFT_RAM_LINE_PRIORITY_SHIFT                4
2270 #define GFT_RAM_LINE_PROVIDER_VLAN_MASK            0x1
2271 #define GFT_RAM_LINE_PROVIDER_VLAN_SHIFT           5
2272 #define GFT_RAM_LINE_VLAN_MASK                     0x1
2273 #define GFT_RAM_LINE_VLAN_SHIFT                    6
2274 #define GFT_RAM_LINE_DST_MAC_MASK                  0x1
2275 #define GFT_RAM_LINE_DST_MAC_SHIFT                 7
2276 #define GFT_RAM_LINE_SRC_MAC_MASK                  0x1
2277 #define GFT_RAM_LINE_SRC_MAC_SHIFT                 8
2278 #define GFT_RAM_LINE_TENANT_ID_MASK                0x1
2279 #define GFT_RAM_LINE_TENANT_ID_SHIFT               9
2280 #define GFT_RAM_LINE_RESERVED1_MASK                0x3FFFFF
2281 #define GFT_RAM_LINE_RESERVED1_SHIFT               10
2282 };
2283
2284
2285 /*
2286  * Used in the first 2 bits for gft_ram_line: Indication for vlan mask
2287  */
2288 enum gft_vlan_select {
2289         INNER_PROVIDER_VLAN = 0,
2290         INNER_VLAN = 1,
2291         OUTER_PROVIDER_VLAN = 2,
2292         OUTER_VLAN = 3,
2293         MAX_GFT_VLAN_SELECT
2294 };
2295
2296
2297 #endif /* __ECORE_HSI_ETH__ */