Imported Upstream version 16.07-rc1
[deb_dpdk.git] / drivers / net / qede / base / ecore_hsi_common.h
1 /*
2  * Copyright (c) 2016 QLogic Corporation.
3  * All rights reserved.
4  * www.qlogic.com
5  *
6  * See LICENSE.qede_pmd for copyright and licensing details.
7  */
8
9 #ifndef __ECORE_HSI_COMMON__
10 #define __ECORE_HSI_COMMON__
11 /********************************/
12 /* Add include to common target */
13 /********************************/
14 #include "common_hsi.h"
15
16 /*
17  * opcodes for the event ring
18  */
19 enum common_event_opcode {
20         COMMON_EVENT_PF_START,
21         COMMON_EVENT_PF_STOP,
22         COMMON_EVENT_VF_START,
23         COMMON_EVENT_VF_STOP,
24         COMMON_EVENT_VF_PF_CHANNEL,
25         COMMON_EVENT_VF_FLR,
26         COMMON_EVENT_PF_UPDATE,
27         COMMON_EVENT_MALICIOUS_VF,
28         COMMON_EVENT_EMPTY,
29         MAX_COMMON_EVENT_OPCODE
30 };
31
32 /*
33  * Common Ramrod Command IDs
34  */
35 enum common_ramrod_cmd_id {
36         COMMON_RAMROD_UNUSED,
37         COMMON_RAMROD_PF_START /* PF Function Start Ramrod */,
38         COMMON_RAMROD_PF_STOP /* PF Function Stop Ramrod */,
39         COMMON_RAMROD_VF_START /* VF Function Start */,
40         COMMON_RAMROD_VF_STOP /* VF Function Stop Ramrod */,
41         COMMON_RAMROD_PF_UPDATE /* PF update Ramrod */,
42         COMMON_RAMROD_EMPTY /* Empty Ramrod */,
43         MAX_COMMON_RAMROD_CMD_ID
44 };
45
46 /*
47  * The core storm context for the Ystorm
48  */
49 struct ystorm_core_conn_st_ctx {
50         __le32 reserved[4];
51 };
52
53 /*
54  * The core storm context for the Pstorm
55  */
56 struct pstorm_core_conn_st_ctx {
57         __le32 reserved[4];
58 };
59
60 /*
61  * Core Slowpath Connection storm context of Xstorm
62  */
63 struct xstorm_core_conn_st_ctx {
64         __le32 spq_base_lo /* SPQ Ring Base Address low dword */;
65         __le32 spq_base_hi /* SPQ Ring Base Address high dword */;
66         struct regpair consolid_base_addr /* Consolidation Ring Base Address */
67           ;
68         __le16 spq_cons /* SPQ Ring Consumer */;
69         __le16 consolid_cons /* Consolidation Ring Consumer */;
70         __le32 reserved0[55] /* Pad to 15 cycles */;
71 };
72
73 struct xstorm_core_conn_ag_ctx {
74         u8 reserved0 /* cdu_validation */;
75         u8 core_state /* state */;
76         u8 flags0;
77 #define XSTORM_CORE_CONN_AG_CTX_EXIST_IN_QM0_MASK         0x1
78 #define XSTORM_CORE_CONN_AG_CTX_EXIST_IN_QM0_SHIFT        0
79 #define XSTORM_CORE_CONN_AG_CTX_RESERVED1_MASK            0x1
80 #define XSTORM_CORE_CONN_AG_CTX_RESERVED1_SHIFT           1
81 #define XSTORM_CORE_CONN_AG_CTX_RESERVED2_MASK            0x1
82 #define XSTORM_CORE_CONN_AG_CTX_RESERVED2_SHIFT           2
83 #define XSTORM_CORE_CONN_AG_CTX_EXIST_IN_QM3_MASK         0x1
84 #define XSTORM_CORE_CONN_AG_CTX_EXIST_IN_QM3_SHIFT        3
85 #define XSTORM_CORE_CONN_AG_CTX_RESERVED3_MASK            0x1
86 #define XSTORM_CORE_CONN_AG_CTX_RESERVED3_SHIFT           4
87 #define XSTORM_CORE_CONN_AG_CTX_RESERVED4_MASK            0x1
88 #define XSTORM_CORE_CONN_AG_CTX_RESERVED4_SHIFT           5
89 #define XSTORM_CORE_CONN_AG_CTX_RESERVED5_MASK            0x1
90 #define XSTORM_CORE_CONN_AG_CTX_RESERVED5_SHIFT           6
91 #define XSTORM_CORE_CONN_AG_CTX_RESERVED6_MASK            0x1
92 #define XSTORM_CORE_CONN_AG_CTX_RESERVED6_SHIFT           7
93         u8 flags1;
94 #define XSTORM_CORE_CONN_AG_CTX_RESERVED7_MASK            0x1
95 #define XSTORM_CORE_CONN_AG_CTX_RESERVED7_SHIFT           0
96 #define XSTORM_CORE_CONN_AG_CTX_RESERVED8_MASK            0x1
97 #define XSTORM_CORE_CONN_AG_CTX_RESERVED8_SHIFT           1
98 #define XSTORM_CORE_CONN_AG_CTX_RESERVED9_MASK            0x1
99 #define XSTORM_CORE_CONN_AG_CTX_RESERVED9_SHIFT           2
100 #define XSTORM_CORE_CONN_AG_CTX_BIT11_MASK                0x1
101 #define XSTORM_CORE_CONN_AG_CTX_BIT11_SHIFT               3
102 #define XSTORM_CORE_CONN_AG_CTX_BIT12_MASK                0x1
103 #define XSTORM_CORE_CONN_AG_CTX_BIT12_SHIFT               4
104 #define XSTORM_CORE_CONN_AG_CTX_BIT13_MASK                0x1
105 #define XSTORM_CORE_CONN_AG_CTX_BIT13_SHIFT               5
106 #define XSTORM_CORE_CONN_AG_CTX_TX_RULE_ACTIVE_MASK       0x1
107 #define XSTORM_CORE_CONN_AG_CTX_TX_RULE_ACTIVE_SHIFT      6
108 #define XSTORM_CORE_CONN_AG_CTX_DQ_CF_ACTIVE_MASK         0x1
109 #define XSTORM_CORE_CONN_AG_CTX_DQ_CF_ACTIVE_SHIFT        7
110         u8 flags2;
111 #define XSTORM_CORE_CONN_AG_CTX_CF0_MASK                  0x3
112 #define XSTORM_CORE_CONN_AG_CTX_CF0_SHIFT                 0
113 #define XSTORM_CORE_CONN_AG_CTX_CF1_MASK                  0x3
114 #define XSTORM_CORE_CONN_AG_CTX_CF1_SHIFT                 2
115 #define XSTORM_CORE_CONN_AG_CTX_CF2_MASK                  0x3
116 #define XSTORM_CORE_CONN_AG_CTX_CF2_SHIFT                 4
117 #define XSTORM_CORE_CONN_AG_CTX_CF3_MASK                  0x3
118 #define XSTORM_CORE_CONN_AG_CTX_CF3_SHIFT                 6
119         u8 flags3;
120 #define XSTORM_CORE_CONN_AG_CTX_CF4_MASK                  0x3
121 #define XSTORM_CORE_CONN_AG_CTX_CF4_SHIFT                 0
122 #define XSTORM_CORE_CONN_AG_CTX_CF5_MASK                  0x3
123 #define XSTORM_CORE_CONN_AG_CTX_CF5_SHIFT                 2
124 #define XSTORM_CORE_CONN_AG_CTX_CF6_MASK                  0x3
125 #define XSTORM_CORE_CONN_AG_CTX_CF6_SHIFT                 4
126 #define XSTORM_CORE_CONN_AG_CTX_CF7_MASK                  0x3
127 #define XSTORM_CORE_CONN_AG_CTX_CF7_SHIFT                 6
128         u8 flags4;
129 #define XSTORM_CORE_CONN_AG_CTX_CF8_MASK                  0x3
130 #define XSTORM_CORE_CONN_AG_CTX_CF8_SHIFT                 0
131 #define XSTORM_CORE_CONN_AG_CTX_CF9_MASK                  0x3
132 #define XSTORM_CORE_CONN_AG_CTX_CF9_SHIFT                 2
133 #define XSTORM_CORE_CONN_AG_CTX_CF10_MASK                 0x3
134 #define XSTORM_CORE_CONN_AG_CTX_CF10_SHIFT                4
135 #define XSTORM_CORE_CONN_AG_CTX_CF11_MASK                 0x3
136 #define XSTORM_CORE_CONN_AG_CTX_CF11_SHIFT                6
137         u8 flags5;
138 #define XSTORM_CORE_CONN_AG_CTX_CF12_MASK                 0x3
139 #define XSTORM_CORE_CONN_AG_CTX_CF12_SHIFT                0
140 #define XSTORM_CORE_CONN_AG_CTX_CF13_MASK                 0x3
141 #define XSTORM_CORE_CONN_AG_CTX_CF13_SHIFT                2
142 #define XSTORM_CORE_CONN_AG_CTX_CF14_MASK                 0x3
143 #define XSTORM_CORE_CONN_AG_CTX_CF14_SHIFT                4
144 #define XSTORM_CORE_CONN_AG_CTX_CF15_MASK                 0x3
145 #define XSTORM_CORE_CONN_AG_CTX_CF15_SHIFT                6
146         u8 flags6;
147 #define XSTORM_CORE_CONN_AG_CTX_CONSOLID_PROD_CF_MASK     0x3
148 #define XSTORM_CORE_CONN_AG_CTX_CONSOLID_PROD_CF_SHIFT    0
149 #define XSTORM_CORE_CONN_AG_CTX_CF17_MASK                 0x3
150 #define XSTORM_CORE_CONN_AG_CTX_CF17_SHIFT                2
151 #define XSTORM_CORE_CONN_AG_CTX_DQ_CF_MASK                0x3
152 #define XSTORM_CORE_CONN_AG_CTX_DQ_CF_SHIFT               4
153 #define XSTORM_CORE_CONN_AG_CTX_TERMINATE_CF_MASK         0x3
154 #define XSTORM_CORE_CONN_AG_CTX_TERMINATE_CF_SHIFT        6
155         u8 flags7;
156 #define XSTORM_CORE_CONN_AG_CTX_FLUSH_Q0_MASK             0x3
157 #define XSTORM_CORE_CONN_AG_CTX_FLUSH_Q0_SHIFT            0
158 #define XSTORM_CORE_CONN_AG_CTX_RESERVED10_MASK           0x3
159 #define XSTORM_CORE_CONN_AG_CTX_RESERVED10_SHIFT          2
160 #define XSTORM_CORE_CONN_AG_CTX_SLOW_PATH_MASK            0x3
161 #define XSTORM_CORE_CONN_AG_CTX_SLOW_PATH_SHIFT           4
162 #define XSTORM_CORE_CONN_AG_CTX_CF0EN_MASK                0x1
163 #define XSTORM_CORE_CONN_AG_CTX_CF0EN_SHIFT               6
164 #define XSTORM_CORE_CONN_AG_CTX_CF1EN_MASK                0x1
165 #define XSTORM_CORE_CONN_AG_CTX_CF1EN_SHIFT               7
166         u8 flags8;
167 #define XSTORM_CORE_CONN_AG_CTX_CF2EN_MASK                0x1
168 #define XSTORM_CORE_CONN_AG_CTX_CF2EN_SHIFT               0
169 #define XSTORM_CORE_CONN_AG_CTX_CF3EN_MASK                0x1
170 #define XSTORM_CORE_CONN_AG_CTX_CF3EN_SHIFT               1
171 #define XSTORM_CORE_CONN_AG_CTX_CF4EN_MASK                0x1
172 #define XSTORM_CORE_CONN_AG_CTX_CF4EN_SHIFT               2
173 #define XSTORM_CORE_CONN_AG_CTX_CF5EN_MASK                0x1
174 #define XSTORM_CORE_CONN_AG_CTX_CF5EN_SHIFT               3
175 #define XSTORM_CORE_CONN_AG_CTX_CF6EN_MASK                0x1
176 #define XSTORM_CORE_CONN_AG_CTX_CF6EN_SHIFT               4
177 #define XSTORM_CORE_CONN_AG_CTX_CF7EN_MASK                0x1
178 #define XSTORM_CORE_CONN_AG_CTX_CF7EN_SHIFT               5
179 #define XSTORM_CORE_CONN_AG_CTX_CF8EN_MASK                0x1
180 #define XSTORM_CORE_CONN_AG_CTX_CF8EN_SHIFT               6
181 #define XSTORM_CORE_CONN_AG_CTX_CF9EN_MASK                0x1
182 #define XSTORM_CORE_CONN_AG_CTX_CF9EN_SHIFT               7
183         u8 flags9;
184 #define XSTORM_CORE_CONN_AG_CTX_CF10EN_MASK               0x1
185 #define XSTORM_CORE_CONN_AG_CTX_CF10EN_SHIFT              0
186 #define XSTORM_CORE_CONN_AG_CTX_CF11EN_MASK               0x1
187 #define XSTORM_CORE_CONN_AG_CTX_CF11EN_SHIFT              1
188 #define XSTORM_CORE_CONN_AG_CTX_CF12EN_MASK               0x1
189 #define XSTORM_CORE_CONN_AG_CTX_CF12EN_SHIFT              2
190 #define XSTORM_CORE_CONN_AG_CTX_CF13EN_MASK               0x1
191 #define XSTORM_CORE_CONN_AG_CTX_CF13EN_SHIFT              3
192 #define XSTORM_CORE_CONN_AG_CTX_CF14EN_MASK               0x1
193 #define XSTORM_CORE_CONN_AG_CTX_CF14EN_SHIFT              4
194 #define XSTORM_CORE_CONN_AG_CTX_CF15EN_MASK               0x1
195 #define XSTORM_CORE_CONN_AG_CTX_CF15EN_SHIFT              5
196 #define XSTORM_CORE_CONN_AG_CTX_CONSOLID_PROD_CF_EN_MASK  0x1
197 #define XSTORM_CORE_CONN_AG_CTX_CONSOLID_PROD_CF_EN_SHIFT 6
198 #define XSTORM_CORE_CONN_AG_CTX_CF17EN_MASK               0x1
199 #define XSTORM_CORE_CONN_AG_CTX_CF17EN_SHIFT              7
200         u8 flags10;
201 #define XSTORM_CORE_CONN_AG_CTX_DQ_CF_EN_MASK             0x1
202 #define XSTORM_CORE_CONN_AG_CTX_DQ_CF_EN_SHIFT            0
203 #define XSTORM_CORE_CONN_AG_CTX_TERMINATE_CF_EN_MASK      0x1
204 #define XSTORM_CORE_CONN_AG_CTX_TERMINATE_CF_EN_SHIFT     1
205 #define XSTORM_CORE_CONN_AG_CTX_FLUSH_Q0_EN_MASK          0x1
206 #define XSTORM_CORE_CONN_AG_CTX_FLUSH_Q0_EN_SHIFT         2
207 #define XSTORM_CORE_CONN_AG_CTX_RESERVED11_MASK           0x1
208 #define XSTORM_CORE_CONN_AG_CTX_RESERVED11_SHIFT          3
209 #define XSTORM_CORE_CONN_AG_CTX_SLOW_PATH_EN_MASK         0x1
210 #define XSTORM_CORE_CONN_AG_CTX_SLOW_PATH_EN_SHIFT        4
211 #define XSTORM_CORE_CONN_AG_CTX_CF23EN_MASK               0x1
212 #define XSTORM_CORE_CONN_AG_CTX_CF23EN_SHIFT              5
213 #define XSTORM_CORE_CONN_AG_CTX_RESERVED12_MASK           0x1
214 #define XSTORM_CORE_CONN_AG_CTX_RESERVED12_SHIFT          6
215 #define XSTORM_CORE_CONN_AG_CTX_RESERVED13_MASK           0x1
216 #define XSTORM_CORE_CONN_AG_CTX_RESERVED13_SHIFT          7
217         u8 flags11;
218 #define XSTORM_CORE_CONN_AG_CTX_RESERVED14_MASK           0x1
219 #define XSTORM_CORE_CONN_AG_CTX_RESERVED14_SHIFT          0
220 #define XSTORM_CORE_CONN_AG_CTX_RESERVED15_MASK           0x1
221 #define XSTORM_CORE_CONN_AG_CTX_RESERVED15_SHIFT          1
222 #define XSTORM_CORE_CONN_AG_CTX_TX_DEC_RULE_EN_MASK       0x1
223 #define XSTORM_CORE_CONN_AG_CTX_TX_DEC_RULE_EN_SHIFT      2
224 #define XSTORM_CORE_CONN_AG_CTX_RULE5EN_MASK              0x1
225 #define XSTORM_CORE_CONN_AG_CTX_RULE5EN_SHIFT             3
226 #define XSTORM_CORE_CONN_AG_CTX_RULE6EN_MASK              0x1
227 #define XSTORM_CORE_CONN_AG_CTX_RULE6EN_SHIFT             4
228 #define XSTORM_CORE_CONN_AG_CTX_RULE7EN_MASK              0x1
229 #define XSTORM_CORE_CONN_AG_CTX_RULE7EN_SHIFT             5
230 #define XSTORM_CORE_CONN_AG_CTX_A0_RESERVED1_MASK         0x1
231 #define XSTORM_CORE_CONN_AG_CTX_A0_RESERVED1_SHIFT        6
232 #define XSTORM_CORE_CONN_AG_CTX_RULE9EN_MASK              0x1
233 #define XSTORM_CORE_CONN_AG_CTX_RULE9EN_SHIFT             7
234         u8 flags12;
235 #define XSTORM_CORE_CONN_AG_CTX_RULE10EN_MASK             0x1
236 #define XSTORM_CORE_CONN_AG_CTX_RULE10EN_SHIFT            0
237 #define XSTORM_CORE_CONN_AG_CTX_RULE11EN_MASK             0x1
238 #define XSTORM_CORE_CONN_AG_CTX_RULE11EN_SHIFT            1
239 #define XSTORM_CORE_CONN_AG_CTX_A0_RESERVED2_MASK         0x1
240 #define XSTORM_CORE_CONN_AG_CTX_A0_RESERVED2_SHIFT        2
241 #define XSTORM_CORE_CONN_AG_CTX_A0_RESERVED3_MASK         0x1
242 #define XSTORM_CORE_CONN_AG_CTX_A0_RESERVED3_SHIFT        3
243 #define XSTORM_CORE_CONN_AG_CTX_RULE14EN_MASK             0x1
244 #define XSTORM_CORE_CONN_AG_CTX_RULE14EN_SHIFT            4
245 #define XSTORM_CORE_CONN_AG_CTX_RULE15EN_MASK             0x1
246 #define XSTORM_CORE_CONN_AG_CTX_RULE15EN_SHIFT            5
247 #define XSTORM_CORE_CONN_AG_CTX_RULE16EN_MASK             0x1
248 #define XSTORM_CORE_CONN_AG_CTX_RULE16EN_SHIFT            6
249 #define XSTORM_CORE_CONN_AG_CTX_RULE17EN_MASK             0x1
250 #define XSTORM_CORE_CONN_AG_CTX_RULE17EN_SHIFT            7
251         u8 flags13;
252 #define XSTORM_CORE_CONN_AG_CTX_RULE18EN_MASK             0x1
253 #define XSTORM_CORE_CONN_AG_CTX_RULE18EN_SHIFT            0
254 #define XSTORM_CORE_CONN_AG_CTX_RULE19EN_MASK             0x1
255 #define XSTORM_CORE_CONN_AG_CTX_RULE19EN_SHIFT            1
256 #define XSTORM_CORE_CONN_AG_CTX_A0_RESERVED4_MASK         0x1
257 #define XSTORM_CORE_CONN_AG_CTX_A0_RESERVED4_SHIFT        2
258 #define XSTORM_CORE_CONN_AG_CTX_A0_RESERVED5_MASK         0x1
259 #define XSTORM_CORE_CONN_AG_CTX_A0_RESERVED5_SHIFT        3
260 #define XSTORM_CORE_CONN_AG_CTX_A0_RESERVED6_MASK         0x1
261 #define XSTORM_CORE_CONN_AG_CTX_A0_RESERVED6_SHIFT        4
262 #define XSTORM_CORE_CONN_AG_CTX_A0_RESERVED7_MASK         0x1
263 #define XSTORM_CORE_CONN_AG_CTX_A0_RESERVED7_SHIFT        5
264 #define XSTORM_CORE_CONN_AG_CTX_A0_RESERVED8_MASK         0x1
265 #define XSTORM_CORE_CONN_AG_CTX_A0_RESERVED8_SHIFT        6
266 #define XSTORM_CORE_CONN_AG_CTX_A0_RESERVED9_MASK         0x1
267 #define XSTORM_CORE_CONN_AG_CTX_A0_RESERVED9_SHIFT        7
268         u8 flags14;
269 #define XSTORM_CORE_CONN_AG_CTX_BIT16_MASK                0x1
270 #define XSTORM_CORE_CONN_AG_CTX_BIT16_SHIFT               0
271 #define XSTORM_CORE_CONN_AG_CTX_BIT17_MASK                0x1
272 #define XSTORM_CORE_CONN_AG_CTX_BIT17_SHIFT               1
273 #define XSTORM_CORE_CONN_AG_CTX_BIT18_MASK                0x1
274 #define XSTORM_CORE_CONN_AG_CTX_BIT18_SHIFT               2
275 #define XSTORM_CORE_CONN_AG_CTX_BIT19_MASK                0x1
276 #define XSTORM_CORE_CONN_AG_CTX_BIT19_SHIFT               3
277 #define XSTORM_CORE_CONN_AG_CTX_BIT20_MASK                0x1
278 #define XSTORM_CORE_CONN_AG_CTX_BIT20_SHIFT               4
279 #define XSTORM_CORE_CONN_AG_CTX_BIT21_MASK                0x1
280 #define XSTORM_CORE_CONN_AG_CTX_BIT21_SHIFT               5
281 #define XSTORM_CORE_CONN_AG_CTX_CF23_MASK                 0x3
282 #define XSTORM_CORE_CONN_AG_CTX_CF23_SHIFT                6
283         u8 byte2 /* byte2 */;
284         __le16 physical_q0 /* physical_q0 */;
285         __le16 consolid_prod /* physical_q1 */;
286         __le16 reserved16 /* physical_q2 */;
287         __le16 tx_bd_cons /* word3 */;
288         __le16 tx_bd_or_spq_prod /* word4 */;
289         __le16 word5 /* word5 */;
290         __le16 conn_dpi /* conn_dpi */;
291         u8 byte3 /* byte3 */;
292         u8 byte4 /* byte4 */;
293         u8 byte5 /* byte5 */;
294         u8 byte6 /* byte6 */;
295         __le32 reg0 /* reg0 */;
296         __le32 reg1 /* reg1 */;
297         __le32 reg2 /* reg2 */;
298         __le32 reg3 /* reg3 */;
299         __le32 reg4 /* reg4 */;
300         __le32 reg5 /* cf_array0 */;
301         __le32 reg6 /* cf_array1 */;
302         __le16 word7 /* word7 */;
303         __le16 word8 /* word8 */;
304         __le16 word9 /* word9 */;
305         __le16 word10 /* word10 */;
306         __le32 reg7 /* reg7 */;
307         __le32 reg8 /* reg8 */;
308         __le32 reg9 /* reg9 */;
309         u8 byte7 /* byte7 */;
310         u8 byte8 /* byte8 */;
311         u8 byte9 /* byte9 */;
312         u8 byte10 /* byte10 */;
313         u8 byte11 /* byte11 */;
314         u8 byte12 /* byte12 */;
315         u8 byte13 /* byte13 */;
316         u8 byte14 /* byte14 */;
317         u8 byte15 /* byte15 */;
318         u8 byte16 /* byte16 */;
319         __le16 word11 /* word11 */;
320         __le32 reg10 /* reg10 */;
321         __le32 reg11 /* reg11 */;
322         __le32 reg12 /* reg12 */;
323         __le32 reg13 /* reg13 */;
324         __le32 reg14 /* reg14 */;
325         __le32 reg15 /* reg15 */;
326         __le32 reg16 /* reg16 */;
327         __le32 reg17 /* reg17 */;
328         __le32 reg18 /* reg18 */;
329         __le32 reg19 /* reg19 */;
330         __le16 word12 /* word12 */;
331         __le16 word13 /* word13 */;
332         __le16 word14 /* word14 */;
333         __le16 word15 /* word15 */;
334 };
335
336 struct tstorm_core_conn_ag_ctx {
337         u8 byte0 /* cdu_validation */;
338         u8 byte1 /* state */;
339         u8 flags0;
340 #define TSTORM_CORE_CONN_AG_CTX_BIT0_MASK     0x1
341 #define TSTORM_CORE_CONN_AG_CTX_BIT0_SHIFT    0
342 #define TSTORM_CORE_CONN_AG_CTX_BIT1_MASK     0x1
343 #define TSTORM_CORE_CONN_AG_CTX_BIT1_SHIFT    1
344 #define TSTORM_CORE_CONN_AG_CTX_BIT2_MASK     0x1
345 #define TSTORM_CORE_CONN_AG_CTX_BIT2_SHIFT    2
346 #define TSTORM_CORE_CONN_AG_CTX_BIT3_MASK     0x1
347 #define TSTORM_CORE_CONN_AG_CTX_BIT3_SHIFT    3
348 #define TSTORM_CORE_CONN_AG_CTX_BIT4_MASK     0x1
349 #define TSTORM_CORE_CONN_AG_CTX_BIT4_SHIFT    4
350 #define TSTORM_CORE_CONN_AG_CTX_BIT5_MASK     0x1
351 #define TSTORM_CORE_CONN_AG_CTX_BIT5_SHIFT    5
352 #define TSTORM_CORE_CONN_AG_CTX_CF0_MASK      0x3
353 #define TSTORM_CORE_CONN_AG_CTX_CF0_SHIFT     6
354         u8 flags1;
355 #define TSTORM_CORE_CONN_AG_CTX_CF1_MASK      0x3
356 #define TSTORM_CORE_CONN_AG_CTX_CF1_SHIFT     0
357 #define TSTORM_CORE_CONN_AG_CTX_CF2_MASK      0x3
358 #define TSTORM_CORE_CONN_AG_CTX_CF2_SHIFT     2
359 #define TSTORM_CORE_CONN_AG_CTX_CF3_MASK      0x3
360 #define TSTORM_CORE_CONN_AG_CTX_CF3_SHIFT     4
361 #define TSTORM_CORE_CONN_AG_CTX_CF4_MASK      0x3
362 #define TSTORM_CORE_CONN_AG_CTX_CF4_SHIFT     6
363         u8 flags2;
364 #define TSTORM_CORE_CONN_AG_CTX_CF5_MASK      0x3
365 #define TSTORM_CORE_CONN_AG_CTX_CF5_SHIFT     0
366 #define TSTORM_CORE_CONN_AG_CTX_CF6_MASK      0x3
367 #define TSTORM_CORE_CONN_AG_CTX_CF6_SHIFT     2
368 #define TSTORM_CORE_CONN_AG_CTX_CF7_MASK      0x3
369 #define TSTORM_CORE_CONN_AG_CTX_CF7_SHIFT     4
370 #define TSTORM_CORE_CONN_AG_CTX_CF8_MASK      0x3
371 #define TSTORM_CORE_CONN_AG_CTX_CF8_SHIFT     6
372         u8 flags3;
373 #define TSTORM_CORE_CONN_AG_CTX_CF9_MASK      0x3
374 #define TSTORM_CORE_CONN_AG_CTX_CF9_SHIFT     0
375 #define TSTORM_CORE_CONN_AG_CTX_CF10_MASK     0x3
376 #define TSTORM_CORE_CONN_AG_CTX_CF10_SHIFT    2
377 #define TSTORM_CORE_CONN_AG_CTX_CF0EN_MASK    0x1
378 #define TSTORM_CORE_CONN_AG_CTX_CF0EN_SHIFT   4
379 #define TSTORM_CORE_CONN_AG_CTX_CF1EN_MASK    0x1
380 #define TSTORM_CORE_CONN_AG_CTX_CF1EN_SHIFT   5
381 #define TSTORM_CORE_CONN_AG_CTX_CF2EN_MASK    0x1
382 #define TSTORM_CORE_CONN_AG_CTX_CF2EN_SHIFT   6
383 #define TSTORM_CORE_CONN_AG_CTX_CF3EN_MASK    0x1
384 #define TSTORM_CORE_CONN_AG_CTX_CF3EN_SHIFT   7
385         u8 flags4;
386 #define TSTORM_CORE_CONN_AG_CTX_CF4EN_MASK    0x1
387 #define TSTORM_CORE_CONN_AG_CTX_CF4EN_SHIFT   0
388 #define TSTORM_CORE_CONN_AG_CTX_CF5EN_MASK    0x1
389 #define TSTORM_CORE_CONN_AG_CTX_CF5EN_SHIFT   1
390 #define TSTORM_CORE_CONN_AG_CTX_CF6EN_MASK    0x1
391 #define TSTORM_CORE_CONN_AG_CTX_CF6EN_SHIFT   2
392 #define TSTORM_CORE_CONN_AG_CTX_CF7EN_MASK    0x1
393 #define TSTORM_CORE_CONN_AG_CTX_CF7EN_SHIFT   3
394 #define TSTORM_CORE_CONN_AG_CTX_CF8EN_MASK    0x1
395 #define TSTORM_CORE_CONN_AG_CTX_CF8EN_SHIFT   4
396 #define TSTORM_CORE_CONN_AG_CTX_CF9EN_MASK    0x1
397 #define TSTORM_CORE_CONN_AG_CTX_CF9EN_SHIFT   5
398 #define TSTORM_CORE_CONN_AG_CTX_CF10EN_MASK   0x1
399 #define TSTORM_CORE_CONN_AG_CTX_CF10EN_SHIFT  6
400 #define TSTORM_CORE_CONN_AG_CTX_RULE0EN_MASK  0x1
401 #define TSTORM_CORE_CONN_AG_CTX_RULE0EN_SHIFT 7
402         u8 flags5;
403 #define TSTORM_CORE_CONN_AG_CTX_RULE1EN_MASK  0x1
404 #define TSTORM_CORE_CONN_AG_CTX_RULE1EN_SHIFT 0
405 #define TSTORM_CORE_CONN_AG_CTX_RULE2EN_MASK  0x1
406 #define TSTORM_CORE_CONN_AG_CTX_RULE2EN_SHIFT 1
407 #define TSTORM_CORE_CONN_AG_CTX_RULE3EN_MASK  0x1
408 #define TSTORM_CORE_CONN_AG_CTX_RULE3EN_SHIFT 2
409 #define TSTORM_CORE_CONN_AG_CTX_RULE4EN_MASK  0x1
410 #define TSTORM_CORE_CONN_AG_CTX_RULE4EN_SHIFT 3
411 #define TSTORM_CORE_CONN_AG_CTX_RULE5EN_MASK  0x1
412 #define TSTORM_CORE_CONN_AG_CTX_RULE5EN_SHIFT 4
413 #define TSTORM_CORE_CONN_AG_CTX_RULE6EN_MASK  0x1
414 #define TSTORM_CORE_CONN_AG_CTX_RULE6EN_SHIFT 5
415 #define TSTORM_CORE_CONN_AG_CTX_RULE7EN_MASK  0x1
416 #define TSTORM_CORE_CONN_AG_CTX_RULE7EN_SHIFT 6
417 #define TSTORM_CORE_CONN_AG_CTX_RULE8EN_MASK  0x1
418 #define TSTORM_CORE_CONN_AG_CTX_RULE8EN_SHIFT 7
419         __le32 reg0 /* reg0 */;
420         __le32 reg1 /* reg1 */;
421         __le32 reg2 /* reg2 */;
422         __le32 reg3 /* reg3 */;
423         __le32 reg4 /* reg4 */;
424         __le32 reg5 /* reg5 */;
425         __le32 reg6 /* reg6 */;
426         __le32 reg7 /* reg7 */;
427         __le32 reg8 /* reg8 */;
428         u8 byte2 /* byte2 */;
429         u8 byte3 /* byte3 */;
430         __le16 word0 /* word0 */;
431         u8 byte4 /* byte4 */;
432         u8 byte5 /* byte5 */;
433         __le16 word1 /* word1 */;
434         __le16 word2 /* conn_dpi */;
435         __le16 word3 /* word3 */;
436         __le32 reg9 /* reg9 */;
437         __le32 reg10 /* reg10 */;
438 };
439
440 struct ustorm_core_conn_ag_ctx {
441         u8 reserved /* cdu_validation */;
442         u8 byte1 /* state */;
443         u8 flags0;
444 #define USTORM_CORE_CONN_AG_CTX_BIT0_MASK     0x1
445 #define USTORM_CORE_CONN_AG_CTX_BIT0_SHIFT    0
446 #define USTORM_CORE_CONN_AG_CTX_BIT1_MASK     0x1
447 #define USTORM_CORE_CONN_AG_CTX_BIT1_SHIFT    1
448 #define USTORM_CORE_CONN_AG_CTX_CF0_MASK      0x3
449 #define USTORM_CORE_CONN_AG_CTX_CF0_SHIFT     2
450 #define USTORM_CORE_CONN_AG_CTX_CF1_MASK      0x3
451 #define USTORM_CORE_CONN_AG_CTX_CF1_SHIFT     4
452 #define USTORM_CORE_CONN_AG_CTX_CF2_MASK      0x3
453 #define USTORM_CORE_CONN_AG_CTX_CF2_SHIFT     6
454         u8 flags1;
455 #define USTORM_CORE_CONN_AG_CTX_CF3_MASK      0x3
456 #define USTORM_CORE_CONN_AG_CTX_CF3_SHIFT     0
457 #define USTORM_CORE_CONN_AG_CTX_CF4_MASK      0x3
458 #define USTORM_CORE_CONN_AG_CTX_CF4_SHIFT     2
459 #define USTORM_CORE_CONN_AG_CTX_CF5_MASK      0x3
460 #define USTORM_CORE_CONN_AG_CTX_CF5_SHIFT     4
461 #define USTORM_CORE_CONN_AG_CTX_CF6_MASK      0x3
462 #define USTORM_CORE_CONN_AG_CTX_CF6_SHIFT     6
463         u8 flags2;
464 #define USTORM_CORE_CONN_AG_CTX_CF0EN_MASK    0x1
465 #define USTORM_CORE_CONN_AG_CTX_CF0EN_SHIFT   0
466 #define USTORM_CORE_CONN_AG_CTX_CF1EN_MASK    0x1
467 #define USTORM_CORE_CONN_AG_CTX_CF1EN_SHIFT   1
468 #define USTORM_CORE_CONN_AG_CTX_CF2EN_MASK    0x1
469 #define USTORM_CORE_CONN_AG_CTX_CF2EN_SHIFT   2
470 #define USTORM_CORE_CONN_AG_CTX_CF3EN_MASK    0x1
471 #define USTORM_CORE_CONN_AG_CTX_CF3EN_SHIFT   3
472 #define USTORM_CORE_CONN_AG_CTX_CF4EN_MASK    0x1
473 #define USTORM_CORE_CONN_AG_CTX_CF4EN_SHIFT   4
474 #define USTORM_CORE_CONN_AG_CTX_CF5EN_MASK    0x1
475 #define USTORM_CORE_CONN_AG_CTX_CF5EN_SHIFT   5
476 #define USTORM_CORE_CONN_AG_CTX_CF6EN_MASK    0x1
477 #define USTORM_CORE_CONN_AG_CTX_CF6EN_SHIFT   6
478 #define USTORM_CORE_CONN_AG_CTX_RULE0EN_MASK  0x1
479 #define USTORM_CORE_CONN_AG_CTX_RULE0EN_SHIFT 7
480         u8 flags3;
481 #define USTORM_CORE_CONN_AG_CTX_RULE1EN_MASK  0x1
482 #define USTORM_CORE_CONN_AG_CTX_RULE1EN_SHIFT 0
483 #define USTORM_CORE_CONN_AG_CTX_RULE2EN_MASK  0x1
484 #define USTORM_CORE_CONN_AG_CTX_RULE2EN_SHIFT 1
485 #define USTORM_CORE_CONN_AG_CTX_RULE3EN_MASK  0x1
486 #define USTORM_CORE_CONN_AG_CTX_RULE3EN_SHIFT 2
487 #define USTORM_CORE_CONN_AG_CTX_RULE4EN_MASK  0x1
488 #define USTORM_CORE_CONN_AG_CTX_RULE4EN_SHIFT 3
489 #define USTORM_CORE_CONN_AG_CTX_RULE5EN_MASK  0x1
490 #define USTORM_CORE_CONN_AG_CTX_RULE5EN_SHIFT 4
491 #define USTORM_CORE_CONN_AG_CTX_RULE6EN_MASK  0x1
492 #define USTORM_CORE_CONN_AG_CTX_RULE6EN_SHIFT 5
493 #define USTORM_CORE_CONN_AG_CTX_RULE7EN_MASK  0x1
494 #define USTORM_CORE_CONN_AG_CTX_RULE7EN_SHIFT 6
495 #define USTORM_CORE_CONN_AG_CTX_RULE8EN_MASK  0x1
496 #define USTORM_CORE_CONN_AG_CTX_RULE8EN_SHIFT 7
497         u8 byte2 /* byte2 */;
498         u8 byte3 /* byte3 */;
499         __le16 word0 /* conn_dpi */;
500         __le16 word1 /* word1 */;
501         __le32 rx_producers /* reg0 */;
502         __le32 reg1 /* reg1 */;
503         __le32 reg2 /* reg2 */;
504         __le32 reg3 /* reg3 */;
505         __le16 word2 /* word2 */;
506         __le16 word3 /* word3 */;
507 };
508
509 /*
510  * The core storm context for the Mstorm
511  */
512 struct mstorm_core_conn_st_ctx {
513         __le32 reserved[24];
514 };
515
516 /*
517  * The core storm context for the Ustorm
518  */
519 struct ustorm_core_conn_st_ctx {
520         __le32 reserved[4];
521 };
522
523 /*
524  * core connection context
525  */
526 struct core_conn_context {
527         struct ystorm_core_conn_st_ctx ystorm_st_context
528             /* ystorm storm context */;
529         struct regpair ystorm_st_padding[2] /* padding */;
530         struct pstorm_core_conn_st_ctx pstorm_st_context
531             /* pstorm storm context */;
532         struct regpair pstorm_st_padding[2] /* padding */;
533         struct xstorm_core_conn_st_ctx xstorm_st_context
534             /* xstorm storm context */;
535         struct xstorm_core_conn_ag_ctx xstorm_ag_context
536             /* xstorm aggregative context */;
537         struct tstorm_core_conn_ag_ctx tstorm_ag_context
538             /* tstorm aggregative context */;
539         struct ustorm_core_conn_ag_ctx ustorm_ag_context
540             /* ustorm aggregative context */;
541         struct mstorm_core_conn_st_ctx mstorm_st_context
542             /* mstorm storm context */;
543         struct ustorm_core_conn_st_ctx ustorm_st_context
544             /* ustorm storm context */;
545         struct regpair ustorm_st_padding[2] /* padding */;
546 };
547
548 /*
549  * How ll2 should deal with packet upon errors
550  */
551 enum core_error_handle {
552         LL2_DROP_PACKET /* If error occurs drop packet */,
553         LL2_DO_NOTHING /* If error occurs do nothing */,
554         LL2_ASSERT /* If error occurs assert */,
555         MAX_CORE_ERROR_HANDLE
556 };
557
558 /*
559  * opcodes for the event ring
560  */
561 enum core_event_opcode {
562         CORE_EVENT_TX_QUEUE_START,
563         CORE_EVENT_TX_QUEUE_STOP,
564         CORE_EVENT_RX_QUEUE_START,
565         CORE_EVENT_RX_QUEUE_STOP,
566         MAX_CORE_EVENT_OPCODE
567 };
568
569 /*
570  * The L4 pseudo checksum mode for Core
571  */
572 enum core_l4_pseudo_checksum_mode {
573         CORE_L4_PSEUDO_CSUM_CORRECT_LENGTH
574             ,
575         CORE_L4_PSEUDO_CSUM_ZERO_LENGTH
576             /* Pseudo Checksum on packet is calculated with zero length. */,
577         MAX_CORE_L4_PSEUDO_CHECKSUM_MODE
578 };
579
580 /*
581  * Light-L2 RX Producers in Tstorm RAM
582  */
583 struct core_ll2_port_stats {
584         struct regpair gsi_invalid_hdr;
585         struct regpair gsi_invalid_pkt_length;
586         struct regpair gsi_unsupported_pkt_typ;
587         struct regpair gsi_crcchksm_error;
588 };
589
590 /*
591  * Ethernet TX Per Queue Stats
592  */
593 struct core_ll2_pstorm_per_queue_stat {
594         struct regpair sent_ucast_bytes
595             /* number of total bytes sent without errors */;
596         struct regpair sent_mcast_bytes
597             /* number of total bytes sent without errors */;
598         struct regpair sent_bcast_bytes
599             /* number of total bytes sent without errors */;
600         struct regpair sent_ucast_pkts
601             /* number of total packets sent without errors */;
602         struct regpair sent_mcast_pkts
603             /* number of total packets sent without errors */;
604         struct regpair sent_bcast_pkts
605             /* number of total packets sent without errors */;
606 };
607
608 /*
609  * Light-L2 RX Producers in Tstorm RAM
610  */
611 struct core_ll2_rx_prod {
612         __le16 bd_prod /* BD Producer */;
613         __le16 cqe_prod /* CQE Producer */;
614         __le32 reserved;
615 };
616
617 struct core_ll2_tstorm_per_queue_stat {
618         struct regpair packet_too_big_discard
619             /* Number of packets discarded because they are bigger than MTU */;
620         struct regpair no_buff_discard
621             /* Number of packets discarded due to lack of host buffers */;
622 };
623
624 struct core_ll2_ustorm_per_queue_stat {
625         struct regpair rcv_ucast_bytes;
626         struct regpair rcv_mcast_bytes;
627         struct regpair rcv_bcast_bytes;
628         struct regpair rcv_ucast_pkts;
629         struct regpair rcv_mcast_pkts;
630         struct regpair rcv_bcast_pkts;
631 };
632
633 /*
634  * Core Ramrod Command IDs (light L2)
635  */
636 enum core_ramrod_cmd_id {
637         CORE_RAMROD_UNUSED,
638         CORE_RAMROD_RX_QUEUE_START /* RX Queue Start Ramrod */,
639         CORE_RAMROD_TX_QUEUE_START /* TX Queue Start Ramrod */,
640         CORE_RAMROD_RX_QUEUE_STOP /* RX Queue Stop Ramrod */,
641         CORE_RAMROD_TX_QUEUE_STOP /* TX Queue Stop Ramrod */,
642         MAX_CORE_RAMROD_CMD_ID
643 };
644
645 /*
646  * Specifies how ll2 should deal with packets errors: packet_too_big and no_buff
647  */
648 struct core_rx_action_on_error {
649         u8 error_type;
650 #define CORE_RX_ACTION_ON_ERROR_PACKET_TOO_BIG_MASK  0x3
651 #define CORE_RX_ACTION_ON_ERROR_PACKET_TOO_BIG_SHIFT 0
652 #define CORE_RX_ACTION_ON_ERROR_NO_BUFF_MASK         0x3
653 #define CORE_RX_ACTION_ON_ERROR_NO_BUFF_SHIFT        2
654 #define CORE_RX_ACTION_ON_ERROR_RESERVED_MASK        0xF
655 #define CORE_RX_ACTION_ON_ERROR_RESERVED_SHIFT       4
656 };
657
658 /*
659  * Core RX BD for Light L2
660  */
661 struct core_rx_bd {
662         struct regpair addr;
663         __le16 reserved[4];
664 };
665
666 /*
667  * Core RX CM offload BD for Light L2
668  */
669 struct core_rx_bd_with_buff_len {
670         struct regpair addr;
671         __le16 buff_length;
672         __le16 reserved[3];
673 };
674
675 /*
676  * Core RX CM offload BD for Light L2
677  */
678 union core_rx_bd_union {
679         struct core_rx_bd rx_bd /* Core Rx Bd static buffer size */;
680         struct core_rx_bd_with_buff_len rx_bd_with_len
681             /* Core Rx Bd with dynamic buffer length */;
682 };
683
684 /*
685  * Opaque Data for Light L2 RX CQE .
686  */
687 struct core_rx_cqe_opaque_data {
688         __le32 data[2] /* Opaque CQE Data */;
689 };
690
691 /*
692  * Core RX CQE Type for Light L2
693  */
694 enum core_rx_cqe_type {
695         CORE_RX_CQE_ILLIGAL_TYPE /* Bad RX Cqe type */,
696         CORE_RX_CQE_TYPE_REGULAR /* Regular Core RX CQE */,
697         CORE_RX_CQE_TYPE_GSI_OFFLOAD /* Fp Gsi offload RX CQE */,
698         CORE_RX_CQE_TYPE_SLOW_PATH /* Slow path Core RX CQE */,
699         MAX_CORE_RX_CQE_TYPE
700 };
701
702 /*
703  * Core RX CQE for Light L2 .
704  */
705 struct core_rx_fast_path_cqe {
706         u8 type /* CQE type */;
707         u8 placement_offset
708             /* Offset (in bytes) of the packet from start of the buffer */;
709         struct parsing_and_err_flags parse_flags
710             /* Parsing and error flags from the parser */;
711         __le16 packet_length /* Total packet length (from the parser) */;
712         __le16 vlan /* 802.1q VLAN tag */;
713         struct core_rx_cqe_opaque_data opaque_data /* Opaque Data */;
714         __le32 reserved[4];
715 };
716
717 /*
718  * Core Rx CM offload CQE .
719  */
720 struct core_rx_gsi_offload_cqe {
721         u8 type /* CQE type */;
722         u8 data_length_error /* set if gsi data is bigger than buff */;
723         struct parsing_and_err_flags parse_flags
724             /* Parsing and error flags from the parser */;
725         __le16 data_length /* Total packet length (from the parser) */;
726         __le16 vlan /* 802.1q VLAN tag */;
727         __le32 src_mac_addrhi /* hi 4 bytes source mac address */;
728         __le16 src_mac_addrlo /* lo 2 bytes of source mac address */;
729         u8 reserved1[2];
730         __le32 gid_dst[4] /* Gid destination address */;
731 };
732
733 /*
734  * Core RX CQE for Light L2 .
735  */
736 struct core_rx_slow_path_cqe {
737         u8 type /* CQE type */;
738         u8 ramrod_cmd_id;
739         __le16 echo;
740         __le32 reserved1[7];
741 };
742
743 /*
744  * Core RX CM offload BD for Light L2
745  */
746 union core_rx_cqe_union {
747         struct core_rx_fast_path_cqe rx_cqe_fp /* Fast path CQE */;
748         struct core_rx_gsi_offload_cqe rx_cqe_gsi /* GSI offload CQE */;
749         struct core_rx_slow_path_cqe rx_cqe_sp /* Slow path CQE */;
750 };
751
752 /*
753  * Ramrod data for rx queue start ramrod
754  */
755 struct core_rx_start_ramrod_data {
756         struct regpair bd_base /* bd address of the first bd page */;
757         struct regpair cqe_pbl_addr /* Base address on host of CQE PBL */;
758         __le16 mtu /* Maximum transmission unit */;
759         __le16 sb_id /* Status block ID */;
760         u8 sb_index /* index of the protocol index */;
761         u8 complete_cqe_flg /* post completion to the CQE ring if set */;
762         u8 complete_event_flg /* post completion to the event ring if set */;
763         u8 drop_ttl0_flg /* drop packet with ttl0 if set */;
764         __le16 num_of_pbl_pages /* Num of pages in CQE PBL */;
765         u8 inner_vlan_removal_en
766             /* if set, 802.1q tags will be removed and copied to CQE */;
767         u8 queue_id /* Light L2 RX Queue ID */;
768         u8 main_func_queue /* Is this the main queue for the PF */;
769         u8 mf_si_bcast_accept_all;
770         u8 mf_si_mcast_accept_all;
771         struct core_rx_action_on_error action_on_error;
772         u8 gsi_offload_flag
773             /* set when in GSI offload mode on ROCE connection */;
774         u8 reserved[7];
775 };
776
777 /*
778  * Ramrod data for rx queue stop ramrod
779  */
780 struct core_rx_stop_ramrod_data {
781         u8 complete_cqe_flg /* post completion to the CQE ring if set */;
782         u8 complete_event_flg /* post completion to the event ring if set */;
783         u8 queue_id /* Light L2 RX Queue ID */;
784         u8 reserved1;
785         __le16 reserved2[2];
786 };
787
788 /*
789  * Flags for Core TX BD
790  */
791 struct core_tx_bd_flags {
792         u8 as_bitfield;
793 #define CORE_TX_BD_FLAGS_FORCE_VLAN_MODE_MASK      0x1
794 #define CORE_TX_BD_FLAGS_FORCE_VLAN_MODE_SHIFT     0
795 #define CORE_TX_BD_FLAGS_VLAN_INSERTION_MASK       0x1
796 #define CORE_TX_BD_FLAGS_VLAN_INSERTION_SHIFT      1
797 #define CORE_TX_BD_FLAGS_START_BD_MASK             0x1
798 #define CORE_TX_BD_FLAGS_START_BD_SHIFT            2
799 #define CORE_TX_BD_FLAGS_IP_CSUM_MASK              0x1
800 #define CORE_TX_BD_FLAGS_IP_CSUM_SHIFT             3
801 #define CORE_TX_BD_FLAGS_L4_CSUM_MASK              0x1
802 #define CORE_TX_BD_FLAGS_L4_CSUM_SHIFT             4
803 #define CORE_TX_BD_FLAGS_IPV6_EXT_MASK             0x1
804 #define CORE_TX_BD_FLAGS_IPV6_EXT_SHIFT            5
805 #define CORE_TX_BD_FLAGS_L4_PROTOCOL_MASK          0x1
806 #define CORE_TX_BD_FLAGS_L4_PROTOCOL_SHIFT         6
807 #define CORE_TX_BD_FLAGS_L4_PSEUDO_CSUM_MODE_MASK  0x1
808 #define CORE_TX_BD_FLAGS_L4_PSEUDO_CSUM_MODE_SHIFT 7
809 };
810
811 /*
812  * Core TX BD for Light L2
813  */
814 struct core_tx_bd {
815         struct regpair addr /* Buffer Address */;
816         __le16 nbytes /* Number of Bytes in Buffer */;
817         __le16 vlan /* VLAN to insert to packet (if insertion flag set) */;
818         u8 nbds /* Number of BDs that make up one packet */;
819         struct core_tx_bd_flags bd_flags /* BD Flags */;
820         __le16 l4_hdr_offset_w;
821 };
822
823 /*
824  * Light L2 TX Destination
825  */
826 enum core_tx_dest {
827         CORE_TX_DEST_NW /* Light L2 TX Destination to the Network */,
828         CORE_TX_DEST_LB /* Light L2 TX Destination to the Loopback */,
829         MAX_CORE_TX_DEST
830 };
831
832 /*
833  * Ramrod data for rx queue start ramrod
834  */
835 struct core_tx_start_ramrod_data {
836         struct regpair pbl_base_addr /* Address of the pbl page */;
837         __le16 mtu /* Maximum transmission unit */;
838         __le16 sb_id /* Status block ID */;
839         u8 sb_index /* Status block protocol index */;
840         u8 tx_dest /* TX Destination (either Network or LB) */;
841         u8 stats_en /* Statistics Enable */;
842         u8 stats_id /* Statistics Counter ID */;
843         __le16 pbl_size /* Number of BD pages pointed by PBL */;
844         __le16 qm_pq_id /* QM PQ ID */;
845         u8 conn_type /* connection type that loaded ll2 */;
846         u8 gsi_offload_flag
847             /* set when in GSI offload mode on ROCE connection */;
848         u8 resrved[2];
849 };
850
851 /*
852  * Ramrod data for tx queue stop ramrod
853  */
854 struct core_tx_stop_ramrod_data {
855         __le32 reserved0[2];
856 };
857
858 struct eth_mstorm_per_queue_stat {
859         struct regpair ttl0_discard;
860         struct regpair packet_too_big_discard;
861         struct regpair no_buff_discard;
862         struct regpair not_active_discard;
863         struct regpair tpa_coalesced_pkts;
864         struct regpair tpa_coalesced_events;
865         struct regpair tpa_aborts_num;
866         struct regpair tpa_coalesced_bytes;
867 };
868
869 /*
870  * Ethernet TX Per Queue Stats
871  */
872 struct eth_pstorm_per_queue_stat {
873         struct regpair sent_ucast_bytes
874             /* number of total bytes sent without errors */;
875         struct regpair sent_mcast_bytes
876             /* number of total bytes sent without errors */;
877         struct regpair sent_bcast_bytes
878             /* number of total bytes sent without errors */;
879         struct regpair sent_ucast_pkts
880             /* number of total packets sent without errors */;
881         struct regpair sent_mcast_pkts
882             /* number of total packets sent without errors */;
883         struct regpair sent_bcast_pkts
884             /* number of total packets sent without errors */;
885         struct regpair error_drop_pkts
886             /* number of total packets dropped due to errors */;
887 };
888
889 /*
890  * ETH Rx producers data
891  */
892 struct eth_rx_rate_limit {
893         __le16 mult;
894         __le16 cnst
895             /* Constant term to add (or subtract from number of cycles) */;
896         u8 add_sub_cnst /* Add (1) or subtract (0) constant term */;
897         u8 reserved0;
898         __le16 reserved1;
899 };
900
901 struct eth_ustorm_per_queue_stat {
902         struct regpair rcv_ucast_bytes;
903         struct regpair rcv_mcast_bytes;
904         struct regpair rcv_bcast_bytes;
905         struct regpair rcv_ucast_pkts;
906         struct regpair rcv_mcast_pkts;
907         struct regpair rcv_bcast_pkts;
908 };
909
910 /*
911  * Event Ring Next Page Address
912  */
913 struct event_ring_next_addr {
914         struct regpair addr /* Next Page Address */;
915         __le32 reserved[2] /* Reserved */;
916 };
917
918 /*
919  * Event Ring Element
920  */
921 union event_ring_element {
922         struct event_ring_entry entry /* Event Ring Entry */;
923         struct event_ring_next_addr next_addr /* Event Ring Next Page Address */
924           ;
925 };
926
927 /*
928  * Ports mode
929  */
930 enum fw_flow_ctrl_mode {
931         flow_ctrl_pause,
932         flow_ctrl_pfc,
933         MAX_FW_FLOW_CTRL_MODE
934 };
935
936 /*
937  * Integration Phase
938  */
939 enum integ_phase {
940         INTEG_PHASE_BB_A0_LATEST = 3 /* BB A0 latest integration phase */,
941         INTEG_PHASE_BB_B0_NO_MCP = 10 /* BB B0 without MCP */,
942         INTEG_PHASE_BB_B0_WITH_MCP = 11 /* BB B0 with MCP */,
943         MAX_INTEG_PHASE
944 };
945
946 /*
947  * Malicious VF error ID
948  */
949 enum malicious_vf_error_id {
950         MALICIOUS_VF_NO_ERROR /* Zero placeholder value */,
951         VF_PF_CHANNEL_NOT_READY
952             /* Writing to VF/PF channel when it is not ready */,
953         VF_ZONE_MSG_NOT_VALID /* VF channel message is not valid */,
954         VF_ZONE_FUNC_NOT_ENABLED /* Parent PF of VF channel is not active */,
955         ETH_PACKET_TOO_SMALL
956             /* TX packet is shorter then reported on BDs or from minimal size */
957             ,
958         ETH_ILLEGAL_VLAN_MODE
959             /* Tx packet with marked as insert VLAN when its illegal */,
960         ETH_MTU_VIOLATION /* TX packet is greater then MTU */,
961         ETH_ILLEGAL_INBAND_TAGS /* TX packet has illegal inband tags marked */,
962         ETH_VLAN_INSERT_AND_INBAND_VLAN /* Vlan cant be added to inband tag */,
963         ETH_ILLEGAL_NBDS /* indicated number of BDs for the packet is illegal */
964             ,
965         ETH_FIRST_BD_WO_SOP /* 1st BD must have start_bd flag set */,
966         ETH_INSUFFICIENT_BDS
967             /* There are not enough BDs for transmission of even one packet */,
968         ETH_ILLEGAL_LSO_HDR_NBDS /* Header NBDs value is illegal */,
969         ETH_ILLEGAL_LSO_MSS /* LSO MSS value is more than allowed */,
970         ETH_ZERO_SIZE_BD
971             /* empty BD (which not contains control flags) is illegal  */,
972         ETH_ILLEGAL_LSO_HDR_LEN /* LSO header size is above the limit  */,
973         ETH_INSUFFICIENT_PAYLOAD
974             ,
975         ETH_EDPM_OUT_OF_SYNC /* Valid BDs on local ring after EDPM L2 sync */,
976         ETH_TUNN_IPV6_EXT_NBD_ERR
977             /* Tunneled packet with IPv6+Ext without a proper number of BDs */,
978         MAX_MALICIOUS_VF_ERROR_ID
979 };
980
981 /*
982  * Mstorm non-triggering VF zone
983  */
984 struct mstorm_non_trigger_vf_zone {
985         struct eth_mstorm_per_queue_stat eth_queue_stat
986             /* VF statistic bucket */;
987 };
988
989 /*
990  * Mstorm VF zone
991  */
992 struct mstorm_vf_zone {
993         struct mstorm_non_trigger_vf_zone non_trigger
994             /* non-interrupt-triggering zone */;
995 };
996
997 /*
998  * personality per PF
999  */
1000 enum personality_type {
1001         BAD_PERSONALITY_TYP,
1002         PERSONALITY_ISCSI /* iSCSI and LL2 */,
1003         PERSONALITY_FCOE /* Fcoe and LL2 */,
1004         PERSONALITY_RDMA_AND_ETH /* Roce or Iwarp, Eth and LL2 */,
1005         PERSONALITY_RDMA /* Roce and LL2 */,
1006         PERSONALITY_CORE /* CORE(LL2) */,
1007         PERSONALITY_ETH /* Ethernet */,
1008         PERSONALITY_TOE /* Toe and LL2 */,
1009         MAX_PERSONALITY_TYPE
1010 };
1011
1012 /*
1013  * tunnel configuration
1014  */
1015 struct pf_start_tunnel_config {
1016         u8 set_vxlan_udp_port_flg /* Set VXLAN tunnel UDP destination port. */;
1017         u8 set_geneve_udp_port_flg /* Set GENEVE tunnel UDP destination port. */
1018           ;
1019         u8 tx_enable_vxlan /* If set, enable VXLAN tunnel in TX path. */;
1020         u8 tx_enable_l2geneve /* If set, enable l2 GENEVE tunnel in TX path. */
1021           ;
1022         u8 tx_enable_ipgeneve /* If set, enable IP GENEVE tunnel in TX path. */
1023           ;
1024         u8 tx_enable_l2gre /* If set, enable l2 GRE tunnel in TX path. */;
1025         u8 tx_enable_ipgre /* If set, enable IP GRE tunnel in TX path. */;
1026         u8 tunnel_clss_vxlan /* Classification scheme for VXLAN tunnel. */;
1027         u8 tunnel_clss_l2geneve
1028             /* Classification scheme for l2 GENEVE tunnel. */;
1029         u8 tunnel_clss_ipgeneve
1030             /* Classification scheme for ip GENEVE tunnel. */;
1031         u8 tunnel_clss_l2gre /* Classification scheme for l2 GRE tunnel. */;
1032         u8 tunnel_clss_ipgre /* Classification scheme for ip GRE tunnel. */;
1033         __le16 vxlan_udp_port /* VXLAN tunnel UDP destination port. */;
1034         __le16 geneve_udp_port /* GENEVE tunnel UDP destination port. */;
1035 };
1036
1037 /*
1038  * Ramrod data for PF start ramrod
1039  */
1040 struct pf_start_ramrod_data {
1041         struct regpair event_ring_pbl_addr /* Address of event ring PBL */;
1042         struct regpair consolid_q_pbl_addr
1043             /* PBL address of consolidation queue */;
1044         struct pf_start_tunnel_config tunnel_config /* tunnel configuration. */
1045           ;
1046         __le16 event_ring_sb_id /* Status block ID */;
1047         u8 base_vf_id;
1048           ;
1049         u8 num_vfs /* Amount of vfs owned by PF */;
1050         u8 event_ring_num_pages /* Number of PBL pages in event ring */;
1051         u8 event_ring_sb_index /* Status block index */;
1052         u8 path_id /* HW path ID (engine ID) */;
1053         u8 warning_as_error /* In FW asserts, treat warning as error */;
1054         u8 dont_log_ramrods
1055             /* If not set - throw a warning for each ramrod (for debug) */;
1056         u8 personality /* define what type of personality is new PF */;
1057         __le16 log_type_mask;
1058         u8 mf_mode /* Multi function mode */;
1059         u8 integ_phase /* Integration phase */;
1060         u8 allow_npar_tx_switching;
1061         u8 inner_to_outer_pri_map[8];
1062         u8 pri_map_valid
1063             /* If inner_to_outer_pri_map is initialize then set pri_map_valid */
1064           ;
1065         __le32 outer_tag;
1066         u8 reserved0[4];
1067 };
1068
1069 /*
1070  * Data for port update ramrod
1071  */
1072 struct protocol_dcb_data {
1073         u8 dcb_enable_flag /* dcbEnable flag value */;
1074         u8 dcb_priority /* dcbPri flag value */;
1075         u8 dcb_tc /* dcb TC value */;
1076         u8 reserved;
1077 };
1078
1079 /*
1080  * tunnel configuration
1081  */
1082 struct pf_update_tunnel_config {
1083         u8 update_rx_pf_clss;
1084         u8 update_tx_pf_clss;
1085         u8 set_vxlan_udp_port_flg
1086             /* Update VXLAN tunnel UDP destination port. */;
1087         u8 set_geneve_udp_port_flg
1088             /* Update GENEVE tunnel UDP destination port. */;
1089         u8 tx_enable_vxlan /* If set, enable VXLAN tunnel in TX path. */;
1090         u8 tx_enable_l2geneve /* If set, enable l2 GENEVE tunnel in TX path. */
1091           ;
1092         u8 tx_enable_ipgeneve /* If set, enable IP GENEVE tunnel in TX path. */
1093           ;
1094         u8 tx_enable_l2gre /* If set, enable l2 GRE tunnel in TX path. */;
1095         u8 tx_enable_ipgre /* If set, enable IP GRE tunnel in TX path. */;
1096         u8 tunnel_clss_vxlan /* Classification scheme for VXLAN tunnel. */;
1097         u8 tunnel_clss_l2geneve
1098             /* Classification scheme for l2 GENEVE tunnel. */;
1099         u8 tunnel_clss_ipgeneve
1100             /* Classification scheme for ip GENEVE tunnel. */;
1101         u8 tunnel_clss_l2gre /* Classification scheme for l2 GRE tunnel. */;
1102         u8 tunnel_clss_ipgre /* Classification scheme for ip GRE tunnel. */;
1103         __le16 vxlan_udp_port /* VXLAN tunnel UDP destination port. */;
1104         __le16 geneve_udp_port /* GENEVE tunnel UDP destination port. */;
1105         __le16 reserved[3];
1106 };
1107
1108 /*
1109  * Data for port update ramrod
1110  */
1111 struct pf_update_ramrod_data {
1112         u8 pf_id;
1113         u8 update_eth_dcb_data_flag /* Update Eth DCB  data indication */;
1114         u8 update_fcoe_dcb_data_flag /* Update FCOE DCB  data indication */;
1115         u8 update_iscsi_dcb_data_flag /* Update iSCSI DCB  data indication */;
1116         u8 update_roce_dcb_data_flag /* Update ROCE DCB  data indication */;
1117         u8 update_iwarp_dcb_data_flag /* Update IWARP DCB  data indication */;
1118         u8 update_mf_vlan_flag /* Update MF outer vlan Id */;
1119         u8 reserved;
1120         struct protocol_dcb_data eth_dcb_data /* core eth related fields */;
1121         struct protocol_dcb_data fcoe_dcb_data /* core fcoe related fields */;
1122         struct protocol_dcb_data iscsi_dcb_data /* core iscsi related fields */
1123           ;
1124         struct protocol_dcb_data roce_dcb_data /* core roce related fields */;
1125         struct protocol_dcb_data iwarp_dcb_data /* core iwarp related fields */
1126           ;
1127         __le16 mf_vlan /* new outer vlan id value */;
1128         __le16 reserved2;
1129         struct pf_update_tunnel_config tunnel_config /* tunnel configuration. */
1130           ;
1131 };
1132
1133 /*
1134  * Ports mode
1135  */
1136 enum ports_mode {
1137         ENGX2_PORTX1 /* 2 engines x 1 port */,
1138         ENGX2_PORTX2 /* 2 engines x 2 ports */,
1139         ENGX1_PORTX1 /* 1 engine  x 1 port */,
1140         ENGX1_PORTX2 /* 1 engine  x 2 ports */,
1141         ENGX1_PORTX4 /* 1 engine  x 4 ports */,
1142         MAX_PORTS_MODE
1143 };
1144
1145 /*
1146  * RDMA TX Stats
1147  */
1148 struct rdma_sent_stats {
1149         struct regpair sent_bytes /* number of total RDMA bytes sent */;
1150         struct regpair sent_pkts /* number of total RDMA packets sent */;
1151 };
1152
1153 /*
1154  * Pstorm non-triggering VF zone
1155  */
1156 struct pstorm_non_trigger_vf_zone {
1157         struct eth_pstorm_per_queue_stat eth_queue_stat
1158             /* VF statistic bucket */;
1159         struct rdma_sent_stats rdma_stats /* RoCE sent statistics */;
1160 };
1161
1162 /*
1163  * Pstorm VF zone
1164  */
1165 struct pstorm_vf_zone {
1166         struct pstorm_non_trigger_vf_zone non_trigger
1167             /* non-interrupt-triggering zone */;
1168         struct regpair reserved[7] /* vf_zone size mus be power of 2 */;
1169 };
1170
1171 /*
1172  * Ramrod Header of SPQE
1173  */
1174 struct ramrod_header {
1175         __le32 cid /* Slowpath Connection CID */;
1176         u8 cmd_id /* Ramrod Cmd (Per Protocol Type) */;
1177         u8 protocol_id /* Ramrod Protocol ID */;
1178         __le16 echo /* Ramrod echo */;
1179 };
1180
1181 /*
1182  * RDMA RX Stats
1183  */
1184 struct rdma_rcv_stats {
1185         struct regpair rcv_bytes /* number of total RDMA bytes received */;
1186         struct regpair rcv_pkts /* number of total RDMA packets received */;
1187 };
1188
1189 /*
1190  * Slowpath Element (SPQE)
1191  */
1192 struct slow_path_element {
1193         struct ramrod_header hdr /* Ramrod Header */;
1194         struct regpair data_ptr /* Pointer to the Ramrod Data on the Host */;
1195 };
1196
1197 /*
1198  * Tstorm non-triggering VF zone
1199  */
1200 struct tstorm_non_trigger_vf_zone {
1201         struct rdma_rcv_stats rdma_stats /* RoCE received statistics */;
1202 };
1203
1204 struct tstorm_per_port_stat {
1205         struct regpair trunc_error_discard
1206             /* packet is dropped because it was truncated in NIG */;
1207         struct regpair mac_error_discard
1208             /* packet is dropped because of Ethernet FCS error */;
1209         struct regpair mftag_filter_discard
1210             /* packet is dropped because classification was unsuccessful */;
1211         struct regpair eth_mac_filter_discard;
1212         struct regpair ll2_mac_filter_discard;
1213         struct regpair ll2_conn_disabled_discard;
1214         struct regpair iscsi_irregular_pkt
1215             /* packet is an ISCSI irregular packet */;
1216         struct regpair fcoe_irregular_pkt
1217             /* packet is an FCOE irregular packet */;
1218         struct regpair roce_irregular_pkt
1219             /* packet is an ROCE irregular packet */;
1220         struct regpair eth_irregular_pkt /* packet is an ETH irregular packet */
1221           ;
1222         struct regpair toe_irregular_pkt /* packet is an TOE irregular packet */
1223           ;
1224         struct regpair preroce_irregular_pkt
1225             /* packet is an PREROCE irregular packet */;
1226 };
1227
1228 /*
1229  * Tstorm VF zone
1230  */
1231 struct tstorm_vf_zone {
1232         struct tstorm_non_trigger_vf_zone non_trigger
1233             /* non-interrupt-triggering zone */;
1234 };
1235
1236 /*
1237  * Tunnel classification scheme
1238  */
1239 enum tunnel_clss {
1240         TUNNEL_CLSS_MAC_VLAN =
1241             0
1242             /* Use MAC & VLAN from first L2 header for vport classification. */
1243             ,
1244         TUNNEL_CLSS_MAC_VNI
1245             ,
1246         TUNNEL_CLSS_INNER_MAC_VLAN
1247             /* Use MAC and VLAN from last L2 header for vport classification */
1248             ,
1249         TUNNEL_CLSS_INNER_MAC_VNI
1250             ,
1251         MAX_TUNNEL_CLSS
1252 };
1253
1254 /*
1255  * Ustorm non-triggering VF zone
1256  */
1257 struct ustorm_non_trigger_vf_zone {
1258         struct eth_ustorm_per_queue_stat eth_queue_stat
1259             /* VF statistic bucket */;
1260         struct regpair vf_pf_msg_addr /* VF-PF message address */;
1261 };
1262
1263 /*
1264  * Ustorm triggering VF zone
1265  */
1266 struct ustorm_trigger_vf_zone {
1267         u8 vf_pf_msg_valid /* VF-PF message valid flag */;
1268         u8 reserved[7];
1269 };
1270
1271 /*
1272  * Ustorm VF zone
1273  */
1274 struct ustorm_vf_zone {
1275         struct ustorm_non_trigger_vf_zone non_trigger
1276             /* non-interrupt-triggering zone */;
1277         struct ustorm_trigger_vf_zone trigger /* interrupt triggering zone */;
1278 };
1279
1280 /*
1281  * VF-PF channel data
1282  */
1283 struct vf_pf_channel_data {
1284         __le32 ready;
1285         u8 valid;
1286         u8 reserved0;
1287         __le16 reserved1;
1288 };
1289
1290 /*
1291  * Ramrod data for VF start ramrod
1292  */
1293 struct vf_start_ramrod_data {
1294         u8 vf_id /* VF ID */;
1295         u8 enable_flr_ack;
1296         __le16 opaque_fid /* VF opaque FID */;
1297         u8 personality /* define what type of personality is new VF */;
1298         u8 reserved[3];
1299 };
1300
1301 /*
1302  * Ramrod data for VF start ramrod
1303  */
1304 struct vf_stop_ramrod_data {
1305         u8 vf_id /* VF ID */;
1306         u8 reserved0;
1307         __le16 reserved1;
1308         __le32 reserved2;
1309 };
1310
1311 /*
1312  * Attentions status block
1313  */
1314 struct atten_status_block {
1315         __le32 atten_bits;
1316         __le32 atten_ack;
1317         __le16 reserved0;
1318         __le16 sb_index /* status block running index */;
1319         __le32 reserved1;
1320 };
1321
1322 enum block_addr {
1323         GRCBASE_GRC = 0x50000,
1324         GRCBASE_MISCS = 0x9000,
1325         GRCBASE_MISC = 0x8000,
1326         GRCBASE_DBU = 0xa000,
1327         GRCBASE_PGLUE_B = 0x2a8000,
1328         GRCBASE_CNIG = 0x218000,
1329         GRCBASE_CPMU = 0x30000,
1330         GRCBASE_NCSI = 0x40000,
1331         GRCBASE_OPTE = 0x53000,
1332         GRCBASE_BMB = 0x540000,
1333         GRCBASE_PCIE = 0x54000,
1334         GRCBASE_MCP = 0xe00000,
1335         GRCBASE_MCP2 = 0x52000,
1336         GRCBASE_PSWHST = 0x2a0000,
1337         GRCBASE_PSWHST2 = 0x29e000,
1338         GRCBASE_PSWRD = 0x29c000,
1339         GRCBASE_PSWRD2 = 0x29d000,
1340         GRCBASE_PSWWR = 0x29a000,
1341         GRCBASE_PSWWR2 = 0x29b000,
1342         GRCBASE_PSWRQ = 0x280000,
1343         GRCBASE_PSWRQ2 = 0x240000,
1344         GRCBASE_PGLCS = 0x0,
1345         GRCBASE_DMAE = 0xc000,
1346         GRCBASE_PTU = 0x560000,
1347         GRCBASE_TCM = 0x1180000,
1348         GRCBASE_MCM = 0x1200000,
1349         GRCBASE_UCM = 0x1280000,
1350         GRCBASE_XCM = 0x1000000,
1351         GRCBASE_YCM = 0x1080000,
1352         GRCBASE_PCM = 0x1100000,
1353         GRCBASE_QM = 0x2f0000,
1354         GRCBASE_TM = 0x2c0000,
1355         GRCBASE_DORQ = 0x100000,
1356         GRCBASE_BRB = 0x340000,
1357         GRCBASE_SRC = 0x238000,
1358         GRCBASE_PRS = 0x1f0000,
1359         GRCBASE_TSDM = 0xfb0000,
1360         GRCBASE_MSDM = 0xfc0000,
1361         GRCBASE_USDM = 0xfd0000,
1362         GRCBASE_XSDM = 0xf80000,
1363         GRCBASE_YSDM = 0xf90000,
1364         GRCBASE_PSDM = 0xfa0000,
1365         GRCBASE_TSEM = 0x1700000,
1366         GRCBASE_MSEM = 0x1800000,
1367         GRCBASE_USEM = 0x1900000,
1368         GRCBASE_XSEM = 0x1400000,
1369         GRCBASE_YSEM = 0x1500000,
1370         GRCBASE_PSEM = 0x1600000,
1371         GRCBASE_RSS = 0x238800,
1372         GRCBASE_TMLD = 0x4d0000,
1373         GRCBASE_MULD = 0x4e0000,
1374         GRCBASE_YULD = 0x4c8000,
1375         GRCBASE_XYLD = 0x4c0000,
1376         GRCBASE_PRM = 0x230000,
1377         GRCBASE_PBF_PB1 = 0xda0000,
1378         GRCBASE_PBF_PB2 = 0xda4000,
1379         GRCBASE_RPB = 0x23c000,
1380         GRCBASE_BTB = 0xdb0000,
1381         GRCBASE_PBF = 0xd80000,
1382         GRCBASE_RDIF = 0x300000,
1383         GRCBASE_TDIF = 0x310000,
1384         GRCBASE_CDU = 0x580000,
1385         GRCBASE_CCFC = 0x2e0000,
1386         GRCBASE_TCFC = 0x2d0000,
1387         GRCBASE_IGU = 0x180000,
1388         GRCBASE_CAU = 0x1c0000,
1389         GRCBASE_UMAC = 0x51000,
1390         GRCBASE_XMAC = 0x210000,
1391         GRCBASE_DBG = 0x10000,
1392         GRCBASE_NIG = 0x500000,
1393         GRCBASE_WOL = 0x600000,
1394         GRCBASE_BMBN = 0x610000,
1395         GRCBASE_IPC = 0x20000,
1396         GRCBASE_NWM = 0x800000,
1397         GRCBASE_NWS = 0x700000,
1398         GRCBASE_MS = 0x6a0000,
1399         GRCBASE_PHY_PCIE = 0x620000,
1400         GRCBASE_MISC_AEU = 0x8000,
1401         GRCBASE_BAR0_MAP = 0x1c00000,
1402         MAX_BLOCK_ADDR
1403 };
1404
1405 enum block_id {
1406         BLOCK_GRC,
1407         BLOCK_MISCS,
1408         BLOCK_MISC,
1409         BLOCK_DBU,
1410         BLOCK_PGLUE_B,
1411         BLOCK_CNIG,
1412         BLOCK_CPMU,
1413         BLOCK_NCSI,
1414         BLOCK_OPTE,
1415         BLOCK_BMB,
1416         BLOCK_PCIE,
1417         BLOCK_MCP,
1418         BLOCK_MCP2,
1419         BLOCK_PSWHST,
1420         BLOCK_PSWHST2,
1421         BLOCK_PSWRD,
1422         BLOCK_PSWRD2,
1423         BLOCK_PSWWR,
1424         BLOCK_PSWWR2,
1425         BLOCK_PSWRQ,
1426         BLOCK_PSWRQ2,
1427         BLOCK_PGLCS,
1428         BLOCK_DMAE,
1429         BLOCK_PTU,
1430         BLOCK_TCM,
1431         BLOCK_MCM,
1432         BLOCK_UCM,
1433         BLOCK_XCM,
1434         BLOCK_YCM,
1435         BLOCK_PCM,
1436         BLOCK_QM,
1437         BLOCK_TM,
1438         BLOCK_DORQ,
1439         BLOCK_BRB,
1440         BLOCK_SRC,
1441         BLOCK_PRS,
1442         BLOCK_TSDM,
1443         BLOCK_MSDM,
1444         BLOCK_USDM,
1445         BLOCK_XSDM,
1446         BLOCK_YSDM,
1447         BLOCK_PSDM,
1448         BLOCK_TSEM,
1449         BLOCK_MSEM,
1450         BLOCK_USEM,
1451         BLOCK_XSEM,
1452         BLOCK_YSEM,
1453         BLOCK_PSEM,
1454         BLOCK_RSS,
1455         BLOCK_TMLD,
1456         BLOCK_MULD,
1457         BLOCK_YULD,
1458         BLOCK_XYLD,
1459         BLOCK_PRM,
1460         BLOCK_PBF_PB1,
1461         BLOCK_PBF_PB2,
1462         BLOCK_RPB,
1463         BLOCK_BTB,
1464         BLOCK_PBF,
1465         BLOCK_RDIF,
1466         BLOCK_TDIF,
1467         BLOCK_CDU,
1468         BLOCK_CCFC,
1469         BLOCK_TCFC,
1470         BLOCK_IGU,
1471         BLOCK_CAU,
1472         BLOCK_UMAC,
1473         BLOCK_XMAC,
1474         BLOCK_DBG,
1475         BLOCK_NIG,
1476         BLOCK_WOL,
1477         BLOCK_BMBN,
1478         BLOCK_IPC,
1479         BLOCK_NWM,
1480         BLOCK_NWS,
1481         BLOCK_MS,
1482         BLOCK_PHY_PCIE,
1483         BLOCK_MISC_AEU,
1484         BLOCK_BAR0_MAP,
1485         MAX_BLOCK_ID
1486 };
1487
1488 /*
1489  * Igu cleanup bit values to distinguish between clean or producer consumer
1490  */
1491 enum command_type_bit {
1492         IGU_COMMAND_TYPE_NOP = 0,
1493         IGU_COMMAND_TYPE_SET = 1,
1494         MAX_COMMAND_TYPE_BIT
1495 };
1496
1497 /*
1498  * DMAE command
1499  */
1500 struct dmae_cmd {
1501         __le32 opcode;
1502 #define DMAE_CMD_SRC_MASK              0x1
1503 #define DMAE_CMD_SRC_SHIFT             0
1504 #define DMAE_CMD_DST_MASK              0x3
1505 #define DMAE_CMD_DST_SHIFT             1
1506 #define DMAE_CMD_C_DST_MASK            0x1
1507 #define DMAE_CMD_C_DST_SHIFT           3
1508 #define DMAE_CMD_CRC_RESET_MASK        0x1
1509 #define DMAE_CMD_CRC_RESET_SHIFT       4
1510 #define DMAE_CMD_SRC_ADDR_RESET_MASK   0x1
1511 #define DMAE_CMD_SRC_ADDR_RESET_SHIFT  5
1512 #define DMAE_CMD_DST_ADDR_RESET_MASK   0x1
1513 #define DMAE_CMD_DST_ADDR_RESET_SHIFT  6
1514 #define DMAE_CMD_COMP_FUNC_MASK        0x1
1515 #define DMAE_CMD_COMP_FUNC_SHIFT       7
1516 #define DMAE_CMD_COMP_WORD_EN_MASK     0x1
1517 #define DMAE_CMD_COMP_WORD_EN_SHIFT    8
1518 #define DMAE_CMD_COMP_CRC_EN_MASK      0x1
1519 #define DMAE_CMD_COMP_CRC_EN_SHIFT     9
1520 #define DMAE_CMD_COMP_CRC_OFFSET_MASK  0x7
1521 #define DMAE_CMD_COMP_CRC_OFFSET_SHIFT 10
1522 #define DMAE_CMD_RESERVED1_MASK        0x1
1523 #define DMAE_CMD_RESERVED1_SHIFT       13
1524 #define DMAE_CMD_ENDIANITY_MODE_MASK   0x3
1525 #define DMAE_CMD_ENDIANITY_MODE_SHIFT  14
1526 #define DMAE_CMD_ERR_HANDLING_MASK     0x3
1527 #define DMAE_CMD_ERR_HANDLING_SHIFT    16
1528 #define DMAE_CMD_PORT_ID_MASK          0x3
1529 #define DMAE_CMD_PORT_ID_SHIFT         18
1530 #define DMAE_CMD_SRC_PF_ID_MASK        0xF
1531 #define DMAE_CMD_SRC_PF_ID_SHIFT       20
1532 #define DMAE_CMD_DST_PF_ID_MASK        0xF
1533 #define DMAE_CMD_DST_PF_ID_SHIFT       24
1534 #define DMAE_CMD_SRC_VF_ID_VALID_MASK  0x1
1535 #define DMAE_CMD_SRC_VF_ID_VALID_SHIFT 28
1536 #define DMAE_CMD_DST_VF_ID_VALID_MASK  0x1
1537 #define DMAE_CMD_DST_VF_ID_VALID_SHIFT 29
1538 #define DMAE_CMD_RESERVED2_MASK        0x3
1539 #define DMAE_CMD_RESERVED2_SHIFT       30
1540         __le32 src_addr_lo
1541             /* PCIe source address low in bytes or GRC source address in DW */;
1542         __le32 src_addr_hi;
1543         __le32 dst_addr_lo;
1544         __le32 dst_addr_hi;
1545         __le16 length /* Length in DW */;
1546         __le16 opcode_b;
1547 #define DMAE_CMD_SRC_VF_ID_MASK        0xFF
1548 #define DMAE_CMD_SRC_VF_ID_SHIFT       0
1549 #define DMAE_CMD_DST_VF_ID_MASK        0xFF
1550 #define DMAE_CMD_DST_VF_ID_SHIFT       8
1551         __le32 comp_addr_lo /* PCIe completion address low or grc address */;
1552         __le32 comp_addr_hi;
1553         __le32 comp_val /* Value to write to completion address */;
1554         __le32 crc32 /* crc16 result */;
1555         __le32 crc_32_c /* crc32_c result */;
1556         __le16 crc16 /* crc16 result */;
1557         __le16 crc16_c /* crc16_c result */;
1558         __le16 crc10 /* crc_t10 result */;
1559         __le16 reserved;
1560         __le16 xsum16 /* checksum16 result  */;
1561         __le16 xsum8 /* checksum8 result  */;
1562 };
1563
1564 struct fw_ver_num {
1565         u8 major /* Firmware major version number */;
1566         u8 minor /* Firmware minor version number */;
1567         u8 rev /* Firmware revision version number */;
1568         u8 eng /* Firmware engineering version number (for bootleg versions) */
1569           ;
1570 };
1571
1572 struct fw_ver_info {
1573         __le16 tools_ver /* Tools version number */;
1574         u8 image_id /* FW image ID (e.g. main, l2b, kuku) */;
1575         u8 reserved1;
1576         struct fw_ver_num num /* FW version number */;
1577         __le32 timestamp /* FW Timestamp in unix time  (sec. since 1970) */;
1578         __le32 reserved2;
1579 };
1580
1581 struct storm_ram_section {
1582         __le16 offset
1583             /* The offset of the section in the RAM (in 64 bit units) */;
1584         __le16 size /* The size of the section (in 64 bit units) */;
1585 };
1586
1587 struct fw_info {
1588         struct fw_ver_info ver /* FW version information */;
1589         struct storm_ram_section fw_asserts_section
1590             /* The FW Asserts offset/size in Storm RAM */;
1591         __le32 reserved;
1592 };
1593
1594 struct fw_info_location {
1595         __le32 grc_addr /* GRC address where the fw_info struct is located. */;
1596         __le32 size
1597             /* Size of the fw_info structure (thats located at the grc_addr). */
1598           ;
1599 };
1600
1601 /*
1602  * IGU cleanup command
1603  */
1604 struct igu_cleanup {
1605         __le32 sb_id_and_flags;
1606 #define IGU_CLEANUP_RESERVED0_MASK     0x7FFFFFF
1607 #define IGU_CLEANUP_RESERVED0_SHIFT    0
1608 #define IGU_CLEANUP_CLEANUP_SET_MASK   0x1
1609 #define IGU_CLEANUP_CLEANUP_SET_SHIFT  27
1610 #define IGU_CLEANUP_CLEANUP_TYPE_MASK  0x7
1611 #define IGU_CLEANUP_CLEANUP_TYPE_SHIFT 28
1612 #define IGU_CLEANUP_COMMAND_TYPE_MASK  0x1
1613 #define IGU_CLEANUP_COMMAND_TYPE_SHIFT 31
1614         __le32 reserved1;
1615 };
1616
1617 /*
1618  * IGU firmware driver command
1619  */
1620 union igu_command {
1621         struct igu_prod_cons_update prod_cons_update;
1622         struct igu_cleanup cleanup;
1623 };
1624
1625 /*
1626  * IGU firmware driver command
1627  */
1628 struct igu_command_reg_ctrl {
1629         __le16 opaque_fid;
1630         __le16 igu_command_reg_ctrl_fields;
1631 #define IGU_COMMAND_REG_CTRL_PXP_BAR_ADDR_MASK  0xFFF
1632 #define IGU_COMMAND_REG_CTRL_PXP_BAR_ADDR_SHIFT 0
1633 #define IGU_COMMAND_REG_CTRL_RESERVED_MASK      0x7
1634 #define IGU_COMMAND_REG_CTRL_RESERVED_SHIFT     12
1635 #define IGU_COMMAND_REG_CTRL_COMMAND_TYPE_MASK  0x1
1636 #define IGU_COMMAND_REG_CTRL_COMMAND_TYPE_SHIFT 15
1637 };
1638
1639 /*
1640  * IGU mapping line structure
1641  */
1642 struct igu_mapping_line {
1643         __le32 igu_mapping_line_fields;
1644 #define IGU_MAPPING_LINE_VALID_MASK            0x1
1645 #define IGU_MAPPING_LINE_VALID_SHIFT           0
1646 #define IGU_MAPPING_LINE_VECTOR_NUMBER_MASK    0xFF
1647 #define IGU_MAPPING_LINE_VECTOR_NUMBER_SHIFT   1
1648 #define IGU_MAPPING_LINE_FUNCTION_NUMBER_MASK  0xFF
1649 #define IGU_MAPPING_LINE_FUNCTION_NUMBER_SHIFT 9
1650 #define IGU_MAPPING_LINE_PF_VALID_MASK         0x1
1651 #define IGU_MAPPING_LINE_PF_VALID_SHIFT        17
1652 #define IGU_MAPPING_LINE_IPS_GROUP_MASK        0x3F
1653 #define IGU_MAPPING_LINE_IPS_GROUP_SHIFT       18
1654 #define IGU_MAPPING_LINE_RESERVED_MASK         0xFF
1655 #define IGU_MAPPING_LINE_RESERVED_SHIFT        24
1656 };
1657
1658 /*
1659  * IGU MSIX line structure
1660  */
1661 struct igu_msix_vector {
1662         struct regpair address;
1663         __le32 data;
1664         __le32 msix_vector_fields;
1665 #define IGU_MSIX_VECTOR_MASK_BIT_MASK      0x1
1666 #define IGU_MSIX_VECTOR_MASK_BIT_SHIFT     0
1667 #define IGU_MSIX_VECTOR_RESERVED0_MASK     0x7FFF
1668 #define IGU_MSIX_VECTOR_RESERVED0_SHIFT    1
1669 #define IGU_MSIX_VECTOR_STEERING_TAG_MASK  0xFF
1670 #define IGU_MSIX_VECTOR_STEERING_TAG_SHIFT 16
1671 #define IGU_MSIX_VECTOR_RESERVED1_MASK     0xFF
1672 #define IGU_MSIX_VECTOR_RESERVED1_SHIFT    24
1673 };
1674
1675 enum init_modes {
1676         MODE_BB_A0,
1677         MODE_BB_B0,
1678         MODE_K2,
1679         MODE_ASIC,
1680         MODE_EMUL_REDUCED,
1681         MODE_EMUL_FULL,
1682         MODE_FPGA,
1683         MODE_CHIPSIM,
1684         MODE_SF,
1685         MODE_MF_SD,
1686         MODE_MF_SI,
1687         MODE_PORTS_PER_ENG_1,
1688         MODE_PORTS_PER_ENG_2,
1689         MODE_PORTS_PER_ENG_4,
1690         MODE_100G,
1691         MODE_EAGLE_ENG1_WORKAROUND,
1692         MAX_INIT_MODES
1693 };
1694
1695 enum init_phases {
1696         PHASE_ENGINE,
1697         PHASE_PORT,
1698         PHASE_PF,
1699         PHASE_VF,
1700         PHASE_QM_PF,
1701         MAX_INIT_PHASES
1702 };
1703
1704 struct mstorm_core_conn_ag_ctx {
1705         u8 byte0 /* cdu_validation */;
1706         u8 byte1 /* state */;
1707         u8 flags0;
1708 #define MSTORM_CORE_CONN_AG_CTX_BIT0_MASK     0x1
1709 #define MSTORM_CORE_CONN_AG_CTX_BIT0_SHIFT    0
1710 #define MSTORM_CORE_CONN_AG_CTX_BIT1_MASK     0x1
1711 #define MSTORM_CORE_CONN_AG_CTX_BIT1_SHIFT    1
1712 #define MSTORM_CORE_CONN_AG_CTX_CF0_MASK      0x3
1713 #define MSTORM_CORE_CONN_AG_CTX_CF0_SHIFT     2
1714 #define MSTORM_CORE_CONN_AG_CTX_CF1_MASK      0x3
1715 #define MSTORM_CORE_CONN_AG_CTX_CF1_SHIFT     4
1716 #define MSTORM_CORE_CONN_AG_CTX_CF2_MASK      0x3
1717 #define MSTORM_CORE_CONN_AG_CTX_CF2_SHIFT     6
1718         u8 flags1;
1719 #define MSTORM_CORE_CONN_AG_CTX_CF0EN_MASK    0x1
1720 #define MSTORM_CORE_CONN_AG_CTX_CF0EN_SHIFT   0
1721 #define MSTORM_CORE_CONN_AG_CTX_CF1EN_MASK    0x1
1722 #define MSTORM_CORE_CONN_AG_CTX_CF1EN_SHIFT   1
1723 #define MSTORM_CORE_CONN_AG_CTX_CF2EN_MASK    0x1
1724 #define MSTORM_CORE_CONN_AG_CTX_CF2EN_SHIFT   2
1725 #define MSTORM_CORE_CONN_AG_CTX_RULE0EN_MASK  0x1
1726 #define MSTORM_CORE_CONN_AG_CTX_RULE0EN_SHIFT 3
1727 #define MSTORM_CORE_CONN_AG_CTX_RULE1EN_MASK  0x1
1728 #define MSTORM_CORE_CONN_AG_CTX_RULE1EN_SHIFT 4
1729 #define MSTORM_CORE_CONN_AG_CTX_RULE2EN_MASK  0x1
1730 #define MSTORM_CORE_CONN_AG_CTX_RULE2EN_SHIFT 5
1731 #define MSTORM_CORE_CONN_AG_CTX_RULE3EN_MASK  0x1
1732 #define MSTORM_CORE_CONN_AG_CTX_RULE3EN_SHIFT 6
1733 #define MSTORM_CORE_CONN_AG_CTX_RULE4EN_MASK  0x1
1734 #define MSTORM_CORE_CONN_AG_CTX_RULE4EN_SHIFT 7
1735         __le16 word0 /* word0 */;
1736         __le16 word1 /* word1 */;
1737         __le32 reg0 /* reg0 */;
1738         __le32 reg1 /* reg1 */;
1739 };
1740
1741 /*
1742  * per encapsulation type enabling flags
1743  */
1744 struct prs_reg_encapsulation_type_en {
1745         u8 flags;
1746 #define PRS_REG_ENCAPSULATION_TYPE_EN_ETH_OVER_GRE_ENABLE_MASK     0x1
1747 #define PRS_REG_ENCAPSULATION_TYPE_EN_ETH_OVER_GRE_ENABLE_SHIFT    0
1748 #define PRS_REG_ENCAPSULATION_TYPE_EN_IP_OVER_GRE_ENABLE_MASK      0x1
1749 #define PRS_REG_ENCAPSULATION_TYPE_EN_IP_OVER_GRE_ENABLE_SHIFT     1
1750 #define PRS_REG_ENCAPSULATION_TYPE_EN_VXLAN_ENABLE_MASK            0x1
1751 #define PRS_REG_ENCAPSULATION_TYPE_EN_VXLAN_ENABLE_SHIFT           2
1752 #define PRS_REG_ENCAPSULATION_TYPE_EN_T_TAG_ENABLE_MASK            0x1
1753 #define PRS_REG_ENCAPSULATION_TYPE_EN_T_TAG_ENABLE_SHIFT           3
1754 #define PRS_REG_ENCAPSULATION_TYPE_EN_ETH_OVER_GENEVE_ENABLE_MASK  0x1
1755 #define PRS_REG_ENCAPSULATION_TYPE_EN_ETH_OVER_GENEVE_ENABLE_SHIFT 4
1756 #define PRS_REG_ENCAPSULATION_TYPE_EN_IP_OVER_GENEVE_ENABLE_MASK   0x1
1757 #define PRS_REG_ENCAPSULATION_TYPE_EN_IP_OVER_GENEVE_ENABLE_SHIFT  5
1758 #define PRS_REG_ENCAPSULATION_TYPE_EN_RESERVED_MASK                0x3
1759 #define PRS_REG_ENCAPSULATION_TYPE_EN_RESERVED_SHIFT               6
1760 };
1761
1762 enum pxp_tph_st_hint {
1763         TPH_ST_HINT_BIDIR /* Read/Write access by Host and Device */,
1764         TPH_ST_HINT_REQUESTER /* Read/Write access by Device */,
1765         TPH_ST_HINT_TARGET
1766             /* Device Write and Host Read, or Host Write and Device Read */,
1767         TPH_ST_HINT_TARGET_PRIO,
1768         MAX_PXP_TPH_ST_HINT
1769 };
1770
1771 /*
1772  * QM hardware structure of enable bypass credit mask
1773  */
1774 struct qm_rf_bypass_mask {
1775         u8 flags;
1776 #define QM_RF_BYPASS_MASK_LINEVOQ_MASK    0x1
1777 #define QM_RF_BYPASS_MASK_LINEVOQ_SHIFT   0
1778 #define QM_RF_BYPASS_MASK_RESERVED0_MASK  0x1
1779 #define QM_RF_BYPASS_MASK_RESERVED0_SHIFT 1
1780 #define QM_RF_BYPASS_MASK_PFWFQ_MASK      0x1
1781 #define QM_RF_BYPASS_MASK_PFWFQ_SHIFT     2
1782 #define QM_RF_BYPASS_MASK_VPWFQ_MASK      0x1
1783 #define QM_RF_BYPASS_MASK_VPWFQ_SHIFT     3
1784 #define QM_RF_BYPASS_MASK_PFRL_MASK       0x1
1785 #define QM_RF_BYPASS_MASK_PFRL_SHIFT      4
1786 #define QM_RF_BYPASS_MASK_VPQCNRL_MASK    0x1
1787 #define QM_RF_BYPASS_MASK_VPQCNRL_SHIFT   5
1788 #define QM_RF_BYPASS_MASK_FWPAUSE_MASK    0x1
1789 #define QM_RF_BYPASS_MASK_FWPAUSE_SHIFT   6
1790 #define QM_RF_BYPASS_MASK_RESERVED1_MASK  0x1
1791 #define QM_RF_BYPASS_MASK_RESERVED1_SHIFT 7
1792 };
1793
1794 /*
1795  * QM hardware structure of opportunistic credit mask
1796  */
1797 struct qm_rf_opportunistic_mask {
1798         __le16 flags;
1799 #define QM_RF_OPPORTUNISTIC_MASK_LINEVOQ_MASK     0x1
1800 #define QM_RF_OPPORTUNISTIC_MASK_LINEVOQ_SHIFT    0
1801 #define QM_RF_OPPORTUNISTIC_MASK_BYTEVOQ_MASK     0x1
1802 #define QM_RF_OPPORTUNISTIC_MASK_BYTEVOQ_SHIFT    1
1803 #define QM_RF_OPPORTUNISTIC_MASK_PFWFQ_MASK       0x1
1804 #define QM_RF_OPPORTUNISTIC_MASK_PFWFQ_SHIFT      2
1805 #define QM_RF_OPPORTUNISTIC_MASK_VPWFQ_MASK       0x1
1806 #define QM_RF_OPPORTUNISTIC_MASK_VPWFQ_SHIFT      3
1807 #define QM_RF_OPPORTUNISTIC_MASK_PFRL_MASK        0x1
1808 #define QM_RF_OPPORTUNISTIC_MASK_PFRL_SHIFT       4
1809 #define QM_RF_OPPORTUNISTIC_MASK_VPQCNRL_MASK     0x1
1810 #define QM_RF_OPPORTUNISTIC_MASK_VPQCNRL_SHIFT    5
1811 #define QM_RF_OPPORTUNISTIC_MASK_FWPAUSE_MASK     0x1
1812 #define QM_RF_OPPORTUNISTIC_MASK_FWPAUSE_SHIFT    6
1813 #define QM_RF_OPPORTUNISTIC_MASK_RESERVED0_MASK   0x1
1814 #define QM_RF_OPPORTUNISTIC_MASK_RESERVED0_SHIFT  7
1815 #define QM_RF_OPPORTUNISTIC_MASK_QUEUEEMPTY_MASK  0x1
1816 #define QM_RF_OPPORTUNISTIC_MASK_QUEUEEMPTY_SHIFT 8
1817 #define QM_RF_OPPORTUNISTIC_MASK_RESERVED1_MASK   0x7F
1818 #define QM_RF_OPPORTUNISTIC_MASK_RESERVED1_SHIFT  9
1819 };
1820
1821 /*
1822  * QM hardware structure of QM map memory
1823  */
1824 struct qm_rf_pq_map {
1825         __le32 reg;
1826 #define QM_RF_PQ_MAP_PQ_VALID_MASK          0x1
1827 #define QM_RF_PQ_MAP_PQ_VALID_SHIFT         0
1828 #define QM_RF_PQ_MAP_RL_ID_MASK             0xFF
1829 #define QM_RF_PQ_MAP_RL_ID_SHIFT            1
1830 #define QM_RF_PQ_MAP_VP_PQ_ID_MASK          0x1FF
1831 #define QM_RF_PQ_MAP_VP_PQ_ID_SHIFT         9
1832 #define QM_RF_PQ_MAP_VOQ_MASK               0x1F
1833 #define QM_RF_PQ_MAP_VOQ_SHIFT              18
1834 #define QM_RF_PQ_MAP_WRR_WEIGHT_GROUP_MASK  0x3
1835 #define QM_RF_PQ_MAP_WRR_WEIGHT_GROUP_SHIFT 23
1836 #define QM_RF_PQ_MAP_RL_VALID_MASK          0x1
1837 #define QM_RF_PQ_MAP_RL_VALID_SHIFT         25
1838 #define QM_RF_PQ_MAP_RESERVED_MASK          0x3F
1839 #define QM_RF_PQ_MAP_RESERVED_SHIFT         26
1840 };
1841
1842 /*
1843  * Completion params for aggregated interrupt completion
1844  */
1845 struct sdm_agg_int_comp_params {
1846         __le16 params;
1847 #define SDM_AGG_INT_COMP_PARAMS_AGG_INT_INDEX_MASK      0x3F
1848 #define SDM_AGG_INT_COMP_PARAMS_AGG_INT_INDEX_SHIFT     0
1849 #define SDM_AGG_INT_COMP_PARAMS_AGG_VECTOR_ENABLE_MASK  0x1
1850 #define SDM_AGG_INT_COMP_PARAMS_AGG_VECTOR_ENABLE_SHIFT 6
1851 #define SDM_AGG_INT_COMP_PARAMS_AGG_VECTOR_BIT_MASK     0x1FF
1852 #define SDM_AGG_INT_COMP_PARAMS_AGG_VECTOR_BIT_SHIFT    7
1853 };
1854
1855 /*
1856  * SDM operation gen command (generate aggregative interrupt)
1857  */
1858 struct sdm_op_gen {
1859         __le32 command;
1860 #define SDM_OP_GEN_COMP_PARAM_MASK  0xFFFF
1861 #define SDM_OP_GEN_COMP_PARAM_SHIFT 0
1862 #define SDM_OP_GEN_COMP_TYPE_MASK   0xF
1863 #define SDM_OP_GEN_COMP_TYPE_SHIFT  16
1864 #define SDM_OP_GEN_RESERVED_MASK    0xFFF
1865 #define SDM_OP_GEN_RESERVED_SHIFT   20
1866 };
1867
1868 struct ystorm_core_conn_ag_ctx {
1869         u8 byte0 /* cdu_validation */;
1870         u8 byte1 /* state */;
1871         u8 flags0;
1872 #define YSTORM_CORE_CONN_AG_CTX_BIT0_MASK     0x1
1873 #define YSTORM_CORE_CONN_AG_CTX_BIT0_SHIFT    0
1874 #define YSTORM_CORE_CONN_AG_CTX_BIT1_MASK     0x1
1875 #define YSTORM_CORE_CONN_AG_CTX_BIT1_SHIFT    1
1876 #define YSTORM_CORE_CONN_AG_CTX_CF0_MASK      0x3
1877 #define YSTORM_CORE_CONN_AG_CTX_CF0_SHIFT     2
1878 #define YSTORM_CORE_CONN_AG_CTX_CF1_MASK      0x3
1879 #define YSTORM_CORE_CONN_AG_CTX_CF1_SHIFT     4
1880 #define YSTORM_CORE_CONN_AG_CTX_CF2_MASK      0x3
1881 #define YSTORM_CORE_CONN_AG_CTX_CF2_SHIFT     6
1882         u8 flags1;
1883 #define YSTORM_CORE_CONN_AG_CTX_CF0EN_MASK    0x1
1884 #define YSTORM_CORE_CONN_AG_CTX_CF0EN_SHIFT   0
1885 #define YSTORM_CORE_CONN_AG_CTX_CF1EN_MASK    0x1
1886 #define YSTORM_CORE_CONN_AG_CTX_CF1EN_SHIFT   1
1887 #define YSTORM_CORE_CONN_AG_CTX_CF2EN_MASK    0x1
1888 #define YSTORM_CORE_CONN_AG_CTX_CF2EN_SHIFT   2
1889 #define YSTORM_CORE_CONN_AG_CTX_RULE0EN_MASK  0x1
1890 #define YSTORM_CORE_CONN_AG_CTX_RULE0EN_SHIFT 3
1891 #define YSTORM_CORE_CONN_AG_CTX_RULE1EN_MASK  0x1
1892 #define YSTORM_CORE_CONN_AG_CTX_RULE1EN_SHIFT 4
1893 #define YSTORM_CORE_CONN_AG_CTX_RULE2EN_MASK  0x1
1894 #define YSTORM_CORE_CONN_AG_CTX_RULE2EN_SHIFT 5
1895 #define YSTORM_CORE_CONN_AG_CTX_RULE3EN_MASK  0x1
1896 #define YSTORM_CORE_CONN_AG_CTX_RULE3EN_SHIFT 6
1897 #define YSTORM_CORE_CONN_AG_CTX_RULE4EN_MASK  0x1
1898 #define YSTORM_CORE_CONN_AG_CTX_RULE4EN_SHIFT 7
1899         u8 byte2 /* byte2 */;
1900         u8 byte3 /* byte3 */;
1901         __le16 word0 /* word0 */;
1902         __le32 reg0 /* reg0 */;
1903         __le32 reg1 /* reg1 */;
1904         __le16 word1 /* word1 */;
1905         __le16 word2 /* word2 */;
1906         __le16 word3 /* word3 */;
1907         __le16 word4 /* word4 */;
1908         __le32 reg2 /* reg2 */;
1909         __le32 reg3 /* reg3 */;
1910 };
1911
1912 #endif /* __ECORE_HSI_COMMON__ */