xref: /linux/drivers/net/ethernet/qlogic/qed/qed_hsi.h (revision f86fd32d)
1 /* QLogic qed NIC Driver
2  * Copyright (c) 2015-2017  QLogic Corporation
3  *
4  * This software is available to you under a choice of one of two
5  * licenses.  You may choose to be licensed under the terms of the GNU
6  * General Public License (GPL) Version 2, available from the file
7  * COPYING in the main directory of this source tree, or the
8  * OpenIB.org BSD license below:
9  *
10  *     Redistribution and use in source and binary forms, with or
11  *     without modification, are permitted provided that the following
12  *     conditions are met:
13  *
14  *      - Redistributions of source code must retain the above
15  *        copyright notice, this list of conditions and the following
16  *        disclaimer.
17  *
18  *      - Redistributions in binary form must reproduce the above
19  *        copyright notice, this list of conditions and the following
20  *        disclaimer in the documentation and /or other materials
21  *        provided with the distribution.
22  *
23  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
24  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
25  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
26  * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
27  * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
28  * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
29  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
30  * SOFTWARE.
31  */
32 
33 #ifndef _QED_HSI_H
34 #define _QED_HSI_H
35 
36 #include <linux/types.h>
37 #include <linux/io.h>
38 #include <linux/bitops.h>
39 #include <linux/delay.h>
40 #include <linux/kernel.h>
41 #include <linux/list.h>
42 #include <linux/slab.h>
43 #include <linux/qed/common_hsi.h>
44 #include <linux/qed/storage_common.h>
45 #include <linux/qed/tcp_common.h>
46 #include <linux/qed/fcoe_common.h>
47 #include <linux/qed/eth_common.h>
48 #include <linux/qed/iscsi_common.h>
49 #include <linux/qed/iwarp_common.h>
50 #include <linux/qed/rdma_common.h>
51 #include <linux/qed/roce_common.h>
52 #include <linux/qed/qed_fcoe_if.h>
53 
54 struct qed_hwfn;
55 struct qed_ptt;
56 
57 /* Opcodes for the event ring */
58 enum common_event_opcode {
59 	COMMON_EVENT_PF_START,
60 	COMMON_EVENT_PF_STOP,
61 	COMMON_EVENT_VF_START,
62 	COMMON_EVENT_VF_STOP,
63 	COMMON_EVENT_VF_PF_CHANNEL,
64 	COMMON_EVENT_VF_FLR,
65 	COMMON_EVENT_PF_UPDATE,
66 	COMMON_EVENT_MALICIOUS_VF,
67 	COMMON_EVENT_RL_UPDATE,
68 	COMMON_EVENT_EMPTY,
69 	MAX_COMMON_EVENT_OPCODE
70 };
71 
72 /* Common Ramrod Command IDs */
73 enum common_ramrod_cmd_id {
74 	COMMON_RAMROD_UNUSED,
75 	COMMON_RAMROD_PF_START,
76 	COMMON_RAMROD_PF_STOP,
77 	COMMON_RAMROD_VF_START,
78 	COMMON_RAMROD_VF_STOP,
79 	COMMON_RAMROD_PF_UPDATE,
80 	COMMON_RAMROD_RL_UPDATE,
81 	COMMON_RAMROD_EMPTY,
82 	MAX_COMMON_RAMROD_CMD_ID
83 };
84 
85 /* How ll2 should deal with packet upon errors */
86 enum core_error_handle {
87 	LL2_DROP_PACKET,
88 	LL2_DO_NOTHING,
89 	LL2_ASSERT,
90 	MAX_CORE_ERROR_HANDLE
91 };
92 
93 /* Opcodes for the event ring */
94 enum core_event_opcode {
95 	CORE_EVENT_TX_QUEUE_START,
96 	CORE_EVENT_TX_QUEUE_STOP,
97 	CORE_EVENT_RX_QUEUE_START,
98 	CORE_EVENT_RX_QUEUE_STOP,
99 	CORE_EVENT_RX_QUEUE_FLUSH,
100 	CORE_EVENT_TX_QUEUE_UPDATE,
101 	CORE_EVENT_QUEUE_STATS_QUERY,
102 	MAX_CORE_EVENT_OPCODE
103 };
104 
105 /* The L4 pseudo checksum mode for Core */
106 enum core_l4_pseudo_checksum_mode {
107 	CORE_L4_PSEUDO_CSUM_CORRECT_LENGTH,
108 	CORE_L4_PSEUDO_CSUM_ZERO_LENGTH,
109 	MAX_CORE_L4_PSEUDO_CHECKSUM_MODE
110 };
111 
112 /* Light-L2 RX Producers in Tstorm RAM */
113 struct core_ll2_port_stats {
114 	struct regpair gsi_invalid_hdr;
115 	struct regpair gsi_invalid_pkt_length;
116 	struct regpair gsi_unsupported_pkt_typ;
117 	struct regpair gsi_crcchksm_error;
118 };
119 
120 /* LL2 TX Per Queue Stats */
121 struct core_ll2_pstorm_per_queue_stat {
122 	struct regpair sent_ucast_bytes;
123 	struct regpair sent_mcast_bytes;
124 	struct regpair sent_bcast_bytes;
125 	struct regpair sent_ucast_pkts;
126 	struct regpair sent_mcast_pkts;
127 	struct regpair sent_bcast_pkts;
128 	struct regpair error_drop_pkts;
129 };
130 
131 /* Light-L2 RX Producers in Tstorm RAM */
132 struct core_ll2_rx_prod {
133 	__le16 bd_prod;
134 	__le16 cqe_prod;
135 };
136 
137 struct core_ll2_tstorm_per_queue_stat {
138 	struct regpair packet_too_big_discard;
139 	struct regpair no_buff_discard;
140 };
141 
142 struct core_ll2_ustorm_per_queue_stat {
143 	struct regpair rcv_ucast_bytes;
144 	struct regpair rcv_mcast_bytes;
145 	struct regpair rcv_bcast_bytes;
146 	struct regpair rcv_ucast_pkts;
147 	struct regpair rcv_mcast_pkts;
148 	struct regpair rcv_bcast_pkts;
149 };
150 
151 /* Structure for doorbell data, in PWM mode, for RX producers update. */
152 struct core_pwm_prod_update_data {
153 	__le16 icid; /* internal CID */
154 	u8 reserved0;
155 	u8 params;
156 #define CORE_PWM_PROD_UPDATE_DATA_AGG_CMD_MASK	  0x3
157 #define CORE_PWM_PROD_UPDATE_DATA_AGG_CMD_SHIFT   0
158 #define CORE_PWM_PROD_UPDATE_DATA_RESERVED1_MASK  0x3F	/* Set 0 */
159 #define CORE_PWM_PROD_UPDATE_DATA_RESERVED1_SHIFT 2
160 	struct core_ll2_rx_prod prod; /* Producers */
161 };
162 
163 /* Core Ramrod Command IDs (light L2) */
164 enum core_ramrod_cmd_id {
165 	CORE_RAMROD_UNUSED,
166 	CORE_RAMROD_RX_QUEUE_START,
167 	CORE_RAMROD_TX_QUEUE_START,
168 	CORE_RAMROD_RX_QUEUE_STOP,
169 	CORE_RAMROD_TX_QUEUE_STOP,
170 	CORE_RAMROD_RX_QUEUE_FLUSH,
171 	CORE_RAMROD_TX_QUEUE_UPDATE,
172 	CORE_RAMROD_QUEUE_STATS_QUERY,
173 	MAX_CORE_RAMROD_CMD_ID
174 };
175 
176 /* Core RX CQE Type for Light L2 */
177 enum core_roce_flavor_type {
178 	CORE_ROCE,
179 	CORE_RROCE,
180 	MAX_CORE_ROCE_FLAVOR_TYPE
181 };
182 
183 /* Specifies how ll2 should deal with packets errors: packet_too_big and
184  * no_buff.
185  */
186 struct core_rx_action_on_error {
187 	u8 error_type;
188 #define CORE_RX_ACTION_ON_ERROR_PACKET_TOO_BIG_MASK	0x3
189 #define CORE_RX_ACTION_ON_ERROR_PACKET_TOO_BIG_SHIFT	0
190 #define CORE_RX_ACTION_ON_ERROR_NO_BUFF_MASK		0x3
191 #define CORE_RX_ACTION_ON_ERROR_NO_BUFF_SHIFT		2
192 #define CORE_RX_ACTION_ON_ERROR_RESERVED_MASK		0xF
193 #define CORE_RX_ACTION_ON_ERROR_RESERVED_SHIFT		4
194 };
195 
196 /* Core RX BD for Light L2 */
197 struct core_rx_bd {
198 	struct regpair addr;
199 	__le16 reserved[4];
200 };
201 
202 /* Core RX CM offload BD for Light L2 */
203 struct core_rx_bd_with_buff_len {
204 	struct regpair addr;
205 	__le16 buff_length;
206 	__le16 reserved[3];
207 };
208 
209 /* Core RX CM offload BD for Light L2 */
210 union core_rx_bd_union {
211 	struct core_rx_bd rx_bd;
212 	struct core_rx_bd_with_buff_len rx_bd_with_len;
213 };
214 
215 /* Opaque Data for Light L2 RX CQE */
216 struct core_rx_cqe_opaque_data {
217 	__le32 data[2];
218 };
219 
220 /* Core RX CQE Type for Light L2 */
221 enum core_rx_cqe_type {
222 	CORE_RX_CQE_ILLEGAL_TYPE,
223 	CORE_RX_CQE_TYPE_REGULAR,
224 	CORE_RX_CQE_TYPE_GSI_OFFLOAD,
225 	CORE_RX_CQE_TYPE_SLOW_PATH,
226 	MAX_CORE_RX_CQE_TYPE
227 };
228 
229 /* Core RX CQE for Light L2 */
230 struct core_rx_fast_path_cqe {
231 	u8 type;
232 	u8 placement_offset;
233 	struct parsing_and_err_flags parse_flags;
234 	__le16 packet_length;
235 	__le16 vlan;
236 	struct core_rx_cqe_opaque_data opaque_data;
237 	struct parsing_err_flags err_flags;
238 	__le16 reserved0;
239 	__le32 reserved1[3];
240 };
241 
242 /* Core Rx CM offload CQE */
243 struct core_rx_gsi_offload_cqe {
244 	u8 type;
245 	u8 data_length_error;
246 	struct parsing_and_err_flags parse_flags;
247 	__le16 data_length;
248 	__le16 vlan;
249 	__le32 src_mac_addrhi;
250 	__le16 src_mac_addrlo;
251 	__le16 qp_id;
252 	__le32 src_qp;
253 	struct core_rx_cqe_opaque_data opaque_data;
254 	__le32 reserved;
255 };
256 
257 /* Core RX CQE for Light L2 */
258 struct core_rx_slow_path_cqe {
259 	u8 type;
260 	u8 ramrod_cmd_id;
261 	__le16 echo;
262 	struct core_rx_cqe_opaque_data opaque_data;
263 	__le32 reserved1[5];
264 };
265 
266 /* Core RX CM offload BD for Light L2 */
267 union core_rx_cqe_union {
268 	struct core_rx_fast_path_cqe rx_cqe_fp;
269 	struct core_rx_gsi_offload_cqe rx_cqe_gsi;
270 	struct core_rx_slow_path_cqe rx_cqe_sp;
271 };
272 
273 /* Ramrod data for rx queue start ramrod */
274 struct core_rx_start_ramrod_data {
275 	struct regpair bd_base;
276 	struct regpair cqe_pbl_addr;
277 	__le16 mtu;
278 	__le16 sb_id;
279 	u8 sb_index;
280 	u8 complete_cqe_flg;
281 	u8 complete_event_flg;
282 	u8 drop_ttl0_flg;
283 	__le16 num_of_pbl_pages;
284 	u8 inner_vlan_stripping_en;
285 	u8 report_outer_vlan;
286 	u8 queue_id;
287 	u8 main_func_queue;
288 	u8 mf_si_bcast_accept_all;
289 	u8 mf_si_mcast_accept_all;
290 	struct core_rx_action_on_error action_on_error;
291 	u8 gsi_offload_flag;
292 	u8 vport_id_valid;
293 	u8 vport_id;
294 	u8 zero_prod_flg;
295 	u8 wipe_inner_vlan_pri_en;
296 	u8 reserved[2];
297 };
298 
299 /* Ramrod data for rx queue stop ramrod */
300 struct core_rx_stop_ramrod_data {
301 	u8 complete_cqe_flg;
302 	u8 complete_event_flg;
303 	u8 queue_id;
304 	u8 reserved1;
305 	__le16 reserved2[2];
306 };
307 
308 /* Flags for Core TX BD */
309 struct core_tx_bd_data {
310 	__le16 as_bitfield;
311 #define CORE_TX_BD_DATA_FORCE_VLAN_MODE_MASK		0x1
312 #define CORE_TX_BD_DATA_FORCE_VLAN_MODE_SHIFT		0
313 #define CORE_TX_BD_DATA_VLAN_INSERTION_MASK		0x1
314 #define CORE_TX_BD_DATA_VLAN_INSERTION_SHIFT		1
315 #define CORE_TX_BD_DATA_START_BD_MASK			0x1
316 #define CORE_TX_BD_DATA_START_BD_SHIFT			2
317 #define CORE_TX_BD_DATA_IP_CSUM_MASK			0x1
318 #define CORE_TX_BD_DATA_IP_CSUM_SHIFT			3
319 #define CORE_TX_BD_DATA_L4_CSUM_MASK			0x1
320 #define CORE_TX_BD_DATA_L4_CSUM_SHIFT			4
321 #define CORE_TX_BD_DATA_IPV6_EXT_MASK			0x1
322 #define CORE_TX_BD_DATA_IPV6_EXT_SHIFT			5
323 #define CORE_TX_BD_DATA_L4_PROTOCOL_MASK		0x1
324 #define CORE_TX_BD_DATA_L4_PROTOCOL_SHIFT		6
325 #define CORE_TX_BD_DATA_L4_PSEUDO_CSUM_MODE_MASK	0x1
326 #define CORE_TX_BD_DATA_L4_PSEUDO_CSUM_MODE_SHIFT	7
327 #define CORE_TX_BD_DATA_NBDS_MASK			0xF
328 #define CORE_TX_BD_DATA_NBDS_SHIFT			8
329 #define CORE_TX_BD_DATA_ROCE_FLAV_MASK			0x1
330 #define CORE_TX_BD_DATA_ROCE_FLAV_SHIFT			12
331 #define CORE_TX_BD_DATA_IP_LEN_MASK			0x1
332 #define CORE_TX_BD_DATA_IP_LEN_SHIFT			13
333 #define CORE_TX_BD_DATA_DISABLE_STAG_INSERTION_MASK	0x1
334 #define CORE_TX_BD_DATA_DISABLE_STAG_INSERTION_SHIFT	14
335 #define CORE_TX_BD_DATA_RESERVED0_MASK			0x1
336 #define CORE_TX_BD_DATA_RESERVED0_SHIFT			15
337 };
338 
339 /* Core TX BD for Light L2 */
340 struct core_tx_bd {
341 	struct regpair addr;
342 	__le16 nbytes;
343 	__le16 nw_vlan_or_lb_echo;
344 	struct core_tx_bd_data bd_data;
345 	__le16 bitfield1;
346 #define CORE_TX_BD_L4_HDR_OFFSET_W_MASK		0x3FFF
347 #define CORE_TX_BD_L4_HDR_OFFSET_W_SHIFT	0
348 #define CORE_TX_BD_TX_DST_MASK			0x3
349 #define CORE_TX_BD_TX_DST_SHIFT			14
350 };
351 
352 /* Light L2 TX Destination */
353 enum core_tx_dest {
354 	CORE_TX_DEST_NW,
355 	CORE_TX_DEST_LB,
356 	CORE_TX_DEST_RESERVED,
357 	CORE_TX_DEST_DROP,
358 	MAX_CORE_TX_DEST
359 };
360 
361 /* Ramrod data for tx queue start ramrod */
362 struct core_tx_start_ramrod_data {
363 	struct regpair pbl_base_addr;
364 	__le16 mtu;
365 	__le16 sb_id;
366 	u8 sb_index;
367 	u8 stats_en;
368 	u8 stats_id;
369 	u8 conn_type;
370 	__le16 pbl_size;
371 	__le16 qm_pq_id;
372 	u8 gsi_offload_flag;
373 	u8 ctx_stats_en;
374 	u8 vport_id_valid;
375 	u8 vport_id;
376 	u8 enforce_security_flag;
377 	u8 reserved[7];
378 };
379 
380 /* Ramrod data for tx queue stop ramrod */
381 struct core_tx_stop_ramrod_data {
382 	__le32 reserved0[2];
383 };
384 
385 /* Ramrod data for tx queue update ramrod */
386 struct core_tx_update_ramrod_data {
387 	u8 update_qm_pq_id_flg;
388 	u8 reserved0;
389 	__le16 qm_pq_id;
390 	__le32 reserved1[1];
391 };
392 
393 /* Enum flag for what type of dcb data to update */
394 enum dcb_dscp_update_mode {
395 	DONT_UPDATE_DCB_DSCP,
396 	UPDATE_DCB,
397 	UPDATE_DSCP,
398 	UPDATE_DCB_DSCP,
399 	MAX_DCB_DSCP_UPDATE_MODE
400 };
401 
402 /* The core storm context for the Ystorm */
403 struct ystorm_core_conn_st_ctx {
404 	__le32 reserved[4];
405 };
406 
407 /* The core storm context for the Pstorm */
408 struct pstorm_core_conn_st_ctx {
409 	__le32 reserved[20];
410 };
411 
412 /* Core Slowpath Connection storm context of Xstorm */
413 struct xstorm_core_conn_st_ctx {
414 	__le32 spq_base_lo;
415 	__le32 spq_base_hi;
416 	struct regpair consolid_base_addr;
417 	__le16 spq_cons;
418 	__le16 consolid_cons;
419 	__le32 reserved0[55];
420 };
421 
422 struct e4_xstorm_core_conn_ag_ctx {
423 	u8 reserved0;
424 	u8 state;
425 	u8 flags0;
426 #define E4_XSTORM_CORE_CONN_AG_CTX_EXIST_IN_QM0_MASK	0x1
427 #define E4_XSTORM_CORE_CONN_AG_CTX_EXIST_IN_QM0_SHIFT	0
428 #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED1_MASK	0x1
429 #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED1_SHIFT	1
430 #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED2_MASK	0x1
431 #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED2_SHIFT	2
432 #define E4_XSTORM_CORE_CONN_AG_CTX_EXIST_IN_QM3_MASK	0x1
433 #define E4_XSTORM_CORE_CONN_AG_CTX_EXIST_IN_QM3_SHIFT	3
434 #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED3_MASK	0x1
435 #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED3_SHIFT	4
436 #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED4_MASK	0x1
437 #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED4_SHIFT	5
438 #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED5_MASK	0x1
439 #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED5_SHIFT	6
440 #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED6_MASK	0x1
441 #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED6_SHIFT	7
442 	u8 flags1;
443 #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED7_MASK	0x1
444 #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED7_SHIFT	0
445 #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED8_MASK	0x1
446 #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED8_SHIFT	1
447 #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED9_MASK	0x1
448 #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED9_SHIFT	2
449 #define E4_XSTORM_CORE_CONN_AG_CTX_BIT11_MASK		0x1
450 #define E4_XSTORM_CORE_CONN_AG_CTX_BIT11_SHIFT		3
451 #define E4_XSTORM_CORE_CONN_AG_CTX_BIT12_MASK		0x1
452 #define E4_XSTORM_CORE_CONN_AG_CTX_BIT12_SHIFT		4
453 #define E4_XSTORM_CORE_CONN_AG_CTX_BIT13_MASK		0x1
454 #define E4_XSTORM_CORE_CONN_AG_CTX_BIT13_SHIFT		5
455 #define E4_XSTORM_CORE_CONN_AG_CTX_TX_RULE_ACTIVE_MASK	0x1
456 #define E4_XSTORM_CORE_CONN_AG_CTX_TX_RULE_ACTIVE_SHIFT	6
457 #define E4_XSTORM_CORE_CONN_AG_CTX_DQ_CF_ACTIVE_MASK	0x1
458 #define E4_XSTORM_CORE_CONN_AG_CTX_DQ_CF_ACTIVE_SHIFT	7
459 	u8 flags2;
460 #define E4_XSTORM_CORE_CONN_AG_CTX_CF0_MASK	0x3
461 #define E4_XSTORM_CORE_CONN_AG_CTX_CF0_SHIFT	0
462 #define E4_XSTORM_CORE_CONN_AG_CTX_CF1_MASK	0x3
463 #define E4_XSTORM_CORE_CONN_AG_CTX_CF1_SHIFT	2
464 #define E4_XSTORM_CORE_CONN_AG_CTX_CF2_MASK	0x3
465 #define E4_XSTORM_CORE_CONN_AG_CTX_CF2_SHIFT	4
466 #define E4_XSTORM_CORE_CONN_AG_CTX_CF3_MASK	0x3
467 #define E4_XSTORM_CORE_CONN_AG_CTX_CF3_SHIFT	6
468 	u8 flags3;
469 #define E4_XSTORM_CORE_CONN_AG_CTX_CF4_MASK	0x3
470 #define E4_XSTORM_CORE_CONN_AG_CTX_CF4_SHIFT	0
471 #define E4_XSTORM_CORE_CONN_AG_CTX_CF5_MASK	0x3
472 #define E4_XSTORM_CORE_CONN_AG_CTX_CF5_SHIFT	2
473 #define E4_XSTORM_CORE_CONN_AG_CTX_CF6_MASK	0x3
474 #define E4_XSTORM_CORE_CONN_AG_CTX_CF6_SHIFT	4
475 #define E4_XSTORM_CORE_CONN_AG_CTX_CF7_MASK	0x3
476 #define E4_XSTORM_CORE_CONN_AG_CTX_CF7_SHIFT	6
477 	u8 flags4;
478 #define E4_XSTORM_CORE_CONN_AG_CTX_CF8_MASK	0x3
479 #define E4_XSTORM_CORE_CONN_AG_CTX_CF8_SHIFT	0
480 #define E4_XSTORM_CORE_CONN_AG_CTX_CF9_MASK	0x3
481 #define E4_XSTORM_CORE_CONN_AG_CTX_CF9_SHIFT	2
482 #define E4_XSTORM_CORE_CONN_AG_CTX_CF10_MASK	0x3
483 #define E4_XSTORM_CORE_CONN_AG_CTX_CF10_SHIFT	4
484 #define E4_XSTORM_CORE_CONN_AG_CTX_CF11_MASK	0x3
485 #define E4_XSTORM_CORE_CONN_AG_CTX_CF11_SHIFT	6
486 	u8 flags5;
487 #define E4_XSTORM_CORE_CONN_AG_CTX_CF12_MASK	0x3
488 #define E4_XSTORM_CORE_CONN_AG_CTX_CF12_SHIFT	0
489 #define E4_XSTORM_CORE_CONN_AG_CTX_CF13_MASK	0x3
490 #define E4_XSTORM_CORE_CONN_AG_CTX_CF13_SHIFT	2
491 #define E4_XSTORM_CORE_CONN_AG_CTX_CF14_MASK	0x3
492 #define E4_XSTORM_CORE_CONN_AG_CTX_CF14_SHIFT	4
493 #define E4_XSTORM_CORE_CONN_AG_CTX_CF15_MASK	0x3
494 #define E4_XSTORM_CORE_CONN_AG_CTX_CF15_SHIFT	6
495 	u8 flags6;
496 #define E4_XSTORM_CORE_CONN_AG_CTX_CONSOLID_PROD_CF_MASK	0x3
497 #define E4_XSTORM_CORE_CONN_AG_CTX_CONSOLID_PROD_CF_SHIFT	0
498 #define E4_XSTORM_CORE_CONN_AG_CTX_CF17_MASK			0x3
499 #define E4_XSTORM_CORE_CONN_AG_CTX_CF17_SHIFT			2
500 #define E4_XSTORM_CORE_CONN_AG_CTX_DQ_CF_MASK			0x3
501 #define E4_XSTORM_CORE_CONN_AG_CTX_DQ_CF_SHIFT			4
502 #define E4_XSTORM_CORE_CONN_AG_CTX_TERMINATE_CF_MASK		0x3
503 #define E4_XSTORM_CORE_CONN_AG_CTX_TERMINATE_CF_SHIFT		6
504 	u8 flags7;
505 #define E4_XSTORM_CORE_CONN_AG_CTX_FLUSH_Q0_MASK	0x3
506 #define E4_XSTORM_CORE_CONN_AG_CTX_FLUSH_Q0_SHIFT	0
507 #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED10_MASK	0x3
508 #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED10_SHIFT	2
509 #define E4_XSTORM_CORE_CONN_AG_CTX_SLOW_PATH_MASK	0x3
510 #define E4_XSTORM_CORE_CONN_AG_CTX_SLOW_PATH_SHIFT	4
511 #define E4_XSTORM_CORE_CONN_AG_CTX_CF0EN_MASK		0x1
512 #define E4_XSTORM_CORE_CONN_AG_CTX_CF0EN_SHIFT		6
513 #define E4_XSTORM_CORE_CONN_AG_CTX_CF1EN_MASK		0x1
514 #define E4_XSTORM_CORE_CONN_AG_CTX_CF1EN_SHIFT		7
515 	u8 flags8;
516 #define E4_XSTORM_CORE_CONN_AG_CTX_CF2EN_MASK	0x1
517 #define E4_XSTORM_CORE_CONN_AG_CTX_CF2EN_SHIFT	0
518 #define E4_XSTORM_CORE_CONN_AG_CTX_CF3EN_MASK	0x1
519 #define E4_XSTORM_CORE_CONN_AG_CTX_CF3EN_SHIFT	1
520 #define E4_XSTORM_CORE_CONN_AG_CTX_CF4EN_MASK	0x1
521 #define E4_XSTORM_CORE_CONN_AG_CTX_CF4EN_SHIFT	2
522 #define E4_XSTORM_CORE_CONN_AG_CTX_CF5EN_MASK	0x1
523 #define E4_XSTORM_CORE_CONN_AG_CTX_CF5EN_SHIFT	3
524 #define E4_XSTORM_CORE_CONN_AG_CTX_CF6EN_MASK	0x1
525 #define E4_XSTORM_CORE_CONN_AG_CTX_CF6EN_SHIFT	4
526 #define E4_XSTORM_CORE_CONN_AG_CTX_CF7EN_MASK	0x1
527 #define E4_XSTORM_CORE_CONN_AG_CTX_CF7EN_SHIFT	5
528 #define E4_XSTORM_CORE_CONN_AG_CTX_CF8EN_MASK	0x1
529 #define E4_XSTORM_CORE_CONN_AG_CTX_CF8EN_SHIFT	6
530 #define E4_XSTORM_CORE_CONN_AG_CTX_CF9EN_MASK	0x1
531 #define E4_XSTORM_CORE_CONN_AG_CTX_CF9EN_SHIFT	7
532 	u8 flags9;
533 #define E4_XSTORM_CORE_CONN_AG_CTX_CF10EN_MASK			0x1
534 #define E4_XSTORM_CORE_CONN_AG_CTX_CF10EN_SHIFT			0
535 #define E4_XSTORM_CORE_CONN_AG_CTX_CF11EN_MASK			0x1
536 #define E4_XSTORM_CORE_CONN_AG_CTX_CF11EN_SHIFT			1
537 #define E4_XSTORM_CORE_CONN_AG_CTX_CF12EN_MASK			0x1
538 #define E4_XSTORM_CORE_CONN_AG_CTX_CF12EN_SHIFT			2
539 #define E4_XSTORM_CORE_CONN_AG_CTX_CF13EN_MASK			0x1
540 #define E4_XSTORM_CORE_CONN_AG_CTX_CF13EN_SHIFT			3
541 #define E4_XSTORM_CORE_CONN_AG_CTX_CF14EN_MASK			0x1
542 #define E4_XSTORM_CORE_CONN_AG_CTX_CF14EN_SHIFT			4
543 #define E4_XSTORM_CORE_CONN_AG_CTX_CF15EN_MASK			0x1
544 #define E4_XSTORM_CORE_CONN_AG_CTX_CF15EN_SHIFT			5
545 #define E4_XSTORM_CORE_CONN_AG_CTX_CONSOLID_PROD_CF_EN_MASK	0x1
546 #define E4_XSTORM_CORE_CONN_AG_CTX_CONSOLID_PROD_CF_EN_SHIFT	6
547 #define E4_XSTORM_CORE_CONN_AG_CTX_CF17EN_MASK			0x1
548 #define E4_XSTORM_CORE_CONN_AG_CTX_CF17EN_SHIFT			7
549 	u8 flags10;
550 #define E4_XSTORM_CORE_CONN_AG_CTX_DQ_CF_EN_MASK		0x1
551 #define E4_XSTORM_CORE_CONN_AG_CTX_DQ_CF_EN_SHIFT		0
552 #define E4_XSTORM_CORE_CONN_AG_CTX_TERMINATE_CF_EN_MASK		0x1
553 #define E4_XSTORM_CORE_CONN_AG_CTX_TERMINATE_CF_EN_SHIFT	1
554 #define E4_XSTORM_CORE_CONN_AG_CTX_FLUSH_Q0_EN_MASK		0x1
555 #define E4_XSTORM_CORE_CONN_AG_CTX_FLUSH_Q0_EN_SHIFT		2
556 #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED11_MASK		0x1
557 #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED11_SHIFT		3
558 #define E4_XSTORM_CORE_CONN_AG_CTX_SLOW_PATH_EN_MASK		0x1
559 #define E4_XSTORM_CORE_CONN_AG_CTX_SLOW_PATH_EN_SHIFT		4
560 #define E4_XSTORM_CORE_CONN_AG_CTX_CF23EN_MASK			0x1
561 #define E4_XSTORM_CORE_CONN_AG_CTX_CF23EN_SHIFT			5
562 #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED12_MASK		0x1
563 #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED12_SHIFT		6
564 #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED13_MASK		0x1
565 #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED13_SHIFT		7
566 	u8 flags11;
567 #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED14_MASK	0x1
568 #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED14_SHIFT	0
569 #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED15_MASK	0x1
570 #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED15_SHIFT	1
571 #define E4_XSTORM_CORE_CONN_AG_CTX_TX_DEC_RULE_EN_MASK	0x1
572 #define E4_XSTORM_CORE_CONN_AG_CTX_TX_DEC_RULE_EN_SHIFT	2
573 #define E4_XSTORM_CORE_CONN_AG_CTX_RULE5EN_MASK		0x1
574 #define E4_XSTORM_CORE_CONN_AG_CTX_RULE5EN_SHIFT	3
575 #define E4_XSTORM_CORE_CONN_AG_CTX_RULE6EN_MASK		0x1
576 #define E4_XSTORM_CORE_CONN_AG_CTX_RULE6EN_SHIFT	4
577 #define E4_XSTORM_CORE_CONN_AG_CTX_RULE7EN_MASK		0x1
578 #define E4_XSTORM_CORE_CONN_AG_CTX_RULE7EN_SHIFT	5
579 #define E4_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED1_MASK	0x1
580 #define E4_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED1_SHIFT	6
581 #define E4_XSTORM_CORE_CONN_AG_CTX_RULE9EN_MASK		0x1
582 #define E4_XSTORM_CORE_CONN_AG_CTX_RULE9EN_SHIFT	7
583 	u8 flags12;
584 #define E4_XSTORM_CORE_CONN_AG_CTX_RULE10EN_MASK	0x1
585 #define E4_XSTORM_CORE_CONN_AG_CTX_RULE10EN_SHIFT	0
586 #define E4_XSTORM_CORE_CONN_AG_CTX_RULE11EN_MASK	0x1
587 #define E4_XSTORM_CORE_CONN_AG_CTX_RULE11EN_SHIFT	1
588 #define E4_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED2_MASK	0x1
589 #define E4_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED2_SHIFT	2
590 #define E4_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED3_MASK	0x1
591 #define E4_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED3_SHIFT	3
592 #define E4_XSTORM_CORE_CONN_AG_CTX_RULE14EN_MASK	0x1
593 #define E4_XSTORM_CORE_CONN_AG_CTX_RULE14EN_SHIFT	4
594 #define E4_XSTORM_CORE_CONN_AG_CTX_RULE15EN_MASK	0x1
595 #define E4_XSTORM_CORE_CONN_AG_CTX_RULE15EN_SHIFT	5
596 #define E4_XSTORM_CORE_CONN_AG_CTX_RULE16EN_MASK	0x1
597 #define E4_XSTORM_CORE_CONN_AG_CTX_RULE16EN_SHIFT	6
598 #define E4_XSTORM_CORE_CONN_AG_CTX_RULE17EN_MASK	0x1
599 #define E4_XSTORM_CORE_CONN_AG_CTX_RULE17EN_SHIFT	7
600 	u8 flags13;
601 #define E4_XSTORM_CORE_CONN_AG_CTX_RULE18EN_MASK	0x1
602 #define E4_XSTORM_CORE_CONN_AG_CTX_RULE18EN_SHIFT	0
603 #define E4_XSTORM_CORE_CONN_AG_CTX_RULE19EN_MASK	0x1
604 #define E4_XSTORM_CORE_CONN_AG_CTX_RULE19EN_SHIFT	1
605 #define E4_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED4_MASK	0x1
606 #define E4_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED4_SHIFT	2
607 #define E4_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED5_MASK	0x1
608 #define E4_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED5_SHIFT	3
609 #define E4_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED6_MASK	0x1
610 #define E4_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED6_SHIFT	4
611 #define E4_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED7_MASK	0x1
612 #define E4_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED7_SHIFT	5
613 #define E4_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED8_MASK	0x1
614 #define E4_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED8_SHIFT	6
615 #define E4_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED9_MASK	0x1
616 #define E4_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED9_SHIFT	7
617 	u8 flags14;
618 #define E4_XSTORM_CORE_CONN_AG_CTX_BIT16_MASK	0x1
619 #define E4_XSTORM_CORE_CONN_AG_CTX_BIT16_SHIFT	0
620 #define E4_XSTORM_CORE_CONN_AG_CTX_BIT17_MASK	0x1
621 #define E4_XSTORM_CORE_CONN_AG_CTX_BIT17_SHIFT	1
622 #define E4_XSTORM_CORE_CONN_AG_CTX_BIT18_MASK	0x1
623 #define E4_XSTORM_CORE_CONN_AG_CTX_BIT18_SHIFT	2
624 #define E4_XSTORM_CORE_CONN_AG_CTX_BIT19_MASK	0x1
625 #define E4_XSTORM_CORE_CONN_AG_CTX_BIT19_SHIFT	3
626 #define E4_XSTORM_CORE_CONN_AG_CTX_BIT20_MASK	0x1
627 #define E4_XSTORM_CORE_CONN_AG_CTX_BIT20_SHIFT	4
628 #define E4_XSTORM_CORE_CONN_AG_CTX_BIT21_MASK	0x1
629 #define E4_XSTORM_CORE_CONN_AG_CTX_BIT21_SHIFT	5
630 #define E4_XSTORM_CORE_CONN_AG_CTX_CF23_MASK	0x3
631 #define E4_XSTORM_CORE_CONN_AG_CTX_CF23_SHIFT	6
632 	u8 byte2;
633 	__le16 physical_q0;
634 	__le16 consolid_prod;
635 	__le16 reserved16;
636 	__le16 tx_bd_cons;
637 	__le16 tx_bd_or_spq_prod;
638 	__le16 updated_qm_pq_id;
639 	__le16 conn_dpi;
640 	u8 byte3;
641 	u8 byte4;
642 	u8 byte5;
643 	u8 byte6;
644 	__le32 reg0;
645 	__le32 reg1;
646 	__le32 reg2;
647 	__le32 reg3;
648 	__le32 reg4;
649 	__le32 reg5;
650 	__le32 reg6;
651 	__le16 word7;
652 	__le16 word8;
653 	__le16 word9;
654 	__le16 word10;
655 	__le32 reg7;
656 	__le32 reg8;
657 	__le32 reg9;
658 	u8 byte7;
659 	u8 byte8;
660 	u8 byte9;
661 	u8 byte10;
662 	u8 byte11;
663 	u8 byte12;
664 	u8 byte13;
665 	u8 byte14;
666 	u8 byte15;
667 	u8 e5_reserved;
668 	__le16 word11;
669 	__le32 reg10;
670 	__le32 reg11;
671 	__le32 reg12;
672 	__le32 reg13;
673 	__le32 reg14;
674 	__le32 reg15;
675 	__le32 reg16;
676 	__le32 reg17;
677 	__le32 reg18;
678 	__le32 reg19;
679 	__le16 word12;
680 	__le16 word13;
681 	__le16 word14;
682 	__le16 word15;
683 };
684 
685 struct e4_tstorm_core_conn_ag_ctx {
686 	u8 byte0;
687 	u8 byte1;
688 	u8 flags0;
689 #define E4_TSTORM_CORE_CONN_AG_CTX_BIT0_MASK	0x1
690 #define E4_TSTORM_CORE_CONN_AG_CTX_BIT0_SHIFT	0
691 #define E4_TSTORM_CORE_CONN_AG_CTX_BIT1_MASK	0x1
692 #define E4_TSTORM_CORE_CONN_AG_CTX_BIT1_SHIFT	1
693 #define E4_TSTORM_CORE_CONN_AG_CTX_BIT2_MASK	0x1
694 #define E4_TSTORM_CORE_CONN_AG_CTX_BIT2_SHIFT	2
695 #define E4_TSTORM_CORE_CONN_AG_CTX_BIT3_MASK	0x1
696 #define E4_TSTORM_CORE_CONN_AG_CTX_BIT3_SHIFT	3
697 #define E4_TSTORM_CORE_CONN_AG_CTX_BIT4_MASK	0x1
698 #define E4_TSTORM_CORE_CONN_AG_CTX_BIT4_SHIFT	4
699 #define E4_TSTORM_CORE_CONN_AG_CTX_BIT5_MASK	0x1
700 #define E4_TSTORM_CORE_CONN_AG_CTX_BIT5_SHIFT	5
701 #define E4_TSTORM_CORE_CONN_AG_CTX_CF0_MASK	0x3
702 #define E4_TSTORM_CORE_CONN_AG_CTX_CF0_SHIFT	6
703 	u8 flags1;
704 #define E4_TSTORM_CORE_CONN_AG_CTX_CF1_MASK	0x3
705 #define E4_TSTORM_CORE_CONN_AG_CTX_CF1_SHIFT	0
706 #define E4_TSTORM_CORE_CONN_AG_CTX_CF2_MASK	0x3
707 #define E4_TSTORM_CORE_CONN_AG_CTX_CF2_SHIFT	2
708 #define E4_TSTORM_CORE_CONN_AG_CTX_CF3_MASK	0x3
709 #define E4_TSTORM_CORE_CONN_AG_CTX_CF3_SHIFT	4
710 #define E4_TSTORM_CORE_CONN_AG_CTX_CF4_MASK	0x3
711 #define E4_TSTORM_CORE_CONN_AG_CTX_CF4_SHIFT	6
712 	u8 flags2;
713 #define E4_TSTORM_CORE_CONN_AG_CTX_CF5_MASK	0x3
714 #define E4_TSTORM_CORE_CONN_AG_CTX_CF5_SHIFT	0
715 #define E4_TSTORM_CORE_CONN_AG_CTX_CF6_MASK	0x3
716 #define E4_TSTORM_CORE_CONN_AG_CTX_CF6_SHIFT	2
717 #define E4_TSTORM_CORE_CONN_AG_CTX_CF7_MASK	0x3
718 #define E4_TSTORM_CORE_CONN_AG_CTX_CF7_SHIFT	4
719 #define E4_TSTORM_CORE_CONN_AG_CTX_CF8_MASK	0x3
720 #define E4_TSTORM_CORE_CONN_AG_CTX_CF8_SHIFT	6
721 	u8 flags3;
722 #define E4_TSTORM_CORE_CONN_AG_CTX_CF9_MASK	0x3
723 #define E4_TSTORM_CORE_CONN_AG_CTX_CF9_SHIFT	0
724 #define E4_TSTORM_CORE_CONN_AG_CTX_CF10_MASK	0x3
725 #define E4_TSTORM_CORE_CONN_AG_CTX_CF10_SHIFT	2
726 #define E4_TSTORM_CORE_CONN_AG_CTX_CF0EN_MASK	0x1
727 #define E4_TSTORM_CORE_CONN_AG_CTX_CF0EN_SHIFT	4
728 #define E4_TSTORM_CORE_CONN_AG_CTX_CF1EN_MASK	0x1
729 #define E4_TSTORM_CORE_CONN_AG_CTX_CF1EN_SHIFT	5
730 #define E4_TSTORM_CORE_CONN_AG_CTX_CF2EN_MASK	0x1
731 #define E4_TSTORM_CORE_CONN_AG_CTX_CF2EN_SHIFT	6
732 #define E4_TSTORM_CORE_CONN_AG_CTX_CF3EN_MASK	0x1
733 #define E4_TSTORM_CORE_CONN_AG_CTX_CF3EN_SHIFT	7
734 	u8 flags4;
735 #define E4_TSTORM_CORE_CONN_AG_CTX_CF4EN_MASK		0x1
736 #define E4_TSTORM_CORE_CONN_AG_CTX_CF4EN_SHIFT		0
737 #define E4_TSTORM_CORE_CONN_AG_CTX_CF5EN_MASK		0x1
738 #define E4_TSTORM_CORE_CONN_AG_CTX_CF5EN_SHIFT		1
739 #define E4_TSTORM_CORE_CONN_AG_CTX_CF6EN_MASK		0x1
740 #define E4_TSTORM_CORE_CONN_AG_CTX_CF6EN_SHIFT		2
741 #define E4_TSTORM_CORE_CONN_AG_CTX_CF7EN_MASK		0x1
742 #define E4_TSTORM_CORE_CONN_AG_CTX_CF7EN_SHIFT		3
743 #define E4_TSTORM_CORE_CONN_AG_CTX_CF8EN_MASK		0x1
744 #define E4_TSTORM_CORE_CONN_AG_CTX_CF8EN_SHIFT		4
745 #define E4_TSTORM_CORE_CONN_AG_CTX_CF9EN_MASK		0x1
746 #define E4_TSTORM_CORE_CONN_AG_CTX_CF9EN_SHIFT		5
747 #define E4_TSTORM_CORE_CONN_AG_CTX_CF10EN_MASK		0x1
748 #define E4_TSTORM_CORE_CONN_AG_CTX_CF10EN_SHIFT		6
749 #define E4_TSTORM_CORE_CONN_AG_CTX_RULE0EN_MASK		0x1
750 #define E4_TSTORM_CORE_CONN_AG_CTX_RULE0EN_SHIFT	7
751 	u8 flags5;
752 #define E4_TSTORM_CORE_CONN_AG_CTX_RULE1EN_MASK		0x1
753 #define E4_TSTORM_CORE_CONN_AG_CTX_RULE1EN_SHIFT	0
754 #define E4_TSTORM_CORE_CONN_AG_CTX_RULE2EN_MASK		0x1
755 #define E4_TSTORM_CORE_CONN_AG_CTX_RULE2EN_SHIFT	1
756 #define E4_TSTORM_CORE_CONN_AG_CTX_RULE3EN_MASK		0x1
757 #define E4_TSTORM_CORE_CONN_AG_CTX_RULE3EN_SHIFT	2
758 #define E4_TSTORM_CORE_CONN_AG_CTX_RULE4EN_MASK		0x1
759 #define E4_TSTORM_CORE_CONN_AG_CTX_RULE4EN_SHIFT	3
760 #define E4_TSTORM_CORE_CONN_AG_CTX_RULE5EN_MASK		0x1
761 #define E4_TSTORM_CORE_CONN_AG_CTX_RULE5EN_SHIFT	4
762 #define E4_TSTORM_CORE_CONN_AG_CTX_RULE6EN_MASK		0x1
763 #define E4_TSTORM_CORE_CONN_AG_CTX_RULE6EN_SHIFT	5
764 #define E4_TSTORM_CORE_CONN_AG_CTX_RULE7EN_MASK		0x1
765 #define E4_TSTORM_CORE_CONN_AG_CTX_RULE7EN_SHIFT	6
766 #define E4_TSTORM_CORE_CONN_AG_CTX_RULE8EN_MASK		0x1
767 #define E4_TSTORM_CORE_CONN_AG_CTX_RULE8EN_SHIFT	7
768 	__le32 reg0;
769 	__le32 reg1;
770 	__le32 reg2;
771 	__le32 reg3;
772 	__le32 reg4;
773 	__le32 reg5;
774 	__le32 reg6;
775 	__le32 reg7;
776 	__le32 reg8;
777 	u8 byte2;
778 	u8 byte3;
779 	__le16 word0;
780 	u8 byte4;
781 	u8 byte5;
782 	__le16 word1;
783 	__le16 word2;
784 	__le16 word3;
785 	__le32 ll2_rx_prod;
786 	__le32 reg10;
787 };
788 
789 struct e4_ustorm_core_conn_ag_ctx {
790 	u8 reserved;
791 	u8 byte1;
792 	u8 flags0;
793 #define E4_USTORM_CORE_CONN_AG_CTX_BIT0_MASK	0x1
794 #define E4_USTORM_CORE_CONN_AG_CTX_BIT0_SHIFT	0
795 #define E4_USTORM_CORE_CONN_AG_CTX_BIT1_MASK	0x1
796 #define E4_USTORM_CORE_CONN_AG_CTX_BIT1_SHIFT	1
797 #define E4_USTORM_CORE_CONN_AG_CTX_CF0_MASK	0x3
798 #define E4_USTORM_CORE_CONN_AG_CTX_CF0_SHIFT	2
799 #define E4_USTORM_CORE_CONN_AG_CTX_CF1_MASK	0x3
800 #define E4_USTORM_CORE_CONN_AG_CTX_CF1_SHIFT	4
801 #define E4_USTORM_CORE_CONN_AG_CTX_CF2_MASK	0x3
802 #define E4_USTORM_CORE_CONN_AG_CTX_CF2_SHIFT	6
803 	u8 flags1;
804 #define E4_USTORM_CORE_CONN_AG_CTX_CF3_MASK	0x3
805 #define E4_USTORM_CORE_CONN_AG_CTX_CF3_SHIFT	0
806 #define E4_USTORM_CORE_CONN_AG_CTX_CF4_MASK	0x3
807 #define E4_USTORM_CORE_CONN_AG_CTX_CF4_SHIFT	2
808 #define E4_USTORM_CORE_CONN_AG_CTX_CF5_MASK	0x3
809 #define E4_USTORM_CORE_CONN_AG_CTX_CF5_SHIFT	4
810 #define E4_USTORM_CORE_CONN_AG_CTX_CF6_MASK	0x3
811 #define E4_USTORM_CORE_CONN_AG_CTX_CF6_SHIFT	6
812 	u8 flags2;
813 #define E4_USTORM_CORE_CONN_AG_CTX_CF0EN_MASK		0x1
814 #define E4_USTORM_CORE_CONN_AG_CTX_CF0EN_SHIFT		0
815 #define E4_USTORM_CORE_CONN_AG_CTX_CF1EN_MASK		0x1
816 #define E4_USTORM_CORE_CONN_AG_CTX_CF1EN_SHIFT		1
817 #define E4_USTORM_CORE_CONN_AG_CTX_CF2EN_MASK		0x1
818 #define E4_USTORM_CORE_CONN_AG_CTX_CF2EN_SHIFT		2
819 #define E4_USTORM_CORE_CONN_AG_CTX_CF3EN_MASK		0x1
820 #define E4_USTORM_CORE_CONN_AG_CTX_CF3EN_SHIFT		3
821 #define E4_USTORM_CORE_CONN_AG_CTX_CF4EN_MASK		0x1
822 #define E4_USTORM_CORE_CONN_AG_CTX_CF4EN_SHIFT		4
823 #define E4_USTORM_CORE_CONN_AG_CTX_CF5EN_MASK		0x1
824 #define E4_USTORM_CORE_CONN_AG_CTX_CF5EN_SHIFT		5
825 #define E4_USTORM_CORE_CONN_AG_CTX_CF6EN_MASK		0x1
826 #define E4_USTORM_CORE_CONN_AG_CTX_CF6EN_SHIFT		6
827 #define E4_USTORM_CORE_CONN_AG_CTX_RULE0EN_MASK		0x1
828 #define E4_USTORM_CORE_CONN_AG_CTX_RULE0EN_SHIFT	7
829 	u8 flags3;
830 #define E4_USTORM_CORE_CONN_AG_CTX_RULE1EN_MASK		0x1
831 #define E4_USTORM_CORE_CONN_AG_CTX_RULE1EN_SHIFT	0
832 #define E4_USTORM_CORE_CONN_AG_CTX_RULE2EN_MASK		0x1
833 #define E4_USTORM_CORE_CONN_AG_CTX_RULE2EN_SHIFT	1
834 #define E4_USTORM_CORE_CONN_AG_CTX_RULE3EN_MASK		0x1
835 #define E4_USTORM_CORE_CONN_AG_CTX_RULE3EN_SHIFT	2
836 #define E4_USTORM_CORE_CONN_AG_CTX_RULE4EN_MASK		0x1
837 #define E4_USTORM_CORE_CONN_AG_CTX_RULE4EN_SHIFT	3
838 #define E4_USTORM_CORE_CONN_AG_CTX_RULE5EN_MASK		0x1
839 #define E4_USTORM_CORE_CONN_AG_CTX_RULE5EN_SHIFT	4
840 #define E4_USTORM_CORE_CONN_AG_CTX_RULE6EN_MASK		0x1
841 #define E4_USTORM_CORE_CONN_AG_CTX_RULE6EN_SHIFT	5
842 #define E4_USTORM_CORE_CONN_AG_CTX_RULE7EN_MASK		0x1
843 #define E4_USTORM_CORE_CONN_AG_CTX_RULE7EN_SHIFT	6
844 #define E4_USTORM_CORE_CONN_AG_CTX_RULE8EN_MASK		0x1
845 #define E4_USTORM_CORE_CONN_AG_CTX_RULE8EN_SHIFT	7
846 	u8 byte2;
847 	u8 byte3;
848 	__le16 word0;
849 	__le16 word1;
850 	__le32 rx_producers;
851 	__le32 reg1;
852 	__le32 reg2;
853 	__le32 reg3;
854 	__le16 word2;
855 	__le16 word3;
856 };
857 
858 /* The core storm context for the Mstorm */
859 struct mstorm_core_conn_st_ctx {
860 	__le32 reserved[40];
861 };
862 
863 /* The core storm context for the Ustorm */
864 struct ustorm_core_conn_st_ctx {
865 	__le32 reserved[20];
866 };
867 
868 /* The core storm context for the Tstorm */
869 struct tstorm_core_conn_st_ctx {
870 	__le32 reserved[4];
871 };
872 
873 /* core connection context */
874 struct e4_core_conn_context {
875 	struct ystorm_core_conn_st_ctx ystorm_st_context;
876 	struct regpair ystorm_st_padding[2];
877 	struct pstorm_core_conn_st_ctx pstorm_st_context;
878 	struct regpair pstorm_st_padding[2];
879 	struct xstorm_core_conn_st_ctx xstorm_st_context;
880 	struct e4_xstorm_core_conn_ag_ctx xstorm_ag_context;
881 	struct e4_tstorm_core_conn_ag_ctx tstorm_ag_context;
882 	struct e4_ustorm_core_conn_ag_ctx ustorm_ag_context;
883 	struct mstorm_core_conn_st_ctx mstorm_st_context;
884 	struct ustorm_core_conn_st_ctx ustorm_st_context;
885 	struct regpair ustorm_st_padding[2];
886 	struct tstorm_core_conn_st_ctx tstorm_st_context;
887 	struct regpair tstorm_st_padding[2];
888 };
889 
890 struct eth_mstorm_per_pf_stat {
891 	struct regpair gre_discard_pkts;
892 	struct regpair vxlan_discard_pkts;
893 	struct regpair geneve_discard_pkts;
894 	struct regpair lb_discard_pkts;
895 };
896 
897 struct eth_mstorm_per_queue_stat {
898 	struct regpair ttl0_discard;
899 	struct regpair packet_too_big_discard;
900 	struct regpair no_buff_discard;
901 	struct regpair not_active_discard;
902 	struct regpair tpa_coalesced_pkts;
903 	struct regpair tpa_coalesced_events;
904 	struct regpair tpa_aborts_num;
905 	struct regpair tpa_coalesced_bytes;
906 };
907 
908 /* Ethernet TX Per PF */
909 struct eth_pstorm_per_pf_stat {
910 	struct regpair sent_lb_ucast_bytes;
911 	struct regpair sent_lb_mcast_bytes;
912 	struct regpair sent_lb_bcast_bytes;
913 	struct regpair sent_lb_ucast_pkts;
914 	struct regpair sent_lb_mcast_pkts;
915 	struct regpair sent_lb_bcast_pkts;
916 	struct regpair sent_gre_bytes;
917 	struct regpair sent_vxlan_bytes;
918 	struct regpair sent_geneve_bytes;
919 	struct regpair sent_mpls_bytes;
920 	struct regpair sent_gre_mpls_bytes;
921 	struct regpair sent_udp_mpls_bytes;
922 	struct regpair sent_gre_pkts;
923 	struct regpair sent_vxlan_pkts;
924 	struct regpair sent_geneve_pkts;
925 	struct regpair sent_mpls_pkts;
926 	struct regpair sent_gre_mpls_pkts;
927 	struct regpair sent_udp_mpls_pkts;
928 	struct regpair gre_drop_pkts;
929 	struct regpair vxlan_drop_pkts;
930 	struct regpair geneve_drop_pkts;
931 	struct regpair mpls_drop_pkts;
932 	struct regpair gre_mpls_drop_pkts;
933 	struct regpair udp_mpls_drop_pkts;
934 };
935 
936 /* Ethernet TX Per Queue Stats */
937 struct eth_pstorm_per_queue_stat {
938 	struct regpair sent_ucast_bytes;
939 	struct regpair sent_mcast_bytes;
940 	struct regpair sent_bcast_bytes;
941 	struct regpair sent_ucast_pkts;
942 	struct regpair sent_mcast_pkts;
943 	struct regpair sent_bcast_pkts;
944 	struct regpair error_drop_pkts;
945 };
946 
947 /* ETH Rx producers data */
948 struct eth_rx_rate_limit {
949 	__le16 mult;
950 	__le16 cnst;
951 	u8 add_sub_cnst;
952 	u8 reserved0;
953 	__le16 reserved1;
954 };
955 
956 /* Update RSS indirection table entry command */
957 struct eth_tstorm_rss_update_data {
958 	u8 valid;
959 	u8 vport_id;
960 	u8 ind_table_index;
961 	u8 reserved;
962 	__le16 ind_table_value;
963 	__le16 reserved1;
964 };
965 
966 struct eth_ustorm_per_pf_stat {
967 	struct regpair rcv_lb_ucast_bytes;
968 	struct regpair rcv_lb_mcast_bytes;
969 	struct regpair rcv_lb_bcast_bytes;
970 	struct regpair rcv_lb_ucast_pkts;
971 	struct regpair rcv_lb_mcast_pkts;
972 	struct regpair rcv_lb_bcast_pkts;
973 	struct regpair rcv_gre_bytes;
974 	struct regpair rcv_vxlan_bytes;
975 	struct regpair rcv_geneve_bytes;
976 	struct regpair rcv_gre_pkts;
977 	struct regpair rcv_vxlan_pkts;
978 	struct regpair rcv_geneve_pkts;
979 };
980 
981 struct eth_ustorm_per_queue_stat {
982 	struct regpair rcv_ucast_bytes;
983 	struct regpair rcv_mcast_bytes;
984 	struct regpair rcv_bcast_bytes;
985 	struct regpair rcv_ucast_pkts;
986 	struct regpair rcv_mcast_pkts;
987 	struct regpair rcv_bcast_pkts;
988 };
989 
990 /* Event Ring VF-PF Channel data */
991 struct vf_pf_channel_eqe_data {
992 	struct regpair msg_addr;
993 };
994 
995 /* Event Ring malicious VF data */
996 struct malicious_vf_eqe_data {
997 	u8 vf_id;
998 	u8 err_id;
999 	__le16 reserved[3];
1000 };
1001 
1002 /* Event Ring initial cleanup data */
1003 struct initial_cleanup_eqe_data {
1004 	u8 vf_id;
1005 	u8 reserved[7];
1006 };
1007 
1008 /* Event Data Union */
1009 union event_ring_data {
1010 	u8 bytes[8];
1011 	struct vf_pf_channel_eqe_data vf_pf_channel;
1012 	struct iscsi_eqe_data iscsi_info;
1013 	struct iscsi_connect_done_results iscsi_conn_done_info;
1014 	union rdma_eqe_data rdma_data;
1015 	struct malicious_vf_eqe_data malicious_vf;
1016 	struct initial_cleanup_eqe_data vf_init_cleanup;
1017 };
1018 
1019 /* Event Ring Entry */
1020 struct event_ring_entry {
1021 	u8 protocol_id;
1022 	u8 opcode;
1023 	u8 reserved0;
1024 	u8 vf_id;
1025 	__le16 echo;
1026 	u8 fw_return_code;
1027 	u8 flags;
1028 #define EVENT_RING_ENTRY_ASYNC_MASK		0x1
1029 #define EVENT_RING_ENTRY_ASYNC_SHIFT		0
1030 #define EVENT_RING_ENTRY_RESERVED1_MASK		0x7F
1031 #define EVENT_RING_ENTRY_RESERVED1_SHIFT	1
1032 	union event_ring_data data;
1033 };
1034 
1035 /* Event Ring Next Page Address */
1036 struct event_ring_next_addr {
1037 	struct regpair addr;
1038 	__le32 reserved[2];
1039 };
1040 
1041 /* Event Ring Element */
1042 union event_ring_element {
1043 	struct event_ring_entry entry;
1044 	struct event_ring_next_addr next_addr;
1045 };
1046 
1047 /* Ports mode */
1048 enum fw_flow_ctrl_mode {
1049 	flow_ctrl_pause,
1050 	flow_ctrl_pfc,
1051 	MAX_FW_FLOW_CTRL_MODE
1052 };
1053 
1054 /* GFT profile type */
1055 enum gft_profile_type {
1056 	GFT_PROFILE_TYPE_4_TUPLE,
1057 	GFT_PROFILE_TYPE_L4_DST_PORT,
1058 	GFT_PROFILE_TYPE_IP_DST_ADDR,
1059 	GFT_PROFILE_TYPE_IP_SRC_ADDR,
1060 	GFT_PROFILE_TYPE_TUNNEL_TYPE,
1061 	MAX_GFT_PROFILE_TYPE
1062 };
1063 
1064 /* Major and Minor hsi Versions */
1065 struct hsi_fp_ver_struct {
1066 	u8 minor_ver_arr[2];
1067 	u8 major_ver_arr[2];
1068 };
1069 
1070 enum iwarp_ll2_tx_queues {
1071 	IWARP_LL2_IN_ORDER_TX_QUEUE = 1,
1072 	IWARP_LL2_ALIGNED_TX_QUEUE,
1073 	IWARP_LL2_ALIGNED_RIGHT_TRIMMED_TX_QUEUE,
1074 	IWARP_LL2_ERROR,
1075 	MAX_IWARP_LL2_TX_QUEUES
1076 };
1077 
1078 /* Malicious VF error ID */
1079 enum malicious_vf_error_id {
1080 	MALICIOUS_VF_NO_ERROR,
1081 	VF_PF_CHANNEL_NOT_READY,
1082 	VF_ZONE_MSG_NOT_VALID,
1083 	VF_ZONE_FUNC_NOT_ENABLED,
1084 	ETH_PACKET_TOO_SMALL,
1085 	ETH_ILLEGAL_VLAN_MODE,
1086 	ETH_MTU_VIOLATION,
1087 	ETH_ILLEGAL_INBAND_TAGS,
1088 	ETH_VLAN_INSERT_AND_INBAND_VLAN,
1089 	ETH_ILLEGAL_NBDS,
1090 	ETH_FIRST_BD_WO_SOP,
1091 	ETH_INSUFFICIENT_BDS,
1092 	ETH_ILLEGAL_LSO_HDR_NBDS,
1093 	ETH_ILLEGAL_LSO_MSS,
1094 	ETH_ZERO_SIZE_BD,
1095 	ETH_ILLEGAL_LSO_HDR_LEN,
1096 	ETH_INSUFFICIENT_PAYLOAD,
1097 	ETH_EDPM_OUT_OF_SYNC,
1098 	ETH_TUNN_IPV6_EXT_NBD_ERR,
1099 	ETH_CONTROL_PACKET_VIOLATION,
1100 	ETH_ANTI_SPOOFING_ERR,
1101 	ETH_PACKET_SIZE_TOO_LARGE,
1102 	CORE_ILLEGAL_VLAN_MODE,
1103 	CORE_ILLEGAL_NBDS,
1104 	CORE_FIRST_BD_WO_SOP,
1105 	CORE_INSUFFICIENT_BDS,
1106 	CORE_PACKET_TOO_SMALL,
1107 	CORE_ILLEGAL_INBAND_TAGS,
1108 	CORE_VLAN_INSERT_AND_INBAND_VLAN,
1109 	CORE_MTU_VIOLATION,
1110 	CORE_CONTROL_PACKET_VIOLATION,
1111 	CORE_ANTI_SPOOFING_ERR,
1112 	CORE_PACKET_SIZE_TOO_LARGE,
1113 	CORE_ILLEGAL_BD_FLAGS,
1114 	CORE_GSI_PACKET_VIOLATION,
1115 	MAX_MALICIOUS_VF_ERROR_ID,
1116 };
1117 
1118 /* Mstorm non-triggering VF zone */
1119 struct mstorm_non_trigger_vf_zone {
1120 	struct eth_mstorm_per_queue_stat eth_queue_stat;
1121 	struct eth_rx_prod_data eth_rx_queue_producers[ETH_MAX_NUM_RX_QUEUES_PER_VF_QUAD];
1122 };
1123 
1124 /* Mstorm VF zone */
1125 struct mstorm_vf_zone {
1126 	struct mstorm_non_trigger_vf_zone non_trigger;
1127 };
1128 
1129 /* vlan header including TPID and TCI fields */
1130 struct vlan_header {
1131 	__le16 tpid;
1132 	__le16 tci;
1133 };
1134 
1135 /* outer tag configurations */
1136 struct outer_tag_config_struct {
1137 	u8 enable_stag_pri_change;
1138 	u8 pri_map_valid;
1139 	u8 reserved[2];
1140 	struct vlan_header outer_tag;
1141 	u8 inner_to_outer_pri_map[8];
1142 };
1143 
1144 /* personality per PF */
1145 enum personality_type {
1146 	BAD_PERSONALITY_TYP,
1147 	PERSONALITY_ISCSI,
1148 	PERSONALITY_FCOE,
1149 	PERSONALITY_RDMA_AND_ETH,
1150 	PERSONALITY_RDMA,
1151 	PERSONALITY_CORE,
1152 	PERSONALITY_ETH,
1153 	PERSONALITY_RESERVED,
1154 	MAX_PERSONALITY_TYPE
1155 };
1156 
1157 /* tunnel configuration */
1158 struct pf_start_tunnel_config {
1159 	u8 set_vxlan_udp_port_flg;
1160 	u8 set_geneve_udp_port_flg;
1161 	u8 set_no_inner_l2_vxlan_udp_port_flg;
1162 	u8 tunnel_clss_vxlan;
1163 	u8 tunnel_clss_l2geneve;
1164 	u8 tunnel_clss_ipgeneve;
1165 	u8 tunnel_clss_l2gre;
1166 	u8 tunnel_clss_ipgre;
1167 	__le16 vxlan_udp_port;
1168 	__le16 geneve_udp_port;
1169 	__le16 no_inner_l2_vxlan_udp_port;
1170 	__le16 reserved[3];
1171 };
1172 
1173 /* Ramrod data for PF start ramrod */
1174 struct pf_start_ramrod_data {
1175 	struct regpair event_ring_pbl_addr;
1176 	struct regpair consolid_q_pbl_addr;
1177 	struct pf_start_tunnel_config tunnel_config;
1178 	__le16 event_ring_sb_id;
1179 	u8 base_vf_id;
1180 	u8 num_vfs;
1181 	u8 event_ring_num_pages;
1182 	u8 event_ring_sb_index;
1183 	u8 path_id;
1184 	u8 warning_as_error;
1185 	u8 dont_log_ramrods;
1186 	u8 personality;
1187 	__le16 log_type_mask;
1188 	u8 mf_mode;
1189 	u8 integ_phase;
1190 	u8 allow_npar_tx_switching;
1191 	u8 reserved0;
1192 	struct hsi_fp_ver_struct hsi_fp_ver;
1193 	struct outer_tag_config_struct outer_tag_config;
1194 };
1195 
1196 /* Data for port update ramrod */
1197 struct protocol_dcb_data {
1198 	u8 dcb_enable_flag;
1199 	u8 dscp_enable_flag;
1200 	u8 dcb_priority;
1201 	u8 dcb_tc;
1202 	u8 dscp_val;
1203 	u8 dcb_dont_add_vlan0;
1204 };
1205 
1206 /* Update tunnel configuration */
1207 struct pf_update_tunnel_config {
1208 	u8 update_rx_pf_clss;
1209 	u8 update_rx_def_ucast_clss;
1210 	u8 update_rx_def_non_ucast_clss;
1211 	u8 set_vxlan_udp_port_flg;
1212 	u8 set_geneve_udp_port_flg;
1213 	u8 set_no_inner_l2_vxlan_udp_port_flg;
1214 	u8 tunnel_clss_vxlan;
1215 	u8 tunnel_clss_l2geneve;
1216 	u8 tunnel_clss_ipgeneve;
1217 	u8 tunnel_clss_l2gre;
1218 	u8 tunnel_clss_ipgre;
1219 	u8 reserved;
1220 	__le16 vxlan_udp_port;
1221 	__le16 geneve_udp_port;
1222 	__le16 no_inner_l2_vxlan_udp_port;
1223 	__le16 reserved1[3];
1224 };
1225 
1226 /* Data for port update ramrod */
1227 struct pf_update_ramrod_data {
1228 	u8 update_eth_dcb_data_mode;
1229 	u8 update_fcoe_dcb_data_mode;
1230 	u8 update_iscsi_dcb_data_mode;
1231 	u8 update_roce_dcb_data_mode;
1232 	u8 update_rroce_dcb_data_mode;
1233 	u8 update_iwarp_dcb_data_mode;
1234 	u8 update_mf_vlan_flag;
1235 	u8 update_enable_stag_pri_change;
1236 	struct protocol_dcb_data eth_dcb_data;
1237 	struct protocol_dcb_data fcoe_dcb_data;
1238 	struct protocol_dcb_data iscsi_dcb_data;
1239 	struct protocol_dcb_data roce_dcb_data;
1240 	struct protocol_dcb_data rroce_dcb_data;
1241 	struct protocol_dcb_data iwarp_dcb_data;
1242 	__le16 mf_vlan;
1243 	u8 enable_stag_pri_change;
1244 	u8 reserved;
1245 	struct pf_update_tunnel_config tunnel_config;
1246 };
1247 
1248 /* Ports mode */
1249 enum ports_mode {
1250 	ENGX2_PORTX1,
1251 	ENGX2_PORTX2,
1252 	ENGX1_PORTX1,
1253 	ENGX1_PORTX2,
1254 	ENGX1_PORTX4,
1255 	MAX_PORTS_MODE
1256 };
1257 
1258 /* use to index in hsi_fp_[major|minor]_ver_arr per protocol */
1259 enum protocol_version_array_key {
1260 	ETH_VER_KEY = 0,
1261 	ROCE_VER_KEY,
1262 	MAX_PROTOCOL_VERSION_ARRAY_KEY
1263 };
1264 
1265 /* RDMA TX Stats */
1266 struct rdma_sent_stats {
1267 	struct regpair sent_bytes;
1268 	struct regpair sent_pkts;
1269 };
1270 
1271 /* Pstorm non-triggering VF zone */
1272 struct pstorm_non_trigger_vf_zone {
1273 	struct eth_pstorm_per_queue_stat eth_queue_stat;
1274 	struct rdma_sent_stats rdma_stats;
1275 };
1276 
1277 /* Pstorm VF zone */
1278 struct pstorm_vf_zone {
1279 	struct pstorm_non_trigger_vf_zone non_trigger;
1280 	struct regpair reserved[7];
1281 };
1282 
1283 /* Ramrod Header of SPQE */
1284 struct ramrod_header {
1285 	__le32 cid;
1286 	u8 cmd_id;
1287 	u8 protocol_id;
1288 	__le16 echo;
1289 };
1290 
1291 /* RDMA RX Stats */
1292 struct rdma_rcv_stats {
1293 	struct regpair rcv_bytes;
1294 	struct regpair rcv_pkts;
1295 };
1296 
1297 /* Data for update QCN/DCQCN RL ramrod */
1298 struct rl_update_ramrod_data {
1299 	u8 qcn_update_param_flg;
1300 	u8 dcqcn_update_param_flg;
1301 	u8 rl_init_flg;
1302 	u8 rl_start_flg;
1303 	u8 rl_stop_flg;
1304 	u8 rl_id_first;
1305 	u8 rl_id_last;
1306 	u8 rl_dc_qcn_flg;
1307 	u8 dcqcn_reset_alpha_on_idle;
1308 	u8 rl_bc_stage_th;
1309 	u8 rl_timer_stage_th;
1310 	u8 reserved1;
1311 	__le32 rl_bc_rate;
1312 	__le16 rl_max_rate;
1313 	__le16 rl_r_ai;
1314 	__le16 rl_r_hai;
1315 	__le16 dcqcn_g;
1316 	__le32 dcqcn_k_us;
1317 	__le32 dcqcn_timeuot_us;
1318 	__le32 qcn_timeuot_us;
1319 	__le32 reserved2;
1320 };
1321 
1322 /* Slowpath Element (SPQE) */
1323 struct slow_path_element {
1324 	struct ramrod_header hdr;
1325 	struct regpair data_ptr;
1326 };
1327 
1328 /* Tstorm non-triggering VF zone */
1329 struct tstorm_non_trigger_vf_zone {
1330 	struct rdma_rcv_stats rdma_stats;
1331 };
1332 
1333 struct tstorm_per_port_stat {
1334 	struct regpair trunc_error_discard;
1335 	struct regpair mac_error_discard;
1336 	struct regpair mftag_filter_discard;
1337 	struct regpair eth_mac_filter_discard;
1338 	struct regpair ll2_mac_filter_discard;
1339 	struct regpair ll2_conn_disabled_discard;
1340 	struct regpair iscsi_irregular_pkt;
1341 	struct regpair fcoe_irregular_pkt;
1342 	struct regpair roce_irregular_pkt;
1343 	struct regpair iwarp_irregular_pkt;
1344 	struct regpair eth_irregular_pkt;
1345 	struct regpair toe_irregular_pkt;
1346 	struct regpair preroce_irregular_pkt;
1347 	struct regpair eth_gre_tunn_filter_discard;
1348 	struct regpair eth_vxlan_tunn_filter_discard;
1349 	struct regpair eth_geneve_tunn_filter_discard;
1350 	struct regpair eth_gft_drop_pkt;
1351 };
1352 
1353 /* Tstorm VF zone */
1354 struct tstorm_vf_zone {
1355 	struct tstorm_non_trigger_vf_zone non_trigger;
1356 };
1357 
1358 /* Tunnel classification scheme */
1359 enum tunnel_clss {
1360 	TUNNEL_CLSS_MAC_VLAN = 0,
1361 	TUNNEL_CLSS_MAC_VNI,
1362 	TUNNEL_CLSS_INNER_MAC_VLAN,
1363 	TUNNEL_CLSS_INNER_MAC_VNI,
1364 	TUNNEL_CLSS_MAC_VLAN_DUAL_STAGE,
1365 	MAX_TUNNEL_CLSS
1366 };
1367 
1368 /* Ustorm non-triggering VF zone */
1369 struct ustorm_non_trigger_vf_zone {
1370 	struct eth_ustorm_per_queue_stat eth_queue_stat;
1371 	struct regpair vf_pf_msg_addr;
1372 };
1373 
1374 /* Ustorm triggering VF zone */
1375 struct ustorm_trigger_vf_zone {
1376 	u8 vf_pf_msg_valid;
1377 	u8 reserved[7];
1378 };
1379 
1380 /* Ustorm VF zone */
1381 struct ustorm_vf_zone {
1382 	struct ustorm_non_trigger_vf_zone non_trigger;
1383 	struct ustorm_trigger_vf_zone trigger;
1384 };
1385 
1386 /* VF-PF channel data */
1387 struct vf_pf_channel_data {
1388 	__le32 ready;
1389 	u8 valid;
1390 	u8 reserved0;
1391 	__le16 reserved1;
1392 };
1393 
1394 /* Ramrod data for VF start ramrod */
1395 struct vf_start_ramrod_data {
1396 	u8 vf_id;
1397 	u8 enable_flr_ack;
1398 	__le16 opaque_fid;
1399 	u8 personality;
1400 	u8 reserved[7];
1401 	struct hsi_fp_ver_struct hsi_fp_ver;
1402 
1403 };
1404 
1405 /* Ramrod data for VF start ramrod */
1406 struct vf_stop_ramrod_data {
1407 	u8 vf_id;
1408 	u8 reserved0;
1409 	__le16 reserved1;
1410 	__le32 reserved2;
1411 };
1412 
1413 /* VF zone size mode */
1414 enum vf_zone_size_mode {
1415 	VF_ZONE_SIZE_MODE_DEFAULT,
1416 	VF_ZONE_SIZE_MODE_DOUBLE,
1417 	VF_ZONE_SIZE_MODE_QUAD,
1418 	MAX_VF_ZONE_SIZE_MODE
1419 };
1420 
1421 /* Xstorm non-triggering VF zone */
1422 struct xstorm_non_trigger_vf_zone {
1423 	struct regpair non_edpm_ack_pkts;
1424 };
1425 
1426 /* Tstorm VF zone */
1427 struct xstorm_vf_zone {
1428 	struct xstorm_non_trigger_vf_zone non_trigger;
1429 };
1430 
1431 /* Attentions status block */
1432 struct atten_status_block {
1433 	__le32 atten_bits;
1434 	__le32 atten_ack;
1435 	__le16 reserved0;
1436 	__le16 sb_index;
1437 	__le32 reserved1;
1438 };
1439 
1440 /* DMAE command */
1441 struct dmae_cmd {
1442 	__le32 opcode;
1443 #define DMAE_CMD_SRC_MASK		0x1
1444 #define DMAE_CMD_SRC_SHIFT		0
1445 #define DMAE_CMD_DST_MASK		0x3
1446 #define DMAE_CMD_DST_SHIFT		1
1447 #define DMAE_CMD_C_DST_MASK		0x1
1448 #define DMAE_CMD_C_DST_SHIFT		3
1449 #define DMAE_CMD_CRC_RESET_MASK		0x1
1450 #define DMAE_CMD_CRC_RESET_SHIFT	4
1451 #define DMAE_CMD_SRC_ADDR_RESET_MASK	0x1
1452 #define DMAE_CMD_SRC_ADDR_RESET_SHIFT	5
1453 #define DMAE_CMD_DST_ADDR_RESET_MASK	0x1
1454 #define DMAE_CMD_DST_ADDR_RESET_SHIFT	6
1455 #define DMAE_CMD_COMP_FUNC_MASK		0x1
1456 #define DMAE_CMD_COMP_FUNC_SHIFT	7
1457 #define DMAE_CMD_COMP_WORD_EN_MASK	0x1
1458 #define DMAE_CMD_COMP_WORD_EN_SHIFT	8
1459 #define DMAE_CMD_COMP_CRC_EN_MASK	0x1
1460 #define DMAE_CMD_COMP_CRC_EN_SHIFT	9
1461 #define DMAE_CMD_COMP_CRC_OFFSET_MASK	0x7
1462 #define DMAE_CMD_COMP_CRC_OFFSET_SHIFT 10
1463 #define DMAE_CMD_RESERVED1_MASK		0x1
1464 #define DMAE_CMD_RESERVED1_SHIFT	13
1465 #define DMAE_CMD_ENDIANITY_MODE_MASK	0x3
1466 #define DMAE_CMD_ENDIANITY_MODE_SHIFT	14
1467 #define DMAE_CMD_ERR_HANDLING_MASK	0x3
1468 #define DMAE_CMD_ERR_HANDLING_SHIFT	16
1469 #define DMAE_CMD_PORT_ID_MASK		0x3
1470 #define DMAE_CMD_PORT_ID_SHIFT		18
1471 #define DMAE_CMD_SRC_PF_ID_MASK		0xF
1472 #define DMAE_CMD_SRC_PF_ID_SHIFT	20
1473 #define DMAE_CMD_DST_PF_ID_MASK		0xF
1474 #define DMAE_CMD_DST_PF_ID_SHIFT	24
1475 #define DMAE_CMD_SRC_VF_ID_VALID_MASK	0x1
1476 #define DMAE_CMD_SRC_VF_ID_VALID_SHIFT 28
1477 #define DMAE_CMD_DST_VF_ID_VALID_MASK	0x1
1478 #define DMAE_CMD_DST_VF_ID_VALID_SHIFT 29
1479 #define DMAE_CMD_RESERVED2_MASK		0x3
1480 #define DMAE_CMD_RESERVED2_SHIFT	30
1481 	__le32 src_addr_lo;
1482 	__le32 src_addr_hi;
1483 	__le32 dst_addr_lo;
1484 	__le32 dst_addr_hi;
1485 	__le16 length_dw;
1486 	__le16 opcode_b;
1487 #define DMAE_CMD_SRC_VF_ID_MASK		0xFF
1488 #define DMAE_CMD_SRC_VF_ID_SHIFT	0
1489 #define DMAE_CMD_DST_VF_ID_MASK		0xFF
1490 #define DMAE_CMD_DST_VF_ID_SHIFT	8
1491 	__le32 comp_addr_lo;
1492 	__le32 comp_addr_hi;
1493 	__le32 comp_val;
1494 	__le32 crc32;
1495 	__le32 crc_32_c;
1496 	__le16 crc16;
1497 	__le16 crc16_c;
1498 	__le16 crc10;
1499 	__le16 error_bit_reserved;
1500 #define DMAE_CMD_ERROR_BIT_MASK        0x1
1501 #define DMAE_CMD_ERROR_BIT_SHIFT       0
1502 #define DMAE_CMD_RESERVED_MASK	       0x7FFF
1503 #define DMAE_CMD_RESERVED_SHIFT        1
1504 	__le16 xsum16;
1505 	__le16 xsum8;
1506 };
1507 
1508 enum dmae_cmd_comp_crc_en_enum {
1509 	dmae_cmd_comp_crc_disabled,
1510 	dmae_cmd_comp_crc_enabled,
1511 	MAX_DMAE_CMD_COMP_CRC_EN_ENUM
1512 };
1513 
1514 enum dmae_cmd_comp_func_enum {
1515 	dmae_cmd_comp_func_to_src,
1516 	dmae_cmd_comp_func_to_dst,
1517 	MAX_DMAE_CMD_COMP_FUNC_ENUM
1518 };
1519 
1520 enum dmae_cmd_comp_word_en_enum {
1521 	dmae_cmd_comp_word_disabled,
1522 	dmae_cmd_comp_word_enabled,
1523 	MAX_DMAE_CMD_COMP_WORD_EN_ENUM
1524 };
1525 
1526 enum dmae_cmd_c_dst_enum {
1527 	dmae_cmd_c_dst_pcie,
1528 	dmae_cmd_c_dst_grc,
1529 	MAX_DMAE_CMD_C_DST_ENUM
1530 };
1531 
1532 enum dmae_cmd_dst_enum {
1533 	dmae_cmd_dst_none_0,
1534 	dmae_cmd_dst_pcie,
1535 	dmae_cmd_dst_grc,
1536 	dmae_cmd_dst_none_3,
1537 	MAX_DMAE_CMD_DST_ENUM
1538 };
1539 
1540 enum dmae_cmd_error_handling_enum {
1541 	dmae_cmd_error_handling_send_regular_comp,
1542 	dmae_cmd_error_handling_send_comp_with_err,
1543 	dmae_cmd_error_handling_dont_send_comp,
1544 	MAX_DMAE_CMD_ERROR_HANDLING_ENUM
1545 };
1546 
1547 enum dmae_cmd_src_enum {
1548 	dmae_cmd_src_pcie,
1549 	dmae_cmd_src_grc,
1550 	MAX_DMAE_CMD_SRC_ENUM
1551 };
1552 
1553 struct e4_mstorm_core_conn_ag_ctx {
1554 	u8 byte0;
1555 	u8 byte1;
1556 	u8 flags0;
1557 #define E4_MSTORM_CORE_CONN_AG_CTX_BIT0_MASK	0x1
1558 #define E4_MSTORM_CORE_CONN_AG_CTX_BIT0_SHIFT	0
1559 #define E4_MSTORM_CORE_CONN_AG_CTX_BIT1_MASK	0x1
1560 #define E4_MSTORM_CORE_CONN_AG_CTX_BIT1_SHIFT	1
1561 #define E4_MSTORM_CORE_CONN_AG_CTX_CF0_MASK	0x3
1562 #define E4_MSTORM_CORE_CONN_AG_CTX_CF0_SHIFT	2
1563 #define E4_MSTORM_CORE_CONN_AG_CTX_CF1_MASK	0x3
1564 #define E4_MSTORM_CORE_CONN_AG_CTX_CF1_SHIFT	4
1565 #define E4_MSTORM_CORE_CONN_AG_CTX_CF2_MASK	0x3
1566 #define E4_MSTORM_CORE_CONN_AG_CTX_CF2_SHIFT	6
1567 	u8 flags1;
1568 #define E4_MSTORM_CORE_CONN_AG_CTX_CF0EN_MASK		0x1
1569 #define E4_MSTORM_CORE_CONN_AG_CTX_CF0EN_SHIFT		0
1570 #define E4_MSTORM_CORE_CONN_AG_CTX_CF1EN_MASK		0x1
1571 #define E4_MSTORM_CORE_CONN_AG_CTX_CF1EN_SHIFT		1
1572 #define E4_MSTORM_CORE_CONN_AG_CTX_CF2EN_MASK		0x1
1573 #define E4_MSTORM_CORE_CONN_AG_CTX_CF2EN_SHIFT		2
1574 #define E4_MSTORM_CORE_CONN_AG_CTX_RULE0EN_MASK		0x1
1575 #define E4_MSTORM_CORE_CONN_AG_CTX_RULE0EN_SHIFT	3
1576 #define E4_MSTORM_CORE_CONN_AG_CTX_RULE1EN_MASK		0x1
1577 #define E4_MSTORM_CORE_CONN_AG_CTX_RULE1EN_SHIFT	4
1578 #define E4_MSTORM_CORE_CONN_AG_CTX_RULE2EN_MASK		0x1
1579 #define E4_MSTORM_CORE_CONN_AG_CTX_RULE2EN_SHIFT	5
1580 #define E4_MSTORM_CORE_CONN_AG_CTX_RULE3EN_MASK		0x1
1581 #define E4_MSTORM_CORE_CONN_AG_CTX_RULE3EN_SHIFT	6
1582 #define E4_MSTORM_CORE_CONN_AG_CTX_RULE4EN_MASK		0x1
1583 #define E4_MSTORM_CORE_CONN_AG_CTX_RULE4EN_SHIFT	7
1584 	__le16 word0;
1585 	__le16 word1;
1586 	__le32 reg0;
1587 	__le32 reg1;
1588 };
1589 
1590 struct e4_ystorm_core_conn_ag_ctx {
1591 	u8 byte0;
1592 	u8 byte1;
1593 	u8 flags0;
1594 #define E4_YSTORM_CORE_CONN_AG_CTX_BIT0_MASK	0x1
1595 #define E4_YSTORM_CORE_CONN_AG_CTX_BIT0_SHIFT	0
1596 #define E4_YSTORM_CORE_CONN_AG_CTX_BIT1_MASK	0x1
1597 #define E4_YSTORM_CORE_CONN_AG_CTX_BIT1_SHIFT	1
1598 #define E4_YSTORM_CORE_CONN_AG_CTX_CF0_MASK	0x3
1599 #define E4_YSTORM_CORE_CONN_AG_CTX_CF0_SHIFT	2
1600 #define E4_YSTORM_CORE_CONN_AG_CTX_CF1_MASK	0x3
1601 #define E4_YSTORM_CORE_CONN_AG_CTX_CF1_SHIFT	4
1602 #define E4_YSTORM_CORE_CONN_AG_CTX_CF2_MASK	0x3
1603 #define E4_YSTORM_CORE_CONN_AG_CTX_CF2_SHIFT	6
1604 	u8 flags1;
1605 #define E4_YSTORM_CORE_CONN_AG_CTX_CF0EN_MASK		0x1
1606 #define E4_YSTORM_CORE_CONN_AG_CTX_CF0EN_SHIFT		0
1607 #define E4_YSTORM_CORE_CONN_AG_CTX_CF1EN_MASK		0x1
1608 #define E4_YSTORM_CORE_CONN_AG_CTX_CF1EN_SHIFT		1
1609 #define E4_YSTORM_CORE_CONN_AG_CTX_CF2EN_MASK		0x1
1610 #define E4_YSTORM_CORE_CONN_AG_CTX_CF2EN_SHIFT		2
1611 #define E4_YSTORM_CORE_CONN_AG_CTX_RULE0EN_MASK		0x1
1612 #define E4_YSTORM_CORE_CONN_AG_CTX_RULE0EN_SHIFT	3
1613 #define E4_YSTORM_CORE_CONN_AG_CTX_RULE1EN_MASK		0x1
1614 #define E4_YSTORM_CORE_CONN_AG_CTX_RULE1EN_SHIFT	4
1615 #define E4_YSTORM_CORE_CONN_AG_CTX_RULE2EN_MASK		0x1
1616 #define E4_YSTORM_CORE_CONN_AG_CTX_RULE2EN_SHIFT	5
1617 #define E4_YSTORM_CORE_CONN_AG_CTX_RULE3EN_MASK		0x1
1618 #define E4_YSTORM_CORE_CONN_AG_CTX_RULE3EN_SHIFT	6
1619 #define E4_YSTORM_CORE_CONN_AG_CTX_RULE4EN_MASK		0x1
1620 #define E4_YSTORM_CORE_CONN_AG_CTX_RULE4EN_SHIFT	7
1621 	u8 byte2;
1622 	u8 byte3;
1623 	__le16 word0;
1624 	__le32 reg0;
1625 	__le32 reg1;
1626 	__le16 word1;
1627 	__le16 word2;
1628 	__le16 word3;
1629 	__le16 word4;
1630 	__le32 reg2;
1631 	__le32 reg3;
1632 };
1633 
1634 /* DMAE parameters */
1635 struct qed_dmae_params {
1636 	u32 flags;
1637 /* If QED_DMAE_PARAMS_RW_REPL_SRC flag is set and the
1638  * source is a block of length DMAE_MAX_RW_SIZE and the
1639  * destination is larger, the source block will be duplicated as
1640  * many times as required to fill the destination block. This is
1641  * used mostly to write a zeroed buffer to destination address
1642  * using DMA
1643  */
1644 #define QED_DMAE_PARAMS_RW_REPL_SRC_MASK	0x1
1645 #define QED_DMAE_PARAMS_RW_REPL_SRC_SHIFT	0
1646 #define QED_DMAE_PARAMS_SRC_VF_VALID_MASK	0x1
1647 #define QED_DMAE_PARAMS_SRC_VF_VALID_SHIFT	1
1648 #define QED_DMAE_PARAMS_DST_VF_VALID_MASK	0x1
1649 #define QED_DMAE_PARAMS_DST_VF_VALID_SHIFT	2
1650 #define QED_DMAE_PARAMS_COMPLETION_DST_MASK	0x1
1651 #define QED_DMAE_PARAMS_COMPLETION_DST_SHIFT	3
1652 #define QED_DMAE_PARAMS_PORT_VALID_MASK		0x1
1653 #define QED_DMAE_PARAMS_PORT_VALID_SHIFT	4
1654 #define QED_DMAE_PARAMS_SRC_PF_VALID_MASK	0x1
1655 #define QED_DMAE_PARAMS_SRC_PF_VALID_SHIFT	5
1656 #define QED_DMAE_PARAMS_DST_PF_VALID_MASK	0x1
1657 #define QED_DMAE_PARAMS_DST_PF_VALID_SHIFT	6
1658 #define QED_DMAE_PARAMS_RESERVED_MASK		0x1FFFFFF
1659 #define QED_DMAE_PARAMS_RESERVED_SHIFT		7
1660 	u8 src_vfid;
1661 	u8 dst_vfid;
1662 	u8 port_id;
1663 	u8 src_pfid;
1664 	u8 dst_pfid;
1665 	u8 reserved1;
1666 	__le16 reserved2;
1667 };
1668 
1669 /* IGU cleanup command */
1670 struct igu_cleanup {
1671 	__le32 sb_id_and_flags;
1672 #define IGU_CLEANUP_RESERVED0_MASK	0x7FFFFFF
1673 #define IGU_CLEANUP_RESERVED0_SHIFT	0
1674 #define IGU_CLEANUP_CLEANUP_SET_MASK	0x1
1675 #define IGU_CLEANUP_CLEANUP_SET_SHIFT	27
1676 #define IGU_CLEANUP_CLEANUP_TYPE_MASK	0x7
1677 #define IGU_CLEANUP_CLEANUP_TYPE_SHIFT	28
1678 #define IGU_CLEANUP_COMMAND_TYPE_MASK	0x1
1679 #define IGU_CLEANUP_COMMAND_TYPE_SHIFT	31
1680 	__le32 reserved1;
1681 };
1682 
1683 /* IGU firmware driver command */
1684 union igu_command {
1685 	struct igu_prod_cons_update prod_cons_update;
1686 	struct igu_cleanup cleanup;
1687 };
1688 
1689 /* IGU firmware driver command */
1690 struct igu_command_reg_ctrl {
1691 	__le16 opaque_fid;
1692 	__le16 igu_command_reg_ctrl_fields;
1693 #define IGU_COMMAND_REG_CTRL_PXP_BAR_ADDR_MASK	0xFFF
1694 #define IGU_COMMAND_REG_CTRL_PXP_BAR_ADDR_SHIFT	0
1695 #define IGU_COMMAND_REG_CTRL_RESERVED_MASK	0x7
1696 #define IGU_COMMAND_REG_CTRL_RESERVED_SHIFT	12
1697 #define IGU_COMMAND_REG_CTRL_COMMAND_TYPE_MASK	0x1
1698 #define IGU_COMMAND_REG_CTRL_COMMAND_TYPE_SHIFT	15
1699 };
1700 
1701 /* IGU mapping line structure */
1702 struct igu_mapping_line {
1703 	__le32 igu_mapping_line_fields;
1704 #define IGU_MAPPING_LINE_VALID_MASK		0x1
1705 #define IGU_MAPPING_LINE_VALID_SHIFT		0
1706 #define IGU_MAPPING_LINE_VECTOR_NUMBER_MASK	0xFF
1707 #define IGU_MAPPING_LINE_VECTOR_NUMBER_SHIFT	1
1708 #define IGU_MAPPING_LINE_FUNCTION_NUMBER_MASK	0xFF
1709 #define IGU_MAPPING_LINE_FUNCTION_NUMBER_SHIFT	9
1710 #define IGU_MAPPING_LINE_PF_VALID_MASK		0x1
1711 #define IGU_MAPPING_LINE_PF_VALID_SHIFT		17
1712 #define IGU_MAPPING_LINE_IPS_GROUP_MASK		0x3F
1713 #define IGU_MAPPING_LINE_IPS_GROUP_SHIFT	18
1714 #define IGU_MAPPING_LINE_RESERVED_MASK		0xFF
1715 #define IGU_MAPPING_LINE_RESERVED_SHIFT		24
1716 };
1717 
1718 /* IGU MSIX line structure */
1719 struct igu_msix_vector {
1720 	struct regpair address;
1721 	__le32 data;
1722 	__le32 msix_vector_fields;
1723 #define IGU_MSIX_VECTOR_MASK_BIT_MASK		0x1
1724 #define IGU_MSIX_VECTOR_MASK_BIT_SHIFT		0
1725 #define IGU_MSIX_VECTOR_RESERVED0_MASK		0x7FFF
1726 #define IGU_MSIX_VECTOR_RESERVED0_SHIFT		1
1727 #define IGU_MSIX_VECTOR_STEERING_TAG_MASK	0xFF
1728 #define IGU_MSIX_VECTOR_STEERING_TAG_SHIFT	16
1729 #define IGU_MSIX_VECTOR_RESERVED1_MASK		0xFF
1730 #define IGU_MSIX_VECTOR_RESERVED1_SHIFT		24
1731 };
1732 /* per encapsulation type enabling flags */
1733 struct prs_reg_encapsulation_type_en {
1734 	u8 flags;
1735 #define PRS_REG_ENCAPSULATION_TYPE_EN_ETH_OVER_GRE_ENABLE_MASK		0x1
1736 #define PRS_REG_ENCAPSULATION_TYPE_EN_ETH_OVER_GRE_ENABLE_SHIFT		0
1737 #define PRS_REG_ENCAPSULATION_TYPE_EN_IP_OVER_GRE_ENABLE_MASK		0x1
1738 #define PRS_REG_ENCAPSULATION_TYPE_EN_IP_OVER_GRE_ENABLE_SHIFT		1
1739 #define PRS_REG_ENCAPSULATION_TYPE_EN_VXLAN_ENABLE_MASK			0x1
1740 #define PRS_REG_ENCAPSULATION_TYPE_EN_VXLAN_ENABLE_SHIFT		2
1741 #define PRS_REG_ENCAPSULATION_TYPE_EN_T_TAG_ENABLE_MASK			0x1
1742 #define PRS_REG_ENCAPSULATION_TYPE_EN_T_TAG_ENABLE_SHIFT		3
1743 #define PRS_REG_ENCAPSULATION_TYPE_EN_ETH_OVER_GENEVE_ENABLE_MASK	0x1
1744 #define PRS_REG_ENCAPSULATION_TYPE_EN_ETH_OVER_GENEVE_ENABLE_SHIFT	4
1745 #define PRS_REG_ENCAPSULATION_TYPE_EN_IP_OVER_GENEVE_ENABLE_MASK	0x1
1746 #define PRS_REG_ENCAPSULATION_TYPE_EN_IP_OVER_GENEVE_ENABLE_SHIFT	5
1747 #define PRS_REG_ENCAPSULATION_TYPE_EN_RESERVED_MASK			0x3
1748 #define PRS_REG_ENCAPSULATION_TYPE_EN_RESERVED_SHIFT			6
1749 };
1750 
1751 enum pxp_tph_st_hint {
1752 	TPH_ST_HINT_BIDIR,
1753 	TPH_ST_HINT_REQUESTER,
1754 	TPH_ST_HINT_TARGET,
1755 	TPH_ST_HINT_TARGET_PRIO,
1756 	MAX_PXP_TPH_ST_HINT
1757 };
1758 
1759 /* QM hardware structure of enable bypass credit mask */
1760 struct qm_rf_bypass_mask {
1761 	u8 flags;
1762 #define QM_RF_BYPASS_MASK_LINEVOQ_MASK		0x1
1763 #define QM_RF_BYPASS_MASK_LINEVOQ_SHIFT		0
1764 #define QM_RF_BYPASS_MASK_RESERVED0_MASK	0x1
1765 #define QM_RF_BYPASS_MASK_RESERVED0_SHIFT	1
1766 #define QM_RF_BYPASS_MASK_PFWFQ_MASK		0x1
1767 #define QM_RF_BYPASS_MASK_PFWFQ_SHIFT		2
1768 #define QM_RF_BYPASS_MASK_VPWFQ_MASK		0x1
1769 #define QM_RF_BYPASS_MASK_VPWFQ_SHIFT		3
1770 #define QM_RF_BYPASS_MASK_PFRL_MASK		0x1
1771 #define QM_RF_BYPASS_MASK_PFRL_SHIFT		4
1772 #define QM_RF_BYPASS_MASK_VPQCNRL_MASK		0x1
1773 #define QM_RF_BYPASS_MASK_VPQCNRL_SHIFT		5
1774 #define QM_RF_BYPASS_MASK_FWPAUSE_MASK		0x1
1775 #define QM_RF_BYPASS_MASK_FWPAUSE_SHIFT		6
1776 #define QM_RF_BYPASS_MASK_RESERVED1_MASK	0x1
1777 #define QM_RF_BYPASS_MASK_RESERVED1_SHIFT	7
1778 };
1779 
1780 /* QM hardware structure of opportunistic credit mask */
1781 struct qm_rf_opportunistic_mask {
1782 	__le16 flags;
1783 #define QM_RF_OPPORTUNISTIC_MASK_LINEVOQ_MASK		0x1
1784 #define QM_RF_OPPORTUNISTIC_MASK_LINEVOQ_SHIFT		0
1785 #define QM_RF_OPPORTUNISTIC_MASK_BYTEVOQ_MASK		0x1
1786 #define QM_RF_OPPORTUNISTIC_MASK_BYTEVOQ_SHIFT		1
1787 #define QM_RF_OPPORTUNISTIC_MASK_PFWFQ_MASK		0x1
1788 #define QM_RF_OPPORTUNISTIC_MASK_PFWFQ_SHIFT		2
1789 #define QM_RF_OPPORTUNISTIC_MASK_VPWFQ_MASK		0x1
1790 #define QM_RF_OPPORTUNISTIC_MASK_VPWFQ_SHIFT		3
1791 #define QM_RF_OPPORTUNISTIC_MASK_PFRL_MASK		0x1
1792 #define QM_RF_OPPORTUNISTIC_MASK_PFRL_SHIFT		4
1793 #define QM_RF_OPPORTUNISTIC_MASK_VPQCNRL_MASK		0x1
1794 #define QM_RF_OPPORTUNISTIC_MASK_VPQCNRL_SHIFT		5
1795 #define QM_RF_OPPORTUNISTIC_MASK_FWPAUSE_MASK		0x1
1796 #define QM_RF_OPPORTUNISTIC_MASK_FWPAUSE_SHIFT		6
1797 #define QM_RF_OPPORTUNISTIC_MASK_RESERVED0_MASK		0x1
1798 #define QM_RF_OPPORTUNISTIC_MASK_RESERVED0_SHIFT	7
1799 #define QM_RF_OPPORTUNISTIC_MASK_QUEUEEMPTY_MASK	0x1
1800 #define QM_RF_OPPORTUNISTIC_MASK_QUEUEEMPTY_SHIFT	8
1801 #define QM_RF_OPPORTUNISTIC_MASK_RESERVED1_MASK		0x7F
1802 #define QM_RF_OPPORTUNISTIC_MASK_RESERVED1_SHIFT	9
1803 };
1804 
1805 /* QM hardware structure of QM map memory */
1806 struct qm_rf_pq_map_e4 {
1807 	__le32 reg;
1808 #define QM_RF_PQ_MAP_E4_PQ_VALID_MASK		0x1
1809 #define QM_RF_PQ_MAP_E4_PQ_VALID_SHIFT		0
1810 #define QM_RF_PQ_MAP_E4_RL_ID_MASK		0xFF
1811 #define QM_RF_PQ_MAP_E4_RL_ID_SHIFT		1
1812 #define QM_RF_PQ_MAP_E4_VP_PQ_ID_MASK		0x1FF
1813 #define QM_RF_PQ_MAP_E4_VP_PQ_ID_SHIFT		9
1814 #define QM_RF_PQ_MAP_E4_VOQ_MASK		0x1F
1815 #define QM_RF_PQ_MAP_E4_VOQ_SHIFT		18
1816 #define QM_RF_PQ_MAP_E4_WRR_WEIGHT_GROUP_MASK	0x3
1817 #define QM_RF_PQ_MAP_E4_WRR_WEIGHT_GROUP_SHIFT	23
1818 #define QM_RF_PQ_MAP_E4_RL_VALID_MASK		0x1
1819 #define QM_RF_PQ_MAP_E4_RL_VALID_SHIFT		25
1820 #define QM_RF_PQ_MAP_E4_RESERVED_MASK		0x3F
1821 #define QM_RF_PQ_MAP_E4_RESERVED_SHIFT		26
1822 };
1823 
1824 /* Completion params for aggregated interrupt completion */
1825 struct sdm_agg_int_comp_params {
1826 	__le16 params;
1827 #define SDM_AGG_INT_COMP_PARAMS_AGG_INT_INDEX_MASK	0x3F
1828 #define SDM_AGG_INT_COMP_PARAMS_AGG_INT_INDEX_SHIFT	0
1829 #define SDM_AGG_INT_COMP_PARAMS_AGG_VECTOR_ENABLE_MASK	0x1
1830 #define SDM_AGG_INT_COMP_PARAMS_AGG_VECTOR_ENABLE_SHIFT	6
1831 #define SDM_AGG_INT_COMP_PARAMS_AGG_VECTOR_BIT_MASK	0x1FF
1832 #define SDM_AGG_INT_COMP_PARAMS_AGG_VECTOR_BIT_SHIFT	7
1833 };
1834 
1835 /* SDM operation gen command (generate aggregative interrupt) */
1836 struct sdm_op_gen {
1837 	__le32 command;
1838 #define SDM_OP_GEN_COMP_PARAM_MASK	0xFFFF
1839 #define SDM_OP_GEN_COMP_PARAM_SHIFT	0
1840 #define SDM_OP_GEN_COMP_TYPE_MASK	0xF
1841 #define SDM_OP_GEN_COMP_TYPE_SHIFT	16
1842 #define SDM_OP_GEN_RESERVED_MASK	0xFFF
1843 #define SDM_OP_GEN_RESERVED_SHIFT	20
1844 };
1845 
1846 /* Physical memory descriptor */
1847 struct phys_mem_desc {
1848 	dma_addr_t phys_addr;
1849 	void *virt_addr;
1850 	u32 size;		/* In bytes */
1851 };
1852 
1853 /* Virtual memory descriptor */
1854 struct virt_mem_desc {
1855 	void *ptr;
1856 	u32 size;		/* In bytes */
1857 };
1858 
1859 /****************************************/
1860 /* Debug Tools HSI constants and macros */
1861 /****************************************/
1862 
1863 enum block_id {
1864 	BLOCK_GRC,
1865 	BLOCK_MISCS,
1866 	BLOCK_MISC,
1867 	BLOCK_DBU,
1868 	BLOCK_PGLUE_B,
1869 	BLOCK_CNIG,
1870 	BLOCK_CPMU,
1871 	BLOCK_NCSI,
1872 	BLOCK_OPTE,
1873 	BLOCK_BMB,
1874 	BLOCK_PCIE,
1875 	BLOCK_MCP,
1876 	BLOCK_MCP2,
1877 	BLOCK_PSWHST,
1878 	BLOCK_PSWHST2,
1879 	BLOCK_PSWRD,
1880 	BLOCK_PSWRD2,
1881 	BLOCK_PSWWR,
1882 	BLOCK_PSWWR2,
1883 	BLOCK_PSWRQ,
1884 	BLOCK_PSWRQ2,
1885 	BLOCK_PGLCS,
1886 	BLOCK_DMAE,
1887 	BLOCK_PTU,
1888 	BLOCK_TCM,
1889 	BLOCK_MCM,
1890 	BLOCK_UCM,
1891 	BLOCK_XCM,
1892 	BLOCK_YCM,
1893 	BLOCK_PCM,
1894 	BLOCK_QM,
1895 	BLOCK_TM,
1896 	BLOCK_DORQ,
1897 	BLOCK_BRB,
1898 	BLOCK_SRC,
1899 	BLOCK_PRS,
1900 	BLOCK_TSDM,
1901 	BLOCK_MSDM,
1902 	BLOCK_USDM,
1903 	BLOCK_XSDM,
1904 	BLOCK_YSDM,
1905 	BLOCK_PSDM,
1906 	BLOCK_TSEM,
1907 	BLOCK_MSEM,
1908 	BLOCK_USEM,
1909 	BLOCK_XSEM,
1910 	BLOCK_YSEM,
1911 	BLOCK_PSEM,
1912 	BLOCK_RSS,
1913 	BLOCK_TMLD,
1914 	BLOCK_MULD,
1915 	BLOCK_YULD,
1916 	BLOCK_XYLD,
1917 	BLOCK_PRM,
1918 	BLOCK_PBF_PB1,
1919 	BLOCK_PBF_PB2,
1920 	BLOCK_RPB,
1921 	BLOCK_BTB,
1922 	BLOCK_PBF,
1923 	BLOCK_RDIF,
1924 	BLOCK_TDIF,
1925 	BLOCK_CDU,
1926 	BLOCK_CCFC,
1927 	BLOCK_TCFC,
1928 	BLOCK_IGU,
1929 	BLOCK_CAU,
1930 	BLOCK_UMAC,
1931 	BLOCK_XMAC,
1932 	BLOCK_MSTAT,
1933 	BLOCK_DBG,
1934 	BLOCK_NIG,
1935 	BLOCK_WOL,
1936 	BLOCK_BMBN,
1937 	BLOCK_IPC,
1938 	BLOCK_NWM,
1939 	BLOCK_NWS,
1940 	BLOCK_MS,
1941 	BLOCK_PHY_PCIE,
1942 	BLOCK_LED,
1943 	BLOCK_AVS_WRAP,
1944 	BLOCK_PXPREQBUS,
1945 	BLOCK_BAR0_MAP,
1946 	BLOCK_MCP_FIO,
1947 	BLOCK_LAST_INIT,
1948 	BLOCK_PRS_FC,
1949 	BLOCK_PBF_FC,
1950 	BLOCK_NIG_LB_FC,
1951 	BLOCK_NIG_LB_FC_PLLH,
1952 	BLOCK_NIG_TX_FC_PLLH,
1953 	BLOCK_NIG_TX_FC,
1954 	BLOCK_NIG_RX_FC_PLLH,
1955 	BLOCK_NIG_RX_FC,
1956 	MAX_BLOCK_ID
1957 };
1958 
1959 /* binary debug buffer types */
1960 enum bin_dbg_buffer_type {
1961 	BIN_BUF_DBG_MODE_TREE,
1962 	BIN_BUF_DBG_DUMP_REG,
1963 	BIN_BUF_DBG_DUMP_MEM,
1964 	BIN_BUF_DBG_IDLE_CHK_REGS,
1965 	BIN_BUF_DBG_IDLE_CHK_IMMS,
1966 	BIN_BUF_DBG_IDLE_CHK_RULES,
1967 	BIN_BUF_DBG_IDLE_CHK_PARSING_DATA,
1968 	BIN_BUF_DBG_ATTN_BLOCKS,
1969 	BIN_BUF_DBG_ATTN_REGS,
1970 	BIN_BUF_DBG_ATTN_INDEXES,
1971 	BIN_BUF_DBG_ATTN_NAME_OFFSETS,
1972 	BIN_BUF_DBG_BLOCKS,
1973 	BIN_BUF_DBG_BLOCKS_CHIP_DATA,
1974 	BIN_BUF_DBG_BUS_LINES,
1975 	BIN_BUF_DBG_BLOCKS_USER_DATA,
1976 	BIN_BUF_DBG_BLOCKS_CHIP_USER_DATA,
1977 	BIN_BUF_DBG_BUS_LINE_NAME_OFFSETS,
1978 	BIN_BUF_DBG_RESET_REGS,
1979 	BIN_BUF_DBG_PARSING_STRINGS,
1980 	MAX_BIN_DBG_BUFFER_TYPE
1981 };
1982 
1983 
1984 /* Attention bit mapping */
1985 struct dbg_attn_bit_mapping {
1986 	u16 data;
1987 #define DBG_ATTN_BIT_MAPPING_VAL_MASK			0x7FFF
1988 #define DBG_ATTN_BIT_MAPPING_VAL_SHIFT			0
1989 #define DBG_ATTN_BIT_MAPPING_IS_UNUSED_BIT_CNT_MASK	0x1
1990 #define DBG_ATTN_BIT_MAPPING_IS_UNUSED_BIT_CNT_SHIFT	15
1991 };
1992 
1993 /* Attention block per-type data */
1994 struct dbg_attn_block_type_data {
1995 	u16 names_offset;
1996 	u16 reserved1;
1997 	u8 num_regs;
1998 	u8 reserved2;
1999 	u16 regs_offset;
2000 
2001 };
2002 
2003 /* Block attentions */
2004 struct dbg_attn_block {
2005 	struct dbg_attn_block_type_data per_type_data[2];
2006 };
2007 
2008 /* Attention register result */
2009 struct dbg_attn_reg_result {
2010 	u32 data;
2011 #define DBG_ATTN_REG_RESULT_STS_ADDRESS_MASK	0xFFFFFF
2012 #define DBG_ATTN_REG_RESULT_STS_ADDRESS_SHIFT	0
2013 #define DBG_ATTN_REG_RESULT_NUM_REG_ATTN_MASK	0xFF
2014 #define DBG_ATTN_REG_RESULT_NUM_REG_ATTN_SHIFT	24
2015 	u16 block_attn_offset;
2016 	u16 reserved;
2017 	u32 sts_val;
2018 	u32 mask_val;
2019 };
2020 
2021 /* Attention block result */
2022 struct dbg_attn_block_result {
2023 	u8 block_id;
2024 	u8 data;
2025 #define DBG_ATTN_BLOCK_RESULT_ATTN_TYPE_MASK	0x3
2026 #define DBG_ATTN_BLOCK_RESULT_ATTN_TYPE_SHIFT	0
2027 #define DBG_ATTN_BLOCK_RESULT_NUM_REGS_MASK	0x3F
2028 #define DBG_ATTN_BLOCK_RESULT_NUM_REGS_SHIFT	2
2029 	u16 names_offset;
2030 	struct dbg_attn_reg_result reg_results[15];
2031 };
2032 
2033 /* Mode header */
2034 struct dbg_mode_hdr {
2035 	u16 data;
2036 #define DBG_MODE_HDR_EVAL_MODE_MASK		0x1
2037 #define DBG_MODE_HDR_EVAL_MODE_SHIFT		0
2038 #define DBG_MODE_HDR_MODES_BUF_OFFSET_MASK	0x7FFF
2039 #define DBG_MODE_HDR_MODES_BUF_OFFSET_SHIFT	1
2040 };
2041 
2042 /* Attention register */
2043 struct dbg_attn_reg {
2044 	struct dbg_mode_hdr mode;
2045 	u16 block_attn_offset;
2046 	u32 data;
2047 #define DBG_ATTN_REG_STS_ADDRESS_MASK	0xFFFFFF
2048 #define DBG_ATTN_REG_STS_ADDRESS_SHIFT	0
2049 #define DBG_ATTN_REG_NUM_REG_ATTN_MASK	0xFF
2050 #define DBG_ATTN_REG_NUM_REG_ATTN_SHIFT 24
2051 	u32 sts_clr_address;
2052 	u32 mask_address;
2053 };
2054 
2055 /* Attention types */
2056 enum dbg_attn_type {
2057 	ATTN_TYPE_INTERRUPT,
2058 	ATTN_TYPE_PARITY,
2059 	MAX_DBG_ATTN_TYPE
2060 };
2061 
2062 /* Block debug data */
2063 struct dbg_block {
2064 	u8 name[15];
2065 	u8 associated_storm_letter;
2066 };
2067 
2068 /* Chip-specific block debug data */
2069 struct dbg_block_chip {
2070 	u8 flags;
2071 #define DBG_BLOCK_CHIP_IS_REMOVED_MASK		 0x1
2072 #define DBG_BLOCK_CHIP_IS_REMOVED_SHIFT		 0
2073 #define DBG_BLOCK_CHIP_HAS_RESET_REG_MASK	 0x1
2074 #define DBG_BLOCK_CHIP_HAS_RESET_REG_SHIFT	 1
2075 #define DBG_BLOCK_CHIP_UNRESET_BEFORE_DUMP_MASK  0x1
2076 #define DBG_BLOCK_CHIP_UNRESET_BEFORE_DUMP_SHIFT 2
2077 #define DBG_BLOCK_CHIP_HAS_DBG_BUS_MASK		 0x1
2078 #define DBG_BLOCK_CHIP_HAS_DBG_BUS_SHIFT	 3
2079 #define DBG_BLOCK_CHIP_HAS_LATENCY_EVENTS_MASK	 0x1
2080 #define DBG_BLOCK_CHIP_HAS_LATENCY_EVENTS_SHIFT  4
2081 #define DBG_BLOCK_CHIP_RESERVED0_MASK		 0x7
2082 #define DBG_BLOCK_CHIP_RESERVED0_SHIFT		 5
2083 	u8 dbg_client_id;
2084 	u8 reset_reg_id;
2085 	u8 reset_reg_bit_offset;
2086 	struct dbg_mode_hdr dbg_bus_mode;
2087 	u16 reserved1;
2088 	u8 reserved2;
2089 	u8 num_of_dbg_bus_lines;
2090 	u16 dbg_bus_lines_offset;
2091 	u32 dbg_select_reg_addr;
2092 	u32 dbg_dword_enable_reg_addr;
2093 	u32 dbg_shift_reg_addr;
2094 	u32 dbg_force_valid_reg_addr;
2095 	u32 dbg_force_frame_reg_addr;
2096 };
2097 
2098 /* Chip-specific block user debug data */
2099 struct dbg_block_chip_user {
2100 	u8 num_of_dbg_bus_lines;
2101 	u8 has_latency_events;
2102 	u16 names_offset;
2103 };
2104 
2105 /* Block user debug data */
2106 struct dbg_block_user {
2107 	u8 name[16];
2108 };
2109 
2110 /* Block Debug line data */
2111 struct dbg_bus_line {
2112 	u8 data;
2113 #define DBG_BUS_LINE_NUM_OF_GROUPS_MASK		0xF
2114 #define DBG_BUS_LINE_NUM_OF_GROUPS_SHIFT	0
2115 #define DBG_BUS_LINE_IS_256B_MASK		0x1
2116 #define DBG_BUS_LINE_IS_256B_SHIFT		4
2117 #define DBG_BUS_LINE_RESERVED_MASK		0x7
2118 #define DBG_BUS_LINE_RESERVED_SHIFT		5
2119 	u8 group_sizes;
2120 };
2121 
2122 /* Condition header for registers dump */
2123 struct dbg_dump_cond_hdr {
2124 	struct dbg_mode_hdr mode; /* Mode header */
2125 	u8 block_id; /* block ID */
2126 	u8 data_size; /* size in dwords of the data following this header */
2127 };
2128 
2129 /* Memory data for registers dump */
2130 struct dbg_dump_mem {
2131 	u32 dword0;
2132 #define DBG_DUMP_MEM_ADDRESS_MASK	0xFFFFFF
2133 #define DBG_DUMP_MEM_ADDRESS_SHIFT	0
2134 #define DBG_DUMP_MEM_MEM_GROUP_ID_MASK	0xFF
2135 #define DBG_DUMP_MEM_MEM_GROUP_ID_SHIFT	24
2136 	u32 dword1;
2137 #define DBG_DUMP_MEM_LENGTH_MASK	0xFFFFFF
2138 #define DBG_DUMP_MEM_LENGTH_SHIFT	0
2139 #define DBG_DUMP_MEM_WIDE_BUS_MASK	0x1
2140 #define DBG_DUMP_MEM_WIDE_BUS_SHIFT	24
2141 #define DBG_DUMP_MEM_RESERVED_MASK	0x7F
2142 #define DBG_DUMP_MEM_RESERVED_SHIFT	25
2143 };
2144 
2145 /* Register data for registers dump */
2146 struct dbg_dump_reg {
2147 	u32 data;
2148 #define DBG_DUMP_REG_ADDRESS_MASK	0x7FFFFF
2149 #define DBG_DUMP_REG_ADDRESS_SHIFT	0
2150 #define DBG_DUMP_REG_WIDE_BUS_MASK	0x1
2151 #define DBG_DUMP_REG_WIDE_BUS_SHIFT	23
2152 #define DBG_DUMP_REG_LENGTH_MASK	0xFF
2153 #define DBG_DUMP_REG_LENGTH_SHIFT	24
2154 };
2155 
2156 /* Split header for registers dump */
2157 struct dbg_dump_split_hdr {
2158 	u32 hdr;
2159 #define DBG_DUMP_SPLIT_HDR_DATA_SIZE_MASK	0xFFFFFF
2160 #define DBG_DUMP_SPLIT_HDR_DATA_SIZE_SHIFT	0
2161 #define DBG_DUMP_SPLIT_HDR_SPLIT_TYPE_ID_MASK	0xFF
2162 #define DBG_DUMP_SPLIT_HDR_SPLIT_TYPE_ID_SHIFT	24
2163 };
2164 
2165 /* Condition header for idle check */
2166 struct dbg_idle_chk_cond_hdr {
2167 	struct dbg_mode_hdr mode; /* Mode header */
2168 	u16 data_size; /* size in dwords of the data following this header */
2169 };
2170 
2171 /* Idle Check condition register */
2172 struct dbg_idle_chk_cond_reg {
2173 	u32 data;
2174 #define DBG_IDLE_CHK_COND_REG_ADDRESS_MASK	0x7FFFFF
2175 #define DBG_IDLE_CHK_COND_REG_ADDRESS_SHIFT	0
2176 #define DBG_IDLE_CHK_COND_REG_WIDE_BUS_MASK	0x1
2177 #define DBG_IDLE_CHK_COND_REG_WIDE_BUS_SHIFT	23
2178 #define DBG_IDLE_CHK_COND_REG_BLOCK_ID_MASK	0xFF
2179 #define DBG_IDLE_CHK_COND_REG_BLOCK_ID_SHIFT	24
2180 	u16 num_entries;
2181 	u8 entry_size;
2182 	u8 start_entry;
2183 };
2184 
2185 /* Idle Check info register */
2186 struct dbg_idle_chk_info_reg {
2187 	u32 data;
2188 #define DBG_IDLE_CHK_INFO_REG_ADDRESS_MASK	0x7FFFFF
2189 #define DBG_IDLE_CHK_INFO_REG_ADDRESS_SHIFT	0
2190 #define DBG_IDLE_CHK_INFO_REG_WIDE_BUS_MASK	0x1
2191 #define DBG_IDLE_CHK_INFO_REG_WIDE_BUS_SHIFT	23
2192 #define DBG_IDLE_CHK_INFO_REG_BLOCK_ID_MASK	0xFF
2193 #define DBG_IDLE_CHK_INFO_REG_BLOCK_ID_SHIFT	24
2194 	u16 size; /* register size in dwords */
2195 	struct dbg_mode_hdr mode; /* Mode header */
2196 };
2197 
2198 /* Idle Check register */
2199 union dbg_idle_chk_reg {
2200 	struct dbg_idle_chk_cond_reg cond_reg; /* condition register */
2201 	struct dbg_idle_chk_info_reg info_reg; /* info register */
2202 };
2203 
2204 /* Idle Check result header */
2205 struct dbg_idle_chk_result_hdr {
2206 	u16 rule_id; /* Failing rule index */
2207 	u16 mem_entry_id; /* Failing memory entry index */
2208 	u8 num_dumped_cond_regs; /* number of dumped condition registers */
2209 	u8 num_dumped_info_regs; /* number of dumped condition registers */
2210 	u8 severity; /* from dbg_idle_chk_severity_types enum */
2211 	u8 reserved;
2212 };
2213 
2214 /* Idle Check result register header */
2215 struct dbg_idle_chk_result_reg_hdr {
2216 	u8 data;
2217 #define DBG_IDLE_CHK_RESULT_REG_HDR_IS_MEM_MASK  0x1
2218 #define DBG_IDLE_CHK_RESULT_REG_HDR_IS_MEM_SHIFT 0
2219 #define DBG_IDLE_CHK_RESULT_REG_HDR_REG_ID_MASK  0x7F
2220 #define DBG_IDLE_CHK_RESULT_REG_HDR_REG_ID_SHIFT 1
2221 	u8 start_entry; /* index of the first checked entry */
2222 	u16 size; /* register size in dwords */
2223 };
2224 
2225 /* Idle Check rule */
2226 struct dbg_idle_chk_rule {
2227 	u16 rule_id; /* Idle Check rule ID */
2228 	u8 severity; /* value from dbg_idle_chk_severity_types enum */
2229 	u8 cond_id; /* Condition ID */
2230 	u8 num_cond_regs; /* number of condition registers */
2231 	u8 num_info_regs; /* number of info registers */
2232 	u8 num_imms; /* number of immediates in the condition */
2233 	u8 reserved1;
2234 	u16 reg_offset; /* offset of this rules registers in the idle check
2235 			 * register array (in dbg_idle_chk_reg units).
2236 			 */
2237 	u16 imm_offset; /* offset of this rules immediate values in the
2238 			 * immediate values array (in dwords).
2239 			 */
2240 };
2241 
2242 /* Idle Check rule parsing data */
2243 struct dbg_idle_chk_rule_parsing_data {
2244 	u32 data;
2245 #define DBG_IDLE_CHK_RULE_PARSING_DATA_HAS_FW_MSG_MASK	0x1
2246 #define DBG_IDLE_CHK_RULE_PARSING_DATA_HAS_FW_MSG_SHIFT	0
2247 #define DBG_IDLE_CHK_RULE_PARSING_DATA_STR_OFFSET_MASK	0x7FFFFFFF
2248 #define DBG_IDLE_CHK_RULE_PARSING_DATA_STR_OFFSET_SHIFT	1
2249 };
2250 
2251 /* Idle check severity types */
2252 enum dbg_idle_chk_severity_types {
2253 	/* idle check failure should cause an error */
2254 	IDLE_CHK_SEVERITY_ERROR,
2255 	/* idle check failure should cause an error only if theres no traffic */
2256 	IDLE_CHK_SEVERITY_ERROR_NO_TRAFFIC,
2257 	/* idle check failure should cause a warning */
2258 	IDLE_CHK_SEVERITY_WARNING,
2259 	MAX_DBG_IDLE_CHK_SEVERITY_TYPES
2260 };
2261 
2262 /* Reset register */
2263 struct dbg_reset_reg {
2264 	u32 data;
2265 #define DBG_RESET_REG_ADDR_MASK        0xFFFFFF
2266 #define DBG_RESET_REG_ADDR_SHIFT       0
2267 #define DBG_RESET_REG_IS_REMOVED_MASK  0x1
2268 #define DBG_RESET_REG_IS_REMOVED_SHIFT 24
2269 #define DBG_RESET_REG_RESERVED_MASK    0x7F
2270 #define DBG_RESET_REG_RESERVED_SHIFT   25
2271 };
2272 
2273 /* Debug Bus block data */
2274 struct dbg_bus_block_data {
2275 	u8 enable_mask;
2276 	u8 right_shift;
2277 	u8 force_valid_mask;
2278 	u8 force_frame_mask;
2279 	u8 dword_mask;
2280 	u8 line_num;
2281 	u8 hw_id;
2282 	u8 flags;
2283 #define DBG_BUS_BLOCK_DATA_IS_256B_LINE_MASK  0x1
2284 #define DBG_BUS_BLOCK_DATA_IS_256B_LINE_SHIFT 0
2285 #define DBG_BUS_BLOCK_DATA_RESERVED_MASK      0x7F
2286 #define DBG_BUS_BLOCK_DATA_RESERVED_SHIFT     1
2287 };
2288 
2289 enum dbg_bus_clients {
2290 	DBG_BUS_CLIENT_RBCN,
2291 	DBG_BUS_CLIENT_RBCP,
2292 	DBG_BUS_CLIENT_RBCR,
2293 	DBG_BUS_CLIENT_RBCT,
2294 	DBG_BUS_CLIENT_RBCU,
2295 	DBG_BUS_CLIENT_RBCF,
2296 	DBG_BUS_CLIENT_RBCX,
2297 	DBG_BUS_CLIENT_RBCS,
2298 	DBG_BUS_CLIENT_RBCH,
2299 	DBG_BUS_CLIENT_RBCZ,
2300 	DBG_BUS_CLIENT_OTHER_ENGINE,
2301 	DBG_BUS_CLIENT_TIMESTAMP,
2302 	DBG_BUS_CLIENT_CPU,
2303 	DBG_BUS_CLIENT_RBCY,
2304 	DBG_BUS_CLIENT_RBCQ,
2305 	DBG_BUS_CLIENT_RBCM,
2306 	DBG_BUS_CLIENT_RBCB,
2307 	DBG_BUS_CLIENT_RBCW,
2308 	DBG_BUS_CLIENT_RBCV,
2309 	MAX_DBG_BUS_CLIENTS
2310 };
2311 
2312 /* Debug Bus constraint operation types */
2313 enum dbg_bus_constraint_ops {
2314 	DBG_BUS_CONSTRAINT_OP_EQ,
2315 	DBG_BUS_CONSTRAINT_OP_NE,
2316 	DBG_BUS_CONSTRAINT_OP_LT,
2317 	DBG_BUS_CONSTRAINT_OP_LTC,
2318 	DBG_BUS_CONSTRAINT_OP_LE,
2319 	DBG_BUS_CONSTRAINT_OP_LEC,
2320 	DBG_BUS_CONSTRAINT_OP_GT,
2321 	DBG_BUS_CONSTRAINT_OP_GTC,
2322 	DBG_BUS_CONSTRAINT_OP_GE,
2323 	DBG_BUS_CONSTRAINT_OP_GEC,
2324 	MAX_DBG_BUS_CONSTRAINT_OPS
2325 };
2326 
2327 /* Debug Bus trigger state data */
2328 struct dbg_bus_trigger_state_data {
2329 	u8 msg_len;
2330 	u8 constraint_dword_mask;
2331 	u8 storm_id;
2332 	u8 reserved;
2333 };
2334 
2335 /* Debug Bus memory address */
2336 struct dbg_bus_mem_addr {
2337 	u32 lo;
2338 	u32 hi;
2339 };
2340 
2341 /* Debug Bus PCI buffer data */
2342 struct dbg_bus_pci_buf_data {
2343 	struct dbg_bus_mem_addr phys_addr; /* PCI buffer physical address */
2344 	struct dbg_bus_mem_addr virt_addr; /* PCI buffer virtual address */
2345 	u32 size; /* PCI buffer size in bytes */
2346 };
2347 
2348 /* Debug Bus Storm EID range filter params */
2349 struct dbg_bus_storm_eid_range_params {
2350 	u8 min; /* Minimal event ID to filter on */
2351 	u8 max; /* Maximal event ID to filter on */
2352 };
2353 
2354 /* Debug Bus Storm EID mask filter params */
2355 struct dbg_bus_storm_eid_mask_params {
2356 	u8 val; /* Event ID value */
2357 	u8 mask; /* Event ID mask. 1s in the mask = dont care bits. */
2358 };
2359 
2360 /* Debug Bus Storm EID filter params */
2361 union dbg_bus_storm_eid_params {
2362 	struct dbg_bus_storm_eid_range_params range;
2363 	struct dbg_bus_storm_eid_mask_params mask;
2364 };
2365 
2366 /* Debug Bus Storm data */
2367 struct dbg_bus_storm_data {
2368 	u8 enabled;
2369 	u8 mode;
2370 	u8 hw_id;
2371 	u8 eid_filter_en;
2372 	u8 eid_range_not_mask;
2373 	u8 cid_filter_en;
2374 	union dbg_bus_storm_eid_params eid_filter_params;
2375 	u32 cid;
2376 };
2377 
2378 /* Debug Bus data */
2379 struct dbg_bus_data {
2380 	u32 app_version;
2381 	u8 state;
2382 	u8 mode_256b_en;
2383 	u8 num_enabled_blocks;
2384 	u8 num_enabled_storms;
2385 	u8 target;
2386 	u8 one_shot_en;
2387 	u8 grc_input_en;
2388 	u8 timestamp_input_en;
2389 	u8 filter_en;
2390 	u8 adding_filter;
2391 	u8 filter_pre_trigger;
2392 	u8 filter_post_trigger;
2393 	u8 trigger_en;
2394 	u8 filter_constraint_dword_mask;
2395 	u8 next_trigger_state;
2396 	u8 next_constraint_id;
2397 	struct dbg_bus_trigger_state_data trigger_states[3];
2398 	u8 filter_msg_len;
2399 	u8 rcv_from_other_engine;
2400 	u8 blocks_dword_mask;
2401 	u8 blocks_dword_overlap;
2402 	u32 hw_id_mask;
2403 	struct dbg_bus_pci_buf_data pci_buf;
2404 	struct dbg_bus_block_data blocks[132];
2405 	struct dbg_bus_storm_data storms[6];
2406 };
2407 
2408 /* Debug bus states */
2409 enum dbg_bus_states {
2410 	DBG_BUS_STATE_IDLE,
2411 	DBG_BUS_STATE_READY,
2412 	DBG_BUS_STATE_RECORDING,
2413 	DBG_BUS_STATE_STOPPED,
2414 	MAX_DBG_BUS_STATES
2415 };
2416 
2417 /* Debug Bus Storm modes */
2418 enum dbg_bus_storm_modes {
2419 	DBG_BUS_STORM_MODE_PRINTF,
2420 	DBG_BUS_STORM_MODE_PRAM_ADDR,
2421 	DBG_BUS_STORM_MODE_DRA_RW,
2422 	DBG_BUS_STORM_MODE_DRA_W,
2423 	DBG_BUS_STORM_MODE_LD_ST_ADDR,
2424 	DBG_BUS_STORM_MODE_DRA_FSM,
2425 	DBG_BUS_STORM_MODE_FAST_DBGMUX,
2426 	DBG_BUS_STORM_MODE_RH,
2427 	DBG_BUS_STORM_MODE_RH_WITH_STORE,
2428 	DBG_BUS_STORM_MODE_FOC,
2429 	DBG_BUS_STORM_MODE_EXT_STORE,
2430 	MAX_DBG_BUS_STORM_MODES
2431 };
2432 
2433 /* Debug bus target IDs */
2434 enum dbg_bus_targets {
2435 	DBG_BUS_TARGET_ID_INT_BUF,
2436 	DBG_BUS_TARGET_ID_NIG,
2437 	DBG_BUS_TARGET_ID_PCI,
2438 	MAX_DBG_BUS_TARGETS
2439 };
2440 
2441 /* GRC Dump data */
2442 struct dbg_grc_data {
2443 	u8 params_initialized;
2444 	u8 reserved1;
2445 	u16 reserved2;
2446 	u32 param_val[48];
2447 };
2448 
2449 /* Debug GRC params */
2450 enum dbg_grc_params {
2451 	DBG_GRC_PARAM_DUMP_TSTORM,
2452 	DBG_GRC_PARAM_DUMP_MSTORM,
2453 	DBG_GRC_PARAM_DUMP_USTORM,
2454 	DBG_GRC_PARAM_DUMP_XSTORM,
2455 	DBG_GRC_PARAM_DUMP_YSTORM,
2456 	DBG_GRC_PARAM_DUMP_PSTORM,
2457 	DBG_GRC_PARAM_DUMP_REGS,
2458 	DBG_GRC_PARAM_DUMP_RAM,
2459 	DBG_GRC_PARAM_DUMP_PBUF,
2460 	DBG_GRC_PARAM_DUMP_IOR,
2461 	DBG_GRC_PARAM_DUMP_VFC,
2462 	DBG_GRC_PARAM_DUMP_CM_CTX,
2463 	DBG_GRC_PARAM_DUMP_PXP,
2464 	DBG_GRC_PARAM_DUMP_RSS,
2465 	DBG_GRC_PARAM_DUMP_CAU,
2466 	DBG_GRC_PARAM_DUMP_QM,
2467 	DBG_GRC_PARAM_DUMP_MCP,
2468 	DBG_GRC_PARAM_DUMP_DORQ,
2469 	DBG_GRC_PARAM_DUMP_CFC,
2470 	DBG_GRC_PARAM_DUMP_IGU,
2471 	DBG_GRC_PARAM_DUMP_BRB,
2472 	DBG_GRC_PARAM_DUMP_BTB,
2473 	DBG_GRC_PARAM_DUMP_BMB,
2474 	DBG_GRC_PARAM_RESERVD1,
2475 	DBG_GRC_PARAM_DUMP_MULD,
2476 	DBG_GRC_PARAM_DUMP_PRS,
2477 	DBG_GRC_PARAM_DUMP_DMAE,
2478 	DBG_GRC_PARAM_DUMP_TM,
2479 	DBG_GRC_PARAM_DUMP_SDM,
2480 	DBG_GRC_PARAM_DUMP_DIF,
2481 	DBG_GRC_PARAM_DUMP_STATIC,
2482 	DBG_GRC_PARAM_UNSTALL,
2483 	DBG_GRC_PARAM_RESERVED2,
2484 	DBG_GRC_PARAM_MCP_TRACE_META_SIZE,
2485 	DBG_GRC_PARAM_EXCLUDE_ALL,
2486 	DBG_GRC_PARAM_CRASH,
2487 	DBG_GRC_PARAM_PARITY_SAFE,
2488 	DBG_GRC_PARAM_DUMP_CM,
2489 	DBG_GRC_PARAM_DUMP_PHY,
2490 	DBG_GRC_PARAM_NO_MCP,
2491 	DBG_GRC_PARAM_NO_FW_VER,
2492 	DBG_GRC_PARAM_RESERVED3,
2493 	DBG_GRC_PARAM_DUMP_MCP_HW_DUMP,
2494 	DBG_GRC_PARAM_DUMP_ILT_CDUC,
2495 	DBG_GRC_PARAM_DUMP_ILT_CDUT,
2496 	DBG_GRC_PARAM_DUMP_CAU_EXT,
2497 	MAX_DBG_GRC_PARAMS
2498 };
2499 
2500 /* Debug status codes */
2501 enum dbg_status {
2502 	DBG_STATUS_OK,
2503 	DBG_STATUS_APP_VERSION_NOT_SET,
2504 	DBG_STATUS_UNSUPPORTED_APP_VERSION,
2505 	DBG_STATUS_DBG_BLOCK_NOT_RESET,
2506 	DBG_STATUS_INVALID_ARGS,
2507 	DBG_STATUS_OUTPUT_ALREADY_SET,
2508 	DBG_STATUS_INVALID_PCI_BUF_SIZE,
2509 	DBG_STATUS_PCI_BUF_ALLOC_FAILED,
2510 	DBG_STATUS_PCI_BUF_NOT_ALLOCATED,
2511 	DBG_STATUS_INVALID_FILTER_TRIGGER_DWORDS,
2512 	DBG_STATUS_NO_MATCHING_FRAMING_MODE,
2513 	DBG_STATUS_VFC_READ_ERROR,
2514 	DBG_STATUS_STORM_ALREADY_ENABLED,
2515 	DBG_STATUS_STORM_NOT_ENABLED,
2516 	DBG_STATUS_BLOCK_ALREADY_ENABLED,
2517 	DBG_STATUS_BLOCK_NOT_ENABLED,
2518 	DBG_STATUS_NO_INPUT_ENABLED,
2519 	DBG_STATUS_NO_FILTER_TRIGGER_256B,
2520 	DBG_STATUS_FILTER_ALREADY_ENABLED,
2521 	DBG_STATUS_TRIGGER_ALREADY_ENABLED,
2522 	DBG_STATUS_TRIGGER_NOT_ENABLED,
2523 	DBG_STATUS_CANT_ADD_CONSTRAINT,
2524 	DBG_STATUS_TOO_MANY_TRIGGER_STATES,
2525 	DBG_STATUS_TOO_MANY_CONSTRAINTS,
2526 	DBG_STATUS_RECORDING_NOT_STARTED,
2527 	DBG_STATUS_DATA_DIDNT_TRIGGER,
2528 	DBG_STATUS_NO_DATA_RECORDED,
2529 	DBG_STATUS_DUMP_BUF_TOO_SMALL,
2530 	DBG_STATUS_DUMP_NOT_CHUNK_ALIGNED,
2531 	DBG_STATUS_UNKNOWN_CHIP,
2532 	DBG_STATUS_VIRT_MEM_ALLOC_FAILED,
2533 	DBG_STATUS_BLOCK_IN_RESET,
2534 	DBG_STATUS_INVALID_TRACE_SIGNATURE,
2535 	DBG_STATUS_INVALID_NVRAM_BUNDLE,
2536 	DBG_STATUS_NVRAM_GET_IMAGE_FAILED,
2537 	DBG_STATUS_NON_ALIGNED_NVRAM_IMAGE,
2538 	DBG_STATUS_NVRAM_READ_FAILED,
2539 	DBG_STATUS_IDLE_CHK_PARSE_FAILED,
2540 	DBG_STATUS_MCP_TRACE_BAD_DATA,
2541 	DBG_STATUS_MCP_TRACE_NO_META,
2542 	DBG_STATUS_MCP_COULD_NOT_HALT,
2543 	DBG_STATUS_MCP_COULD_NOT_RESUME,
2544 	DBG_STATUS_RESERVED0,
2545 	DBG_STATUS_SEMI_FIFO_NOT_EMPTY,
2546 	DBG_STATUS_IGU_FIFO_BAD_DATA,
2547 	DBG_STATUS_MCP_COULD_NOT_MASK_PRTY,
2548 	DBG_STATUS_FW_ASSERTS_PARSE_FAILED,
2549 	DBG_STATUS_REG_FIFO_BAD_DATA,
2550 	DBG_STATUS_PROTECTION_OVERRIDE_BAD_DATA,
2551 	DBG_STATUS_DBG_ARRAY_NOT_SET,
2552 	DBG_STATUS_RESERVED1,
2553 	DBG_STATUS_NON_MATCHING_LINES,
2554 	DBG_STATUS_INSUFFICIENT_HW_IDS,
2555 	DBG_STATUS_DBG_BUS_IN_USE,
2556 	DBG_STATUS_INVALID_STORM_DBG_MODE,
2557 	DBG_STATUS_OTHER_ENGINE_BB_ONLY,
2558 	DBG_STATUS_FILTER_SINGLE_HW_ID,
2559 	DBG_STATUS_TRIGGER_SINGLE_HW_ID,
2560 	DBG_STATUS_MISSING_TRIGGER_STATE_STORM,
2561 	MAX_DBG_STATUS
2562 };
2563 
2564 /* Debug Storms IDs */
2565 enum dbg_storms {
2566 	DBG_TSTORM_ID,
2567 	DBG_MSTORM_ID,
2568 	DBG_USTORM_ID,
2569 	DBG_XSTORM_ID,
2570 	DBG_YSTORM_ID,
2571 	DBG_PSTORM_ID,
2572 	MAX_DBG_STORMS
2573 };
2574 
2575 /* Idle Check data */
2576 struct idle_chk_data {
2577 	u32 buf_size;
2578 	u8 buf_size_set;
2579 	u8 reserved1;
2580 	u16 reserved2;
2581 };
2582 
2583 struct pretend_params {
2584 	u8 split_type;
2585 	u8 reserved;
2586 	u16 split_id;
2587 };
2588 
2589 /* Debug Tools data (per HW function)
2590  */
2591 struct dbg_tools_data {
2592 	struct dbg_grc_data grc;
2593 	struct dbg_bus_data bus;
2594 	struct idle_chk_data idle_chk;
2595 	u8 mode_enable[40];
2596 	u8 block_in_reset[132];
2597 	u8 chip_id;
2598 	u8 hw_type;
2599 	u8 num_ports;
2600 	u8 num_pfs_per_port;
2601 	u8 num_vfs;
2602 	u8 initialized;
2603 	u8 use_dmae;
2604 	u8 reserved;
2605 	struct pretend_params pretend;
2606 	u32 num_regs_read;
2607 };
2608 
2609 /* ILT Clients */
2610 enum ilt_clients {
2611 	ILT_CLI_CDUC,
2612 	ILT_CLI_CDUT,
2613 	ILT_CLI_QM,
2614 	ILT_CLI_TM,
2615 	ILT_CLI_SRC,
2616 	ILT_CLI_TSDM,
2617 	ILT_CLI_RGFS,
2618 	ILT_CLI_TGFS,
2619 	MAX_ILT_CLIENTS
2620 };
2621 
2622 /********************************/
2623 /* HSI Init Functions constants */
2624 /********************************/
2625 
2626 /* Number of VLAN priorities */
2627 #define NUM_OF_VLAN_PRIORITIES	8
2628 
2629 /* BRB RAM init requirements */
2630 struct init_brb_ram_req {
2631 	u32 guranteed_per_tc;
2632 	u32 headroom_per_tc;
2633 	u32 min_pkt_size;
2634 	u32 max_ports_per_engine;
2635 	u8 num_active_tcs[MAX_NUM_PORTS];
2636 };
2637 
2638 /* ETS per-TC init requirements */
2639 struct init_ets_tc_req {
2640 	u8 use_sp;
2641 	u8 use_wfq;
2642 	u16 weight;
2643 };
2644 
2645 /* ETS init requirements */
2646 struct init_ets_req {
2647 	u32 mtu;
2648 	struct init_ets_tc_req tc_req[NUM_OF_TCS];
2649 };
2650 
2651 /* NIG LB RL init requirements */
2652 struct init_nig_lb_rl_req {
2653 	u16 lb_mac_rate;
2654 	u16 lb_rate;
2655 	u32 mtu;
2656 	u16 tc_rate[NUM_OF_PHYS_TCS];
2657 };
2658 
2659 /* NIG TC mapping for each priority */
2660 struct init_nig_pri_tc_map_entry {
2661 	u8 tc_id;
2662 	u8 valid;
2663 };
2664 
2665 /* NIG priority to TC map init requirements */
2666 struct init_nig_pri_tc_map_req {
2667 	struct init_nig_pri_tc_map_entry pri[NUM_OF_VLAN_PRIORITIES];
2668 };
2669 
2670 /* QM per global RL init parameters */
2671 struct init_qm_global_rl_params {
2672 	u32 rate_limit;
2673 };
2674 
2675 /* QM per-port init parameters */
2676 struct init_qm_port_params {
2677 	u16 active_phys_tcs;
2678 	u16 num_pbf_cmd_lines;
2679 	u16 num_btb_blocks;
2680 	u8 active;
2681 	u8 reserved;
2682 };
2683 
2684 /* QM per-PQ init parameters */
2685 struct init_qm_pq_params {
2686 	u8 vport_id;
2687 	u8 tc_id;
2688 	u8 wrr_group;
2689 	u8 rl_valid;
2690 	u16 rl_id;
2691 	u8 port_id;
2692 	u8 reserved;
2693 };
2694 
2695 /* QM per-vport init parameters */
2696 struct init_qm_vport_params {
2697 	u16 wfq;
2698 	u16 first_tx_pq_id[NUM_OF_TCS];
2699 };
2700 
2701 /**************************************/
2702 /* Init Tool HSI constants and macros */
2703 /**************************************/
2704 
2705 /* Width of GRC address in bits (addresses are specified in dwords) */
2706 #define GRC_ADDR_BITS	23
2707 #define MAX_GRC_ADDR	(BIT(GRC_ADDR_BITS) - 1)
2708 
2709 /* indicates an init that should be applied to any phase ID */
2710 #define ANY_PHASE_ID	0xffff
2711 
2712 /* Max size in dwords of a zipped array */
2713 #define MAX_ZIPPED_SIZE	8192
2714 enum chip_ids {
2715 	CHIP_BB,
2716 	CHIP_K2,
2717 	MAX_CHIP_IDS
2718 };
2719 
2720 struct fw_asserts_ram_section {
2721 	__le16 section_ram_line_offset;
2722 	__le16 section_ram_line_size;
2723 	u8 list_dword_offset;
2724 	u8 list_element_dword_size;
2725 	u8 list_num_elements;
2726 	u8 list_next_index_dword_offset;
2727 };
2728 
2729 struct fw_ver_num {
2730 	u8 major;
2731 	u8 minor;
2732 	u8 rev;
2733 	u8 eng;
2734 };
2735 
2736 struct fw_ver_info {
2737 	__le16 tools_ver;
2738 	u8 image_id;
2739 	u8 reserved1;
2740 	struct fw_ver_num num;
2741 	__le32 timestamp;
2742 	__le32 reserved2;
2743 };
2744 
2745 struct fw_info {
2746 	struct fw_ver_info ver;
2747 	struct fw_asserts_ram_section fw_asserts_section;
2748 };
2749 
2750 struct fw_info_location {
2751 	__le32 grc_addr;
2752 	__le32 size;
2753 };
2754 
2755 enum init_modes {
2756 	MODE_RESERVED,
2757 	MODE_BB,
2758 	MODE_K2,
2759 	MODE_ASIC,
2760 	MODE_RESERVED2,
2761 	MODE_RESERVED3,
2762 	MODE_RESERVED4,
2763 	MODE_RESERVED5,
2764 	MODE_SF,
2765 	MODE_MF_SD,
2766 	MODE_MF_SI,
2767 	MODE_PORTS_PER_ENG_1,
2768 	MODE_PORTS_PER_ENG_2,
2769 	MODE_PORTS_PER_ENG_4,
2770 	MODE_100G,
2771 	MODE_RESERVED6,
2772 	MODE_RESERVED7,
2773 	MAX_INIT_MODES
2774 };
2775 
2776 enum init_phases {
2777 	PHASE_ENGINE,
2778 	PHASE_PORT,
2779 	PHASE_PF,
2780 	PHASE_VF,
2781 	PHASE_QM_PF,
2782 	MAX_INIT_PHASES
2783 };
2784 
2785 enum init_split_types {
2786 	SPLIT_TYPE_NONE,
2787 	SPLIT_TYPE_PORT,
2788 	SPLIT_TYPE_PF,
2789 	SPLIT_TYPE_PORT_PF,
2790 	SPLIT_TYPE_VF,
2791 	MAX_INIT_SPLIT_TYPES
2792 };
2793 
2794 /* Binary buffer header */
2795 struct bin_buffer_hdr {
2796 	u32 offset;
2797 	u32 length;
2798 };
2799 
2800 /* Binary init buffer types */
2801 enum bin_init_buffer_type {
2802 	BIN_BUF_INIT_FW_VER_INFO,
2803 	BIN_BUF_INIT_CMD,
2804 	BIN_BUF_INIT_VAL,
2805 	BIN_BUF_INIT_MODE_TREE,
2806 	BIN_BUF_INIT_IRO,
2807 	BIN_BUF_INIT_OVERLAYS,
2808 	MAX_BIN_INIT_BUFFER_TYPE
2809 };
2810 
2811 /* FW overlay buffer header */
2812 struct fw_overlay_buf_hdr {
2813 	u32 data;
2814 #define FW_OVERLAY_BUF_HDR_STORM_ID_MASK  0xFF
2815 #define FW_OVERLAY_BUF_HDR_STORM_ID_SHIFT 0
2816 #define FW_OVERLAY_BUF_HDR_BUF_SIZE_MASK  0xFFFFFF
2817 #define FW_OVERLAY_BUF_HDR_BUF_SIZE_SHIFT 8
2818 };
2819 
2820 /* init array header: raw */
2821 struct init_array_raw_hdr {
2822 	u32 data;
2823 #define INIT_ARRAY_RAW_HDR_TYPE_MASK	0xF
2824 #define INIT_ARRAY_RAW_HDR_TYPE_SHIFT	0
2825 #define INIT_ARRAY_RAW_HDR_PARAMS_MASK	0xFFFFFFF
2826 #define INIT_ARRAY_RAW_HDR_PARAMS_SHIFT	4
2827 };
2828 
2829 /* init array header: standard */
2830 struct init_array_standard_hdr {
2831 	u32 data;
2832 #define INIT_ARRAY_STANDARD_HDR_TYPE_MASK	0xF
2833 #define INIT_ARRAY_STANDARD_HDR_TYPE_SHIFT	0
2834 #define INIT_ARRAY_STANDARD_HDR_SIZE_MASK	0xFFFFFFF
2835 #define INIT_ARRAY_STANDARD_HDR_SIZE_SHIFT	4
2836 };
2837 
2838 /* init array header: zipped */
2839 struct init_array_zipped_hdr {
2840 	u32 data;
2841 #define INIT_ARRAY_ZIPPED_HDR_TYPE_MASK		0xF
2842 #define INIT_ARRAY_ZIPPED_HDR_TYPE_SHIFT	0
2843 #define INIT_ARRAY_ZIPPED_HDR_ZIPPED_SIZE_MASK	0xFFFFFFF
2844 #define INIT_ARRAY_ZIPPED_HDR_ZIPPED_SIZE_SHIFT	4
2845 };
2846 
2847 /* init array header: pattern */
2848 struct init_array_pattern_hdr {
2849 	u32 data;
2850 #define INIT_ARRAY_PATTERN_HDR_TYPE_MASK		0xF
2851 #define INIT_ARRAY_PATTERN_HDR_TYPE_SHIFT		0
2852 #define INIT_ARRAY_PATTERN_HDR_PATTERN_SIZE_MASK	0xF
2853 #define INIT_ARRAY_PATTERN_HDR_PATTERN_SIZE_SHIFT	4
2854 #define INIT_ARRAY_PATTERN_HDR_REPETITIONS_MASK		0xFFFFFF
2855 #define INIT_ARRAY_PATTERN_HDR_REPETITIONS_SHIFT	8
2856 };
2857 
2858 /* init array header union */
2859 union init_array_hdr {
2860 	struct init_array_raw_hdr raw;
2861 	struct init_array_standard_hdr standard;
2862 	struct init_array_zipped_hdr zipped;
2863 	struct init_array_pattern_hdr pattern;
2864 };
2865 
2866 /* init array types */
2867 enum init_array_types {
2868 	INIT_ARR_STANDARD,
2869 	INIT_ARR_ZIPPED,
2870 	INIT_ARR_PATTERN,
2871 	MAX_INIT_ARRAY_TYPES
2872 };
2873 
2874 /* init operation: callback */
2875 struct init_callback_op {
2876 	u32 op_data;
2877 #define INIT_CALLBACK_OP_OP_MASK	0xF
2878 #define INIT_CALLBACK_OP_OP_SHIFT	0
2879 #define INIT_CALLBACK_OP_RESERVED_MASK	0xFFFFFFF
2880 #define INIT_CALLBACK_OP_RESERVED_SHIFT	4
2881 	u16 callback_id;
2882 	u16 block_id;
2883 };
2884 
2885 /* init operation: delay */
2886 struct init_delay_op {
2887 	u32 op_data;
2888 #define INIT_DELAY_OP_OP_MASK		0xF
2889 #define INIT_DELAY_OP_OP_SHIFT		0
2890 #define INIT_DELAY_OP_RESERVED_MASK	0xFFFFFFF
2891 #define INIT_DELAY_OP_RESERVED_SHIFT	4
2892 	u32 delay;
2893 };
2894 
2895 /* init operation: if_mode */
2896 struct init_if_mode_op {
2897 	u32 op_data;
2898 #define INIT_IF_MODE_OP_OP_MASK			0xF
2899 #define INIT_IF_MODE_OP_OP_SHIFT		0
2900 #define INIT_IF_MODE_OP_RESERVED1_MASK		0xFFF
2901 #define INIT_IF_MODE_OP_RESERVED1_SHIFT		4
2902 #define INIT_IF_MODE_OP_CMD_OFFSET_MASK		0xFFFF
2903 #define INIT_IF_MODE_OP_CMD_OFFSET_SHIFT	16
2904 	u16 reserved2;
2905 	u16 modes_buf_offset;
2906 };
2907 
2908 /* init operation: if_phase */
2909 struct init_if_phase_op {
2910 	u32 op_data;
2911 #define INIT_IF_PHASE_OP_OP_MASK		0xF
2912 #define INIT_IF_PHASE_OP_OP_SHIFT		0
2913 #define INIT_IF_PHASE_OP_RESERVED1_MASK		0xFFF
2914 #define INIT_IF_PHASE_OP_RESERVED1_SHIFT	4
2915 #define INIT_IF_PHASE_OP_CMD_OFFSET_MASK	0xFFFF
2916 #define INIT_IF_PHASE_OP_CMD_OFFSET_SHIFT	16
2917 	u32 phase_data;
2918 #define INIT_IF_PHASE_OP_PHASE_MASK		0xFF
2919 #define INIT_IF_PHASE_OP_PHASE_SHIFT		0
2920 #define INIT_IF_PHASE_OP_RESERVED2_MASK		0xFF
2921 #define INIT_IF_PHASE_OP_RESERVED2_SHIFT	8
2922 #define INIT_IF_PHASE_OP_PHASE_ID_MASK		0xFFFF
2923 #define INIT_IF_PHASE_OP_PHASE_ID_SHIFT		16
2924 };
2925 
2926 /* init mode operators */
2927 enum init_mode_ops {
2928 	INIT_MODE_OP_NOT,
2929 	INIT_MODE_OP_OR,
2930 	INIT_MODE_OP_AND,
2931 	MAX_INIT_MODE_OPS
2932 };
2933 
2934 /* init operation: raw */
2935 struct init_raw_op {
2936 	u32 op_data;
2937 #define INIT_RAW_OP_OP_MASK		0xF
2938 #define INIT_RAW_OP_OP_SHIFT		0
2939 #define INIT_RAW_OP_PARAM1_MASK		0xFFFFFFF
2940 #define INIT_RAW_OP_PARAM1_SHIFT	4
2941 	u32 param2;
2942 };
2943 
2944 /* init array params */
2945 struct init_op_array_params {
2946 	u16 size;
2947 	u16 offset;
2948 };
2949 
2950 /* Write init operation arguments */
2951 union init_write_args {
2952 	u32 inline_val;
2953 	u32 zeros_count;
2954 	u32 array_offset;
2955 	struct init_op_array_params runtime;
2956 };
2957 
2958 /* init operation: write */
2959 struct init_write_op {
2960 	u32 data;
2961 #define INIT_WRITE_OP_OP_MASK		0xF
2962 #define INIT_WRITE_OP_OP_SHIFT		0
2963 #define INIT_WRITE_OP_SOURCE_MASK	0x7
2964 #define INIT_WRITE_OP_SOURCE_SHIFT	4
2965 #define INIT_WRITE_OP_RESERVED_MASK	0x1
2966 #define INIT_WRITE_OP_RESERVED_SHIFT	7
2967 #define INIT_WRITE_OP_WIDE_BUS_MASK	0x1
2968 #define INIT_WRITE_OP_WIDE_BUS_SHIFT	8
2969 #define INIT_WRITE_OP_ADDRESS_MASK	0x7FFFFF
2970 #define INIT_WRITE_OP_ADDRESS_SHIFT	9
2971 	union init_write_args args;
2972 };
2973 
2974 /* init operation: read */
2975 struct init_read_op {
2976 	u32 op_data;
2977 #define INIT_READ_OP_OP_MASK		0xF
2978 #define INIT_READ_OP_OP_SHIFT		0
2979 #define INIT_READ_OP_POLL_TYPE_MASK	0xF
2980 #define INIT_READ_OP_POLL_TYPE_SHIFT	4
2981 #define INIT_READ_OP_RESERVED_MASK	0x1
2982 #define INIT_READ_OP_RESERVED_SHIFT	8
2983 #define INIT_READ_OP_ADDRESS_MASK	0x7FFFFF
2984 #define INIT_READ_OP_ADDRESS_SHIFT	9
2985 	u32 expected_val;
2986 };
2987 
2988 /* Init operations union */
2989 union init_op {
2990 	struct init_raw_op raw;
2991 	struct init_write_op write;
2992 	struct init_read_op read;
2993 	struct init_if_mode_op if_mode;
2994 	struct init_if_phase_op if_phase;
2995 	struct init_callback_op callback;
2996 	struct init_delay_op delay;
2997 };
2998 
2999 /* Init command operation types */
3000 enum init_op_types {
3001 	INIT_OP_READ,
3002 	INIT_OP_WRITE,
3003 	INIT_OP_IF_MODE,
3004 	INIT_OP_IF_PHASE,
3005 	INIT_OP_DELAY,
3006 	INIT_OP_CALLBACK,
3007 	MAX_INIT_OP_TYPES
3008 };
3009 
3010 /* init polling types */
3011 enum init_poll_types {
3012 	INIT_POLL_NONE,
3013 	INIT_POLL_EQ,
3014 	INIT_POLL_OR,
3015 	INIT_POLL_AND,
3016 	MAX_INIT_POLL_TYPES
3017 };
3018 
3019 /* init source types */
3020 enum init_source_types {
3021 	INIT_SRC_INLINE,
3022 	INIT_SRC_ZEROS,
3023 	INIT_SRC_ARRAY,
3024 	INIT_SRC_RUNTIME,
3025 	MAX_INIT_SOURCE_TYPES
3026 };
3027 
3028 /* Internal RAM Offsets macro data */
3029 struct iro {
3030 	u32 base;
3031 	u16 m1;
3032 	u16 m2;
3033 	u16 m3;
3034 	u16 size;
3035 };
3036 
3037 /***************************** Public Functions *******************************/
3038 
3039 /**
3040  * @brief qed_dbg_set_bin_ptr - Sets a pointer to the binary data with debug
3041  *	arrays.
3042  *
3043  * @param p_hwfn -	    HW device data
3044  * @param bin_ptr - a pointer to the binary data with debug arrays.
3045  */
3046 enum dbg_status qed_dbg_set_bin_ptr(struct qed_hwfn *p_hwfn,
3047 				    const u8 * const bin_ptr);
3048 
3049 /**
3050  * @brief qed_read_regs - Reads registers into a buffer (using GRC).
3051  *
3052  * @param p_hwfn - HW device data
3053  * @param p_ptt - Ptt window used for writing the registers.
3054  * @param buf - Destination buffer.
3055  * @param addr - Source GRC address in dwords.
3056  * @param len - Number of registers to read.
3057  */
3058 void qed_read_regs(struct qed_hwfn *p_hwfn,
3059 		   struct qed_ptt *p_ptt, u32 *buf, u32 addr, u32 len);
3060 
3061 /**
3062  * @brief qed_read_fw_info - Reads FW info from the chip.
3063  *
3064  * The FW info contains FW-related information, such as the FW version,
3065  * FW image (main/L2B/kuku), FW timestamp, etc.
3066  * The FW info is read from the internal RAM of the first Storm that is not in
3067  * reset.
3068  *
3069  * @param p_hwfn -	    HW device data
3070  * @param p_ptt -	    Ptt window used for writing the registers.
3071  * @param fw_info -	Out: a pointer to write the FW info into.
3072  *
3073  * @return true if the FW info was read successfully from one of the Storms,
3074  * or false if all Storms are in reset.
3075  */
3076 bool qed_read_fw_info(struct qed_hwfn *p_hwfn,
3077 		      struct qed_ptt *p_ptt, struct fw_info *fw_info);
3078 /**
3079  * @brief qed_dbg_grc_config - Sets the value of a GRC parameter.
3080  *
3081  * @param p_hwfn -	HW device data
3082  * @param grc_param -	GRC parameter
3083  * @param val -		Value to set.
3084  *
3085  * @return error if one of the following holds:
3086  *	- the version wasn't set
3087  *	- grc_param is invalid
3088  *	- val is outside the allowed boundaries
3089  */
3090 enum dbg_status qed_dbg_grc_config(struct qed_hwfn *p_hwfn,
3091 				   enum dbg_grc_params grc_param, u32 val);
3092 
3093 /**
3094  * @brief qed_dbg_grc_set_params_default - Reverts all GRC parameters to their
3095  *	default value.
3096  *
3097  * @param p_hwfn		- HW device data
3098  */
3099 void qed_dbg_grc_set_params_default(struct qed_hwfn *p_hwfn);
3100 /**
3101  * @brief qed_dbg_grc_get_dump_buf_size - Returns the required buffer size for
3102  *	GRC Dump.
3103  *
3104  * @param p_hwfn - HW device data
3105  * @param p_ptt - Ptt window used for writing the registers.
3106  * @param buf_size - OUT: required buffer size (in dwords) for the GRC Dump
3107  *	data.
3108  *
3109  * @return error if one of the following holds:
3110  *	- the version wasn't set
3111  * Otherwise, returns ok.
3112  */
3113 enum dbg_status qed_dbg_grc_get_dump_buf_size(struct qed_hwfn *p_hwfn,
3114 					      struct qed_ptt *p_ptt,
3115 					      u32 *buf_size);
3116 
3117 /**
3118  * @brief qed_dbg_grc_dump - Dumps GRC data into the specified buffer.
3119  *
3120  * @param p_hwfn - HW device data
3121  * @param p_ptt - Ptt window used for writing the registers.
3122  * @param dump_buf - Pointer to write the collected GRC data into.
3123  * @param buf_size_in_dwords - Size of the specified buffer in dwords.
3124  * @param num_dumped_dwords - OUT: number of dumped dwords.
3125  *
3126  * @return error if one of the following holds:
3127  *	- the version wasn't set
3128  *	- the specified dump buffer is too small
3129  * Otherwise, returns ok.
3130  */
3131 enum dbg_status qed_dbg_grc_dump(struct qed_hwfn *p_hwfn,
3132 				 struct qed_ptt *p_ptt,
3133 				 u32 *dump_buf,
3134 				 u32 buf_size_in_dwords,
3135 				 u32 *num_dumped_dwords);
3136 
3137 /**
3138  * @brief qed_dbg_idle_chk_get_dump_buf_size - Returns the required buffer size
3139  *	for idle check results.
3140  *
3141  * @param p_hwfn - HW device data
3142  * @param p_ptt - Ptt window used for writing the registers.
3143  * @param buf_size - OUT: required buffer size (in dwords) for the idle check
3144  *	data.
3145  *
3146  * @return error if one of the following holds:
3147  *	- the version wasn't set
3148  * Otherwise, returns ok.
3149  */
3150 enum dbg_status qed_dbg_idle_chk_get_dump_buf_size(struct qed_hwfn *p_hwfn,
3151 						   struct qed_ptt *p_ptt,
3152 						   u32 *buf_size);
3153 
3154 /**
3155  * @brief qed_dbg_idle_chk_dump - Performs idle check and writes the results
3156  *	into the specified buffer.
3157  *
3158  * @param p_hwfn - HW device data
3159  * @param p_ptt - Ptt window used for writing the registers.
3160  * @param dump_buf - Pointer to write the idle check data into.
3161  * @param buf_size_in_dwords - Size of the specified buffer in dwords.
3162  * @param num_dumped_dwords - OUT: number of dumped dwords.
3163  *
3164  * @return error if one of the following holds:
3165  *	- the version wasn't set
3166  *	- the specified buffer is too small
3167  * Otherwise, returns ok.
3168  */
3169 enum dbg_status qed_dbg_idle_chk_dump(struct qed_hwfn *p_hwfn,
3170 				      struct qed_ptt *p_ptt,
3171 				      u32 *dump_buf,
3172 				      u32 buf_size_in_dwords,
3173 				      u32 *num_dumped_dwords);
3174 
3175 /**
3176  * @brief qed_dbg_mcp_trace_get_dump_buf_size - Returns the required buffer size
3177  *	for mcp trace results.
3178  *
3179  * @param p_hwfn - HW device data
3180  * @param p_ptt - Ptt window used for writing the registers.
3181  * @param buf_size - OUT: required buffer size (in dwords) for mcp trace data.
3182  *
3183  * @return error if one of the following holds:
3184  *	- the version wasn't set
3185  *	- the trace data in MCP scratchpad contain an invalid signature
3186  *	- the bundle ID in NVRAM is invalid
3187  *	- the trace meta data cannot be found (in NVRAM or image file)
3188  * Otherwise, returns ok.
3189  */
3190 enum dbg_status qed_dbg_mcp_trace_get_dump_buf_size(struct qed_hwfn *p_hwfn,
3191 						    struct qed_ptt *p_ptt,
3192 						    u32 *buf_size);
3193 
3194 /**
3195  * @brief qed_dbg_mcp_trace_dump - Performs mcp trace and writes the results
3196  *	into the specified buffer.
3197  *
3198  * @param p_hwfn - HW device data
3199  * @param p_ptt - Ptt window used for writing the registers.
3200  * @param dump_buf - Pointer to write the mcp trace data into.
3201  * @param buf_size_in_dwords - Size of the specified buffer in dwords.
3202  * @param num_dumped_dwords - OUT: number of dumped dwords.
3203  *
3204  * @return error if one of the following holds:
3205  *	- the version wasn't set
3206  *	- the specified buffer is too small
3207  *	- the trace data in MCP scratchpad contain an invalid signature
3208  *	- the bundle ID in NVRAM is invalid
3209  *	- the trace meta data cannot be found (in NVRAM or image file)
3210  *	- the trace meta data cannot be read (from NVRAM or image file)
3211  * Otherwise, returns ok.
3212  */
3213 enum dbg_status qed_dbg_mcp_trace_dump(struct qed_hwfn *p_hwfn,
3214 				       struct qed_ptt *p_ptt,
3215 				       u32 *dump_buf,
3216 				       u32 buf_size_in_dwords,
3217 				       u32 *num_dumped_dwords);
3218 
3219 /**
3220  * @brief qed_dbg_reg_fifo_get_dump_buf_size - Returns the required buffer size
3221  *	for grc trace fifo results.
3222  *
3223  * @param p_hwfn - HW device data
3224  * @param p_ptt - Ptt window used for writing the registers.
3225  * @param buf_size - OUT: required buffer size (in dwords) for reg fifo data.
3226  *
3227  * @return error if one of the following holds:
3228  *	- the version wasn't set
3229  * Otherwise, returns ok.
3230  */
3231 enum dbg_status qed_dbg_reg_fifo_get_dump_buf_size(struct qed_hwfn *p_hwfn,
3232 						   struct qed_ptt *p_ptt,
3233 						   u32 *buf_size);
3234 
3235 /**
3236  * @brief qed_dbg_reg_fifo_dump - Reads the reg fifo and writes the results into
3237  *	the specified buffer.
3238  *
3239  * @param p_hwfn - HW device data
3240  * @param p_ptt - Ptt window used for writing the registers.
3241  * @param dump_buf - Pointer to write the reg fifo data into.
3242  * @param buf_size_in_dwords - Size of the specified buffer in dwords.
3243  * @param num_dumped_dwords - OUT: number of dumped dwords.
3244  *
3245  * @return error if one of the following holds:
3246  *	- the version wasn't set
3247  *	- the specified buffer is too small
3248  *	- DMAE transaction failed
3249  * Otherwise, returns ok.
3250  */
3251 enum dbg_status qed_dbg_reg_fifo_dump(struct qed_hwfn *p_hwfn,
3252 				      struct qed_ptt *p_ptt,
3253 				      u32 *dump_buf,
3254 				      u32 buf_size_in_dwords,
3255 				      u32 *num_dumped_dwords);
3256 
3257 /**
3258  * @brief qed_dbg_igu_fifo_get_dump_buf_size - Returns the required buffer size
3259  *	for the IGU fifo results.
3260  *
3261  * @param p_hwfn - HW device data
3262  * @param p_ptt - Ptt window used for writing the registers.
3263  * @param buf_size - OUT: required buffer size (in dwords) for the IGU fifo
3264  *	data.
3265  *
3266  * @return error if one of the following holds:
3267  *	- the version wasn't set
3268  * Otherwise, returns ok.
3269  */
3270 enum dbg_status qed_dbg_igu_fifo_get_dump_buf_size(struct qed_hwfn *p_hwfn,
3271 						   struct qed_ptt *p_ptt,
3272 						   u32 *buf_size);
3273 
3274 /**
3275  * @brief qed_dbg_igu_fifo_dump - Reads the IGU fifo and writes the results into
3276  *	the specified buffer.
3277  *
3278  * @param p_hwfn - HW device data
3279  * @param p_ptt - Ptt window used for writing the registers.
3280  * @param dump_buf - Pointer to write the IGU fifo data into.
3281  * @param buf_size_in_dwords - Size of the specified buffer in dwords.
3282  * @param num_dumped_dwords - OUT: number of dumped dwords.
3283  *
3284  * @return error if one of the following holds:
3285  *	- the version wasn't set
3286  *	- the specified buffer is too small
3287  *	- DMAE transaction failed
3288  * Otherwise, returns ok.
3289  */
3290 enum dbg_status qed_dbg_igu_fifo_dump(struct qed_hwfn *p_hwfn,
3291 				      struct qed_ptt *p_ptt,
3292 				      u32 *dump_buf,
3293 				      u32 buf_size_in_dwords,
3294 				      u32 *num_dumped_dwords);
3295 
3296 /**
3297  * @brief qed_dbg_protection_override_get_dump_buf_size - Returns the required
3298  *	buffer size for protection override window results.
3299  *
3300  * @param p_hwfn - HW device data
3301  * @param p_ptt - Ptt window used for writing the registers.
3302  * @param buf_size - OUT: required buffer size (in dwords) for protection
3303  *	override data.
3304  *
3305  * @return error if one of the following holds:
3306  *	- the version wasn't set
3307  * Otherwise, returns ok.
3308  */
3309 enum dbg_status
3310 qed_dbg_protection_override_get_dump_buf_size(struct qed_hwfn *p_hwfn,
3311 					      struct qed_ptt *p_ptt,
3312 					      u32 *buf_size);
3313 /**
3314  * @brief qed_dbg_protection_override_dump - Reads protection override window
3315  *	entries and writes the results into the specified buffer.
3316  *
3317  * @param p_hwfn - HW device data
3318  * @param p_ptt - Ptt window used for writing the registers.
3319  * @param dump_buf - Pointer to write the protection override data into.
3320  * @param buf_size_in_dwords - Size of the specified buffer in dwords.
3321  * @param num_dumped_dwords - OUT: number of dumped dwords.
3322  *
3323  * @return error if one of the following holds:
3324  *	- the version wasn't set
3325  *	- the specified buffer is too small
3326  *	- DMAE transaction failed
3327  * Otherwise, returns ok.
3328  */
3329 enum dbg_status qed_dbg_protection_override_dump(struct qed_hwfn *p_hwfn,
3330 						 struct qed_ptt *p_ptt,
3331 						 u32 *dump_buf,
3332 						 u32 buf_size_in_dwords,
3333 						 u32 *num_dumped_dwords);
3334 /**
3335  * @brief qed_dbg_fw_asserts_get_dump_buf_size - Returns the required buffer
3336  *	size for FW Asserts results.
3337  *
3338  * @param p_hwfn - HW device data
3339  * @param p_ptt - Ptt window used for writing the registers.
3340  * @param buf_size - OUT: required buffer size (in dwords) for FW Asserts data.
3341  *
3342  * @return error if one of the following holds:
3343  *	- the version wasn't set
3344  * Otherwise, returns ok.
3345  */
3346 enum dbg_status qed_dbg_fw_asserts_get_dump_buf_size(struct qed_hwfn *p_hwfn,
3347 						     struct qed_ptt *p_ptt,
3348 						     u32 *buf_size);
3349 /**
3350  * @brief qed_dbg_fw_asserts_dump - Reads the FW Asserts and writes the results
3351  *	into the specified buffer.
3352  *
3353  * @param p_hwfn - HW device data
3354  * @param p_ptt - Ptt window used for writing the registers.
3355  * @param dump_buf - Pointer to write the FW Asserts data into.
3356  * @param buf_size_in_dwords - Size of the specified buffer in dwords.
3357  * @param num_dumped_dwords - OUT: number of dumped dwords.
3358  *
3359  * @return error if one of the following holds:
3360  *	- the version wasn't set
3361  *	- the specified buffer is too small
3362  * Otherwise, returns ok.
3363  */
3364 enum dbg_status qed_dbg_fw_asserts_dump(struct qed_hwfn *p_hwfn,
3365 					struct qed_ptt *p_ptt,
3366 					u32 *dump_buf,
3367 					u32 buf_size_in_dwords,
3368 					u32 *num_dumped_dwords);
3369 
3370 /**
3371  * @brief qed_dbg_read_attn - Reads the attention registers of the specified
3372  * block and type, and writes the results into the specified buffer.
3373  *
3374  * @param p_hwfn -	 HW device data
3375  * @param p_ptt -	 Ptt window used for writing the registers.
3376  * @param block -	 Block ID.
3377  * @param attn_type -	 Attention type.
3378  * @param clear_status - Indicates if the attention status should be cleared.
3379  * @param results -	 OUT: Pointer to write the read results into
3380  *
3381  * @return error if one of the following holds:
3382  *	- the version wasn't set
3383  * Otherwise, returns ok.
3384  */
3385 enum dbg_status qed_dbg_read_attn(struct qed_hwfn *p_hwfn,
3386 				  struct qed_ptt *p_ptt,
3387 				  enum block_id block,
3388 				  enum dbg_attn_type attn_type,
3389 				  bool clear_status,
3390 				  struct dbg_attn_block_result *results);
3391 
3392 /**
3393  * @brief qed_dbg_print_attn - Prints attention registers values in the
3394  *	specified results struct.
3395  *
3396  * @param p_hwfn
3397  * @param results - Pointer to the attention read results
3398  *
3399  * @return error if one of the following holds:
3400  *	- the version wasn't set
3401  * Otherwise, returns ok.
3402  */
3403 enum dbg_status qed_dbg_print_attn(struct qed_hwfn *p_hwfn,
3404 				   struct dbg_attn_block_result *results);
3405 
3406 /******************************* Data Types **********************************/
3407 
3408 struct mcp_trace_format {
3409 	u32 data;
3410 #define MCP_TRACE_FORMAT_MODULE_MASK	0x0000ffff
3411 #define MCP_TRACE_FORMAT_MODULE_OFFSET	0
3412 #define MCP_TRACE_FORMAT_LEVEL_MASK	0x00030000
3413 #define MCP_TRACE_FORMAT_LEVEL_OFFSET	16
3414 #define MCP_TRACE_FORMAT_P1_SIZE_MASK	0x000c0000
3415 #define MCP_TRACE_FORMAT_P1_SIZE_OFFSET 18
3416 #define MCP_TRACE_FORMAT_P2_SIZE_MASK	0x00300000
3417 #define MCP_TRACE_FORMAT_P2_SIZE_OFFSET 20
3418 #define MCP_TRACE_FORMAT_P3_SIZE_MASK	0x00c00000
3419 #define MCP_TRACE_FORMAT_P3_SIZE_OFFSET 22
3420 #define MCP_TRACE_FORMAT_LEN_MASK	0xff000000
3421 #define MCP_TRACE_FORMAT_LEN_OFFSET	24
3422 
3423 	char *format_str;
3424 };
3425 
3426 /* MCP Trace Meta data structure */
3427 struct mcp_trace_meta {
3428 	u32 modules_num;
3429 	char **modules;
3430 	u32 formats_num;
3431 	struct mcp_trace_format *formats;
3432 	bool is_allocated;
3433 };
3434 
3435 /* Debug Tools user data */
3436 struct dbg_tools_user_data {
3437 	struct mcp_trace_meta mcp_trace_meta;
3438 	const u32 *mcp_trace_user_meta_buf;
3439 };
3440 
3441 /******************************** Constants **********************************/
3442 
3443 #define MAX_NAME_LEN	16
3444 
3445 /***************************** Public Functions *******************************/
3446 
3447 /**
3448  * @brief qed_dbg_user_set_bin_ptr - Sets a pointer to the binary data with
3449  *	debug arrays.
3450  *
3451  * @param p_hwfn - HW device data
3452  * @param bin_ptr - a pointer to the binary data with debug arrays.
3453  */
3454 enum dbg_status qed_dbg_user_set_bin_ptr(struct qed_hwfn *p_hwfn,
3455 					 const u8 * const bin_ptr);
3456 
3457 /**
3458  * @brief qed_dbg_alloc_user_data - Allocates user debug data.
3459  *
3460  * @param p_hwfn -		 HW device data
3461  * @param user_data_ptr - OUT: a pointer to the allocated memory.
3462  */
3463 enum dbg_status qed_dbg_alloc_user_data(struct qed_hwfn *p_hwfn,
3464 					void **user_data_ptr);
3465 
3466 /**
3467  * @brief qed_dbg_get_status_str - Returns a string for the specified status.
3468  *
3469  * @param status - a debug status code.
3470  *
3471  * @return a string for the specified status
3472  */
3473 const char *qed_dbg_get_status_str(enum dbg_status status);
3474 
3475 /**
3476  * @brief qed_get_idle_chk_results_buf_size - Returns the required buffer size
3477  *	for idle check results (in bytes).
3478  *
3479  * @param p_hwfn - HW device data
3480  * @param dump_buf - idle check dump buffer.
3481  * @param num_dumped_dwords - number of dwords that were dumped.
3482  * @param results_buf_size - OUT: required buffer size (in bytes) for the parsed
3483  *	results.
3484  *
3485  * @return error if the parsing fails, ok otherwise.
3486  */
3487 enum dbg_status qed_get_idle_chk_results_buf_size(struct qed_hwfn *p_hwfn,
3488 						  u32 *dump_buf,
3489 						  u32  num_dumped_dwords,
3490 						  u32 *results_buf_size);
3491 /**
3492  * @brief qed_print_idle_chk_results - Prints idle check results
3493  *
3494  * @param p_hwfn - HW device data
3495  * @param dump_buf - idle check dump buffer.
3496  * @param num_dumped_dwords - number of dwords that were dumped.
3497  * @param results_buf - buffer for printing the idle check results.
3498  * @param num_errors - OUT: number of errors found in idle check.
3499  * @param num_warnings - OUT: number of warnings found in idle check.
3500  *
3501  * @return error if the parsing fails, ok otherwise.
3502  */
3503 enum dbg_status qed_print_idle_chk_results(struct qed_hwfn *p_hwfn,
3504 					   u32 *dump_buf,
3505 					   u32 num_dumped_dwords,
3506 					   char *results_buf,
3507 					   u32 *num_errors,
3508 					   u32 *num_warnings);
3509 
3510 /**
3511  * @brief qed_dbg_mcp_trace_set_meta_data - Sets the MCP Trace meta data.
3512  *
3513  * Needed in case the MCP Trace dump doesn't contain the meta data (e.g. due to
3514  * no NVRAM access).
3515  *
3516  * @param data - pointer to MCP Trace meta data
3517  * @param size - size of MCP Trace meta data in dwords
3518  */
3519 void qed_dbg_mcp_trace_set_meta_data(struct qed_hwfn *p_hwfn,
3520 				     const u32 *meta_buf);
3521 
3522 /**
3523  * @brief qed_get_mcp_trace_results_buf_size - Returns the required buffer size
3524  *	for MCP Trace results (in bytes).
3525  *
3526  * @param p_hwfn - HW device data
3527  * @param dump_buf - MCP Trace dump buffer.
3528  * @param num_dumped_dwords - number of dwords that were dumped.
3529  * @param results_buf_size - OUT: required buffer size (in bytes) for the parsed
3530  *	results.
3531  *
3532  * @return error if the parsing fails, ok otherwise.
3533  */
3534 enum dbg_status qed_get_mcp_trace_results_buf_size(struct qed_hwfn *p_hwfn,
3535 						   u32 *dump_buf,
3536 						   u32 num_dumped_dwords,
3537 						   u32 *results_buf_size);
3538 
3539 /**
3540  * @brief qed_print_mcp_trace_results - Prints MCP Trace results
3541  *
3542  * @param p_hwfn - HW device data
3543  * @param dump_buf - mcp trace dump buffer, starting from the header.
3544  * @param num_dumped_dwords - number of dwords that were dumped.
3545  * @param results_buf - buffer for printing the mcp trace results.
3546  *
3547  * @return error if the parsing fails, ok otherwise.
3548  */
3549 enum dbg_status qed_print_mcp_trace_results(struct qed_hwfn *p_hwfn,
3550 					    u32 *dump_buf,
3551 					    u32 num_dumped_dwords,
3552 					    char *results_buf);
3553 
3554 /**
3555  * @brief qed_print_mcp_trace_results_cont - Prints MCP Trace results, and
3556  * keeps the MCP trace meta data allocated, to support continuous MCP Trace
3557  * parsing. After the continuous parsing ends, mcp_trace_free_meta_data should
3558  * be called to free the meta data.
3559  *
3560  * @param p_hwfn -	      HW device data
3561  * @param dump_buf -	      mcp trace dump buffer, starting from the header.
3562  * @param results_buf -	      buffer for printing the mcp trace results.
3563  *
3564  * @return error if the parsing fails, ok otherwise.
3565  */
3566 enum dbg_status qed_print_mcp_trace_results_cont(struct qed_hwfn *p_hwfn,
3567 						 u32 *dump_buf,
3568 						 char *results_buf);
3569 
3570 /**
3571  * @brief print_mcp_trace_line - Prints MCP Trace results for a single line
3572  *
3573  * @param p_hwfn -	      HW device data
3574  * @param dump_buf -	      mcp trace dump buffer, starting from the header.
3575  * @param num_dumped_bytes -  number of bytes that were dumped.
3576  * @param results_buf -	      buffer for printing the mcp trace results.
3577  *
3578  * @return error if the parsing fails, ok otherwise.
3579  */
3580 enum dbg_status qed_print_mcp_trace_line(struct qed_hwfn *p_hwfn,
3581 					 u8 *dump_buf,
3582 					 u32 num_dumped_bytes,
3583 					 char *results_buf);
3584 
3585 /**
3586  * @brief mcp_trace_free_meta_data - Frees the MCP Trace meta data.
3587  * Should be called after continuous MCP Trace parsing.
3588  *
3589  * @param p_hwfn - HW device data
3590  */
3591 void qed_mcp_trace_free_meta_data(struct qed_hwfn *p_hwfn);
3592 
3593 /**
3594  * @brief qed_get_reg_fifo_results_buf_size - Returns the required buffer size
3595  *	for reg_fifo results (in bytes).
3596  *
3597  * @param p_hwfn - HW device data
3598  * @param dump_buf - reg fifo dump buffer.
3599  * @param num_dumped_dwords - number of dwords that were dumped.
3600  * @param results_buf_size - OUT: required buffer size (in bytes) for the parsed
3601  *	results.
3602  *
3603  * @return error if the parsing fails, ok otherwise.
3604  */
3605 enum dbg_status qed_get_reg_fifo_results_buf_size(struct qed_hwfn *p_hwfn,
3606 						  u32 *dump_buf,
3607 						  u32 num_dumped_dwords,
3608 						  u32 *results_buf_size);
3609 
3610 /**
3611  * @brief qed_print_reg_fifo_results - Prints reg fifo results
3612  *
3613  * @param p_hwfn - HW device data
3614  * @param dump_buf - reg fifo dump buffer, starting from the header.
3615  * @param num_dumped_dwords - number of dwords that were dumped.
3616  * @param results_buf - buffer for printing the reg fifo results.
3617  *
3618  * @return error if the parsing fails, ok otherwise.
3619  */
3620 enum dbg_status qed_print_reg_fifo_results(struct qed_hwfn *p_hwfn,
3621 					   u32 *dump_buf,
3622 					   u32 num_dumped_dwords,
3623 					   char *results_buf);
3624 
3625 /**
3626  * @brief qed_get_igu_fifo_results_buf_size - Returns the required buffer size
3627  *	for igu_fifo results (in bytes).
3628  *
3629  * @param p_hwfn - HW device data
3630  * @param dump_buf - IGU fifo dump buffer.
3631  * @param num_dumped_dwords - number of dwords that were dumped.
3632  * @param results_buf_size - OUT: required buffer size (in bytes) for the parsed
3633  *	results.
3634  *
3635  * @return error if the parsing fails, ok otherwise.
3636  */
3637 enum dbg_status qed_get_igu_fifo_results_buf_size(struct qed_hwfn *p_hwfn,
3638 						  u32 *dump_buf,
3639 						  u32 num_dumped_dwords,
3640 						  u32 *results_buf_size);
3641 
3642 /**
3643  * @brief qed_print_igu_fifo_results - Prints IGU fifo results
3644  *
3645  * @param p_hwfn - HW device data
3646  * @param dump_buf - IGU fifo dump buffer, starting from the header.
3647  * @param num_dumped_dwords - number of dwords that were dumped.
3648  * @param results_buf - buffer for printing the IGU fifo results.
3649  *
3650  * @return error if the parsing fails, ok otherwise.
3651  */
3652 enum dbg_status qed_print_igu_fifo_results(struct qed_hwfn *p_hwfn,
3653 					   u32 *dump_buf,
3654 					   u32 num_dumped_dwords,
3655 					   char *results_buf);
3656 
3657 /**
3658  * @brief qed_get_protection_override_results_buf_size - Returns the required
3659  *	buffer size for protection override results (in bytes).
3660  *
3661  * @param p_hwfn - HW device data
3662  * @param dump_buf - protection override dump buffer.
3663  * @param num_dumped_dwords - number of dwords that were dumped.
3664  * @param results_buf_size - OUT: required buffer size (in bytes) for the parsed
3665  *	results.
3666  *
3667  * @return error if the parsing fails, ok otherwise.
3668  */
3669 enum dbg_status
3670 qed_get_protection_override_results_buf_size(struct qed_hwfn *p_hwfn,
3671 					     u32 *dump_buf,
3672 					     u32 num_dumped_dwords,
3673 					     u32 *results_buf_size);
3674 
3675 /**
3676  * @brief qed_print_protection_override_results - Prints protection override
3677  *	results.
3678  *
3679  * @param p_hwfn - HW device data
3680  * @param dump_buf - protection override dump buffer, starting from the header.
3681  * @param num_dumped_dwords - number of dwords that were dumped.
3682  * @param results_buf - buffer for printing the reg fifo results.
3683  *
3684  * @return error if the parsing fails, ok otherwise.
3685  */
3686 enum dbg_status qed_print_protection_override_results(struct qed_hwfn *p_hwfn,
3687 						      u32 *dump_buf,
3688 						      u32 num_dumped_dwords,
3689 						      char *results_buf);
3690 
3691 /**
3692  * @brief qed_get_fw_asserts_results_buf_size - Returns the required buffer size
3693  *	for FW Asserts results (in bytes).
3694  *
3695  * @param p_hwfn - HW device data
3696  * @param dump_buf - FW Asserts dump buffer.
3697  * @param num_dumped_dwords - number of dwords that were dumped.
3698  * @param results_buf_size - OUT: required buffer size (in bytes) for the parsed
3699  *	results.
3700  *
3701  * @return error if the parsing fails, ok otherwise.
3702  */
3703 enum dbg_status qed_get_fw_asserts_results_buf_size(struct qed_hwfn *p_hwfn,
3704 						    u32 *dump_buf,
3705 						    u32 num_dumped_dwords,
3706 						    u32 *results_buf_size);
3707 
3708 /**
3709  * @brief qed_print_fw_asserts_results - Prints FW Asserts results
3710  *
3711  * @param p_hwfn - HW device data
3712  * @param dump_buf - FW Asserts dump buffer, starting from the header.
3713  * @param num_dumped_dwords - number of dwords that were dumped.
3714  * @param results_buf - buffer for printing the FW Asserts results.
3715  *
3716  * @return error if the parsing fails, ok otherwise.
3717  */
3718 enum dbg_status qed_print_fw_asserts_results(struct qed_hwfn *p_hwfn,
3719 					     u32 *dump_buf,
3720 					     u32 num_dumped_dwords,
3721 					     char *results_buf);
3722 
3723 /**
3724  * @brief qed_dbg_parse_attn - Parses and prints attention registers values in
3725  * the specified results struct.
3726  *
3727  * @param p_hwfn -  HW device data
3728  * @param results - Pointer to the attention read results
3729  *
3730  * @return error if one of the following holds:
3731  *	- the version wasn't set
3732  * Otherwise, returns ok.
3733  */
3734 enum dbg_status qed_dbg_parse_attn(struct qed_hwfn *p_hwfn,
3735 				   struct dbg_attn_block_result *results);
3736 
3737 /* Win 2 */
3738 #define GTT_BAR0_MAP_REG_IGU_CMD	0x00f000UL
3739 
3740 /* Win 3 */
3741 #define GTT_BAR0_MAP_REG_TSDM_RAM	0x010000UL
3742 
3743 /* Win 4 */
3744 #define GTT_BAR0_MAP_REG_MSDM_RAM	0x011000UL
3745 
3746 /* Win 5 */
3747 #define GTT_BAR0_MAP_REG_MSDM_RAM_1024	0x012000UL
3748 
3749 /* Win 6 */
3750 #define GTT_BAR0_MAP_REG_MSDM_RAM_2048	0x013000UL
3751 
3752 /* Win 7 */
3753 #define GTT_BAR0_MAP_REG_USDM_RAM	0x014000UL
3754 
3755 /* Win 8 */
3756 #define GTT_BAR0_MAP_REG_USDM_RAM_1024	0x015000UL
3757 
3758 /* Win 9 */
3759 #define GTT_BAR0_MAP_REG_USDM_RAM_2048	0x016000UL
3760 
3761 /* Win 10 */
3762 #define GTT_BAR0_MAP_REG_XSDM_RAM	0x017000UL
3763 
3764 /* Win 11 */
3765 #define GTT_BAR0_MAP_REG_XSDM_RAM_1024	0x018000UL
3766 
3767 /* Win 12 */
3768 #define GTT_BAR0_MAP_REG_YSDM_RAM	0x019000UL
3769 
3770 /* Win 13 */
3771 #define GTT_BAR0_MAP_REG_PSDM_RAM	0x01a000UL
3772 
3773 /**
3774  * @brief qed_qm_pf_mem_size - prepare QM ILT sizes
3775  *
3776  * Returns the required host memory size in 4KB units.
3777  * Must be called before all QM init HSI functions.
3778  *
3779  * @param num_pf_cids - number of connections used by this PF
3780  * @param num_vf_cids - number of connections used by VFs of this PF
3781  * @param num_tids - number of tasks used by this PF
3782  * @param num_pf_pqs - number of PQs used by this PF
3783  * @param num_vf_pqs - number of PQs used by VFs of this PF
3784  *
3785  * @return The required host memory size in 4KB units.
3786  */
3787 u32 qed_qm_pf_mem_size(u32 num_pf_cids,
3788 		       u32 num_vf_cids,
3789 		       u32 num_tids, u16 num_pf_pqs, u16 num_vf_pqs);
3790 
3791 struct qed_qm_common_rt_init_params {
3792 	u8 max_ports_per_engine;
3793 	u8 max_phys_tcs_per_port;
3794 	bool pf_rl_en;
3795 	bool pf_wfq_en;
3796 	bool global_rl_en;
3797 	bool vport_wfq_en;
3798 	struct init_qm_port_params *port_params;
3799 };
3800 
3801 int qed_qm_common_rt_init(struct qed_hwfn *p_hwfn,
3802 			  struct qed_qm_common_rt_init_params *p_params);
3803 
3804 struct qed_qm_pf_rt_init_params {
3805 	u8 port_id;
3806 	u8 pf_id;
3807 	u8 max_phys_tcs_per_port;
3808 	bool is_pf_loading;
3809 	u32 num_pf_cids;
3810 	u32 num_vf_cids;
3811 	u32 num_tids;
3812 	u16 start_pq;
3813 	u16 num_pf_pqs;
3814 	u16 num_vf_pqs;
3815 	u16 start_vport;
3816 	u16 num_vports;
3817 	u16 pf_wfq;
3818 	u32 pf_rl;
3819 	struct init_qm_pq_params *pq_params;
3820 	struct init_qm_vport_params *vport_params;
3821 };
3822 
3823 int qed_qm_pf_rt_init(struct qed_hwfn *p_hwfn,
3824 	struct qed_ptt *p_ptt,
3825 	struct qed_qm_pf_rt_init_params *p_params);
3826 
3827 /**
3828  * @brief qed_init_pf_wfq - Initializes the WFQ weight of the specified PF
3829  *
3830  * @param p_hwfn
3831  * @param p_ptt - ptt window used for writing the registers
3832  * @param pf_id - PF ID
3833  * @param pf_wfq - WFQ weight. Must be non-zero.
3834  *
3835  * @return 0 on success, -1 on error.
3836  */
3837 int qed_init_pf_wfq(struct qed_hwfn *p_hwfn,
3838 		    struct qed_ptt *p_ptt, u8 pf_id, u16 pf_wfq);
3839 
3840 /**
3841  * @brief qed_init_pf_rl - Initializes the rate limit of the specified PF
3842  *
3843  * @param p_hwfn
3844  * @param p_ptt - ptt window used for writing the registers
3845  * @param pf_id - PF ID
3846  * @param pf_rl - rate limit in Mb/sec units
3847  *
3848  * @return 0 on success, -1 on error.
3849  */
3850 int qed_init_pf_rl(struct qed_hwfn *p_hwfn,
3851 		   struct qed_ptt *p_ptt, u8 pf_id, u32 pf_rl);
3852 
3853 /**
3854  * @brief qed_init_vport_wfq Initializes the WFQ weight of the specified VPORT
3855  *
3856  * @param p_hwfn
3857  * @param p_ptt - ptt window used for writing the registers
3858  * @param first_tx_pq_id- An array containing the first Tx PQ ID associated
3859  *	  with the VPORT for each TC. This array is filled by
3860  *	  qed_qm_pf_rt_init
3861  * @param vport_wfq - WFQ weight. Must be non-zero.
3862  *
3863  * @return 0 on success, -1 on error.
3864  */
3865 int qed_init_vport_wfq(struct qed_hwfn *p_hwfn,
3866 		       struct qed_ptt *p_ptt,
3867 		       u16 first_tx_pq_id[NUM_OF_TCS], u16 wfq);
3868 
3869 /**
3870  * @brief qed_init_global_rl - Initializes the rate limit of the specified
3871  * rate limiter
3872  *
3873  * @param p_hwfn
3874  * @param p_ptt - ptt window used for writing the registers
3875  * @param rl_id - RL ID
3876  * @param rate_limit - rate limit in Mb/sec units
3877  *
3878  * @return 0 on success, -1 on error.
3879  */
3880 int qed_init_global_rl(struct qed_hwfn *p_hwfn,
3881 		       struct qed_ptt *p_ptt,
3882 		       u16 rl_id, u32 rate_limit);
3883 
3884 /**
3885  * @brief qed_send_qm_stop_cmd  Sends a stop command to the QM
3886  *
3887  * @param p_hwfn
3888  * @param p_ptt
3889  * @param is_release_cmd - true for release, false for stop.
3890  * @param is_tx_pq - true for Tx PQs, false for Other PQs.
3891  * @param start_pq - first PQ ID to stop
3892  * @param num_pqs - Number of PQs to stop, starting from start_pq.
3893  *
3894  * @return bool, true if successful, false if timeout occurred while waiting for
3895  *	QM command done.
3896  */
3897 bool qed_send_qm_stop_cmd(struct qed_hwfn *p_hwfn,
3898 			  struct qed_ptt *p_ptt,
3899 			  bool is_release_cmd,
3900 			  bool is_tx_pq, u16 start_pq, u16 num_pqs);
3901 
3902 /**
3903  * @brief qed_set_vxlan_dest_port - initializes vxlan tunnel destination udp port
3904  *
3905  * @param p_hwfn
3906  * @param p_ptt - ptt window used for writing the registers.
3907  * @param dest_port - vxlan destination udp port.
3908  */
3909 void qed_set_vxlan_dest_port(struct qed_hwfn *p_hwfn,
3910 			     struct qed_ptt *p_ptt, u16 dest_port);
3911 
3912 /**
3913  * @brief qed_set_vxlan_enable - enable or disable VXLAN tunnel in HW
3914  *
3915  * @param p_hwfn
3916  * @param p_ptt - ptt window used for writing the registers.
3917  * @param vxlan_enable - vxlan enable flag.
3918  */
3919 void qed_set_vxlan_enable(struct qed_hwfn *p_hwfn,
3920 			  struct qed_ptt *p_ptt, bool vxlan_enable);
3921 
3922 /**
3923  * @brief qed_set_gre_enable - enable or disable GRE tunnel in HW
3924  *
3925  * @param p_hwfn
3926  * @param p_ptt - ptt window used for writing the registers.
3927  * @param eth_gre_enable - eth GRE enable enable flag.
3928  * @param ip_gre_enable - IP GRE enable enable flag.
3929  */
3930 void qed_set_gre_enable(struct qed_hwfn *p_hwfn,
3931 			struct qed_ptt *p_ptt,
3932 			bool eth_gre_enable, bool ip_gre_enable);
3933 
3934 /**
3935  * @brief qed_set_geneve_dest_port - initializes geneve tunnel destination udp port
3936  *
3937  * @param p_hwfn
3938  * @param p_ptt - ptt window used for writing the registers.
3939  * @param dest_port - geneve destination udp port.
3940  */
3941 void qed_set_geneve_dest_port(struct qed_hwfn *p_hwfn,
3942 			      struct qed_ptt *p_ptt, u16 dest_port);
3943 
3944 /**
3945  * @brief qed_set_gre_enable - enable or disable GRE tunnel in HW
3946  *
3947  * @param p_ptt - ptt window used for writing the registers.
3948  * @param eth_geneve_enable - eth GENEVE enable enable flag.
3949  * @param ip_geneve_enable - IP GENEVE enable enable flag.
3950  */
3951 void qed_set_geneve_enable(struct qed_hwfn *p_hwfn,
3952 			   struct qed_ptt *p_ptt,
3953 			   bool eth_geneve_enable, bool ip_geneve_enable);
3954 
3955 void qed_set_vxlan_no_l2_enable(struct qed_hwfn *p_hwfn,
3956 				struct qed_ptt *p_ptt, bool enable);
3957 
3958 /**
3959  * @brief qed_gft_disable - Disable GFT
3960  *
3961  * @param p_hwfn
3962  * @param p_ptt - ptt window used for writing the registers.
3963  * @param pf_id - pf on which to disable GFT.
3964  */
3965 void qed_gft_disable(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt, u16 pf_id);
3966 
3967 /**
3968  * @brief qed_gft_config - Enable and configure HW for GFT
3969  *
3970  * @param p_hwfn - HW device data
3971  * @param p_ptt - ptt window used for writing the registers.
3972  * @param pf_id - pf on which to enable GFT.
3973  * @param tcp - set profile tcp packets.
3974  * @param udp - set profile udp  packet.
3975  * @param ipv4 - set profile ipv4 packet.
3976  * @param ipv6 - set profile ipv6 packet.
3977  * @param profile_type - define packet same fields. Use enum gft_profile_type.
3978  */
3979 void qed_gft_config(struct qed_hwfn *p_hwfn,
3980 		    struct qed_ptt *p_ptt,
3981 		    u16 pf_id,
3982 		    bool tcp,
3983 		    bool udp,
3984 		    bool ipv4, bool ipv6, enum gft_profile_type profile_type);
3985 
3986 /**
3987  * @brief qed_enable_context_validation - Enable and configure context
3988  *	validation.
3989  *
3990  * @param p_hwfn
3991  * @param p_ptt - ptt window used for writing the registers.
3992  */
3993 void qed_enable_context_validation(struct qed_hwfn *p_hwfn,
3994 				   struct qed_ptt *p_ptt);
3995 
3996 /**
3997  * @brief qed_calc_session_ctx_validation - Calcualte validation byte for
3998  *	session context.
3999  *
4000  * @param p_ctx_mem - pointer to context memory.
4001  * @param ctx_size - context size.
4002  * @param ctx_type - context type.
4003  * @param cid - context cid.
4004  */
4005 void qed_calc_session_ctx_validation(void *p_ctx_mem,
4006 				     u16 ctx_size, u8 ctx_type, u32 cid);
4007 
4008 /**
4009  * @brief qed_calc_task_ctx_validation - Calcualte validation byte for task
4010  *	context.
4011  *
4012  * @param p_ctx_mem - pointer to context memory.
4013  * @param ctx_size - context size.
4014  * @param ctx_type - context type.
4015  * @param tid - context tid.
4016  */
4017 void qed_calc_task_ctx_validation(void *p_ctx_mem,
4018 				  u16 ctx_size, u8 ctx_type, u32 tid);
4019 
4020 /**
4021  * @brief qed_memset_session_ctx - Memset session context to 0 while
4022  *	preserving validation bytes.
4023  *
4024  * @param p_hwfn -
4025  * @param p_ctx_mem - pointer to context memory.
4026  * @param ctx_size - size to initialzie.
4027  * @param ctx_type - context type.
4028  */
4029 void qed_memset_session_ctx(void *p_ctx_mem, u32 ctx_size, u8 ctx_type);
4030 
4031 /**
4032  * @brief qed_memset_task_ctx - Memset task context to 0 while preserving
4033  *	validation bytes.
4034  *
4035  * @param p_ctx_mem - pointer to context memory.
4036  * @param ctx_size - size to initialzie.
4037  * @param ctx_type - context type.
4038  */
4039 void qed_memset_task_ctx(void *p_ctx_mem, u32 ctx_size, u8 ctx_type);
4040 
4041 #define NUM_STORMS 6
4042 
4043 /**
4044  * @brief qed_set_rdma_error_level - Sets the RDMA assert level.
4045  *                                   If the severity of the error will be
4046  *                                   above the level, the FW will assert.
4047  * @param p_hwfn - HW device data
4048  * @param p_ptt - ptt window used for writing the registers
4049  * @param assert_level - An array of assert levels for each storm.
4050  *
4051  */
4052 void qed_set_rdma_error_level(struct qed_hwfn *p_hwfn,
4053 			      struct qed_ptt *p_ptt,
4054 			      u8 assert_level[NUM_STORMS]);
4055 /**
4056  * @brief qed_fw_overlay_mem_alloc - Allocates and fills the FW overlay memory.
4057  *
4058  * @param p_hwfn - HW device data
4059  * @param fw_overlay_in_buf - the input FW overlay buffer.
4060  * @param buf_size - the size of the input FW overlay buffer in bytes.
4061  *		     must be aligned to dwords.
4062  * @param fw_overlay_out_mem - OUT: a pointer to the allocated overlays memory.
4063  *
4064  * @return a pointer to the allocated overlays memory,
4065  * or NULL in case of failures.
4066  */
4067 struct phys_mem_desc *
4068 qed_fw_overlay_mem_alloc(struct qed_hwfn *p_hwfn,
4069 			 const u32 * const fw_overlay_in_buf,
4070 			 u32 buf_size_in_bytes);
4071 
4072 /**
4073  * @brief qed_fw_overlay_init_ram - Initializes the FW overlay RAM.
4074  *
4075  * @param p_hwfn - HW device data.
4076  * @param p_ptt - ptt window used for writing the registers.
4077  * @param fw_overlay_mem - the allocated FW overlay memory.
4078  */
4079 void qed_fw_overlay_init_ram(struct qed_hwfn *p_hwfn,
4080 			     struct qed_ptt *p_ptt,
4081 			     struct phys_mem_desc *fw_overlay_mem);
4082 
4083 /**
4084  * @brief qed_fw_overlay_mem_free - Frees the FW overlay memory.
4085  *
4086  * @param p_hwfn - HW device data.
4087  * @param fw_overlay_mem - the allocated FW overlay memory to free.
4088  */
4089 void qed_fw_overlay_mem_free(struct qed_hwfn *p_hwfn,
4090 			     struct phys_mem_desc *fw_overlay_mem);
4091 
4092 /* Ystorm flow control mode. Use enum fw_flow_ctrl_mode */
4093 #define YSTORM_FLOW_CONTROL_MODE_OFFSET			(IRO[0].base)
4094 #define YSTORM_FLOW_CONTROL_MODE_SIZE			(IRO[0].size)
4095 
4096 /* Tstorm port statistics */
4097 #define TSTORM_PORT_STAT_OFFSET(port_id) \
4098 	(IRO[1].base + ((port_id) * IRO[1].m1))
4099 #define TSTORM_PORT_STAT_SIZE				(IRO[1].size)
4100 
4101 /* Tstorm ll2 port statistics */
4102 #define TSTORM_LL2_PORT_STAT_OFFSET(port_id) \
4103 	(IRO[2].base + ((port_id) * IRO[2].m1))
4104 #define TSTORM_LL2_PORT_STAT_SIZE			(IRO[2].size)
4105 
4106 /* Ustorm VF-PF Channel ready flag */
4107 #define USTORM_VF_PF_CHANNEL_READY_OFFSET(vf_id) \
4108 	(IRO[3].base + ((vf_id) * IRO[3].m1))
4109 #define USTORM_VF_PF_CHANNEL_READY_SIZE			(IRO[3].size)
4110 
4111 /* Ustorm Final flr cleanup ack */
4112 #define USTORM_FLR_FINAL_ACK_OFFSET(pf_id) \
4113 	(IRO[4].base + ((pf_id) * IRO[4].m1))
4114 #define USTORM_FLR_FINAL_ACK_SIZE			(IRO[4].size)
4115 
4116 /* Ustorm Event ring consumer */
4117 #define USTORM_EQE_CONS_OFFSET(pf_id) \
4118 	(IRO[5].base + ((pf_id) * IRO[5].m1))
4119 #define USTORM_EQE_CONS_SIZE				(IRO[5].size)
4120 
4121 /* Ustorm eth queue zone */
4122 #define USTORM_ETH_QUEUE_ZONE_OFFSET(queue_zone_id) \
4123 	(IRO[6].base + ((queue_zone_id) * IRO[6].m1))
4124 #define USTORM_ETH_QUEUE_ZONE_SIZE			(IRO[6].size)
4125 
4126 /* Ustorm Common Queue ring consumer */
4127 #define USTORM_COMMON_QUEUE_CONS_OFFSET(queue_zone_id) \
4128 	(IRO[7].base + ((queue_zone_id) * IRO[7].m1))
4129 #define USTORM_COMMON_QUEUE_CONS_SIZE			(IRO[7].size)
4130 
4131 /* Xstorm common PQ info */
4132 #define XSTORM_PQ_INFO_OFFSET(pq_id) \
4133 	(IRO[8].base + ((pq_id) * IRO[8].m1))
4134 #define XSTORM_PQ_INFO_SIZE				(IRO[8].size)
4135 
4136 /* Xstorm Integration Test Data */
4137 #define XSTORM_INTEG_TEST_DATA_OFFSET			(IRO[9].base)
4138 #define XSTORM_INTEG_TEST_DATA_SIZE			(IRO[9].size)
4139 
4140 /* Ystorm Integration Test Data */
4141 #define YSTORM_INTEG_TEST_DATA_OFFSET			(IRO[10].base)
4142 #define YSTORM_INTEG_TEST_DATA_SIZE			(IRO[10].size)
4143 
4144 /* Pstorm Integration Test Data */
4145 #define PSTORM_INTEG_TEST_DATA_OFFSET			(IRO[11].base)
4146 #define PSTORM_INTEG_TEST_DATA_SIZE			(IRO[11].size)
4147 
4148 /* Tstorm Integration Test Data */
4149 #define TSTORM_INTEG_TEST_DATA_OFFSET			(IRO[12].base)
4150 #define TSTORM_INTEG_TEST_DATA_SIZE			(IRO[12].size)
4151 
4152 /* Mstorm Integration Test Data */
4153 #define MSTORM_INTEG_TEST_DATA_OFFSET			(IRO[13].base)
4154 #define MSTORM_INTEG_TEST_DATA_SIZE			(IRO[13].size)
4155 
4156 /* Ustorm Integration Test Data */
4157 #define USTORM_INTEG_TEST_DATA_OFFSET			(IRO[14].base)
4158 #define USTORM_INTEG_TEST_DATA_SIZE			(IRO[14].size)
4159 
4160 /* Xstorm overlay buffer host address */
4161 #define XSTORM_OVERLAY_BUF_ADDR_OFFSET			(IRO[15].base)
4162 #define XSTORM_OVERLAY_BUF_ADDR_SIZE			(IRO[15].size)
4163 
4164 /* Ystorm overlay buffer host address */
4165 #define YSTORM_OVERLAY_BUF_ADDR_OFFSET			(IRO[16].base)
4166 #define YSTORM_OVERLAY_BUF_ADDR_SIZE			(IRO[16].size)
4167 
4168 /* Pstorm overlay buffer host address */
4169 #define PSTORM_OVERLAY_BUF_ADDR_OFFSET			(IRO[17].base)
4170 #define PSTORM_OVERLAY_BUF_ADDR_SIZE			(IRO[17].size)
4171 
4172 /* Tstorm overlay buffer host address */
4173 #define TSTORM_OVERLAY_BUF_ADDR_OFFSET			(IRO[18].base)
4174 #define TSTORM_OVERLAY_BUF_ADDR_SIZE			(IRO[18].size)
4175 
4176 /* Mstorm overlay buffer host address */
4177 #define MSTORM_OVERLAY_BUF_ADDR_OFFSET			(IRO[19].base)
4178 #define MSTORM_OVERLAY_BUF_ADDR_SIZE			(IRO[19].size)
4179 
4180 /* Ustorm overlay buffer host address */
4181 #define USTORM_OVERLAY_BUF_ADDR_OFFSET			(IRO[20].base)
4182 #define USTORM_OVERLAY_BUF_ADDR_SIZE			(IRO[20].size)
4183 
4184 /* Tstorm producers */
4185 #define TSTORM_LL2_RX_PRODS_OFFSET(core_rx_queue_id) \
4186 	(IRO[21].base + ((core_rx_queue_id) * IRO[21].m1))
4187 #define TSTORM_LL2_RX_PRODS_SIZE			(IRO[21].size)
4188 
4189 /* Tstorm LightL2 queue statistics */
4190 #define CORE_LL2_TSTORM_PER_QUEUE_STAT_OFFSET(core_rx_queue_id) \
4191 	(IRO[22].base + ((core_rx_queue_id) * IRO[22].m1))
4192 #define CORE_LL2_TSTORM_PER_QUEUE_STAT_SIZE		(IRO[22].size)
4193 
4194 /* Ustorm LiteL2 queue statistics */
4195 #define CORE_LL2_USTORM_PER_QUEUE_STAT_OFFSET(core_rx_queue_id) \
4196 	(IRO[23].base + ((core_rx_queue_id) * IRO[23].m1))
4197 #define CORE_LL2_USTORM_PER_QUEUE_STAT_SIZE		(IRO[23].size)
4198 
4199 /* Pstorm LiteL2 queue statistics */
4200 #define CORE_LL2_PSTORM_PER_QUEUE_STAT_OFFSET(core_tx_stats_id) \
4201 	(IRO[24].base + ((core_tx_stats_id) * IRO[24].m1))
4202 #define CORE_LL2_PSTORM_PER_QUEUE_STAT_SIZE		(IRO[24].size)
4203 
4204 /* Mstorm queue statistics */
4205 #define MSTORM_QUEUE_STAT_OFFSET(stat_counter_id) \
4206 	(IRO[25].base + ((stat_counter_id) * IRO[25].m1))
4207 #define MSTORM_QUEUE_STAT_SIZE				(IRO[25].size)
4208 
4209 /* TPA agregation timeout in us resolution (on ASIC) */
4210 #define MSTORM_TPA_TIMEOUT_US_OFFSET			(IRO[26].base)
4211 #define MSTORM_TPA_TIMEOUT_US_SIZE			(IRO[26].size)
4212 
4213 /* Mstorm ETH VF queues producers offset in RAM. Used in default VF zone size
4214  * mode
4215  */
4216 #define MSTORM_ETH_VF_PRODS_OFFSET(vf_id, vf_queue_id) \
4217 	(IRO[27].base + ((vf_id) * IRO[27].m1) + ((vf_queue_id) * IRO[27].m2))
4218 #define MSTORM_ETH_VF_PRODS_SIZE			(IRO[27].size)
4219 
4220 /* Mstorm ETH PF queues producers */
4221 #define MSTORM_ETH_PF_PRODS_OFFSET(queue_id) \
4222 	(IRO[28].base + ((queue_id) * IRO[28].m1))
4223 #define MSTORM_ETH_PF_PRODS_SIZE			(IRO[28].size)
4224 
4225 /* Mstorm pf statistics */
4226 #define MSTORM_ETH_PF_STAT_OFFSET(pf_id) \
4227 	(IRO[29].base + ((pf_id) * IRO[29].m1))
4228 #define MSTORM_ETH_PF_STAT_SIZE				(IRO[29].size)
4229 
4230 /* Ustorm queue statistics */
4231 #define USTORM_QUEUE_STAT_OFFSET(stat_counter_id) \
4232 	(IRO[30].base + ((stat_counter_id) * IRO[30].m1))
4233 #define USTORM_QUEUE_STAT_SIZE				(IRO[30].size)
4234 
4235 /* Ustorm pf statistics */
4236 #define USTORM_ETH_PF_STAT_OFFSET(pf_id) \
4237 	(IRO[31].base + ((pf_id) * IRO[31].m1))
4238 #define USTORM_ETH_PF_STAT_SIZE				(IRO[31].size)
4239 
4240 /* Pstorm queue statistics */
4241 #define PSTORM_QUEUE_STAT_OFFSET(stat_counter_id)	\
4242 	(IRO[32].base + ((stat_counter_id) * IRO[32].m1))
4243 #define PSTORM_QUEUE_STAT_SIZE				(IRO[32].size)
4244 
4245 /* Pstorm pf statistics */
4246 #define PSTORM_ETH_PF_STAT_OFFSET(pf_id) \
4247 	(IRO[33].base + ((pf_id) * IRO[33].m1))
4248 #define PSTORM_ETH_PF_STAT_SIZE				(IRO[33].size)
4249 
4250 /* Control frame's EthType configuration for TX control frame security */
4251 #define PSTORM_CTL_FRAME_ETHTYPE_OFFSET(eth_type_id)	\
4252 	(IRO[34].base + ((eth_type_id) * IRO[34].m1))
4253 #define PSTORM_CTL_FRAME_ETHTYPE_SIZE			(IRO[34].size)
4254 
4255 /* Tstorm last parser message */
4256 #define TSTORM_ETH_PRS_INPUT_OFFSET			(IRO[35].base)
4257 #define TSTORM_ETH_PRS_INPUT_SIZE			(IRO[35].size)
4258 
4259 /* Tstorm Eth limit Rx rate */
4260 #define ETH_RX_RATE_LIMIT_OFFSET(pf_id)	\
4261 	(IRO[36].base + ((pf_id) * IRO[36].m1))
4262 #define ETH_RX_RATE_LIMIT_SIZE				(IRO[36].size)
4263 
4264 /* RSS indirection table entry update command per PF offset in TSTORM PF BAR0.
4265  * Use eth_tstorm_rss_update_data for update
4266  */
4267 #define TSTORM_ETH_RSS_UPDATE_OFFSET(pf_id) \
4268 	(IRO[37].base + ((pf_id) * IRO[37].m1))
4269 #define TSTORM_ETH_RSS_UPDATE_SIZE			(IRO[37].size)
4270 
4271 /* Xstorm queue zone */
4272 #define XSTORM_ETH_QUEUE_ZONE_OFFSET(queue_id) \
4273 	(IRO[38].base + ((queue_id) * IRO[38].m1))
4274 #define XSTORM_ETH_QUEUE_ZONE_SIZE			(IRO[38].size)
4275 
4276 /* Ystorm cqe producer */
4277 #define YSTORM_TOE_CQ_PROD_OFFSET(rss_id) \
4278 	(IRO[39].base + ((rss_id) * IRO[39].m1))
4279 #define YSTORM_TOE_CQ_PROD_SIZE				(IRO[39].size)
4280 
4281 /* Ustorm cqe producer */
4282 #define USTORM_TOE_CQ_PROD_OFFSET(rss_id) \
4283 	(IRO[40].base + ((rss_id) * IRO[40].m1))
4284 #define USTORM_TOE_CQ_PROD_SIZE				(IRO[40].size)
4285 
4286 /* Ustorm grq producer */
4287 #define USTORM_TOE_GRQ_PROD_OFFSET(pf_id) \
4288 	(IRO[41].base + ((pf_id) * IRO[41].m1))
4289 #define USTORM_TOE_GRQ_PROD_SIZE			(IRO[41].size)
4290 
4291 /* Tstorm cmdq-cons of given command queue-id */
4292 #define TSTORM_SCSI_CMDQ_CONS_OFFSET(cmdq_queue_id) \
4293 	(IRO[42].base + ((cmdq_queue_id) * IRO[42].m1))
4294 #define TSTORM_SCSI_CMDQ_CONS_SIZE			(IRO[42].size)
4295 
4296 /* Tstorm (reflects M-Storm) bdq-external-producer of given function ID,
4297  * BDqueue-id
4298  */
4299 #define TSTORM_SCSI_BDQ_EXT_PROD_OFFSET(storage_func_id, bdq_id) \
4300 	(IRO[43].base + ((storage_func_id) * IRO[43].m1) + \
4301 	 ((bdq_id) * IRO[43].m2))
4302 #define TSTORM_SCSI_BDQ_EXT_PROD_SIZE			(IRO[43].size)
4303 
4304 /* Mstorm bdq-external-producer of given BDQ resource ID, BDqueue-id */
4305 #define MSTORM_SCSI_BDQ_EXT_PROD_OFFSET(storage_func_id, bdq_id) \
4306 	(IRO[44].base + ((storage_func_id) * IRO[44].m1) + \
4307 	 ((bdq_id) * IRO[44].m2))
4308 #define MSTORM_SCSI_BDQ_EXT_PROD_SIZE			(IRO[44].size)
4309 
4310 /* Tstorm iSCSI RX stats */
4311 #define TSTORM_ISCSI_RX_STATS_OFFSET(storage_func_id) \
4312 	(IRO[45].base + ((storage_func_id) * IRO[45].m1))
4313 #define TSTORM_ISCSI_RX_STATS_SIZE			(IRO[45].size)
4314 
4315 /* Mstorm iSCSI RX stats */
4316 #define MSTORM_ISCSI_RX_STATS_OFFSET(storage_func_id) \
4317 	(IRO[46].base + ((storage_func_id) * IRO[46].m1))
4318 #define MSTORM_ISCSI_RX_STATS_SIZE			(IRO[46].size)
4319 
4320 /* Ustorm iSCSI RX stats */
4321 #define USTORM_ISCSI_RX_STATS_OFFSET(storage_func_id) \
4322 	(IRO[47].base + ((storage_func_id) * IRO[47].m1))
4323 #define USTORM_ISCSI_RX_STATS_SIZE			(IRO[47].size)
4324 
4325 /* Xstorm iSCSI TX stats */
4326 #define XSTORM_ISCSI_TX_STATS_OFFSET(storage_func_id) \
4327 	(IRO[48].base + ((storage_func_id) * IRO[48].m1))
4328 #define XSTORM_ISCSI_TX_STATS_SIZE			(IRO[48].size)
4329 
4330 /* Ystorm iSCSI TX stats */
4331 #define YSTORM_ISCSI_TX_STATS_OFFSET(storage_func_id) \
4332 	(IRO[49].base + ((storage_func_id) * IRO[49].m1))
4333 #define YSTORM_ISCSI_TX_STATS_SIZE			(IRO[49].size)
4334 
4335 /* Pstorm iSCSI TX stats */
4336 #define PSTORM_ISCSI_TX_STATS_OFFSET(storage_func_id) \
4337 	(IRO[50].base + ((storage_func_id) * IRO[50].m1))
4338 #define PSTORM_ISCSI_TX_STATS_SIZE			(IRO[50].size)
4339 
4340 /* Tstorm FCoE RX stats */
4341 #define TSTORM_FCOE_RX_STATS_OFFSET(pf_id) \
4342 	(IRO[51].base + ((pf_id) * IRO[51].m1))
4343 #define TSTORM_FCOE_RX_STATS_SIZE			(IRO[51].size)
4344 
4345 /* Pstorm FCoE TX stats */
4346 #define PSTORM_FCOE_TX_STATS_OFFSET(pf_id) \
4347 	(IRO[52].base + ((pf_id) * IRO[52].m1))
4348 #define PSTORM_FCOE_TX_STATS_SIZE			(IRO[52].size)
4349 
4350 /* Pstorm RDMA queue statistics */
4351 #define PSTORM_RDMA_QUEUE_STAT_OFFSET(rdma_stat_counter_id) \
4352 	(IRO[53].base + ((rdma_stat_counter_id) * IRO[53].m1))
4353 #define PSTORM_RDMA_QUEUE_STAT_SIZE			(IRO[53].size)
4354 
4355 /* Tstorm RDMA queue statistics */
4356 #define TSTORM_RDMA_QUEUE_STAT_OFFSET(rdma_stat_counter_id) \
4357 	(IRO[54].base + ((rdma_stat_counter_id) * IRO[54].m1))
4358 #define TSTORM_RDMA_QUEUE_STAT_SIZE			(IRO[54].size)
4359 
4360 /* Xstorm error level for assert */
4361 #define XSTORM_RDMA_ASSERT_LEVEL_OFFSET(pf_id) \
4362 	(IRO[55].base + ((pf_id) * IRO[55].m1))
4363 #define XSTORM_RDMA_ASSERT_LEVEL_SIZE			(IRO[55].size)
4364 
4365 /* Ystorm error level for assert */
4366 #define YSTORM_RDMA_ASSERT_LEVEL_OFFSET(pf_id) \
4367 	(IRO[56].base + ((pf_id) * IRO[56].m1))
4368 #define YSTORM_RDMA_ASSERT_LEVEL_SIZE			(IRO[56].size)
4369 
4370 /* Pstorm error level for assert */
4371 #define PSTORM_RDMA_ASSERT_LEVEL_OFFSET(pf_id) \
4372 	(IRO[57].base + ((pf_id) * IRO[57].m1))
4373 #define PSTORM_RDMA_ASSERT_LEVEL_SIZE			(IRO[57].size)
4374 
4375 /* Tstorm error level for assert */
4376 #define TSTORM_RDMA_ASSERT_LEVEL_OFFSET(pf_id) \
4377 	(IRO[58].base + ((pf_id) * IRO[58].m1))
4378 #define TSTORM_RDMA_ASSERT_LEVEL_SIZE			(IRO[58].size)
4379 
4380 /* Mstorm error level for assert */
4381 #define MSTORM_RDMA_ASSERT_LEVEL_OFFSET(pf_id) \
4382 	(IRO[59].base + ((pf_id) * IRO[59].m1))
4383 #define MSTORM_RDMA_ASSERT_LEVEL_SIZE			(IRO[59].size)
4384 
4385 /* Ustorm error level for assert */
4386 #define USTORM_RDMA_ASSERT_LEVEL_OFFSET(pf_id) \
4387 	(IRO[60].base + ((pf_id) * IRO[60].m1))
4388 #define USTORM_RDMA_ASSERT_LEVEL_SIZE			(IRO[60].size)
4389 
4390 /* Xstorm iWARP rxmit stats */
4391 #define XSTORM_IWARP_RXMIT_STATS_OFFSET(pf_id) \
4392 	(IRO[61].base + ((pf_id) * IRO[61].m1))
4393 #define XSTORM_IWARP_RXMIT_STATS_SIZE			(IRO[61].size)
4394 
4395 /* Tstorm RoCE Event Statistics */
4396 #define TSTORM_ROCE_EVENTS_STAT_OFFSET(roce_pf_id)	\
4397 	(IRO[62].base + ((roce_pf_id) * IRO[62].m1))
4398 #define TSTORM_ROCE_EVENTS_STAT_SIZE			(IRO[62].size)
4399 
4400 /* DCQCN Received Statistics */
4401 #define YSTORM_ROCE_DCQCN_RECEIVED_STATS_OFFSET(roce_pf_id)\
4402 	(IRO[63].base + ((roce_pf_id) * IRO[63].m1))
4403 #define YSTORM_ROCE_DCQCN_RECEIVED_STATS_SIZE		(IRO[63].size)
4404 
4405 /* RoCE Error Statistics */
4406 #define YSTORM_ROCE_ERROR_STATS_OFFSET(roce_pf_id)	\
4407 	(IRO[64].base + ((roce_pf_id) * IRO[64].m1))
4408 #define YSTORM_ROCE_ERROR_STATS_SIZE			(IRO[64].size)
4409 
4410 /* DCQCN Sent Statistics */
4411 #define PSTORM_ROCE_DCQCN_SENT_STATS_OFFSET(roce_pf_id)	\
4412 	(IRO[65].base + ((roce_pf_id) * IRO[65].m1))
4413 #define PSTORM_ROCE_DCQCN_SENT_STATS_SIZE		(IRO[65].size)
4414 
4415 /* RoCE CQEs Statistics */
4416 #define USTORM_ROCE_CQE_STATS_OFFSET(roce_pf_id)	\
4417 	(IRO[66].base + ((roce_pf_id) * IRO[66].m1))
4418 #define USTORM_ROCE_CQE_STATS_SIZE			(IRO[66].size)
4419 
4420 /* IRO Array */
4421 static const u32 iro_arr[] = {
4422 	0x00000000, 0x00000000, 0x00080000,
4423 	0x00003288, 0x00000088, 0x00880000,
4424 	0x000058e8, 0x00000020, 0x00200000,
4425 	0x00000b00, 0x00000008, 0x00040000,
4426 	0x00000a80, 0x00000008, 0x00040000,
4427 	0x00000000, 0x00000008, 0x00020000,
4428 	0x00000080, 0x00000008, 0x00040000,
4429 	0x00000084, 0x00000008, 0x00020000,
4430 	0x00005718, 0x00000004, 0x00040000,
4431 	0x00004dd0, 0x00000000, 0x00780000,
4432 	0x00003e40, 0x00000000, 0x00780000,
4433 	0x00004480, 0x00000000, 0x00780000,
4434 	0x00003210, 0x00000000, 0x00780000,
4435 	0x00003b50, 0x00000000, 0x00780000,
4436 	0x00007f58, 0x00000000, 0x00780000,
4437 	0x00005f58, 0x00000000, 0x00080000,
4438 	0x00007100, 0x00000000, 0x00080000,
4439 	0x0000aea0, 0x00000000, 0x00080000,
4440 	0x00004398, 0x00000000, 0x00080000,
4441 	0x0000a5a0, 0x00000000, 0x00080000,
4442 	0x0000bde8, 0x00000000, 0x00080000,
4443 	0x00000020, 0x00000004, 0x00040000,
4444 	0x000056c8, 0x00000010, 0x00100000,
4445 	0x0000c210, 0x00000030, 0x00300000,
4446 	0x0000b088, 0x00000038, 0x00380000,
4447 	0x00003d20, 0x00000080, 0x00400000,
4448 	0x0000bf60, 0x00000000, 0x00040000,
4449 	0x00004560, 0x00040080, 0x00040000,
4450 	0x000001f8, 0x00000004, 0x00040000,
4451 	0x00003d60, 0x00000080, 0x00200000,
4452 	0x00008960, 0x00000040, 0x00300000,
4453 	0x0000e840, 0x00000060, 0x00600000,
4454 	0x00004618, 0x00000080, 0x00380000,
4455 	0x00010738, 0x000000c0, 0x00c00000,
4456 	0x000001f8, 0x00000002, 0x00020000,
4457 	0x0000a2a0, 0x00000000, 0x01080000,
4458 	0x0000a3a8, 0x00000008, 0x00080000,
4459 	0x000001c0, 0x00000008, 0x00080000,
4460 	0x000001f8, 0x00000008, 0x00080000,
4461 	0x00000ac0, 0x00000008, 0x00080000,
4462 	0x00002578, 0x00000008, 0x00080000,
4463 	0x000024f8, 0x00000008, 0x00080000,
4464 	0x00000280, 0x00000008, 0x00080000,
4465 	0x00000680, 0x00080018, 0x00080000,
4466 	0x00000b78, 0x00080018, 0x00020000,
4467 	0x0000c640, 0x00000050, 0x003c0000,
4468 	0x00012038, 0x00000018, 0x00100000,
4469 	0x00011b00, 0x00000040, 0x00180000,
4470 	0x000095d0, 0x00000050, 0x00200000,
4471 	0x00008b10, 0x00000040, 0x00280000,
4472 	0x00011640, 0x00000018, 0x00100000,
4473 	0x0000c828, 0x00000048, 0x00380000,
4474 	0x00011710, 0x00000020, 0x00200000,
4475 	0x00004650, 0x00000080, 0x00100000,
4476 	0x00003618, 0x00000010, 0x00100000,
4477 	0x0000a968, 0x00000008, 0x00010000,
4478 	0x000097a0, 0x00000008, 0x00010000,
4479 	0x00011990, 0x00000008, 0x00010000,
4480 	0x0000f018, 0x00000008, 0x00010000,
4481 	0x00012628, 0x00000008, 0x00010000,
4482 	0x00011da8, 0x00000008, 0x00010000,
4483 	0x0000aa78, 0x00000030, 0x00100000,
4484 	0x0000d768, 0x00000028, 0x00280000,
4485 	0x00009a58, 0x00000018, 0x00180000,
4486 	0x00009bd8, 0x00000008, 0x00080000,
4487 	0x00013a18, 0x00000008, 0x00080000,
4488 	0x000126e8, 0x00000018, 0x00180000,
4489 	0x0000e608, 0x00500288, 0x00100000,
4490 	0x00012970, 0x00000138, 0x00280000,
4491 };
4492 
4493 /* Runtime array offsets */
4494 #define DORQ_REG_PF_MAX_ICID_0_RT_OFFSET				0
4495 #define DORQ_REG_PF_MAX_ICID_1_RT_OFFSET				1
4496 #define DORQ_REG_PF_MAX_ICID_2_RT_OFFSET				2
4497 #define DORQ_REG_PF_MAX_ICID_3_RT_OFFSET				3
4498 #define DORQ_REG_PF_MAX_ICID_4_RT_OFFSET				4
4499 #define DORQ_REG_PF_MAX_ICID_5_RT_OFFSET				5
4500 #define DORQ_REG_PF_MAX_ICID_6_RT_OFFSET				6
4501 #define DORQ_REG_PF_MAX_ICID_7_RT_OFFSET				7
4502 #define DORQ_REG_VF_MAX_ICID_0_RT_OFFSET				8
4503 #define DORQ_REG_VF_MAX_ICID_1_RT_OFFSET				9
4504 #define DORQ_REG_VF_MAX_ICID_2_RT_OFFSET				10
4505 #define DORQ_REG_VF_MAX_ICID_3_RT_OFFSET				11
4506 #define DORQ_REG_VF_MAX_ICID_4_RT_OFFSET				12
4507 #define DORQ_REG_VF_MAX_ICID_5_RT_OFFSET				13
4508 #define DORQ_REG_VF_MAX_ICID_6_RT_OFFSET				14
4509 #define DORQ_REG_VF_MAX_ICID_7_RT_OFFSET				15
4510 #define DORQ_REG_VF_ICID_BIT_SHIFT_NORM_RT_OFFSET			16
4511 #define DORQ_REG_PF_WAKE_ALL_RT_OFFSET					17
4512 #define DORQ_REG_TAG1_ETHERTYPE_RT_OFFSET				18
4513 #define IGU_REG_PF_CONFIGURATION_RT_OFFSET				19
4514 #define IGU_REG_VF_CONFIGURATION_RT_OFFSET				20
4515 #define IGU_REG_ATTN_MSG_ADDR_L_RT_OFFSET				21
4516 #define IGU_REG_ATTN_MSG_ADDR_H_RT_OFFSET				22
4517 #define IGU_REG_LEADING_EDGE_LATCH_RT_OFFSET				23
4518 #define IGU_REG_TRAILING_EDGE_LATCH_RT_OFFSET				24
4519 #define CAU_REG_CQE_AGG_UNIT_SIZE_RT_OFFSET				25
4520 #define CAU_REG_SB_VAR_MEMORY_RT_OFFSET					26
4521 #define CAU_REG_SB_VAR_MEMORY_RT_SIZE					736
4522 #define CAU_REG_SB_ADDR_MEMORY_RT_OFFSET				762
4523 #define CAU_REG_SB_ADDR_MEMORY_RT_SIZE					736
4524 #define CAU_REG_PI_MEMORY_RT_OFFSET					1498
4525 #define CAU_REG_PI_MEMORY_RT_SIZE					4416
4526 #define PRS_REG_SEARCH_RESP_INITIATOR_TYPE_RT_OFFSET			5914
4527 #define PRS_REG_TASK_ID_MAX_INITIATOR_PF_RT_OFFSET			5915
4528 #define PRS_REG_TASK_ID_MAX_INITIATOR_VF_RT_OFFSET			5916
4529 #define PRS_REG_TASK_ID_MAX_TARGET_PF_RT_OFFSET				5917
4530 #define PRS_REG_TASK_ID_MAX_TARGET_VF_RT_OFFSET				5918
4531 #define PRS_REG_SEARCH_TCP_RT_OFFSET					5919
4532 #define PRS_REG_SEARCH_FCOE_RT_OFFSET					5920
4533 #define PRS_REG_SEARCH_ROCE_RT_OFFSET					5921
4534 #define PRS_REG_ROCE_DEST_QP_MAX_VF_RT_OFFSET				5922
4535 #define PRS_REG_ROCE_DEST_QP_MAX_PF_RT_OFFSET				5923
4536 #define PRS_REG_SEARCH_OPENFLOW_RT_OFFSET				5924
4537 #define PRS_REG_SEARCH_NON_IP_AS_OPENFLOW_RT_OFFSET			5925
4538 #define PRS_REG_OPENFLOW_SUPPORT_ONLY_KNOWN_OVER_IP_RT_OFFSET		5926
4539 #define PRS_REG_OPENFLOW_SEARCH_KEY_MASK_RT_OFFSET			5927
4540 #define PRS_REG_TAG_ETHERTYPE_0_RT_OFFSET				5928
4541 #define PRS_REG_LIGHT_L2_ETHERTYPE_EN_RT_OFFSET				5929
4542 #define SRC_REG_FIRSTFREE_RT_OFFSET					5930
4543 #define SRC_REG_FIRSTFREE_RT_SIZE					2
4544 #define SRC_REG_LASTFREE_RT_OFFSET					5932
4545 #define SRC_REG_LASTFREE_RT_SIZE					2
4546 #define SRC_REG_COUNTFREE_RT_OFFSET					5934
4547 #define SRC_REG_NUMBER_HASH_BITS_RT_OFFSET				5935
4548 #define PSWRQ2_REG_CDUT_P_SIZE_RT_OFFSET				5936
4549 #define PSWRQ2_REG_CDUC_P_SIZE_RT_OFFSET				5937
4550 #define PSWRQ2_REG_TM_P_SIZE_RT_OFFSET					5938
4551 #define PSWRQ2_REG_QM_P_SIZE_RT_OFFSET					5939
4552 #define PSWRQ2_REG_SRC_P_SIZE_RT_OFFSET					5940
4553 #define PSWRQ2_REG_TSDM_P_SIZE_RT_OFFSET				5941
4554 #define PSWRQ2_REG_TM_FIRST_ILT_RT_OFFSET				5942
4555 #define PSWRQ2_REG_TM_LAST_ILT_RT_OFFSET				5943
4556 #define PSWRQ2_REG_QM_FIRST_ILT_RT_OFFSET				5944
4557 #define PSWRQ2_REG_QM_LAST_ILT_RT_OFFSET				5945
4558 #define PSWRQ2_REG_SRC_FIRST_ILT_RT_OFFSET				5946
4559 #define PSWRQ2_REG_SRC_LAST_ILT_RT_OFFSET				5947
4560 #define PSWRQ2_REG_CDUC_FIRST_ILT_RT_OFFSET				5948
4561 #define PSWRQ2_REG_CDUC_LAST_ILT_RT_OFFSET				5949
4562 #define PSWRQ2_REG_CDUT_FIRST_ILT_RT_OFFSET				5950
4563 #define PSWRQ2_REG_CDUT_LAST_ILT_RT_OFFSET				5951
4564 #define PSWRQ2_REG_TSDM_FIRST_ILT_RT_OFFSET				5952
4565 #define PSWRQ2_REG_TSDM_LAST_ILT_RT_OFFSET				5953
4566 #define PSWRQ2_REG_TM_NUMBER_OF_PF_BLOCKS_RT_OFFSET			5954
4567 #define PSWRQ2_REG_CDUT_NUMBER_OF_PF_BLOCKS_RT_OFFSET			5955
4568 #define PSWRQ2_REG_CDUC_NUMBER_OF_PF_BLOCKS_RT_OFFSET			5956
4569 #define PSWRQ2_REG_TM_VF_BLOCKS_RT_OFFSET				5957
4570 #define PSWRQ2_REG_CDUT_VF_BLOCKS_RT_OFFSET				5958
4571 #define PSWRQ2_REG_CDUC_VF_BLOCKS_RT_OFFSET				5959
4572 #define PSWRQ2_REG_TM_BLOCKS_FACTOR_RT_OFFSET				5960
4573 #define PSWRQ2_REG_CDUT_BLOCKS_FACTOR_RT_OFFSET				5961
4574 #define PSWRQ2_REG_CDUC_BLOCKS_FACTOR_RT_OFFSET				5962
4575 #define PSWRQ2_REG_VF_BASE_RT_OFFSET					5963
4576 #define PSWRQ2_REG_VF_LAST_ILT_RT_OFFSET				5964
4577 #define PSWRQ2_REG_DRAM_ALIGN_WR_RT_OFFSET				5965
4578 #define PSWRQ2_REG_DRAM_ALIGN_RD_RT_OFFSET				5966
4579 #define PSWRQ2_REG_ILT_MEMORY_RT_OFFSET					5967
4580 #define PSWRQ2_REG_ILT_MEMORY_RT_SIZE					22000
4581 #define PGLUE_REG_B_VF_BASE_RT_OFFSET					27967
4582 #define PGLUE_REG_B_MSDM_OFFSET_MASK_B_RT_OFFSET			27968
4583 #define PGLUE_REG_B_MSDM_VF_SHIFT_B_RT_OFFSET				27969
4584 #define PGLUE_REG_B_CACHE_LINE_SIZE_RT_OFFSET				27970
4585 #define PGLUE_REG_B_PF_BAR0_SIZE_RT_OFFSET				27971
4586 #define PGLUE_REG_B_PF_BAR1_SIZE_RT_OFFSET				27972
4587 #define PGLUE_REG_B_VF_BAR1_SIZE_RT_OFFSET				27973
4588 #define TM_REG_VF_ENABLE_CONN_RT_OFFSET					27974
4589 #define TM_REG_PF_ENABLE_CONN_RT_OFFSET					27975
4590 #define TM_REG_PF_ENABLE_TASK_RT_OFFSET					27976
4591 #define TM_REG_GROUP_SIZE_RESOLUTION_CONN_RT_OFFSET			27977
4592 #define TM_REG_GROUP_SIZE_RESOLUTION_TASK_RT_OFFSET			27978
4593 #define TM_REG_CONFIG_CONN_MEM_RT_OFFSET				27979
4594 #define TM_REG_CONFIG_CONN_MEM_RT_SIZE					416
4595 #define TM_REG_CONFIG_TASK_MEM_RT_OFFSET				28395
4596 #define TM_REG_CONFIG_TASK_MEM_RT_SIZE					512
4597 #define QM_REG_MAXPQSIZE_0_RT_OFFSET					28907
4598 #define QM_REG_MAXPQSIZE_1_RT_OFFSET					28908
4599 #define QM_REG_MAXPQSIZE_2_RT_OFFSET					28909
4600 #define QM_REG_MAXPQSIZETXSEL_0_RT_OFFSET				28910
4601 #define QM_REG_MAXPQSIZETXSEL_1_RT_OFFSET				28911
4602 #define QM_REG_MAXPQSIZETXSEL_2_RT_OFFSET				28912
4603 #define QM_REG_MAXPQSIZETXSEL_3_RT_OFFSET				28913
4604 #define QM_REG_MAXPQSIZETXSEL_4_RT_OFFSET				28914
4605 #define QM_REG_MAXPQSIZETXSEL_5_RT_OFFSET				28915
4606 #define QM_REG_MAXPQSIZETXSEL_6_RT_OFFSET				28916
4607 #define QM_REG_MAXPQSIZETXSEL_7_RT_OFFSET				28917
4608 #define QM_REG_MAXPQSIZETXSEL_8_RT_OFFSET				28918
4609 #define QM_REG_MAXPQSIZETXSEL_9_RT_OFFSET				28919
4610 #define QM_REG_MAXPQSIZETXSEL_10_RT_OFFSET				28920
4611 #define QM_REG_MAXPQSIZETXSEL_11_RT_OFFSET				28921
4612 #define QM_REG_MAXPQSIZETXSEL_12_RT_OFFSET				28922
4613 #define QM_REG_MAXPQSIZETXSEL_13_RT_OFFSET				28923
4614 #define QM_REG_MAXPQSIZETXSEL_14_RT_OFFSET				28924
4615 #define QM_REG_MAXPQSIZETXSEL_15_RT_OFFSET				28925
4616 #define QM_REG_MAXPQSIZETXSEL_16_RT_OFFSET				28926
4617 #define QM_REG_MAXPQSIZETXSEL_17_RT_OFFSET				28927
4618 #define QM_REG_MAXPQSIZETXSEL_18_RT_OFFSET				28928
4619 #define QM_REG_MAXPQSIZETXSEL_19_RT_OFFSET				28929
4620 #define QM_REG_MAXPQSIZETXSEL_20_RT_OFFSET				28930
4621 #define QM_REG_MAXPQSIZETXSEL_21_RT_OFFSET				28931
4622 #define QM_REG_MAXPQSIZETXSEL_22_RT_OFFSET				28932
4623 #define QM_REG_MAXPQSIZETXSEL_23_RT_OFFSET				28933
4624 #define QM_REG_MAXPQSIZETXSEL_24_RT_OFFSET				28934
4625 #define QM_REG_MAXPQSIZETXSEL_25_RT_OFFSET				28935
4626 #define QM_REG_MAXPQSIZETXSEL_26_RT_OFFSET				28936
4627 #define QM_REG_MAXPQSIZETXSEL_27_RT_OFFSET				28937
4628 #define QM_REG_MAXPQSIZETXSEL_28_RT_OFFSET				28938
4629 #define QM_REG_MAXPQSIZETXSEL_29_RT_OFFSET				28939
4630 #define QM_REG_MAXPQSIZETXSEL_30_RT_OFFSET				28940
4631 #define QM_REG_MAXPQSIZETXSEL_31_RT_OFFSET				28941
4632 #define QM_REG_MAXPQSIZETXSEL_32_RT_OFFSET				28942
4633 #define QM_REG_MAXPQSIZETXSEL_33_RT_OFFSET				28943
4634 #define QM_REG_MAXPQSIZETXSEL_34_RT_OFFSET				28944
4635 #define QM_REG_MAXPQSIZETXSEL_35_RT_OFFSET				28945
4636 #define QM_REG_MAXPQSIZETXSEL_36_RT_OFFSET				28946
4637 #define QM_REG_MAXPQSIZETXSEL_37_RT_OFFSET				28947
4638 #define QM_REG_MAXPQSIZETXSEL_38_RT_OFFSET				28948
4639 #define QM_REG_MAXPQSIZETXSEL_39_RT_OFFSET				28949
4640 #define QM_REG_MAXPQSIZETXSEL_40_RT_OFFSET				28950
4641 #define QM_REG_MAXPQSIZETXSEL_41_RT_OFFSET				28951
4642 #define QM_REG_MAXPQSIZETXSEL_42_RT_OFFSET				28952
4643 #define QM_REG_MAXPQSIZETXSEL_43_RT_OFFSET				28953
4644 #define QM_REG_MAXPQSIZETXSEL_44_RT_OFFSET				28954
4645 #define QM_REG_MAXPQSIZETXSEL_45_RT_OFFSET				28955
4646 #define QM_REG_MAXPQSIZETXSEL_46_RT_OFFSET				28956
4647 #define QM_REG_MAXPQSIZETXSEL_47_RT_OFFSET				28957
4648 #define QM_REG_MAXPQSIZETXSEL_48_RT_OFFSET				28958
4649 #define QM_REG_MAXPQSIZETXSEL_49_RT_OFFSET				28959
4650 #define QM_REG_MAXPQSIZETXSEL_50_RT_OFFSET				28960
4651 #define QM_REG_MAXPQSIZETXSEL_51_RT_OFFSET				28961
4652 #define QM_REG_MAXPQSIZETXSEL_52_RT_OFFSET				28962
4653 #define QM_REG_MAXPQSIZETXSEL_53_RT_OFFSET				28963
4654 #define QM_REG_MAXPQSIZETXSEL_54_RT_OFFSET				28964
4655 #define QM_REG_MAXPQSIZETXSEL_55_RT_OFFSET				28965
4656 #define QM_REG_MAXPQSIZETXSEL_56_RT_OFFSET				28966
4657 #define QM_REG_MAXPQSIZETXSEL_57_RT_OFFSET				28967
4658 #define QM_REG_MAXPQSIZETXSEL_58_RT_OFFSET				28968
4659 #define QM_REG_MAXPQSIZETXSEL_59_RT_OFFSET				28969
4660 #define QM_REG_MAXPQSIZETXSEL_60_RT_OFFSET				28970
4661 #define QM_REG_MAXPQSIZETXSEL_61_RT_OFFSET				28971
4662 #define QM_REG_MAXPQSIZETXSEL_62_RT_OFFSET				28972
4663 #define QM_REG_MAXPQSIZETXSEL_63_RT_OFFSET				28973
4664 #define QM_REG_BASEADDROTHERPQ_RT_OFFSET				28974
4665 #define QM_REG_BASEADDROTHERPQ_RT_SIZE					128
4666 #define QM_REG_PTRTBLOTHER_RT_OFFSET					29102
4667 #define QM_REG_PTRTBLOTHER_RT_SIZE					256
4668 #define QM_REG_VOQCRDLINE_RT_OFFSET					29358
4669 #define QM_REG_VOQCRDLINE_RT_SIZE					20
4670 #define QM_REG_VOQINITCRDLINE_RT_OFFSET					29378
4671 #define QM_REG_VOQINITCRDLINE_RT_SIZE					20
4672 #define QM_REG_AFULLQMBYPTHRPFWFQ_RT_OFFSET				29398
4673 #define QM_REG_AFULLQMBYPTHRVPWFQ_RT_OFFSET				29399
4674 #define QM_REG_AFULLQMBYPTHRPFRL_RT_OFFSET				29400
4675 #define QM_REG_AFULLQMBYPTHRGLBLRL_RT_OFFSET				29401
4676 #define QM_REG_AFULLOPRTNSTCCRDMASK_RT_OFFSET				29402
4677 #define QM_REG_WRROTHERPQGRP_0_RT_OFFSET				29403
4678 #define QM_REG_WRROTHERPQGRP_1_RT_OFFSET				29404
4679 #define QM_REG_WRROTHERPQGRP_2_RT_OFFSET				29405
4680 #define QM_REG_WRROTHERPQGRP_3_RT_OFFSET				29406
4681 #define QM_REG_WRROTHERPQGRP_4_RT_OFFSET				29407
4682 #define QM_REG_WRROTHERPQGRP_5_RT_OFFSET				29408
4683 #define QM_REG_WRROTHERPQGRP_6_RT_OFFSET				29409
4684 #define QM_REG_WRROTHERPQGRP_7_RT_OFFSET				29410
4685 #define QM_REG_WRROTHERPQGRP_8_RT_OFFSET				29411
4686 #define QM_REG_WRROTHERPQGRP_9_RT_OFFSET				29412
4687 #define QM_REG_WRROTHERPQGRP_10_RT_OFFSET				29413
4688 #define QM_REG_WRROTHERPQGRP_11_RT_OFFSET				29414
4689 #define QM_REG_WRROTHERPQGRP_12_RT_OFFSET				29415
4690 #define QM_REG_WRROTHERPQGRP_13_RT_OFFSET				29416
4691 #define QM_REG_WRROTHERPQGRP_14_RT_OFFSET				29417
4692 #define QM_REG_WRROTHERPQGRP_15_RT_OFFSET				29418
4693 #define QM_REG_WRROTHERGRPWEIGHT_0_RT_OFFSET				29419
4694 #define QM_REG_WRROTHERGRPWEIGHT_1_RT_OFFSET				29420
4695 #define QM_REG_WRROTHERGRPWEIGHT_2_RT_OFFSET				29421
4696 #define QM_REG_WRROTHERGRPWEIGHT_3_RT_OFFSET				29422
4697 #define QM_REG_WRRTXGRPWEIGHT_0_RT_OFFSET				29423
4698 #define QM_REG_WRRTXGRPWEIGHT_1_RT_OFFSET				29424
4699 #define QM_REG_PQTX2PF_0_RT_OFFSET					29425
4700 #define QM_REG_PQTX2PF_1_RT_OFFSET					29426
4701 #define QM_REG_PQTX2PF_2_RT_OFFSET					29427
4702 #define QM_REG_PQTX2PF_3_RT_OFFSET					29428
4703 #define QM_REG_PQTX2PF_4_RT_OFFSET					29429
4704 #define QM_REG_PQTX2PF_5_RT_OFFSET					29430
4705 #define QM_REG_PQTX2PF_6_RT_OFFSET					29431
4706 #define QM_REG_PQTX2PF_7_RT_OFFSET					29432
4707 #define QM_REG_PQTX2PF_8_RT_OFFSET					29433
4708 #define QM_REG_PQTX2PF_9_RT_OFFSET					29434
4709 #define QM_REG_PQTX2PF_10_RT_OFFSET					29435
4710 #define QM_REG_PQTX2PF_11_RT_OFFSET					29436
4711 #define QM_REG_PQTX2PF_12_RT_OFFSET					29437
4712 #define QM_REG_PQTX2PF_13_RT_OFFSET					29438
4713 #define QM_REG_PQTX2PF_14_RT_OFFSET					29439
4714 #define QM_REG_PQTX2PF_15_RT_OFFSET					29440
4715 #define QM_REG_PQTX2PF_16_RT_OFFSET					29441
4716 #define QM_REG_PQTX2PF_17_RT_OFFSET					29442
4717 #define QM_REG_PQTX2PF_18_RT_OFFSET					29443
4718 #define QM_REG_PQTX2PF_19_RT_OFFSET					29444
4719 #define QM_REG_PQTX2PF_20_RT_OFFSET					29445
4720 #define QM_REG_PQTX2PF_21_RT_OFFSET					29446
4721 #define QM_REG_PQTX2PF_22_RT_OFFSET					29447
4722 #define QM_REG_PQTX2PF_23_RT_OFFSET					29448
4723 #define QM_REG_PQTX2PF_24_RT_OFFSET					29449
4724 #define QM_REG_PQTX2PF_25_RT_OFFSET					29450
4725 #define QM_REG_PQTX2PF_26_RT_OFFSET					29451
4726 #define QM_REG_PQTX2PF_27_RT_OFFSET					29452
4727 #define QM_REG_PQTX2PF_28_RT_OFFSET					29453
4728 #define QM_REG_PQTX2PF_29_RT_OFFSET					29454
4729 #define QM_REG_PQTX2PF_30_RT_OFFSET					29455
4730 #define QM_REG_PQTX2PF_31_RT_OFFSET					29456
4731 #define QM_REG_PQTX2PF_32_RT_OFFSET					29457
4732 #define QM_REG_PQTX2PF_33_RT_OFFSET					29458
4733 #define QM_REG_PQTX2PF_34_RT_OFFSET					29459
4734 #define QM_REG_PQTX2PF_35_RT_OFFSET					29460
4735 #define QM_REG_PQTX2PF_36_RT_OFFSET					29461
4736 #define QM_REG_PQTX2PF_37_RT_OFFSET					29462
4737 #define QM_REG_PQTX2PF_38_RT_OFFSET					29463
4738 #define QM_REG_PQTX2PF_39_RT_OFFSET					29464
4739 #define QM_REG_PQTX2PF_40_RT_OFFSET					29465
4740 #define QM_REG_PQTX2PF_41_RT_OFFSET					29466
4741 #define QM_REG_PQTX2PF_42_RT_OFFSET					29467
4742 #define QM_REG_PQTX2PF_43_RT_OFFSET					29468
4743 #define QM_REG_PQTX2PF_44_RT_OFFSET					29469
4744 #define QM_REG_PQTX2PF_45_RT_OFFSET					29470
4745 #define QM_REG_PQTX2PF_46_RT_OFFSET					29471
4746 #define QM_REG_PQTX2PF_47_RT_OFFSET					29472
4747 #define QM_REG_PQTX2PF_48_RT_OFFSET					29473
4748 #define QM_REG_PQTX2PF_49_RT_OFFSET					29474
4749 #define QM_REG_PQTX2PF_50_RT_OFFSET					29475
4750 #define QM_REG_PQTX2PF_51_RT_OFFSET					29476
4751 #define QM_REG_PQTX2PF_52_RT_OFFSET					29477
4752 #define QM_REG_PQTX2PF_53_RT_OFFSET					29478
4753 #define QM_REG_PQTX2PF_54_RT_OFFSET					29479
4754 #define QM_REG_PQTX2PF_55_RT_OFFSET					29480
4755 #define QM_REG_PQTX2PF_56_RT_OFFSET					29481
4756 #define QM_REG_PQTX2PF_57_RT_OFFSET					29482
4757 #define QM_REG_PQTX2PF_58_RT_OFFSET					29483
4758 #define QM_REG_PQTX2PF_59_RT_OFFSET					29484
4759 #define QM_REG_PQTX2PF_60_RT_OFFSET					29485
4760 #define QM_REG_PQTX2PF_61_RT_OFFSET					29486
4761 #define QM_REG_PQTX2PF_62_RT_OFFSET					29487
4762 #define QM_REG_PQTX2PF_63_RT_OFFSET					29488
4763 #define QM_REG_PQOTHER2PF_0_RT_OFFSET					29489
4764 #define QM_REG_PQOTHER2PF_1_RT_OFFSET					29490
4765 #define QM_REG_PQOTHER2PF_2_RT_OFFSET					29491
4766 #define QM_REG_PQOTHER2PF_3_RT_OFFSET					29492
4767 #define QM_REG_PQOTHER2PF_4_RT_OFFSET					29493
4768 #define QM_REG_PQOTHER2PF_5_RT_OFFSET					29494
4769 #define QM_REG_PQOTHER2PF_6_RT_OFFSET					29495
4770 #define QM_REG_PQOTHER2PF_7_RT_OFFSET					29496
4771 #define QM_REG_PQOTHER2PF_8_RT_OFFSET					29497
4772 #define QM_REG_PQOTHER2PF_9_RT_OFFSET					29498
4773 #define QM_REG_PQOTHER2PF_10_RT_OFFSET					29499
4774 #define QM_REG_PQOTHER2PF_11_RT_OFFSET					29500
4775 #define QM_REG_PQOTHER2PF_12_RT_OFFSET					29501
4776 #define QM_REG_PQOTHER2PF_13_RT_OFFSET					29502
4777 #define QM_REG_PQOTHER2PF_14_RT_OFFSET					29503
4778 #define QM_REG_PQOTHER2PF_15_RT_OFFSET					29504
4779 #define QM_REG_RLGLBLPERIOD_0_RT_OFFSET					29505
4780 #define QM_REG_RLGLBLPERIOD_1_RT_OFFSET					29506
4781 #define QM_REG_RLGLBLPERIODTIMER_0_RT_OFFSET				29507
4782 #define QM_REG_RLGLBLPERIODTIMER_1_RT_OFFSET				29508
4783 #define QM_REG_RLGLBLPERIODSEL_0_RT_OFFSET				29509
4784 #define QM_REG_RLGLBLPERIODSEL_1_RT_OFFSET				29510
4785 #define QM_REG_RLGLBLPERIODSEL_2_RT_OFFSET				29511
4786 #define QM_REG_RLGLBLPERIODSEL_3_RT_OFFSET				29512
4787 #define QM_REG_RLGLBLPERIODSEL_4_RT_OFFSET				29513
4788 #define QM_REG_RLGLBLPERIODSEL_5_RT_OFFSET				29514
4789 #define QM_REG_RLGLBLPERIODSEL_6_RT_OFFSET				29515
4790 #define QM_REG_RLGLBLPERIODSEL_7_RT_OFFSET				29516
4791 #define QM_REG_RLGLBLINCVAL_RT_OFFSET					29517
4792 #define QM_REG_RLGLBLINCVAL_RT_SIZE					256
4793 #define QM_REG_RLGLBLUPPERBOUND_RT_OFFSET				29773
4794 #define QM_REG_RLGLBLUPPERBOUND_RT_SIZE					256
4795 #define QM_REG_RLGLBLCRD_RT_OFFSET					30029
4796 #define QM_REG_RLGLBLCRD_RT_SIZE					256
4797 #define QM_REG_RLGLBLENABLE_RT_OFFSET					30285
4798 #define QM_REG_RLPFPERIOD_RT_OFFSET					30286
4799 #define QM_REG_RLPFPERIODTIMER_RT_OFFSET				30287
4800 #define QM_REG_RLPFINCVAL_RT_OFFSET					30288
4801 #define QM_REG_RLPFINCVAL_RT_SIZE					16
4802 #define QM_REG_RLPFUPPERBOUND_RT_OFFSET					30304
4803 #define QM_REG_RLPFUPPERBOUND_RT_SIZE					16
4804 #define QM_REG_RLPFCRD_RT_OFFSET					30320
4805 #define QM_REG_RLPFCRD_RT_SIZE						16
4806 #define QM_REG_RLPFENABLE_RT_OFFSET					30336
4807 #define QM_REG_RLPFVOQENABLE_RT_OFFSET					30337
4808 #define QM_REG_WFQPFWEIGHT_RT_OFFSET					30338
4809 #define QM_REG_WFQPFWEIGHT_RT_SIZE					16
4810 #define QM_REG_WFQPFUPPERBOUND_RT_OFFSET				30354
4811 #define QM_REG_WFQPFUPPERBOUND_RT_SIZE					16
4812 #define QM_REG_WFQPFCRD_RT_OFFSET					30370
4813 #define QM_REG_WFQPFCRD_RT_SIZE						160
4814 #define QM_REG_WFQPFENABLE_RT_OFFSET					30530
4815 #define QM_REG_WFQVPENABLE_RT_OFFSET					30531
4816 #define QM_REG_BASEADDRTXPQ_RT_OFFSET					30532
4817 #define QM_REG_BASEADDRTXPQ_RT_SIZE					512
4818 #define QM_REG_TXPQMAP_RT_OFFSET					31044
4819 #define QM_REG_TXPQMAP_RT_SIZE						512
4820 #define QM_REG_WFQVPWEIGHT_RT_OFFSET					31556
4821 #define QM_REG_WFQVPWEIGHT_RT_SIZE					512
4822 #define QM_REG_WFQVPCRD_RT_OFFSET					32068
4823 #define QM_REG_WFQVPCRD_RT_SIZE						512
4824 #define QM_REG_WFQVPMAP_RT_OFFSET					32580
4825 #define QM_REG_WFQVPMAP_RT_SIZE						512
4826 #define QM_REG_PTRTBLTX_RT_OFFSET					33092
4827 #define QM_REG_PTRTBLTX_RT_SIZE						1024
4828 #define QM_REG_WFQPFCRD_MSB_RT_OFFSET					34116
4829 #define QM_REG_WFQPFCRD_MSB_RT_SIZE					160
4830 #define NIG_REG_TAG_ETHERTYPE_0_RT_OFFSET				34276
4831 #define NIG_REG_BRB_GATE_DNTFWD_PORT_RT_OFFSET				34277
4832 #define NIG_REG_OUTER_TAG_VALUE_LIST0_RT_OFFSET				34278
4833 #define NIG_REG_OUTER_TAG_VALUE_LIST1_RT_OFFSET				34279
4834 #define NIG_REG_OUTER_TAG_VALUE_LIST2_RT_OFFSET				34280
4835 #define NIG_REG_OUTER_TAG_VALUE_LIST3_RT_OFFSET				34281
4836 #define NIG_REG_LLH_FUNC_TAGMAC_CLS_TYPE_RT_OFFSET			34282
4837 #define NIG_REG_LLH_FUNC_TAG_EN_RT_OFFSET				34283
4838 #define NIG_REG_LLH_FUNC_TAG_EN_RT_SIZE					4
4839 #define NIG_REG_LLH_FUNC_TAG_VALUE_RT_OFFSET				34287
4840 #define NIG_REG_LLH_FUNC_TAG_VALUE_RT_SIZE				4
4841 #define NIG_REG_LLH_FUNC_FILTER_VALUE_RT_OFFSET				34291
4842 #define NIG_REG_LLH_FUNC_FILTER_VALUE_RT_SIZE				32
4843 #define NIG_REG_LLH_FUNC_FILTER_EN_RT_OFFSET				34323
4844 #define NIG_REG_LLH_FUNC_FILTER_EN_RT_SIZE				16
4845 #define NIG_REG_LLH_FUNC_FILTER_MODE_RT_OFFSET				34339
4846 #define NIG_REG_LLH_FUNC_FILTER_MODE_RT_SIZE				16
4847 #define NIG_REG_LLH_FUNC_FILTER_PROTOCOL_TYPE_RT_OFFSET			34355
4848 #define NIG_REG_LLH_FUNC_FILTER_PROTOCOL_TYPE_RT_SIZE			16
4849 #define NIG_REG_LLH_FUNC_FILTER_HDR_SEL_RT_OFFSET			34371
4850 #define NIG_REG_LLH_FUNC_FILTER_HDR_SEL_RT_SIZE				16
4851 #define NIG_REG_TX_EDPM_CTRL_RT_OFFSET					34387
4852 #define NIG_REG_PPF_TO_ENGINE_SEL_RT_OFFSET				34388
4853 #define NIG_REG_PPF_TO_ENGINE_SEL_RT_SIZE				8
4854 #define CDU_REG_CID_ADDR_PARAMS_RT_OFFSET				34396
4855 #define CDU_REG_SEGMENT0_PARAMS_RT_OFFSET				34397
4856 #define CDU_REG_SEGMENT1_PARAMS_RT_OFFSET				34398
4857 #define CDU_REG_PF_SEG0_TYPE_OFFSET_RT_OFFSET				34399
4858 #define CDU_REG_PF_SEG1_TYPE_OFFSET_RT_OFFSET				34400
4859 #define CDU_REG_PF_SEG2_TYPE_OFFSET_RT_OFFSET				34401
4860 #define CDU_REG_PF_SEG3_TYPE_OFFSET_RT_OFFSET				34402
4861 #define CDU_REG_PF_FL_SEG0_TYPE_OFFSET_RT_OFFSET			34403
4862 #define CDU_REG_PF_FL_SEG1_TYPE_OFFSET_RT_OFFSET			34404
4863 #define CDU_REG_PF_FL_SEG2_TYPE_OFFSET_RT_OFFSET			34405
4864 #define CDU_REG_PF_FL_SEG3_TYPE_OFFSET_RT_OFFSET			34406
4865 #define CDU_REG_VF_SEG_TYPE_OFFSET_RT_OFFSET				34407
4866 #define CDU_REG_VF_FL_SEG_TYPE_OFFSET_RT_OFFSET				34408
4867 #define PBF_REG_TAG_ETHERTYPE_0_RT_OFFSET				34409
4868 #define PBF_REG_BTB_SHARED_AREA_SIZE_RT_OFFSET				34410
4869 #define PBF_REG_YCMD_QS_NUM_LINES_VOQ0_RT_OFFSET			34411
4870 #define PBF_REG_BTB_GUARANTEED_VOQ0_RT_OFFSET				34412
4871 #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ0_RT_OFFSET			34413
4872 #define PBF_REG_YCMD_QS_NUM_LINES_VOQ1_RT_OFFSET			34414
4873 #define PBF_REG_BTB_GUARANTEED_VOQ1_RT_OFFSET				34415
4874 #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ1_RT_OFFSET			34416
4875 #define PBF_REG_YCMD_QS_NUM_LINES_VOQ2_RT_OFFSET			34417
4876 #define PBF_REG_BTB_GUARANTEED_VOQ2_RT_OFFSET				34418
4877 #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ2_RT_OFFSET			34419
4878 #define PBF_REG_YCMD_QS_NUM_LINES_VOQ3_RT_OFFSET			34420
4879 #define PBF_REG_BTB_GUARANTEED_VOQ3_RT_OFFSET				34421
4880 #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ3_RT_OFFSET			34422
4881 #define PBF_REG_YCMD_QS_NUM_LINES_VOQ4_RT_OFFSET			34423
4882 #define PBF_REG_BTB_GUARANTEED_VOQ4_RT_OFFSET				34424
4883 #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ4_RT_OFFSET			34425
4884 #define PBF_REG_YCMD_QS_NUM_LINES_VOQ5_RT_OFFSET			34426
4885 #define PBF_REG_BTB_GUARANTEED_VOQ5_RT_OFFSET				34427
4886 #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ5_RT_OFFSET			34428
4887 #define PBF_REG_YCMD_QS_NUM_LINES_VOQ6_RT_OFFSET			34429
4888 #define PBF_REG_BTB_GUARANTEED_VOQ6_RT_OFFSET				34430
4889 #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ6_RT_OFFSET			34431
4890 #define PBF_REG_YCMD_QS_NUM_LINES_VOQ7_RT_OFFSET			34432
4891 #define PBF_REG_BTB_GUARANTEED_VOQ7_RT_OFFSET				34433
4892 #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ7_RT_OFFSET			34434
4893 #define PBF_REG_YCMD_QS_NUM_LINES_VOQ8_RT_OFFSET			34435
4894 #define PBF_REG_BTB_GUARANTEED_VOQ8_RT_OFFSET				34436
4895 #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ8_RT_OFFSET			34437
4896 #define PBF_REG_YCMD_QS_NUM_LINES_VOQ9_RT_OFFSET			34438
4897 #define PBF_REG_BTB_GUARANTEED_VOQ9_RT_OFFSET				34439
4898 #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ9_RT_OFFSET			34440
4899 #define PBF_REG_YCMD_QS_NUM_LINES_VOQ10_RT_OFFSET			34441
4900 #define PBF_REG_BTB_GUARANTEED_VOQ10_RT_OFFSET				34442
4901 #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ10_RT_OFFSET			34443
4902 #define PBF_REG_YCMD_QS_NUM_LINES_VOQ11_RT_OFFSET			34444
4903 #define PBF_REG_BTB_GUARANTEED_VOQ11_RT_OFFSET				34445
4904 #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ11_RT_OFFSET			34446
4905 #define PBF_REG_YCMD_QS_NUM_LINES_VOQ12_RT_OFFSET			34447
4906 #define PBF_REG_BTB_GUARANTEED_VOQ12_RT_OFFSET				34448
4907 #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ12_RT_OFFSET			34449
4908 #define PBF_REG_YCMD_QS_NUM_LINES_VOQ13_RT_OFFSET			34450
4909 #define PBF_REG_BTB_GUARANTEED_VOQ13_RT_OFFSET				34451
4910 #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ13_RT_OFFSET			34452
4911 #define PBF_REG_YCMD_QS_NUM_LINES_VOQ14_RT_OFFSET			34453
4912 #define PBF_REG_BTB_GUARANTEED_VOQ14_RT_OFFSET				34454
4913 #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ14_RT_OFFSET			34455
4914 #define PBF_REG_YCMD_QS_NUM_LINES_VOQ15_RT_OFFSET			34456
4915 #define PBF_REG_BTB_GUARANTEED_VOQ15_RT_OFFSET				34457
4916 #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ15_RT_OFFSET			34458
4917 #define PBF_REG_YCMD_QS_NUM_LINES_VOQ16_RT_OFFSET			34459
4918 #define PBF_REG_BTB_GUARANTEED_VOQ16_RT_OFFSET				34460
4919 #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ16_RT_OFFSET			34461
4920 #define PBF_REG_YCMD_QS_NUM_LINES_VOQ17_RT_OFFSET			34462
4921 #define PBF_REG_BTB_GUARANTEED_VOQ17_RT_OFFSET				34463
4922 #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ17_RT_OFFSET			34464
4923 #define PBF_REG_YCMD_QS_NUM_LINES_VOQ18_RT_OFFSET			34465
4924 #define PBF_REG_BTB_GUARANTEED_VOQ18_RT_OFFSET				34466
4925 #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ18_RT_OFFSET			34467
4926 #define PBF_REG_YCMD_QS_NUM_LINES_VOQ19_RT_OFFSET			34468
4927 #define PBF_REG_BTB_GUARANTEED_VOQ19_RT_OFFSET				34469
4928 #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ19_RT_OFFSET			34470
4929 #define XCM_REG_CON_PHY_Q3_RT_OFFSET					34471
4930 
4931 #define RUNTIME_ARRAY_SIZE 34472
4932 
4933 /* Init Callbacks */
4934 #define DMAE_READY_CB	0
4935 
4936 /* The eth storm context for the Tstorm */
4937 struct tstorm_eth_conn_st_ctx {
4938 	__le32 reserved[4];
4939 };
4940 
4941 /* The eth storm context for the Pstorm */
4942 struct pstorm_eth_conn_st_ctx {
4943 	__le32 reserved[8];
4944 };
4945 
4946 /* The eth storm context for the Xstorm */
4947 struct xstorm_eth_conn_st_ctx {
4948 	__le32 reserved[60];
4949 };
4950 
4951 struct e4_xstorm_eth_conn_ag_ctx {
4952 	u8 reserved0;
4953 	u8 state;
4954 	u8 flags0;
4955 #define E4_XSTORM_ETH_CONN_AG_CTX_EXIST_IN_QM0_MASK	0x1
4956 #define E4_XSTORM_ETH_CONN_AG_CTX_EXIST_IN_QM0_SHIFT	0
4957 #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED1_MASK	0x1
4958 #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED1_SHIFT	1
4959 #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED2_MASK	0x1
4960 #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED2_SHIFT	2
4961 #define E4_XSTORM_ETH_CONN_AG_CTX_EXIST_IN_QM3_MASK	0x1
4962 #define E4_XSTORM_ETH_CONN_AG_CTX_EXIST_IN_QM3_SHIFT	3
4963 #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED3_MASK	0x1
4964 #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED3_SHIFT	4
4965 #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED4_MASK	0x1
4966 #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED4_SHIFT	5
4967 #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED5_MASK	0x1
4968 #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED5_SHIFT	6
4969 #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED6_MASK	0x1
4970 #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED6_SHIFT	7
4971 		u8 flags1;
4972 #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED7_MASK	0x1
4973 #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED7_SHIFT	0
4974 #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED8_MASK	0x1
4975 #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED8_SHIFT	1
4976 #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED9_MASK	0x1
4977 #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED9_SHIFT	2
4978 #define E4_XSTORM_ETH_CONN_AG_CTX_BIT11_MASK		0x1
4979 #define E4_XSTORM_ETH_CONN_AG_CTX_BIT11_SHIFT		3
4980 #define E4_XSTORM_ETH_CONN_AG_CTX_E5_RESERVED2_MASK	0x1
4981 #define E4_XSTORM_ETH_CONN_AG_CTX_E5_RESERVED2_SHIFT	4
4982 #define E4_XSTORM_ETH_CONN_AG_CTX_E5_RESERVED3_MASK	0x1
4983 #define E4_XSTORM_ETH_CONN_AG_CTX_E5_RESERVED3_SHIFT	5
4984 #define E4_XSTORM_ETH_CONN_AG_CTX_TX_RULE_ACTIVE_MASK	0x1
4985 #define E4_XSTORM_ETH_CONN_AG_CTX_TX_RULE_ACTIVE_SHIFT	6
4986 #define E4_XSTORM_ETH_CONN_AG_CTX_DQ_CF_ACTIVE_MASK	0x1
4987 #define E4_XSTORM_ETH_CONN_AG_CTX_DQ_CF_ACTIVE_SHIFT	7
4988 	u8 flags2;
4989 #define E4_XSTORM_ETH_CONN_AG_CTX_CF0_MASK	0x3
4990 #define E4_XSTORM_ETH_CONN_AG_CTX_CF0_SHIFT	0
4991 #define E4_XSTORM_ETH_CONN_AG_CTX_CF1_MASK	0x3
4992 #define E4_XSTORM_ETH_CONN_AG_CTX_CF1_SHIFT	2
4993 #define E4_XSTORM_ETH_CONN_AG_CTX_CF2_MASK	0x3
4994 #define E4_XSTORM_ETH_CONN_AG_CTX_CF2_SHIFT	4
4995 #define E4_XSTORM_ETH_CONN_AG_CTX_CF3_MASK	0x3
4996 #define E4_XSTORM_ETH_CONN_AG_CTX_CF3_SHIFT	6
4997 	u8 flags3;
4998 #define E4_XSTORM_ETH_CONN_AG_CTX_CF4_MASK	0x3
4999 #define E4_XSTORM_ETH_CONN_AG_CTX_CF4_SHIFT	0
5000 #define E4_XSTORM_ETH_CONN_AG_CTX_CF5_MASK	0x3
5001 #define E4_XSTORM_ETH_CONN_AG_CTX_CF5_SHIFT	2
5002 #define E4_XSTORM_ETH_CONN_AG_CTX_CF6_MASK	0x3
5003 #define E4_XSTORM_ETH_CONN_AG_CTX_CF6_SHIFT	4
5004 #define E4_XSTORM_ETH_CONN_AG_CTX_CF7_MASK	0x3
5005 #define E4_XSTORM_ETH_CONN_AG_CTX_CF7_SHIFT	6
5006 		u8 flags4;
5007 #define E4_XSTORM_ETH_CONN_AG_CTX_CF8_MASK	0x3
5008 #define E4_XSTORM_ETH_CONN_AG_CTX_CF8_SHIFT	0
5009 #define E4_XSTORM_ETH_CONN_AG_CTX_CF9_MASK	0x3
5010 #define E4_XSTORM_ETH_CONN_AG_CTX_CF9_SHIFT	2
5011 #define E4_XSTORM_ETH_CONN_AG_CTX_CF10_MASK	0x3
5012 #define E4_XSTORM_ETH_CONN_AG_CTX_CF10_SHIFT	4
5013 #define E4_XSTORM_ETH_CONN_AG_CTX_CF11_MASK	0x3
5014 #define E4_XSTORM_ETH_CONN_AG_CTX_CF11_SHIFT	6
5015 	u8 flags5;
5016 #define E4_XSTORM_ETH_CONN_AG_CTX_CF12_MASK	0x3
5017 #define E4_XSTORM_ETH_CONN_AG_CTX_CF12_SHIFT	0
5018 #define E4_XSTORM_ETH_CONN_AG_CTX_CF13_MASK	0x3
5019 #define E4_XSTORM_ETH_CONN_AG_CTX_CF13_SHIFT	2
5020 #define E4_XSTORM_ETH_CONN_AG_CTX_CF14_MASK	0x3
5021 #define E4_XSTORM_ETH_CONN_AG_CTX_CF14_SHIFT	4
5022 #define E4_XSTORM_ETH_CONN_AG_CTX_CF15_MASK	0x3
5023 #define E4_XSTORM_ETH_CONN_AG_CTX_CF15_SHIFT	6
5024 	u8 flags6;
5025 #define E4_XSTORM_ETH_CONN_AG_CTX_GO_TO_BD_CONS_CF_MASK		0x3
5026 #define E4_XSTORM_ETH_CONN_AG_CTX_GO_TO_BD_CONS_CF_SHIFT	0
5027 #define E4_XSTORM_ETH_CONN_AG_CTX_MULTI_UNICAST_CF_MASK		0x3
5028 #define E4_XSTORM_ETH_CONN_AG_CTX_MULTI_UNICAST_CF_SHIFT	2
5029 #define E4_XSTORM_ETH_CONN_AG_CTX_DQ_CF_MASK			0x3
5030 #define E4_XSTORM_ETH_CONN_AG_CTX_DQ_CF_SHIFT			4
5031 #define E4_XSTORM_ETH_CONN_AG_CTX_TERMINATE_CF_MASK		0x3
5032 #define E4_XSTORM_ETH_CONN_AG_CTX_TERMINATE_CF_SHIFT		6
5033 	u8 flags7;
5034 #define E4_XSTORM_ETH_CONN_AG_CTX_FLUSH_Q0_MASK		0x3
5035 #define E4_XSTORM_ETH_CONN_AG_CTX_FLUSH_Q0_SHIFT	0
5036 #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED10_MASK	0x3
5037 #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED10_SHIFT	2
5038 #define E4_XSTORM_ETH_CONN_AG_CTX_SLOW_PATH_MASK	0x3
5039 #define E4_XSTORM_ETH_CONN_AG_CTX_SLOW_PATH_SHIFT	4
5040 #define E4_XSTORM_ETH_CONN_AG_CTX_CF0EN_MASK		0x1
5041 #define E4_XSTORM_ETH_CONN_AG_CTX_CF0EN_SHIFT		6
5042 #define E4_XSTORM_ETH_CONN_AG_CTX_CF1EN_MASK		0x1
5043 #define E4_XSTORM_ETH_CONN_AG_CTX_CF1EN_SHIFT		7
5044 	u8 flags8;
5045 #define E4_XSTORM_ETH_CONN_AG_CTX_CF2EN_MASK	0x1
5046 #define E4_XSTORM_ETH_CONN_AG_CTX_CF2EN_SHIFT	0
5047 #define E4_XSTORM_ETH_CONN_AG_CTX_CF3EN_MASK	0x1
5048 #define E4_XSTORM_ETH_CONN_AG_CTX_CF3EN_SHIFT	1
5049 #define E4_XSTORM_ETH_CONN_AG_CTX_CF4EN_MASK	0x1
5050 #define E4_XSTORM_ETH_CONN_AG_CTX_CF4EN_SHIFT	2
5051 #define E4_XSTORM_ETH_CONN_AG_CTX_CF5EN_MASK	0x1
5052 #define E4_XSTORM_ETH_CONN_AG_CTX_CF5EN_SHIFT	3
5053 #define E4_XSTORM_ETH_CONN_AG_CTX_CF6EN_MASK	0x1
5054 #define E4_XSTORM_ETH_CONN_AG_CTX_CF6EN_SHIFT	4
5055 #define E4_XSTORM_ETH_CONN_AG_CTX_CF7EN_MASK	0x1
5056 #define E4_XSTORM_ETH_CONN_AG_CTX_CF7EN_SHIFT	5
5057 #define E4_XSTORM_ETH_CONN_AG_CTX_CF8EN_MASK	0x1
5058 #define E4_XSTORM_ETH_CONN_AG_CTX_CF8EN_SHIFT	6
5059 #define E4_XSTORM_ETH_CONN_AG_CTX_CF9EN_MASK	0x1
5060 #define E4_XSTORM_ETH_CONN_AG_CTX_CF9EN_SHIFT	7
5061 	u8 flags9;
5062 #define E4_XSTORM_ETH_CONN_AG_CTX_CF10EN_MASK			0x1
5063 #define E4_XSTORM_ETH_CONN_AG_CTX_CF10EN_SHIFT			0
5064 #define E4_XSTORM_ETH_CONN_AG_CTX_CF11EN_MASK			0x1
5065 #define E4_XSTORM_ETH_CONN_AG_CTX_CF11EN_SHIFT			1
5066 #define E4_XSTORM_ETH_CONN_AG_CTX_CF12EN_MASK			0x1
5067 #define E4_XSTORM_ETH_CONN_AG_CTX_CF12EN_SHIFT			2
5068 #define E4_XSTORM_ETH_CONN_AG_CTX_CF13EN_MASK			0x1
5069 #define E4_XSTORM_ETH_CONN_AG_CTX_CF13EN_SHIFT			3
5070 #define E4_XSTORM_ETH_CONN_AG_CTX_CF14EN_MASK			0x1
5071 #define E4_XSTORM_ETH_CONN_AG_CTX_CF14EN_SHIFT			4
5072 #define E4_XSTORM_ETH_CONN_AG_CTX_CF15EN_MASK			0x1
5073 #define E4_XSTORM_ETH_CONN_AG_CTX_CF15EN_SHIFT			5
5074 #define E4_XSTORM_ETH_CONN_AG_CTX_GO_TO_BD_CONS_CF_EN_MASK	0x1
5075 #define E4_XSTORM_ETH_CONN_AG_CTX_GO_TO_BD_CONS_CF_EN_SHIFT	6
5076 #define E4_XSTORM_ETH_CONN_AG_CTX_MULTI_UNICAST_CF_EN_MASK	0x1
5077 #define E4_XSTORM_ETH_CONN_AG_CTX_MULTI_UNICAST_CF_EN_SHIFT	7
5078 	u8 flags10;
5079 #define E4_XSTORM_ETH_CONN_AG_CTX_DQ_CF_EN_MASK			0x1
5080 #define E4_XSTORM_ETH_CONN_AG_CTX_DQ_CF_EN_SHIFT		0
5081 #define E4_XSTORM_ETH_CONN_AG_CTX_TERMINATE_CF_EN_MASK		0x1
5082 #define E4_XSTORM_ETH_CONN_AG_CTX_TERMINATE_CF_EN_SHIFT		1
5083 #define E4_XSTORM_ETH_CONN_AG_CTX_FLUSH_Q0_EN_MASK		0x1
5084 #define E4_XSTORM_ETH_CONN_AG_CTX_FLUSH_Q0_EN_SHIFT		2
5085 #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED11_MASK		0x1
5086 #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED11_SHIFT		3
5087 #define E4_XSTORM_ETH_CONN_AG_CTX_SLOW_PATH_EN_MASK		0x1
5088 #define E4_XSTORM_ETH_CONN_AG_CTX_SLOW_PATH_EN_SHIFT		4
5089 #define E4_XSTORM_ETH_CONN_AG_CTX_TPH_ENABLE_EN_RESERVED_MASK	0x1
5090 #define E4_XSTORM_ETH_CONN_AG_CTX_TPH_ENABLE_EN_RESERVED_SHIFT	5
5091 #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED12_MASK		0x1
5092 #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED12_SHIFT		6
5093 #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED13_MASK		0x1
5094 #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED13_SHIFT		7
5095 	u8 flags11;
5096 #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED14_MASK	0x1
5097 #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED14_SHIFT	0
5098 #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED15_MASK	0x1
5099 #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED15_SHIFT	1
5100 #define E4_XSTORM_ETH_CONN_AG_CTX_TX_DEC_RULE_EN_MASK	0x1
5101 #define E4_XSTORM_ETH_CONN_AG_CTX_TX_DEC_RULE_EN_SHIFT	2
5102 #define E4_XSTORM_ETH_CONN_AG_CTX_RULE5EN_MASK		0x1
5103 #define E4_XSTORM_ETH_CONN_AG_CTX_RULE5EN_SHIFT		3
5104 #define E4_XSTORM_ETH_CONN_AG_CTX_RULE6EN_MASK		0x1
5105 #define E4_XSTORM_ETH_CONN_AG_CTX_RULE6EN_SHIFT		4
5106 #define E4_XSTORM_ETH_CONN_AG_CTX_RULE7EN_MASK		0x1
5107 #define E4_XSTORM_ETH_CONN_AG_CTX_RULE7EN_SHIFT		5
5108 #define E4_XSTORM_ETH_CONN_AG_CTX_A0_RESERVED1_MASK	0x1
5109 #define E4_XSTORM_ETH_CONN_AG_CTX_A0_RESERVED1_SHIFT	6
5110 #define E4_XSTORM_ETH_CONN_AG_CTX_RULE9EN_MASK		0x1
5111 #define E4_XSTORM_ETH_CONN_AG_CTX_RULE9EN_SHIFT		7
5112 	u8 flags12;
5113 #define E4_XSTORM_ETH_CONN_AG_CTX_RULE10EN_MASK		0x1
5114 #define E4_XSTORM_ETH_CONN_AG_CTX_RULE10EN_SHIFT	0
5115 #define E4_XSTORM_ETH_CONN_AG_CTX_RULE11EN_MASK		0x1
5116 #define E4_XSTORM_ETH_CONN_AG_CTX_RULE11EN_SHIFT	1
5117 #define E4_XSTORM_ETH_CONN_AG_CTX_A0_RESERVED2_MASK	0x1
5118 #define E4_XSTORM_ETH_CONN_AG_CTX_A0_RESERVED2_SHIFT	2
5119 #define E4_XSTORM_ETH_CONN_AG_CTX_A0_RESERVED3_MASK	0x1
5120 #define E4_XSTORM_ETH_CONN_AG_CTX_A0_RESERVED3_SHIFT	3
5121 #define E4_XSTORM_ETH_CONN_AG_CTX_RULE14EN_MASK		0x1
5122 #define E4_XSTORM_ETH_CONN_AG_CTX_RULE14EN_SHIFT	4
5123 #define E4_XSTORM_ETH_CONN_AG_CTX_RULE15EN_MASK		0x1
5124 #define E4_XSTORM_ETH_CONN_AG_CTX_RULE15EN_SHIFT	5
5125 #define E4_XSTORM_ETH_CONN_AG_CTX_RULE16EN_MASK		0x1
5126 #define E4_XSTORM_ETH_CONN_AG_CTX_RULE16EN_SHIFT	6
5127 #define E4_XSTORM_ETH_CONN_AG_CTX_RULE17EN_MASK		0x1
5128 #define E4_XSTORM_ETH_CONN_AG_CTX_RULE17EN_SHIFT	7
5129 	u8 flags13;
5130 #define E4_XSTORM_ETH_CONN_AG_CTX_RULE18EN_MASK		0x1
5131 #define E4_XSTORM_ETH_CONN_AG_CTX_RULE18EN_SHIFT	0
5132 #define E4_XSTORM_ETH_CONN_AG_CTX_RULE19EN_MASK		0x1
5133 #define E4_XSTORM_ETH_CONN_AG_CTX_RULE19EN_SHIFT	1
5134 #define E4_XSTORM_ETH_CONN_AG_CTX_A0_RESERVED4_MASK	0x1
5135 #define E4_XSTORM_ETH_CONN_AG_CTX_A0_RESERVED4_SHIFT	2
5136 #define E4_XSTORM_ETH_CONN_AG_CTX_A0_RESERVED5_MASK	0x1
5137 #define E4_XSTORM_ETH_CONN_AG_CTX_A0_RESERVED5_SHIFT	3
5138 #define E4_XSTORM_ETH_CONN_AG_CTX_A0_RESERVED6_MASK	0x1
5139 #define E4_XSTORM_ETH_CONN_AG_CTX_A0_RESERVED6_SHIFT	4
5140 #define E4_XSTORM_ETH_CONN_AG_CTX_A0_RESERVED7_MASK	0x1
5141 #define E4_XSTORM_ETH_CONN_AG_CTX_A0_RESERVED7_SHIFT	5
5142 #define E4_XSTORM_ETH_CONN_AG_CTX_A0_RESERVED8_MASK	0x1
5143 #define E4_XSTORM_ETH_CONN_AG_CTX_A0_RESERVED8_SHIFT	6
5144 #define E4_XSTORM_ETH_CONN_AG_CTX_A0_RESERVED9_MASK	0x1
5145 #define E4_XSTORM_ETH_CONN_AG_CTX_A0_RESERVED9_SHIFT	7
5146 	u8 flags14;
5147 #define E4_XSTORM_ETH_CONN_AG_CTX_EDPM_USE_EXT_HDR_MASK		0x1
5148 #define E4_XSTORM_ETH_CONN_AG_CTX_EDPM_USE_EXT_HDR_SHIFT	0
5149 #define E4_XSTORM_ETH_CONN_AG_CTX_EDPM_SEND_RAW_L3L4_MASK	0x1
5150 #define E4_XSTORM_ETH_CONN_AG_CTX_EDPM_SEND_RAW_L3L4_SHIFT	1
5151 #define E4_XSTORM_ETH_CONN_AG_CTX_EDPM_INBAND_PROP_HDR_MASK	0x1
5152 #define E4_XSTORM_ETH_CONN_AG_CTX_EDPM_INBAND_PROP_HDR_SHIFT	2
5153 #define E4_XSTORM_ETH_CONN_AG_CTX_EDPM_SEND_EXT_TUNNEL_MASK	0x1
5154 #define E4_XSTORM_ETH_CONN_AG_CTX_EDPM_SEND_EXT_TUNNEL_SHIFT	3
5155 #define E4_XSTORM_ETH_CONN_AG_CTX_L2_EDPM_ENABLE_MASK		0x1
5156 #define E4_XSTORM_ETH_CONN_AG_CTX_L2_EDPM_ENABLE_SHIFT		4
5157 #define E4_XSTORM_ETH_CONN_AG_CTX_ROCE_EDPM_ENABLE_MASK		0x1
5158 #define E4_XSTORM_ETH_CONN_AG_CTX_ROCE_EDPM_ENABLE_SHIFT	5
5159 #define E4_XSTORM_ETH_CONN_AG_CTX_TPH_ENABLE_MASK		0x3
5160 #define E4_XSTORM_ETH_CONN_AG_CTX_TPH_ENABLE_SHIFT		6
5161 	u8 edpm_event_id;
5162 	__le16 physical_q0;
5163 	__le16 e5_reserved1;
5164 	__le16 edpm_num_bds;
5165 	__le16 tx_bd_cons;
5166 	__le16 tx_bd_prod;
5167 	__le16 updated_qm_pq_id;
5168 	__le16 conn_dpi;
5169 	u8 byte3;
5170 	u8 byte4;
5171 	u8 byte5;
5172 	u8 byte6;
5173 	__le32 reg0;
5174 	__le32 reg1;
5175 	__le32 reg2;
5176 	__le32 reg3;
5177 	__le32 reg4;
5178 	__le32 reg5;
5179 	__le32 reg6;
5180 	__le16 word7;
5181 	__le16 word8;
5182 	__le16 word9;
5183 	__le16 word10;
5184 	__le32 reg7;
5185 	__le32 reg8;
5186 	__le32 reg9;
5187 	u8 byte7;
5188 	u8 byte8;
5189 	u8 byte9;
5190 	u8 byte10;
5191 	u8 byte11;
5192 	u8 byte12;
5193 	u8 byte13;
5194 	u8 byte14;
5195 	u8 byte15;
5196 	u8 e5_reserved;
5197 	__le16 word11;
5198 	__le32 reg10;
5199 	__le32 reg11;
5200 	__le32 reg12;
5201 	__le32 reg13;
5202 	__le32 reg14;
5203 	__le32 reg15;
5204 	__le32 reg16;
5205 	__le32 reg17;
5206 	__le32 reg18;
5207 	__le32 reg19;
5208 	__le16 word12;
5209 	__le16 word13;
5210 	__le16 word14;
5211 	__le16 word15;
5212 };
5213 
5214 /* The eth storm context for the Ystorm */
5215 struct ystorm_eth_conn_st_ctx {
5216 	__le32 reserved[8];
5217 };
5218 
5219 struct e4_ystorm_eth_conn_ag_ctx {
5220 	u8 byte0;
5221 	u8 state;
5222 	u8 flags0;
5223 #define E4_YSTORM_ETH_CONN_AG_CTX_BIT0_MASK			0x1
5224 #define E4_YSTORM_ETH_CONN_AG_CTX_BIT0_SHIFT			0
5225 #define E4_YSTORM_ETH_CONN_AG_CTX_BIT1_MASK			0x1
5226 #define E4_YSTORM_ETH_CONN_AG_CTX_BIT1_SHIFT			1
5227 #define E4_YSTORM_ETH_CONN_AG_CTX_TX_BD_CONS_UPD_CF_MASK	0x3
5228 #define E4_YSTORM_ETH_CONN_AG_CTX_TX_BD_CONS_UPD_CF_SHIFT	2
5229 #define E4_YSTORM_ETH_CONN_AG_CTX_PMD_TERMINATE_CF_MASK		0x3
5230 #define E4_YSTORM_ETH_CONN_AG_CTX_PMD_TERMINATE_CF_SHIFT	4
5231 #define E4_YSTORM_ETH_CONN_AG_CTX_CF2_MASK			0x3
5232 #define E4_YSTORM_ETH_CONN_AG_CTX_CF2_SHIFT			6
5233 	u8 flags1;
5234 #define E4_YSTORM_ETH_CONN_AG_CTX_TX_BD_CONS_UPD_CF_EN_MASK	0x1
5235 #define E4_YSTORM_ETH_CONN_AG_CTX_TX_BD_CONS_UPD_CF_EN_SHIFT	0
5236 #define E4_YSTORM_ETH_CONN_AG_CTX_PMD_TERMINATE_CF_EN_MASK	0x1
5237 #define E4_YSTORM_ETH_CONN_AG_CTX_PMD_TERMINATE_CF_EN_SHIFT	1
5238 #define E4_YSTORM_ETH_CONN_AG_CTX_CF2EN_MASK			0x1
5239 #define E4_YSTORM_ETH_CONN_AG_CTX_CF2EN_SHIFT			2
5240 #define E4_YSTORM_ETH_CONN_AG_CTX_RULE0EN_MASK			0x1
5241 #define E4_YSTORM_ETH_CONN_AG_CTX_RULE0EN_SHIFT			3
5242 #define E4_YSTORM_ETH_CONN_AG_CTX_RULE1EN_MASK			0x1
5243 #define E4_YSTORM_ETH_CONN_AG_CTX_RULE1EN_SHIFT			4
5244 #define E4_YSTORM_ETH_CONN_AG_CTX_RULE2EN_MASK			0x1
5245 #define E4_YSTORM_ETH_CONN_AG_CTX_RULE2EN_SHIFT			5
5246 #define E4_YSTORM_ETH_CONN_AG_CTX_RULE3EN_MASK			0x1
5247 #define E4_YSTORM_ETH_CONN_AG_CTX_RULE3EN_SHIFT			6
5248 #define E4_YSTORM_ETH_CONN_AG_CTX_RULE4EN_MASK			0x1
5249 #define E4_YSTORM_ETH_CONN_AG_CTX_RULE4EN_SHIFT			7
5250 	u8 tx_q0_int_coallecing_timeset;
5251 	u8 byte3;
5252 	__le16 word0;
5253 	__le32 terminate_spqe;
5254 	__le32 reg1;
5255 	__le16 tx_bd_cons_upd;
5256 	__le16 word2;
5257 	__le16 word3;
5258 	__le16 word4;
5259 	__le32 reg2;
5260 	__le32 reg3;
5261 };
5262 
5263 struct e4_tstorm_eth_conn_ag_ctx {
5264 	u8 byte0;
5265 	u8 byte1;
5266 	u8 flags0;
5267 #define E4_TSTORM_ETH_CONN_AG_CTX_BIT0_MASK	0x1
5268 #define E4_TSTORM_ETH_CONN_AG_CTX_BIT0_SHIFT	0
5269 #define E4_TSTORM_ETH_CONN_AG_CTX_BIT1_MASK	0x1
5270 #define E4_TSTORM_ETH_CONN_AG_CTX_BIT1_SHIFT	1
5271 #define E4_TSTORM_ETH_CONN_AG_CTX_BIT2_MASK	0x1
5272 #define E4_TSTORM_ETH_CONN_AG_CTX_BIT2_SHIFT	2
5273 #define E4_TSTORM_ETH_CONN_AG_CTX_BIT3_MASK	0x1
5274 #define E4_TSTORM_ETH_CONN_AG_CTX_BIT3_SHIFT	3
5275 #define E4_TSTORM_ETH_CONN_AG_CTX_BIT4_MASK	0x1
5276 #define E4_TSTORM_ETH_CONN_AG_CTX_BIT4_SHIFT	4
5277 #define E4_TSTORM_ETH_CONN_AG_CTX_BIT5_MASK	0x1
5278 #define E4_TSTORM_ETH_CONN_AG_CTX_BIT5_SHIFT	5
5279 #define E4_TSTORM_ETH_CONN_AG_CTX_CF0_MASK	0x3
5280 #define E4_TSTORM_ETH_CONN_AG_CTX_CF0_SHIFT	6
5281 	u8 flags1;
5282 #define E4_TSTORM_ETH_CONN_AG_CTX_CF1_MASK	0x3
5283 #define E4_TSTORM_ETH_CONN_AG_CTX_CF1_SHIFT	0
5284 #define E4_TSTORM_ETH_CONN_AG_CTX_CF2_MASK	0x3
5285 #define E4_TSTORM_ETH_CONN_AG_CTX_CF2_SHIFT	2
5286 #define E4_TSTORM_ETH_CONN_AG_CTX_CF3_MASK	0x3
5287 #define E4_TSTORM_ETH_CONN_AG_CTX_CF3_SHIFT	4
5288 #define E4_TSTORM_ETH_CONN_AG_CTX_CF4_MASK	0x3
5289 #define E4_TSTORM_ETH_CONN_AG_CTX_CF4_SHIFT	6
5290 	u8 flags2;
5291 #define E4_TSTORM_ETH_CONN_AG_CTX_CF5_MASK	0x3
5292 #define E4_TSTORM_ETH_CONN_AG_CTX_CF5_SHIFT	0
5293 #define E4_TSTORM_ETH_CONN_AG_CTX_CF6_MASK	0x3
5294 #define E4_TSTORM_ETH_CONN_AG_CTX_CF6_SHIFT	2
5295 #define E4_TSTORM_ETH_CONN_AG_CTX_CF7_MASK	0x3
5296 #define E4_TSTORM_ETH_CONN_AG_CTX_CF7_SHIFT	4
5297 #define E4_TSTORM_ETH_CONN_AG_CTX_CF8_MASK	0x3
5298 #define E4_TSTORM_ETH_CONN_AG_CTX_CF8_SHIFT	6
5299 	u8 flags3;
5300 #define E4_TSTORM_ETH_CONN_AG_CTX_CF9_MASK	0x3
5301 #define E4_TSTORM_ETH_CONN_AG_CTX_CF9_SHIFT	0
5302 #define E4_TSTORM_ETH_CONN_AG_CTX_CF10_MASK	0x3
5303 #define E4_TSTORM_ETH_CONN_AG_CTX_CF10_SHIFT	2
5304 #define E4_TSTORM_ETH_CONN_AG_CTX_CF0EN_MASK	0x1
5305 #define E4_TSTORM_ETH_CONN_AG_CTX_CF0EN_SHIFT	4
5306 #define E4_TSTORM_ETH_CONN_AG_CTX_CF1EN_MASK	0x1
5307 #define E4_TSTORM_ETH_CONN_AG_CTX_CF1EN_SHIFT	5
5308 #define E4_TSTORM_ETH_CONN_AG_CTX_CF2EN_MASK	0x1
5309 #define E4_TSTORM_ETH_CONN_AG_CTX_CF2EN_SHIFT	6
5310 #define E4_TSTORM_ETH_CONN_AG_CTX_CF3EN_MASK	0x1
5311 #define E4_TSTORM_ETH_CONN_AG_CTX_CF3EN_SHIFT	7
5312 	u8 flags4;
5313 #define E4_TSTORM_ETH_CONN_AG_CTX_CF4EN_MASK	0x1
5314 #define E4_TSTORM_ETH_CONN_AG_CTX_CF4EN_SHIFT	0
5315 #define E4_TSTORM_ETH_CONN_AG_CTX_CF5EN_MASK	0x1
5316 #define E4_TSTORM_ETH_CONN_AG_CTX_CF5EN_SHIFT	1
5317 #define E4_TSTORM_ETH_CONN_AG_CTX_CF6EN_MASK	0x1
5318 #define E4_TSTORM_ETH_CONN_AG_CTX_CF6EN_SHIFT	2
5319 #define E4_TSTORM_ETH_CONN_AG_CTX_CF7EN_MASK	0x1
5320 #define E4_TSTORM_ETH_CONN_AG_CTX_CF7EN_SHIFT	3
5321 #define E4_TSTORM_ETH_CONN_AG_CTX_CF8EN_MASK	0x1
5322 #define E4_TSTORM_ETH_CONN_AG_CTX_CF8EN_SHIFT	4
5323 #define E4_TSTORM_ETH_CONN_AG_CTX_CF9EN_MASK	0x1
5324 #define E4_TSTORM_ETH_CONN_AG_CTX_CF9EN_SHIFT	5
5325 #define E4_TSTORM_ETH_CONN_AG_CTX_CF10EN_MASK	0x1
5326 #define E4_TSTORM_ETH_CONN_AG_CTX_CF10EN_SHIFT	6
5327 #define E4_TSTORM_ETH_CONN_AG_CTX_RULE0EN_MASK	0x1
5328 #define E4_TSTORM_ETH_CONN_AG_CTX_RULE0EN_SHIFT	7
5329 	u8 flags5;
5330 #define E4_TSTORM_ETH_CONN_AG_CTX_RULE1EN_MASK		0x1
5331 #define E4_TSTORM_ETH_CONN_AG_CTX_RULE1EN_SHIFT		0
5332 #define E4_TSTORM_ETH_CONN_AG_CTX_RULE2EN_MASK		0x1
5333 #define E4_TSTORM_ETH_CONN_AG_CTX_RULE2EN_SHIFT		1
5334 #define E4_TSTORM_ETH_CONN_AG_CTX_RULE3EN_MASK		0x1
5335 #define E4_TSTORM_ETH_CONN_AG_CTX_RULE3EN_SHIFT		2
5336 #define E4_TSTORM_ETH_CONN_AG_CTX_RULE4EN_MASK		0x1
5337 #define E4_TSTORM_ETH_CONN_AG_CTX_RULE4EN_SHIFT		3
5338 #define E4_TSTORM_ETH_CONN_AG_CTX_RULE5EN_MASK		0x1
5339 #define E4_TSTORM_ETH_CONN_AG_CTX_RULE5EN_SHIFT		4
5340 #define E4_TSTORM_ETH_CONN_AG_CTX_RX_BD_EN_MASK		0x1
5341 #define E4_TSTORM_ETH_CONN_AG_CTX_RX_BD_EN_SHIFT	5
5342 #define E4_TSTORM_ETH_CONN_AG_CTX_RULE7EN_MASK		0x1
5343 #define E4_TSTORM_ETH_CONN_AG_CTX_RULE7EN_SHIFT		6
5344 #define E4_TSTORM_ETH_CONN_AG_CTX_RULE8EN_MASK		0x1
5345 #define E4_TSTORM_ETH_CONN_AG_CTX_RULE8EN_SHIFT		7
5346 	__le32 reg0;
5347 	__le32 reg1;
5348 	__le32 reg2;
5349 	__le32 reg3;
5350 	__le32 reg4;
5351 	__le32 reg5;
5352 	__le32 reg6;
5353 	__le32 reg7;
5354 	__le32 reg8;
5355 	u8 byte2;
5356 	u8 byte3;
5357 	__le16 rx_bd_cons;
5358 	u8 byte4;
5359 	u8 byte5;
5360 	__le16 rx_bd_prod;
5361 	__le16 word2;
5362 	__le16 word3;
5363 	__le32 reg9;
5364 	__le32 reg10;
5365 };
5366 
5367 struct e4_ustorm_eth_conn_ag_ctx {
5368 	u8 byte0;
5369 	u8 byte1;
5370 	u8 flags0;
5371 #define E4_USTORM_ETH_CONN_AG_CTX_BIT0_MASK			0x1
5372 #define E4_USTORM_ETH_CONN_AG_CTX_BIT0_SHIFT			0
5373 #define E4_USTORM_ETH_CONN_AG_CTX_BIT1_MASK			0x1
5374 #define E4_USTORM_ETH_CONN_AG_CTX_BIT1_SHIFT			1
5375 #define E4_USTORM_ETH_CONN_AG_CTX_TX_PMD_TERMINATE_CF_MASK	0x3
5376 #define E4_USTORM_ETH_CONN_AG_CTX_TX_PMD_TERMINATE_CF_SHIFT	2
5377 #define E4_USTORM_ETH_CONN_AG_CTX_RX_PMD_TERMINATE_CF_MASK	0x3
5378 #define E4_USTORM_ETH_CONN_AG_CTX_RX_PMD_TERMINATE_CF_SHIFT	4
5379 #define E4_USTORM_ETH_CONN_AG_CTX_CF2_MASK			0x3
5380 #define E4_USTORM_ETH_CONN_AG_CTX_CF2_SHIFT			6
5381 	u8 flags1;
5382 #define E4_USTORM_ETH_CONN_AG_CTX_CF3_MASK			0x3
5383 #define E4_USTORM_ETH_CONN_AG_CTX_CF3_SHIFT			0
5384 #define E4_USTORM_ETH_CONN_AG_CTX_TX_ARM_CF_MASK		0x3
5385 #define E4_USTORM_ETH_CONN_AG_CTX_TX_ARM_CF_SHIFT		2
5386 #define E4_USTORM_ETH_CONN_AG_CTX_RX_ARM_CF_MASK		0x3
5387 #define E4_USTORM_ETH_CONN_AG_CTX_RX_ARM_CF_SHIFT		4
5388 #define E4_USTORM_ETH_CONN_AG_CTX_TX_BD_CONS_UPD_CF_MASK	0x3
5389 #define E4_USTORM_ETH_CONN_AG_CTX_TX_BD_CONS_UPD_CF_SHIFT	6
5390 	u8 flags2;
5391 #define E4_USTORM_ETH_CONN_AG_CTX_TX_PMD_TERMINATE_CF_EN_MASK	0x1
5392 #define E4_USTORM_ETH_CONN_AG_CTX_TX_PMD_TERMINATE_CF_EN_SHIFT	0
5393 #define E4_USTORM_ETH_CONN_AG_CTX_RX_PMD_TERMINATE_CF_EN_MASK	0x1
5394 #define E4_USTORM_ETH_CONN_AG_CTX_RX_PMD_TERMINATE_CF_EN_SHIFT	1
5395 #define E4_USTORM_ETH_CONN_AG_CTX_CF2EN_MASK			0x1
5396 #define E4_USTORM_ETH_CONN_AG_CTX_CF2EN_SHIFT			2
5397 #define E4_USTORM_ETH_CONN_AG_CTX_CF3EN_MASK			0x1
5398 #define E4_USTORM_ETH_CONN_AG_CTX_CF3EN_SHIFT			3
5399 #define E4_USTORM_ETH_CONN_AG_CTX_TX_ARM_CF_EN_MASK		0x1
5400 #define E4_USTORM_ETH_CONN_AG_CTX_TX_ARM_CF_EN_SHIFT		4
5401 #define E4_USTORM_ETH_CONN_AG_CTX_RX_ARM_CF_EN_MASK		0x1
5402 #define E4_USTORM_ETH_CONN_AG_CTX_RX_ARM_CF_EN_SHIFT		5
5403 #define E4_USTORM_ETH_CONN_AG_CTX_TX_BD_CONS_UPD_CF_EN_MASK	0x1
5404 #define E4_USTORM_ETH_CONN_AG_CTX_TX_BD_CONS_UPD_CF_EN_SHIFT	6
5405 #define E4_USTORM_ETH_CONN_AG_CTX_RULE0EN_MASK			0x1
5406 #define E4_USTORM_ETH_CONN_AG_CTX_RULE0EN_SHIFT			7
5407 	u8 flags3;
5408 #define E4_USTORM_ETH_CONN_AG_CTX_RULE1EN_MASK	0x1
5409 #define E4_USTORM_ETH_CONN_AG_CTX_RULE1EN_SHIFT	0
5410 #define E4_USTORM_ETH_CONN_AG_CTX_RULE2EN_MASK	0x1
5411 #define E4_USTORM_ETH_CONN_AG_CTX_RULE2EN_SHIFT	1
5412 #define E4_USTORM_ETH_CONN_AG_CTX_RULE3EN_MASK	0x1
5413 #define E4_USTORM_ETH_CONN_AG_CTX_RULE3EN_SHIFT	2
5414 #define E4_USTORM_ETH_CONN_AG_CTX_RULE4EN_MASK	0x1
5415 #define E4_USTORM_ETH_CONN_AG_CTX_RULE4EN_SHIFT	3
5416 #define E4_USTORM_ETH_CONN_AG_CTX_RULE5EN_MASK	0x1
5417 #define E4_USTORM_ETH_CONN_AG_CTX_RULE5EN_SHIFT	4
5418 #define E4_USTORM_ETH_CONN_AG_CTX_RULE6EN_MASK	0x1
5419 #define E4_USTORM_ETH_CONN_AG_CTX_RULE6EN_SHIFT	5
5420 #define E4_USTORM_ETH_CONN_AG_CTX_RULE7EN_MASK	0x1
5421 #define E4_USTORM_ETH_CONN_AG_CTX_RULE7EN_SHIFT	6
5422 #define E4_USTORM_ETH_CONN_AG_CTX_RULE8EN_MASK	0x1
5423 #define E4_USTORM_ETH_CONN_AG_CTX_RULE8EN_SHIFT	7
5424 	u8 byte2;
5425 	u8 byte3;
5426 	__le16 word0;
5427 	__le16 tx_bd_cons;
5428 	__le32 reg0;
5429 	__le32 reg1;
5430 	__le32 reg2;
5431 	__le32 tx_int_coallecing_timeset;
5432 	__le16 tx_drv_bd_cons;
5433 	__le16 rx_drv_cqe_cons;
5434 };
5435 
5436 /* The eth storm context for the Ustorm */
5437 struct ustorm_eth_conn_st_ctx {
5438 	__le32 reserved[40];
5439 };
5440 
5441 /* The eth storm context for the Mstorm */
5442 struct mstorm_eth_conn_st_ctx {
5443 	__le32 reserved[8];
5444 };
5445 
5446 /* eth connection context */
5447 struct e4_eth_conn_context {
5448 	struct tstorm_eth_conn_st_ctx tstorm_st_context;
5449 	struct regpair tstorm_st_padding[2];
5450 	struct pstorm_eth_conn_st_ctx pstorm_st_context;
5451 	struct xstorm_eth_conn_st_ctx xstorm_st_context;
5452 	struct e4_xstorm_eth_conn_ag_ctx xstorm_ag_context;
5453 	struct e4_tstorm_eth_conn_ag_ctx tstorm_ag_context;
5454 	struct ystorm_eth_conn_st_ctx ystorm_st_context;
5455 	struct e4_ystorm_eth_conn_ag_ctx ystorm_ag_context;
5456 	struct e4_ustorm_eth_conn_ag_ctx ustorm_ag_context;
5457 	struct ustorm_eth_conn_st_ctx ustorm_st_context;
5458 	struct mstorm_eth_conn_st_ctx mstorm_st_context;
5459 };
5460 
5461 /* Ethernet filter types: mac/vlan/pair */
5462 enum eth_error_code {
5463 	ETH_OK = 0x00,
5464 	ETH_FILTERS_MAC_ADD_FAIL_FULL,
5465 	ETH_FILTERS_MAC_ADD_FAIL_FULL_MTT2,
5466 	ETH_FILTERS_MAC_ADD_FAIL_DUP_MTT2,
5467 	ETH_FILTERS_MAC_ADD_FAIL_DUP_STT2,
5468 	ETH_FILTERS_MAC_DEL_FAIL_NOF,
5469 	ETH_FILTERS_MAC_DEL_FAIL_NOF_MTT2,
5470 	ETH_FILTERS_MAC_DEL_FAIL_NOF_STT2,
5471 	ETH_FILTERS_MAC_ADD_FAIL_ZERO_MAC,
5472 	ETH_FILTERS_VLAN_ADD_FAIL_FULL,
5473 	ETH_FILTERS_VLAN_ADD_FAIL_DUP,
5474 	ETH_FILTERS_VLAN_DEL_FAIL_NOF,
5475 	ETH_FILTERS_VLAN_DEL_FAIL_NOF_TT1,
5476 	ETH_FILTERS_PAIR_ADD_FAIL_DUP,
5477 	ETH_FILTERS_PAIR_ADD_FAIL_FULL,
5478 	ETH_FILTERS_PAIR_ADD_FAIL_FULL_MAC,
5479 	ETH_FILTERS_PAIR_DEL_FAIL_NOF,
5480 	ETH_FILTERS_PAIR_DEL_FAIL_NOF_TT1,
5481 	ETH_FILTERS_PAIR_ADD_FAIL_ZERO_MAC,
5482 	ETH_FILTERS_VNI_ADD_FAIL_FULL,
5483 	ETH_FILTERS_VNI_ADD_FAIL_DUP,
5484 	ETH_FILTERS_GFT_UPDATE_FAIL,
5485 	ETH_RX_QUEUE_FAIL_LOAD_VF_DATA,
5486 	ETH_FILTERS_GFS_ADD_FILTER_FAIL_MAX_HOPS,
5487 	ETH_FILTERS_GFS_ADD_FILTER_FAIL_NO_FREE_ENRTY,
5488 	ETH_FILTERS_GFS_ADD_FILTER_FAIL_ALREADY_EXISTS,
5489 	ETH_FILTERS_GFS_ADD_FILTER_FAIL_PCI_ERROR,
5490 	ETH_FILTERS_GFS_ADD_FINLER_FAIL_MAGIC_NUM_ERROR,
5491 	ETH_FILTERS_GFS_DEL_FILTER_FAIL_MAX_HOPS,
5492 	ETH_FILTERS_GFS_DEL_FILTER_FAIL_NO_MATCH_ENRTY,
5493 	ETH_FILTERS_GFS_DEL_FILTER_FAIL_PCI_ERROR,
5494 	ETH_FILTERS_GFS_DEL_FILTER_FAIL_MAGIC_NUM_ERROR,
5495 	MAX_ETH_ERROR_CODE
5496 };
5497 
5498 /* Opcodes for the event ring */
5499 enum eth_event_opcode {
5500 	ETH_EVENT_UNUSED,
5501 	ETH_EVENT_VPORT_START,
5502 	ETH_EVENT_VPORT_UPDATE,
5503 	ETH_EVENT_VPORT_STOP,
5504 	ETH_EVENT_TX_QUEUE_START,
5505 	ETH_EVENT_TX_QUEUE_STOP,
5506 	ETH_EVENT_RX_QUEUE_START,
5507 	ETH_EVENT_RX_QUEUE_UPDATE,
5508 	ETH_EVENT_RX_QUEUE_STOP,
5509 	ETH_EVENT_FILTERS_UPDATE,
5510 	ETH_EVENT_RX_ADD_OPENFLOW_FILTER,
5511 	ETH_EVENT_RX_DELETE_OPENFLOW_FILTER,
5512 	ETH_EVENT_RX_CREATE_OPENFLOW_ACTION,
5513 	ETH_EVENT_RX_ADD_UDP_FILTER,
5514 	ETH_EVENT_RX_DELETE_UDP_FILTER,
5515 	ETH_EVENT_RX_CREATE_GFT_ACTION,
5516 	ETH_EVENT_RX_GFT_UPDATE_FILTER,
5517 	ETH_EVENT_TX_QUEUE_UPDATE,
5518 	ETH_EVENT_RGFS_ADD_FILTER,
5519 	ETH_EVENT_RGFS_DEL_FILTER,
5520 	ETH_EVENT_TGFS_ADD_FILTER,
5521 	ETH_EVENT_TGFS_DEL_FILTER,
5522 	ETH_EVENT_GFS_COUNTERS_REPORT_REQUEST,
5523 	MAX_ETH_EVENT_OPCODE
5524 };
5525 
5526 /* Classify rule types in E2/E3 */
5527 enum eth_filter_action {
5528 	ETH_FILTER_ACTION_UNUSED,
5529 	ETH_FILTER_ACTION_REMOVE,
5530 	ETH_FILTER_ACTION_ADD,
5531 	ETH_FILTER_ACTION_REMOVE_ALL,
5532 	MAX_ETH_FILTER_ACTION
5533 };
5534 
5535 /* Command for adding/removing a classification rule $$KEEP_ENDIANNESS$$ */
5536 struct eth_filter_cmd {
5537 	u8 type;
5538 	u8 vport_id;
5539 	u8 action;
5540 	u8 reserved0;
5541 	__le32 vni;
5542 	__le16 mac_lsb;
5543 	__le16 mac_mid;
5544 	__le16 mac_msb;
5545 	__le16 vlan_id;
5546 };
5547 
5548 /*	$$KEEP_ENDIANNESS$$ */
5549 struct eth_filter_cmd_header {
5550 	u8 rx;
5551 	u8 tx;
5552 	u8 cmd_cnt;
5553 	u8 assert_on_error;
5554 	u8 reserved1[4];
5555 };
5556 
5557 /* Ethernet filter types: mac/vlan/pair */
5558 enum eth_filter_type {
5559 	ETH_FILTER_TYPE_UNUSED,
5560 	ETH_FILTER_TYPE_MAC,
5561 	ETH_FILTER_TYPE_VLAN,
5562 	ETH_FILTER_TYPE_PAIR,
5563 	ETH_FILTER_TYPE_INNER_MAC,
5564 	ETH_FILTER_TYPE_INNER_VLAN,
5565 	ETH_FILTER_TYPE_INNER_PAIR,
5566 	ETH_FILTER_TYPE_INNER_MAC_VNI_PAIR,
5567 	ETH_FILTER_TYPE_MAC_VNI_PAIR,
5568 	ETH_FILTER_TYPE_VNI,
5569 	MAX_ETH_FILTER_TYPE
5570 };
5571 
5572 /* inner to inner vlan priority translation configurations */
5573 struct eth_in_to_in_pri_map_cfg {
5574 	u8 inner_vlan_pri_remap_en;
5575 	u8 reserved[7];
5576 	u8 non_rdma_in_to_in_pri_map[8];
5577 	u8 rdma_in_to_in_pri_map[8];
5578 };
5579 
5580 /* Eth IPv4 Fragment Type */
5581 enum eth_ipv4_frag_type {
5582 	ETH_IPV4_NOT_FRAG,
5583 	ETH_IPV4_FIRST_FRAG,
5584 	ETH_IPV4_NON_FIRST_FRAG,
5585 	MAX_ETH_IPV4_FRAG_TYPE
5586 };
5587 
5588 /* eth IPv4 Fragment Type */
5589 enum eth_ip_type {
5590 	ETH_IPV4,
5591 	ETH_IPV6,
5592 	MAX_ETH_IP_TYPE
5593 };
5594 
5595 /* Ethernet Ramrod Command IDs */
5596 enum eth_ramrod_cmd_id {
5597 	ETH_RAMROD_UNUSED,
5598 	ETH_RAMROD_VPORT_START,
5599 	ETH_RAMROD_VPORT_UPDATE,
5600 	ETH_RAMROD_VPORT_STOP,
5601 	ETH_RAMROD_RX_QUEUE_START,
5602 	ETH_RAMROD_RX_QUEUE_STOP,
5603 	ETH_RAMROD_TX_QUEUE_START,
5604 	ETH_RAMROD_TX_QUEUE_STOP,
5605 	ETH_RAMROD_FILTERS_UPDATE,
5606 	ETH_RAMROD_RX_QUEUE_UPDATE,
5607 	ETH_RAMROD_RX_CREATE_OPENFLOW_ACTION,
5608 	ETH_RAMROD_RX_ADD_OPENFLOW_FILTER,
5609 	ETH_RAMROD_RX_DELETE_OPENFLOW_FILTER,
5610 	ETH_RAMROD_RX_ADD_UDP_FILTER,
5611 	ETH_RAMROD_RX_DELETE_UDP_FILTER,
5612 	ETH_RAMROD_RX_CREATE_GFT_ACTION,
5613 	ETH_RAMROD_GFT_UPDATE_FILTER,
5614 	ETH_RAMROD_TX_QUEUE_UPDATE,
5615 	ETH_RAMROD_RGFS_FILTER_ADD,
5616 	ETH_RAMROD_RGFS_FILTER_DEL,
5617 	ETH_RAMROD_TGFS_FILTER_ADD,
5618 	ETH_RAMROD_TGFS_FILTER_DEL,
5619 	ETH_RAMROD_GFS_COUNTERS_REPORT_REQUEST,
5620 	MAX_ETH_RAMROD_CMD_ID
5621 };
5622 
5623 /* Return code from eth sp ramrods */
5624 struct eth_return_code {
5625 	u8 value;
5626 #define ETH_RETURN_CODE_ERR_CODE_MASK  0x3F
5627 #define ETH_RETURN_CODE_ERR_CODE_SHIFT 0
5628 #define ETH_RETURN_CODE_RESERVED_MASK  0x1
5629 #define ETH_RETURN_CODE_RESERVED_SHIFT 6
5630 #define ETH_RETURN_CODE_RX_TX_MASK     0x1
5631 #define ETH_RETURN_CODE_RX_TX_SHIFT    7
5632 };
5633 
5634 /* tx destination enum */
5635 enum eth_tx_dst_mode_config_enum {
5636 	ETH_TX_DST_MODE_CONFIG_DISABLE,
5637 	ETH_TX_DST_MODE_CONFIG_FORWARD_DATA_IN_BD,
5638 	ETH_TX_DST_MODE_CONFIG_FORWARD_DATA_IN_VPORT,
5639 	MAX_ETH_TX_DST_MODE_CONFIG_ENUM
5640 };
5641 
5642 /* What to do in case an error occurs */
5643 enum eth_tx_err {
5644 	ETH_TX_ERR_DROP,
5645 	ETH_TX_ERR_ASSERT_MALICIOUS,
5646 	MAX_ETH_TX_ERR
5647 };
5648 
5649 /* Array of the different error type behaviors */
5650 struct eth_tx_err_vals {
5651 	__le16 values;
5652 #define ETH_TX_ERR_VALS_ILLEGAL_VLAN_MODE_MASK			0x1
5653 #define ETH_TX_ERR_VALS_ILLEGAL_VLAN_MODE_SHIFT			0
5654 #define ETH_TX_ERR_VALS_PACKET_TOO_SMALL_MASK			0x1
5655 #define ETH_TX_ERR_VALS_PACKET_TOO_SMALL_SHIFT			1
5656 #define ETH_TX_ERR_VALS_ANTI_SPOOFING_ERR_MASK			0x1
5657 #define ETH_TX_ERR_VALS_ANTI_SPOOFING_ERR_SHIFT			2
5658 #define ETH_TX_ERR_VALS_ILLEGAL_INBAND_TAGS_MASK		0x1
5659 #define ETH_TX_ERR_VALS_ILLEGAL_INBAND_TAGS_SHIFT		3
5660 #define ETH_TX_ERR_VALS_VLAN_INSERTION_W_INBAND_TAG_MASK	0x1
5661 #define ETH_TX_ERR_VALS_VLAN_INSERTION_W_INBAND_TAG_SHIFT	4
5662 #define ETH_TX_ERR_VALS_MTU_VIOLATION_MASK			0x1
5663 #define ETH_TX_ERR_VALS_MTU_VIOLATION_SHIFT			5
5664 #define ETH_TX_ERR_VALS_ILLEGAL_CONTROL_FRAME_MASK		0x1
5665 #define ETH_TX_ERR_VALS_ILLEGAL_CONTROL_FRAME_SHIFT		6
5666 #define ETH_TX_ERR_VALS_ILLEGAL_BD_FLAGS_MASK			0x1
5667 #define ETH_TX_ERR_VALS_ILLEGAL_BD_FLAGS_SHIFT			7
5668 #define ETH_TX_ERR_VALS_RESERVED_MASK				0xFF
5669 #define ETH_TX_ERR_VALS_RESERVED_SHIFT				8
5670 };
5671 
5672 /* vport rss configuration data */
5673 struct eth_vport_rss_config {
5674 	__le16 capabilities;
5675 #define ETH_VPORT_RSS_CONFIG_IPV4_CAPABILITY_MASK		0x1
5676 #define ETH_VPORT_RSS_CONFIG_IPV4_CAPABILITY_SHIFT		0
5677 #define ETH_VPORT_RSS_CONFIG_IPV6_CAPABILITY_MASK		0x1
5678 #define ETH_VPORT_RSS_CONFIG_IPV6_CAPABILITY_SHIFT		1
5679 #define ETH_VPORT_RSS_CONFIG_IPV4_TCP_CAPABILITY_MASK		0x1
5680 #define ETH_VPORT_RSS_CONFIG_IPV4_TCP_CAPABILITY_SHIFT		2
5681 #define ETH_VPORT_RSS_CONFIG_IPV6_TCP_CAPABILITY_MASK		0x1
5682 #define ETH_VPORT_RSS_CONFIG_IPV6_TCP_CAPABILITY_SHIFT		3
5683 #define ETH_VPORT_RSS_CONFIG_IPV4_UDP_CAPABILITY_MASK		0x1
5684 #define ETH_VPORT_RSS_CONFIG_IPV4_UDP_CAPABILITY_SHIFT		4
5685 #define ETH_VPORT_RSS_CONFIG_IPV6_UDP_CAPABILITY_MASK		0x1
5686 #define ETH_VPORT_RSS_CONFIG_IPV6_UDP_CAPABILITY_SHIFT		5
5687 #define ETH_VPORT_RSS_CONFIG_EN_5_TUPLE_CAPABILITY_MASK		0x1
5688 #define ETH_VPORT_RSS_CONFIG_EN_5_TUPLE_CAPABILITY_SHIFT	6
5689 #define ETH_VPORT_RSS_CONFIG_RESERVED0_MASK			0x1FF
5690 #define ETH_VPORT_RSS_CONFIG_RESERVED0_SHIFT			7
5691 	u8 rss_id;
5692 	u8 rss_mode;
5693 	u8 update_rss_key;
5694 	u8 update_rss_ind_table;
5695 	u8 update_rss_capabilities;
5696 	u8 tbl_size;
5697 	__le32 reserved2[2];
5698 	__le16 indirection_table[ETH_RSS_IND_TABLE_ENTRIES_NUM];
5699 	__le32 rss_key[ETH_RSS_KEY_SIZE_REGS];
5700 	__le32 reserved3[2];
5701 };
5702 
5703 /* eth vport RSS mode */
5704 enum eth_vport_rss_mode {
5705 	ETH_VPORT_RSS_MODE_DISABLED,
5706 	ETH_VPORT_RSS_MODE_REGULAR,
5707 	MAX_ETH_VPORT_RSS_MODE
5708 };
5709 
5710 /* Command for setting classification flags for a vport $$KEEP_ENDIANNESS$$ */
5711 struct eth_vport_rx_mode {
5712 	__le16 state;
5713 #define ETH_VPORT_RX_MODE_UCAST_DROP_ALL_MASK		0x1
5714 #define ETH_VPORT_RX_MODE_UCAST_DROP_ALL_SHIFT		0
5715 #define ETH_VPORT_RX_MODE_UCAST_ACCEPT_ALL_MASK		0x1
5716 #define ETH_VPORT_RX_MODE_UCAST_ACCEPT_ALL_SHIFT	1
5717 #define ETH_VPORT_RX_MODE_UCAST_ACCEPT_UNMATCHED_MASK	0x1
5718 #define ETH_VPORT_RX_MODE_UCAST_ACCEPT_UNMATCHED_SHIFT	2
5719 #define ETH_VPORT_RX_MODE_MCAST_DROP_ALL_MASK		0x1
5720 #define ETH_VPORT_RX_MODE_MCAST_DROP_ALL_SHIFT		3
5721 #define ETH_VPORT_RX_MODE_MCAST_ACCEPT_ALL_MASK		0x1
5722 #define ETH_VPORT_RX_MODE_MCAST_ACCEPT_ALL_SHIFT	4
5723 #define ETH_VPORT_RX_MODE_BCAST_ACCEPT_ALL_MASK		0x1
5724 #define ETH_VPORT_RX_MODE_BCAST_ACCEPT_ALL_SHIFT	5
5725 #define ETH_VPORT_RX_MODE_ACCEPT_ANY_VNI_MASK		0x1
5726 #define ETH_VPORT_RX_MODE_ACCEPT_ANY_VNI_SHIFT		6
5727 #define ETH_VPORT_RX_MODE_RESERVED1_MASK		0x1FF
5728 #define ETH_VPORT_RX_MODE_RESERVED1_SHIFT		7
5729 };
5730 
5731 /* Command for setting tpa parameters */
5732 struct eth_vport_tpa_param {
5733 	u8 tpa_ipv4_en_flg;
5734 	u8 tpa_ipv6_en_flg;
5735 	u8 tpa_ipv4_tunn_en_flg;
5736 	u8 tpa_ipv6_tunn_en_flg;
5737 	u8 tpa_pkt_split_flg;
5738 	u8 tpa_hdr_data_split_flg;
5739 	u8 tpa_gro_consistent_flg;
5740 
5741 	u8 tpa_max_aggs_num;
5742 
5743 	__le16 tpa_max_size;
5744 	__le16 tpa_min_size_to_start;
5745 
5746 	__le16 tpa_min_size_to_cont;
5747 	u8 max_buff_num;
5748 	u8 reserved;
5749 };
5750 
5751 /* Command for setting classification flags for a vport $$KEEP_ENDIANNESS$$ */
5752 struct eth_vport_tx_mode {
5753 	__le16 state;
5754 #define ETH_VPORT_TX_MODE_UCAST_DROP_ALL_MASK		0x1
5755 #define ETH_VPORT_TX_MODE_UCAST_DROP_ALL_SHIFT		0
5756 #define ETH_VPORT_TX_MODE_UCAST_ACCEPT_ALL_MASK		0x1
5757 #define ETH_VPORT_TX_MODE_UCAST_ACCEPT_ALL_SHIFT	1
5758 #define ETH_VPORT_TX_MODE_MCAST_DROP_ALL_MASK		0x1
5759 #define ETH_VPORT_TX_MODE_MCAST_DROP_ALL_SHIFT		2
5760 #define ETH_VPORT_TX_MODE_MCAST_ACCEPT_ALL_MASK		0x1
5761 #define ETH_VPORT_TX_MODE_MCAST_ACCEPT_ALL_SHIFT	3
5762 #define ETH_VPORT_TX_MODE_BCAST_ACCEPT_ALL_MASK		0x1
5763 #define ETH_VPORT_TX_MODE_BCAST_ACCEPT_ALL_SHIFT	4
5764 #define ETH_VPORT_TX_MODE_RESERVED1_MASK		0x7FF
5765 #define ETH_VPORT_TX_MODE_RESERVED1_SHIFT		5
5766 };
5767 
5768 /* GFT filter update action type */
5769 enum gft_filter_update_action {
5770 	GFT_ADD_FILTER,
5771 	GFT_DELETE_FILTER,
5772 	MAX_GFT_FILTER_UPDATE_ACTION
5773 };
5774 
5775 /* Ramrod data for rx add openflow filter */
5776 struct rx_add_openflow_filter_data {
5777 	__le16 action_icid;
5778 	u8 priority;
5779 	u8 reserved0;
5780 	__le32 tenant_id;
5781 	__le16 dst_mac_hi;
5782 	__le16 dst_mac_mid;
5783 	__le16 dst_mac_lo;
5784 	__le16 src_mac_hi;
5785 	__le16 src_mac_mid;
5786 	__le16 src_mac_lo;
5787 	__le16 vlan_id;
5788 	__le16 l2_eth_type;
5789 	u8 ipv4_dscp;
5790 	u8 ipv4_frag_type;
5791 	u8 ipv4_over_ip;
5792 	u8 tenant_id_exists;
5793 	__le32 ipv4_dst_addr;
5794 	__le32 ipv4_src_addr;
5795 	__le16 l4_dst_port;
5796 	__le16 l4_src_port;
5797 };
5798 
5799 /* Ramrod data for rx create gft action */
5800 struct rx_create_gft_action_data {
5801 	u8 vport_id;
5802 	u8 reserved[7];
5803 };
5804 
5805 /* Ramrod data for rx create openflow action */
5806 struct rx_create_openflow_action_data {
5807 	u8 vport_id;
5808 	u8 reserved[7];
5809 };
5810 
5811 /* Ramrod data for rx queue start ramrod */
5812 struct rx_queue_start_ramrod_data {
5813 	__le16 rx_queue_id;
5814 	__le16 num_of_pbl_pages;
5815 	__le16 bd_max_bytes;
5816 	__le16 sb_id;
5817 	u8 sb_index;
5818 	u8 vport_id;
5819 	u8 default_rss_queue_flg;
5820 	u8 complete_cqe_flg;
5821 	u8 complete_event_flg;
5822 	u8 stats_counter_id;
5823 	u8 pin_context;
5824 	u8 pxp_tph_valid_bd;
5825 	u8 pxp_tph_valid_pkt;
5826 	u8 pxp_st_hint;
5827 
5828 	__le16 pxp_st_index;
5829 	u8 pmd_mode;
5830 
5831 	u8 notify_en;
5832 	u8 toggle_val;
5833 
5834 	u8 vf_rx_prod_index;
5835 	u8 vf_rx_prod_use_zone_a;
5836 	u8 reserved[5];
5837 	__le16 reserved1;
5838 	struct regpair cqe_pbl_addr;
5839 	struct regpair bd_base;
5840 	struct regpair reserved2;
5841 };
5842 
5843 /* Ramrod data for rx queue stop ramrod */
5844 struct rx_queue_stop_ramrod_data {
5845 	__le16 rx_queue_id;
5846 	u8 complete_cqe_flg;
5847 	u8 complete_event_flg;
5848 	u8 vport_id;
5849 	u8 reserved[3];
5850 };
5851 
5852 /* Ramrod data for rx queue update ramrod */
5853 struct rx_queue_update_ramrod_data {
5854 	__le16 rx_queue_id;
5855 	u8 complete_cqe_flg;
5856 	u8 complete_event_flg;
5857 	u8 vport_id;
5858 	u8 set_default_rss_queue;
5859 	u8 reserved[3];
5860 	u8 reserved1;
5861 	u8 reserved2;
5862 	u8 reserved3;
5863 	__le16 reserved4;
5864 	__le16 reserved5;
5865 	struct regpair reserved6;
5866 };
5867 
5868 /* Ramrod data for rx Add UDP Filter */
5869 struct rx_udp_filter_data {
5870 	__le16 action_icid;
5871 	__le16 vlan_id;
5872 	u8 ip_type;
5873 	u8 tenant_id_exists;
5874 	__le16 reserved1;
5875 	__le32 ip_dst_addr[4];
5876 	__le32 ip_src_addr[4];
5877 	__le16 udp_dst_port;
5878 	__le16 udp_src_port;
5879 	__le32 tenant_id;
5880 };
5881 
5882 /* Add or delete GFT filter - filter is packet header of type of packet wished
5883  * to pass certain FW flow.
5884  */
5885 struct rx_update_gft_filter_data {
5886 	struct regpair pkt_hdr_addr;
5887 	__le16 pkt_hdr_length;
5888 	__le16 action_icid;
5889 	__le16 rx_qid;
5890 	__le16 flow_id;
5891 	__le16 vport_id;
5892 	u8 action_icid_valid;
5893 	u8 rx_qid_valid;
5894 	u8 flow_id_valid;
5895 	u8 filter_action;
5896 	u8 assert_on_error;
5897 	u8 inner_vlan_removal_en;
5898 };
5899 
5900 /* Ramrod data for tx queue start ramrod */
5901 struct tx_queue_start_ramrod_data {
5902 	__le16 sb_id;
5903 	u8 sb_index;
5904 	u8 vport_id;
5905 	u8 reserved0;
5906 	u8 stats_counter_id;
5907 	__le16 qm_pq_id;
5908 	u8 flags;
5909 #define TX_QUEUE_START_RAMROD_DATA_DISABLE_OPPORTUNISTIC_MASK	0x1
5910 #define TX_QUEUE_START_RAMROD_DATA_DISABLE_OPPORTUNISTIC_SHIFT	0
5911 #define TX_QUEUE_START_RAMROD_DATA_TEST_MODE_PKT_DUP_MASK	0x1
5912 #define TX_QUEUE_START_RAMROD_DATA_TEST_MODE_PKT_DUP_SHIFT	1
5913 #define TX_QUEUE_START_RAMROD_DATA_PMD_MODE_MASK		0x1
5914 #define TX_QUEUE_START_RAMROD_DATA_PMD_MODE_SHIFT		2
5915 #define TX_QUEUE_START_RAMROD_DATA_NOTIFY_EN_MASK		0x1
5916 #define TX_QUEUE_START_RAMROD_DATA_NOTIFY_EN_SHIFT		3
5917 #define TX_QUEUE_START_RAMROD_DATA_PIN_CONTEXT_MASK		0x1
5918 #define TX_QUEUE_START_RAMROD_DATA_PIN_CONTEXT_SHIFT		4
5919 #define TX_QUEUE_START_RAMROD_DATA_RESERVED1_MASK		0x7
5920 #define TX_QUEUE_START_RAMROD_DATA_RESERVED1_SHIFT		5
5921 	u8 pxp_st_hint;
5922 	u8 pxp_tph_valid_bd;
5923 	u8 pxp_tph_valid_pkt;
5924 	__le16 pxp_st_index;
5925 	__le16 comp_agg_size;
5926 	__le16 queue_zone_id;
5927 	__le16 reserved2;
5928 	__le16 pbl_size;
5929 	__le16 tx_queue_id;
5930 	__le16 same_as_last_id;
5931 	__le16 reserved[3];
5932 	struct regpair pbl_base_addr;
5933 	struct regpair bd_cons_address;
5934 };
5935 
5936 /* Ramrod data for tx queue stop ramrod */
5937 struct tx_queue_stop_ramrod_data {
5938 	__le16 reserved[4];
5939 };
5940 
5941 /* Ramrod data for tx queue update ramrod */
5942 struct tx_queue_update_ramrod_data {
5943 	__le16 update_qm_pq_id_flg;
5944 	__le16 qm_pq_id;
5945 	__le32 reserved0;
5946 	struct regpair reserved1[5];
5947 };
5948 
5949 /* Inner to Inner VLAN priority map update mode */
5950 enum update_in_to_in_pri_map_mode_enum {
5951 	ETH_IN_TO_IN_PRI_MAP_UPDATE_DISABLED,
5952 	ETH_IN_TO_IN_PRI_MAP_UPDATE_NON_RDMA_TBL,
5953 	ETH_IN_TO_IN_PRI_MAP_UPDATE_RDMA_TBL,
5954 	MAX_UPDATE_IN_TO_IN_PRI_MAP_MODE_ENUM
5955 };
5956 
5957 /* Ramrod data for vport update ramrod */
5958 struct vport_filter_update_ramrod_data {
5959 	struct eth_filter_cmd_header filter_cmd_hdr;
5960 	struct eth_filter_cmd filter_cmds[ETH_FILTER_RULES_COUNT];
5961 };
5962 
5963 /* Ramrod data for vport start ramrod */
5964 struct vport_start_ramrod_data {
5965 	u8 vport_id;
5966 	u8 sw_fid;
5967 	__le16 mtu;
5968 	u8 drop_ttl0_en;
5969 	u8 inner_vlan_removal_en;
5970 	struct eth_vport_rx_mode rx_mode;
5971 	struct eth_vport_tx_mode tx_mode;
5972 	struct eth_vport_tpa_param tpa_param;
5973 	__le16 default_vlan;
5974 	u8 tx_switching_en;
5975 	u8 anti_spoofing_en;
5976 	u8 default_vlan_en;
5977 	u8 handle_ptp_pkts;
5978 	u8 silent_vlan_removal_en;
5979 	u8 untagged;
5980 	struct eth_tx_err_vals tx_err_behav;
5981 	u8 zero_placement_offset;
5982 	u8 ctl_frame_mac_check_en;
5983 	u8 ctl_frame_ethtype_check_en;
5984 	u8 reserved0;
5985 	u8 reserved1;
5986 	u8 tx_dst_port_mode_config;
5987 	u8 dst_vport_id;
5988 	u8 tx_dst_port_mode;
5989 	u8 dst_vport_id_valid;
5990 	u8 wipe_inner_vlan_pri_en;
5991 	u8 reserved2[2];
5992 	struct eth_in_to_in_pri_map_cfg in_to_in_vlan_pri_map_cfg;
5993 };
5994 
5995 /* Ramrod data for vport stop ramrod */
5996 struct vport_stop_ramrod_data {
5997 	u8 vport_id;
5998 	u8 reserved[7];
5999 };
6000 
6001 /* Ramrod data for vport update ramrod */
6002 struct vport_update_ramrod_data_cmn {
6003 	u8 vport_id;
6004 	u8 update_rx_active_flg;
6005 	u8 rx_active_flg;
6006 	u8 update_tx_active_flg;
6007 	u8 tx_active_flg;
6008 	u8 update_rx_mode_flg;
6009 	u8 update_tx_mode_flg;
6010 	u8 update_approx_mcast_flg;
6011 
6012 	u8 update_rss_flg;
6013 	u8 update_inner_vlan_removal_en_flg;
6014 
6015 	u8 inner_vlan_removal_en;
6016 	u8 update_tpa_param_flg;
6017 	u8 update_tpa_en_flg;
6018 	u8 update_tx_switching_en_flg;
6019 
6020 	u8 tx_switching_en;
6021 	u8 update_anti_spoofing_en_flg;
6022 
6023 	u8 anti_spoofing_en;
6024 	u8 update_handle_ptp_pkts;
6025 
6026 	u8 handle_ptp_pkts;
6027 	u8 update_default_vlan_en_flg;
6028 
6029 	u8 default_vlan_en;
6030 
6031 	u8 update_default_vlan_flg;
6032 
6033 	__le16 default_vlan;
6034 	u8 update_accept_any_vlan_flg;
6035 
6036 	u8 accept_any_vlan;
6037 	u8 silent_vlan_removal_en;
6038 	u8 update_mtu_flg;
6039 
6040 	__le16 mtu;
6041 	u8 update_ctl_frame_checks_en_flg;
6042 	u8 ctl_frame_mac_check_en;
6043 	u8 ctl_frame_ethtype_check_en;
6044 	u8 update_in_to_in_pri_map_mode;
6045 	u8 in_to_in_pri_map[8];
6046 	u8 reserved[6];
6047 };
6048 
6049 struct vport_update_ramrod_mcast {
6050 	__le32 bins[ETH_MULTICAST_MAC_BINS_IN_REGS];
6051 };
6052 
6053 /* Ramrod data for vport update ramrod */
6054 struct vport_update_ramrod_data {
6055 	struct vport_update_ramrod_data_cmn common;
6056 
6057 	struct eth_vport_rx_mode rx_mode;
6058 	struct eth_vport_tx_mode tx_mode;
6059 	__le32 reserved[3];
6060 	struct eth_vport_tpa_param tpa_param;
6061 	struct vport_update_ramrod_mcast approx_mcast;
6062 	struct eth_vport_rss_config rss_config;
6063 };
6064 
6065 struct e4_xstorm_eth_conn_ag_ctx_dq_ext_ldpart {
6066 	u8 reserved0;
6067 	u8 state;
6068 	u8 flags0;
6069 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_EXIST_IN_QM0_MASK	0x1
6070 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_EXIST_IN_QM0_SHIFT	0
6071 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED1_MASK		0x1
6072 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED1_SHIFT		1
6073 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED2_MASK		0x1
6074 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED2_SHIFT		2
6075 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_EXIST_IN_QM3_MASK	0x1
6076 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_EXIST_IN_QM3_SHIFT	3
6077 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED3_MASK		0x1
6078 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED3_SHIFT		4
6079 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED4_MASK		0x1
6080 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED4_SHIFT		5
6081 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED5_MASK		0x1
6082 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED5_SHIFT		6
6083 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED6_MASK		0x1
6084 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED6_SHIFT		7
6085 	u8 flags1;
6086 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED7_MASK		0x1
6087 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED7_SHIFT		0
6088 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED8_MASK		0x1
6089 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED8_SHIFT		1
6090 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED9_MASK		0x1
6091 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED9_SHIFT		2
6092 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_BIT11_MASK		0x1
6093 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_BIT11_SHIFT		3
6094 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_E5_RESERVED2_MASK	0x1
6095 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_E5_RESERVED2_SHIFT	4
6096 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_E5_RESERVED3_MASK	0x1
6097 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_E5_RESERVED3_SHIFT	5
6098 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_TX_RULE_ACTIVE_MASK	0x1
6099 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_TX_RULE_ACTIVE_SHIFT	6
6100 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_DQ_CF_ACTIVE_MASK	0x1
6101 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_DQ_CF_ACTIVE_SHIFT	7
6102 	u8 flags2;
6103 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF0_MASK	0x3
6104 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF0_SHIFT	0
6105 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF1_MASK	0x3
6106 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF1_SHIFT	2
6107 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF2_MASK	0x3
6108 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF2_SHIFT	4
6109 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF3_MASK	0x3
6110 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF3_SHIFT	6
6111 	u8 flags3;
6112 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF4_MASK	0x3
6113 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF4_SHIFT	0
6114 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF5_MASK	0x3
6115 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF5_SHIFT	2
6116 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF6_MASK	0x3
6117 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF6_SHIFT	4
6118 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF7_MASK	0x3
6119 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF7_SHIFT	6
6120 	u8 flags4;
6121 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF8_MASK	0x3
6122 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF8_SHIFT	0
6123 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF9_MASK	0x3
6124 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF9_SHIFT	2
6125 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF10_MASK	0x3
6126 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF10_SHIFT	4
6127 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF11_MASK	0x3
6128 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF11_SHIFT	6
6129 	u8 flags5;
6130 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF12_MASK	0x3
6131 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF12_SHIFT	0
6132 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF13_MASK	0x3
6133 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF13_SHIFT	2
6134 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF14_MASK	0x3
6135 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF14_SHIFT	4
6136 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF15_MASK	0x3
6137 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF15_SHIFT	6
6138 	u8 flags6;
6139 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_GO_TO_BD_CONS_CF_MASK	0x3
6140 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_GO_TO_BD_CONS_CF_SHIFT	0
6141 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_MULTI_UNICAST_CF_MASK	0x3
6142 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_MULTI_UNICAST_CF_SHIFT	2
6143 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_DQ_CF_MASK		0x3
6144 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_DQ_CF_SHIFT		4
6145 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_TERMINATE_CF_MASK	0x3
6146 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_TERMINATE_CF_SHIFT	6
6147 	u8 flags7;
6148 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_FLUSH_Q0_MASK		0x3
6149 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_FLUSH_Q0_SHIFT		0
6150 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED10_MASK		0x3
6151 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED10_SHIFT	2
6152 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_SLOW_PATH_MASK		0x3
6153 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_SLOW_PATH_SHIFT		4
6154 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF0EN_MASK		0x1
6155 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF0EN_SHIFT		6
6156 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF1EN_MASK		0x1
6157 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF1EN_SHIFT		7
6158 	u8 flags8;
6159 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF2EN_MASK	0x1
6160 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF2EN_SHIFT	0
6161 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF3EN_MASK	0x1
6162 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF3EN_SHIFT	1
6163 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF4EN_MASK	0x1
6164 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF4EN_SHIFT	2
6165 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF5EN_MASK	0x1
6166 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF5EN_SHIFT	3
6167 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF6EN_MASK	0x1
6168 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF6EN_SHIFT	4
6169 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF7EN_MASK	0x1
6170 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF7EN_SHIFT	5
6171 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF8EN_MASK	0x1
6172 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF8EN_SHIFT	6
6173 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF9EN_MASK	0x1
6174 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF9EN_SHIFT	7
6175 	u8 flags9;
6176 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF10EN_MASK			0x1
6177 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF10EN_SHIFT			0
6178 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF11EN_MASK			0x1
6179 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF11EN_SHIFT			1
6180 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF12EN_MASK			0x1
6181 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF12EN_SHIFT			2
6182 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF13EN_MASK			0x1
6183 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF13EN_SHIFT			3
6184 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF14EN_MASK			0x1
6185 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF14EN_SHIFT			4
6186 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF15EN_MASK			0x1
6187 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF15EN_SHIFT			5
6188 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_GO_TO_BD_CONS_CF_EN_MASK	0x1
6189 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_GO_TO_BD_CONS_CF_EN_SHIFT	6
6190 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_MULTI_UNICAST_CF_EN_MASK	0x1
6191 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_MULTI_UNICAST_CF_EN_SHIFT	7
6192 	u8 flags10;
6193 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_DQ_CF_EN_MASK			0x1
6194 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_DQ_CF_EN_SHIFT			0
6195 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_TERMINATE_CF_EN_MASK		0x1
6196 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_TERMINATE_CF_EN_SHIFT		1
6197 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_FLUSH_Q0_EN_MASK		0x1
6198 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_FLUSH_Q0_EN_SHIFT		2
6199 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED11_MASK			0x1
6200 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED11_SHIFT		3
6201 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_SLOW_PATH_EN_MASK		0x1
6202 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_SLOW_PATH_EN_SHIFT		4
6203 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_TPH_ENABLE_EN_RESERVED_MASK	0x1
6204 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_TPH_ENABLE_EN_RESERVED_SHIFT	5
6205 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED12_MASK			0x1
6206 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED12_SHIFT		6
6207 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED13_MASK			0x1
6208 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED13_SHIFT		7
6209 	u8 flags11;
6210 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED14_MASK		0x1
6211 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED14_SHIFT	0
6212 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED15_MASK		0x1
6213 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED15_SHIFT	1
6214 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_TX_DEC_RULE_EN_MASK	0x1
6215 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_TX_DEC_RULE_EN_SHIFT	2
6216 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE5EN_MASK		0x1
6217 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE5EN_SHIFT		3
6218 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE6EN_MASK		0x1
6219 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE6EN_SHIFT		4
6220 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE7EN_MASK		0x1
6221 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE7EN_SHIFT		5
6222 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED1_MASK	0x1
6223 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED1_SHIFT	6
6224 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE9EN_MASK		0x1
6225 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE9EN_SHIFT		7
6226 	u8 flags12;
6227 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE10EN_MASK		0x1
6228 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE10EN_SHIFT		0
6229 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE11EN_MASK		0x1
6230 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE11EN_SHIFT		1
6231 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED2_MASK	0x1
6232 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED2_SHIFT	2
6233 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED3_MASK	0x1
6234 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED3_SHIFT	3
6235 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE14EN_MASK		0x1
6236 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE14EN_SHIFT		4
6237 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE15EN_MASK		0x1
6238 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE15EN_SHIFT		5
6239 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE16EN_MASK		0x1
6240 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE16EN_SHIFT		6
6241 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE17EN_MASK		0x1
6242 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE17EN_SHIFT		7
6243 	u8 flags13;
6244 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE18EN_MASK		0x1
6245 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE18EN_SHIFT		0
6246 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE19EN_MASK		0x1
6247 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE19EN_SHIFT		1
6248 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED4_MASK	0x1
6249 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED4_SHIFT	2
6250 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED5_MASK	0x1
6251 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED5_SHIFT	3
6252 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED6_MASK	0x1
6253 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED6_SHIFT	4
6254 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED7_MASK	0x1
6255 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED7_SHIFT	5
6256 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED8_MASK	0x1
6257 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED8_SHIFT	6
6258 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED9_MASK	0x1
6259 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED9_SHIFT	7
6260 	u8 flags14;
6261 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_EDPM_USE_EXT_HDR_MASK		0x1
6262 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_EDPM_USE_EXT_HDR_SHIFT		0
6263 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_EDPM_SEND_RAW_L3L4_MASK		0x1
6264 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_EDPM_SEND_RAW_L3L4_SHIFT	1
6265 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_EDPM_INBAND_PROP_HDR_MASK	0x1
6266 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_EDPM_INBAND_PROP_HDR_SHIFT	2
6267 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_EDPM_SEND_EXT_TUNNEL_MASK	0x1
6268 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_EDPM_SEND_EXT_TUNNEL_SHIFT	3
6269 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_L2_EDPM_ENABLE_MASK		0x1
6270 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_L2_EDPM_ENABLE_SHIFT		4
6271 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_ROCE_EDPM_ENABLE_MASK		0x1
6272 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_ROCE_EDPM_ENABLE_SHIFT		5
6273 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_TPH_ENABLE_MASK			0x3
6274 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_TPH_ENABLE_SHIFT		6
6275 	u8 edpm_event_id;
6276 	__le16 physical_q0;
6277 	__le16 e5_reserved1;
6278 	__le16 edpm_num_bds;
6279 	__le16 tx_bd_cons;
6280 	__le16 tx_bd_prod;
6281 	__le16 updated_qm_pq_id;
6282 	__le16 conn_dpi;
6283 	u8 byte3;
6284 	u8 byte4;
6285 	u8 byte5;
6286 	u8 byte6;
6287 	__le32 reg0;
6288 	__le32 reg1;
6289 	__le32 reg2;
6290 	__le32 reg3;
6291 	__le32 reg4;
6292 };
6293 
6294 struct e4_mstorm_eth_conn_ag_ctx {
6295 	u8 byte0;
6296 	u8 byte1;
6297 	u8 flags0;
6298 #define E4_MSTORM_ETH_CONN_AG_CTX_EXIST_IN_QM0_MASK	0x1
6299 #define E4_MSTORM_ETH_CONN_AG_CTX_EXIST_IN_QM0_SHIFT	 0
6300 #define E4_MSTORM_ETH_CONN_AG_CTX_BIT1_MASK		0x1
6301 #define E4_MSTORM_ETH_CONN_AG_CTX_BIT1_SHIFT		1
6302 #define E4_MSTORM_ETH_CONN_AG_CTX_CF0_MASK		0x3
6303 #define E4_MSTORM_ETH_CONN_AG_CTX_CF0_SHIFT		2
6304 #define E4_MSTORM_ETH_CONN_AG_CTX_CF1_MASK		0x3
6305 #define E4_MSTORM_ETH_CONN_AG_CTX_CF1_SHIFT		4
6306 #define E4_MSTORM_ETH_CONN_AG_CTX_CF2_MASK		0x3
6307 #define E4_MSTORM_ETH_CONN_AG_CTX_CF2_SHIFT		6
6308 	u8 flags1;
6309 #define E4_MSTORM_ETH_CONN_AG_CTX_CF0EN_MASK	0x1
6310 #define E4_MSTORM_ETH_CONN_AG_CTX_CF0EN_SHIFT	0
6311 #define E4_MSTORM_ETH_CONN_AG_CTX_CF1EN_MASK	0x1
6312 #define E4_MSTORM_ETH_CONN_AG_CTX_CF1EN_SHIFT	1
6313 #define E4_MSTORM_ETH_CONN_AG_CTX_CF2EN_MASK	0x1
6314 #define E4_MSTORM_ETH_CONN_AG_CTX_CF2EN_SHIFT	2
6315 #define E4_MSTORM_ETH_CONN_AG_CTX_RULE0EN_MASK	0x1
6316 #define E4_MSTORM_ETH_CONN_AG_CTX_RULE0EN_SHIFT	3
6317 #define E4_MSTORM_ETH_CONN_AG_CTX_RULE1EN_MASK	0x1
6318 #define E4_MSTORM_ETH_CONN_AG_CTX_RULE1EN_SHIFT	4
6319 #define E4_MSTORM_ETH_CONN_AG_CTX_RULE2EN_MASK	0x1
6320 #define E4_MSTORM_ETH_CONN_AG_CTX_RULE2EN_SHIFT	5
6321 #define E4_MSTORM_ETH_CONN_AG_CTX_RULE3EN_MASK	0x1
6322 #define E4_MSTORM_ETH_CONN_AG_CTX_RULE3EN_SHIFT	6
6323 #define E4_MSTORM_ETH_CONN_AG_CTX_RULE4EN_MASK	0x1
6324 #define E4_MSTORM_ETH_CONN_AG_CTX_RULE4EN_SHIFT	7
6325 	__le16 word0;
6326 	__le16 word1;
6327 	__le32 reg0;
6328 	__le32 reg1;
6329 };
6330 
6331 struct e4_xstorm_eth_hw_conn_ag_ctx {
6332 	u8 reserved0;
6333 	u8 state;
6334 	u8 flags0;
6335 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_EXIST_IN_QM0_MASK	0x1
6336 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_EXIST_IN_QM0_SHIFT	0
6337 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED1_MASK	0x1
6338 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED1_SHIFT	1
6339 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED2_MASK	0x1
6340 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED2_SHIFT	2
6341 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_EXIST_IN_QM3_MASK	0x1
6342 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_EXIST_IN_QM3_SHIFT	3
6343 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED3_MASK	0x1
6344 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED3_SHIFT	4
6345 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED4_MASK	0x1
6346 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED4_SHIFT	5
6347 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED5_MASK	0x1
6348 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED5_SHIFT	6
6349 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED6_MASK	0x1
6350 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED6_SHIFT	7
6351 	u8 flags1;
6352 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED7_MASK		0x1
6353 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED7_SHIFT		0
6354 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED8_MASK		0x1
6355 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED8_SHIFT		1
6356 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED9_MASK		0x1
6357 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED9_SHIFT		2
6358 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_BIT11_MASK			0x1
6359 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_BIT11_SHIFT		3
6360 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_E5_RESERVED2_MASK		0x1
6361 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_E5_RESERVED2_SHIFT		4
6362 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_E5_RESERVED3_MASK		0x1
6363 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_E5_RESERVED3_SHIFT		5
6364 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_TX_RULE_ACTIVE_MASK	0x1
6365 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_TX_RULE_ACTIVE_SHIFT	6
6366 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_DQ_CF_ACTIVE_MASK		0x1
6367 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_DQ_CF_ACTIVE_SHIFT		7
6368 	u8 flags2;
6369 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF0_MASK	0x3
6370 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF0_SHIFT	0
6371 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF1_MASK	0x3
6372 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF1_SHIFT	2
6373 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF2_MASK	0x3
6374 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF2_SHIFT	4
6375 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF3_MASK	0x3
6376 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF3_SHIFT	6
6377 	u8 flags3;
6378 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF4_MASK	0x3
6379 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF4_SHIFT	0
6380 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF5_MASK	0x3
6381 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF5_SHIFT	2
6382 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF6_MASK	0x3
6383 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF6_SHIFT	4
6384 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF7_MASK	0x3
6385 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF7_SHIFT	6
6386 	u8 flags4;
6387 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF8_MASK	0x3
6388 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF8_SHIFT	0
6389 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF9_MASK	0x3
6390 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF9_SHIFT	2
6391 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF10_MASK	0x3
6392 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF10_SHIFT	4
6393 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF11_MASK	0x3
6394 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF11_SHIFT	6
6395 	u8 flags5;
6396 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF12_MASK	0x3
6397 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF12_SHIFT	0
6398 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF13_MASK	0x3
6399 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF13_SHIFT	2
6400 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF14_MASK	0x3
6401 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF14_SHIFT	4
6402 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF15_MASK	0x3
6403 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF15_SHIFT	6
6404 	u8 flags6;
6405 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_GO_TO_BD_CONS_CF_MASK	0x3
6406 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_GO_TO_BD_CONS_CF_SHIFT	0
6407 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_MULTI_UNICAST_CF_MASK	0x3
6408 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_MULTI_UNICAST_CF_SHIFT	2
6409 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_DQ_CF_MASK			0x3
6410 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_DQ_CF_SHIFT		4
6411 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_TERMINATE_CF_MASK		0x3
6412 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_TERMINATE_CF_SHIFT		6
6413 	u8 flags7;
6414 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_FLUSH_Q0_MASK	0x3
6415 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_FLUSH_Q0_SHIFT	0
6416 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED10_MASK	0x3
6417 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED10_SHIFT	2
6418 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_SLOW_PATH_MASK	0x3
6419 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_SLOW_PATH_SHIFT	4
6420 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF0EN_MASK		0x1
6421 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF0EN_SHIFT	6
6422 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF1EN_MASK		0x1
6423 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF1EN_SHIFT	7
6424 	u8 flags8;
6425 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF2EN_MASK		0x1
6426 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF2EN_SHIFT	0
6427 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF3EN_MASK		0x1
6428 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF3EN_SHIFT	1
6429 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF4EN_MASK		0x1
6430 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF4EN_SHIFT	2
6431 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF5EN_MASK		0x1
6432 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF5EN_SHIFT	3
6433 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF6EN_MASK		0x1
6434 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF6EN_SHIFT	4
6435 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF7EN_MASK		0x1
6436 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF7EN_SHIFT	5
6437 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF8EN_MASK		0x1
6438 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF8EN_SHIFT	6
6439 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF9EN_MASK		0x1
6440 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF9EN_SHIFT	7
6441 	u8 flags9;
6442 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF10EN_MASK		0x1
6443 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF10EN_SHIFT		0
6444 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF11EN_MASK		0x1
6445 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF11EN_SHIFT		1
6446 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF12EN_MASK		0x1
6447 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF12EN_SHIFT		2
6448 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF13EN_MASK		0x1
6449 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF13EN_SHIFT		3
6450 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF14EN_MASK		0x1
6451 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF14EN_SHIFT		4
6452 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF15EN_MASK		0x1
6453 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF15EN_SHIFT		5
6454 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_GO_TO_BD_CONS_CF_EN_MASK	0x1
6455 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_GO_TO_BD_CONS_CF_EN_SHIFT	6
6456 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_MULTI_UNICAST_CF_EN_MASK	0x1
6457 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_MULTI_UNICAST_CF_EN_SHIFT	7
6458 	u8 flags10;
6459 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_DQ_CF_EN_MASK			0x1
6460 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_DQ_CF_EN_SHIFT			0
6461 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_TERMINATE_CF_EN_MASK		0x1
6462 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_TERMINATE_CF_EN_SHIFT		1
6463 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_FLUSH_Q0_EN_MASK			0x1
6464 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_FLUSH_Q0_EN_SHIFT			2
6465 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED11_MASK			0x1
6466 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED11_SHIFT			3
6467 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_SLOW_PATH_EN_MASK			0x1
6468 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_SLOW_PATH_EN_SHIFT			4
6469 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_TPH_ENABLE_EN_RESERVED_MASK	0x1
6470 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_TPH_ENABLE_EN_RESERVED_SHIFT	5
6471 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED12_MASK			0x1
6472 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED12_SHIFT			6
6473 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED13_MASK			0x1
6474 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED13_SHIFT			7
6475 	u8 flags11;
6476 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED14_MASK		0x1
6477 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED14_SHIFT		0
6478 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED15_MASK		0x1
6479 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED15_SHIFT		1
6480 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_TX_DEC_RULE_EN_MASK	0x1
6481 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_TX_DEC_RULE_EN_SHIFT	2
6482 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE5EN_MASK		0x1
6483 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE5EN_SHIFT		3
6484 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE6EN_MASK		0x1
6485 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE6EN_SHIFT		4
6486 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE7EN_MASK		0x1
6487 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE7EN_SHIFT		5
6488 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED1_MASK		0x1
6489 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED1_SHIFT		6
6490 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE9EN_MASK		0x1
6491 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE9EN_SHIFT		7
6492 	u8 flags12;
6493 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE10EN_MASK	0x1
6494 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE10EN_SHIFT	0
6495 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE11EN_MASK	0x1
6496 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE11EN_SHIFT	1
6497 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED2_MASK	0x1
6498 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED2_SHIFT	2
6499 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED3_MASK	0x1
6500 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED3_SHIFT	3
6501 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE14EN_MASK	0x1
6502 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE14EN_SHIFT	4
6503 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE15EN_MASK	0x1
6504 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE15EN_SHIFT	5
6505 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE16EN_MASK	0x1
6506 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE16EN_SHIFT	6
6507 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE17EN_MASK	0x1
6508 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE17EN_SHIFT	7
6509 	u8 flags13;
6510 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE18EN_MASK	0x1
6511 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE18EN_SHIFT	0
6512 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE19EN_MASK	0x1
6513 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE19EN_SHIFT	1
6514 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED4_MASK	0x1
6515 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED4_SHIFT	2
6516 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED5_MASK	0x1
6517 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED5_SHIFT	3
6518 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED6_MASK	0x1
6519 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED6_SHIFT	4
6520 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED7_MASK	0x1
6521 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED7_SHIFT	5
6522 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED8_MASK	0x1
6523 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED8_SHIFT	6
6524 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED9_MASK	0x1
6525 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED9_SHIFT	7
6526 	u8 flags14;
6527 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_EDPM_USE_EXT_HDR_MASK	0x1
6528 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_EDPM_USE_EXT_HDR_SHIFT	0
6529 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_EDPM_SEND_RAW_L3L4_MASK	0x1
6530 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_EDPM_SEND_RAW_L3L4_SHIFT	1
6531 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_EDPM_INBAND_PROP_HDR_MASK	0x1
6532 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_EDPM_INBAND_PROP_HDR_SHIFT	2
6533 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_EDPM_SEND_EXT_TUNNEL_MASK	0x1
6534 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_EDPM_SEND_EXT_TUNNEL_SHIFT	3
6535 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_L2_EDPM_ENABLE_MASK	0x1
6536 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_L2_EDPM_ENABLE_SHIFT	4
6537 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_ROCE_EDPM_ENABLE_MASK	0x1
6538 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_ROCE_EDPM_ENABLE_SHIFT	5
6539 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_TPH_ENABLE_MASK		0x3
6540 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_TPH_ENABLE_SHIFT		6
6541 	u8 edpm_event_id;
6542 	__le16 physical_q0;
6543 	__le16 e5_reserved1;
6544 	__le16 edpm_num_bds;
6545 	__le16 tx_bd_cons;
6546 	__le16 tx_bd_prod;
6547 	__le16 updated_qm_pq_id;
6548 	__le16 conn_dpi;
6549 };
6550 
6551 /* GFT CAM line struct with fields breakout */
6552 struct gft_cam_line_mapped {
6553 	__le32 camline;
6554 #define GFT_CAM_LINE_MAPPED_VALID_MASK				0x1
6555 #define GFT_CAM_LINE_MAPPED_VALID_SHIFT				0
6556 #define GFT_CAM_LINE_MAPPED_IP_VERSION_MASK			0x1
6557 #define GFT_CAM_LINE_MAPPED_IP_VERSION_SHIFT			1
6558 #define GFT_CAM_LINE_MAPPED_TUNNEL_IP_VERSION_MASK		0x1
6559 #define GFT_CAM_LINE_MAPPED_TUNNEL_IP_VERSION_SHIFT		2
6560 #define GFT_CAM_LINE_MAPPED_UPPER_PROTOCOL_TYPE_MASK		0xF
6561 #define GFT_CAM_LINE_MAPPED_UPPER_PROTOCOL_TYPE_SHIFT		3
6562 #define GFT_CAM_LINE_MAPPED_TUNNEL_TYPE_MASK			0xF
6563 #define GFT_CAM_LINE_MAPPED_TUNNEL_TYPE_SHIFT			7
6564 #define GFT_CAM_LINE_MAPPED_PF_ID_MASK				0xF
6565 #define GFT_CAM_LINE_MAPPED_PF_ID_SHIFT				11
6566 #define GFT_CAM_LINE_MAPPED_IP_VERSION_MASK_MASK		0x1
6567 #define GFT_CAM_LINE_MAPPED_IP_VERSION_MASK_SHIFT		15
6568 #define GFT_CAM_LINE_MAPPED_TUNNEL_IP_VERSION_MASK_MASK		0x1
6569 #define GFT_CAM_LINE_MAPPED_TUNNEL_IP_VERSION_MASK_SHIFT	16
6570 #define GFT_CAM_LINE_MAPPED_UPPER_PROTOCOL_TYPE_MASK_MASK	0xF
6571 #define GFT_CAM_LINE_MAPPED_UPPER_PROTOCOL_TYPE_MASK_SHIFT	17
6572 #define GFT_CAM_LINE_MAPPED_TUNNEL_TYPE_MASK_MASK		0xF
6573 #define GFT_CAM_LINE_MAPPED_TUNNEL_TYPE_MASK_SHIFT		21
6574 #define GFT_CAM_LINE_MAPPED_PF_ID_MASK_MASK			0xF
6575 #define GFT_CAM_LINE_MAPPED_PF_ID_MASK_SHIFT			25
6576 #define GFT_CAM_LINE_MAPPED_RESERVED1_MASK			0x7
6577 #define GFT_CAM_LINE_MAPPED_RESERVED1_SHIFT			29
6578 };
6579 
6580 
6581 /* Used in gft_profile_key: Indication for ip version */
6582 enum gft_profile_ip_version {
6583 	GFT_PROFILE_IPV4 = 0,
6584 	GFT_PROFILE_IPV6 = 1,
6585 	MAX_GFT_PROFILE_IP_VERSION
6586 };
6587 
6588 /* Profile key stucr fot GFT logic in Prs */
6589 struct gft_profile_key {
6590 	__le16 profile_key;
6591 #define GFT_PROFILE_KEY_IP_VERSION_MASK			0x1
6592 #define GFT_PROFILE_KEY_IP_VERSION_SHIFT		0
6593 #define GFT_PROFILE_KEY_TUNNEL_IP_VERSION_MASK		0x1
6594 #define GFT_PROFILE_KEY_TUNNEL_IP_VERSION_SHIFT		1
6595 #define GFT_PROFILE_KEY_UPPER_PROTOCOL_TYPE_MASK	0xF
6596 #define GFT_PROFILE_KEY_UPPER_PROTOCOL_TYPE_SHIFT	2
6597 #define GFT_PROFILE_KEY_TUNNEL_TYPE_MASK		0xF
6598 #define GFT_PROFILE_KEY_TUNNEL_TYPE_SHIFT		6
6599 #define GFT_PROFILE_KEY_PF_ID_MASK			0xF
6600 #define GFT_PROFILE_KEY_PF_ID_SHIFT			10
6601 #define GFT_PROFILE_KEY_RESERVED0_MASK			0x3
6602 #define GFT_PROFILE_KEY_RESERVED0_SHIFT			14
6603 };
6604 
6605 /* Used in gft_profile_key: Indication for tunnel type */
6606 enum gft_profile_tunnel_type {
6607 	GFT_PROFILE_NO_TUNNEL = 0,
6608 	GFT_PROFILE_VXLAN_TUNNEL = 1,
6609 	GFT_PROFILE_GRE_MAC_OR_NVGRE_TUNNEL = 2,
6610 	GFT_PROFILE_GRE_IP_TUNNEL = 3,
6611 	GFT_PROFILE_GENEVE_MAC_TUNNEL = 4,
6612 	GFT_PROFILE_GENEVE_IP_TUNNEL = 5,
6613 	MAX_GFT_PROFILE_TUNNEL_TYPE
6614 };
6615 
6616 /* Used in gft_profile_key: Indication for protocol type */
6617 enum gft_profile_upper_protocol_type {
6618 	GFT_PROFILE_ROCE_PROTOCOL = 0,
6619 	GFT_PROFILE_RROCE_PROTOCOL = 1,
6620 	GFT_PROFILE_FCOE_PROTOCOL = 2,
6621 	GFT_PROFILE_ICMP_PROTOCOL = 3,
6622 	GFT_PROFILE_ARP_PROTOCOL = 4,
6623 	GFT_PROFILE_USER_TCP_SRC_PORT_1_INNER = 5,
6624 	GFT_PROFILE_USER_TCP_DST_PORT_1_INNER = 6,
6625 	GFT_PROFILE_TCP_PROTOCOL = 7,
6626 	GFT_PROFILE_USER_UDP_DST_PORT_1_INNER = 8,
6627 	GFT_PROFILE_USER_UDP_DST_PORT_2_OUTER = 9,
6628 	GFT_PROFILE_UDP_PROTOCOL = 10,
6629 	GFT_PROFILE_USER_IP_1_INNER = 11,
6630 	GFT_PROFILE_USER_IP_2_OUTER = 12,
6631 	GFT_PROFILE_USER_ETH_1_INNER = 13,
6632 	GFT_PROFILE_USER_ETH_2_OUTER = 14,
6633 	GFT_PROFILE_RAW = 15,
6634 	MAX_GFT_PROFILE_UPPER_PROTOCOL_TYPE
6635 };
6636 
6637 /* GFT RAM line struct */
6638 struct gft_ram_line {
6639 	__le32 lo;
6640 #define GFT_RAM_LINE_VLAN_SELECT_MASK			0x3
6641 #define GFT_RAM_LINE_VLAN_SELECT_SHIFT			0
6642 #define GFT_RAM_LINE_TUNNEL_ENTROPHY_MASK		0x1
6643 #define GFT_RAM_LINE_TUNNEL_ENTROPHY_SHIFT		2
6644 #define GFT_RAM_LINE_TUNNEL_TTL_EQUAL_ONE_MASK		0x1
6645 #define GFT_RAM_LINE_TUNNEL_TTL_EQUAL_ONE_SHIFT		3
6646 #define GFT_RAM_LINE_TUNNEL_TTL_MASK			0x1
6647 #define GFT_RAM_LINE_TUNNEL_TTL_SHIFT			4
6648 #define GFT_RAM_LINE_TUNNEL_ETHERTYPE_MASK		0x1
6649 #define GFT_RAM_LINE_TUNNEL_ETHERTYPE_SHIFT		5
6650 #define GFT_RAM_LINE_TUNNEL_DST_PORT_MASK		0x1
6651 #define GFT_RAM_LINE_TUNNEL_DST_PORT_SHIFT		6
6652 #define GFT_RAM_LINE_TUNNEL_SRC_PORT_MASK		0x1
6653 #define GFT_RAM_LINE_TUNNEL_SRC_PORT_SHIFT		7
6654 #define GFT_RAM_LINE_TUNNEL_DSCP_MASK			0x1
6655 #define GFT_RAM_LINE_TUNNEL_DSCP_SHIFT			8
6656 #define GFT_RAM_LINE_TUNNEL_OVER_IP_PROTOCOL_MASK	0x1
6657 #define GFT_RAM_LINE_TUNNEL_OVER_IP_PROTOCOL_SHIFT	9
6658 #define GFT_RAM_LINE_TUNNEL_DST_IP_MASK			0x1
6659 #define GFT_RAM_LINE_TUNNEL_DST_IP_SHIFT		10
6660 #define GFT_RAM_LINE_TUNNEL_SRC_IP_MASK			0x1
6661 #define GFT_RAM_LINE_TUNNEL_SRC_IP_SHIFT		11
6662 #define GFT_RAM_LINE_TUNNEL_PRIORITY_MASK		0x1
6663 #define GFT_RAM_LINE_TUNNEL_PRIORITY_SHIFT		12
6664 #define GFT_RAM_LINE_TUNNEL_PROVIDER_VLAN_MASK		0x1
6665 #define GFT_RAM_LINE_TUNNEL_PROVIDER_VLAN_SHIFT		13
6666 #define GFT_RAM_LINE_TUNNEL_VLAN_MASK			0x1
6667 #define GFT_RAM_LINE_TUNNEL_VLAN_SHIFT			14
6668 #define GFT_RAM_LINE_TUNNEL_DST_MAC_MASK		0x1
6669 #define GFT_RAM_LINE_TUNNEL_DST_MAC_SHIFT		15
6670 #define GFT_RAM_LINE_TUNNEL_SRC_MAC_MASK		0x1
6671 #define GFT_RAM_LINE_TUNNEL_SRC_MAC_SHIFT		16
6672 #define GFT_RAM_LINE_TTL_EQUAL_ONE_MASK			0x1
6673 #define GFT_RAM_LINE_TTL_EQUAL_ONE_SHIFT		17
6674 #define GFT_RAM_LINE_TTL_MASK				0x1
6675 #define GFT_RAM_LINE_TTL_SHIFT				18
6676 #define GFT_RAM_LINE_ETHERTYPE_MASK			0x1
6677 #define GFT_RAM_LINE_ETHERTYPE_SHIFT			19
6678 #define GFT_RAM_LINE_RESERVED0_MASK			0x1
6679 #define GFT_RAM_LINE_RESERVED0_SHIFT			20
6680 #define GFT_RAM_LINE_TCP_FLAG_FIN_MASK			0x1
6681 #define GFT_RAM_LINE_TCP_FLAG_FIN_SHIFT			21
6682 #define GFT_RAM_LINE_TCP_FLAG_SYN_MASK			0x1
6683 #define GFT_RAM_LINE_TCP_FLAG_SYN_SHIFT			22
6684 #define GFT_RAM_LINE_TCP_FLAG_RST_MASK			0x1
6685 #define GFT_RAM_LINE_TCP_FLAG_RST_SHIFT			23
6686 #define GFT_RAM_LINE_TCP_FLAG_PSH_MASK			0x1
6687 #define GFT_RAM_LINE_TCP_FLAG_PSH_SHIFT			24
6688 #define GFT_RAM_LINE_TCP_FLAG_ACK_MASK			0x1
6689 #define GFT_RAM_LINE_TCP_FLAG_ACK_SHIFT			25
6690 #define GFT_RAM_LINE_TCP_FLAG_URG_MASK			0x1
6691 #define GFT_RAM_LINE_TCP_FLAG_URG_SHIFT			26
6692 #define GFT_RAM_LINE_TCP_FLAG_ECE_MASK			0x1
6693 #define GFT_RAM_LINE_TCP_FLAG_ECE_SHIFT			27
6694 #define GFT_RAM_LINE_TCP_FLAG_CWR_MASK			0x1
6695 #define GFT_RAM_LINE_TCP_FLAG_CWR_SHIFT			28
6696 #define GFT_RAM_LINE_TCP_FLAG_NS_MASK			0x1
6697 #define GFT_RAM_LINE_TCP_FLAG_NS_SHIFT			29
6698 #define GFT_RAM_LINE_DST_PORT_MASK			0x1
6699 #define GFT_RAM_LINE_DST_PORT_SHIFT			30
6700 #define GFT_RAM_LINE_SRC_PORT_MASK			0x1
6701 #define GFT_RAM_LINE_SRC_PORT_SHIFT			31
6702 	__le32 hi;
6703 #define GFT_RAM_LINE_DSCP_MASK				0x1
6704 #define GFT_RAM_LINE_DSCP_SHIFT				0
6705 #define GFT_RAM_LINE_OVER_IP_PROTOCOL_MASK		0x1
6706 #define GFT_RAM_LINE_OVER_IP_PROTOCOL_SHIFT		1
6707 #define GFT_RAM_LINE_DST_IP_MASK			0x1
6708 #define GFT_RAM_LINE_DST_IP_SHIFT			2
6709 #define GFT_RAM_LINE_SRC_IP_MASK			0x1
6710 #define GFT_RAM_LINE_SRC_IP_SHIFT			3
6711 #define GFT_RAM_LINE_PRIORITY_MASK			0x1
6712 #define GFT_RAM_LINE_PRIORITY_SHIFT			4
6713 #define GFT_RAM_LINE_PROVIDER_VLAN_MASK			0x1
6714 #define GFT_RAM_LINE_PROVIDER_VLAN_SHIFT		5
6715 #define GFT_RAM_LINE_VLAN_MASK				0x1
6716 #define GFT_RAM_LINE_VLAN_SHIFT				6
6717 #define GFT_RAM_LINE_DST_MAC_MASK			0x1
6718 #define GFT_RAM_LINE_DST_MAC_SHIFT			7
6719 #define GFT_RAM_LINE_SRC_MAC_MASK			0x1
6720 #define GFT_RAM_LINE_SRC_MAC_SHIFT			8
6721 #define GFT_RAM_LINE_TENANT_ID_MASK			0x1
6722 #define GFT_RAM_LINE_TENANT_ID_SHIFT			9
6723 #define GFT_RAM_LINE_RESERVED1_MASK			0x3FFFFF
6724 #define GFT_RAM_LINE_RESERVED1_SHIFT			10
6725 };
6726 
6727 /* Used in the first 2 bits for gft_ram_line: Indication for vlan mask */
6728 enum gft_vlan_select {
6729 	INNER_PROVIDER_VLAN = 0,
6730 	INNER_VLAN = 1,
6731 	OUTER_PROVIDER_VLAN = 2,
6732 	OUTER_VLAN = 3,
6733 	MAX_GFT_VLAN_SELECT
6734 };
6735 
6736 /* The rdma task context of Mstorm */
6737 struct ystorm_rdma_task_st_ctx {
6738 	struct regpair temp[4];
6739 };
6740 
6741 struct e4_ystorm_rdma_task_ag_ctx {
6742 	u8 reserved;
6743 	u8 byte1;
6744 	__le16 msem_ctx_upd_seq;
6745 	u8 flags0;
6746 #define E4_YSTORM_RDMA_TASK_AG_CTX_CONNECTION_TYPE_MASK		0xF
6747 #define E4_YSTORM_RDMA_TASK_AG_CTX_CONNECTION_TYPE_SHIFT	0
6748 #define E4_YSTORM_RDMA_TASK_AG_CTX_EXIST_IN_QM0_MASK		0x1
6749 #define E4_YSTORM_RDMA_TASK_AG_CTX_EXIST_IN_QM0_SHIFT		4
6750 #define E4_YSTORM_RDMA_TASK_AG_CTX_BIT1_MASK			0x1
6751 #define E4_YSTORM_RDMA_TASK_AG_CTX_BIT1_SHIFT			5
6752 #define E4_YSTORM_RDMA_TASK_AG_CTX_VALID_MASK			0x1
6753 #define E4_YSTORM_RDMA_TASK_AG_CTX_VALID_SHIFT			6
6754 #define E4_YSTORM_RDMA_TASK_AG_CTX_DIF_FIRST_IO_MASK		0x1
6755 #define E4_YSTORM_RDMA_TASK_AG_CTX_DIF_FIRST_IO_SHIFT		7
6756 	u8 flags1;
6757 #define E4_YSTORM_RDMA_TASK_AG_CTX_CF0_MASK		0x3
6758 #define E4_YSTORM_RDMA_TASK_AG_CTX_CF0_SHIFT		0
6759 #define E4_YSTORM_RDMA_TASK_AG_CTX_CF1_MASK		0x3
6760 #define E4_YSTORM_RDMA_TASK_AG_CTX_CF1_SHIFT		2
6761 #define E4_YSTORM_RDMA_TASK_AG_CTX_CF2SPECIAL_MASK	0x3
6762 #define E4_YSTORM_RDMA_TASK_AG_CTX_CF2SPECIAL_SHIFT	4
6763 #define E4_YSTORM_RDMA_TASK_AG_CTX_CF0EN_MASK		0x1
6764 #define E4_YSTORM_RDMA_TASK_AG_CTX_CF0EN_SHIFT		6
6765 #define E4_YSTORM_RDMA_TASK_AG_CTX_CF1EN_MASK		0x1
6766 #define E4_YSTORM_RDMA_TASK_AG_CTX_CF1EN_SHIFT		7
6767 	u8 flags2;
6768 #define E4_YSTORM_RDMA_TASK_AG_CTX_BIT4_MASK		0x1
6769 #define E4_YSTORM_RDMA_TASK_AG_CTX_BIT4_SHIFT		0
6770 #define E4_YSTORM_RDMA_TASK_AG_CTX_RULE0EN_MASK		0x1
6771 #define E4_YSTORM_RDMA_TASK_AG_CTX_RULE0EN_SHIFT	1
6772 #define E4_YSTORM_RDMA_TASK_AG_CTX_RULE1EN_MASK		0x1
6773 #define E4_YSTORM_RDMA_TASK_AG_CTX_RULE1EN_SHIFT	2
6774 #define E4_YSTORM_RDMA_TASK_AG_CTX_RULE2EN_MASK		0x1
6775 #define E4_YSTORM_RDMA_TASK_AG_CTX_RULE2EN_SHIFT	3
6776 #define E4_YSTORM_RDMA_TASK_AG_CTX_RULE3EN_MASK		0x1
6777 #define E4_YSTORM_RDMA_TASK_AG_CTX_RULE3EN_SHIFT	4
6778 #define E4_YSTORM_RDMA_TASK_AG_CTX_RULE4EN_MASK		0x1
6779 #define E4_YSTORM_RDMA_TASK_AG_CTX_RULE4EN_SHIFT	5
6780 #define E4_YSTORM_RDMA_TASK_AG_CTX_RULE5EN_MASK		0x1
6781 #define E4_YSTORM_RDMA_TASK_AG_CTX_RULE5EN_SHIFT	6
6782 #define E4_YSTORM_RDMA_TASK_AG_CTX_RULE6EN_MASK		0x1
6783 #define E4_YSTORM_RDMA_TASK_AG_CTX_RULE6EN_SHIFT	7
6784 	u8 key;
6785 	__le32 mw_cnt_or_qp_id;
6786 	u8 ref_cnt_seq;
6787 	u8 ctx_upd_seq;
6788 	__le16 dif_flags;
6789 	__le16 tx_ref_count;
6790 	__le16 last_used_ltid;
6791 	__le16 parent_mr_lo;
6792 	__le16 parent_mr_hi;
6793 	__le32 fbo_lo;
6794 	__le32 fbo_hi;
6795 };
6796 
6797 struct e4_mstorm_rdma_task_ag_ctx {
6798 	u8 reserved;
6799 	u8 byte1;
6800 	__le16 icid;
6801 	u8 flags0;
6802 #define E4_MSTORM_RDMA_TASK_AG_CTX_CONNECTION_TYPE_MASK		0xF
6803 #define E4_MSTORM_RDMA_TASK_AG_CTX_CONNECTION_TYPE_SHIFT	0
6804 #define E4_MSTORM_RDMA_TASK_AG_CTX_EXIST_IN_QM0_MASK		0x1
6805 #define E4_MSTORM_RDMA_TASK_AG_CTX_EXIST_IN_QM0_SHIFT		4
6806 #define E4_MSTORM_RDMA_TASK_AG_CTX_BIT1_MASK			0x1
6807 #define E4_MSTORM_RDMA_TASK_AG_CTX_BIT1_SHIFT			5
6808 #define E4_MSTORM_RDMA_TASK_AG_CTX_BIT2_MASK			0x1
6809 #define E4_MSTORM_RDMA_TASK_AG_CTX_BIT2_SHIFT			6
6810 #define E4_MSTORM_RDMA_TASK_AG_CTX_DIF_FIRST_IO_MASK		0x1
6811 #define E4_MSTORM_RDMA_TASK_AG_CTX_DIF_FIRST_IO_SHIFT		7
6812 	u8 flags1;
6813 #define E4_MSTORM_RDMA_TASK_AG_CTX_CF0_MASK	0x3
6814 #define E4_MSTORM_RDMA_TASK_AG_CTX_CF0_SHIFT	0
6815 #define E4_MSTORM_RDMA_TASK_AG_CTX_CF1_MASK	0x3
6816 #define E4_MSTORM_RDMA_TASK_AG_CTX_CF1_SHIFT	2
6817 #define E4_MSTORM_RDMA_TASK_AG_CTX_CF2_MASK	0x3
6818 #define E4_MSTORM_RDMA_TASK_AG_CTX_CF2_SHIFT	4
6819 #define E4_MSTORM_RDMA_TASK_AG_CTX_CF0EN_MASK	0x1
6820 #define E4_MSTORM_RDMA_TASK_AG_CTX_CF0EN_SHIFT	6
6821 #define E4_MSTORM_RDMA_TASK_AG_CTX_CF1EN_MASK	0x1
6822 #define E4_MSTORM_RDMA_TASK_AG_CTX_CF1EN_SHIFT	7
6823 	u8 flags2;
6824 #define E4_MSTORM_RDMA_TASK_AG_CTX_CF2EN_MASK		0x1
6825 #define E4_MSTORM_RDMA_TASK_AG_CTX_CF2EN_SHIFT		0
6826 #define E4_MSTORM_RDMA_TASK_AG_CTX_RULE0EN_MASK		0x1
6827 #define E4_MSTORM_RDMA_TASK_AG_CTX_RULE0EN_SHIFT	1
6828 #define E4_MSTORM_RDMA_TASK_AG_CTX_RULE1EN_MASK		0x1
6829 #define E4_MSTORM_RDMA_TASK_AG_CTX_RULE1EN_SHIFT	2
6830 #define E4_MSTORM_RDMA_TASK_AG_CTX_RULE2EN_MASK		0x1
6831 #define E4_MSTORM_RDMA_TASK_AG_CTX_RULE2EN_SHIFT	3
6832 #define E4_MSTORM_RDMA_TASK_AG_CTX_RULE3EN_MASK		0x1
6833 #define E4_MSTORM_RDMA_TASK_AG_CTX_RULE3EN_SHIFT	4
6834 #define E4_MSTORM_RDMA_TASK_AG_CTX_RULE4EN_MASK		0x1
6835 #define E4_MSTORM_RDMA_TASK_AG_CTX_RULE4EN_SHIFT	5
6836 #define E4_MSTORM_RDMA_TASK_AG_CTX_RULE5EN_MASK		0x1
6837 #define E4_MSTORM_RDMA_TASK_AG_CTX_RULE5EN_SHIFT	6
6838 #define E4_MSTORM_RDMA_TASK_AG_CTX_RULE6EN_MASK		0x1
6839 #define E4_MSTORM_RDMA_TASK_AG_CTX_RULE6EN_SHIFT	7
6840 	u8 key;
6841 	__le32 mw_cnt_or_qp_id;
6842 	u8 ref_cnt_seq;
6843 	u8 ctx_upd_seq;
6844 	__le16 dif_flags;
6845 	__le16 tx_ref_count;
6846 	__le16 last_used_ltid;
6847 	__le16 parent_mr_lo;
6848 	__le16 parent_mr_hi;
6849 	__le32 fbo_lo;
6850 	__le32 fbo_hi;
6851 };
6852 
6853 /* The roce task context of Mstorm */
6854 struct mstorm_rdma_task_st_ctx {
6855 	struct regpair temp[4];
6856 };
6857 
6858 /* The roce task context of Ustorm */
6859 struct ustorm_rdma_task_st_ctx {
6860 	struct regpair temp[6];
6861 };
6862 
6863 struct e4_ustorm_rdma_task_ag_ctx {
6864 	u8 reserved;
6865 	u8 state;
6866 	__le16 icid;
6867 	u8 flags0;
6868 #define E4_USTORM_RDMA_TASK_AG_CTX_CONNECTION_TYPE_MASK		0xF
6869 #define E4_USTORM_RDMA_TASK_AG_CTX_CONNECTION_TYPE_SHIFT	0
6870 #define E4_USTORM_RDMA_TASK_AG_CTX_EXIST_IN_QM0_MASK		0x1
6871 #define E4_USTORM_RDMA_TASK_AG_CTX_EXIST_IN_QM0_SHIFT		4
6872 #define E4_USTORM_RDMA_TASK_AG_CTX_BIT1_MASK			0x1
6873 #define E4_USTORM_RDMA_TASK_AG_CTX_BIT1_SHIFT			5
6874 #define E4_USTORM_RDMA_TASK_AG_CTX_DIF_WRITE_RESULT_CF_MASK	0x3
6875 #define E4_USTORM_RDMA_TASK_AG_CTX_DIF_WRITE_RESULT_CF_SHIFT	6
6876 	u8 flags1;
6877 #define E4_USTORM_RDMA_TASK_AG_CTX_DIF_RESULT_TOGGLE_BIT_MASK	0x3
6878 #define E4_USTORM_RDMA_TASK_AG_CTX_DIF_RESULT_TOGGLE_BIT_SHIFT	0
6879 #define E4_USTORM_RDMA_TASK_AG_CTX_DIF_TX_IO_FLG_MASK		0x3
6880 #define E4_USTORM_RDMA_TASK_AG_CTX_DIF_TX_IO_FLG_SHIFT		2
6881 #define E4_USTORM_RDMA_TASK_AG_CTX_DIF_BLOCK_SIZE_MASK          0x3
6882 #define E4_USTORM_RDMA_TASK_AG_CTX_DIF_BLOCK_SIZE_SHIFT         4
6883 #define E4_USTORM_RDMA_TASK_AG_CTX_DIF_ERROR_CF_MASK		0x3
6884 #define E4_USTORM_RDMA_TASK_AG_CTX_DIF_ERROR_CF_SHIFT		6
6885 	u8 flags2;
6886 #define E4_USTORM_RDMA_TASK_AG_CTX_DIF_WRITE_RESULT_CF_EN_MASK	0x1
6887 #define E4_USTORM_RDMA_TASK_AG_CTX_DIF_WRITE_RESULT_CF_EN_SHIFT	0
6888 #define E4_USTORM_RDMA_TASK_AG_CTX_RESERVED2_MASK		0x1
6889 #define E4_USTORM_RDMA_TASK_AG_CTX_RESERVED2_SHIFT		1
6890 #define E4_USTORM_RDMA_TASK_AG_CTX_RESERVED3_MASK		0x1
6891 #define E4_USTORM_RDMA_TASK_AG_CTX_RESERVED3_SHIFT		2
6892 #define E4_USTORM_RDMA_TASK_AG_CTX_RESERVED4_MASK               0x1
6893 #define E4_USTORM_RDMA_TASK_AG_CTX_RESERVED4_SHIFT              3
6894 #define E4_USTORM_RDMA_TASK_AG_CTX_DIF_ERROR_CF_EN_MASK		0x1
6895 #define E4_USTORM_RDMA_TASK_AG_CTX_DIF_ERROR_CF_EN_SHIFT	4
6896 #define E4_USTORM_RDMA_TASK_AG_CTX_RULE0EN_MASK			0x1
6897 #define E4_USTORM_RDMA_TASK_AG_CTX_RULE0EN_SHIFT		5
6898 #define E4_USTORM_RDMA_TASK_AG_CTX_RULE1EN_MASK			0x1
6899 #define E4_USTORM_RDMA_TASK_AG_CTX_RULE1EN_SHIFT		6
6900 #define E4_USTORM_RDMA_TASK_AG_CTX_RULE2EN_MASK			0x1
6901 #define E4_USTORM_RDMA_TASK_AG_CTX_RULE2EN_SHIFT		7
6902 	u8 flags3;
6903 #define E4_USTORM_RDMA_TASK_AG_CTX_DIF_RXMIT_PROD_CONS_EN_MASK	0x1
6904 #define E4_USTORM_RDMA_TASK_AG_CTX_DIF_RXMIT_PROD_CONS_EN_SHIFT	0
6905 #define E4_USTORM_RDMA_TASK_AG_CTX_RULE4EN_MASK			0x1
6906 #define E4_USTORM_RDMA_TASK_AG_CTX_RULE4EN_SHIFT		1
6907 #define E4_USTORM_RDMA_TASK_AG_CTX_DIF_WRITE_PROD_CONS_EN_MASK	0x1
6908 #define E4_USTORM_RDMA_TASK_AG_CTX_DIF_WRITE_PROD_CONS_EN_SHIFT	2
6909 #define E4_USTORM_RDMA_TASK_AG_CTX_RULE6EN_MASK			0x1
6910 #define E4_USTORM_RDMA_TASK_AG_CTX_RULE6EN_SHIFT		3
6911 #define E4_USTORM_RDMA_TASK_AG_CTX_DIF_ERROR_TYPE_MASK		0xF
6912 #define E4_USTORM_RDMA_TASK_AG_CTX_DIF_ERROR_TYPE_SHIFT		4
6913 	__le32 dif_err_intervals;
6914 	__le32 dif_error_1st_interval;
6915 	__le32 dif_rxmit_cons;
6916 	__le32 dif_rxmit_prod;
6917 	__le32 sge_index;
6918 	__le32 sq_cons;
6919 	u8 byte2;
6920 	u8 byte3;
6921 	__le16 dif_write_cons;
6922 	__le16 dif_write_prod;
6923 	__le16 word3;
6924 	__le32 dif_error_buffer_address_lo;
6925 	__le32 dif_error_buffer_address_hi;
6926 };
6927 
6928 /* RDMA task context */
6929 struct e4_rdma_task_context {
6930 	struct ystorm_rdma_task_st_ctx ystorm_st_context;
6931 	struct e4_ystorm_rdma_task_ag_ctx ystorm_ag_context;
6932 	struct tdif_task_context tdif_context;
6933 	struct e4_mstorm_rdma_task_ag_ctx mstorm_ag_context;
6934 	struct mstorm_rdma_task_st_ctx mstorm_st_context;
6935 	struct rdif_task_context rdif_context;
6936 	struct ustorm_rdma_task_st_ctx ustorm_st_context;
6937 	struct regpair ustorm_st_padding[2];
6938 	struct e4_ustorm_rdma_task_ag_ctx ustorm_ag_context;
6939 };
6940 
6941 /* rdma function init ramrod data */
6942 struct rdma_close_func_ramrod_data {
6943 	u8 cnq_start_offset;
6944 	u8 num_cnqs;
6945 	u8 vf_id;
6946 	u8 vf_valid;
6947 	u8 reserved[4];
6948 };
6949 
6950 /* rdma function init CNQ parameters */
6951 struct rdma_cnq_params {
6952 	__le16 sb_num;
6953 	u8 sb_index;
6954 	u8 num_pbl_pages;
6955 	__le32 reserved;
6956 	struct regpair pbl_base_addr;
6957 	__le16 queue_zone_num;
6958 	u8 reserved1[6];
6959 };
6960 
6961 /* rdma create cq ramrod data */
6962 struct rdma_create_cq_ramrod_data {
6963 	struct regpair cq_handle;
6964 	struct regpair pbl_addr;
6965 	__le32 max_cqes;
6966 	__le16 pbl_num_pages;
6967 	__le16 dpi;
6968 	u8 is_two_level_pbl;
6969 	u8 cnq_id;
6970 	u8 pbl_log_page_size;
6971 	u8 toggle_bit;
6972 	__le16 int_timeout;
6973 	u8 vf_id;
6974 	u8 flags;
6975 #define RDMA_CREATE_CQ_RAMROD_DATA_VF_ID_VALID_MASK  0x1
6976 #define RDMA_CREATE_CQ_RAMROD_DATA_VF_ID_VALID_SHIFT 0
6977 #define RDMA_CREATE_CQ_RAMROD_DATA_RESERVED1_MASK    0x7F
6978 #define RDMA_CREATE_CQ_RAMROD_DATA_RESERVED1_SHIFT   1
6979 };
6980 
6981 /* rdma deregister tid ramrod data */
6982 struct rdma_deregister_tid_ramrod_data {
6983 	__le32 itid;
6984 	__le32 reserved;
6985 };
6986 
6987 /* rdma destroy cq output params */
6988 struct rdma_destroy_cq_output_params {
6989 	__le16 cnq_num;
6990 	__le16 reserved0;
6991 	__le32 reserved1;
6992 };
6993 
6994 /* rdma destroy cq ramrod data */
6995 struct rdma_destroy_cq_ramrod_data {
6996 	struct regpair output_params_addr;
6997 };
6998 
6999 /* RDMA slow path EQ cmd IDs */
7000 enum rdma_event_opcode {
7001 	RDMA_EVENT_UNUSED,
7002 	RDMA_EVENT_FUNC_INIT,
7003 	RDMA_EVENT_FUNC_CLOSE,
7004 	RDMA_EVENT_REGISTER_MR,
7005 	RDMA_EVENT_DEREGISTER_MR,
7006 	RDMA_EVENT_CREATE_CQ,
7007 	RDMA_EVENT_RESIZE_CQ,
7008 	RDMA_EVENT_DESTROY_CQ,
7009 	RDMA_EVENT_CREATE_SRQ,
7010 	RDMA_EVENT_MODIFY_SRQ,
7011 	RDMA_EVENT_DESTROY_SRQ,
7012 	MAX_RDMA_EVENT_OPCODE
7013 };
7014 
7015 /* RDMA FW return code for slow path ramrods */
7016 enum rdma_fw_return_code {
7017 	RDMA_RETURN_OK = 0,
7018 	RDMA_RETURN_REGISTER_MR_BAD_STATE_ERR,
7019 	RDMA_RETURN_DEREGISTER_MR_BAD_STATE_ERR,
7020 	RDMA_RETURN_RESIZE_CQ_ERR,
7021 	RDMA_RETURN_NIG_DRAIN_REQ,
7022 	RDMA_RETURN_GENERAL_ERR,
7023 	MAX_RDMA_FW_RETURN_CODE
7024 };
7025 
7026 /* rdma function init header */
7027 struct rdma_init_func_hdr {
7028 	u8 cnq_start_offset;
7029 	u8 num_cnqs;
7030 	u8 cq_ring_mode;
7031 	u8 vf_id;
7032 	u8 vf_valid;
7033 	u8 relaxed_ordering;
7034 	__le16 first_reg_srq_id;
7035 	__le32 reg_srq_base_addr;
7036 	u8 searcher_mode;
7037 	u8 pvrdma_mode;
7038 	u8 max_num_ns_log;
7039 	u8 reserved;
7040 };
7041 
7042 /* rdma function init ramrod data */
7043 struct rdma_init_func_ramrod_data {
7044 	struct rdma_init_func_hdr params_header;
7045 	struct rdma_cnq_params cnq_params[NUM_OF_GLOBAL_QUEUES];
7046 };
7047 
7048 /* RDMA ramrod command IDs */
7049 enum rdma_ramrod_cmd_id {
7050 	RDMA_RAMROD_UNUSED,
7051 	RDMA_RAMROD_FUNC_INIT,
7052 	RDMA_RAMROD_FUNC_CLOSE,
7053 	RDMA_RAMROD_REGISTER_MR,
7054 	RDMA_RAMROD_DEREGISTER_MR,
7055 	RDMA_RAMROD_CREATE_CQ,
7056 	RDMA_RAMROD_RESIZE_CQ,
7057 	RDMA_RAMROD_DESTROY_CQ,
7058 	RDMA_RAMROD_CREATE_SRQ,
7059 	RDMA_RAMROD_MODIFY_SRQ,
7060 	RDMA_RAMROD_DESTROY_SRQ,
7061 	MAX_RDMA_RAMROD_CMD_ID
7062 };
7063 
7064 /* rdma register tid ramrod data */
7065 struct rdma_register_tid_ramrod_data {
7066 	__le16 flags;
7067 #define RDMA_REGISTER_TID_RAMROD_DATA_PAGE_SIZE_LOG_MASK	0x1F
7068 #define RDMA_REGISTER_TID_RAMROD_DATA_PAGE_SIZE_LOG_SHIFT	0
7069 #define RDMA_REGISTER_TID_RAMROD_DATA_TWO_LEVEL_PBL_MASK	0x1
7070 #define RDMA_REGISTER_TID_RAMROD_DATA_TWO_LEVEL_PBL_SHIFT	5
7071 #define RDMA_REGISTER_TID_RAMROD_DATA_ZERO_BASED_MASK		0x1
7072 #define RDMA_REGISTER_TID_RAMROD_DATA_ZERO_BASED_SHIFT		6
7073 #define RDMA_REGISTER_TID_RAMROD_DATA_PHY_MR_MASK		0x1
7074 #define RDMA_REGISTER_TID_RAMROD_DATA_PHY_MR_SHIFT		7
7075 #define RDMA_REGISTER_TID_RAMROD_DATA_REMOTE_READ_MASK		0x1
7076 #define RDMA_REGISTER_TID_RAMROD_DATA_REMOTE_READ_SHIFT		8
7077 #define RDMA_REGISTER_TID_RAMROD_DATA_REMOTE_WRITE_MASK		0x1
7078 #define RDMA_REGISTER_TID_RAMROD_DATA_REMOTE_WRITE_SHIFT	9
7079 #define RDMA_REGISTER_TID_RAMROD_DATA_REMOTE_ATOMIC_MASK	0x1
7080 #define RDMA_REGISTER_TID_RAMROD_DATA_REMOTE_ATOMIC_SHIFT	10
7081 #define RDMA_REGISTER_TID_RAMROD_DATA_LOCAL_WRITE_MASK		0x1
7082 #define RDMA_REGISTER_TID_RAMROD_DATA_LOCAL_WRITE_SHIFT		11
7083 #define RDMA_REGISTER_TID_RAMROD_DATA_LOCAL_READ_MASK		0x1
7084 #define RDMA_REGISTER_TID_RAMROD_DATA_LOCAL_READ_SHIFT		12
7085 #define RDMA_REGISTER_TID_RAMROD_DATA_ENABLE_MW_BIND_MASK	0x1
7086 #define RDMA_REGISTER_TID_RAMROD_DATA_ENABLE_MW_BIND_SHIFT	13
7087 #define RDMA_REGISTER_TID_RAMROD_DATA_RESERVED_MASK		0x3
7088 #define RDMA_REGISTER_TID_RAMROD_DATA_RESERVED_SHIFT		14
7089 	u8 flags1;
7090 #define RDMA_REGISTER_TID_RAMROD_DATA_PBL_PAGE_SIZE_LOG_MASK	0x1F
7091 #define RDMA_REGISTER_TID_RAMROD_DATA_PBL_PAGE_SIZE_LOG_SHIFT	0
7092 #define RDMA_REGISTER_TID_RAMROD_DATA_TID_TYPE_MASK		0x7
7093 #define RDMA_REGISTER_TID_RAMROD_DATA_TID_TYPE_SHIFT		5
7094 	u8 flags2;
7095 #define RDMA_REGISTER_TID_RAMROD_DATA_DMA_MR_MASK		0x1
7096 #define RDMA_REGISTER_TID_RAMROD_DATA_DMA_MR_SHIFT		0
7097 #define RDMA_REGISTER_TID_RAMROD_DATA_DIF_ON_HOST_FLG_MASK	0x1
7098 #define RDMA_REGISTER_TID_RAMROD_DATA_DIF_ON_HOST_FLG_SHIFT	1
7099 #define RDMA_REGISTER_TID_RAMROD_DATA_RESERVED1_MASK		0x3F
7100 #define RDMA_REGISTER_TID_RAMROD_DATA_RESERVED1_SHIFT		2
7101 	u8 key;
7102 	u8 length_hi;
7103 	u8 vf_id;
7104 	u8 vf_valid;
7105 	__le16 pd;
7106 	__le16 reserved2;
7107 	__le32 length_lo;
7108 	__le32 itid;
7109 	__le32 reserved3;
7110 	struct regpair va;
7111 	struct regpair pbl_base;
7112 	struct regpair dif_error_addr;
7113 	__le32 reserved4[4];
7114 };
7115 
7116 /* rdma resize cq output params */
7117 struct rdma_resize_cq_output_params {
7118 	__le32 old_cq_cons;
7119 	__le32 old_cq_prod;
7120 };
7121 
7122 /* rdma resize cq ramrod data */
7123 struct rdma_resize_cq_ramrod_data {
7124 	u8 flags;
7125 #define RDMA_RESIZE_CQ_RAMROD_DATA_TOGGLE_BIT_MASK		0x1
7126 #define RDMA_RESIZE_CQ_RAMROD_DATA_TOGGLE_BIT_SHIFT		0
7127 #define RDMA_RESIZE_CQ_RAMROD_DATA_IS_TWO_LEVEL_PBL_MASK	0x1
7128 #define RDMA_RESIZE_CQ_RAMROD_DATA_IS_TWO_LEVEL_PBL_SHIFT	1
7129 #define RDMA_RESIZE_CQ_RAMROD_DATA_VF_ID_VALID_MASK		0x1
7130 #define RDMA_RESIZE_CQ_RAMROD_DATA_VF_ID_VALID_SHIFT		2
7131 #define RDMA_RESIZE_CQ_RAMROD_DATA_RESERVED_MASK		0x1F
7132 #define RDMA_RESIZE_CQ_RAMROD_DATA_RESERVED_SHIFT		3
7133 	u8 pbl_log_page_size;
7134 	__le16 pbl_num_pages;
7135 	__le32 max_cqes;
7136 	struct regpair pbl_addr;
7137 	struct regpair output_params_addr;
7138 	u8 vf_id;
7139 	u8 reserved1[7];
7140 };
7141 
7142 /* The rdma SRQ context */
7143 struct rdma_srq_context {
7144 	struct regpair temp[8];
7145 };
7146 
7147 /* rdma create qp requester ramrod data */
7148 struct rdma_srq_create_ramrod_data {
7149 	u8 flags;
7150 #define RDMA_SRQ_CREATE_RAMROD_DATA_XRC_FLAG_MASK         0x1
7151 #define RDMA_SRQ_CREATE_RAMROD_DATA_XRC_FLAG_SHIFT        0
7152 #define RDMA_SRQ_CREATE_RAMROD_DATA_RESERVED_KEY_EN_MASK  0x1
7153 #define RDMA_SRQ_CREATE_RAMROD_DATA_RESERVED_KEY_EN_SHIFT 1
7154 #define RDMA_SRQ_CREATE_RAMROD_DATA_RESERVED1_MASK        0x3F
7155 #define RDMA_SRQ_CREATE_RAMROD_DATA_RESERVED1_SHIFT       2
7156 	u8 reserved2;
7157 	__le16 xrc_domain;
7158 	__le32 xrc_srq_cq_cid;
7159 	struct regpair pbl_base_addr;
7160 	__le16 pages_in_srq_pbl;
7161 	__le16 pd_id;
7162 	struct rdma_srq_id srq_id;
7163 	__le16 page_size;
7164 	__le16 reserved3;
7165 	__le32 reserved4;
7166 	struct regpair producers_addr;
7167 };
7168 
7169 /* rdma create qp requester ramrod data */
7170 struct rdma_srq_destroy_ramrod_data {
7171 	struct rdma_srq_id srq_id;
7172 	__le32 reserved;
7173 };
7174 
7175 /* rdma create qp requester ramrod data */
7176 struct rdma_srq_modify_ramrod_data {
7177 	struct rdma_srq_id srq_id;
7178 	__le32 wqe_limit;
7179 };
7180 
7181 /* RDMA Tid type enumeration (for register_tid ramrod) */
7182 enum rdma_tid_type {
7183 	RDMA_TID_REGISTERED_MR,
7184 	RDMA_TID_FMR,
7185 	RDMA_TID_MW,
7186 	MAX_RDMA_TID_TYPE
7187 };
7188 
7189 /* The rdma XRC SRQ context */
7190 struct rdma_xrc_srq_context {
7191 	struct regpair temp[9];
7192 };
7193 
7194 struct e4_tstorm_rdma_task_ag_ctx {
7195 	u8 byte0;
7196 	u8 byte1;
7197 	__le16 word0;
7198 	u8 flags0;
7199 #define E4_TSTORM_RDMA_TASK_AG_CTX_NIBBLE0_MASK		0xF
7200 #define E4_TSTORM_RDMA_TASK_AG_CTX_NIBBLE0_SHIFT	0
7201 #define E4_TSTORM_RDMA_TASK_AG_CTX_BIT0_MASK		0x1
7202 #define E4_TSTORM_RDMA_TASK_AG_CTX_BIT0_SHIFT		4
7203 #define E4_TSTORM_RDMA_TASK_AG_CTX_BIT1_MASK		0x1
7204 #define E4_TSTORM_RDMA_TASK_AG_CTX_BIT1_SHIFT		5
7205 #define E4_TSTORM_RDMA_TASK_AG_CTX_BIT2_MASK		0x1
7206 #define E4_TSTORM_RDMA_TASK_AG_CTX_BIT2_SHIFT		6
7207 #define E4_TSTORM_RDMA_TASK_AG_CTX_BIT3_MASK		0x1
7208 #define E4_TSTORM_RDMA_TASK_AG_CTX_BIT3_SHIFT		7
7209 	u8 flags1;
7210 #define E4_TSTORM_RDMA_TASK_AG_CTX_BIT4_MASK	0x1
7211 #define E4_TSTORM_RDMA_TASK_AG_CTX_BIT4_SHIFT	0
7212 #define E4_TSTORM_RDMA_TASK_AG_CTX_BIT5_MASK	0x1
7213 #define E4_TSTORM_RDMA_TASK_AG_CTX_BIT5_SHIFT	1
7214 #define E4_TSTORM_RDMA_TASK_AG_CTX_CF0_MASK	0x3
7215 #define E4_TSTORM_RDMA_TASK_AG_CTX_CF0_SHIFT	2
7216 #define E4_TSTORM_RDMA_TASK_AG_CTX_CF1_MASK	0x3
7217 #define E4_TSTORM_RDMA_TASK_AG_CTX_CF1_SHIFT	4
7218 #define E4_TSTORM_RDMA_TASK_AG_CTX_CF2_MASK	0x3
7219 #define E4_TSTORM_RDMA_TASK_AG_CTX_CF2_SHIFT	6
7220 	u8 flags2;
7221 #define E4_TSTORM_RDMA_TASK_AG_CTX_CF3_MASK	0x3
7222 #define E4_TSTORM_RDMA_TASK_AG_CTX_CF3_SHIFT	0
7223 #define E4_TSTORM_RDMA_TASK_AG_CTX_CF4_MASK	0x3
7224 #define E4_TSTORM_RDMA_TASK_AG_CTX_CF4_SHIFT	2
7225 #define E4_TSTORM_RDMA_TASK_AG_CTX_CF5_MASK	0x3
7226 #define E4_TSTORM_RDMA_TASK_AG_CTX_CF5_SHIFT	4
7227 #define E4_TSTORM_RDMA_TASK_AG_CTX_CF6_MASK	0x3
7228 #define E4_TSTORM_RDMA_TASK_AG_CTX_CF6_SHIFT	6
7229 	u8 flags3;
7230 #define E4_TSTORM_RDMA_TASK_AG_CTX_CF7_MASK	0x3
7231 #define E4_TSTORM_RDMA_TASK_AG_CTX_CF7_SHIFT	0
7232 #define E4_TSTORM_RDMA_TASK_AG_CTX_CF0EN_MASK	0x1
7233 #define E4_TSTORM_RDMA_TASK_AG_CTX_CF0EN_SHIFT	2
7234 #define E4_TSTORM_RDMA_TASK_AG_CTX_CF1EN_MASK	0x1
7235 #define E4_TSTORM_RDMA_TASK_AG_CTX_CF1EN_SHIFT	3
7236 #define E4_TSTORM_RDMA_TASK_AG_CTX_CF2EN_MASK	0x1
7237 #define E4_TSTORM_RDMA_TASK_AG_CTX_CF2EN_SHIFT	4
7238 #define E4_TSTORM_RDMA_TASK_AG_CTX_CF3EN_MASK	0x1
7239 #define E4_TSTORM_RDMA_TASK_AG_CTX_CF3EN_SHIFT	5
7240 #define E4_TSTORM_RDMA_TASK_AG_CTX_CF4EN_MASK	0x1
7241 #define E4_TSTORM_RDMA_TASK_AG_CTX_CF4EN_SHIFT	6
7242 #define E4_TSTORM_RDMA_TASK_AG_CTX_CF5EN_MASK	0x1
7243 #define E4_TSTORM_RDMA_TASK_AG_CTX_CF5EN_SHIFT	7
7244 	u8 flags4;
7245 #define E4_TSTORM_RDMA_TASK_AG_CTX_CF6EN_MASK		0x1
7246 #define E4_TSTORM_RDMA_TASK_AG_CTX_CF6EN_SHIFT		0
7247 #define E4_TSTORM_RDMA_TASK_AG_CTX_CF7EN_MASK		0x1
7248 #define E4_TSTORM_RDMA_TASK_AG_CTX_CF7EN_SHIFT		1
7249 #define E4_TSTORM_RDMA_TASK_AG_CTX_RULE0EN_MASK		0x1
7250 #define E4_TSTORM_RDMA_TASK_AG_CTX_RULE0EN_SHIFT	2
7251 #define E4_TSTORM_RDMA_TASK_AG_CTX_RULE1EN_MASK		0x1
7252 #define E4_TSTORM_RDMA_TASK_AG_CTX_RULE1EN_SHIFT	3
7253 #define E4_TSTORM_RDMA_TASK_AG_CTX_RULE2EN_MASK		0x1
7254 #define E4_TSTORM_RDMA_TASK_AG_CTX_RULE2EN_SHIFT	4
7255 #define E4_TSTORM_RDMA_TASK_AG_CTX_RULE3EN_MASK		0x1
7256 #define E4_TSTORM_RDMA_TASK_AG_CTX_RULE3EN_SHIFT	5
7257 #define E4_TSTORM_RDMA_TASK_AG_CTX_RULE4EN_MASK		0x1
7258 #define E4_TSTORM_RDMA_TASK_AG_CTX_RULE4EN_SHIFT	6
7259 #define E4_TSTORM_RDMA_TASK_AG_CTX_RULE5EN_MASK		0x1
7260 #define E4_TSTORM_RDMA_TASK_AG_CTX_RULE5EN_SHIFT	7
7261 	u8 byte2;
7262 	__le16 word1;
7263 	__le32 reg0;
7264 	u8 byte3;
7265 	u8 byte4;
7266 	__le16 word2;
7267 	__le16 word3;
7268 	__le16 word4;
7269 	__le32 reg1;
7270 	__le32 reg2;
7271 };
7272 
7273 struct e4_ustorm_rdma_conn_ag_ctx {
7274 	u8 reserved;
7275 	u8 byte1;
7276 	u8 flags0;
7277 #define E4_USTORM_RDMA_CONN_AG_CTX_EXIST_IN_QM0_MASK	0x1
7278 #define E4_USTORM_RDMA_CONN_AG_CTX_EXIST_IN_QM0_SHIFT	0
7279 #define E4_USTORM_RDMA_CONN_AG_CTX_DIF_ERROR_REPORTED_MASK  0x1
7280 #define E4_USTORM_RDMA_CONN_AG_CTX_DIF_ERROR_REPORTED_SHIFT 1
7281 #define E4_USTORM_RDMA_CONN_AG_CTX_FLUSH_Q0_CF_MASK	0x3
7282 #define E4_USTORM_RDMA_CONN_AG_CTX_FLUSH_Q0_CF_SHIFT	2
7283 #define E4_USTORM_RDMA_CONN_AG_CTX_CF1_MASK		0x3
7284 #define E4_USTORM_RDMA_CONN_AG_CTX_CF1_SHIFT		4
7285 #define E4_USTORM_RDMA_CONN_AG_CTX_CF2_MASK		0x3
7286 #define E4_USTORM_RDMA_CONN_AG_CTX_CF2_SHIFT		6
7287 	u8 flags1;
7288 #define E4_USTORM_RDMA_CONN_AG_CTX_CF3_MASK		0x3
7289 #define E4_USTORM_RDMA_CONN_AG_CTX_CF3_SHIFT		0
7290 #define E4_USTORM_RDMA_CONN_AG_CTX_CQ_ARM_SE_CF_MASK	0x3
7291 #define E4_USTORM_RDMA_CONN_AG_CTX_CQ_ARM_SE_CF_SHIFT	2
7292 #define E4_USTORM_RDMA_CONN_AG_CTX_CQ_ARM_CF_MASK	0x3
7293 #define E4_USTORM_RDMA_CONN_AG_CTX_CQ_ARM_CF_SHIFT	4
7294 #define E4_USTORM_RDMA_CONN_AG_CTX_CF6_MASK		0x3
7295 #define E4_USTORM_RDMA_CONN_AG_CTX_CF6_SHIFT		6
7296 	u8 flags2;
7297 #define E4_USTORM_RDMA_CONN_AG_CTX_FLUSH_Q0_CF_EN_MASK		0x1
7298 #define E4_USTORM_RDMA_CONN_AG_CTX_FLUSH_Q0_CF_EN_SHIFT		0
7299 #define E4_USTORM_RDMA_CONN_AG_CTX_CF1EN_MASK			0x1
7300 #define E4_USTORM_RDMA_CONN_AG_CTX_CF1EN_SHIFT			1
7301 #define E4_USTORM_RDMA_CONN_AG_CTX_CF2EN_MASK			0x1
7302 #define E4_USTORM_RDMA_CONN_AG_CTX_CF2EN_SHIFT			2
7303 #define E4_USTORM_RDMA_CONN_AG_CTX_CF3EN_MASK			0x1
7304 #define E4_USTORM_RDMA_CONN_AG_CTX_CF3EN_SHIFT			3
7305 #define E4_USTORM_RDMA_CONN_AG_CTX_CQ_ARM_SE_CF_EN_MASK		0x1
7306 #define E4_USTORM_RDMA_CONN_AG_CTX_CQ_ARM_SE_CF_EN_SHIFT	4
7307 #define E4_USTORM_RDMA_CONN_AG_CTX_CQ_ARM_CF_EN_MASK		0x1
7308 #define E4_USTORM_RDMA_CONN_AG_CTX_CQ_ARM_CF_EN_SHIFT		5
7309 #define E4_USTORM_RDMA_CONN_AG_CTX_CF6EN_MASK			0x1
7310 #define E4_USTORM_RDMA_CONN_AG_CTX_CF6EN_SHIFT			6
7311 #define E4_USTORM_RDMA_CONN_AG_CTX_CQ_SE_EN_MASK		0x1
7312 #define E4_USTORM_RDMA_CONN_AG_CTX_CQ_SE_EN_SHIFT		7
7313 	u8 flags3;
7314 #define E4_USTORM_RDMA_CONN_AG_CTX_CQ_EN_MASK		0x1
7315 #define E4_USTORM_RDMA_CONN_AG_CTX_CQ_EN_SHIFT		0
7316 #define E4_USTORM_RDMA_CONN_AG_CTX_RULE2EN_MASK		0x1
7317 #define E4_USTORM_RDMA_CONN_AG_CTX_RULE2EN_SHIFT	1
7318 #define E4_USTORM_RDMA_CONN_AG_CTX_RULE3EN_MASK		0x1
7319 #define E4_USTORM_RDMA_CONN_AG_CTX_RULE3EN_SHIFT	2
7320 #define E4_USTORM_RDMA_CONN_AG_CTX_RULE4EN_MASK		0x1
7321 #define E4_USTORM_RDMA_CONN_AG_CTX_RULE4EN_SHIFT	3
7322 #define E4_USTORM_RDMA_CONN_AG_CTX_RULE5EN_MASK		0x1
7323 #define E4_USTORM_RDMA_CONN_AG_CTX_RULE5EN_SHIFT	4
7324 #define E4_USTORM_RDMA_CONN_AG_CTX_RULE6EN_MASK		0x1
7325 #define E4_USTORM_RDMA_CONN_AG_CTX_RULE6EN_SHIFT	5
7326 #define E4_USTORM_RDMA_CONN_AG_CTX_RULE7EN_MASK		0x1
7327 #define E4_USTORM_RDMA_CONN_AG_CTX_RULE7EN_SHIFT	6
7328 #define E4_USTORM_RDMA_CONN_AG_CTX_RULE8EN_MASK		0x1
7329 #define E4_USTORM_RDMA_CONN_AG_CTX_RULE8EN_SHIFT	7
7330 	u8 byte2;
7331 	u8 nvmf_only;
7332 	__le16 conn_dpi;
7333 	__le16 word1;
7334 	__le32 cq_cons;
7335 	__le32 cq_se_prod;
7336 	__le32 cq_prod;
7337 	__le32 reg3;
7338 	__le16 int_timeout;
7339 	__le16 word3;
7340 };
7341 
7342 struct e4_xstorm_roce_conn_ag_ctx {
7343 	u8 reserved0;
7344 	u8 state;
7345 	u8 flags0;
7346 #define E4_XSTORM_ROCE_CONN_AG_CTX_EXIST_IN_QM0_MASK      0x1
7347 #define E4_XSTORM_ROCE_CONN_AG_CTX_EXIST_IN_QM0_SHIFT     0
7348 #define E4_XSTORM_ROCE_CONN_AG_CTX_BIT1_MASK              0x1
7349 #define E4_XSTORM_ROCE_CONN_AG_CTX_BIT1_SHIFT             1
7350 #define E4_XSTORM_ROCE_CONN_AG_CTX_BIT2_MASK              0x1
7351 #define E4_XSTORM_ROCE_CONN_AG_CTX_BIT2_SHIFT             2
7352 #define E4_XSTORM_ROCE_CONN_AG_CTX_EXIST_IN_QM3_MASK      0x1
7353 #define E4_XSTORM_ROCE_CONN_AG_CTX_EXIST_IN_QM3_SHIFT     3
7354 #define E4_XSTORM_ROCE_CONN_AG_CTX_BIT4_MASK              0x1
7355 #define E4_XSTORM_ROCE_CONN_AG_CTX_BIT4_SHIFT             4
7356 #define E4_XSTORM_ROCE_CONN_AG_CTX_BIT5_MASK              0x1
7357 #define E4_XSTORM_ROCE_CONN_AG_CTX_BIT5_SHIFT             5
7358 #define E4_XSTORM_ROCE_CONN_AG_CTX_BIT6_MASK              0x1
7359 #define E4_XSTORM_ROCE_CONN_AG_CTX_BIT6_SHIFT             6
7360 #define E4_XSTORM_ROCE_CONN_AG_CTX_BIT7_MASK              0x1
7361 #define E4_XSTORM_ROCE_CONN_AG_CTX_BIT7_SHIFT             7
7362 	u8 flags1;
7363 #define E4_XSTORM_ROCE_CONN_AG_CTX_BIT8_MASK              0x1
7364 #define E4_XSTORM_ROCE_CONN_AG_CTX_BIT8_SHIFT             0
7365 #define E4_XSTORM_ROCE_CONN_AG_CTX_BIT9_MASK              0x1
7366 #define E4_XSTORM_ROCE_CONN_AG_CTX_BIT9_SHIFT             1
7367 #define E4_XSTORM_ROCE_CONN_AG_CTX_BIT10_MASK             0x1
7368 #define E4_XSTORM_ROCE_CONN_AG_CTX_BIT10_SHIFT            2
7369 #define E4_XSTORM_ROCE_CONN_AG_CTX_BIT11_MASK             0x1
7370 #define E4_XSTORM_ROCE_CONN_AG_CTX_BIT11_SHIFT            3
7371 #define E4_XSTORM_ROCE_CONN_AG_CTX_MSDM_FLUSH_MASK        0x1
7372 #define E4_XSTORM_ROCE_CONN_AG_CTX_MSDM_FLUSH_SHIFT       4
7373 #define E4_XSTORM_ROCE_CONN_AG_CTX_MSEM_FLUSH_MASK        0x1
7374 #define E4_XSTORM_ROCE_CONN_AG_CTX_MSEM_FLUSH_SHIFT       5
7375 #define E4_XSTORM_ROCE_CONN_AG_CTX_BIT14_MASK	       0x1
7376 #define E4_XSTORM_ROCE_CONN_AG_CTX_BIT14_SHIFT	       6
7377 #define E4_XSTORM_ROCE_CONN_AG_CTX_YSTORM_FLUSH_MASK      0x1
7378 #define E4_XSTORM_ROCE_CONN_AG_CTX_YSTORM_FLUSH_SHIFT     7
7379 	u8 flags2;
7380 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF0_MASK               0x3
7381 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF0_SHIFT              0
7382 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF1_MASK               0x3
7383 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF1_SHIFT              2
7384 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF2_MASK               0x3
7385 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF2_SHIFT              4
7386 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF3_MASK               0x3
7387 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF3_SHIFT              6
7388 	u8 flags3;
7389 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF4_MASK               0x3
7390 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF4_SHIFT              0
7391 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF5_MASK               0x3
7392 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF5_SHIFT              2
7393 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF6_MASK               0x3
7394 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF6_SHIFT              4
7395 #define E4_XSTORM_ROCE_CONN_AG_CTX_FLUSH_Q0_CF_MASK       0x3
7396 #define E4_XSTORM_ROCE_CONN_AG_CTX_FLUSH_Q0_CF_SHIFT      6
7397 	u8 flags4;
7398 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF8_MASK               0x3
7399 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF8_SHIFT              0
7400 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF9_MASK               0x3
7401 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF9_SHIFT              2
7402 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF10_MASK              0x3
7403 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF10_SHIFT             4
7404 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF11_MASK              0x3
7405 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF11_SHIFT             6
7406 	u8 flags5;
7407 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF12_MASK              0x3
7408 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF12_SHIFT             0
7409 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF13_MASK              0x3
7410 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF13_SHIFT             2
7411 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF14_MASK              0x3
7412 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF14_SHIFT             4
7413 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF15_MASK              0x3
7414 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF15_SHIFT             6
7415 	u8 flags6;
7416 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF16_MASK              0x3
7417 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF16_SHIFT             0
7418 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF17_MASK              0x3
7419 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF17_SHIFT             2
7420 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF18_MASK              0x3
7421 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF18_SHIFT             4
7422 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF19_MASK              0x3
7423 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF19_SHIFT             6
7424 	u8 flags7;
7425 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF20_MASK              0x3
7426 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF20_SHIFT             0
7427 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF21_MASK              0x3
7428 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF21_SHIFT             2
7429 #define E4_XSTORM_ROCE_CONN_AG_CTX_SLOW_PATH_MASK         0x3
7430 #define E4_XSTORM_ROCE_CONN_AG_CTX_SLOW_PATH_SHIFT        4
7431 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF0EN_MASK             0x1
7432 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF0EN_SHIFT            6
7433 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF1EN_MASK             0x1
7434 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF1EN_SHIFT            7
7435 	u8 flags8;
7436 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF2EN_MASK             0x1
7437 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF2EN_SHIFT            0
7438 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF3EN_MASK             0x1
7439 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF3EN_SHIFT            1
7440 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF4EN_MASK             0x1
7441 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF4EN_SHIFT            2
7442 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF5EN_MASK             0x1
7443 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF5EN_SHIFT            3
7444 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF6EN_MASK             0x1
7445 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF6EN_SHIFT            4
7446 #define E4_XSTORM_ROCE_CONN_AG_CTX_FLUSH_Q0_CF_EN_MASK    0x1
7447 #define E4_XSTORM_ROCE_CONN_AG_CTX_FLUSH_Q0_CF_EN_SHIFT   5
7448 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF8EN_MASK             0x1
7449 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF8EN_SHIFT            6
7450 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF9EN_MASK             0x1
7451 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF9EN_SHIFT            7
7452 	u8 flags9;
7453 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF10EN_MASK            0x1
7454 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF10EN_SHIFT           0
7455 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF11EN_MASK            0x1
7456 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF11EN_SHIFT           1
7457 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF12EN_MASK            0x1
7458 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF12EN_SHIFT           2
7459 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF13EN_MASK            0x1
7460 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF13EN_SHIFT           3
7461 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF14EN_MASK            0x1
7462 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF14EN_SHIFT           4
7463 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF15EN_MASK            0x1
7464 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF15EN_SHIFT           5
7465 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF16EN_MASK            0x1
7466 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF16EN_SHIFT           6
7467 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF17EN_MASK            0x1
7468 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF17EN_SHIFT           7
7469 	u8 flags10;
7470 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF18EN_MASK            0x1
7471 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF18EN_SHIFT           0
7472 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF19EN_MASK            0x1
7473 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF19EN_SHIFT           1
7474 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF20EN_MASK            0x1
7475 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF20EN_SHIFT           2
7476 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF21EN_MASK            0x1
7477 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF21EN_SHIFT           3
7478 #define E4_XSTORM_ROCE_CONN_AG_CTX_SLOW_PATH_EN_MASK      0x1
7479 #define E4_XSTORM_ROCE_CONN_AG_CTX_SLOW_PATH_EN_SHIFT     4
7480 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF23EN_MASK            0x1
7481 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF23EN_SHIFT           5
7482 #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE0EN_MASK           0x1
7483 #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE0EN_SHIFT          6
7484 #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE1EN_MASK           0x1
7485 #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE1EN_SHIFT          7
7486 	u8 flags11;
7487 #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE2EN_MASK           0x1
7488 #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE2EN_SHIFT          0
7489 #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE3EN_MASK           0x1
7490 #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE3EN_SHIFT          1
7491 #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE4EN_MASK           0x1
7492 #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE4EN_SHIFT          2
7493 #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE5EN_MASK           0x1
7494 #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE5EN_SHIFT          3
7495 #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE6EN_MASK           0x1
7496 #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE6EN_SHIFT          4
7497 #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE7EN_MASK           0x1
7498 #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE7EN_SHIFT          5
7499 #define E4_XSTORM_ROCE_CONN_AG_CTX_A0_RESERVED1_MASK      0x1
7500 #define E4_XSTORM_ROCE_CONN_AG_CTX_A0_RESERVED1_SHIFT     6
7501 #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE9EN_MASK           0x1
7502 #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE9EN_SHIFT          7
7503 	u8 flags12;
7504 #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE10EN_MASK          0x1
7505 #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE10EN_SHIFT         0
7506 #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE11EN_MASK          0x1
7507 #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE11EN_SHIFT         1
7508 #define E4_XSTORM_ROCE_CONN_AG_CTX_A0_RESERVED2_MASK      0x1
7509 #define E4_XSTORM_ROCE_CONN_AG_CTX_A0_RESERVED2_SHIFT     2
7510 #define E4_XSTORM_ROCE_CONN_AG_CTX_A0_RESERVED3_MASK      0x1
7511 #define E4_XSTORM_ROCE_CONN_AG_CTX_A0_RESERVED3_SHIFT     3
7512 #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE14EN_MASK          0x1
7513 #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE14EN_SHIFT         4
7514 #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE15EN_MASK          0x1
7515 #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE15EN_SHIFT         5
7516 #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE16EN_MASK          0x1
7517 #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE16EN_SHIFT         6
7518 #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE17EN_MASK          0x1
7519 #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE17EN_SHIFT         7
7520 	u8 flags13;
7521 #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE18EN_MASK          0x1
7522 #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE18EN_SHIFT         0
7523 #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE19EN_MASK          0x1
7524 #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE19EN_SHIFT         1
7525 #define E4_XSTORM_ROCE_CONN_AG_CTX_A0_RESERVED4_MASK      0x1
7526 #define E4_XSTORM_ROCE_CONN_AG_CTX_A0_RESERVED4_SHIFT     2
7527 #define E4_XSTORM_ROCE_CONN_AG_CTX_A0_RESERVED5_MASK      0x1
7528 #define E4_XSTORM_ROCE_CONN_AG_CTX_A0_RESERVED5_SHIFT     3
7529 #define E4_XSTORM_ROCE_CONN_AG_CTX_A0_RESERVED6_MASK      0x1
7530 #define E4_XSTORM_ROCE_CONN_AG_CTX_A0_RESERVED6_SHIFT     4
7531 #define E4_XSTORM_ROCE_CONN_AG_CTX_A0_RESERVED7_MASK      0x1
7532 #define E4_XSTORM_ROCE_CONN_AG_CTX_A0_RESERVED7_SHIFT     5
7533 #define E4_XSTORM_ROCE_CONN_AG_CTX_A0_RESERVED8_MASK      0x1
7534 #define E4_XSTORM_ROCE_CONN_AG_CTX_A0_RESERVED8_SHIFT     6
7535 #define E4_XSTORM_ROCE_CONN_AG_CTX_A0_RESERVED9_MASK      0x1
7536 #define E4_XSTORM_ROCE_CONN_AG_CTX_A0_RESERVED9_SHIFT     7
7537 	u8 flags14;
7538 #define E4_XSTORM_ROCE_CONN_AG_CTX_MIGRATION_MASK         0x1
7539 #define E4_XSTORM_ROCE_CONN_AG_CTX_MIGRATION_SHIFT        0
7540 #define E4_XSTORM_ROCE_CONN_AG_CTX_BIT17_MASK             0x1
7541 #define E4_XSTORM_ROCE_CONN_AG_CTX_BIT17_SHIFT            1
7542 #define E4_XSTORM_ROCE_CONN_AG_CTX_DPM_PORT_NUM_MASK      0x3
7543 #define E4_XSTORM_ROCE_CONN_AG_CTX_DPM_PORT_NUM_SHIFT     2
7544 #define E4_XSTORM_ROCE_CONN_AG_CTX_RESERVED_MASK          0x1
7545 #define E4_XSTORM_ROCE_CONN_AG_CTX_RESERVED_SHIFT         4
7546 #define E4_XSTORM_ROCE_CONN_AG_CTX_ROCE_EDPM_ENABLE_MASK  0x1
7547 #define E4_XSTORM_ROCE_CONN_AG_CTX_ROCE_EDPM_ENABLE_SHIFT 5
7548 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF23_MASK              0x3
7549 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF23_SHIFT             6
7550 	u8 byte2;
7551 	__le16 physical_q0;
7552 	__le16 word1;
7553 	__le16 word2;
7554 	__le16 word3;
7555 	__le16 word4;
7556 	__le16 word5;
7557 	__le16 conn_dpi;
7558 	u8 byte3;
7559 	u8 byte4;
7560 	u8 byte5;
7561 	u8 byte6;
7562 	__le32 reg0;
7563 	__le32 reg1;
7564 	__le32 reg2;
7565 	__le32 snd_nxt_psn;
7566 	__le32 reg4;
7567 	__le32 reg5;
7568 	__le32 reg6;
7569 };
7570 
7571 struct e4_tstorm_roce_conn_ag_ctx {
7572 	u8 reserved0;
7573 	u8 byte1;
7574 	u8 flags0;
7575 #define E4_TSTORM_ROCE_CONN_AG_CTX_EXIST_IN_QM0_MASK          0x1
7576 #define E4_TSTORM_ROCE_CONN_AG_CTX_EXIST_IN_QM0_SHIFT         0
7577 #define E4_TSTORM_ROCE_CONN_AG_CTX_BIT1_MASK                  0x1
7578 #define E4_TSTORM_ROCE_CONN_AG_CTX_BIT1_SHIFT                 1
7579 #define E4_TSTORM_ROCE_CONN_AG_CTX_BIT2_MASK                  0x1
7580 #define E4_TSTORM_ROCE_CONN_AG_CTX_BIT2_SHIFT                 2
7581 #define E4_TSTORM_ROCE_CONN_AG_CTX_BIT3_MASK                  0x1
7582 #define E4_TSTORM_ROCE_CONN_AG_CTX_BIT3_SHIFT                 3
7583 #define E4_TSTORM_ROCE_CONN_AG_CTX_BIT4_MASK                  0x1
7584 #define E4_TSTORM_ROCE_CONN_AG_CTX_BIT4_SHIFT                 4
7585 #define E4_TSTORM_ROCE_CONN_AG_CTX_BIT5_MASK                  0x1
7586 #define E4_TSTORM_ROCE_CONN_AG_CTX_BIT5_SHIFT                 5
7587 #define E4_TSTORM_ROCE_CONN_AG_CTX_CF0_MASK                   0x3
7588 #define E4_TSTORM_ROCE_CONN_AG_CTX_CF0_SHIFT                  6
7589 	u8 flags1;
7590 #define E4_TSTORM_ROCE_CONN_AG_CTX_MSTORM_FLUSH_CF_MASK       0x3
7591 #define E4_TSTORM_ROCE_CONN_AG_CTX_MSTORM_FLUSH_CF_SHIFT      0
7592 #define E4_TSTORM_ROCE_CONN_AG_CTX_CF2_MASK                   0x3
7593 #define E4_TSTORM_ROCE_CONN_AG_CTX_CF2_SHIFT                  2
7594 #define E4_TSTORM_ROCE_CONN_AG_CTX_TIMER_STOP_ALL_CF_MASK     0x3
7595 #define E4_TSTORM_ROCE_CONN_AG_CTX_TIMER_STOP_ALL_CF_SHIFT    4
7596 #define E4_TSTORM_ROCE_CONN_AG_CTX_FLUSH_Q0_CF_MASK           0x3
7597 #define E4_TSTORM_ROCE_CONN_AG_CTX_FLUSH_Q0_CF_SHIFT          6
7598 	u8 flags2;
7599 #define E4_TSTORM_ROCE_CONN_AG_CTX_CF5_MASK                   0x3
7600 #define E4_TSTORM_ROCE_CONN_AG_CTX_CF5_SHIFT                  0
7601 #define E4_TSTORM_ROCE_CONN_AG_CTX_CF6_MASK                   0x3
7602 #define E4_TSTORM_ROCE_CONN_AG_CTX_CF6_SHIFT                  2
7603 #define E4_TSTORM_ROCE_CONN_AG_CTX_CF7_MASK                   0x3
7604 #define E4_TSTORM_ROCE_CONN_AG_CTX_CF7_SHIFT                  4
7605 #define E4_TSTORM_ROCE_CONN_AG_CTX_CF8_MASK                   0x3
7606 #define E4_TSTORM_ROCE_CONN_AG_CTX_CF8_SHIFT                  6
7607 	u8 flags3;
7608 #define E4_TSTORM_ROCE_CONN_AG_CTX_CF9_MASK                   0x3
7609 #define E4_TSTORM_ROCE_CONN_AG_CTX_CF9_SHIFT                  0
7610 #define E4_TSTORM_ROCE_CONN_AG_CTX_CF10_MASK                  0x3
7611 #define E4_TSTORM_ROCE_CONN_AG_CTX_CF10_SHIFT                 2
7612 #define E4_TSTORM_ROCE_CONN_AG_CTX_CF0EN_MASK                 0x1
7613 #define E4_TSTORM_ROCE_CONN_AG_CTX_CF0EN_SHIFT                4
7614 #define E4_TSTORM_ROCE_CONN_AG_CTX_MSTORM_FLUSH_CF_EN_MASK    0x1
7615 #define E4_TSTORM_ROCE_CONN_AG_CTX_MSTORM_FLUSH_CF_EN_SHIFT   5
7616 #define E4_TSTORM_ROCE_CONN_AG_CTX_CF2EN_MASK                 0x1
7617 #define E4_TSTORM_ROCE_CONN_AG_CTX_CF2EN_SHIFT                6
7618 #define E4_TSTORM_ROCE_CONN_AG_CTX_TIMER_STOP_ALL_CF_EN_MASK  0x1
7619 #define E4_TSTORM_ROCE_CONN_AG_CTX_TIMER_STOP_ALL_CF_EN_SHIFT 7
7620 	u8 flags4;
7621 #define E4_TSTORM_ROCE_CONN_AG_CTX_FLUSH_Q0_CF_EN_MASK        0x1
7622 #define E4_TSTORM_ROCE_CONN_AG_CTX_FLUSH_Q0_CF_EN_SHIFT       0
7623 #define E4_TSTORM_ROCE_CONN_AG_CTX_CF5EN_MASK                 0x1
7624 #define E4_TSTORM_ROCE_CONN_AG_CTX_CF5EN_SHIFT                1
7625 #define E4_TSTORM_ROCE_CONN_AG_CTX_CF6EN_MASK                 0x1
7626 #define E4_TSTORM_ROCE_CONN_AG_CTX_CF6EN_SHIFT                2
7627 #define E4_TSTORM_ROCE_CONN_AG_CTX_CF7EN_MASK                 0x1
7628 #define E4_TSTORM_ROCE_CONN_AG_CTX_CF7EN_SHIFT                3
7629 #define E4_TSTORM_ROCE_CONN_AG_CTX_CF8EN_MASK                 0x1
7630 #define E4_TSTORM_ROCE_CONN_AG_CTX_CF8EN_SHIFT                4
7631 #define E4_TSTORM_ROCE_CONN_AG_CTX_CF9EN_MASK                 0x1
7632 #define E4_TSTORM_ROCE_CONN_AG_CTX_CF9EN_SHIFT                5
7633 #define E4_TSTORM_ROCE_CONN_AG_CTX_CF10EN_MASK                0x1
7634 #define E4_TSTORM_ROCE_CONN_AG_CTX_CF10EN_SHIFT               6
7635 #define E4_TSTORM_ROCE_CONN_AG_CTX_RULE0EN_MASK               0x1
7636 #define E4_TSTORM_ROCE_CONN_AG_CTX_RULE0EN_SHIFT              7
7637 	u8 flags5;
7638 #define E4_TSTORM_ROCE_CONN_AG_CTX_RULE1EN_MASK               0x1
7639 #define E4_TSTORM_ROCE_CONN_AG_CTX_RULE1EN_SHIFT              0
7640 #define E4_TSTORM_ROCE_CONN_AG_CTX_RULE2EN_MASK               0x1
7641 #define E4_TSTORM_ROCE_CONN_AG_CTX_RULE2EN_SHIFT              1
7642 #define E4_TSTORM_ROCE_CONN_AG_CTX_RULE3EN_MASK               0x1
7643 #define E4_TSTORM_ROCE_CONN_AG_CTX_RULE3EN_SHIFT              2
7644 #define E4_TSTORM_ROCE_CONN_AG_CTX_RULE4EN_MASK               0x1
7645 #define E4_TSTORM_ROCE_CONN_AG_CTX_RULE4EN_SHIFT              3
7646 #define E4_TSTORM_ROCE_CONN_AG_CTX_RULE5EN_MASK               0x1
7647 #define E4_TSTORM_ROCE_CONN_AG_CTX_RULE5EN_SHIFT              4
7648 #define E4_TSTORM_ROCE_CONN_AG_CTX_RULE6EN_MASK               0x1
7649 #define E4_TSTORM_ROCE_CONN_AG_CTX_RULE6EN_SHIFT              5
7650 #define E4_TSTORM_ROCE_CONN_AG_CTX_RULE7EN_MASK               0x1
7651 #define E4_TSTORM_ROCE_CONN_AG_CTX_RULE7EN_SHIFT              6
7652 #define E4_TSTORM_ROCE_CONN_AG_CTX_RULE8EN_MASK               0x1
7653 #define E4_TSTORM_ROCE_CONN_AG_CTX_RULE8EN_SHIFT              7
7654 	__le32 reg0;
7655 	__le32 reg1;
7656 	__le32 reg2;
7657 	__le32 reg3;
7658 	__le32 reg4;
7659 	__le32 reg5;
7660 	__le32 reg6;
7661 	__le32 reg7;
7662 	__le32 reg8;
7663 	u8 byte2;
7664 	u8 byte3;
7665 	__le16 word0;
7666 	u8 byte4;
7667 	u8 byte5;
7668 	__le16 word1;
7669 	__le16 word2;
7670 	__le16 word3;
7671 	__le32 reg9;
7672 	__le32 reg10;
7673 };
7674 
7675 /* The roce storm context of Ystorm */
7676 struct ystorm_roce_conn_st_ctx {
7677 	struct regpair temp[2];
7678 };
7679 
7680 /* The roce storm context of Mstorm */
7681 struct pstorm_roce_conn_st_ctx {
7682 	struct regpair temp[16];
7683 };
7684 
7685 /* The roce storm context of Xstorm */
7686 struct xstorm_roce_conn_st_ctx {
7687 	struct regpair temp[24];
7688 };
7689 
7690 /* The roce storm context of Tstorm */
7691 struct tstorm_roce_conn_st_ctx {
7692 	struct regpair temp[30];
7693 };
7694 
7695 /* The roce storm context of Mstorm */
7696 struct mstorm_roce_conn_st_ctx {
7697 	struct regpair temp[6];
7698 };
7699 
7700 /* The roce storm context of Ustorm */
7701 struct ustorm_roce_conn_st_ctx {
7702 	struct regpair temp[14];
7703 };
7704 
7705 /* roce connection context */
7706 struct e4_roce_conn_context {
7707 	struct ystorm_roce_conn_st_ctx ystorm_st_context;
7708 	struct regpair ystorm_st_padding[2];
7709 	struct pstorm_roce_conn_st_ctx pstorm_st_context;
7710 	struct xstorm_roce_conn_st_ctx xstorm_st_context;
7711 	struct e4_xstorm_roce_conn_ag_ctx xstorm_ag_context;
7712 	struct e4_tstorm_roce_conn_ag_ctx tstorm_ag_context;
7713 	struct timers_context timer_context;
7714 	struct e4_ustorm_rdma_conn_ag_ctx ustorm_ag_context;
7715 	struct tstorm_roce_conn_st_ctx tstorm_st_context;
7716 	struct regpair tstorm_st_padding[2];
7717 	struct mstorm_roce_conn_st_ctx mstorm_st_context;
7718 	struct regpair mstorm_st_padding[2];
7719 	struct ustorm_roce_conn_st_ctx ustorm_st_context;
7720 	struct regpair ustorm_st_padding[2];
7721 };
7722 
7723 /* roce cqes statistics */
7724 struct roce_cqe_stats {
7725 	__le32 req_cqe_error;
7726 	__le32 req_remote_access_errors;
7727 	__le32 req_remote_invalid_request;
7728 	__le32 resp_cqe_error;
7729 	__le32 resp_local_length_error;
7730 	__le32 reserved;
7731 };
7732 
7733 /* roce create qp requester ramrod data */
7734 struct roce_create_qp_req_ramrod_data {
7735 	__le16 flags;
7736 #define ROCE_CREATE_QP_REQ_RAMROD_DATA_ROCE_FLAVOR_MASK			0x3
7737 #define ROCE_CREATE_QP_REQ_RAMROD_DATA_ROCE_FLAVOR_SHIFT		0
7738 #define ROCE_CREATE_QP_REQ_RAMROD_DATA_FMR_AND_RESERVED_EN_MASK		0x1
7739 #define ROCE_CREATE_QP_REQ_RAMROD_DATA_FMR_AND_RESERVED_EN_SHIFT	2
7740 #define ROCE_CREATE_QP_REQ_RAMROD_DATA_SIGNALED_COMP_MASK		0x1
7741 #define ROCE_CREATE_QP_REQ_RAMROD_DATA_SIGNALED_COMP_SHIFT		3
7742 #define ROCE_CREATE_QP_REQ_RAMROD_DATA_PRI_MASK				0x7
7743 #define ROCE_CREATE_QP_REQ_RAMROD_DATA_PRI_SHIFT			4
7744 #define ROCE_CREATE_QP_REQ_RAMROD_DATA_XRC_FLAG_MASK			0x1
7745 #define ROCE_CREATE_QP_REQ_RAMROD_DATA_XRC_FLAG_SHIFT			7
7746 #define ROCE_CREATE_QP_REQ_RAMROD_DATA_ERR_RETRY_CNT_MASK		0xF
7747 #define ROCE_CREATE_QP_REQ_RAMROD_DATA_ERR_RETRY_CNT_SHIFT		8
7748 #define ROCE_CREATE_QP_REQ_RAMROD_DATA_RNR_NAK_CNT_MASK			0xF
7749 #define ROCE_CREATE_QP_REQ_RAMROD_DATA_RNR_NAK_CNT_SHIFT		12
7750 	u8 max_ord;
7751 	u8 traffic_class;
7752 	u8 hop_limit;
7753 	u8 orq_num_pages;
7754 	__le16 p_key;
7755 	__le32 flow_label;
7756 	__le32 dst_qp_id;
7757 	__le32 ack_timeout_val;
7758 	__le32 initial_psn;
7759 	__le16 mtu;
7760 	__le16 pd;
7761 	__le16 sq_num_pages;
7762 	__le16 low_latency_phy_queue;
7763 	struct regpair sq_pbl_addr;
7764 	struct regpair orq_pbl_addr;
7765 	__le16 local_mac_addr[3];
7766 	__le16 remote_mac_addr[3];
7767 	__le16 vlan_id;
7768 	__le16 udp_src_port;
7769 	__le32 src_gid[4];
7770 	__le32 dst_gid[4];
7771 	__le32 cq_cid;
7772 	struct regpair qp_handle_for_cqe;
7773 	struct regpair qp_handle_for_async;
7774 	u8 stats_counter_id;
7775 	u8 vf_id;
7776 	u8 vport_id;
7777 	u8 flags2;
7778 #define ROCE_CREATE_QP_REQ_RAMROD_DATA_EDPM_MODE_MASK			0x1
7779 #define ROCE_CREATE_QP_REQ_RAMROD_DATA_EDPM_MODE_SHIFT			0
7780 #define ROCE_CREATE_QP_REQ_RAMROD_DATA_VF_ID_VALID_MASK			0x1
7781 #define ROCE_CREATE_QP_REQ_RAMROD_DATA_VF_ID_VALID_SHIFT		1
7782 #define ROCE_CREATE_QP_REQ_RAMROD_DATA_RESERVED_MASK			0x3F
7783 #define ROCE_CREATE_QP_REQ_RAMROD_DATA_RESERVED_SHIFT			2
7784 	u8 name_space;
7785 	u8 reserved3[3];
7786 	__le16 regular_latency_phy_queue;
7787 	__le16 dpi;
7788 };
7789 
7790 /* roce create qp responder ramrod data */
7791 struct roce_create_qp_resp_ramrod_data {
7792 	__le32 flags;
7793 #define ROCE_CREATE_QP_RESP_RAMROD_DATA_ROCE_FLAVOR_MASK		0x3
7794 #define ROCE_CREATE_QP_RESP_RAMROD_DATA_ROCE_FLAVOR_SHIFT		0
7795 #define ROCE_CREATE_QP_RESP_RAMROD_DATA_RDMA_RD_EN_MASK			0x1
7796 #define ROCE_CREATE_QP_RESP_RAMROD_DATA_RDMA_RD_EN_SHIFT		2
7797 #define ROCE_CREATE_QP_RESP_RAMROD_DATA_RDMA_WR_EN_MASK			0x1
7798 #define ROCE_CREATE_QP_RESP_RAMROD_DATA_RDMA_WR_EN_SHIFT		3
7799 #define ROCE_CREATE_QP_RESP_RAMROD_DATA_ATOMIC_EN_MASK			0x1
7800 #define ROCE_CREATE_QP_RESP_RAMROD_DATA_ATOMIC_EN_SHIFT			4
7801 #define ROCE_CREATE_QP_RESP_RAMROD_DATA_SRQ_FLG_MASK			0x1
7802 #define ROCE_CREATE_QP_RESP_RAMROD_DATA_SRQ_FLG_SHIFT			5
7803 #define ROCE_CREATE_QP_RESP_RAMROD_DATA_E2E_FLOW_CONTROL_EN_MASK	0x1
7804 #define ROCE_CREATE_QP_RESP_RAMROD_DATA_E2E_FLOW_CONTROL_EN_SHIFT	6
7805 #define ROCE_CREATE_QP_RESP_RAMROD_DATA_RESERVED_KEY_EN_MASK		0x1
7806 #define ROCE_CREATE_QP_RESP_RAMROD_DATA_RESERVED_KEY_EN_SHIFT		7
7807 #define ROCE_CREATE_QP_RESP_RAMROD_DATA_PRI_MASK			0x7
7808 #define ROCE_CREATE_QP_RESP_RAMROD_DATA_PRI_SHIFT			8
7809 #define ROCE_CREATE_QP_RESP_RAMROD_DATA_MIN_RNR_NAK_TIMER_MASK		0x1F
7810 #define ROCE_CREATE_QP_RESP_RAMROD_DATA_MIN_RNR_NAK_TIMER_SHIFT		11
7811 #define ROCE_CREATE_QP_RESP_RAMROD_DATA_XRC_FLAG_MASK             0x1
7812 #define ROCE_CREATE_QP_RESP_RAMROD_DATA_XRC_FLAG_SHIFT            16
7813 #define ROCE_CREATE_QP_RESP_RAMROD_DATA_VF_ID_VALID_MASK	0x1
7814 #define ROCE_CREATE_QP_RESP_RAMROD_DATA_VF_ID_VALID_SHIFT	17
7815 #define ROCE_CREATE_QP_RESP_RAMROD_DATA_RESERVED_MASK		0x3FFF
7816 #define ROCE_CREATE_QP_RESP_RAMROD_DATA_RESERVED_SHIFT		18
7817 	__le16 xrc_domain;
7818 	u8 max_ird;
7819 	u8 traffic_class;
7820 	u8 hop_limit;
7821 	u8 irq_num_pages;
7822 	__le16 p_key;
7823 	__le32 flow_label;
7824 	__le32 dst_qp_id;
7825 	u8 stats_counter_id;
7826 	u8 reserved1;
7827 	__le16 mtu;
7828 	__le32 initial_psn;
7829 	__le16 pd;
7830 	__le16 rq_num_pages;
7831 	struct rdma_srq_id srq_id;
7832 	struct regpair rq_pbl_addr;
7833 	struct regpair irq_pbl_addr;
7834 	__le16 local_mac_addr[3];
7835 	__le16 remote_mac_addr[3];
7836 	__le16 vlan_id;
7837 	__le16 udp_src_port;
7838 	__le32 src_gid[4];
7839 	__le32 dst_gid[4];
7840 	struct regpair qp_handle_for_cqe;
7841 	struct regpair qp_handle_for_async;
7842 	__le16 low_latency_phy_queue;
7843 	u8 vf_id;
7844 	u8 vport_id;
7845 	__le32 cq_cid;
7846 	__le16 regular_latency_phy_queue;
7847 	__le16 dpi;
7848 	__le32 src_qp_id;
7849 	u8 name_space;
7850 	u8 reserved3[3];
7851 };
7852 
7853 /* roce DCQCN received statistics */
7854 struct roce_dcqcn_received_stats {
7855 	struct regpair ecn_pkt_rcv;
7856 	struct regpair cnp_pkt_rcv;
7857 };
7858 
7859 /* roce DCQCN sent statistics */
7860 struct roce_dcqcn_sent_stats {
7861 	struct regpair cnp_pkt_sent;
7862 };
7863 
7864 /* RoCE destroy qp requester output params */
7865 struct roce_destroy_qp_req_output_params {
7866 	__le32 cq_prod;
7867 	__le32 reserved;
7868 };
7869 
7870 /* RoCE destroy qp requester ramrod data */
7871 struct roce_destroy_qp_req_ramrod_data {
7872 	struct regpair output_params_addr;
7873 };
7874 
7875 /* RoCE destroy qp responder output params */
7876 struct roce_destroy_qp_resp_output_params {
7877 	__le32 cq_prod;
7878 	__le32 reserved;
7879 };
7880 
7881 /* RoCE destroy qp responder ramrod data */
7882 struct roce_destroy_qp_resp_ramrod_data {
7883 	struct regpair output_params_addr;
7884 	__le32 src_qp_id;
7885 	__le32 reserved;
7886 };
7887 
7888 /* roce error statistics */
7889 struct roce_error_stats {
7890 	__le32 resp_remote_access_errors;
7891 	__le32 reserved;
7892 };
7893 
7894 /* roce special events statistics */
7895 struct roce_events_stats {
7896 	__le32 silent_drops;
7897 	__le32 rnr_naks_sent;
7898 	__le32 retransmit_count;
7899 	__le32 icrc_error_count;
7900 	__le32 implied_nak_seq_err;
7901 	__le32 duplicate_request;
7902 	__le32 local_ack_timeout_err;
7903 	__le32 out_of_sequence;
7904 	__le32 packet_seq_err;
7905 	__le32 rnr_nak_retry_err;
7906 };
7907 
7908 /* roce slow path EQ cmd IDs */
7909 enum roce_event_opcode {
7910 	ROCE_EVENT_CREATE_QP = 11,
7911 	ROCE_EVENT_MODIFY_QP,
7912 	ROCE_EVENT_QUERY_QP,
7913 	ROCE_EVENT_DESTROY_QP,
7914 	ROCE_EVENT_CREATE_UD_QP,
7915 	ROCE_EVENT_DESTROY_UD_QP,
7916 	ROCE_EVENT_FUNC_UPDATE,
7917 	MAX_ROCE_EVENT_OPCODE
7918 };
7919 
7920 /* roce func init ramrod data */
7921 struct roce_init_func_params {
7922 	u8 ll2_queue_id;
7923 	u8 cnp_vlan_priority;
7924 	u8 cnp_dscp;
7925 	u8 flags;
7926 #define ROCE_INIT_FUNC_PARAMS_DCQCN_NP_EN_MASK		0x1
7927 #define ROCE_INIT_FUNC_PARAMS_DCQCN_NP_EN_SHIFT		0
7928 #define ROCE_INIT_FUNC_PARAMS_DCQCN_RP_EN_MASK		0x1
7929 #define ROCE_INIT_FUNC_PARAMS_DCQCN_RP_EN_SHIFT		1
7930 #define ROCE_INIT_FUNC_PARAMS_RESERVED0_MASK		0x3F
7931 #define ROCE_INIT_FUNC_PARAMS_RESERVED0_SHIFT		2
7932 	__le32 cnp_send_timeout;
7933 	__le16 rl_offset;
7934 	u8 rl_count_log;
7935 	u8 reserved1[5];
7936 };
7937 
7938 /* roce func init ramrod data */
7939 struct roce_init_func_ramrod_data {
7940 	struct rdma_init_func_ramrod_data rdma;
7941 	struct roce_init_func_params roce;
7942 };
7943 
7944 /* roce modify qp requester ramrod data */
7945 struct roce_modify_qp_req_ramrod_data {
7946 	__le16 flags;
7947 #define ROCE_MODIFY_QP_REQ_RAMROD_DATA_MOVE_TO_ERR_FLG_MASK		0x1
7948 #define ROCE_MODIFY_QP_REQ_RAMROD_DATA_MOVE_TO_ERR_FLG_SHIFT		0
7949 #define ROCE_MODIFY_QP_REQ_RAMROD_DATA_MOVE_TO_SQD_FLG_MASK		0x1
7950 #define ROCE_MODIFY_QP_REQ_RAMROD_DATA_MOVE_TO_SQD_FLG_SHIFT		1
7951 #define ROCE_MODIFY_QP_REQ_RAMROD_DATA_EN_SQD_ASYNC_NOTIFY_MASK		0x1
7952 #define ROCE_MODIFY_QP_REQ_RAMROD_DATA_EN_SQD_ASYNC_NOTIFY_SHIFT	2
7953 #define ROCE_MODIFY_QP_REQ_RAMROD_DATA_P_KEY_FLG_MASK			0x1
7954 #define ROCE_MODIFY_QP_REQ_RAMROD_DATA_P_KEY_FLG_SHIFT			3
7955 #define ROCE_MODIFY_QP_REQ_RAMROD_DATA_ADDRESS_VECTOR_FLG_MASK		0x1
7956 #define ROCE_MODIFY_QP_REQ_RAMROD_DATA_ADDRESS_VECTOR_FLG_SHIFT		4
7957 #define ROCE_MODIFY_QP_REQ_RAMROD_DATA_MAX_ORD_FLG_MASK			0x1
7958 #define ROCE_MODIFY_QP_REQ_RAMROD_DATA_MAX_ORD_FLG_SHIFT		5
7959 #define ROCE_MODIFY_QP_REQ_RAMROD_DATA_RNR_NAK_CNT_FLG_MASK		0x1
7960 #define ROCE_MODIFY_QP_REQ_RAMROD_DATA_RNR_NAK_CNT_FLG_SHIFT		6
7961 #define ROCE_MODIFY_QP_REQ_RAMROD_DATA_ERR_RETRY_CNT_FLG_MASK		0x1
7962 #define ROCE_MODIFY_QP_REQ_RAMROD_DATA_ERR_RETRY_CNT_FLG_SHIFT		7
7963 #define ROCE_MODIFY_QP_REQ_RAMROD_DATA_ACK_TIMEOUT_FLG_MASK		0x1
7964 #define ROCE_MODIFY_QP_REQ_RAMROD_DATA_ACK_TIMEOUT_FLG_SHIFT		8
7965 #define ROCE_MODIFY_QP_REQ_RAMROD_DATA_PRI_FLG_MASK			0x1
7966 #define ROCE_MODIFY_QP_REQ_RAMROD_DATA_PRI_FLG_SHIFT			9
7967 #define ROCE_MODIFY_QP_REQ_RAMROD_DATA_PRI_MASK				0x7
7968 #define ROCE_MODIFY_QP_REQ_RAMROD_DATA_PRI_SHIFT			10
7969 #define ROCE_MODIFY_QP_REQ_RAMROD_DATA_PHYSICAL_QUEUE_FLG_MASK		0x1
7970 #define ROCE_MODIFY_QP_REQ_RAMROD_DATA_PHYSICAL_QUEUE_FLG_SHIFT		13
7971 #define ROCE_MODIFY_QP_REQ_RAMROD_DATA_RESERVED1_MASK			0x3
7972 #define ROCE_MODIFY_QP_REQ_RAMROD_DATA_RESERVED1_SHIFT			14
7973 	u8 fields;
7974 #define ROCE_MODIFY_QP_REQ_RAMROD_DATA_ERR_RETRY_CNT_MASK	0xF
7975 #define ROCE_MODIFY_QP_REQ_RAMROD_DATA_ERR_RETRY_CNT_SHIFT	0
7976 #define ROCE_MODIFY_QP_REQ_RAMROD_DATA_RNR_NAK_CNT_MASK		0xF
7977 #define ROCE_MODIFY_QP_REQ_RAMROD_DATA_RNR_NAK_CNT_SHIFT	4
7978 	u8 max_ord;
7979 	u8 traffic_class;
7980 	u8 hop_limit;
7981 	__le16 p_key;
7982 	__le32 flow_label;
7983 	__le32 ack_timeout_val;
7984 	__le16 mtu;
7985 	__le16 reserved2;
7986 	__le32 reserved3[2];
7987 	__le16 low_latency_phy_queue;
7988 	__le16 regular_latency_phy_queue;
7989 	__le32 src_gid[4];
7990 	__le32 dst_gid[4];
7991 };
7992 
7993 /* roce modify qp responder ramrod data */
7994 struct roce_modify_qp_resp_ramrod_data {
7995 	__le16 flags;
7996 #define ROCE_MODIFY_QP_RESP_RAMROD_DATA_MOVE_TO_ERR_FLG_MASK		0x1
7997 #define ROCE_MODIFY_QP_RESP_RAMROD_DATA_MOVE_TO_ERR_FLG_SHIFT		0
7998 #define ROCE_MODIFY_QP_RESP_RAMROD_DATA_RDMA_RD_EN_MASK			0x1
7999 #define ROCE_MODIFY_QP_RESP_RAMROD_DATA_RDMA_RD_EN_SHIFT		1
8000 #define ROCE_MODIFY_QP_RESP_RAMROD_DATA_RDMA_WR_EN_MASK			0x1
8001 #define ROCE_MODIFY_QP_RESP_RAMROD_DATA_RDMA_WR_EN_SHIFT		2
8002 #define ROCE_MODIFY_QP_RESP_RAMROD_DATA_ATOMIC_EN_MASK			0x1
8003 #define ROCE_MODIFY_QP_RESP_RAMROD_DATA_ATOMIC_EN_SHIFT			3
8004 #define ROCE_MODIFY_QP_RESP_RAMROD_DATA_P_KEY_FLG_MASK			0x1
8005 #define ROCE_MODIFY_QP_RESP_RAMROD_DATA_P_KEY_FLG_SHIFT			4
8006 #define ROCE_MODIFY_QP_RESP_RAMROD_DATA_ADDRESS_VECTOR_FLG_MASK		0x1
8007 #define ROCE_MODIFY_QP_RESP_RAMROD_DATA_ADDRESS_VECTOR_FLG_SHIFT	5
8008 #define ROCE_MODIFY_QP_RESP_RAMROD_DATA_MAX_IRD_FLG_MASK		0x1
8009 #define ROCE_MODIFY_QP_RESP_RAMROD_DATA_MAX_IRD_FLG_SHIFT		6
8010 #define ROCE_MODIFY_QP_RESP_RAMROD_DATA_PRI_FLG_MASK			0x1
8011 #define ROCE_MODIFY_QP_RESP_RAMROD_DATA_PRI_FLG_SHIFT			7
8012 #define ROCE_MODIFY_QP_RESP_RAMROD_DATA_MIN_RNR_NAK_TIMER_FLG_MASK	0x1
8013 #define ROCE_MODIFY_QP_RESP_RAMROD_DATA_MIN_RNR_NAK_TIMER_FLG_SHIFT	8
8014 #define ROCE_MODIFY_QP_RESP_RAMROD_DATA_RDMA_OPS_EN_FLG_MASK		0x1
8015 #define ROCE_MODIFY_QP_RESP_RAMROD_DATA_RDMA_OPS_EN_FLG_SHIFT		9
8016 #define ROCE_MODIFY_QP_RESP_RAMROD_DATA_PHYSICAL_QUEUE_FLG_MASK		0x1
8017 #define ROCE_MODIFY_QP_RESP_RAMROD_DATA_PHYSICAL_QUEUE_FLG_SHIFT	10
8018 #define ROCE_MODIFY_QP_RESP_RAMROD_DATA_RESERVED1_MASK			0x1F
8019 #define ROCE_MODIFY_QP_RESP_RAMROD_DATA_RESERVED1_SHIFT			11
8020 	u8 fields;
8021 #define ROCE_MODIFY_QP_RESP_RAMROD_DATA_PRI_MASK		0x7
8022 #define ROCE_MODIFY_QP_RESP_RAMROD_DATA_PRI_SHIFT		0
8023 #define ROCE_MODIFY_QP_RESP_RAMROD_DATA_MIN_RNR_NAK_TIMER_MASK	0x1F
8024 #define ROCE_MODIFY_QP_RESP_RAMROD_DATA_MIN_RNR_NAK_TIMER_SHIFT	3
8025 	u8 max_ird;
8026 	u8 traffic_class;
8027 	u8 hop_limit;
8028 	__le16 p_key;
8029 	__le32 flow_label;
8030 	__le16 mtu;
8031 	__le16 low_latency_phy_queue;
8032 	__le16 regular_latency_phy_queue;
8033 	u8 reserved2[6];
8034 	__le32 src_gid[4];
8035 	__le32 dst_gid[4];
8036 };
8037 
8038 /* RoCE query qp requester output params */
8039 struct roce_query_qp_req_output_params {
8040 	__le32 psn;
8041 	__le32 flags;
8042 #define ROCE_QUERY_QP_REQ_OUTPUT_PARAMS_ERR_FLG_MASK		0x1
8043 #define ROCE_QUERY_QP_REQ_OUTPUT_PARAMS_ERR_FLG_SHIFT		0
8044 #define ROCE_QUERY_QP_REQ_OUTPUT_PARAMS_SQ_DRAINING_FLG_MASK	0x1
8045 #define ROCE_QUERY_QP_REQ_OUTPUT_PARAMS_SQ_DRAINING_FLG_SHIFT	1
8046 #define ROCE_QUERY_QP_REQ_OUTPUT_PARAMS_RESERVED0_MASK		0x3FFFFFFF
8047 #define ROCE_QUERY_QP_REQ_OUTPUT_PARAMS_RESERVED0_SHIFT		2
8048 };
8049 
8050 /* RoCE query qp requester ramrod data */
8051 struct roce_query_qp_req_ramrod_data {
8052 	struct regpair output_params_addr;
8053 };
8054 
8055 /* RoCE query qp responder output params */
8056 struct roce_query_qp_resp_output_params {
8057 	__le32 psn;
8058 	__le32 flags;
8059 #define ROCE_QUERY_QP_RESP_OUTPUT_PARAMS_ERROR_FLG_MASK  0x1
8060 #define ROCE_QUERY_QP_RESP_OUTPUT_PARAMS_ERROR_FLG_SHIFT 0
8061 #define ROCE_QUERY_QP_RESP_OUTPUT_PARAMS_RESERVED0_MASK  0x7FFFFFFF
8062 #define ROCE_QUERY_QP_RESP_OUTPUT_PARAMS_RESERVED0_SHIFT 1
8063 };
8064 
8065 /* RoCE query qp responder ramrod data */
8066 struct roce_query_qp_resp_ramrod_data {
8067 	struct regpair output_params_addr;
8068 };
8069 
8070 /* ROCE ramrod command IDs */
8071 enum roce_ramrod_cmd_id {
8072 	ROCE_RAMROD_CREATE_QP = 11,
8073 	ROCE_RAMROD_MODIFY_QP,
8074 	ROCE_RAMROD_QUERY_QP,
8075 	ROCE_RAMROD_DESTROY_QP,
8076 	ROCE_RAMROD_CREATE_UD_QP,
8077 	ROCE_RAMROD_DESTROY_UD_QP,
8078 	ROCE_RAMROD_FUNC_UPDATE,
8079 	MAX_ROCE_RAMROD_CMD_ID
8080 };
8081 
8082 /* RoCE func init ramrod data */
8083 struct roce_update_func_params {
8084 	u8 cnp_vlan_priority;
8085 	u8 cnp_dscp;
8086 	__le16 flags;
8087 #define ROCE_UPDATE_FUNC_PARAMS_DCQCN_NP_EN_MASK	0x1
8088 #define ROCE_UPDATE_FUNC_PARAMS_DCQCN_NP_EN_SHIFT	0
8089 #define ROCE_UPDATE_FUNC_PARAMS_DCQCN_RP_EN_MASK	0x1
8090 #define ROCE_UPDATE_FUNC_PARAMS_DCQCN_RP_EN_SHIFT	1
8091 #define ROCE_UPDATE_FUNC_PARAMS_RESERVED0_MASK		0x3FFF
8092 #define ROCE_UPDATE_FUNC_PARAMS_RESERVED0_SHIFT		2
8093 	__le32 cnp_send_timeout;
8094 };
8095 
8096 struct e4_xstorm_roce_conn_ag_ctx_dq_ext_ld_part {
8097 	u8 reserved0;
8098 	u8 state;
8099 	u8 flags0;
8100 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_EXIST_IN_QM0_MASK	0x1
8101 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_EXIST_IN_QM0_SHIFT	0
8102 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT1_MASK		0x1
8103 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT1_SHIFT		1
8104 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT2_MASK		0x1
8105 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT2_SHIFT		2
8106 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_EXIST_IN_QM3_MASK	0x1
8107 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_EXIST_IN_QM3_SHIFT	3
8108 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT4_MASK		0x1
8109 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT4_SHIFT		4
8110 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT5_MASK		0x1
8111 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT5_SHIFT		5
8112 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT6_MASK		0x1
8113 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT6_SHIFT		6
8114 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT7_MASK		0x1
8115 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT7_SHIFT		7
8116 	u8 flags1;
8117 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT8_MASK		0x1
8118 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT8_SHIFT		0
8119 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT9_MASK		0x1
8120 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT9_SHIFT		1
8121 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT10_MASK		0x1
8122 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT10_SHIFT		2
8123 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT11_MASK		0x1
8124 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT11_SHIFT		3
8125 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_MSDM_FLUSH_MASK	0x1
8126 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_MSDM_FLUSH_SHIFT	4
8127 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_MSEM_FLUSH_MASK	0x1
8128 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_MSEM_FLUSH_SHIFT	5
8129 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT14_MASK		0x1
8130 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT14_SHIFT		6
8131 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_YSTORM_FLUSH_MASK	0x1
8132 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_YSTORM_FLUSH_SHIFT	7
8133 	u8 flags2;
8134 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF0_MASK	0x3
8135 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF0_SHIFT	0
8136 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF1_MASK	0x3
8137 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF1_SHIFT	2
8138 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF2_MASK	0x3
8139 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF2_SHIFT	4
8140 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF3_MASK	0x3
8141 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF3_SHIFT	6
8142 	u8 flags3;
8143 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF4_MASK		0x3
8144 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF4_SHIFT		0
8145 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF5_MASK		0x3
8146 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF5_SHIFT		2
8147 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF6_MASK		0x3
8148 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF6_SHIFT		4
8149 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_FLUSH_Q0_CF_MASK	0x3
8150 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_FLUSH_Q0_CF_SHIFT	6
8151 	u8 flags4;
8152 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF8_MASK	0x3
8153 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF8_SHIFT	0
8154 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF9_MASK	0x3
8155 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF9_SHIFT	2
8156 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF10_MASK	0x3
8157 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF10_SHIFT	4
8158 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF11_MASK	0x3
8159 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF11_SHIFT	6
8160 	u8 flags5;
8161 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF12_MASK	0x3
8162 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF12_SHIFT	0
8163 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF13_MASK	0x3
8164 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF13_SHIFT	2
8165 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF14_MASK	0x3
8166 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF14_SHIFT	4
8167 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF15_MASK	0x3
8168 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF15_SHIFT	6
8169 	u8 flags6;
8170 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF16_MASK	0x3
8171 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF16_SHIFT	0
8172 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF17_MASK	0x3
8173 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF17_SHIFT	2
8174 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF18_MASK	0x3
8175 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF18_SHIFT	4
8176 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF19_MASK	0x3
8177 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF19_SHIFT	6
8178 	u8 flags7;
8179 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF20_MASK		0x3
8180 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF20_SHIFT		0
8181 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF21_MASK		0x3
8182 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF21_SHIFT		2
8183 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_SLOW_PATH_MASK		0x3
8184 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_SLOW_PATH_SHIFT	4
8185 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF0EN_MASK		0x1
8186 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF0EN_SHIFT		6
8187 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF1EN_MASK		0x1
8188 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF1EN_SHIFT		7
8189 	u8 flags8;
8190 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF2EN_MASK		0x1
8191 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF2EN_SHIFT		0
8192 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF3EN_MASK		0x1
8193 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF3EN_SHIFT		1
8194 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF4EN_MASK		0x1
8195 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF4EN_SHIFT		2
8196 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF5EN_MASK		0x1
8197 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF5EN_SHIFT		3
8198 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF6EN_MASK		0x1
8199 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF6EN_SHIFT		4
8200 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_FLUSH_Q0_CF_EN_MASK	0x1
8201 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_FLUSH_Q0_CF_EN_SHIFT	5
8202 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF8EN_MASK		0x1
8203 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF8EN_SHIFT		6
8204 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF9EN_MASK		0x1
8205 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF9EN_SHIFT		7
8206 	u8 flags9;
8207 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF10EN_MASK	0x1
8208 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF10EN_SHIFT	0
8209 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF11EN_MASK	0x1
8210 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF11EN_SHIFT	1
8211 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF12EN_MASK	0x1
8212 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF12EN_SHIFT	2
8213 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF13EN_MASK	0x1
8214 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF13EN_SHIFT	3
8215 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF14EN_MASK	0x1
8216 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF14EN_SHIFT	4
8217 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF15EN_MASK	0x1
8218 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF15EN_SHIFT	5
8219 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF16EN_MASK	0x1
8220 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF16EN_SHIFT	6
8221 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF17EN_MASK	0x1
8222 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF17EN_SHIFT	7
8223 	u8 flags10;
8224 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF18EN_MASK		0x1
8225 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF18EN_SHIFT		0
8226 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF19EN_MASK		0x1
8227 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF19EN_SHIFT		1
8228 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF20EN_MASK		0x1
8229 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF20EN_SHIFT		2
8230 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF21EN_MASK		0x1
8231 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF21EN_SHIFT		3
8232 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_SLOW_PATH_EN_MASK	0x1
8233 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_SLOW_PATH_EN_SHIFT	4
8234 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF23EN_MASK		0x1
8235 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF23EN_SHIFT		5
8236 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE0EN_MASK		0x1
8237 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE0EN_SHIFT		6
8238 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE1EN_MASK		0x1
8239 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE1EN_SHIFT		7
8240 	u8 flags11;
8241 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE2EN_MASK		0x1
8242 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE2EN_SHIFT		0
8243 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE3EN_MASK		0x1
8244 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE3EN_SHIFT		1
8245 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE4EN_MASK		0x1
8246 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE4EN_SHIFT		2
8247 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE5EN_MASK		0x1
8248 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE5EN_SHIFT		3
8249 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE6EN_MASK		0x1
8250 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE6EN_SHIFT		4
8251 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE7EN_MASK		0x1
8252 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE7EN_SHIFT		5
8253 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_A0_RESERVED1_MASK	0x1
8254 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_A0_RESERVED1_SHIFT	6
8255 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE9EN_MASK		0x1
8256 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE9EN_SHIFT		7
8257 	u8 flags12;
8258 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE10EN_MASK		0x1
8259 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE10EN_SHIFT		0
8260 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE11EN_MASK		0x1
8261 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE11EN_SHIFT		1
8262 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_A0_RESERVED2_MASK	0x1
8263 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_A0_RESERVED2_SHIFT	2
8264 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_A0_RESERVED3_MASK	0x1
8265 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_A0_RESERVED3_SHIFT	3
8266 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE14EN_MASK		0x1
8267 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE14EN_SHIFT		4
8268 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE15EN_MASK		0x1
8269 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE15EN_SHIFT		5
8270 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE16EN_MASK		0x1
8271 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE16EN_SHIFT		6
8272 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE17EN_MASK		0x1
8273 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE17EN_SHIFT		7
8274 	u8 flags13;
8275 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE18EN_MASK		0x1
8276 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE18EN_SHIFT		0
8277 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE19EN_MASK		0x1
8278 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE19EN_SHIFT		1
8279 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_A0_RESERVED4_MASK	0x1
8280 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_A0_RESERVED4_SHIFT	2
8281 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_A0_RESERVED5_MASK	0x1
8282 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_A0_RESERVED5_SHIFT	3
8283 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_A0_RESERVED6_MASK	0x1
8284 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_A0_RESERVED6_SHIFT	4
8285 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_A0_RESERVED7_MASK	0x1
8286 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_A0_RESERVED7_SHIFT	5
8287 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_A0_RESERVED8_MASK	0x1
8288 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_A0_RESERVED8_SHIFT	6
8289 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_A0_RESERVED9_MASK	0x1
8290 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_A0_RESERVED9_SHIFT	7
8291 	u8 flags14;
8292 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_MIGRATION_MASK		0x1
8293 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_MIGRATION_SHIFT	0
8294 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT17_MASK		0x1
8295 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT17_SHIFT		1
8296 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_DPM_PORT_NUM_MASK	0x3
8297 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_DPM_PORT_NUM_SHIFT	2
8298 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RESERVED_MASK		0x1
8299 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RESERVED_SHIFT		4
8300 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_ROCE_EDPM_ENABLE_MASK	0x1
8301 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_ROCE_EDPM_ENABLE_SHIFT	5
8302 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF23_MASK		0x3
8303 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF23_SHIFT		6
8304 	u8 byte2;
8305 	__le16 physical_q0;
8306 	__le16 word1;
8307 	__le16 word2;
8308 	__le16 word3;
8309 	__le16 word4;
8310 	__le16 word5;
8311 	__le16 conn_dpi;
8312 	u8 byte3;
8313 	u8 byte4;
8314 	u8 byte5;
8315 	u8 byte6;
8316 	__le32 reg0;
8317 	__le32 reg1;
8318 	__le32 reg2;
8319 	__le32 snd_nxt_psn;
8320 	__le32 reg4;
8321 };
8322 
8323 struct e4_mstorm_roce_conn_ag_ctx {
8324 	u8 byte0;
8325 	u8 byte1;
8326 	u8 flags0;
8327 #define E4_MSTORM_ROCE_CONN_AG_CTX_BIT0_MASK     0x1
8328 #define E4_MSTORM_ROCE_CONN_AG_CTX_BIT0_SHIFT    0
8329 #define E4_MSTORM_ROCE_CONN_AG_CTX_BIT1_MASK     0x1
8330 #define E4_MSTORM_ROCE_CONN_AG_CTX_BIT1_SHIFT    1
8331 #define E4_MSTORM_ROCE_CONN_AG_CTX_CF0_MASK      0x3
8332 #define E4_MSTORM_ROCE_CONN_AG_CTX_CF0_SHIFT     2
8333 #define E4_MSTORM_ROCE_CONN_AG_CTX_CF1_MASK      0x3
8334 #define E4_MSTORM_ROCE_CONN_AG_CTX_CF1_SHIFT     4
8335 #define E4_MSTORM_ROCE_CONN_AG_CTX_CF2_MASK      0x3
8336 #define E4_MSTORM_ROCE_CONN_AG_CTX_CF2_SHIFT     6
8337 	u8 flags1;
8338 #define E4_MSTORM_ROCE_CONN_AG_CTX_CF0EN_MASK    0x1
8339 #define E4_MSTORM_ROCE_CONN_AG_CTX_CF0EN_SHIFT   0
8340 #define E4_MSTORM_ROCE_CONN_AG_CTX_CF1EN_MASK    0x1
8341 #define E4_MSTORM_ROCE_CONN_AG_CTX_CF1EN_SHIFT   1
8342 #define E4_MSTORM_ROCE_CONN_AG_CTX_CF2EN_MASK    0x1
8343 #define E4_MSTORM_ROCE_CONN_AG_CTX_CF2EN_SHIFT   2
8344 #define E4_MSTORM_ROCE_CONN_AG_CTX_RULE0EN_MASK  0x1
8345 #define E4_MSTORM_ROCE_CONN_AG_CTX_RULE0EN_SHIFT 3
8346 #define E4_MSTORM_ROCE_CONN_AG_CTX_RULE1EN_MASK  0x1
8347 #define E4_MSTORM_ROCE_CONN_AG_CTX_RULE1EN_SHIFT 4
8348 #define E4_MSTORM_ROCE_CONN_AG_CTX_RULE2EN_MASK  0x1
8349 #define E4_MSTORM_ROCE_CONN_AG_CTX_RULE2EN_SHIFT 5
8350 #define E4_MSTORM_ROCE_CONN_AG_CTX_RULE3EN_MASK  0x1
8351 #define E4_MSTORM_ROCE_CONN_AG_CTX_RULE3EN_SHIFT 6
8352 #define E4_MSTORM_ROCE_CONN_AG_CTX_RULE4EN_MASK  0x1
8353 #define E4_MSTORM_ROCE_CONN_AG_CTX_RULE4EN_SHIFT 7
8354 	__le16 word0;
8355 	__le16 word1;
8356 	__le32 reg0;
8357 	__le32 reg1;
8358 };
8359 
8360 struct e4_mstorm_roce_req_conn_ag_ctx {
8361 	u8 byte0;
8362 	u8 byte1;
8363 	u8 flags0;
8364 #define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_BIT0_MASK	0x1
8365 #define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_BIT0_SHIFT	0
8366 #define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_BIT1_MASK	0x1
8367 #define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_BIT1_SHIFT	1
8368 #define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_CF0_MASK		0x3
8369 #define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_CF0_SHIFT	2
8370 #define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_CF1_MASK		0x3
8371 #define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_CF1_SHIFT	4
8372 #define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_CF2_MASK		0x3
8373 #define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_CF2_SHIFT	6
8374 	u8 flags1;
8375 #define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_CF0EN_MASK	0x1
8376 #define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_CF0EN_SHIFT	0
8377 #define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_CF1EN_MASK	0x1
8378 #define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_CF1EN_SHIFT	1
8379 #define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_CF2EN_MASK	0x1
8380 #define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_CF2EN_SHIFT	2
8381 #define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_RULE0EN_MASK	0x1
8382 #define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_RULE0EN_SHIFT	3
8383 #define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_RULE1EN_MASK	0x1
8384 #define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_RULE1EN_SHIFT	4
8385 #define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_RULE2EN_MASK	0x1
8386 #define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_RULE2EN_SHIFT	5
8387 #define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_RULE3EN_MASK	0x1
8388 #define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_RULE3EN_SHIFT	6
8389 #define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_RULE4EN_MASK	0x1
8390 #define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_RULE4EN_SHIFT	7
8391 	__le16 word0;
8392 	__le16 word1;
8393 	__le32 reg0;
8394 	__le32 reg1;
8395 };
8396 
8397 struct e4_mstorm_roce_resp_conn_ag_ctx {
8398 	u8 byte0;
8399 	u8 byte1;
8400 	u8 flags0;
8401 #define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_BIT0_MASK	0x1
8402 #define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_BIT0_SHIFT	0
8403 #define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_BIT1_MASK	0x1
8404 #define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_BIT1_SHIFT	1
8405 #define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_CF0_MASK	0x3
8406 #define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_CF0_SHIFT	2
8407 #define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_CF1_MASK	0x3
8408 #define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_CF1_SHIFT	4
8409 #define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_CF2_MASK	0x3
8410 #define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_CF2_SHIFT	6
8411 	u8 flags1;
8412 #define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_CF0EN_MASK	0x1
8413 #define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_CF0EN_SHIFT	0
8414 #define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_CF1EN_MASK	0x1
8415 #define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_CF1EN_SHIFT	1
8416 #define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_CF2EN_MASK	0x1
8417 #define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_CF2EN_SHIFT	2
8418 #define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_RULE0EN_MASK	0x1
8419 #define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_RULE0EN_SHIFT	3
8420 #define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_RULE1EN_MASK	0x1
8421 #define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_RULE1EN_SHIFT	4
8422 #define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_RULE2EN_MASK	0x1
8423 #define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_RULE2EN_SHIFT	5
8424 #define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_RULE3EN_MASK	0x1
8425 #define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_RULE3EN_SHIFT	6
8426 #define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_RULE4EN_MASK	0x1
8427 #define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_RULE4EN_SHIFT	7
8428 	__le16 word0;
8429 	__le16 word1;
8430 	__le32 reg0;
8431 	__le32 reg1;
8432 };
8433 
8434 struct e4_tstorm_roce_req_conn_ag_ctx {
8435 	u8 reserved0;
8436 	u8 state;
8437 	u8 flags0;
8438 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_EXIST_IN_QM0_MASK		0x1
8439 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_EXIST_IN_QM0_SHIFT		0
8440 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_RX_ERROR_OCCURRED_MASK		0x1
8441 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_RX_ERROR_OCCURRED_SHIFT		1
8442 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_TX_CQE_ERROR_OCCURRED_MASK	0x1
8443 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_TX_CQE_ERROR_OCCURRED_SHIFT	2
8444 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_BIT3_MASK			0x1
8445 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_BIT3_SHIFT			3
8446 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_MSTORM_FLUSH_MASK		0x1
8447 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_MSTORM_FLUSH_SHIFT		4
8448 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_CACHED_ORQ_MASK			0x1
8449 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_CACHED_ORQ_SHIFT			5
8450 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_TIMER_CF_MASK			0x3
8451 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_TIMER_CF_SHIFT			6
8452 	u8 flags1;
8453 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_MSTORM_FLUSH_CF_MASK             0x3
8454 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_MSTORM_FLUSH_CF_SHIFT            0
8455 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_FLUSH_SQ_CF_MASK			0x3
8456 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_FLUSH_SQ_CF_SHIFT		2
8457 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_TIMER_STOP_ALL_CF_MASK		0x3
8458 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_TIMER_STOP_ALL_CF_SHIFT		4
8459 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_FLUSH_Q0_CF_MASK			0x3
8460 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_FLUSH_Q0_CF_SHIFT		6
8461 	u8 flags2;
8462 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_FORCE_COMP_CF_MASK               0x3
8463 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_FORCE_COMP_CF_SHIFT              0
8464 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_SET_TIMER_CF_MASK	0x3
8465 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_SET_TIMER_CF_SHIFT	2
8466 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_TX_ASYNC_ERROR_CF_MASK	0x3
8467 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_TX_ASYNC_ERROR_CF_SHIFT	4
8468 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_RXMIT_DONE_CF_MASK	0x3
8469 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_RXMIT_DONE_CF_SHIFT	6
8470 	u8 flags3;
8471 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_ERROR_SCAN_COMPLETED_CF_MASK	0x3
8472 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_ERROR_SCAN_COMPLETED_CF_SHIFT	0
8473 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_SQ_DRAIN_COMPLETED_CF_MASK	0x3
8474 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_SQ_DRAIN_COMPLETED_CF_SHIFT	2
8475 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_TIMER_CF_EN_MASK			0x1
8476 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_TIMER_CF_EN_SHIFT		4
8477 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_MSTORM_FLUSH_CF_EN_MASK          0x1
8478 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_MSTORM_FLUSH_CF_EN_SHIFT         5
8479 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_FLUSH_SQ_CF_EN_MASK		0x1
8480 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_FLUSH_SQ_CF_EN_SHIFT		6
8481 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_TIMER_STOP_ALL_CF_EN_MASK	0x1
8482 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_TIMER_STOP_ALL_CF_EN_SHIFT	7
8483 	u8 flags4;
8484 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_FLUSH_Q0_CF_EN_MASK		0x1
8485 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_FLUSH_Q0_CF_EN_SHIFT		0
8486 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_FORCE_COMP_CF_EN_MASK            0x1
8487 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_FORCE_COMP_CF_EN_SHIFT           1
8488 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_SET_TIMER_CF_EN_MASK		0x1
8489 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_SET_TIMER_CF_EN_SHIFT		2
8490 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_TX_ASYNC_ERROR_CF_EN_MASK	0x1
8491 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_TX_ASYNC_ERROR_CF_EN_SHIFT	3
8492 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_RXMIT_DONE_CF_EN_MASK		0x1
8493 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_RXMIT_DONE_CF_EN_SHIFT		4
8494 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_ERROR_SCAN_COMPLETED_CF_EN_MASK	0x1
8495 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_ERROR_SCAN_COMPLETED_CF_EN_SHIFT	5
8496 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_SQ_DRAIN_COMPLETED_CF_EN_MASK	0x1
8497 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_SQ_DRAIN_COMPLETED_CF_EN_SHIFT	6
8498 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_RULE0EN_MASK			0x1
8499 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_RULE0EN_SHIFT			7
8500 	u8 flags5;
8501 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_RULE1EN_MASK		0x1
8502 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_RULE1EN_SHIFT		0
8503 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_DIF_CNT_EN_MASK		0x1
8504 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_DIF_CNT_EN_SHIFT		1
8505 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_RULE3EN_MASK		0x1
8506 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_RULE3EN_SHIFT		2
8507 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_RULE4EN_MASK		0x1
8508 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_RULE4EN_SHIFT		3
8509 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_RULE5EN_MASK		0x1
8510 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_RULE5EN_SHIFT		4
8511 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_SND_SQ_CONS_EN_MASK	0x1
8512 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_SND_SQ_CONS_EN_SHIFT	5
8513 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_RULE7EN_MASK		0x1
8514 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_RULE7EN_SHIFT		6
8515 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_RULE8EN_MASK		0x1
8516 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_RULE8EN_SHIFT		7
8517 	__le32 dif_rxmit_cnt;
8518 	__le32 snd_nxt_psn;
8519 	__le32 snd_max_psn;
8520 	__le32 orq_prod;
8521 	__le32 reg4;
8522 	__le32 dif_acked_cnt;
8523 	__le32 dif_cnt;
8524 	__le32 reg7;
8525 	__le32 reg8;
8526 	u8 tx_cqe_error_type;
8527 	u8 orq_cache_idx;
8528 	__le16 snd_sq_cons_th;
8529 	u8 byte4;
8530 	u8 byte5;
8531 	__le16 snd_sq_cons;
8532 	__le16 conn_dpi;
8533 	__le16 force_comp_cons;
8534 	__le32 dif_rxmit_acked_cnt;
8535 	__le32 reg10;
8536 };
8537 
8538 struct e4_tstorm_roce_resp_conn_ag_ctx {
8539 	u8 byte0;
8540 	u8 state;
8541 	u8 flags0;
8542 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_EXIST_IN_QM0_MASK		0x1
8543 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_EXIST_IN_QM0_SHIFT		0
8544 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RX_ERROR_NOTIFY_REQUESTER_MASK	0x1
8545 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RX_ERROR_NOTIFY_REQUESTER_SHIFT	1
8546 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_BIT2_MASK			0x1
8547 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_BIT2_SHIFT			2
8548 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_BIT3_MASK			0x1
8549 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_BIT3_SHIFT			3
8550 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_MSTORM_FLUSH_MASK		0x1
8551 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_MSTORM_FLUSH_SHIFT		4
8552 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_BIT5_MASK			0x1
8553 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_BIT5_SHIFT			5
8554 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF0_MASK			0x3
8555 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF0_SHIFT			6
8556 	u8 flags1;
8557 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_MSTORM_FLUSH_CF_MASK            0x3
8558 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_MSTORM_FLUSH_CF_SHIFT           0
8559 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_TX_ERROR_CF_MASK	0x3
8560 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_TX_ERROR_CF_SHIFT	2
8561 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF3_MASK		0x3
8562 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF3_SHIFT		4
8563 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_FLUSH_Q0_CF_MASK	0x3
8564 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_FLUSH_Q0_CF_SHIFT	6
8565 	u8 flags2;
8566 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RX_ERROR_CF_MASK                0x3
8567 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RX_ERROR_CF_SHIFT               0
8568 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF6_MASK		0x3
8569 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF6_SHIFT		2
8570 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF7_MASK		0x3
8571 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF7_SHIFT		4
8572 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF8_MASK		0x3
8573 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF8_SHIFT		6
8574 	u8 flags3;
8575 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF9_MASK		0x3
8576 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF9_SHIFT		0
8577 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF10_MASK		0x3
8578 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF10_SHIFT		2
8579 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF0EN_MASK		0x1
8580 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF0EN_SHIFT		4
8581 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_MSTORM_FLUSH_CF_EN_MASK         0x1
8582 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_MSTORM_FLUSH_CF_EN_SHIFT        5
8583 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_TX_ERROR_CF_EN_MASK	0x1
8584 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_TX_ERROR_CF_EN_SHIFT	6
8585 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF3EN_MASK		0x1
8586 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF3EN_SHIFT		7
8587 	u8 flags4;
8588 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_FLUSH_Q0_CF_EN_MASK		0x1
8589 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_FLUSH_Q0_CF_EN_SHIFT		0
8590 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RX_ERROR_CF_EN_MASK             0x1
8591 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RX_ERROR_CF_EN_SHIFT            1
8592 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF6EN_MASK			0x1
8593 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF6EN_SHIFT			2
8594 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF7EN_MASK			0x1
8595 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF7EN_SHIFT			3
8596 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF8EN_MASK			0x1
8597 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF8EN_SHIFT			4
8598 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF9EN_MASK			0x1
8599 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF9EN_SHIFT			5
8600 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF10EN_MASK			0x1
8601 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF10EN_SHIFT			6
8602 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RULE0EN_MASK			0x1
8603 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RULE0EN_SHIFT			7
8604 	u8 flags5;
8605 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RULE1EN_MASK		0x1
8606 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RULE1EN_SHIFT		0
8607 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RULE2EN_MASK		0x1
8608 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RULE2EN_SHIFT		1
8609 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RULE3EN_MASK		0x1
8610 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RULE3EN_SHIFT		2
8611 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RULE4EN_MASK		0x1
8612 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RULE4EN_SHIFT		3
8613 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RULE5EN_MASK		0x1
8614 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RULE5EN_SHIFT		4
8615 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RQ_RULE_EN_MASK		0x1
8616 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RQ_RULE_EN_SHIFT	5
8617 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RULE7EN_MASK		0x1
8618 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RULE7EN_SHIFT		6
8619 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RULE8EN_MASK		0x1
8620 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RULE8EN_SHIFT		7
8621 	__le32 psn_and_rxmit_id_echo;
8622 	__le32 reg1;
8623 	__le32 reg2;
8624 	__le32 reg3;
8625 	__le32 reg4;
8626 	__le32 reg5;
8627 	__le32 reg6;
8628 	__le32 reg7;
8629 	__le32 reg8;
8630 	u8 tx_async_error_type;
8631 	u8 byte3;
8632 	__le16 rq_cons;
8633 	u8 byte4;
8634 	u8 byte5;
8635 	__le16 rq_prod;
8636 	__le16 conn_dpi;
8637 	__le16 irq_cons;
8638 	__le32 reg9;
8639 	__le32 reg10;
8640 };
8641 
8642 struct e4_ustorm_roce_req_conn_ag_ctx {
8643 	u8 byte0;
8644 	u8 byte1;
8645 	u8 flags0;
8646 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_BIT0_MASK	0x1
8647 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_BIT0_SHIFT	0
8648 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_BIT1_MASK	0x1
8649 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_BIT1_SHIFT	1
8650 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF0_MASK		0x3
8651 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF0_SHIFT	2
8652 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF1_MASK		0x3
8653 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF1_SHIFT	4
8654 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF2_MASK		0x3
8655 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF2_SHIFT	6
8656 	u8 flags1;
8657 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF3_MASK		0x3
8658 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF3_SHIFT	0
8659 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF4_MASK		0x3
8660 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF4_SHIFT	2
8661 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF5_MASK		0x3
8662 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF5_SHIFT	4
8663 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF6_MASK		0x3
8664 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF6_SHIFT	6
8665 	u8 flags2;
8666 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF0EN_MASK	0x1
8667 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF0EN_SHIFT	0
8668 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF1EN_MASK	0x1
8669 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF1EN_SHIFT	1
8670 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF2EN_MASK	0x1
8671 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF2EN_SHIFT	2
8672 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF3EN_MASK	0x1
8673 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF3EN_SHIFT	3
8674 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF4EN_MASK	0x1
8675 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF4EN_SHIFT	4
8676 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF5EN_MASK	0x1
8677 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF5EN_SHIFT	5
8678 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF6EN_MASK	0x1
8679 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF6EN_SHIFT	6
8680 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_RULE0EN_MASK	0x1
8681 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_RULE0EN_SHIFT	7
8682 	u8 flags3;
8683 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_RULE1EN_MASK	0x1
8684 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_RULE1EN_SHIFT	0
8685 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_RULE2EN_MASK	0x1
8686 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_RULE2EN_SHIFT	1
8687 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_RULE3EN_MASK	0x1
8688 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_RULE3EN_SHIFT	2
8689 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_RULE4EN_MASK	0x1
8690 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_RULE4EN_SHIFT	3
8691 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_RULE5EN_MASK	0x1
8692 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_RULE5EN_SHIFT	4
8693 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_RULE6EN_MASK	0x1
8694 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_RULE6EN_SHIFT	5
8695 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_RULE7EN_MASK	0x1
8696 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_RULE7EN_SHIFT	6
8697 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_RULE8EN_MASK	0x1
8698 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_RULE8EN_SHIFT	7
8699 	u8 byte2;
8700 	u8 byte3;
8701 	__le16 word0;
8702 	__le16 word1;
8703 	__le32 reg0;
8704 	__le32 reg1;
8705 	__le32 reg2;
8706 	__le32 reg3;
8707 	__le16 word2;
8708 	__le16 word3;
8709 };
8710 
8711 struct e4_ustorm_roce_resp_conn_ag_ctx {
8712 	u8 byte0;
8713 	u8 byte1;
8714 	u8 flags0;
8715 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_BIT0_MASK	0x1
8716 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_BIT0_SHIFT	0
8717 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_BIT1_MASK	0x1
8718 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_BIT1_SHIFT	1
8719 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF0_MASK	0x3
8720 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF0_SHIFT	2
8721 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF1_MASK	0x3
8722 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF1_SHIFT	4
8723 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF2_MASK	0x3
8724 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF2_SHIFT	6
8725 	u8 flags1;
8726 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF3_MASK	0x3
8727 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF3_SHIFT	0
8728 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF4_MASK	0x3
8729 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF4_SHIFT	2
8730 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF5_MASK	0x3
8731 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF5_SHIFT	4
8732 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF6_MASK	0x3
8733 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF6_SHIFT	6
8734 	u8 flags2;
8735 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF0EN_MASK	0x1
8736 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF0EN_SHIFT	0
8737 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF1EN_MASK	0x1
8738 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF1EN_SHIFT	1
8739 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF2EN_MASK	0x1
8740 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF2EN_SHIFT	2
8741 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF3EN_MASK	0x1
8742 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF3EN_SHIFT	3
8743 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF4EN_MASK	0x1
8744 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF4EN_SHIFT	4
8745 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF5EN_MASK	0x1
8746 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF5EN_SHIFT	5
8747 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF6EN_MASK	0x1
8748 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF6EN_SHIFT	6
8749 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_RULE0EN_MASK	0x1
8750 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_RULE0EN_SHIFT	7
8751 	u8 flags3;
8752 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_RULE1EN_MASK	0x1
8753 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_RULE1EN_SHIFT	0
8754 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_RULE2EN_MASK	0x1
8755 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_RULE2EN_SHIFT	1
8756 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_RULE3EN_MASK	0x1
8757 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_RULE3EN_SHIFT	2
8758 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_RULE4EN_MASK	0x1
8759 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_RULE4EN_SHIFT	3
8760 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_RULE5EN_MASK	0x1
8761 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_RULE5EN_SHIFT	4
8762 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_RULE6EN_MASK	0x1
8763 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_RULE6EN_SHIFT	5
8764 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_RULE7EN_MASK	0x1
8765 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_RULE7EN_SHIFT	6
8766 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_RULE8EN_MASK	0x1
8767 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_RULE8EN_SHIFT	7
8768 	u8 byte2;
8769 	u8 byte3;
8770 	__le16 word0;
8771 	__le16 word1;
8772 	__le32 reg0;
8773 	__le32 reg1;
8774 	__le32 reg2;
8775 	__le32 reg3;
8776 	__le16 word2;
8777 	__le16 word3;
8778 };
8779 
8780 struct e4_xstorm_roce_req_conn_ag_ctx {
8781 	u8 reserved0;
8782 	u8 state;
8783 	u8 flags0;
8784 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_EXIST_IN_QM0_MASK	0x1
8785 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_EXIST_IN_QM0_SHIFT	0
8786 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RESERVED1_MASK		0x1
8787 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RESERVED1_SHIFT		1
8788 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RESERVED2_MASK		0x1
8789 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RESERVED2_SHIFT		2
8790 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_EXIST_IN_QM3_MASK	0x1
8791 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_EXIST_IN_QM3_SHIFT	3
8792 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RESERVED3_MASK		0x1
8793 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RESERVED3_SHIFT		4
8794 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RESERVED4_MASK		0x1
8795 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RESERVED4_SHIFT		5
8796 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RESERVED5_MASK		0x1
8797 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RESERVED5_SHIFT		6
8798 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RESERVED6_MASK		0x1
8799 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RESERVED6_SHIFT		7
8800 	u8 flags1;
8801 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RESERVED7_MASK		0x1
8802 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RESERVED7_SHIFT		0
8803 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RESERVED8_MASK		0x1
8804 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RESERVED8_SHIFT		1
8805 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_BIT10_MASK		0x1
8806 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_BIT10_SHIFT		2
8807 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_BIT11_MASK		0x1
8808 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_BIT11_SHIFT		3
8809 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_MSDM_FLUSH_MASK		0x1
8810 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_MSDM_FLUSH_SHIFT		4
8811 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_MSEM_FLUSH_MASK		0x1
8812 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_MSEM_FLUSH_SHIFT		5
8813 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_ERROR_STATE_MASK		0x1
8814 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_ERROR_STATE_SHIFT	6
8815 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_YSTORM_FLUSH_MASK	0x1
8816 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_YSTORM_FLUSH_SHIFT	7
8817 	u8 flags2;
8818 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF0_MASK		0x3
8819 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF0_SHIFT	0
8820 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF1_MASK		0x3
8821 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF1_SHIFT	2
8822 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF2_MASK		0x3
8823 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF2_SHIFT	4
8824 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF3_MASK		0x3
8825 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF3_SHIFT	6
8826 	u8 flags3;
8827 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_SQ_FLUSH_CF_MASK		0x3
8828 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_SQ_FLUSH_CF_SHIFT	0
8829 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RX_ERROR_CF_MASK		0x3
8830 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RX_ERROR_CF_SHIFT	2
8831 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_SND_RXMIT_CF_MASK	0x3
8832 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_SND_RXMIT_CF_SHIFT	4
8833 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_FLUSH_Q0_CF_MASK		0x3
8834 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_FLUSH_Q0_CF_SHIFT	6
8835 	u8 flags4;
8836 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_DIF_ERROR_CF_MASK        0x3
8837 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_DIF_ERROR_CF_SHIFT       0
8838 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_SCAN_SQ_FOR_COMP_CF_MASK     0x3
8839 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_SCAN_SQ_FOR_COMP_CF_SHIFT    2
8840 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF10_MASK	0x3
8841 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF10_SHIFT	4
8842 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF11_MASK	0x3
8843 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF11_SHIFT	6
8844 	u8 flags5;
8845 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF12_MASK		0x3
8846 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF12_SHIFT		0
8847 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF13_MASK		0x3
8848 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF13_SHIFT		2
8849 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_FMR_ENDED_CF_MASK	0x3
8850 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_FMR_ENDED_CF_SHIFT	4
8851 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF15_MASK		0x3
8852 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF15_SHIFT		6
8853 	u8 flags6;
8854 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF16_MASK	0x3
8855 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF16_SHIFT	0
8856 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF17_MASK	0x3
8857 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF17_SHIFT	2
8858 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF18_MASK	0x3
8859 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF18_SHIFT	4
8860 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF19_MASK	0x3
8861 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF19_SHIFT	6
8862 	u8 flags7;
8863 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF20_MASK	0x3
8864 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF20_SHIFT	0
8865 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF21_MASK	0x3
8866 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF21_SHIFT	2
8867 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_SLOW_PATH_MASK	0x3
8868 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_SLOW_PATH_SHIFT	4
8869 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF0EN_MASK	0x1
8870 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF0EN_SHIFT	6
8871 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF1EN_MASK	0x1
8872 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF1EN_SHIFT	7
8873 	u8 flags8;
8874 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF2EN_MASK		0x1
8875 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF2EN_SHIFT		0
8876 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF3EN_MASK		0x1
8877 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF3EN_SHIFT		1
8878 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_SQ_FLUSH_CF_EN_MASK	0x1
8879 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_SQ_FLUSH_CF_EN_SHIFT	2
8880 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RX_ERROR_CF_EN_MASK	0x1
8881 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RX_ERROR_CF_EN_SHIFT	3
8882 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_SND_RXMIT_CF_EN_MASK	0x1
8883 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_SND_RXMIT_CF_EN_SHIFT	4
8884 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_FLUSH_Q0_CF_EN_MASK	0x1
8885 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_FLUSH_Q0_CF_EN_SHIFT	5
8886 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_DIF_ERROR_CF_EN_MASK     0x1
8887 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_DIF_ERROR_CF_EN_SHIFT    6
8888 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_SCAN_SQ_FOR_COMP_CF_EN_MASK  0x1
8889 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_SCAN_SQ_FOR_COMP_CF_EN_SHIFT 7
8890 	u8 flags9;
8891 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF10EN_MASK		0x1
8892 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF10EN_SHIFT		0
8893 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF11EN_MASK		0x1
8894 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF11EN_SHIFT		1
8895 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF12EN_MASK		0x1
8896 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF12EN_SHIFT		2
8897 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF13EN_MASK		0x1
8898 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF13EN_SHIFT		3
8899 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_FME_ENDED_CF_EN_MASK	0x1
8900 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_FME_ENDED_CF_EN_SHIFT	4
8901 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF15EN_MASK		0x1
8902 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF15EN_SHIFT		5
8903 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF16EN_MASK		0x1
8904 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF16EN_SHIFT		6
8905 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF17EN_MASK		0x1
8906 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF17EN_SHIFT		7
8907 	u8 flags10;
8908 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF18EN_MASK		0x1
8909 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF18EN_SHIFT		0
8910 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF19EN_MASK		0x1
8911 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF19EN_SHIFT		1
8912 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF20EN_MASK		0x1
8913 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF20EN_SHIFT		2
8914 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF21EN_MASK		0x1
8915 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF21EN_SHIFT		3
8916 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_SLOW_PATH_EN_MASK	0x1
8917 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_SLOW_PATH_EN_SHIFT	4
8918 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF23EN_MASK		0x1
8919 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF23EN_SHIFT		5
8920 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE0EN_MASK		0x1
8921 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE0EN_SHIFT		6
8922 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE1EN_MASK		0x1
8923 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE1EN_SHIFT		7
8924 	u8 flags11;
8925 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE2EN_MASK		0x1
8926 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE2EN_SHIFT		0
8927 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE3EN_MASK		0x1
8928 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE3EN_SHIFT		1
8929 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE4EN_MASK		0x1
8930 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE4EN_SHIFT		2
8931 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE5EN_MASK		0x1
8932 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE5EN_SHIFT		3
8933 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE6EN_MASK		0x1
8934 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE6EN_SHIFT		4
8935 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_E2E_CREDIT_RULE_EN_MASK	0x1
8936 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_E2E_CREDIT_RULE_EN_SHIFT	5
8937 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_A0_RESERVED1_MASK	0x1
8938 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_A0_RESERVED1_SHIFT	6
8939 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE9EN_MASK		0x1
8940 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE9EN_SHIFT		7
8941 	u8 flags12;
8942 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_SQ_PROD_EN_MASK		0x1
8943 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_SQ_PROD_EN_SHIFT		0
8944 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE11EN_MASK		0x1
8945 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE11EN_SHIFT		1
8946 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_A0_RESERVED2_MASK	0x1
8947 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_A0_RESERVED2_SHIFT	2
8948 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_A0_RESERVED3_MASK	0x1
8949 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_A0_RESERVED3_SHIFT	3
8950 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_INV_FENCE_RULE_EN_MASK	0x1
8951 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_INV_FENCE_RULE_EN_SHIFT	4
8952 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE15EN_MASK		0x1
8953 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE15EN_SHIFT		5
8954 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_ORQ_FENCE_RULE_EN_MASK	0x1
8955 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_ORQ_FENCE_RULE_EN_SHIFT	6
8956 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_MAX_ORD_RULE_EN_MASK	0x1
8957 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_MAX_ORD_RULE_EN_SHIFT	7
8958 	u8 flags13;
8959 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE18EN_MASK		0x1
8960 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE18EN_SHIFT		0
8961 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE19EN_MASK		0x1
8962 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE19EN_SHIFT		1
8963 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_A0_RESERVED4_MASK	0x1
8964 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_A0_RESERVED4_SHIFT	2
8965 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_A0_RESERVED5_MASK	0x1
8966 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_A0_RESERVED5_SHIFT	3
8967 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_A0_RESERVED6_MASK	0x1
8968 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_A0_RESERVED6_SHIFT	4
8969 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_A0_RESERVED7_MASK	0x1
8970 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_A0_RESERVED7_SHIFT	5
8971 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_A0_RESERVED8_MASK	0x1
8972 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_A0_RESERVED8_SHIFT	6
8973 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_A0_RESERVED9_MASK	0x1
8974 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_A0_RESERVED9_SHIFT	7
8975 	u8 flags14;
8976 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_MIGRATION_FLAG_MASK	0x1
8977 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_MIGRATION_FLAG_SHIFT	0
8978 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_BIT17_MASK		0x1
8979 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_BIT17_SHIFT		1
8980 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_DPM_PORT_NUM_MASK	0x3
8981 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_DPM_PORT_NUM_SHIFT	2
8982 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RESERVED_MASK		0x1
8983 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RESERVED_SHIFT		4
8984 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_ROCE_EDPM_ENABLE_MASK	0x1
8985 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_ROCE_EDPM_ENABLE_SHIFT	5
8986 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF23_MASK		0x3
8987 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF23_SHIFT		6
8988 	u8 byte2;
8989 	__le16 physical_q0;
8990 	__le16 word1;
8991 	__le16 sq_cmp_cons;
8992 	__le16 sq_cons;
8993 	__le16 sq_prod;
8994 	__le16 dif_error_first_sq_cons;
8995 	__le16 conn_dpi;
8996 	u8 dif_error_sge_index;
8997 	u8 byte4;
8998 	u8 byte5;
8999 	u8 byte6;
9000 	__le32 lsn;
9001 	__le32 ssn;
9002 	__le32 snd_una_psn;
9003 	__le32 snd_nxt_psn;
9004 	__le32 dif_error_offset;
9005 	__le32 orq_cons_th;
9006 	__le32 orq_cons;
9007 };
9008 
9009 struct e4_xstorm_roce_resp_conn_ag_ctx {
9010 	u8 reserved0;
9011 	u8 state;
9012 	u8 flags0;
9013 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_EXIST_IN_QM0_MASK	0x1
9014 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_EXIST_IN_QM0_SHIFT	0
9015 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RESERVED1_MASK		0x1
9016 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RESERVED1_SHIFT		1
9017 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RESERVED2_MASK		0x1
9018 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RESERVED2_SHIFT		2
9019 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_EXIST_IN_QM3_MASK	0x1
9020 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_EXIST_IN_QM3_SHIFT	3
9021 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RESERVED3_MASK		0x1
9022 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RESERVED3_SHIFT		4
9023 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RESERVED4_MASK		0x1
9024 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RESERVED4_SHIFT		5
9025 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RESERVED5_MASK		0x1
9026 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RESERVED5_SHIFT		6
9027 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RESERVED6_MASK		0x1
9028 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RESERVED6_SHIFT		7
9029 	u8 flags1;
9030 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RESERVED7_MASK		0x1
9031 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RESERVED7_SHIFT		0
9032 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RESERVED8_MASK		0x1
9033 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RESERVED8_SHIFT		1
9034 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_BIT10_MASK		0x1
9035 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_BIT10_SHIFT		2
9036 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_BIT11_MASK		0x1
9037 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_BIT11_SHIFT		3
9038 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_MSDM_FLUSH_MASK		0x1
9039 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_MSDM_FLUSH_SHIFT	4
9040 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_MSEM_FLUSH_MASK		0x1
9041 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_MSEM_FLUSH_SHIFT	5
9042 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_ERROR_STATE_MASK	0x1
9043 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_ERROR_STATE_SHIFT	6
9044 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_YSTORM_FLUSH_MASK	0x1
9045 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_YSTORM_FLUSH_SHIFT	7
9046 	u8 flags2;
9047 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF0_MASK	0x3
9048 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF0_SHIFT	0
9049 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF1_MASK	0x3
9050 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF1_SHIFT	2
9051 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF2_MASK	0x3
9052 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF2_SHIFT	4
9053 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF3_MASK	0x3
9054 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF3_SHIFT	6
9055 	u8 flags3;
9056 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RXMIT_CF_MASK		0x3
9057 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RXMIT_CF_SHIFT		0
9058 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RX_ERROR_CF_MASK	0x3
9059 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RX_ERROR_CF_SHIFT	2
9060 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_FORCE_ACK_CF_MASK	0x3
9061 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_FORCE_ACK_CF_SHIFT	4
9062 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_FLUSH_Q0_CF_MASK	0x3
9063 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_FLUSH_Q0_CF_SHIFT	6
9064 	u8 flags4;
9065 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF8_MASK	0x3
9066 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF8_SHIFT	0
9067 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF9_MASK	0x3
9068 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF9_SHIFT	2
9069 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF10_MASK	0x3
9070 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF10_SHIFT	4
9071 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF11_MASK	0x3
9072 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF11_SHIFT	6
9073 	u8 flags5;
9074 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF12_MASK	0x3
9075 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF12_SHIFT	0
9076 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF13_MASK	0x3
9077 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF13_SHIFT	2
9078 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF14_MASK	0x3
9079 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF14_SHIFT	4
9080 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF15_MASK	0x3
9081 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF15_SHIFT	6
9082 	u8 flags6;
9083 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF16_MASK	0x3
9084 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF16_SHIFT	0
9085 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF17_MASK	0x3
9086 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF17_SHIFT	2
9087 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF18_MASK	0x3
9088 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF18_SHIFT	4
9089 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF19_MASK	0x3
9090 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF19_SHIFT	6
9091 	u8 flags7;
9092 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF20_MASK	0x3
9093 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF20_SHIFT	0
9094 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF21_MASK	0x3
9095 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF21_SHIFT	2
9096 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_SLOW_PATH_MASK	0x3
9097 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_SLOW_PATH_SHIFT	4
9098 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF0EN_MASK	0x1
9099 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF0EN_SHIFT	6
9100 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF1EN_MASK	0x1
9101 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF1EN_SHIFT	7
9102 	u8 flags8;
9103 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF2EN_MASK		0x1
9104 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF2EN_SHIFT		0
9105 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF3EN_MASK		0x1
9106 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF3EN_SHIFT		1
9107 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RXMIT_CF_EN_MASK	0x1
9108 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RXMIT_CF_EN_SHIFT	2
9109 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RX_ERROR_CF_EN_MASK	0x1
9110 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RX_ERROR_CF_EN_SHIFT	3
9111 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_FORCE_ACK_CF_EN_MASK	0x1
9112 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_FORCE_ACK_CF_EN_SHIFT	4
9113 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_FLUSH_Q0_CF_EN_MASK	0x1
9114 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_FLUSH_Q0_CF_EN_SHIFT	5
9115 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF8EN_MASK		0x1
9116 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF8EN_SHIFT		6
9117 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF9EN_MASK		0x1
9118 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF9EN_SHIFT		7
9119 	u8 flags9;
9120 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF10EN_MASK	0x1
9121 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF10EN_SHIFT	0
9122 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF11EN_MASK	0x1
9123 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF11EN_SHIFT	1
9124 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF12EN_MASK	0x1
9125 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF12EN_SHIFT	2
9126 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF13EN_MASK	0x1
9127 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF13EN_SHIFT	3
9128 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF14EN_MASK	0x1
9129 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF14EN_SHIFT	4
9130 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF15EN_MASK	0x1
9131 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF15EN_SHIFT	5
9132 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF16EN_MASK	0x1
9133 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF16EN_SHIFT	6
9134 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF17EN_MASK	0x1
9135 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF17EN_SHIFT	7
9136 	u8 flags10;
9137 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF18EN_MASK		0x1
9138 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF18EN_SHIFT		0
9139 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF19EN_MASK		0x1
9140 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF19EN_SHIFT		1
9141 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF20EN_MASK		0x1
9142 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF20EN_SHIFT		2
9143 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF21EN_MASK		0x1
9144 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF21EN_SHIFT		3
9145 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_SLOW_PATH_EN_MASK	0x1
9146 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_SLOW_PATH_EN_SHIFT	4
9147 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF23EN_MASK		0x1
9148 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF23EN_SHIFT		5
9149 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE0EN_MASK		0x1
9150 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE0EN_SHIFT		6
9151 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE1EN_MASK		0x1
9152 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE1EN_SHIFT		7
9153 	u8 flags11;
9154 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE2EN_MASK		0x1
9155 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE2EN_SHIFT		0
9156 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE3EN_MASK		0x1
9157 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE3EN_SHIFT		1
9158 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE4EN_MASK		0x1
9159 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE4EN_SHIFT		2
9160 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE5EN_MASK		0x1
9161 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE5EN_SHIFT		3
9162 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE6EN_MASK		0x1
9163 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE6EN_SHIFT		4
9164 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE7EN_MASK		0x1
9165 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE7EN_SHIFT		5
9166 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_A0_RESERVED1_MASK	0x1
9167 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_A0_RESERVED1_SHIFT	6
9168 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE9EN_MASK		0x1
9169 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE9EN_SHIFT		7
9170 	u8 flags12;
9171 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_IRQ_PROD_RULE_EN_MASK	0x1
9172 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_IRQ_PROD_RULE_EN_SHIFT	0
9173 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE11EN_MASK		0x1
9174 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE11EN_SHIFT		1
9175 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_A0_RESERVED2_MASK	0x1
9176 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_A0_RESERVED2_SHIFT	2
9177 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_A0_RESERVED3_MASK	0x1
9178 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_A0_RESERVED3_SHIFT	3
9179 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE14EN_MASK		0x1
9180 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE14EN_SHIFT		4
9181 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE15EN_MASK		0x1
9182 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE15EN_SHIFT		5
9183 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE16EN_MASK		0x1
9184 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE16EN_SHIFT		6
9185 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE17EN_MASK		0x1
9186 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE17EN_SHIFT		7
9187 	u8 flags13;
9188 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE18EN_MASK		0x1
9189 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE18EN_SHIFT		0
9190 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE19EN_MASK		0x1
9191 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE19EN_SHIFT		1
9192 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_A0_RESERVED4_MASK	0x1
9193 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_A0_RESERVED4_SHIFT	2
9194 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_A0_RESERVED5_MASK	0x1
9195 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_A0_RESERVED5_SHIFT	3
9196 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_A0_RESERVED6_MASK	0x1
9197 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_A0_RESERVED6_SHIFT	4
9198 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_A0_RESERVED7_MASK	0x1
9199 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_A0_RESERVED7_SHIFT	5
9200 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_A0_RESERVED8_MASK	0x1
9201 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_A0_RESERVED8_SHIFT	6
9202 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_A0_RESERVED9_MASK	0x1
9203 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_A0_RESERVED9_SHIFT	7
9204 	u8 flags14;
9205 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_BIT16_MASK	0x1
9206 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_BIT16_SHIFT	0
9207 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_BIT17_MASK	0x1
9208 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_BIT17_SHIFT	1
9209 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_BIT18_MASK	0x1
9210 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_BIT18_SHIFT	2
9211 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_BIT19_MASK	0x1
9212 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_BIT19_SHIFT	3
9213 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_BIT20_MASK	0x1
9214 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_BIT20_SHIFT	4
9215 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_BIT21_MASK	0x1
9216 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_BIT21_SHIFT	5
9217 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF23_MASK	0x3
9218 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF23_SHIFT	6
9219 	u8 byte2;
9220 	__le16 physical_q0;
9221 	__le16 irq_prod_shadow;
9222 	__le16 word2;
9223 	__le16 irq_cons;
9224 	__le16 irq_prod;
9225 	__le16 e5_reserved1;
9226 	__le16 conn_dpi;
9227 	u8 rxmit_opcode;
9228 	u8 byte4;
9229 	u8 byte5;
9230 	u8 byte6;
9231 	__le32 rxmit_psn_and_id;
9232 	__le32 rxmit_bytes_length;
9233 	__le32 psn;
9234 	__le32 reg3;
9235 	__le32 reg4;
9236 	__le32 reg5;
9237 	__le32 msn_and_syndrome;
9238 };
9239 
9240 struct e4_ystorm_roce_conn_ag_ctx {
9241 	u8 byte0;
9242 	u8 byte1;
9243 	u8 flags0;
9244 #define E4_YSTORM_ROCE_CONN_AG_CTX_BIT0_MASK     0x1
9245 #define E4_YSTORM_ROCE_CONN_AG_CTX_BIT0_SHIFT    0
9246 #define E4_YSTORM_ROCE_CONN_AG_CTX_BIT1_MASK     0x1
9247 #define E4_YSTORM_ROCE_CONN_AG_CTX_BIT1_SHIFT    1
9248 #define E4_YSTORM_ROCE_CONN_AG_CTX_CF0_MASK      0x3
9249 #define E4_YSTORM_ROCE_CONN_AG_CTX_CF0_SHIFT     2
9250 #define E4_YSTORM_ROCE_CONN_AG_CTX_CF1_MASK      0x3
9251 #define E4_YSTORM_ROCE_CONN_AG_CTX_CF1_SHIFT     4
9252 #define E4_YSTORM_ROCE_CONN_AG_CTX_CF2_MASK      0x3
9253 #define E4_YSTORM_ROCE_CONN_AG_CTX_CF2_SHIFT     6
9254 	u8 flags1;
9255 #define E4_YSTORM_ROCE_CONN_AG_CTX_CF0EN_MASK    0x1
9256 #define E4_YSTORM_ROCE_CONN_AG_CTX_CF0EN_SHIFT   0
9257 #define E4_YSTORM_ROCE_CONN_AG_CTX_CF1EN_MASK    0x1
9258 #define E4_YSTORM_ROCE_CONN_AG_CTX_CF1EN_SHIFT   1
9259 #define E4_YSTORM_ROCE_CONN_AG_CTX_CF2EN_MASK    0x1
9260 #define E4_YSTORM_ROCE_CONN_AG_CTX_CF2EN_SHIFT   2
9261 #define E4_YSTORM_ROCE_CONN_AG_CTX_RULE0EN_MASK  0x1
9262 #define E4_YSTORM_ROCE_CONN_AG_CTX_RULE0EN_SHIFT 3
9263 #define E4_YSTORM_ROCE_CONN_AG_CTX_RULE1EN_MASK  0x1
9264 #define E4_YSTORM_ROCE_CONN_AG_CTX_RULE1EN_SHIFT 4
9265 #define E4_YSTORM_ROCE_CONN_AG_CTX_RULE2EN_MASK  0x1
9266 #define E4_YSTORM_ROCE_CONN_AG_CTX_RULE2EN_SHIFT 5
9267 #define E4_YSTORM_ROCE_CONN_AG_CTX_RULE3EN_MASK  0x1
9268 #define E4_YSTORM_ROCE_CONN_AG_CTX_RULE3EN_SHIFT 6
9269 #define E4_YSTORM_ROCE_CONN_AG_CTX_RULE4EN_MASK  0x1
9270 #define E4_YSTORM_ROCE_CONN_AG_CTX_RULE4EN_SHIFT 7
9271 	u8 byte2;
9272 	u8 byte3;
9273 	__le16 word0;
9274 	__le32 reg0;
9275 	__le32 reg1;
9276 	__le16 word1;
9277 	__le16 word2;
9278 	__le16 word3;
9279 	__le16 word4;
9280 	__le32 reg2;
9281 	__le32 reg3;
9282 };
9283 
9284 struct e4_ystorm_roce_req_conn_ag_ctx {
9285 	u8 byte0;
9286 	u8 byte1;
9287 	u8 flags0;
9288 #define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_BIT0_MASK	0x1
9289 #define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_BIT0_SHIFT	0
9290 #define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_BIT1_MASK	0x1
9291 #define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_BIT1_SHIFT	1
9292 #define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_CF0_MASK		0x3
9293 #define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_CF0_SHIFT	2
9294 #define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_CF1_MASK		0x3
9295 #define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_CF1_SHIFT	4
9296 #define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_CF2_MASK		0x3
9297 #define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_CF2_SHIFT	6
9298 	u8 flags1;
9299 #define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_CF0EN_MASK	0x1
9300 #define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_CF0EN_SHIFT	0
9301 #define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_CF1EN_MASK	0x1
9302 #define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_CF1EN_SHIFT	1
9303 #define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_CF2EN_MASK	0x1
9304 #define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_CF2EN_SHIFT	2
9305 #define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_RULE0EN_MASK	0x1
9306 #define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_RULE0EN_SHIFT	3
9307 #define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_RULE1EN_MASK	0x1
9308 #define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_RULE1EN_SHIFT	4
9309 #define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_RULE2EN_MASK	0x1
9310 #define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_RULE2EN_SHIFT	5
9311 #define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_RULE3EN_MASK	0x1
9312 #define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_RULE3EN_SHIFT	6
9313 #define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_RULE4EN_MASK	0x1
9314 #define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_RULE4EN_SHIFT	7
9315 	u8 byte2;
9316 	u8 byte3;
9317 	__le16 word0;
9318 	__le32 reg0;
9319 	__le32 reg1;
9320 	__le16 word1;
9321 	__le16 word2;
9322 	__le16 word3;
9323 	__le16 word4;
9324 	__le32 reg2;
9325 	__le32 reg3;
9326 };
9327 
9328 struct e4_ystorm_roce_resp_conn_ag_ctx {
9329 	u8 byte0;
9330 	u8 byte1;
9331 	u8 flags0;
9332 #define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_BIT0_MASK	0x1
9333 #define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_BIT0_SHIFT	0
9334 #define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_BIT1_MASK	0x1
9335 #define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_BIT1_SHIFT	1
9336 #define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_CF0_MASK	0x3
9337 #define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_CF0_SHIFT	2
9338 #define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_CF1_MASK	0x3
9339 #define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_CF1_SHIFT	4
9340 #define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_CF2_MASK	0x3
9341 #define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_CF2_SHIFT	6
9342 	u8 flags1;
9343 #define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_CF0EN_MASK	0x1
9344 #define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_CF0EN_SHIFT	0
9345 #define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_CF1EN_MASK	0x1
9346 #define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_CF1EN_SHIFT	1
9347 #define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_CF2EN_MASK	0x1
9348 #define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_CF2EN_SHIFT	2
9349 #define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_RULE0EN_MASK	0x1
9350 #define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_RULE0EN_SHIFT	3
9351 #define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_RULE1EN_MASK	0x1
9352 #define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_RULE1EN_SHIFT	4
9353 #define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_RULE2EN_MASK	0x1
9354 #define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_RULE2EN_SHIFT	5
9355 #define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_RULE3EN_MASK	0x1
9356 #define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_RULE3EN_SHIFT	6
9357 #define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_RULE4EN_MASK	0x1
9358 #define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_RULE4EN_SHIFT	7
9359 	u8 byte2;
9360 	u8 byte3;
9361 	__le16 word0;
9362 	__le32 reg0;
9363 	__le32 reg1;
9364 	__le16 word1;
9365 	__le16 word2;
9366 	__le16 word3;
9367 	__le16 word4;
9368 	__le32 reg2;
9369 	__le32 reg3;
9370 };
9371 
9372 /* Roce doorbell data */
9373 enum roce_flavor {
9374 	PLAIN_ROCE,
9375 	RROCE_IPV4,
9376 	RROCE_IPV6,
9377 	MAX_ROCE_FLAVOR
9378 };
9379 
9380 /* The iwarp storm context of Ystorm */
9381 struct ystorm_iwarp_conn_st_ctx {
9382 	__le32 reserved[4];
9383 };
9384 
9385 /* The iwarp storm context of Pstorm */
9386 struct pstorm_iwarp_conn_st_ctx {
9387 	__le32 reserved[36];
9388 };
9389 
9390 /* The iwarp storm context of Xstorm */
9391 struct xstorm_iwarp_conn_st_ctx {
9392 	__le32 reserved[48];
9393 };
9394 
9395 struct e4_xstorm_iwarp_conn_ag_ctx {
9396 	u8 reserved0;
9397 	u8 state;
9398 	u8 flags0;
9399 #define E4_XSTORM_IWARP_CONN_AG_CTX_EXIST_IN_QM0_MASK	0x1
9400 #define E4_XSTORM_IWARP_CONN_AG_CTX_EXIST_IN_QM0_SHIFT	0
9401 #define E4_XSTORM_IWARP_CONN_AG_CTX_EXIST_IN_QM1_MASK	0x1
9402 #define E4_XSTORM_IWARP_CONN_AG_CTX_EXIST_IN_QM1_SHIFT	1
9403 #define E4_XSTORM_IWARP_CONN_AG_CTX_EXIST_IN_QM2_MASK	0x1
9404 #define E4_XSTORM_IWARP_CONN_AG_CTX_EXIST_IN_QM2_SHIFT	2
9405 #define E4_XSTORM_IWARP_CONN_AG_CTX_EXIST_IN_QM3_MASK	0x1
9406 #define E4_XSTORM_IWARP_CONN_AG_CTX_EXIST_IN_QM3_SHIFT	3
9407 #define E4_XSTORM_IWARP_CONN_AG_CTX_BIT4_MASK		0x1
9408 #define E4_XSTORM_IWARP_CONN_AG_CTX_BIT4_SHIFT		4
9409 #define E4_XSTORM_IWARP_CONN_AG_CTX_RESERVED2_MASK	0x1
9410 #define E4_XSTORM_IWARP_CONN_AG_CTX_RESERVED2_SHIFT	5
9411 #define E4_XSTORM_IWARP_CONN_AG_CTX_BIT6_MASK		0x1
9412 #define E4_XSTORM_IWARP_CONN_AG_CTX_BIT6_SHIFT		6
9413 #define E4_XSTORM_IWARP_CONN_AG_CTX_BIT7_MASK		0x1
9414 #define E4_XSTORM_IWARP_CONN_AG_CTX_BIT7_SHIFT		7
9415 	u8 flags1;
9416 #define E4_XSTORM_IWARP_CONN_AG_CTX_BIT8_MASK				0x1
9417 #define E4_XSTORM_IWARP_CONN_AG_CTX_BIT8_SHIFT				0
9418 #define E4_XSTORM_IWARP_CONN_AG_CTX_BIT9_MASK				0x1
9419 #define E4_XSTORM_IWARP_CONN_AG_CTX_BIT9_SHIFT				1
9420 #define E4_XSTORM_IWARP_CONN_AG_CTX_BIT10_MASK				0x1
9421 #define E4_XSTORM_IWARP_CONN_AG_CTX_BIT10_SHIFT				2
9422 #define E4_XSTORM_IWARP_CONN_AG_CTX_BIT11_MASK				0x1
9423 #define E4_XSTORM_IWARP_CONN_AG_CTX_BIT11_SHIFT				3
9424 #define E4_XSTORM_IWARP_CONN_AG_CTX_BIT12_MASK				0x1
9425 #define E4_XSTORM_IWARP_CONN_AG_CTX_BIT12_SHIFT				4
9426 #define E4_XSTORM_IWARP_CONN_AG_CTX_BIT13_MASK				0x1
9427 #define E4_XSTORM_IWARP_CONN_AG_CTX_BIT13_SHIFT				5
9428 #define E4_XSTORM_IWARP_CONN_AG_CTX_BIT14_MASK				0x1
9429 #define E4_XSTORM_IWARP_CONN_AG_CTX_BIT14_SHIFT				6
9430 #define E4_XSTORM_IWARP_CONN_AG_CTX_YSTORM_FLUSH_OR_REWIND_SND_MAX_MASK	0x1
9431 #define E4_XSTORM_IWARP_CONN_AG_CTX_YSTORM_FLUSH_OR_REWIND_SND_MAX_SHIFT 7
9432 	u8 flags2;
9433 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF0_MASK			0x3
9434 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF0_SHIFT			0
9435 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF1_MASK			0x3
9436 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF1_SHIFT			2
9437 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF2_MASK			0x3
9438 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF2_SHIFT			4
9439 #define E4_XSTORM_IWARP_CONN_AG_CTX_TIMER_STOP_ALL_MASK		0x3
9440 #define E4_XSTORM_IWARP_CONN_AG_CTX_TIMER_STOP_ALL_SHIFT	6
9441 	u8 flags3;
9442 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF4_MASK	0x3
9443 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF4_SHIFT	0
9444 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF5_MASK	0x3
9445 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF5_SHIFT	2
9446 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF6_MASK	0x3
9447 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF6_SHIFT	4
9448 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF7_MASK	0x3
9449 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF7_SHIFT	6
9450 	u8 flags4;
9451 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF8_MASK	0x3
9452 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF8_SHIFT	0
9453 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF9_MASK	0x3
9454 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF9_SHIFT	2
9455 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF10_MASK	0x3
9456 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF10_SHIFT	4
9457 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF11_MASK	0x3
9458 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF11_SHIFT	6
9459 	u8 flags5;
9460 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF12_MASK		0x3
9461 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF12_SHIFT		0
9462 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF13_MASK		0x3
9463 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF13_SHIFT		2
9464 #define E4_XSTORM_IWARP_CONN_AG_CTX_SQ_FLUSH_CF_MASK	0x3
9465 #define E4_XSTORM_IWARP_CONN_AG_CTX_SQ_FLUSH_CF_SHIFT	4
9466 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF15_MASK		0x3
9467 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF15_SHIFT		6
9468 	u8 flags6;
9469 #define E4_XSTORM_IWARP_CONN_AG_CTX_MPA_OR_ERROR_WAKEUP_TRIGGER_CF_MASK	0x3
9470 #define E4_XSTORM_IWARP_CONN_AG_CTX_MPA_OR_ERROR_WAKEUP_TRIGGER_CF_SHIFT 0
9471 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF17_MASK				0x3
9472 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF17_SHIFT				2
9473 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF18_MASK				0x3
9474 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF18_SHIFT				4
9475 #define E4_XSTORM_IWARP_CONN_AG_CTX_DQ_FLUSH_MASK			0x3
9476 #define E4_XSTORM_IWARP_CONN_AG_CTX_DQ_FLUSH_SHIFT			6
9477 	u8 flags7;
9478 #define E4_XSTORM_IWARP_CONN_AG_CTX_FLUSH_Q0_MASK	0x3
9479 #define E4_XSTORM_IWARP_CONN_AG_CTX_FLUSH_Q0_SHIFT	0
9480 #define E4_XSTORM_IWARP_CONN_AG_CTX_FLUSH_Q1_MASK	0x3
9481 #define E4_XSTORM_IWARP_CONN_AG_CTX_FLUSH_Q1_SHIFT	2
9482 #define E4_XSTORM_IWARP_CONN_AG_CTX_SLOW_PATH_MASK	0x3
9483 #define E4_XSTORM_IWARP_CONN_AG_CTX_SLOW_PATH_SHIFT	4
9484 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF0EN_MASK		0x1
9485 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF0EN_SHIFT		6
9486 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF1EN_MASK		0x1
9487 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF1EN_SHIFT		7
9488 	u8 flags8;
9489 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF2EN_MASK			0x1
9490 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF2EN_SHIFT			0
9491 #define E4_XSTORM_IWARP_CONN_AG_CTX_TIMER_STOP_ALL_EN_MASK	0x1
9492 #define E4_XSTORM_IWARP_CONN_AG_CTX_TIMER_STOP_ALL_EN_SHIFT	1
9493 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF4EN_MASK			0x1
9494 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF4EN_SHIFT			2
9495 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF5EN_MASK			0x1
9496 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF5EN_SHIFT			3
9497 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF6EN_MASK			0x1
9498 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF6EN_SHIFT			4
9499 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF7EN_MASK			0x1
9500 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF7EN_SHIFT			5
9501 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF8EN_MASK			0x1
9502 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF8EN_SHIFT			6
9503 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF9EN_MASK			0x1
9504 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF9EN_SHIFT			7
9505 	u8 flags9;
9506 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF10EN_MASK				0x1
9507 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF10EN_SHIFT			0
9508 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF11EN_MASK				0x1
9509 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF11EN_SHIFT			1
9510 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF12EN_MASK				0x1
9511 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF12EN_SHIFT			2
9512 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF13EN_MASK				0x1
9513 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF13EN_SHIFT			3
9514 #define E4_XSTORM_IWARP_CONN_AG_CTX_SQ_FLUSH_CF_EN_MASK			0x1
9515 #define E4_XSTORM_IWARP_CONN_AG_CTX_SQ_FLUSH_CF_EN_SHIFT		4
9516 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF15EN_MASK				0x1
9517 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF15EN_SHIFT			5
9518 #define E4_XSTORM_IWARP_CONN_AG_CTX_MPA_OR_ERROR_WAKEUP_TRIGGER_CF_EN_MASK 0x1
9519 #define E4_XSTORM_IWARP_CONN_AG_CTX_MPA_OR_ERROR_WAKEUP_TRIGGER_CF_EN_SHIFT 6
9520 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF17EN_MASK				0x1
9521 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF17EN_SHIFT			7
9522 	u8 flags10;
9523 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF18EN_MASK			0x1
9524 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF18EN_SHIFT		0
9525 #define E4_XSTORM_IWARP_CONN_AG_CTX_DQ_FLUSH_EN_MASK		0x1
9526 #define E4_XSTORM_IWARP_CONN_AG_CTX_DQ_FLUSH_EN_SHIFT		1
9527 #define E4_XSTORM_IWARP_CONN_AG_CTX_FLUSH_Q0_EN_MASK		0x1
9528 #define E4_XSTORM_IWARP_CONN_AG_CTX_FLUSH_Q0_EN_SHIFT		2
9529 #define E4_XSTORM_IWARP_CONN_AG_CTX_FLUSH_Q1_EN_MASK		0x1
9530 #define E4_XSTORM_IWARP_CONN_AG_CTX_FLUSH_Q1_EN_SHIFT		3
9531 #define E4_XSTORM_IWARP_CONN_AG_CTX_SLOW_PATH_EN_MASK		0x1
9532 #define E4_XSTORM_IWARP_CONN_AG_CTX_SLOW_PATH_EN_SHIFT		4
9533 #define E4_XSTORM_IWARP_CONN_AG_CTX_SEND_TERMINATE_CF_EN_MASK               0x1
9534 #define E4_XSTORM_IWARP_CONN_AG_CTX_SEND_TERMINATE_CF_EN_SHIFT              5
9535 #define E4_XSTORM_IWARP_CONN_AG_CTX_RULE0EN_MASK		0x1
9536 #define E4_XSTORM_IWARP_CONN_AG_CTX_RULE0EN_SHIFT		6
9537 #define E4_XSTORM_IWARP_CONN_AG_CTX_MORE_TO_SEND_RULE_EN_MASK	0x1
9538 #define E4_XSTORM_IWARP_CONN_AG_CTX_MORE_TO_SEND_RULE_EN_SHIFT	7
9539 	u8 flags11;
9540 #define E4_XSTORM_IWARP_CONN_AG_CTX_TX_BLOCKED_EN_MASK	0x1
9541 #define E4_XSTORM_IWARP_CONN_AG_CTX_TX_BLOCKED_EN_SHIFT	0
9542 #define E4_XSTORM_IWARP_CONN_AG_CTX_RULE3EN_MASK	0x1
9543 #define E4_XSTORM_IWARP_CONN_AG_CTX_RULE3EN_SHIFT	1
9544 #define E4_XSTORM_IWARP_CONN_AG_CTX_RESERVED3_MASK	0x1
9545 #define E4_XSTORM_IWARP_CONN_AG_CTX_RESERVED3_SHIFT	2
9546 #define E4_XSTORM_IWARP_CONN_AG_CTX_RULE5EN_MASK	0x1
9547 #define E4_XSTORM_IWARP_CONN_AG_CTX_RULE5EN_SHIFT	3
9548 #define E4_XSTORM_IWARP_CONN_AG_CTX_RULE6EN_MASK	0x1
9549 #define E4_XSTORM_IWARP_CONN_AG_CTX_RULE6EN_SHIFT	4
9550 #define E4_XSTORM_IWARP_CONN_AG_CTX_RULE7EN_MASK	0x1
9551 #define E4_XSTORM_IWARP_CONN_AG_CTX_RULE7EN_SHIFT	5
9552 #define E4_XSTORM_IWARP_CONN_AG_CTX_A0_RESERVED1_MASK	0x1
9553 #define E4_XSTORM_IWARP_CONN_AG_CTX_A0_RESERVED1_SHIFT	6
9554 #define E4_XSTORM_IWARP_CONN_AG_CTX_RULE9EN_MASK	0x1
9555 #define E4_XSTORM_IWARP_CONN_AG_CTX_RULE9EN_SHIFT	7
9556 	u8 flags12;
9557 #define E4_XSTORM_IWARP_CONN_AG_CTX_SQ_NOT_EMPTY_RULE_EN_MASK	0x1
9558 #define E4_XSTORM_IWARP_CONN_AG_CTX_SQ_NOT_EMPTY_RULE_EN_SHIFT	0
9559 #define E4_XSTORM_IWARP_CONN_AG_CTX_RULE11EN_MASK		0x1
9560 #define E4_XSTORM_IWARP_CONN_AG_CTX_RULE11EN_SHIFT		1
9561 #define E4_XSTORM_IWARP_CONN_AG_CTX_A0_RESERVED2_MASK		0x1
9562 #define E4_XSTORM_IWARP_CONN_AG_CTX_A0_RESERVED2_SHIFT		2
9563 #define E4_XSTORM_IWARP_CONN_AG_CTX_A0_RESERVED3_MASK		0x1
9564 #define E4_XSTORM_IWARP_CONN_AG_CTX_A0_RESERVED3_SHIFT		3
9565 #define E4_XSTORM_IWARP_CONN_AG_CTX_SQ_FENCE_RULE_EN_MASK	0x1
9566 #define E4_XSTORM_IWARP_CONN_AG_CTX_SQ_FENCE_RULE_EN_SHIFT	4
9567 #define E4_XSTORM_IWARP_CONN_AG_CTX_RULE15EN_MASK		0x1
9568 #define E4_XSTORM_IWARP_CONN_AG_CTX_RULE15EN_SHIFT		5
9569 #define E4_XSTORM_IWARP_CONN_AG_CTX_RULE16EN_MASK		0x1
9570 #define E4_XSTORM_IWARP_CONN_AG_CTX_RULE16EN_SHIFT		6
9571 #define E4_XSTORM_IWARP_CONN_AG_CTX_RULE17EN_MASK		0x1
9572 #define E4_XSTORM_IWARP_CONN_AG_CTX_RULE17EN_SHIFT		7
9573 	u8 flags13;
9574 #define E4_XSTORM_IWARP_CONN_AG_CTX_IRQ_NOT_EMPTY_RULE_EN_MASK	0x1
9575 #define E4_XSTORM_IWARP_CONN_AG_CTX_IRQ_NOT_EMPTY_RULE_EN_SHIFT	0
9576 #define E4_XSTORM_IWARP_CONN_AG_CTX_HQ_NOT_FULL_RULE_EN_MASK	0x1
9577 #define E4_XSTORM_IWARP_CONN_AG_CTX_HQ_NOT_FULL_RULE_EN_SHIFT	1
9578 #define E4_XSTORM_IWARP_CONN_AG_CTX_ORQ_RD_FENCE_RULE_EN_MASK	0x1
9579 #define E4_XSTORM_IWARP_CONN_AG_CTX_ORQ_RD_FENCE_RULE_EN_SHIFT	2
9580 #define E4_XSTORM_IWARP_CONN_AG_CTX_RULE21EN_MASK		0x1
9581 #define E4_XSTORM_IWARP_CONN_AG_CTX_RULE21EN_SHIFT		3
9582 #define E4_XSTORM_IWARP_CONN_AG_CTX_A0_RESERVED6_MASK		0x1
9583 #define E4_XSTORM_IWARP_CONN_AG_CTX_A0_RESERVED6_SHIFT		4
9584 #define E4_XSTORM_IWARP_CONN_AG_CTX_ORQ_NOT_FULL_RULE_EN_MASK	0x1
9585 #define E4_XSTORM_IWARP_CONN_AG_CTX_ORQ_NOT_FULL_RULE_EN_SHIFT	5
9586 #define E4_XSTORM_IWARP_CONN_AG_CTX_A0_RESERVED8_MASK		0x1
9587 #define E4_XSTORM_IWARP_CONN_AG_CTX_A0_RESERVED8_SHIFT		6
9588 #define E4_XSTORM_IWARP_CONN_AG_CTX_A0_RESERVED9_MASK		0x1
9589 #define E4_XSTORM_IWARP_CONN_AG_CTX_A0_RESERVED9_SHIFT		7
9590 	u8 flags14;
9591 #define E4_XSTORM_IWARP_CONN_AG_CTX_BIT16_MASK		0x1
9592 #define E4_XSTORM_IWARP_CONN_AG_CTX_BIT16_SHIFT		0
9593 #define E4_XSTORM_IWARP_CONN_AG_CTX_BIT17_MASK		0x1
9594 #define E4_XSTORM_IWARP_CONN_AG_CTX_BIT17_SHIFT		1
9595 #define E4_XSTORM_IWARP_CONN_AG_CTX_BIT18_MASK		0x1
9596 #define E4_XSTORM_IWARP_CONN_AG_CTX_BIT18_SHIFT		2
9597 #define E4_XSTORM_IWARP_CONN_AG_CTX_E5_RESERVED1_MASK	0x1
9598 #define E4_XSTORM_IWARP_CONN_AG_CTX_E5_RESERVED1_SHIFT	3
9599 #define E4_XSTORM_IWARP_CONN_AG_CTX_E5_RESERVED2_MASK	0x1
9600 #define E4_XSTORM_IWARP_CONN_AG_CTX_E5_RESERVED2_SHIFT	4
9601 #define E4_XSTORM_IWARP_CONN_AG_CTX_E5_RESERVED3_MASK	0x1
9602 #define E4_XSTORM_IWARP_CONN_AG_CTX_E5_RESERVED3_SHIFT	5
9603 #define E4_XSTORM_IWARP_CONN_AG_CTX_SEND_TERMINATE_CF_MASK	0x3
9604 #define E4_XSTORM_IWARP_CONN_AG_CTX_SEND_TERMINATE_CF_SHIFT	6
9605 	u8 byte2;
9606 	__le16 physical_q0;
9607 	__le16 physical_q1;
9608 	__le16 sq_comp_cons;
9609 	__le16 sq_tx_cons;
9610 	__le16 sq_prod;
9611 	__le16 word5;
9612 	__le16 conn_dpi;
9613 	u8 byte3;
9614 	u8 byte4;
9615 	u8 byte5;
9616 	u8 byte6;
9617 	__le32 reg0;
9618 	__le32 reg1;
9619 	__le32 reg2;
9620 	__le32 more_to_send_seq;
9621 	__le32 reg4;
9622 	__le32 rewinded_snd_max_or_term_opcode;
9623 	__le32 rd_msn;
9624 	__le16 irq_prod_via_msdm;
9625 	__le16 irq_cons;
9626 	__le16 hq_cons_th_or_mpa_data;
9627 	__le16 hq_cons;
9628 	__le32 atom_msn;
9629 	__le32 orq_cons;
9630 	__le32 orq_cons_th;
9631 	u8 byte7;
9632 	u8 wqe_data_pad_bytes;
9633 	u8 max_ord;
9634 	u8 former_hq_prod;
9635 	u8 irq_prod_via_msem;
9636 	u8 byte12;
9637 	u8 max_pkt_pdu_size_lo;
9638 	u8 max_pkt_pdu_size_hi;
9639 	u8 byte15;
9640 	u8 e5_reserved;
9641 	__le16 e5_reserved4;
9642 	__le32 reg10;
9643 	__le32 reg11;
9644 	__le32 shared_queue_page_addr_lo;
9645 	__le32 shared_queue_page_addr_hi;
9646 	__le32 reg14;
9647 	__le32 reg15;
9648 	__le32 reg16;
9649 	__le32 reg17;
9650 };
9651 
9652 struct e4_tstorm_iwarp_conn_ag_ctx {
9653 	u8 reserved0;
9654 	u8 state;
9655 	u8 flags0;
9656 #define E4_TSTORM_IWARP_CONN_AG_CTX_EXIST_IN_QM0_MASK	0x1
9657 #define E4_TSTORM_IWARP_CONN_AG_CTX_EXIST_IN_QM0_SHIFT	0
9658 #define E4_TSTORM_IWARP_CONN_AG_CTX_BIT1_MASK		0x1
9659 #define E4_TSTORM_IWARP_CONN_AG_CTX_BIT1_SHIFT		1
9660 #define E4_TSTORM_IWARP_CONN_AG_CTX_BIT2_MASK		0x1
9661 #define E4_TSTORM_IWARP_CONN_AG_CTX_BIT2_SHIFT		2
9662 #define E4_TSTORM_IWARP_CONN_AG_CTX_MSTORM_FLUSH_OR_TERMINATE_SENT_MASK  0x1
9663 #define E4_TSTORM_IWARP_CONN_AG_CTX_MSTORM_FLUSH_OR_TERMINATE_SENT_SHIFT 3
9664 #define E4_TSTORM_IWARP_CONN_AG_CTX_BIT4_MASK		0x1
9665 #define E4_TSTORM_IWARP_CONN_AG_CTX_BIT4_SHIFT		4
9666 #define E4_TSTORM_IWARP_CONN_AG_CTX_CACHED_ORQ_MASK	0x1
9667 #define E4_TSTORM_IWARP_CONN_AG_CTX_CACHED_ORQ_SHIFT	5
9668 #define E4_TSTORM_IWARP_CONN_AG_CTX_CF0_MASK		0x3
9669 #define E4_TSTORM_IWARP_CONN_AG_CTX_CF0_SHIFT		6
9670 	u8 flags1;
9671 #define E4_TSTORM_IWARP_CONN_AG_CTX_RQ_POST_CF_MASK		0x3
9672 #define E4_TSTORM_IWARP_CONN_AG_CTX_RQ_POST_CF_SHIFT		0
9673 #define E4_TSTORM_IWARP_CONN_AG_CTX_MPA_TIMEOUT_CF_MASK		0x3
9674 #define E4_TSTORM_IWARP_CONN_AG_CTX_MPA_TIMEOUT_CF_SHIFT	2
9675 #define E4_TSTORM_IWARP_CONN_AG_CTX_TIMER_STOP_ALL_MASK		0x3
9676 #define E4_TSTORM_IWARP_CONN_AG_CTX_TIMER_STOP_ALL_SHIFT	4
9677 #define E4_TSTORM_IWARP_CONN_AG_CTX_CF4_MASK			0x3
9678 #define E4_TSTORM_IWARP_CONN_AG_CTX_CF4_SHIFT			6
9679 	u8 flags2;
9680 #define E4_TSTORM_IWARP_CONN_AG_CTX_CF5_MASK	0x3
9681 #define E4_TSTORM_IWARP_CONN_AG_CTX_CF5_SHIFT	0
9682 #define E4_TSTORM_IWARP_CONN_AG_CTX_CF6_MASK	0x3
9683 #define E4_TSTORM_IWARP_CONN_AG_CTX_CF6_SHIFT	2
9684 #define E4_TSTORM_IWARP_CONN_AG_CTX_CF7_MASK	0x3
9685 #define E4_TSTORM_IWARP_CONN_AG_CTX_CF7_SHIFT	4
9686 #define E4_TSTORM_IWARP_CONN_AG_CTX_CF8_MASK	0x3
9687 #define E4_TSTORM_IWARP_CONN_AG_CTX_CF8_SHIFT	6
9688 	u8 flags3;
9689 #define E4_TSTORM_IWARP_CONN_AG_CTX_FLUSH_Q0_AND_TCP_HANDSHAKE_COMPLETE_MASK 0x3
9690 #define E4_TSTORM_IWARP_CONN_AG_CTX_FLUSH_Q0_AND_TCP_HANDSHAKE_COMPLETE_SHIFT 0
9691 #define E4_TSTORM_IWARP_CONN_AG_CTX_FLUSH_OR_ERROR_DETECTED_MASK	0x3
9692 #define E4_TSTORM_IWARP_CONN_AG_CTX_FLUSH_OR_ERROR_DETECTED_SHIFT	2
9693 #define E4_TSTORM_IWARP_CONN_AG_CTX_CF0EN_MASK				0x1
9694 #define E4_TSTORM_IWARP_CONN_AG_CTX_CF0EN_SHIFT				4
9695 #define E4_TSTORM_IWARP_CONN_AG_CTX_RQ_POST_CF_EN_MASK			0x1
9696 #define E4_TSTORM_IWARP_CONN_AG_CTX_RQ_POST_CF_EN_SHIFT			5
9697 #define E4_TSTORM_IWARP_CONN_AG_CTX_MPA_TIMEOUT_CF_EN_MASK		0x1
9698 #define E4_TSTORM_IWARP_CONN_AG_CTX_MPA_TIMEOUT_CF_EN_SHIFT		6
9699 #define E4_TSTORM_IWARP_CONN_AG_CTX_TIMER_STOP_ALL_EN_MASK		0x1
9700 #define E4_TSTORM_IWARP_CONN_AG_CTX_TIMER_STOP_ALL_EN_SHIFT		7
9701 	u8 flags4;
9702 #define E4_TSTORM_IWARP_CONN_AG_CTX_CF4EN_MASK				0x1
9703 #define E4_TSTORM_IWARP_CONN_AG_CTX_CF4EN_SHIFT				0
9704 #define E4_TSTORM_IWARP_CONN_AG_CTX_CF5EN_MASK				0x1
9705 #define E4_TSTORM_IWARP_CONN_AG_CTX_CF5EN_SHIFT				1
9706 #define E4_TSTORM_IWARP_CONN_AG_CTX_CF6EN_MASK				0x1
9707 #define E4_TSTORM_IWARP_CONN_AG_CTX_CF6EN_SHIFT				2
9708 #define E4_TSTORM_IWARP_CONN_AG_CTX_CF7EN_MASK				0x1
9709 #define E4_TSTORM_IWARP_CONN_AG_CTX_CF7EN_SHIFT				3
9710 #define E4_TSTORM_IWARP_CONN_AG_CTX_CF8EN_MASK				0x1
9711 #define E4_TSTORM_IWARP_CONN_AG_CTX_CF8EN_SHIFT				4
9712 #define E4_TSTORM_IWARP_CONN_AG_CTX_FLUSH_Q0_AND_TCP_HANDSHAKE_COMPL_EN_MASK 0x1
9713 #define	E4_TSTORM_IWARP_CONN_AG_CTX_FLUSH_Q0_AND_TCP_HANDSHAKE_COMPL_EN_SHIFT 5
9714 #define E4_TSTORM_IWARP_CONN_AG_CTX_FLUSH_OR_ERROR_DETECTED_EN_MASK	0x1
9715 #define E4_TSTORM_IWARP_CONN_AG_CTX_FLUSH_OR_ERROR_DETECTED_EN_SHIFT	6
9716 #define E4_TSTORM_IWARP_CONN_AG_CTX_RULE0EN_MASK			0x1
9717 #define E4_TSTORM_IWARP_CONN_AG_CTX_RULE0EN_SHIFT			7
9718 	u8 flags5;
9719 #define E4_TSTORM_IWARP_CONN_AG_CTX_RULE1EN_MASK		0x1
9720 #define E4_TSTORM_IWARP_CONN_AG_CTX_RULE1EN_SHIFT		0
9721 #define E4_TSTORM_IWARP_CONN_AG_CTX_RULE2EN_MASK		0x1
9722 #define E4_TSTORM_IWARP_CONN_AG_CTX_RULE2EN_SHIFT		1
9723 #define E4_TSTORM_IWARP_CONN_AG_CTX_RULE3EN_MASK		0x1
9724 #define E4_TSTORM_IWARP_CONN_AG_CTX_RULE3EN_SHIFT		2
9725 #define E4_TSTORM_IWARP_CONN_AG_CTX_RULE4EN_MASK		0x1
9726 #define E4_TSTORM_IWARP_CONN_AG_CTX_RULE4EN_SHIFT		3
9727 #define E4_TSTORM_IWARP_CONN_AG_CTX_RULE5EN_MASK		0x1
9728 #define E4_TSTORM_IWARP_CONN_AG_CTX_RULE5EN_SHIFT		4
9729 #define E4_TSTORM_IWARP_CONN_AG_CTX_SND_SQ_CONS_RULE_MASK	0x1
9730 #define E4_TSTORM_IWARP_CONN_AG_CTX_SND_SQ_CONS_RULE_SHIFT	5
9731 #define E4_TSTORM_IWARP_CONN_AG_CTX_RULE7EN_MASK		0x1
9732 #define E4_TSTORM_IWARP_CONN_AG_CTX_RULE7EN_SHIFT		6
9733 #define E4_TSTORM_IWARP_CONN_AG_CTX_RULE8EN_MASK		0x1
9734 #define E4_TSTORM_IWARP_CONN_AG_CTX_RULE8EN_SHIFT		7
9735 	__le32 reg0;
9736 	__le32 reg1;
9737 	__le32 unaligned_nxt_seq;
9738 	__le32 reg3;
9739 	__le32 reg4;
9740 	__le32 reg5;
9741 	__le32 reg6;
9742 	__le32 reg7;
9743 	__le32 reg8;
9744 	u8 orq_cache_idx;
9745 	u8 hq_prod;
9746 	__le16 sq_tx_cons_th;
9747 	u8 orq_prod;
9748 	u8 irq_cons;
9749 	__le16 sq_tx_cons;
9750 	__le16 conn_dpi;
9751 	__le16 rq_prod;
9752 	__le32 snd_seq;
9753 	__le32 last_hq_sequence;
9754 };
9755 
9756 /* The iwarp storm context of Tstorm */
9757 struct tstorm_iwarp_conn_st_ctx {
9758 	__le32 reserved[60];
9759 };
9760 
9761 /* The iwarp storm context of Mstorm */
9762 struct mstorm_iwarp_conn_st_ctx {
9763 	__le32 reserved[32];
9764 };
9765 
9766 /* The iwarp storm context of Ustorm */
9767 struct ustorm_iwarp_conn_st_ctx {
9768 	struct regpair reserved[14];
9769 };
9770 
9771 /* iwarp connection context */
9772 struct e4_iwarp_conn_context {
9773 	struct ystorm_iwarp_conn_st_ctx ystorm_st_context;
9774 	struct regpair ystorm_st_padding[2];
9775 	struct pstorm_iwarp_conn_st_ctx pstorm_st_context;
9776 	struct regpair pstorm_st_padding[2];
9777 	struct xstorm_iwarp_conn_st_ctx xstorm_st_context;
9778 	struct e4_xstorm_iwarp_conn_ag_ctx xstorm_ag_context;
9779 	struct e4_tstorm_iwarp_conn_ag_ctx tstorm_ag_context;
9780 	struct timers_context timer_context;
9781 	struct e4_ustorm_rdma_conn_ag_ctx ustorm_ag_context;
9782 	struct tstorm_iwarp_conn_st_ctx tstorm_st_context;
9783 	struct regpair tstorm_st_padding[2];
9784 	struct mstorm_iwarp_conn_st_ctx mstorm_st_context;
9785 	struct ustorm_iwarp_conn_st_ctx ustorm_st_context;
9786 	struct regpair ustorm_st_padding[2];
9787 };
9788 
9789 /* iWARP create QP params passed by driver to FW in CreateQP Request Ramrod */
9790 struct iwarp_create_qp_ramrod_data {
9791 	u8 flags;
9792 #define IWARP_CREATE_QP_RAMROD_DATA_FMR_AND_RESERVED_EN_MASK	0x1
9793 #define IWARP_CREATE_QP_RAMROD_DATA_FMR_AND_RESERVED_EN_SHIFT	0
9794 #define IWARP_CREATE_QP_RAMROD_DATA_SIGNALED_COMP_MASK		0x1
9795 #define IWARP_CREATE_QP_RAMROD_DATA_SIGNALED_COMP_SHIFT		1
9796 #define IWARP_CREATE_QP_RAMROD_DATA_RDMA_RD_EN_MASK		0x1
9797 #define IWARP_CREATE_QP_RAMROD_DATA_RDMA_RD_EN_SHIFT		2
9798 #define IWARP_CREATE_QP_RAMROD_DATA_RDMA_WR_EN_MASK		0x1
9799 #define IWARP_CREATE_QP_RAMROD_DATA_RDMA_WR_EN_SHIFT		3
9800 #define IWARP_CREATE_QP_RAMROD_DATA_ATOMIC_EN_MASK		0x1
9801 #define IWARP_CREATE_QP_RAMROD_DATA_ATOMIC_EN_SHIFT		4
9802 #define IWARP_CREATE_QP_RAMROD_DATA_SRQ_FLG_MASK		0x1
9803 #define IWARP_CREATE_QP_RAMROD_DATA_SRQ_FLG_SHIFT		5
9804 #define IWARP_CREATE_QP_RAMROD_DATA_LOW_LATENCY_QUEUE_EN_MASK	0x1
9805 #define IWARP_CREATE_QP_RAMROD_DATA_LOW_LATENCY_QUEUE_EN_SHIFT	6
9806 #define IWARP_CREATE_QP_RAMROD_DATA_RESERVED0_MASK		0x1
9807 #define IWARP_CREATE_QP_RAMROD_DATA_RESERVED0_SHIFT		7
9808 	u8 reserved1;
9809 	__le16 pd;
9810 	__le16 sq_num_pages;
9811 	__le16 rq_num_pages;
9812 	__le32 reserved3[2];
9813 	struct regpair qp_handle_for_cqe;
9814 	struct rdma_srq_id srq_id;
9815 	__le32 cq_cid_for_sq;
9816 	__le32 cq_cid_for_rq;
9817 	__le16 dpi;
9818 	__le16 physical_q0;
9819 	__le16 physical_q1;
9820 	u8 reserved2[6];
9821 };
9822 
9823 /* iWARP completion queue types */
9824 enum iwarp_eqe_async_opcode {
9825 	IWARP_EVENT_TYPE_ASYNC_CONNECT_COMPLETE,
9826 	IWARP_EVENT_TYPE_ASYNC_ENHANCED_MPA_REPLY_ARRIVED,
9827 	IWARP_EVENT_TYPE_ASYNC_MPA_HANDSHAKE_COMPLETE,
9828 	IWARP_EVENT_TYPE_ASYNC_CID_CLEANED,
9829 	IWARP_EVENT_TYPE_ASYNC_EXCEPTION_DETECTED,
9830 	IWARP_EVENT_TYPE_ASYNC_QP_IN_ERROR_STATE,
9831 	IWARP_EVENT_TYPE_ASYNC_CQ_OVERFLOW,
9832 	IWARP_EVENT_TYPE_ASYNC_SRQ_EMPTY,
9833 	IWARP_EVENT_TYPE_ASYNC_SRQ_LIMIT,
9834 	MAX_IWARP_EQE_ASYNC_OPCODE
9835 };
9836 
9837 struct iwarp_eqe_data_mpa_async_completion {
9838 	__le16 ulp_data_len;
9839 	u8 rtr_type_sent;
9840 	u8 reserved[5];
9841 };
9842 
9843 struct iwarp_eqe_data_tcp_async_completion {
9844 	__le16 ulp_data_len;
9845 	u8 mpa_handshake_mode;
9846 	u8 reserved[5];
9847 };
9848 
9849 /* iWARP completion queue types */
9850 enum iwarp_eqe_sync_opcode {
9851 	IWARP_EVENT_TYPE_TCP_OFFLOAD =
9852 	11,
9853 	IWARP_EVENT_TYPE_MPA_OFFLOAD,
9854 	IWARP_EVENT_TYPE_MPA_OFFLOAD_SEND_RTR,
9855 	IWARP_EVENT_TYPE_CREATE_QP,
9856 	IWARP_EVENT_TYPE_QUERY_QP,
9857 	IWARP_EVENT_TYPE_MODIFY_QP,
9858 	IWARP_EVENT_TYPE_DESTROY_QP,
9859 	IWARP_EVENT_TYPE_ABORT_TCP_OFFLOAD,
9860 	MAX_IWARP_EQE_SYNC_OPCODE
9861 };
9862 
9863 /* iWARP EQE completion status */
9864 enum iwarp_fw_return_code {
9865 	IWARP_CONN_ERROR_TCP_CONNECT_INVALID_PACKET = 6,
9866 	IWARP_CONN_ERROR_TCP_CONNECTION_RST,
9867 	IWARP_CONN_ERROR_TCP_CONNECT_TIMEOUT,
9868 	IWARP_CONN_ERROR_MPA_ERROR_REJECT,
9869 	IWARP_CONN_ERROR_MPA_NOT_SUPPORTED_VER,
9870 	IWARP_CONN_ERROR_MPA_RST,
9871 	IWARP_CONN_ERROR_MPA_FIN,
9872 	IWARP_CONN_ERROR_MPA_RTR_MISMATCH,
9873 	IWARP_CONN_ERROR_MPA_INSUF_IRD,
9874 	IWARP_CONN_ERROR_MPA_INVALID_PACKET,
9875 	IWARP_CONN_ERROR_MPA_LOCAL_ERROR,
9876 	IWARP_CONN_ERROR_MPA_TIMEOUT,
9877 	IWARP_CONN_ERROR_MPA_TERMINATE,
9878 	IWARP_QP_IN_ERROR_GOOD_CLOSE,
9879 	IWARP_QP_IN_ERROR_BAD_CLOSE,
9880 	IWARP_EXCEPTION_DETECTED_LLP_CLOSED,
9881 	IWARP_EXCEPTION_DETECTED_LLP_RESET,
9882 	IWARP_EXCEPTION_DETECTED_IRQ_FULL,
9883 	IWARP_EXCEPTION_DETECTED_RQ_EMPTY,
9884 	IWARP_EXCEPTION_DETECTED_SRQ_EMPTY,
9885 	IWARP_EXCEPTION_DETECTED_SRQ_LIMIT,
9886 	IWARP_EXCEPTION_DETECTED_LLP_TIMEOUT,
9887 	IWARP_EXCEPTION_DETECTED_REMOTE_PROTECTION_ERROR,
9888 	IWARP_EXCEPTION_DETECTED_CQ_OVERFLOW,
9889 	IWARP_EXCEPTION_DETECTED_LOCAL_CATASTROPHIC,
9890 	IWARP_EXCEPTION_DETECTED_LOCAL_ACCESS_ERROR,
9891 	IWARP_EXCEPTION_DETECTED_REMOTE_OPERATION_ERROR,
9892 	IWARP_EXCEPTION_DETECTED_TERMINATE_RECEIVED,
9893 	MAX_IWARP_FW_RETURN_CODE
9894 };
9895 
9896 /* unaligned opaque data received from LL2 */
9897 struct iwarp_init_func_params {
9898 	u8 ll2_ooo_q_index;
9899 	u8 reserved1[7];
9900 };
9901 
9902 /* iwarp func init ramrod data */
9903 struct iwarp_init_func_ramrod_data {
9904 	struct rdma_init_func_ramrod_data rdma;
9905 	struct tcp_init_params tcp;
9906 	struct iwarp_init_func_params iwarp;
9907 };
9908 
9909 /* iWARP QP - possible states to transition to */
9910 enum iwarp_modify_qp_new_state_type {
9911 	IWARP_MODIFY_QP_STATE_CLOSING = 1,
9912 	IWARP_MODIFY_QP_STATE_ERROR = 2,
9913 	MAX_IWARP_MODIFY_QP_NEW_STATE_TYPE
9914 };
9915 
9916 /* iwarp modify qp responder ramrod data */
9917 struct iwarp_modify_qp_ramrod_data {
9918 	__le16 transition_to_state;
9919 	__le16 flags;
9920 #define IWARP_MODIFY_QP_RAMROD_DATA_RDMA_RD_EN_MASK		0x1
9921 #define IWARP_MODIFY_QP_RAMROD_DATA_RDMA_RD_EN_SHIFT		0
9922 #define IWARP_MODIFY_QP_RAMROD_DATA_RDMA_WR_EN_MASK		0x1
9923 #define IWARP_MODIFY_QP_RAMROD_DATA_RDMA_WR_EN_SHIFT		1
9924 #define IWARP_MODIFY_QP_RAMROD_DATA_ATOMIC_EN_MASK		0x1
9925 #define IWARP_MODIFY_QP_RAMROD_DATA_ATOMIC_EN_SHIFT		2
9926 #define IWARP_MODIFY_QP_RAMROD_DATA_STATE_TRANS_EN_MASK		0x1
9927 #define IWARP_MODIFY_QP_RAMROD_DATA_STATE_TRANS_EN_SHIFT	3
9928 #define IWARP_MODIFY_QP_RAMROD_DATA_RDMA_OPS_EN_FLG_MASK	0x1
9929 #define IWARP_MODIFY_QP_RAMROD_DATA_RDMA_OPS_EN_FLG_SHIFT	4
9930 #define IWARP_MODIFY_QP_RAMROD_DATA_PHYSICAL_QUEUE_FLG_MASK	0x1
9931 #define IWARP_MODIFY_QP_RAMROD_DATA_PHYSICAL_QUEUE_FLG_SHIFT	5
9932 #define IWARP_MODIFY_QP_RAMROD_DATA_RESERVED_MASK		0x3FF
9933 #define IWARP_MODIFY_QP_RAMROD_DATA_RESERVED_SHIFT		6
9934 	__le16 physical_q0;
9935 	__le16 physical_q1;
9936 	__le32 reserved1[10];
9937 };
9938 
9939 /* MPA params for Enhanced mode */
9940 struct mpa_rq_params {
9941 	__le32 ird;
9942 	__le32 ord;
9943 };
9944 
9945 /* MPA host Address-Len for private data */
9946 struct mpa_ulp_buffer {
9947 	struct regpair addr;
9948 	__le16 len;
9949 	__le16 reserved[3];
9950 };
9951 
9952 /* iWARP MPA offload params common to Basic and Enhanced modes */
9953 struct mpa_outgoing_params {
9954 	u8 crc_needed;
9955 	u8 reject;
9956 	u8 reserved[6];
9957 	struct mpa_rq_params out_rq;
9958 	struct mpa_ulp_buffer outgoing_ulp_buffer;
9959 };
9960 
9961 /* iWARP MPA offload params passed by driver to FW in MPA Offload Request
9962  * Ramrod.
9963  */
9964 struct iwarp_mpa_offload_ramrod_data {
9965 	struct mpa_outgoing_params common;
9966 	__le32 tcp_cid;
9967 	u8 mode;
9968 	u8 tcp_connect_side;
9969 	u8 rtr_pref;
9970 #define IWARP_MPA_OFFLOAD_RAMROD_DATA_RTR_SUPPORTED_MASK	0x7
9971 #define IWARP_MPA_OFFLOAD_RAMROD_DATA_RTR_SUPPORTED_SHIFT	0
9972 #define IWARP_MPA_OFFLOAD_RAMROD_DATA_RESERVED1_MASK		0x1F
9973 #define IWARP_MPA_OFFLOAD_RAMROD_DATA_RESERVED1_SHIFT		3
9974 	u8 reserved2;
9975 	struct mpa_ulp_buffer incoming_ulp_buffer;
9976 	struct regpair async_eqe_output_buf;
9977 	struct regpair handle_for_async;
9978 	struct regpair shared_queue_addr;
9979 	__le16 rcv_wnd;
9980 	u8 stats_counter_id;
9981 	u8 reserved3[13];
9982 };
9983 
9984 /* iWARP TCP connection offload params passed by driver to FW */
9985 struct iwarp_offload_params {
9986 	struct mpa_ulp_buffer incoming_ulp_buffer;
9987 	struct regpair async_eqe_output_buf;
9988 	struct regpair handle_for_async;
9989 	__le16 physical_q0;
9990 	__le16 physical_q1;
9991 	u8 stats_counter_id;
9992 	u8 mpa_mode;
9993 	u8 reserved[10];
9994 };
9995 
9996 /* iWARP query QP output params */
9997 struct iwarp_query_qp_output_params {
9998 	__le32 flags;
9999 #define IWARP_QUERY_QP_OUTPUT_PARAMS_ERROR_FLG_MASK	0x1
10000 #define IWARP_QUERY_QP_OUTPUT_PARAMS_ERROR_FLG_SHIFT	0
10001 #define IWARP_QUERY_QP_OUTPUT_PARAMS_RESERVED0_MASK	0x7FFFFFFF
10002 #define IWARP_QUERY_QP_OUTPUT_PARAMS_RESERVED0_SHIFT	1
10003 	u8 reserved1[4];
10004 };
10005 
10006 /* iWARP query QP ramrod data */
10007 struct iwarp_query_qp_ramrod_data {
10008 	struct regpair output_params_addr;
10009 };
10010 
10011 /* iWARP Ramrod Command IDs */
10012 enum iwarp_ramrod_cmd_id {
10013 	IWARP_RAMROD_CMD_ID_TCP_OFFLOAD = 11,
10014 	IWARP_RAMROD_CMD_ID_MPA_OFFLOAD,
10015 	IWARP_RAMROD_CMD_ID_MPA_OFFLOAD_SEND_RTR,
10016 	IWARP_RAMROD_CMD_ID_CREATE_QP,
10017 	IWARP_RAMROD_CMD_ID_QUERY_QP,
10018 	IWARP_RAMROD_CMD_ID_MODIFY_QP,
10019 	IWARP_RAMROD_CMD_ID_DESTROY_QP,
10020 	IWARP_RAMROD_CMD_ID_ABORT_TCP_OFFLOAD,
10021 	MAX_IWARP_RAMROD_CMD_ID
10022 };
10023 
10024 /* Per PF iWARP retransmit path statistics */
10025 struct iwarp_rxmit_stats_drv {
10026 	struct regpair tx_go_to_slow_start_event_cnt;
10027 	struct regpair tx_fast_retransmit_event_cnt;
10028 };
10029 
10030 /* iWARP and TCP connection offload params passed by driver to FW in iWARP
10031  * offload ramrod.
10032  */
10033 struct iwarp_tcp_offload_ramrod_data {
10034 	struct tcp_offload_params_opt2 tcp;
10035 	struct iwarp_offload_params iwarp;
10036 };
10037 
10038 /* iWARP MPA negotiation types */
10039 enum mpa_negotiation_mode {
10040 	MPA_NEGOTIATION_TYPE_BASIC = 1,
10041 	MPA_NEGOTIATION_TYPE_ENHANCED = 2,
10042 	MAX_MPA_NEGOTIATION_MODE
10043 };
10044 
10045 /* iWARP MPA Enhanced mode RTR types */
10046 enum mpa_rtr_type {
10047 	MPA_RTR_TYPE_NONE = 0,
10048 	MPA_RTR_TYPE_ZERO_SEND = 1,
10049 	MPA_RTR_TYPE_ZERO_WRITE = 2,
10050 	MPA_RTR_TYPE_ZERO_SEND_AND_WRITE = 3,
10051 	MPA_RTR_TYPE_ZERO_READ = 4,
10052 	MPA_RTR_TYPE_ZERO_SEND_AND_READ = 5,
10053 	MPA_RTR_TYPE_ZERO_WRITE_AND_READ = 6,
10054 	MPA_RTR_TYPE_ZERO_SEND_AND_WRITE_AND_READ = 7,
10055 	MAX_MPA_RTR_TYPE
10056 };
10057 
10058 /* unaligned opaque data received from LL2 */
10059 struct unaligned_opaque_data {
10060 	__le16 first_mpa_offset;
10061 	u8 tcp_payload_offset;
10062 	u8 flags;
10063 #define UNALIGNED_OPAQUE_DATA_PKT_REACHED_WIN_RIGHT_EDGE_MASK	0x1
10064 #define UNALIGNED_OPAQUE_DATA_PKT_REACHED_WIN_RIGHT_EDGE_SHIFT	0
10065 #define UNALIGNED_OPAQUE_DATA_CONNECTION_CLOSED_MASK		0x1
10066 #define UNALIGNED_OPAQUE_DATA_CONNECTION_CLOSED_SHIFT		1
10067 #define UNALIGNED_OPAQUE_DATA_RESERVED_MASK			0x3F
10068 #define UNALIGNED_OPAQUE_DATA_RESERVED_SHIFT			2
10069 	__le32 cid;
10070 };
10071 
10072 struct e4_mstorm_iwarp_conn_ag_ctx {
10073 	u8 reserved;
10074 	u8 state;
10075 	u8 flags0;
10076 #define E4_MSTORM_IWARP_CONN_AG_CTX_EXIST_IN_QM0_MASK		0x1
10077 #define E4_MSTORM_IWARP_CONN_AG_CTX_EXIST_IN_QM0_SHIFT		0
10078 #define E4_MSTORM_IWARP_CONN_AG_CTX_BIT1_MASK			0x1
10079 #define E4_MSTORM_IWARP_CONN_AG_CTX_BIT1_SHIFT			1
10080 #define E4_MSTORM_IWARP_CONN_AG_CTX_INV_STAG_DONE_CF_MASK	0x3
10081 #define E4_MSTORM_IWARP_CONN_AG_CTX_INV_STAG_DONE_CF_SHIFT	2
10082 #define E4_MSTORM_IWARP_CONN_AG_CTX_CF1_MASK			0x3
10083 #define E4_MSTORM_IWARP_CONN_AG_CTX_CF1_SHIFT			4
10084 #define E4_MSTORM_IWARP_CONN_AG_CTX_CF2_MASK			0x3
10085 #define E4_MSTORM_IWARP_CONN_AG_CTX_CF2_SHIFT			6
10086 	u8 flags1;
10087 #define E4_MSTORM_IWARP_CONN_AG_CTX_INV_STAG_DONE_CF_EN_MASK	0x1
10088 #define E4_MSTORM_IWARP_CONN_AG_CTX_INV_STAG_DONE_CF_EN_SHIFT	0
10089 #define E4_MSTORM_IWARP_CONN_AG_CTX_CF1EN_MASK			0x1
10090 #define E4_MSTORM_IWARP_CONN_AG_CTX_CF1EN_SHIFT			1
10091 #define E4_MSTORM_IWARP_CONN_AG_CTX_CF2EN_MASK			0x1
10092 #define E4_MSTORM_IWARP_CONN_AG_CTX_CF2EN_SHIFT			2
10093 #define E4_MSTORM_IWARP_CONN_AG_CTX_RULE0EN_MASK		0x1
10094 #define E4_MSTORM_IWARP_CONN_AG_CTX_RULE0EN_SHIFT		3
10095 #define E4_MSTORM_IWARP_CONN_AG_CTX_RULE1EN_MASK		0x1
10096 #define E4_MSTORM_IWARP_CONN_AG_CTX_RULE1EN_SHIFT		4
10097 #define E4_MSTORM_IWARP_CONN_AG_CTX_RULE2EN_MASK		0x1
10098 #define E4_MSTORM_IWARP_CONN_AG_CTX_RULE2EN_SHIFT		5
10099 #define E4_MSTORM_IWARP_CONN_AG_CTX_RCQ_CONS_EN_MASK		0x1
10100 #define E4_MSTORM_IWARP_CONN_AG_CTX_RCQ_CONS_EN_SHIFT		6
10101 #define E4_MSTORM_IWARP_CONN_AG_CTX_RULE4EN_MASK		0x1
10102 #define E4_MSTORM_IWARP_CONN_AG_CTX_RULE4EN_SHIFT		7
10103 	__le16 rcq_cons;
10104 	__le16 rcq_cons_th;
10105 	__le32 reg0;
10106 	__le32 reg1;
10107 };
10108 
10109 struct e4_ustorm_iwarp_conn_ag_ctx {
10110 	u8 reserved;
10111 	u8 byte1;
10112 	u8 flags0;
10113 #define E4_USTORM_IWARP_CONN_AG_CTX_EXIST_IN_QM0_MASK	0x1
10114 #define E4_USTORM_IWARP_CONN_AG_CTX_EXIST_IN_QM0_SHIFT	0
10115 #define E4_USTORM_IWARP_CONN_AG_CTX_BIT1_MASK		0x1
10116 #define E4_USTORM_IWARP_CONN_AG_CTX_BIT1_SHIFT		1
10117 #define E4_USTORM_IWARP_CONN_AG_CTX_CF0_MASK		0x3
10118 #define E4_USTORM_IWARP_CONN_AG_CTX_CF0_SHIFT		2
10119 #define E4_USTORM_IWARP_CONN_AG_CTX_CF1_MASK		0x3
10120 #define E4_USTORM_IWARP_CONN_AG_CTX_CF1_SHIFT		4
10121 #define E4_USTORM_IWARP_CONN_AG_CTX_CF2_MASK		0x3
10122 #define E4_USTORM_IWARP_CONN_AG_CTX_CF2_SHIFT		6
10123 	u8 flags1;
10124 #define E4_USTORM_IWARP_CONN_AG_CTX_CF3_MASK		0x3
10125 #define E4_USTORM_IWARP_CONN_AG_CTX_CF3_SHIFT		0
10126 #define E4_USTORM_IWARP_CONN_AG_CTX_CQ_ARM_SE_CF_MASK	0x3
10127 #define E4_USTORM_IWARP_CONN_AG_CTX_CQ_ARM_SE_CF_SHIFT	2
10128 #define E4_USTORM_IWARP_CONN_AG_CTX_CQ_ARM_CF_MASK	0x3
10129 #define E4_USTORM_IWARP_CONN_AG_CTX_CQ_ARM_CF_SHIFT	4
10130 #define E4_USTORM_IWARP_CONN_AG_CTX_CF6_MASK		0x3
10131 #define E4_USTORM_IWARP_CONN_AG_CTX_CF6_SHIFT		6
10132 	u8 flags2;
10133 #define E4_USTORM_IWARP_CONN_AG_CTX_CF0EN_MASK			0x1
10134 #define E4_USTORM_IWARP_CONN_AG_CTX_CF0EN_SHIFT			0
10135 #define E4_USTORM_IWARP_CONN_AG_CTX_CF1EN_MASK			0x1
10136 #define E4_USTORM_IWARP_CONN_AG_CTX_CF1EN_SHIFT			1
10137 #define E4_USTORM_IWARP_CONN_AG_CTX_CF2EN_MASK			0x1
10138 #define E4_USTORM_IWARP_CONN_AG_CTX_CF2EN_SHIFT			2
10139 #define E4_USTORM_IWARP_CONN_AG_CTX_CF3EN_MASK			0x1
10140 #define E4_USTORM_IWARP_CONN_AG_CTX_CF3EN_SHIFT			3
10141 #define E4_USTORM_IWARP_CONN_AG_CTX_CQ_ARM_SE_CF_EN_MASK	0x1
10142 #define E4_USTORM_IWARP_CONN_AG_CTX_CQ_ARM_SE_CF_EN_SHIFT	4
10143 #define E4_USTORM_IWARP_CONN_AG_CTX_CQ_ARM_CF_EN_MASK		0x1
10144 #define E4_USTORM_IWARP_CONN_AG_CTX_CQ_ARM_CF_EN_SHIFT		5
10145 #define E4_USTORM_IWARP_CONN_AG_CTX_CF6EN_MASK			0x1
10146 #define E4_USTORM_IWARP_CONN_AG_CTX_CF6EN_SHIFT			6
10147 #define E4_USTORM_IWARP_CONN_AG_CTX_CQ_SE_EN_MASK		0x1
10148 #define E4_USTORM_IWARP_CONN_AG_CTX_CQ_SE_EN_SHIFT		7
10149 	u8 flags3;
10150 #define E4_USTORM_IWARP_CONN_AG_CTX_CQ_EN_MASK		0x1
10151 #define E4_USTORM_IWARP_CONN_AG_CTX_CQ_EN_SHIFT		0
10152 #define E4_USTORM_IWARP_CONN_AG_CTX_RULE2EN_MASK	0x1
10153 #define E4_USTORM_IWARP_CONN_AG_CTX_RULE2EN_SHIFT	1
10154 #define E4_USTORM_IWARP_CONN_AG_CTX_RULE3EN_MASK	0x1
10155 #define E4_USTORM_IWARP_CONN_AG_CTX_RULE3EN_SHIFT	2
10156 #define E4_USTORM_IWARP_CONN_AG_CTX_RULE4EN_MASK	0x1
10157 #define E4_USTORM_IWARP_CONN_AG_CTX_RULE4EN_SHIFT	3
10158 #define E4_USTORM_IWARP_CONN_AG_CTX_RULE5EN_MASK	0x1
10159 #define E4_USTORM_IWARP_CONN_AG_CTX_RULE5EN_SHIFT	4
10160 #define E4_USTORM_IWARP_CONN_AG_CTX_RULE6EN_MASK	0x1
10161 #define E4_USTORM_IWARP_CONN_AG_CTX_RULE6EN_SHIFT	5
10162 #define E4_USTORM_IWARP_CONN_AG_CTX_RULE7EN_MASK	0x1
10163 #define E4_USTORM_IWARP_CONN_AG_CTX_RULE7EN_SHIFT	6
10164 #define E4_USTORM_IWARP_CONN_AG_CTX_RULE8EN_MASK	0x1
10165 #define E4_USTORM_IWARP_CONN_AG_CTX_RULE8EN_SHIFT	7
10166 	u8 byte2;
10167 	u8 byte3;
10168 	__le16 word0;
10169 	__le16 word1;
10170 	__le32 cq_cons;
10171 	__le32 cq_se_prod;
10172 	__le32 cq_prod;
10173 	__le32 reg3;
10174 	__le16 word2;
10175 	__le16 word3;
10176 };
10177 
10178 struct e4_ystorm_iwarp_conn_ag_ctx {
10179 	u8 byte0;
10180 	u8 byte1;
10181 	u8 flags0;
10182 #define E4_YSTORM_IWARP_CONN_AG_CTX_BIT0_MASK	0x1
10183 #define E4_YSTORM_IWARP_CONN_AG_CTX_BIT0_SHIFT	0
10184 #define E4_YSTORM_IWARP_CONN_AG_CTX_BIT1_MASK	0x1
10185 #define E4_YSTORM_IWARP_CONN_AG_CTX_BIT1_SHIFT	1
10186 #define E4_YSTORM_IWARP_CONN_AG_CTX_CF0_MASK	0x3
10187 #define E4_YSTORM_IWARP_CONN_AG_CTX_CF0_SHIFT	2
10188 #define E4_YSTORM_IWARP_CONN_AG_CTX_CF1_MASK	0x3
10189 #define E4_YSTORM_IWARP_CONN_AG_CTX_CF1_SHIFT	4
10190 #define E4_YSTORM_IWARP_CONN_AG_CTX_CF2_MASK	0x3
10191 #define E4_YSTORM_IWARP_CONN_AG_CTX_CF2_SHIFT	6
10192 	u8 flags1;
10193 #define E4_YSTORM_IWARP_CONN_AG_CTX_CF0EN_MASK		0x1
10194 #define E4_YSTORM_IWARP_CONN_AG_CTX_CF0EN_SHIFT		0
10195 #define E4_YSTORM_IWARP_CONN_AG_CTX_CF1EN_MASK		0x1
10196 #define E4_YSTORM_IWARP_CONN_AG_CTX_CF1EN_SHIFT		1
10197 #define E4_YSTORM_IWARP_CONN_AG_CTX_CF2EN_MASK		0x1
10198 #define E4_YSTORM_IWARP_CONN_AG_CTX_CF2EN_SHIFT		2
10199 #define E4_YSTORM_IWARP_CONN_AG_CTX_RULE0EN_MASK	0x1
10200 #define E4_YSTORM_IWARP_CONN_AG_CTX_RULE0EN_SHIFT	3
10201 #define E4_YSTORM_IWARP_CONN_AG_CTX_RULE1EN_MASK	0x1
10202 #define E4_YSTORM_IWARP_CONN_AG_CTX_RULE1EN_SHIFT	4
10203 #define E4_YSTORM_IWARP_CONN_AG_CTX_RULE2EN_MASK	0x1
10204 #define E4_YSTORM_IWARP_CONN_AG_CTX_RULE2EN_SHIFT	5
10205 #define E4_YSTORM_IWARP_CONN_AG_CTX_RULE3EN_MASK	0x1
10206 #define E4_YSTORM_IWARP_CONN_AG_CTX_RULE3EN_SHIFT	6
10207 #define E4_YSTORM_IWARP_CONN_AG_CTX_RULE4EN_MASK	0x1
10208 #define E4_YSTORM_IWARP_CONN_AG_CTX_RULE4EN_SHIFT	7
10209 	u8 byte2;
10210 	u8 byte3;
10211 	__le16 word0;
10212 	__le32 reg0;
10213 	__le32 reg1;
10214 	__le16 word1;
10215 	__le16 word2;
10216 	__le16 word3;
10217 	__le16 word4;
10218 	__le32 reg2;
10219 	__le32 reg3;
10220 };
10221 
10222 /* The fcoe storm context of Ystorm */
10223 struct ystorm_fcoe_conn_st_ctx {
10224 	u8 func_mode;
10225 	u8 cos;
10226 	u8 conf_version;
10227 	u8 eth_hdr_size;
10228 	__le16 stat_ram_addr;
10229 	__le16 mtu;
10230 	__le16 max_fc_payload_len;
10231 	__le16 tx_max_fc_pay_len;
10232 	u8 fcp_cmd_size;
10233 	u8 fcp_rsp_size;
10234 	__le16 mss;
10235 	struct regpair reserved;
10236 	__le16 min_frame_size;
10237 	u8 protection_info_flags;
10238 #define YSTORM_FCOE_CONN_ST_CTX_SUPPORT_PROTECTION_MASK		0x1
10239 #define YSTORM_FCOE_CONN_ST_CTX_SUPPORT_PROTECTION_SHIFT	0
10240 #define YSTORM_FCOE_CONN_ST_CTX_VALID_MASK			0x1
10241 #define YSTORM_FCOE_CONN_ST_CTX_VALID_SHIFT			1
10242 #define YSTORM_FCOE_CONN_ST_CTX_RESERVED1_MASK			0x3F
10243 #define YSTORM_FCOE_CONN_ST_CTX_RESERVED1_SHIFT			2
10244 	u8 dst_protection_per_mss;
10245 	u8 src_protection_per_mss;
10246 	u8 ptu_log_page_size;
10247 	u8 flags;
10248 #define YSTORM_FCOE_CONN_ST_CTX_INNER_VLAN_FLAG_MASK	0x1
10249 #define YSTORM_FCOE_CONN_ST_CTX_INNER_VLAN_FLAG_SHIFT	0
10250 #define YSTORM_FCOE_CONN_ST_CTX_OUTER_VLAN_FLAG_MASK	0x1
10251 #define YSTORM_FCOE_CONN_ST_CTX_OUTER_VLAN_FLAG_SHIFT	1
10252 #define YSTORM_FCOE_CONN_ST_CTX_RSRV_MASK		0x3F
10253 #define YSTORM_FCOE_CONN_ST_CTX_RSRV_SHIFT		2
10254 	u8 fcp_xfer_size;
10255 };
10256 
10257 /* FCoE 16-bits vlan structure */
10258 struct fcoe_vlan_fields {
10259 	__le16 fields;
10260 #define FCOE_VLAN_FIELDS_VID_MASK	0xFFF
10261 #define FCOE_VLAN_FIELDS_VID_SHIFT	0
10262 #define FCOE_VLAN_FIELDS_CLI_MASK	0x1
10263 #define FCOE_VLAN_FIELDS_CLI_SHIFT	12
10264 #define FCOE_VLAN_FIELDS_PRI_MASK	0x7
10265 #define FCOE_VLAN_FIELDS_PRI_SHIFT	13
10266 };
10267 
10268 /* FCoE 16-bits vlan union */
10269 union fcoe_vlan_field_union {
10270 	struct fcoe_vlan_fields fields;
10271 	__le16 val;
10272 };
10273 
10274 /* FCoE 16-bits vlan, vif union */
10275 union fcoe_vlan_vif_field_union {
10276 	union fcoe_vlan_field_union vlan;
10277 	__le16 vif;
10278 };
10279 
10280 /* Ethernet context section */
10281 struct pstorm_fcoe_eth_context_section {
10282 	u8 remote_addr_3;
10283 	u8 remote_addr_2;
10284 	u8 remote_addr_1;
10285 	u8 remote_addr_0;
10286 	u8 local_addr_1;
10287 	u8 local_addr_0;
10288 	u8 remote_addr_5;
10289 	u8 remote_addr_4;
10290 	u8 local_addr_5;
10291 	u8 local_addr_4;
10292 	u8 local_addr_3;
10293 	u8 local_addr_2;
10294 	union fcoe_vlan_vif_field_union vif_outer_vlan;
10295 	__le16 vif_outer_eth_type;
10296 	union fcoe_vlan_vif_field_union inner_vlan;
10297 	__le16 inner_eth_type;
10298 };
10299 
10300 /* The fcoe storm context of Pstorm */
10301 struct pstorm_fcoe_conn_st_ctx {
10302 	u8 func_mode;
10303 	u8 cos;
10304 	u8 conf_version;
10305 	u8 rsrv;
10306 	__le16 stat_ram_addr;
10307 	__le16 mss;
10308 	struct regpair abts_cleanup_addr;
10309 	struct pstorm_fcoe_eth_context_section eth;
10310 	u8 sid_2;
10311 	u8 sid_1;
10312 	u8 sid_0;
10313 	u8 flags;
10314 #define PSTORM_FCOE_CONN_ST_CTX_VNTAG_VLAN_MASK			0x1
10315 #define PSTORM_FCOE_CONN_ST_CTX_VNTAG_VLAN_SHIFT		0
10316 #define PSTORM_FCOE_CONN_ST_CTX_SUPPORT_REC_RR_TOV_MASK		0x1
10317 #define PSTORM_FCOE_CONN_ST_CTX_SUPPORT_REC_RR_TOV_SHIFT	1
10318 #define PSTORM_FCOE_CONN_ST_CTX_INNER_VLAN_FLAG_MASK		0x1
10319 #define PSTORM_FCOE_CONN_ST_CTX_INNER_VLAN_FLAG_SHIFT		2
10320 #define PSTORM_FCOE_CONN_ST_CTX_OUTER_VLAN_FLAG_MASK		0x1
10321 #define PSTORM_FCOE_CONN_ST_CTX_OUTER_VLAN_FLAG_SHIFT		3
10322 #define PSTORM_FCOE_CONN_ST_CTX_SINGLE_VLAN_FLAG_MASK		0x1
10323 #define PSTORM_FCOE_CONN_ST_CTX_SINGLE_VLAN_FLAG_SHIFT		4
10324 #define PSTORM_FCOE_CONN_ST_CTX_RESERVED_MASK			0x7
10325 #define PSTORM_FCOE_CONN_ST_CTX_RESERVED_SHIFT			5
10326 	u8 did_2;
10327 	u8 did_1;
10328 	u8 did_0;
10329 	u8 src_mac_index;
10330 	__le16 rec_rr_tov_val;
10331 	u8 q_relative_offset;
10332 	u8 reserved1;
10333 };
10334 
10335 /* The fcoe storm context of Xstorm */
10336 struct xstorm_fcoe_conn_st_ctx {
10337 	u8 func_mode;
10338 	u8 src_mac_index;
10339 	u8 conf_version;
10340 	u8 cached_wqes_avail;
10341 	__le16 stat_ram_addr;
10342 	u8 flags;
10343 #define XSTORM_FCOE_CONN_ST_CTX_SQ_DEFERRED_MASK		0x1
10344 #define XSTORM_FCOE_CONN_ST_CTX_SQ_DEFERRED_SHIFT		0
10345 #define XSTORM_FCOE_CONN_ST_CTX_INNER_VLAN_FLAG_MASK		0x1
10346 #define XSTORM_FCOE_CONN_ST_CTX_INNER_VLAN_FLAG_SHIFT		1
10347 #define XSTORM_FCOE_CONN_ST_CTX_INNER_VLAN_FLAG_ORIG_MASK	0x1
10348 #define XSTORM_FCOE_CONN_ST_CTX_INNER_VLAN_FLAG_ORIG_SHIFT	2
10349 #define XSTORM_FCOE_CONN_ST_CTX_LAST_QUEUE_HANDLED_MASK		0x3
10350 #define XSTORM_FCOE_CONN_ST_CTX_LAST_QUEUE_HANDLED_SHIFT	3
10351 #define XSTORM_FCOE_CONN_ST_CTX_RSRV_MASK			0x7
10352 #define XSTORM_FCOE_CONN_ST_CTX_RSRV_SHIFT			5
10353 	u8 cached_wqes_offset;
10354 	u8 reserved2;
10355 	u8 eth_hdr_size;
10356 	u8 seq_id;
10357 	u8 max_conc_seqs;
10358 	__le16 num_pages_in_pbl;
10359 	__le16 reserved;
10360 	struct regpair sq_pbl_addr;
10361 	struct regpair sq_curr_page_addr;
10362 	struct regpair sq_next_page_addr;
10363 	struct regpair xferq_pbl_addr;
10364 	struct regpair xferq_curr_page_addr;
10365 	struct regpair xferq_next_page_addr;
10366 	struct regpair respq_pbl_addr;
10367 	struct regpair respq_curr_page_addr;
10368 	struct regpair respq_next_page_addr;
10369 	__le16 mtu;
10370 	__le16 tx_max_fc_pay_len;
10371 	__le16 max_fc_payload_len;
10372 	__le16 min_frame_size;
10373 	__le16 sq_pbl_next_index;
10374 	__le16 respq_pbl_next_index;
10375 	u8 fcp_cmd_byte_credit;
10376 	u8 fcp_rsp_byte_credit;
10377 	__le16 protection_info;
10378 #define XSTORM_FCOE_CONN_ST_CTX_PROTECTION_PERF_MASK		0x1
10379 #define XSTORM_FCOE_CONN_ST_CTX_PROTECTION_PERF_SHIFT		0
10380 #define XSTORM_FCOE_CONN_ST_CTX_SUPPORT_PROTECTION_MASK		0x1
10381 #define XSTORM_FCOE_CONN_ST_CTX_SUPPORT_PROTECTION_SHIFT	1
10382 #define XSTORM_FCOE_CONN_ST_CTX_VALID_MASK			0x1
10383 #define XSTORM_FCOE_CONN_ST_CTX_VALID_SHIFT			2
10384 #define XSTORM_FCOE_CONN_ST_CTX_FRAME_PROT_ALIGNED_MASK		0x1
10385 #define XSTORM_FCOE_CONN_ST_CTX_FRAME_PROT_ALIGNED_SHIFT	3
10386 #define XSTORM_FCOE_CONN_ST_CTX_RESERVED3_MASK			0xF
10387 #define XSTORM_FCOE_CONN_ST_CTX_RESERVED3_SHIFT			4
10388 #define XSTORM_FCOE_CONN_ST_CTX_DST_PROTECTION_PER_MSS_MASK	0xFF
10389 #define XSTORM_FCOE_CONN_ST_CTX_DST_PROTECTION_PER_MSS_SHIFT	8
10390 	__le16 xferq_pbl_next_index;
10391 	__le16 page_size;
10392 	u8 mid_seq;
10393 	u8 fcp_xfer_byte_credit;
10394 	u8 reserved1[2];
10395 	struct fcoe_wqe cached_wqes[16];
10396 };
10397 
10398 struct e4_xstorm_fcoe_conn_ag_ctx {
10399 	u8 reserved0;
10400 	u8 state;
10401 	u8 flags0;
10402 #define E4_XSTORM_FCOE_CONN_AG_CTX_EXIST_IN_QM0_MASK	0x1
10403 #define E4_XSTORM_FCOE_CONN_AG_CTX_EXIST_IN_QM0_SHIFT	0
10404 #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED1_MASK	0x1
10405 #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED1_SHIFT	1
10406 #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED2_MASK	0x1
10407 #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED2_SHIFT	2
10408 #define E4_XSTORM_FCOE_CONN_AG_CTX_EXIST_IN_QM3_MASK	0x1
10409 #define E4_XSTORM_FCOE_CONN_AG_CTX_EXIST_IN_QM3_SHIFT	3
10410 #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED3_MASK	0x1
10411 #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED3_SHIFT	4
10412 #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED4_MASK	0x1
10413 #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED4_SHIFT	5
10414 #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED5_MASK	0x1
10415 #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED5_SHIFT	6
10416 #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED6_MASK	0x1
10417 #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED6_SHIFT	7
10418 	u8 flags1;
10419 #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED7_MASK	0x1
10420 #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED7_SHIFT	0
10421 #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED8_MASK	0x1
10422 #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED8_SHIFT	1
10423 #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED9_MASK	0x1
10424 #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED9_SHIFT	2
10425 #define E4_XSTORM_FCOE_CONN_AG_CTX_BIT11_MASK		0x1
10426 #define E4_XSTORM_FCOE_CONN_AG_CTX_BIT11_SHIFT		3
10427 #define E4_XSTORM_FCOE_CONN_AG_CTX_BIT12_MASK		0x1
10428 #define E4_XSTORM_FCOE_CONN_AG_CTX_BIT12_SHIFT		4
10429 #define E4_XSTORM_FCOE_CONN_AG_CTX_BIT13_MASK		0x1
10430 #define E4_XSTORM_FCOE_CONN_AG_CTX_BIT13_SHIFT		5
10431 #define E4_XSTORM_FCOE_CONN_AG_CTX_BIT14_MASK		0x1
10432 #define E4_XSTORM_FCOE_CONN_AG_CTX_BIT14_SHIFT		6
10433 #define E4_XSTORM_FCOE_CONN_AG_CTX_BIT15_MASK		0x1
10434 #define E4_XSTORM_FCOE_CONN_AG_CTX_BIT15_SHIFT		7
10435 	u8 flags2;
10436 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF0_MASK	0x3
10437 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF0_SHIFT	0
10438 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF1_MASK	0x3
10439 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF1_SHIFT	2
10440 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF2_MASK	0x3
10441 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF2_SHIFT	4
10442 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF3_MASK	0x3
10443 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF3_SHIFT	6
10444 	u8 flags3;
10445 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF4_MASK	0x3
10446 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF4_SHIFT	0
10447 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF5_MASK	0x3
10448 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF5_SHIFT	2
10449 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF6_MASK	0x3
10450 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF6_SHIFT	4
10451 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF7_MASK	0x3
10452 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF7_SHIFT	6
10453 	u8 flags4;
10454 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF8_MASK	0x3
10455 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF8_SHIFT	0
10456 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF9_MASK	0x3
10457 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF9_SHIFT	2
10458 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF10_MASK	0x3
10459 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF10_SHIFT	4
10460 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF11_MASK	0x3
10461 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF11_SHIFT	6
10462 	u8 flags5;
10463 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF12_MASK	0x3
10464 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF12_SHIFT	0
10465 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF13_MASK	0x3
10466 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF13_SHIFT	2
10467 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF14_MASK	0x3
10468 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF14_SHIFT	4
10469 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF15_MASK	0x3
10470 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF15_SHIFT	6
10471 	u8 flags6;
10472 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF16_MASK	0x3
10473 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF16_SHIFT	0
10474 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF17_MASK	0x3
10475 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF17_SHIFT	2
10476 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF18_MASK	0x3
10477 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF18_SHIFT	4
10478 #define E4_XSTORM_FCOE_CONN_AG_CTX_DQ_CF_MASK	0x3
10479 #define E4_XSTORM_FCOE_CONN_AG_CTX_DQ_CF_SHIFT	6
10480 	u8 flags7;
10481 #define E4_XSTORM_FCOE_CONN_AG_CTX_FLUSH_Q0_MASK	0x3
10482 #define E4_XSTORM_FCOE_CONN_AG_CTX_FLUSH_Q0_SHIFT	0
10483 #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED10_MASK	0x3
10484 #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED10_SHIFT	2
10485 #define E4_XSTORM_FCOE_CONN_AG_CTX_SLOW_PATH_MASK	0x3
10486 #define E4_XSTORM_FCOE_CONN_AG_CTX_SLOW_PATH_SHIFT	4
10487 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF0EN_MASK		0x1
10488 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF0EN_SHIFT		6
10489 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF1EN_MASK		0x1
10490 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF1EN_SHIFT		7
10491 	u8 flags8;
10492 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF2EN_MASK	0x1
10493 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF2EN_SHIFT	0
10494 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF3EN_MASK	0x1
10495 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF3EN_SHIFT	1
10496 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF4EN_MASK	0x1
10497 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF4EN_SHIFT	2
10498 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF5EN_MASK	0x1
10499 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF5EN_SHIFT	3
10500 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF6EN_MASK	0x1
10501 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF6EN_SHIFT	4
10502 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF7EN_MASK	0x1
10503 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF7EN_SHIFT	5
10504 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF8EN_MASK	0x1
10505 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF8EN_SHIFT	6
10506 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF9EN_MASK	0x1
10507 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF9EN_SHIFT	7
10508 	u8 flags9;
10509 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF10EN_MASK	0x1
10510 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF10EN_SHIFT	0
10511 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF11EN_MASK	0x1
10512 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF11EN_SHIFT	1
10513 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF12EN_MASK	0x1
10514 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF12EN_SHIFT	2
10515 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF13EN_MASK	0x1
10516 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF13EN_SHIFT	3
10517 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF14EN_MASK	0x1
10518 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF14EN_SHIFT	4
10519 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF15EN_MASK	0x1
10520 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF15EN_SHIFT	5
10521 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF16EN_MASK	0x1
10522 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF16EN_SHIFT	6
10523 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF17EN_MASK	0x1
10524 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF17EN_SHIFT	7
10525 	u8 flags10;
10526 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF18EN_MASK		0x1
10527 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF18EN_SHIFT		0
10528 #define E4_XSTORM_FCOE_CONN_AG_CTX_DQ_CF_EN_MASK	0x1
10529 #define E4_XSTORM_FCOE_CONN_AG_CTX_DQ_CF_EN_SHIFT	1
10530 #define E4_XSTORM_FCOE_CONN_AG_CTX_FLUSH_Q0_EN_MASK	0x1
10531 #define E4_XSTORM_FCOE_CONN_AG_CTX_FLUSH_Q0_EN_SHIFT	2
10532 #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED11_MASK	0x1
10533 #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED11_SHIFT	3
10534 #define E4_XSTORM_FCOE_CONN_AG_CTX_SLOW_PATH_EN_MASK	0x1
10535 #define E4_XSTORM_FCOE_CONN_AG_CTX_SLOW_PATH_EN_SHIFT	4
10536 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF23EN_MASK		0x1
10537 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF23EN_SHIFT		5
10538 #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED12_MASK	0x1
10539 #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED12_SHIFT	6
10540 #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED13_MASK	0x1
10541 #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED13_SHIFT	7
10542 	u8 flags11;
10543 #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED14_MASK		0x1
10544 #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED14_SHIFT		0
10545 #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED15_MASK		0x1
10546 #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED15_SHIFT		1
10547 #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED16_MASK		0x1
10548 #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED16_SHIFT		2
10549 #define E4_XSTORM_FCOE_CONN_AG_CTX_RULE5EN_MASK			0x1
10550 #define E4_XSTORM_FCOE_CONN_AG_CTX_RULE5EN_SHIFT		3
10551 #define E4_XSTORM_FCOE_CONN_AG_CTX_RULE6EN_MASK			0x1
10552 #define E4_XSTORM_FCOE_CONN_AG_CTX_RULE6EN_SHIFT		4
10553 #define E4_XSTORM_FCOE_CONN_AG_CTX_RULE7EN_MASK			0x1
10554 #define E4_XSTORM_FCOE_CONN_AG_CTX_RULE7EN_SHIFT		5
10555 #define E4_XSTORM_FCOE_CONN_AG_CTX_A0_RESERVED1_MASK		0x1
10556 #define E4_XSTORM_FCOE_CONN_AG_CTX_A0_RESERVED1_SHIFT		6
10557 #define E4_XSTORM_FCOE_CONN_AG_CTX_XFERQ_DECISION_EN_MASK	0x1
10558 #define E4_XSTORM_FCOE_CONN_AG_CTX_XFERQ_DECISION_EN_SHIFT	7
10559 	u8 flags12;
10560 #define E4_XSTORM_FCOE_CONN_AG_CTX_SQ_DECISION_EN_MASK	0x1
10561 #define E4_XSTORM_FCOE_CONN_AG_CTX_SQ_DECISION_EN_SHIFT	0
10562 #define E4_XSTORM_FCOE_CONN_AG_CTX_RULE11EN_MASK	0x1
10563 #define E4_XSTORM_FCOE_CONN_AG_CTX_RULE11EN_SHIFT	1
10564 #define E4_XSTORM_FCOE_CONN_AG_CTX_A0_RESERVED2_MASK	0x1
10565 #define E4_XSTORM_FCOE_CONN_AG_CTX_A0_RESERVED2_SHIFT	2
10566 #define E4_XSTORM_FCOE_CONN_AG_CTX_A0_RESERVED3_MASK	0x1
10567 #define E4_XSTORM_FCOE_CONN_AG_CTX_A0_RESERVED3_SHIFT	3
10568 #define E4_XSTORM_FCOE_CONN_AG_CTX_RULE14EN_MASK	0x1
10569 #define E4_XSTORM_FCOE_CONN_AG_CTX_RULE14EN_SHIFT	4
10570 #define E4_XSTORM_FCOE_CONN_AG_CTX_RULE15EN_MASK	0x1
10571 #define E4_XSTORM_FCOE_CONN_AG_CTX_RULE15EN_SHIFT	5
10572 #define E4_XSTORM_FCOE_CONN_AG_CTX_RULE16EN_MASK	0x1
10573 #define E4_XSTORM_FCOE_CONN_AG_CTX_RULE16EN_SHIFT	6
10574 #define E4_XSTORM_FCOE_CONN_AG_CTX_RULE17EN_MASK	0x1
10575 #define E4_XSTORM_FCOE_CONN_AG_CTX_RULE17EN_SHIFT	7
10576 	u8 flags13;
10577 #define E4_XSTORM_FCOE_CONN_AG_CTX_RESPQ_DECISION_EN_MASK	0x1
10578 #define E4_XSTORM_FCOE_CONN_AG_CTX_RESPQ_DECISION_EN_SHIFT	0
10579 #define E4_XSTORM_FCOE_CONN_AG_CTX_RULE19EN_MASK		0x1
10580 #define E4_XSTORM_FCOE_CONN_AG_CTX_RULE19EN_SHIFT		1
10581 #define E4_XSTORM_FCOE_CONN_AG_CTX_A0_RESERVED4_MASK		0x1
10582 #define E4_XSTORM_FCOE_CONN_AG_CTX_A0_RESERVED4_SHIFT		2
10583 #define E4_XSTORM_FCOE_CONN_AG_CTX_A0_RESERVED5_MASK		0x1
10584 #define E4_XSTORM_FCOE_CONN_AG_CTX_A0_RESERVED5_SHIFT		3
10585 #define E4_XSTORM_FCOE_CONN_AG_CTX_A0_RESERVED6_MASK		0x1
10586 #define E4_XSTORM_FCOE_CONN_AG_CTX_A0_RESERVED6_SHIFT		4
10587 #define E4_XSTORM_FCOE_CONN_AG_CTX_A0_RESERVED7_MASK		0x1
10588 #define E4_XSTORM_FCOE_CONN_AG_CTX_A0_RESERVED7_SHIFT		5
10589 #define E4_XSTORM_FCOE_CONN_AG_CTX_A0_RESERVED8_MASK		0x1
10590 #define E4_XSTORM_FCOE_CONN_AG_CTX_A0_RESERVED8_SHIFT		6
10591 #define E4_XSTORM_FCOE_CONN_AG_CTX_A0_RESERVED9_MASK		0x1
10592 #define E4_XSTORM_FCOE_CONN_AG_CTX_A0_RESERVED9_SHIFT		7
10593 	u8 flags14;
10594 #define E4_XSTORM_FCOE_CONN_AG_CTX_BIT16_MASK	0x1
10595 #define E4_XSTORM_FCOE_CONN_AG_CTX_BIT16_SHIFT	0
10596 #define E4_XSTORM_FCOE_CONN_AG_CTX_BIT17_MASK	0x1
10597 #define E4_XSTORM_FCOE_CONN_AG_CTX_BIT17_SHIFT	1
10598 #define E4_XSTORM_FCOE_CONN_AG_CTX_BIT18_MASK	0x1
10599 #define E4_XSTORM_FCOE_CONN_AG_CTX_BIT18_SHIFT	2
10600 #define E4_XSTORM_FCOE_CONN_AG_CTX_BIT19_MASK	0x1
10601 #define E4_XSTORM_FCOE_CONN_AG_CTX_BIT19_SHIFT	3
10602 #define E4_XSTORM_FCOE_CONN_AG_CTX_BIT20_MASK	0x1
10603 #define E4_XSTORM_FCOE_CONN_AG_CTX_BIT20_SHIFT	4
10604 #define E4_XSTORM_FCOE_CONN_AG_CTX_BIT21_MASK	0x1
10605 #define E4_XSTORM_FCOE_CONN_AG_CTX_BIT21_SHIFT	5
10606 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF23_MASK	0x3
10607 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF23_SHIFT	6
10608 	u8 byte2;
10609 	__le16 physical_q0;
10610 	__le16 word1;
10611 	__le16 word2;
10612 	__le16 sq_cons;
10613 	__le16 sq_prod;
10614 	__le16 xferq_prod;
10615 	__le16 xferq_cons;
10616 	u8 byte3;
10617 	u8 byte4;
10618 	u8 byte5;
10619 	u8 byte6;
10620 	__le32 remain_io;
10621 	__le32 reg1;
10622 	__le32 reg2;
10623 	__le32 reg3;
10624 	__le32 reg4;
10625 	__le32 reg5;
10626 	__le32 reg6;
10627 	__le16 respq_prod;
10628 	__le16 respq_cons;
10629 	__le16 word9;
10630 	__le16 word10;
10631 	__le32 reg7;
10632 	__le32 reg8;
10633 };
10634 
10635 /* The fcoe storm context of Ustorm */
10636 struct ustorm_fcoe_conn_st_ctx {
10637 	struct regpair respq_pbl_addr;
10638 	__le16 num_pages_in_pbl;
10639 	u8 ptu_log_page_size;
10640 	u8 log_page_size;
10641 	__le16 respq_prod;
10642 	u8 reserved[2];
10643 };
10644 
10645 struct e4_tstorm_fcoe_conn_ag_ctx {
10646 	u8 reserved0;
10647 	u8 state;
10648 	u8 flags0;
10649 #define E4_TSTORM_FCOE_CONN_AG_CTX_EXIST_IN_QM0_MASK	0x1
10650 #define E4_TSTORM_FCOE_CONN_AG_CTX_EXIST_IN_QM0_SHIFT	0
10651 #define E4_TSTORM_FCOE_CONN_AG_CTX_BIT1_MASK		0x1
10652 #define E4_TSTORM_FCOE_CONN_AG_CTX_BIT1_SHIFT		1
10653 #define E4_TSTORM_FCOE_CONN_AG_CTX_BIT2_MASK		0x1
10654 #define E4_TSTORM_FCOE_CONN_AG_CTX_BIT2_SHIFT		2
10655 #define E4_TSTORM_FCOE_CONN_AG_CTX_BIT3_MASK		0x1
10656 #define E4_TSTORM_FCOE_CONN_AG_CTX_BIT3_SHIFT		3
10657 #define E4_TSTORM_FCOE_CONN_AG_CTX_BIT4_MASK		0x1
10658 #define E4_TSTORM_FCOE_CONN_AG_CTX_BIT4_SHIFT		4
10659 #define E4_TSTORM_FCOE_CONN_AG_CTX_BIT5_MASK		0x1
10660 #define E4_TSTORM_FCOE_CONN_AG_CTX_BIT5_SHIFT		5
10661 #define E4_TSTORM_FCOE_CONN_AG_CTX_DUMMY_TIMER_CF_MASK	0x3
10662 #define E4_TSTORM_FCOE_CONN_AG_CTX_DUMMY_TIMER_CF_SHIFT	6
10663 	u8 flags1;
10664 #define E4_TSTORM_FCOE_CONN_AG_CTX_FLUSH_Q0_CF_MASK		0x3
10665 #define E4_TSTORM_FCOE_CONN_AG_CTX_FLUSH_Q0_CF_SHIFT		0
10666 #define E4_TSTORM_FCOE_CONN_AG_CTX_CF2_MASK			0x3
10667 #define E4_TSTORM_FCOE_CONN_AG_CTX_CF2_SHIFT			2
10668 #define E4_TSTORM_FCOE_CONN_AG_CTX_TIMER_STOP_ALL_CF_MASK	0x3
10669 #define E4_TSTORM_FCOE_CONN_AG_CTX_TIMER_STOP_ALL_CF_SHIFT	4
10670 #define E4_TSTORM_FCOE_CONN_AG_CTX_CF4_MASK			0x3
10671 #define E4_TSTORM_FCOE_CONN_AG_CTX_CF4_SHIFT			6
10672 	u8 flags2;
10673 #define E4_TSTORM_FCOE_CONN_AG_CTX_CF5_MASK	0x3
10674 #define E4_TSTORM_FCOE_CONN_AG_CTX_CF5_SHIFT	0
10675 #define E4_TSTORM_FCOE_CONN_AG_CTX_CF6_MASK	0x3
10676 #define E4_TSTORM_FCOE_CONN_AG_CTX_CF6_SHIFT	2
10677 #define E4_TSTORM_FCOE_CONN_AG_CTX_CF7_MASK	0x3
10678 #define E4_TSTORM_FCOE_CONN_AG_CTX_CF7_SHIFT	4
10679 #define E4_TSTORM_FCOE_CONN_AG_CTX_CF8_MASK	0x3
10680 #define E4_TSTORM_FCOE_CONN_AG_CTX_CF8_SHIFT	6
10681 	u8 flags3;
10682 #define E4_TSTORM_FCOE_CONN_AG_CTX_CF9_MASK			0x3
10683 #define E4_TSTORM_FCOE_CONN_AG_CTX_CF9_SHIFT			0
10684 #define E4_TSTORM_FCOE_CONN_AG_CTX_CF10_MASK			0x3
10685 #define E4_TSTORM_FCOE_CONN_AG_CTX_CF10_SHIFT			2
10686 #define E4_TSTORM_FCOE_CONN_AG_CTX_DUMMY_TIMER_CF_EN_MASK	0x1
10687 #define E4_TSTORM_FCOE_CONN_AG_CTX_DUMMY_TIMER_CF_EN_SHIFT	4
10688 #define E4_TSTORM_FCOE_CONN_AG_CTX_FLUSH_Q0_CF_EN_MASK		0x1
10689 #define E4_TSTORM_FCOE_CONN_AG_CTX_FLUSH_Q0_CF_EN_SHIFT		5
10690 #define E4_TSTORM_FCOE_CONN_AG_CTX_CF2EN_MASK			0x1
10691 #define E4_TSTORM_FCOE_CONN_AG_CTX_CF2EN_SHIFT			6
10692 #define E4_TSTORM_FCOE_CONN_AG_CTX_TIMER_STOP_ALL_CF_EN_MASK	0x1
10693 #define E4_TSTORM_FCOE_CONN_AG_CTX_TIMER_STOP_ALL_CF_EN_SHIFT	7
10694 	u8 flags4;
10695 #define E4_TSTORM_FCOE_CONN_AG_CTX_CF4EN_MASK		0x1
10696 #define E4_TSTORM_FCOE_CONN_AG_CTX_CF4EN_SHIFT		0
10697 #define E4_TSTORM_FCOE_CONN_AG_CTX_CF5EN_MASK		0x1
10698 #define E4_TSTORM_FCOE_CONN_AG_CTX_CF5EN_SHIFT		1
10699 #define E4_TSTORM_FCOE_CONN_AG_CTX_CF6EN_MASK		0x1
10700 #define E4_TSTORM_FCOE_CONN_AG_CTX_CF6EN_SHIFT		2
10701 #define E4_TSTORM_FCOE_CONN_AG_CTX_CF7EN_MASK		0x1
10702 #define E4_TSTORM_FCOE_CONN_AG_CTX_CF7EN_SHIFT		3
10703 #define E4_TSTORM_FCOE_CONN_AG_CTX_CF8EN_MASK		0x1
10704 #define E4_TSTORM_FCOE_CONN_AG_CTX_CF8EN_SHIFT		4
10705 #define E4_TSTORM_FCOE_CONN_AG_CTX_CF9EN_MASK		0x1
10706 #define E4_TSTORM_FCOE_CONN_AG_CTX_CF9EN_SHIFT		5
10707 #define E4_TSTORM_FCOE_CONN_AG_CTX_CF10EN_MASK		0x1
10708 #define E4_TSTORM_FCOE_CONN_AG_CTX_CF10EN_SHIFT		6
10709 #define E4_TSTORM_FCOE_CONN_AG_CTX_RULE0EN_MASK		0x1
10710 #define E4_TSTORM_FCOE_CONN_AG_CTX_RULE0EN_SHIFT	7
10711 	u8 flags5;
10712 #define E4_TSTORM_FCOE_CONN_AG_CTX_RULE1EN_MASK		0x1
10713 #define E4_TSTORM_FCOE_CONN_AG_CTX_RULE1EN_SHIFT	0
10714 #define E4_TSTORM_FCOE_CONN_AG_CTX_RULE2EN_MASK		0x1
10715 #define E4_TSTORM_FCOE_CONN_AG_CTX_RULE2EN_SHIFT	1
10716 #define E4_TSTORM_FCOE_CONN_AG_CTX_RULE3EN_MASK		0x1
10717 #define E4_TSTORM_FCOE_CONN_AG_CTX_RULE3EN_SHIFT	2
10718 #define E4_TSTORM_FCOE_CONN_AG_CTX_RULE4EN_MASK		0x1
10719 #define E4_TSTORM_FCOE_CONN_AG_CTX_RULE4EN_SHIFT	3
10720 #define E4_TSTORM_FCOE_CONN_AG_CTX_RULE5EN_MASK		0x1
10721 #define E4_TSTORM_FCOE_CONN_AG_CTX_RULE5EN_SHIFT	4
10722 #define E4_TSTORM_FCOE_CONN_AG_CTX_RULE6EN_MASK		0x1
10723 #define E4_TSTORM_FCOE_CONN_AG_CTX_RULE6EN_SHIFT	5
10724 #define E4_TSTORM_FCOE_CONN_AG_CTX_RULE7EN_MASK		0x1
10725 #define E4_TSTORM_FCOE_CONN_AG_CTX_RULE7EN_SHIFT	6
10726 #define E4_TSTORM_FCOE_CONN_AG_CTX_RULE8EN_MASK		0x1
10727 #define E4_TSTORM_FCOE_CONN_AG_CTX_RULE8EN_SHIFT	7
10728 	__le32 reg0;
10729 	__le32 reg1;
10730 };
10731 
10732 struct e4_ustorm_fcoe_conn_ag_ctx {
10733 	u8 byte0;
10734 	u8 byte1;
10735 	u8 flags0;
10736 #define E4_USTORM_FCOE_CONN_AG_CTX_BIT0_MASK	0x1
10737 #define E4_USTORM_FCOE_CONN_AG_CTX_BIT0_SHIFT	0
10738 #define E4_USTORM_FCOE_CONN_AG_CTX_BIT1_MASK	0x1
10739 #define E4_USTORM_FCOE_CONN_AG_CTX_BIT1_SHIFT	1
10740 #define E4_USTORM_FCOE_CONN_AG_CTX_CF0_MASK	0x3
10741 #define E4_USTORM_FCOE_CONN_AG_CTX_CF0_SHIFT	2
10742 #define E4_USTORM_FCOE_CONN_AG_CTX_CF1_MASK	0x3
10743 #define E4_USTORM_FCOE_CONN_AG_CTX_CF1_SHIFT	4
10744 #define E4_USTORM_FCOE_CONN_AG_CTX_CF2_MASK	0x3
10745 #define E4_USTORM_FCOE_CONN_AG_CTX_CF2_SHIFT	6
10746 	u8 flags1;
10747 #define E4_USTORM_FCOE_CONN_AG_CTX_CF3_MASK	0x3
10748 #define E4_USTORM_FCOE_CONN_AG_CTX_CF3_SHIFT	0
10749 #define E4_USTORM_FCOE_CONN_AG_CTX_CF4_MASK	0x3
10750 #define E4_USTORM_FCOE_CONN_AG_CTX_CF4_SHIFT	2
10751 #define E4_USTORM_FCOE_CONN_AG_CTX_CF5_MASK	0x3
10752 #define E4_USTORM_FCOE_CONN_AG_CTX_CF5_SHIFT	4
10753 #define E4_USTORM_FCOE_CONN_AG_CTX_CF6_MASK	0x3
10754 #define E4_USTORM_FCOE_CONN_AG_CTX_CF6_SHIFT	6
10755 	u8 flags2;
10756 #define E4_USTORM_FCOE_CONN_AG_CTX_CF0EN_MASK		0x1
10757 #define E4_USTORM_FCOE_CONN_AG_CTX_CF0EN_SHIFT		0
10758 #define E4_USTORM_FCOE_CONN_AG_CTX_CF1EN_MASK		0x1
10759 #define E4_USTORM_FCOE_CONN_AG_CTX_CF1EN_SHIFT		1
10760 #define E4_USTORM_FCOE_CONN_AG_CTX_CF2EN_MASK		0x1
10761 #define E4_USTORM_FCOE_CONN_AG_CTX_CF2EN_SHIFT		2
10762 #define E4_USTORM_FCOE_CONN_AG_CTX_CF3EN_MASK		0x1
10763 #define E4_USTORM_FCOE_CONN_AG_CTX_CF3EN_SHIFT		3
10764 #define E4_USTORM_FCOE_CONN_AG_CTX_CF4EN_MASK		0x1
10765 #define E4_USTORM_FCOE_CONN_AG_CTX_CF4EN_SHIFT		4
10766 #define E4_USTORM_FCOE_CONN_AG_CTX_CF5EN_MASK		0x1
10767 #define E4_USTORM_FCOE_CONN_AG_CTX_CF5EN_SHIFT		5
10768 #define E4_USTORM_FCOE_CONN_AG_CTX_CF6EN_MASK		0x1
10769 #define E4_USTORM_FCOE_CONN_AG_CTX_CF6EN_SHIFT		6
10770 #define E4_USTORM_FCOE_CONN_AG_CTX_RULE0EN_MASK		0x1
10771 #define E4_USTORM_FCOE_CONN_AG_CTX_RULE0EN_SHIFT	7
10772 	u8 flags3;
10773 #define E4_USTORM_FCOE_CONN_AG_CTX_RULE1EN_MASK		0x1
10774 #define E4_USTORM_FCOE_CONN_AG_CTX_RULE1EN_SHIFT	0
10775 #define E4_USTORM_FCOE_CONN_AG_CTX_RULE2EN_MASK		0x1
10776 #define E4_USTORM_FCOE_CONN_AG_CTX_RULE2EN_SHIFT	1
10777 #define E4_USTORM_FCOE_CONN_AG_CTX_RULE3EN_MASK		0x1
10778 #define E4_USTORM_FCOE_CONN_AG_CTX_RULE3EN_SHIFT	2
10779 #define E4_USTORM_FCOE_CONN_AG_CTX_RULE4EN_MASK		0x1
10780 #define E4_USTORM_FCOE_CONN_AG_CTX_RULE4EN_SHIFT	3
10781 #define E4_USTORM_FCOE_CONN_AG_CTX_RULE5EN_MASK		0x1
10782 #define E4_USTORM_FCOE_CONN_AG_CTX_RULE5EN_SHIFT	4
10783 #define E4_USTORM_FCOE_CONN_AG_CTX_RULE6EN_MASK		0x1
10784 #define E4_USTORM_FCOE_CONN_AG_CTX_RULE6EN_SHIFT	5
10785 #define E4_USTORM_FCOE_CONN_AG_CTX_RULE7EN_MASK		0x1
10786 #define E4_USTORM_FCOE_CONN_AG_CTX_RULE7EN_SHIFT	6
10787 #define E4_USTORM_FCOE_CONN_AG_CTX_RULE8EN_MASK		0x1
10788 #define E4_USTORM_FCOE_CONN_AG_CTX_RULE8EN_SHIFT	7
10789 	u8 byte2;
10790 	u8 byte3;
10791 	__le16 word0;
10792 	__le16 word1;
10793 	__le32 reg0;
10794 	__le32 reg1;
10795 	__le32 reg2;
10796 	__le32 reg3;
10797 	__le16 word2;
10798 	__le16 word3;
10799 };
10800 
10801 /* The fcoe storm context of Tstorm */
10802 struct tstorm_fcoe_conn_st_ctx {
10803 	__le16 stat_ram_addr;
10804 	__le16 rx_max_fc_payload_len;
10805 	__le16 e_d_tov_val;
10806 	u8 flags;
10807 #define TSTORM_FCOE_CONN_ST_CTX_INC_SEQ_CNT_MASK	0x1
10808 #define TSTORM_FCOE_CONN_ST_CTX_INC_SEQ_CNT_SHIFT	0
10809 #define TSTORM_FCOE_CONN_ST_CTX_SUPPORT_CONF_MASK	0x1
10810 #define TSTORM_FCOE_CONN_ST_CTX_SUPPORT_CONF_SHIFT	1
10811 #define TSTORM_FCOE_CONN_ST_CTX_DEF_Q_IDX_MASK		0x3F
10812 #define TSTORM_FCOE_CONN_ST_CTX_DEF_Q_IDX_SHIFT		2
10813 	u8 timers_cleanup_invocation_cnt;
10814 	__le32 reserved1[2];
10815 	__le32 dst_mac_address_bytes_0_to_3;
10816 	__le16 dst_mac_address_bytes_4_to_5;
10817 	__le16 ramrod_echo;
10818 	u8 flags1;
10819 #define TSTORM_FCOE_CONN_ST_CTX_MODE_MASK	0x3
10820 #define TSTORM_FCOE_CONN_ST_CTX_MODE_SHIFT	0
10821 #define TSTORM_FCOE_CONN_ST_CTX_RESERVED_MASK	0x3F
10822 #define TSTORM_FCOE_CONN_ST_CTX_RESERVED_SHIFT	2
10823 	u8 cq_relative_offset;
10824 	u8 cmdq_relative_offset;
10825 	u8 bdq_resource_id;
10826 	u8 reserved0[4];
10827 };
10828 
10829 struct e4_mstorm_fcoe_conn_ag_ctx {
10830 	u8 byte0;
10831 	u8 byte1;
10832 	u8 flags0;
10833 #define E4_MSTORM_FCOE_CONN_AG_CTX_BIT0_MASK	0x1
10834 #define E4_MSTORM_FCOE_CONN_AG_CTX_BIT0_SHIFT	0
10835 #define E4_MSTORM_FCOE_CONN_AG_CTX_BIT1_MASK	0x1
10836 #define E4_MSTORM_FCOE_CONN_AG_CTX_BIT1_SHIFT	1
10837 #define E4_MSTORM_FCOE_CONN_AG_CTX_CF0_MASK	0x3
10838 #define E4_MSTORM_FCOE_CONN_AG_CTX_CF0_SHIFT	2
10839 #define E4_MSTORM_FCOE_CONN_AG_CTX_CF1_MASK	0x3
10840 #define E4_MSTORM_FCOE_CONN_AG_CTX_CF1_SHIFT	4
10841 #define E4_MSTORM_FCOE_CONN_AG_CTX_CF2_MASK	0x3
10842 #define E4_MSTORM_FCOE_CONN_AG_CTX_CF2_SHIFT	6
10843 	u8 flags1;
10844 #define E4_MSTORM_FCOE_CONN_AG_CTX_CF0EN_MASK		0x1
10845 #define E4_MSTORM_FCOE_CONN_AG_CTX_CF0EN_SHIFT		0
10846 #define E4_MSTORM_FCOE_CONN_AG_CTX_CF1EN_MASK		0x1
10847 #define E4_MSTORM_FCOE_CONN_AG_CTX_CF1EN_SHIFT		1
10848 #define E4_MSTORM_FCOE_CONN_AG_CTX_CF2EN_MASK		0x1
10849 #define E4_MSTORM_FCOE_CONN_AG_CTX_CF2EN_SHIFT		2
10850 #define E4_MSTORM_FCOE_CONN_AG_CTX_RULE0EN_MASK		0x1
10851 #define E4_MSTORM_FCOE_CONN_AG_CTX_RULE0EN_SHIFT	3
10852 #define E4_MSTORM_FCOE_CONN_AG_CTX_RULE1EN_MASK		0x1
10853 #define E4_MSTORM_FCOE_CONN_AG_CTX_RULE1EN_SHIFT	4
10854 #define E4_MSTORM_FCOE_CONN_AG_CTX_RULE2EN_MASK		0x1
10855 #define E4_MSTORM_FCOE_CONN_AG_CTX_RULE2EN_SHIFT	5
10856 #define E4_MSTORM_FCOE_CONN_AG_CTX_RULE3EN_MASK		0x1
10857 #define E4_MSTORM_FCOE_CONN_AG_CTX_RULE3EN_SHIFT	6
10858 #define E4_MSTORM_FCOE_CONN_AG_CTX_RULE4EN_MASK		0x1
10859 #define E4_MSTORM_FCOE_CONN_AG_CTX_RULE4EN_SHIFT	7
10860 	__le16 word0;
10861 	__le16 word1;
10862 	__le32 reg0;
10863 	__le32 reg1;
10864 };
10865 
10866 /* Fast path part of the fcoe storm context of Mstorm */
10867 struct fcoe_mstorm_fcoe_conn_st_ctx_fp {
10868 	__le16 xfer_prod;
10869 	u8 num_cqs;
10870 	u8 reserved1;
10871 	u8 protection_info;
10872 #define FCOE_MSTORM_FCOE_CONN_ST_CTX_FP_SUPPORT_PROTECTION_MASK  0x1
10873 #define FCOE_MSTORM_FCOE_CONN_ST_CTX_FP_SUPPORT_PROTECTION_SHIFT 0
10874 #define FCOE_MSTORM_FCOE_CONN_ST_CTX_FP_VALID_MASK               0x1
10875 #define FCOE_MSTORM_FCOE_CONN_ST_CTX_FP_VALID_SHIFT              1
10876 #define FCOE_MSTORM_FCOE_CONN_ST_CTX_FP_RESERVED0_MASK           0x3F
10877 #define FCOE_MSTORM_FCOE_CONN_ST_CTX_FP_RESERVED0_SHIFT          2
10878 	u8 q_relative_offset;
10879 	u8 reserved2[2];
10880 };
10881 
10882 /* Non fast path part of the fcoe storm context of Mstorm */
10883 struct fcoe_mstorm_fcoe_conn_st_ctx_non_fp {
10884 	__le16 conn_id;
10885 	__le16 stat_ram_addr;
10886 	__le16 num_pages_in_pbl;
10887 	u8 ptu_log_page_size;
10888 	u8 log_page_size;
10889 	__le16 unsolicited_cq_count;
10890 	__le16 cmdq_count;
10891 	u8 bdq_resource_id;
10892 	u8 reserved0[3];
10893 	struct regpair xferq_pbl_addr;
10894 	struct regpair reserved1;
10895 	struct regpair reserved2[3];
10896 };
10897 
10898 /* The fcoe storm context of Mstorm */
10899 struct mstorm_fcoe_conn_st_ctx {
10900 	struct fcoe_mstorm_fcoe_conn_st_ctx_fp fp;
10901 	struct fcoe_mstorm_fcoe_conn_st_ctx_non_fp non_fp;
10902 };
10903 
10904 /* fcoe connection context */
10905 struct e4_fcoe_conn_context {
10906 	struct ystorm_fcoe_conn_st_ctx ystorm_st_context;
10907 	struct pstorm_fcoe_conn_st_ctx pstorm_st_context;
10908 	struct regpair pstorm_st_padding[2];
10909 	struct xstorm_fcoe_conn_st_ctx xstorm_st_context;
10910 	struct e4_xstorm_fcoe_conn_ag_ctx xstorm_ag_context;
10911 	struct regpair xstorm_ag_padding[6];
10912 	struct ustorm_fcoe_conn_st_ctx ustorm_st_context;
10913 	struct regpair ustorm_st_padding[2];
10914 	struct e4_tstorm_fcoe_conn_ag_ctx tstorm_ag_context;
10915 	struct regpair tstorm_ag_padding[2];
10916 	struct timers_context timer_context;
10917 	struct e4_ustorm_fcoe_conn_ag_ctx ustorm_ag_context;
10918 	struct tstorm_fcoe_conn_st_ctx tstorm_st_context;
10919 	struct e4_mstorm_fcoe_conn_ag_ctx mstorm_ag_context;
10920 	struct mstorm_fcoe_conn_st_ctx mstorm_st_context;
10921 };
10922 
10923 /* FCoE connection offload params passed by driver to FW in FCoE offload
10924  * ramrod.
10925  */
10926 struct fcoe_conn_offload_ramrod_params {
10927 	struct fcoe_conn_offload_ramrod_data offload_ramrod_data;
10928 };
10929 
10930 /* FCoE connection terminate params passed by driver to FW in FCoE terminate
10931  * conn ramrod.
10932  */
10933 struct fcoe_conn_terminate_ramrod_params {
10934 	struct fcoe_conn_terminate_ramrod_data terminate_ramrod_data;
10935 };
10936 
10937 /* FCoE event type */
10938 enum fcoe_event_type {
10939 	FCOE_EVENT_INIT_FUNC,
10940 	FCOE_EVENT_DESTROY_FUNC,
10941 	FCOE_EVENT_STAT_FUNC,
10942 	FCOE_EVENT_OFFLOAD_CONN,
10943 	FCOE_EVENT_TERMINATE_CONN,
10944 	FCOE_EVENT_ERROR,
10945 	MAX_FCOE_EVENT_TYPE
10946 };
10947 
10948 /* FCoE init params passed by driver to FW in FCoE init ramrod */
10949 struct fcoe_init_ramrod_params {
10950 	struct fcoe_init_func_ramrod_data init_ramrod_data;
10951 };
10952 
10953 /* FCoE ramrod Command IDs */
10954 enum fcoe_ramrod_cmd_id {
10955 	FCOE_RAMROD_CMD_ID_INIT_FUNC,
10956 	FCOE_RAMROD_CMD_ID_DESTROY_FUNC,
10957 	FCOE_RAMROD_CMD_ID_STAT_FUNC,
10958 	FCOE_RAMROD_CMD_ID_OFFLOAD_CONN,
10959 	FCOE_RAMROD_CMD_ID_TERMINATE_CONN,
10960 	MAX_FCOE_RAMROD_CMD_ID
10961 };
10962 
10963 /* FCoE statistics params buffer passed by driver to FW in FCoE statistics
10964  * ramrod.
10965  */
10966 struct fcoe_stat_ramrod_params {
10967 	struct fcoe_stat_ramrod_data stat_ramrod_data;
10968 };
10969 
10970 struct e4_ystorm_fcoe_conn_ag_ctx {
10971 	u8 byte0;
10972 	u8 byte1;
10973 	u8 flags0;
10974 #define E4_YSTORM_FCOE_CONN_AG_CTX_BIT0_MASK	0x1
10975 #define E4_YSTORM_FCOE_CONN_AG_CTX_BIT0_SHIFT	0
10976 #define E4_YSTORM_FCOE_CONN_AG_CTX_BIT1_MASK	0x1
10977 #define E4_YSTORM_FCOE_CONN_AG_CTX_BIT1_SHIFT	1
10978 #define E4_YSTORM_FCOE_CONN_AG_CTX_CF0_MASK	0x3
10979 #define E4_YSTORM_FCOE_CONN_AG_CTX_CF0_SHIFT	2
10980 #define E4_YSTORM_FCOE_CONN_AG_CTX_CF1_MASK	0x3
10981 #define E4_YSTORM_FCOE_CONN_AG_CTX_CF1_SHIFT	4
10982 #define E4_YSTORM_FCOE_CONN_AG_CTX_CF2_MASK	0x3
10983 #define E4_YSTORM_FCOE_CONN_AG_CTX_CF2_SHIFT	6
10984 	u8 flags1;
10985 #define E4_YSTORM_FCOE_CONN_AG_CTX_CF0EN_MASK		0x1
10986 #define E4_YSTORM_FCOE_CONN_AG_CTX_CF0EN_SHIFT		0
10987 #define E4_YSTORM_FCOE_CONN_AG_CTX_CF1EN_MASK		0x1
10988 #define E4_YSTORM_FCOE_CONN_AG_CTX_CF1EN_SHIFT		1
10989 #define E4_YSTORM_FCOE_CONN_AG_CTX_CF2EN_MASK		0x1
10990 #define E4_YSTORM_FCOE_CONN_AG_CTX_CF2EN_SHIFT		2
10991 #define E4_YSTORM_FCOE_CONN_AG_CTX_RULE0EN_MASK		0x1
10992 #define E4_YSTORM_FCOE_CONN_AG_CTX_RULE0EN_SHIFT	3
10993 #define E4_YSTORM_FCOE_CONN_AG_CTX_RULE1EN_MASK		0x1
10994 #define E4_YSTORM_FCOE_CONN_AG_CTX_RULE1EN_SHIFT	4
10995 #define E4_YSTORM_FCOE_CONN_AG_CTX_RULE2EN_MASK		0x1
10996 #define E4_YSTORM_FCOE_CONN_AG_CTX_RULE2EN_SHIFT	5
10997 #define E4_YSTORM_FCOE_CONN_AG_CTX_RULE3EN_MASK		0x1
10998 #define E4_YSTORM_FCOE_CONN_AG_CTX_RULE3EN_SHIFT	6
10999 #define E4_YSTORM_FCOE_CONN_AG_CTX_RULE4EN_MASK		0x1
11000 #define E4_YSTORM_FCOE_CONN_AG_CTX_RULE4EN_SHIFT	7
11001 	u8 byte2;
11002 	u8 byte3;
11003 	__le16 word0;
11004 	__le32 reg0;
11005 	__le32 reg1;
11006 	__le16 word1;
11007 	__le16 word2;
11008 	__le16 word3;
11009 	__le16 word4;
11010 	__le32 reg2;
11011 	__le32 reg3;
11012 };
11013 
11014 /* The iscsi storm connection context of Ystorm */
11015 struct ystorm_iscsi_conn_st_ctx {
11016 	__le32 reserved[8];
11017 };
11018 
11019 /* Combined iSCSI and TCP storm connection of Pstorm */
11020 struct pstorm_iscsi_tcp_conn_st_ctx {
11021 	__le32 tcp[32];
11022 	__le32 iscsi[4];
11023 };
11024 
11025 /* The combined tcp and iscsi storm context of Xstorm */
11026 struct xstorm_iscsi_tcp_conn_st_ctx {
11027 	__le32 reserved_tcp[4];
11028 	__le32 reserved_iscsi[44];
11029 };
11030 
11031 struct e4_xstorm_iscsi_conn_ag_ctx {
11032 	u8 cdu_validation;
11033 	u8 state;
11034 	u8 flags0;
11035 #define E4_XSTORM_ISCSI_CONN_AG_CTX_EXIST_IN_QM0_MASK	0x1
11036 #define E4_XSTORM_ISCSI_CONN_AG_CTX_EXIST_IN_QM0_SHIFT	0
11037 #define E4_XSTORM_ISCSI_CONN_AG_CTX_EXIST_IN_QM1_MASK	0x1
11038 #define E4_XSTORM_ISCSI_CONN_AG_CTX_EXIST_IN_QM1_SHIFT	1
11039 #define E4_XSTORM_ISCSI_CONN_AG_CTX_RESERVED1_MASK	0x1
11040 #define E4_XSTORM_ISCSI_CONN_AG_CTX_RESERVED1_SHIFT	2
11041 #define E4_XSTORM_ISCSI_CONN_AG_CTX_EXIST_IN_QM3_MASK	0x1
11042 #define E4_XSTORM_ISCSI_CONN_AG_CTX_EXIST_IN_QM3_SHIFT	3
11043 #define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT4_MASK		0x1
11044 #define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT4_SHIFT		4
11045 #define E4_XSTORM_ISCSI_CONN_AG_CTX_RESERVED2_MASK	0x1
11046 #define E4_XSTORM_ISCSI_CONN_AG_CTX_RESERVED2_SHIFT	5
11047 #define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT6_MASK		0x1
11048 #define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT6_SHIFT		6
11049 #define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT7_MASK		0x1
11050 #define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT7_SHIFT		7
11051 	u8 flags1;
11052 #define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT8_MASK		0x1
11053 #define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT8_SHIFT		0
11054 #define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT9_MASK		0x1
11055 #define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT9_SHIFT		1
11056 #define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT10_MASK		0x1
11057 #define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT10_SHIFT		2
11058 #define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT11_MASK		0x1
11059 #define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT11_SHIFT		3
11060 #define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT12_MASK		0x1
11061 #define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT12_SHIFT		4
11062 #define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT13_MASK		0x1
11063 #define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT13_SHIFT		5
11064 #define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT14_MASK		0x1
11065 #define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT14_SHIFT		6
11066 #define E4_XSTORM_ISCSI_CONN_AG_CTX_TX_TRUNCATE_MASK	0x1
11067 #define E4_XSTORM_ISCSI_CONN_AG_CTX_TX_TRUNCATE_SHIFT	7
11068 	u8 flags2;
11069 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF0_MASK			0x3
11070 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF0_SHIFT			0
11071 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF1_MASK			0x3
11072 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF1_SHIFT			2
11073 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF2_MASK			0x3
11074 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF2_SHIFT			4
11075 #define E4_XSTORM_ISCSI_CONN_AG_CTX_TIMER_STOP_ALL_MASK		0x3
11076 #define E4_XSTORM_ISCSI_CONN_AG_CTX_TIMER_STOP_ALL_SHIFT	6
11077 	u8 flags3;
11078 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF4_MASK	0x3
11079 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF4_SHIFT	0
11080 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF5_MASK	0x3
11081 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF5_SHIFT	2
11082 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF6_MASK	0x3
11083 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF6_SHIFT	4
11084 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF7_MASK	0x3
11085 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF7_SHIFT	6
11086 	u8 flags4;
11087 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF8_MASK	0x3
11088 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF8_SHIFT	0
11089 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF9_MASK	0x3
11090 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF9_SHIFT	2
11091 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF10_MASK	0x3
11092 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF10_SHIFT	4
11093 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF11_MASK	0x3
11094 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF11_SHIFT	6
11095 	u8 flags5;
11096 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF12_MASK				0x3
11097 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF12_SHIFT				0
11098 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF13_MASK				0x3
11099 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF13_SHIFT				2
11100 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF14_MASK				0x3
11101 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF14_SHIFT				4
11102 #define E4_XSTORM_ISCSI_CONN_AG_CTX_UPDATE_STATE_TO_BASE_CF_MASK	0x3
11103 #define E4_XSTORM_ISCSI_CONN_AG_CTX_UPDATE_STATE_TO_BASE_CF_SHIFT	6
11104 	u8 flags6;
11105 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF16_MASK		0x3
11106 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF16_SHIFT		0
11107 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF17_MASK		0x3
11108 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF17_SHIFT		2
11109 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF18_MASK		0x3
11110 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF18_SHIFT		4
11111 #define E4_XSTORM_ISCSI_CONN_AG_CTX_DQ_FLUSH_MASK	0x3
11112 #define E4_XSTORM_ISCSI_CONN_AG_CTX_DQ_FLUSH_SHIFT	6
11113 	u8 flags7;
11114 #define E4_XSTORM_ISCSI_CONN_AG_CTX_MST_XCM_Q0_FLUSH_CF_MASK	0x3
11115 #define E4_XSTORM_ISCSI_CONN_AG_CTX_MST_XCM_Q0_FLUSH_CF_SHIFT	0
11116 #define E4_XSTORM_ISCSI_CONN_AG_CTX_UST_XCM_Q1_FLUSH_CF_MASK	0x3
11117 #define E4_XSTORM_ISCSI_CONN_AG_CTX_UST_XCM_Q1_FLUSH_CF_SHIFT	2
11118 #define E4_XSTORM_ISCSI_CONN_AG_CTX_SLOW_PATH_MASK		0x3
11119 #define E4_XSTORM_ISCSI_CONN_AG_CTX_SLOW_PATH_SHIFT		4
11120 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF0EN_MASK			0x1
11121 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF0EN_SHIFT			6
11122 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF1EN_MASK			0x1
11123 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF1EN_SHIFT			7
11124 	u8 flags8;
11125 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF2EN_MASK			0x1
11126 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF2EN_SHIFT			0
11127 #define E4_XSTORM_ISCSI_CONN_AG_CTX_TIMER_STOP_ALL_EN_MASK	0x1
11128 #define E4_XSTORM_ISCSI_CONN_AG_CTX_TIMER_STOP_ALL_EN_SHIFT	1
11129 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF4EN_MASK			0x1
11130 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF4EN_SHIFT			2
11131 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF5EN_MASK			0x1
11132 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF5EN_SHIFT			3
11133 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF6EN_MASK			0x1
11134 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF6EN_SHIFT			4
11135 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF7EN_MASK			0x1
11136 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF7EN_SHIFT			5
11137 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF8EN_MASK			0x1
11138 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF8EN_SHIFT			6
11139 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF9EN_MASK			0x1
11140 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF9EN_SHIFT			7
11141 	u8 flags9;
11142 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF10EN_MASK				0x1
11143 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF10EN_SHIFT			0
11144 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF11EN_MASK				0x1
11145 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF11EN_SHIFT			1
11146 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF12EN_MASK				0x1
11147 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF12EN_SHIFT			2
11148 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF13EN_MASK				0x1
11149 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF13EN_SHIFT			3
11150 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF14EN_MASK				0x1
11151 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF14EN_SHIFT			4
11152 #define E4_XSTORM_ISCSI_CONN_AG_CTX_UPDATE_STATE_TO_BASE_CF_EN_MASK	0x1
11153 #define E4_XSTORM_ISCSI_CONN_AG_CTX_UPDATE_STATE_TO_BASE_CF_EN_SHIFT	5
11154 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF16EN_MASK				0x1
11155 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF16EN_SHIFT			6
11156 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF17EN_MASK				0x1
11157 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF17EN_SHIFT			7
11158 	u8 flags10;
11159 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF18EN_MASK				0x1
11160 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF18EN_SHIFT			0
11161 #define E4_XSTORM_ISCSI_CONN_AG_CTX_DQ_FLUSH_EN_MASK			0x1
11162 #define E4_XSTORM_ISCSI_CONN_AG_CTX_DQ_FLUSH_EN_SHIFT			1
11163 #define E4_XSTORM_ISCSI_CONN_AG_CTX_MST_XCM_Q0_FLUSH_CF_EN_MASK		0x1
11164 #define E4_XSTORM_ISCSI_CONN_AG_CTX_MST_XCM_Q0_FLUSH_CF_EN_SHIFT	2
11165 #define E4_XSTORM_ISCSI_CONN_AG_CTX_UST_XCM_Q1_FLUSH_CF_EN_MASK		0x1
11166 #define E4_XSTORM_ISCSI_CONN_AG_CTX_UST_XCM_Q1_FLUSH_CF_EN_SHIFT	3
11167 #define E4_XSTORM_ISCSI_CONN_AG_CTX_SLOW_PATH_EN_MASK			0x1
11168 #define E4_XSTORM_ISCSI_CONN_AG_CTX_SLOW_PATH_EN_SHIFT			4
11169 #define E4_XSTORM_ISCSI_CONN_AG_CTX_PROC_ONLY_CLEANUP_EN_MASK		0x1
11170 #define E4_XSTORM_ISCSI_CONN_AG_CTX_PROC_ONLY_CLEANUP_EN_SHIFT		5
11171 #define E4_XSTORM_ISCSI_CONN_AG_CTX_RULE0EN_MASK			0x1
11172 #define E4_XSTORM_ISCSI_CONN_AG_CTX_RULE0EN_SHIFT			6
11173 #define E4_XSTORM_ISCSI_CONN_AG_CTX_MORE_TO_SEND_DEC_RULE_EN_MASK	0x1
11174 #define E4_XSTORM_ISCSI_CONN_AG_CTX_MORE_TO_SEND_DEC_RULE_EN_SHIFT	7
11175 	u8 flags11;
11176 #define E4_XSTORM_ISCSI_CONN_AG_CTX_TX_BLOCKED_EN_MASK	0x1
11177 #define E4_XSTORM_ISCSI_CONN_AG_CTX_TX_BLOCKED_EN_SHIFT	0
11178 #define E4_XSTORM_ISCSI_CONN_AG_CTX_RULE3EN_MASK	0x1
11179 #define E4_XSTORM_ISCSI_CONN_AG_CTX_RULE3EN_SHIFT	1
11180 #define E4_XSTORM_ISCSI_CONN_AG_CTX_RESERVED3_MASK	0x1
11181 #define E4_XSTORM_ISCSI_CONN_AG_CTX_RESERVED3_SHIFT	2
11182 #define E4_XSTORM_ISCSI_CONN_AG_CTX_RULE5EN_MASK	0x1
11183 #define E4_XSTORM_ISCSI_CONN_AG_CTX_RULE5EN_SHIFT	3
11184 #define E4_XSTORM_ISCSI_CONN_AG_CTX_RULE6EN_MASK	0x1
11185 #define E4_XSTORM_ISCSI_CONN_AG_CTX_RULE6EN_SHIFT	4
11186 #define E4_XSTORM_ISCSI_CONN_AG_CTX_RULE7EN_MASK	0x1
11187 #define E4_XSTORM_ISCSI_CONN_AG_CTX_RULE7EN_SHIFT	5
11188 #define E4_XSTORM_ISCSI_CONN_AG_CTX_A0_RESERVED1_MASK	0x1
11189 #define E4_XSTORM_ISCSI_CONN_AG_CTX_A0_RESERVED1_SHIFT	6
11190 #define E4_XSTORM_ISCSI_CONN_AG_CTX_RULE9EN_MASK	0x1
11191 #define E4_XSTORM_ISCSI_CONN_AG_CTX_RULE9EN_SHIFT	7
11192 	u8 flags12;
11193 #define E4_XSTORM_ISCSI_CONN_AG_CTX_SQ_DEC_RULE_EN_MASK		0x1
11194 #define E4_XSTORM_ISCSI_CONN_AG_CTX_SQ_DEC_RULE_EN_SHIFT	0
11195 #define E4_XSTORM_ISCSI_CONN_AG_CTX_RULE11EN_MASK		0x1
11196 #define E4_XSTORM_ISCSI_CONN_AG_CTX_RULE11EN_SHIFT		1
11197 #define E4_XSTORM_ISCSI_CONN_AG_CTX_A0_RESERVED2_MASK		0x1
11198 #define E4_XSTORM_ISCSI_CONN_AG_CTX_A0_RESERVED2_SHIFT		2
11199 #define E4_XSTORM_ISCSI_CONN_AG_CTX_A0_RESERVED3_MASK		0x1
11200 #define E4_XSTORM_ISCSI_CONN_AG_CTX_A0_RESERVED3_SHIFT		3
11201 #define E4_XSTORM_ISCSI_CONN_AG_CTX_RULE14EN_MASK		0x1
11202 #define E4_XSTORM_ISCSI_CONN_AG_CTX_RULE14EN_SHIFT		4
11203 #define E4_XSTORM_ISCSI_CONN_AG_CTX_RULE15EN_MASK		0x1
11204 #define E4_XSTORM_ISCSI_CONN_AG_CTX_RULE15EN_SHIFT		5
11205 #define E4_XSTORM_ISCSI_CONN_AG_CTX_RULE16EN_MASK		0x1
11206 #define E4_XSTORM_ISCSI_CONN_AG_CTX_RULE16EN_SHIFT		6
11207 #define E4_XSTORM_ISCSI_CONN_AG_CTX_RULE17EN_MASK		0x1
11208 #define E4_XSTORM_ISCSI_CONN_AG_CTX_RULE17EN_SHIFT		7
11209 	u8 flags13;
11210 #define E4_XSTORM_ISCSI_CONN_AG_CTX_R2TQ_DEC_RULE_EN_MASK	0x1
11211 #define E4_XSTORM_ISCSI_CONN_AG_CTX_R2TQ_DEC_RULE_EN_SHIFT	0
11212 #define E4_XSTORM_ISCSI_CONN_AG_CTX_HQ_DEC_RULE_EN_MASK		0x1
11213 #define E4_XSTORM_ISCSI_CONN_AG_CTX_HQ_DEC_RULE_EN_SHIFT	1
11214 #define E4_XSTORM_ISCSI_CONN_AG_CTX_A0_RESERVED4_MASK		0x1
11215 #define E4_XSTORM_ISCSI_CONN_AG_CTX_A0_RESERVED4_SHIFT		2
11216 #define E4_XSTORM_ISCSI_CONN_AG_CTX_A0_RESERVED5_MASK		0x1
11217 #define E4_XSTORM_ISCSI_CONN_AG_CTX_A0_RESERVED5_SHIFT		3
11218 #define E4_XSTORM_ISCSI_CONN_AG_CTX_A0_RESERVED6_MASK		0x1
11219 #define E4_XSTORM_ISCSI_CONN_AG_CTX_A0_RESERVED6_SHIFT		4
11220 #define E4_XSTORM_ISCSI_CONN_AG_CTX_A0_RESERVED7_MASK		0x1
11221 #define E4_XSTORM_ISCSI_CONN_AG_CTX_A0_RESERVED7_SHIFT		5
11222 #define E4_XSTORM_ISCSI_CONN_AG_CTX_A0_RESERVED8_MASK		0x1
11223 #define E4_XSTORM_ISCSI_CONN_AG_CTX_A0_RESERVED8_SHIFT		6
11224 #define E4_XSTORM_ISCSI_CONN_AG_CTX_A0_RESERVED9_MASK		0x1
11225 #define E4_XSTORM_ISCSI_CONN_AG_CTX_A0_RESERVED9_SHIFT		7
11226 	u8 flags14;
11227 #define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT16_MASK			0x1
11228 #define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT16_SHIFT			0
11229 #define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT17_MASK			0x1
11230 #define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT17_SHIFT			1
11231 #define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT18_MASK			0x1
11232 #define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT18_SHIFT			2
11233 #define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT19_MASK			0x1
11234 #define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT19_SHIFT			3
11235 #define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT20_MASK			0x1
11236 #define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT20_SHIFT			4
11237 #define E4_XSTORM_ISCSI_CONN_AG_CTX_DUMMY_READ_DONE_MASK	0x1
11238 #define E4_XSTORM_ISCSI_CONN_AG_CTX_DUMMY_READ_DONE_SHIFT	5
11239 #define E4_XSTORM_ISCSI_CONN_AG_CTX_PROC_ONLY_CLEANUP_MASK	0x3
11240 #define E4_XSTORM_ISCSI_CONN_AG_CTX_PROC_ONLY_CLEANUP_SHIFT	6
11241 	u8 byte2;
11242 	__le16 physical_q0;
11243 	__le16 physical_q1;
11244 	__le16 dummy_dorq_var;
11245 	__le16 sq_cons;
11246 	__le16 sq_prod;
11247 	__le16 word5;
11248 	__le16 slow_io_total_data_tx_update;
11249 	u8 byte3;
11250 	u8 byte4;
11251 	u8 byte5;
11252 	u8 byte6;
11253 	__le32 reg0;
11254 	__le32 reg1;
11255 	__le32 reg2;
11256 	__le32 more_to_send_seq;
11257 	__le32 reg4;
11258 	__le32 reg5;
11259 	__le32 hq_scan_next_relevant_ack;
11260 	__le16 r2tq_prod;
11261 	__le16 r2tq_cons;
11262 	__le16 hq_prod;
11263 	__le16 hq_cons;
11264 	__le32 remain_seq;
11265 	__le32 bytes_to_next_pdu;
11266 	__le32 hq_tcp_seq;
11267 	u8 byte7;
11268 	u8 byte8;
11269 	u8 byte9;
11270 	u8 byte10;
11271 	u8 byte11;
11272 	u8 byte12;
11273 	u8 byte13;
11274 	u8 byte14;
11275 	u8 byte15;
11276 	u8 e5_reserved;
11277 	__le16 word11;
11278 	__le32 reg10;
11279 	__le32 reg11;
11280 	__le32 exp_stat_sn;
11281 	__le32 ongoing_fast_rxmit_seq;
11282 	__le32 reg14;
11283 	__le32 reg15;
11284 	__le32 reg16;
11285 	__le32 reg17;
11286 };
11287 
11288 struct e4_tstorm_iscsi_conn_ag_ctx {
11289 	u8 reserved0;
11290 	u8 state;
11291 	u8 flags0;
11292 #define E4_TSTORM_ISCSI_CONN_AG_CTX_EXIST_IN_QM0_MASK	0x1
11293 #define E4_TSTORM_ISCSI_CONN_AG_CTX_EXIST_IN_QM0_SHIFT	0
11294 #define E4_TSTORM_ISCSI_CONN_AG_CTX_BIT1_MASK		0x1
11295 #define E4_TSTORM_ISCSI_CONN_AG_CTX_BIT1_SHIFT		1
11296 #define E4_TSTORM_ISCSI_CONN_AG_CTX_BIT2_MASK		0x1
11297 #define E4_TSTORM_ISCSI_CONN_AG_CTX_BIT2_SHIFT		2
11298 #define E4_TSTORM_ISCSI_CONN_AG_CTX_BIT3_MASK		0x1
11299 #define E4_TSTORM_ISCSI_CONN_AG_CTX_BIT3_SHIFT		3
11300 #define E4_TSTORM_ISCSI_CONN_AG_CTX_BIT4_MASK		0x1
11301 #define E4_TSTORM_ISCSI_CONN_AG_CTX_BIT4_SHIFT		4
11302 #define E4_TSTORM_ISCSI_CONN_AG_CTX_BIT5_MASK		0x1
11303 #define E4_TSTORM_ISCSI_CONN_AG_CTX_BIT5_SHIFT		5
11304 #define E4_TSTORM_ISCSI_CONN_AG_CTX_CF0_MASK		0x3
11305 #define E4_TSTORM_ISCSI_CONN_AG_CTX_CF0_SHIFT		6
11306 	u8 flags1;
11307 #define E4_TSTORM_ISCSI_CONN_AG_CTX_P2T_FLUSH_CF_MASK		0x3
11308 #define E4_TSTORM_ISCSI_CONN_AG_CTX_P2T_FLUSH_CF_SHIFT		0
11309 #define E4_TSTORM_ISCSI_CONN_AG_CTX_M2T_FLUSH_CF_MASK		0x3
11310 #define E4_TSTORM_ISCSI_CONN_AG_CTX_M2T_FLUSH_CF_SHIFT		2
11311 #define E4_TSTORM_ISCSI_CONN_AG_CTX_TIMER_STOP_ALL_MASK		0x3
11312 #define E4_TSTORM_ISCSI_CONN_AG_CTX_TIMER_STOP_ALL_SHIFT	4
11313 #define E4_TSTORM_ISCSI_CONN_AG_CTX_CF4_MASK			0x3
11314 #define E4_TSTORM_ISCSI_CONN_AG_CTX_CF4_SHIFT			6
11315 	u8 flags2;
11316 #define E4_TSTORM_ISCSI_CONN_AG_CTX_CF5_MASK	0x3
11317 #define E4_TSTORM_ISCSI_CONN_AG_CTX_CF5_SHIFT	0
11318 #define E4_TSTORM_ISCSI_CONN_AG_CTX_CF6_MASK	0x3
11319 #define E4_TSTORM_ISCSI_CONN_AG_CTX_CF6_SHIFT	2
11320 #define E4_TSTORM_ISCSI_CONN_AG_CTX_CF7_MASK	0x3
11321 #define E4_TSTORM_ISCSI_CONN_AG_CTX_CF7_SHIFT	4
11322 #define E4_TSTORM_ISCSI_CONN_AG_CTX_CF8_MASK	0x3
11323 #define E4_TSTORM_ISCSI_CONN_AG_CTX_CF8_SHIFT	6
11324 	u8 flags3;
11325 #define E4_TSTORM_ISCSI_CONN_AG_CTX_FLUSH_Q0_MASK		0x3
11326 #define E4_TSTORM_ISCSI_CONN_AG_CTX_FLUSH_Q0_SHIFT		0
11327 #define E4_TSTORM_ISCSI_CONN_AG_CTX_FLUSH_OOO_ISLES_CF_MASK	0x3
11328 #define E4_TSTORM_ISCSI_CONN_AG_CTX_FLUSH_OOO_ISLES_CF_SHIFT	2
11329 #define E4_TSTORM_ISCSI_CONN_AG_CTX_CF0EN_MASK			0x1
11330 #define E4_TSTORM_ISCSI_CONN_AG_CTX_CF0EN_SHIFT			4
11331 #define E4_TSTORM_ISCSI_CONN_AG_CTX_P2T_FLUSH_CF_EN_MASK	0x1
11332 #define E4_TSTORM_ISCSI_CONN_AG_CTX_P2T_FLUSH_CF_EN_SHIFT	5
11333 #define E4_TSTORM_ISCSI_CONN_AG_CTX_M2T_FLUSH_CF_EN_MASK	0x1
11334 #define E4_TSTORM_ISCSI_CONN_AG_CTX_M2T_FLUSH_CF_EN_SHIFT	6
11335 #define E4_TSTORM_ISCSI_CONN_AG_CTX_TIMER_STOP_ALL_EN_MASK	0x1
11336 #define E4_TSTORM_ISCSI_CONN_AG_CTX_TIMER_STOP_ALL_EN_SHIFT	7
11337 	u8 flags4;
11338 #define E4_TSTORM_ISCSI_CONN_AG_CTX_CF4EN_MASK		0x1
11339 #define E4_TSTORM_ISCSI_CONN_AG_CTX_CF4EN_SHIFT		0
11340 #define E4_TSTORM_ISCSI_CONN_AG_CTX_CF5EN_MASK		0x1
11341 #define E4_TSTORM_ISCSI_CONN_AG_CTX_CF5EN_SHIFT		1
11342 #define E4_TSTORM_ISCSI_CONN_AG_CTX_CF6EN_MASK		0x1
11343 #define E4_TSTORM_ISCSI_CONN_AG_CTX_CF6EN_SHIFT		2
11344 #define E4_TSTORM_ISCSI_CONN_AG_CTX_CF7EN_MASK		0x1
11345 #define E4_TSTORM_ISCSI_CONN_AG_CTX_CF7EN_SHIFT		3
11346 #define E4_TSTORM_ISCSI_CONN_AG_CTX_CF8EN_MASK		0x1
11347 #define E4_TSTORM_ISCSI_CONN_AG_CTX_CF8EN_SHIFT		4
11348 #define E4_TSTORM_ISCSI_CONN_AG_CTX_FLUSH_Q0_EN_MASK	0x1
11349 #define E4_TSTORM_ISCSI_CONN_AG_CTX_FLUSH_Q0_EN_SHIFT	5
11350 #define E4_TSTORM_ISCSI_CONN_AG_CTX_FLUSH_OOO_ISLES_CF_EN_MASK	0x1
11351 #define E4_TSTORM_ISCSI_CONN_AG_CTX_FLUSH_OOO_ISLES_CF_EN_SHIFT	6
11352 #define E4_TSTORM_ISCSI_CONN_AG_CTX_RULE0EN_MASK	0x1
11353 #define E4_TSTORM_ISCSI_CONN_AG_CTX_RULE0EN_SHIFT	7
11354 	u8 flags5;
11355 #define E4_TSTORM_ISCSI_CONN_AG_CTX_RULE1EN_MASK	0x1
11356 #define E4_TSTORM_ISCSI_CONN_AG_CTX_RULE1EN_SHIFT	0
11357 #define E4_TSTORM_ISCSI_CONN_AG_CTX_RULE2EN_MASK	0x1
11358 #define E4_TSTORM_ISCSI_CONN_AG_CTX_RULE2EN_SHIFT	1
11359 #define E4_TSTORM_ISCSI_CONN_AG_CTX_RULE3EN_MASK	0x1
11360 #define E4_TSTORM_ISCSI_CONN_AG_CTX_RULE3EN_SHIFT	2
11361 #define E4_TSTORM_ISCSI_CONN_AG_CTX_RULE4EN_MASK	0x1
11362 #define E4_TSTORM_ISCSI_CONN_AG_CTX_RULE4EN_SHIFT	3
11363 #define E4_TSTORM_ISCSI_CONN_AG_CTX_RULE5EN_MASK	0x1
11364 #define E4_TSTORM_ISCSI_CONN_AG_CTX_RULE5EN_SHIFT	4
11365 #define E4_TSTORM_ISCSI_CONN_AG_CTX_RULE6EN_MASK	0x1
11366 #define E4_TSTORM_ISCSI_CONN_AG_CTX_RULE6EN_SHIFT	5
11367 #define E4_TSTORM_ISCSI_CONN_AG_CTX_RULE7EN_MASK	0x1
11368 #define E4_TSTORM_ISCSI_CONN_AG_CTX_RULE7EN_SHIFT	6
11369 #define E4_TSTORM_ISCSI_CONN_AG_CTX_RULE8EN_MASK	0x1
11370 #define E4_TSTORM_ISCSI_CONN_AG_CTX_RULE8EN_SHIFT	7
11371 	__le32 reg0;
11372 	__le32 reg1;
11373 	__le32 rx_tcp_checksum_err_cnt;
11374 	__le32 reg3;
11375 	__le32 reg4;
11376 	__le32 reg5;
11377 	__le32 reg6;
11378 	__le32 reg7;
11379 	__le32 reg8;
11380 	u8 cid_offload_cnt;
11381 	u8 byte3;
11382 	__le16 word0;
11383 };
11384 
11385 struct e4_ustorm_iscsi_conn_ag_ctx {
11386 	u8 byte0;
11387 	u8 byte1;
11388 	u8 flags0;
11389 #define E4_USTORM_ISCSI_CONN_AG_CTX_BIT0_MASK	0x1
11390 #define E4_USTORM_ISCSI_CONN_AG_CTX_BIT0_SHIFT	0
11391 #define E4_USTORM_ISCSI_CONN_AG_CTX_BIT1_MASK	0x1
11392 #define E4_USTORM_ISCSI_CONN_AG_CTX_BIT1_SHIFT	1
11393 #define E4_USTORM_ISCSI_CONN_AG_CTX_CF0_MASK	0x3
11394 #define E4_USTORM_ISCSI_CONN_AG_CTX_CF0_SHIFT	2
11395 #define E4_USTORM_ISCSI_CONN_AG_CTX_CF1_MASK	0x3
11396 #define E4_USTORM_ISCSI_CONN_AG_CTX_CF1_SHIFT	4
11397 #define E4_USTORM_ISCSI_CONN_AG_CTX_CF2_MASK	0x3
11398 #define E4_USTORM_ISCSI_CONN_AG_CTX_CF2_SHIFT	6
11399 	u8 flags1;
11400 #define E4_USTORM_ISCSI_CONN_AG_CTX_CF3_MASK	0x3
11401 #define E4_USTORM_ISCSI_CONN_AG_CTX_CF3_SHIFT	0
11402 #define E4_USTORM_ISCSI_CONN_AG_CTX_CF4_MASK	0x3
11403 #define E4_USTORM_ISCSI_CONN_AG_CTX_CF4_SHIFT	2
11404 #define E4_USTORM_ISCSI_CONN_AG_CTX_CF5_MASK	0x3
11405 #define E4_USTORM_ISCSI_CONN_AG_CTX_CF5_SHIFT	4
11406 #define E4_USTORM_ISCSI_CONN_AG_CTX_CF6_MASK	0x3
11407 #define E4_USTORM_ISCSI_CONN_AG_CTX_CF6_SHIFT	6
11408 	u8 flags2;
11409 #define E4_USTORM_ISCSI_CONN_AG_CTX_CF0EN_MASK		0x1
11410 #define E4_USTORM_ISCSI_CONN_AG_CTX_CF0EN_SHIFT		0
11411 #define E4_USTORM_ISCSI_CONN_AG_CTX_CF1EN_MASK		0x1
11412 #define E4_USTORM_ISCSI_CONN_AG_CTX_CF1EN_SHIFT		1
11413 #define E4_USTORM_ISCSI_CONN_AG_CTX_CF2EN_MASK		0x1
11414 #define E4_USTORM_ISCSI_CONN_AG_CTX_CF2EN_SHIFT		2
11415 #define E4_USTORM_ISCSI_CONN_AG_CTX_CF3EN_MASK		0x1
11416 #define E4_USTORM_ISCSI_CONN_AG_CTX_CF3EN_SHIFT		3
11417 #define E4_USTORM_ISCSI_CONN_AG_CTX_CF4EN_MASK		0x1
11418 #define E4_USTORM_ISCSI_CONN_AG_CTX_CF4EN_SHIFT		4
11419 #define E4_USTORM_ISCSI_CONN_AG_CTX_CF5EN_MASK		0x1
11420 #define E4_USTORM_ISCSI_CONN_AG_CTX_CF5EN_SHIFT		5
11421 #define E4_USTORM_ISCSI_CONN_AG_CTX_CF6EN_MASK		0x1
11422 #define E4_USTORM_ISCSI_CONN_AG_CTX_CF6EN_SHIFT		6
11423 #define E4_USTORM_ISCSI_CONN_AG_CTX_RULE0EN_MASK	0x1
11424 #define E4_USTORM_ISCSI_CONN_AG_CTX_RULE0EN_SHIFT	7
11425 	u8 flags3;
11426 #define E4_USTORM_ISCSI_CONN_AG_CTX_RULE1EN_MASK	0x1
11427 #define E4_USTORM_ISCSI_CONN_AG_CTX_RULE1EN_SHIFT	0
11428 #define E4_USTORM_ISCSI_CONN_AG_CTX_RULE2EN_MASK	0x1
11429 #define E4_USTORM_ISCSI_CONN_AG_CTX_RULE2EN_SHIFT	1
11430 #define E4_USTORM_ISCSI_CONN_AG_CTX_RULE3EN_MASK	0x1
11431 #define E4_USTORM_ISCSI_CONN_AG_CTX_RULE3EN_SHIFT	2
11432 #define E4_USTORM_ISCSI_CONN_AG_CTX_RULE4EN_MASK	0x1
11433 #define E4_USTORM_ISCSI_CONN_AG_CTX_RULE4EN_SHIFT	3
11434 #define E4_USTORM_ISCSI_CONN_AG_CTX_RULE5EN_MASK	0x1
11435 #define E4_USTORM_ISCSI_CONN_AG_CTX_RULE5EN_SHIFT	4
11436 #define E4_USTORM_ISCSI_CONN_AG_CTX_RULE6EN_MASK	0x1
11437 #define E4_USTORM_ISCSI_CONN_AG_CTX_RULE6EN_SHIFT	5
11438 #define E4_USTORM_ISCSI_CONN_AG_CTX_RULE7EN_MASK	0x1
11439 #define E4_USTORM_ISCSI_CONN_AG_CTX_RULE7EN_SHIFT	6
11440 #define E4_USTORM_ISCSI_CONN_AG_CTX_RULE8EN_MASK	0x1
11441 #define E4_USTORM_ISCSI_CONN_AG_CTX_RULE8EN_SHIFT	7
11442 	u8 byte2;
11443 	u8 byte3;
11444 	__le16 word0;
11445 	__le16 word1;
11446 	__le32 reg0;
11447 	__le32 reg1;
11448 	__le32 reg2;
11449 	__le32 reg3;
11450 	__le16 word2;
11451 	__le16 word3;
11452 };
11453 
11454 /* The iscsi storm connection context of Tstorm */
11455 struct tstorm_iscsi_conn_st_ctx {
11456 	__le32 reserved[44];
11457 };
11458 
11459 struct e4_mstorm_iscsi_conn_ag_ctx {
11460 	u8 reserved;
11461 	u8 state;
11462 	u8 flags0;
11463 #define E4_MSTORM_ISCSI_CONN_AG_CTX_BIT0_MASK	0x1
11464 #define E4_MSTORM_ISCSI_CONN_AG_CTX_BIT0_SHIFT	0
11465 #define E4_MSTORM_ISCSI_CONN_AG_CTX_BIT1_MASK	0x1
11466 #define E4_MSTORM_ISCSI_CONN_AG_CTX_BIT1_SHIFT	1
11467 #define E4_MSTORM_ISCSI_CONN_AG_CTX_CF0_MASK	0x3
11468 #define E4_MSTORM_ISCSI_CONN_AG_CTX_CF0_SHIFT	2
11469 #define E4_MSTORM_ISCSI_CONN_AG_CTX_CF1_MASK	0x3
11470 #define E4_MSTORM_ISCSI_CONN_AG_CTX_CF1_SHIFT	4
11471 #define E4_MSTORM_ISCSI_CONN_AG_CTX_CF2_MASK	0x3
11472 #define E4_MSTORM_ISCSI_CONN_AG_CTX_CF2_SHIFT	6
11473 	u8 flags1;
11474 #define E4_MSTORM_ISCSI_CONN_AG_CTX_CF0EN_MASK		0x1
11475 #define E4_MSTORM_ISCSI_CONN_AG_CTX_CF0EN_SHIFT		0
11476 #define E4_MSTORM_ISCSI_CONN_AG_CTX_CF1EN_MASK		0x1
11477 #define E4_MSTORM_ISCSI_CONN_AG_CTX_CF1EN_SHIFT		1
11478 #define E4_MSTORM_ISCSI_CONN_AG_CTX_CF2EN_MASK		0x1
11479 #define E4_MSTORM_ISCSI_CONN_AG_CTX_CF2EN_SHIFT		2
11480 #define E4_MSTORM_ISCSI_CONN_AG_CTX_RULE0EN_MASK	0x1
11481 #define E4_MSTORM_ISCSI_CONN_AG_CTX_RULE0EN_SHIFT	3
11482 #define E4_MSTORM_ISCSI_CONN_AG_CTX_RULE1EN_MASK	0x1
11483 #define E4_MSTORM_ISCSI_CONN_AG_CTX_RULE1EN_SHIFT	4
11484 #define E4_MSTORM_ISCSI_CONN_AG_CTX_RULE2EN_MASK	0x1
11485 #define E4_MSTORM_ISCSI_CONN_AG_CTX_RULE2EN_SHIFT	5
11486 #define E4_MSTORM_ISCSI_CONN_AG_CTX_RULE3EN_MASK	0x1
11487 #define E4_MSTORM_ISCSI_CONN_AG_CTX_RULE3EN_SHIFT	6
11488 #define E4_MSTORM_ISCSI_CONN_AG_CTX_RULE4EN_MASK	0x1
11489 #define E4_MSTORM_ISCSI_CONN_AG_CTX_RULE4EN_SHIFT	7
11490 	__le16 word0;
11491 	__le16 word1;
11492 	__le32 reg0;
11493 	__le32 reg1;
11494 };
11495 
11496 /* Combined iSCSI and TCP storm connection of Mstorm */
11497 struct mstorm_iscsi_tcp_conn_st_ctx {
11498 	__le32 reserved_tcp[20];
11499 	__le32 reserved_iscsi[12];
11500 };
11501 
11502 /* The iscsi storm context of Ustorm */
11503 struct ustorm_iscsi_conn_st_ctx {
11504 	__le32 reserved[52];
11505 };
11506 
11507 /* iscsi connection context */
11508 struct e4_iscsi_conn_context {
11509 	struct ystorm_iscsi_conn_st_ctx ystorm_st_context;
11510 	struct pstorm_iscsi_tcp_conn_st_ctx pstorm_st_context;
11511 	struct regpair pstorm_st_padding[2];
11512 	struct pb_context xpb2_context;
11513 	struct xstorm_iscsi_tcp_conn_st_ctx xstorm_st_context;
11514 	struct regpair xstorm_st_padding[2];
11515 	struct e4_xstorm_iscsi_conn_ag_ctx xstorm_ag_context;
11516 	struct e4_tstorm_iscsi_conn_ag_ctx tstorm_ag_context;
11517 	struct regpair tstorm_ag_padding[2];
11518 	struct timers_context timer_context;
11519 	struct e4_ustorm_iscsi_conn_ag_ctx ustorm_ag_context;
11520 	struct pb_context upb_context;
11521 	struct tstorm_iscsi_conn_st_ctx tstorm_st_context;
11522 	struct regpair tstorm_st_padding[2];
11523 	struct e4_mstorm_iscsi_conn_ag_ctx mstorm_ag_context;
11524 	struct mstorm_iscsi_tcp_conn_st_ctx mstorm_st_context;
11525 	struct ustorm_iscsi_conn_st_ctx ustorm_st_context;
11526 };
11527 
11528 /* iSCSI init params passed by driver to FW in iSCSI init ramrod */
11529 struct iscsi_init_ramrod_params {
11530 	struct iscsi_spe_func_init iscsi_init_spe;
11531 	struct tcp_init_params tcp_init;
11532 };
11533 
11534 struct e4_ystorm_iscsi_conn_ag_ctx {
11535 	u8 byte0;
11536 	u8 byte1;
11537 	u8 flags0;
11538 #define E4_YSTORM_ISCSI_CONN_AG_CTX_BIT0_MASK	0x1
11539 #define E4_YSTORM_ISCSI_CONN_AG_CTX_BIT0_SHIFT	0
11540 #define E4_YSTORM_ISCSI_CONN_AG_CTX_BIT1_MASK	0x1
11541 #define E4_YSTORM_ISCSI_CONN_AG_CTX_BIT1_SHIFT	1
11542 #define E4_YSTORM_ISCSI_CONN_AG_CTX_CF0_MASK	0x3
11543 #define E4_YSTORM_ISCSI_CONN_AG_CTX_CF0_SHIFT	2
11544 #define E4_YSTORM_ISCSI_CONN_AG_CTX_CF1_MASK	0x3
11545 #define E4_YSTORM_ISCSI_CONN_AG_CTX_CF1_SHIFT	4
11546 #define E4_YSTORM_ISCSI_CONN_AG_CTX_CF2_MASK	0x3
11547 #define E4_YSTORM_ISCSI_CONN_AG_CTX_CF2_SHIFT	6
11548 	u8 flags1;
11549 #define E4_YSTORM_ISCSI_CONN_AG_CTX_CF0EN_MASK		0x1
11550 #define E4_YSTORM_ISCSI_CONN_AG_CTX_CF0EN_SHIFT		0
11551 #define E4_YSTORM_ISCSI_CONN_AG_CTX_CF1EN_MASK		0x1
11552 #define E4_YSTORM_ISCSI_CONN_AG_CTX_CF1EN_SHIFT		1
11553 #define E4_YSTORM_ISCSI_CONN_AG_CTX_CF2EN_MASK		0x1
11554 #define E4_YSTORM_ISCSI_CONN_AG_CTX_CF2EN_SHIFT		2
11555 #define E4_YSTORM_ISCSI_CONN_AG_CTX_RULE0EN_MASK	0x1
11556 #define E4_YSTORM_ISCSI_CONN_AG_CTX_RULE0EN_SHIFT	3
11557 #define E4_YSTORM_ISCSI_CONN_AG_CTX_RULE1EN_MASK	0x1
11558 #define E4_YSTORM_ISCSI_CONN_AG_CTX_RULE1EN_SHIFT	4
11559 #define E4_YSTORM_ISCSI_CONN_AG_CTX_RULE2EN_MASK	0x1
11560 #define E4_YSTORM_ISCSI_CONN_AG_CTX_RULE2EN_SHIFT	5
11561 #define E4_YSTORM_ISCSI_CONN_AG_CTX_RULE3EN_MASK	0x1
11562 #define E4_YSTORM_ISCSI_CONN_AG_CTX_RULE3EN_SHIFT	6
11563 #define E4_YSTORM_ISCSI_CONN_AG_CTX_RULE4EN_MASK	0x1
11564 #define E4_YSTORM_ISCSI_CONN_AG_CTX_RULE4EN_SHIFT	7
11565 	u8 byte2;
11566 	u8 byte3;
11567 	__le16 word0;
11568 	__le32 reg0;
11569 	__le32 reg1;
11570 	__le16 word1;
11571 	__le16 word2;
11572 	__le16 word3;
11573 	__le16 word4;
11574 	__le32 reg2;
11575 	__le32 reg3;
11576 };
11577 
11578 #define MFW_TRACE_SIGNATURE     0x25071946
11579 
11580 /* The trace in the buffer */
11581 #define MFW_TRACE_EVENTID_MASK          0x00ffff
11582 #define MFW_TRACE_PRM_SIZE_MASK         0x0f0000
11583 #define MFW_TRACE_PRM_SIZE_OFFSET	16
11584 #define MFW_TRACE_ENTRY_SIZE            3
11585 
11586 struct mcp_trace {
11587 	u32 signature;		/* Help to identify that the trace is valid */
11588 	u32 size;		/* the size of the trace buffer in bytes */
11589 	u32 curr_level;		/* 2 - all will be written to the buffer
11590 				 * 1 - debug trace will not be written
11591 				 * 0 - just errors will be written to the buffer
11592 				 */
11593 	u32 modules_mask[2];	/* a bit per module, 1 means write it, 0 means
11594 				 * mask it.
11595 				 */
11596 
11597 	/* Warning: the following pointers are assumed to be 32bits as they are
11598 	 * used only in the MFW.
11599 	 */
11600 	u32 trace_prod; /* The next trace will be written to this offset */
11601 	u32 trace_oldest; /* The oldest valid trace starts at this offset
11602 			   * (usually very close after the current producer).
11603 			   */
11604 };
11605 
11606 #define VF_MAX_STATIC 192
11607 
11608 #define MCP_GLOB_PATH_MAX	2
11609 #define MCP_PORT_MAX		2
11610 #define MCP_GLOB_PORT_MAX	4
11611 #define MCP_GLOB_FUNC_MAX	16
11612 
11613 typedef u32 offsize_t;		/* In DWORDS !!! */
11614 /* Offset from the beginning of the MCP scratchpad */
11615 #define OFFSIZE_OFFSET_SHIFT	0
11616 #define OFFSIZE_OFFSET_MASK	0x0000ffff
11617 /* Size of specific element (not the whole array if any) */
11618 #define OFFSIZE_SIZE_SHIFT	16
11619 #define OFFSIZE_SIZE_MASK	0xffff0000
11620 
11621 #define SECTION_OFFSET(_offsize) ((((_offsize &			\
11622 				     OFFSIZE_OFFSET_MASK) >>	\
11623 				    OFFSIZE_OFFSET_SHIFT) << 2))
11624 
11625 #define QED_SECTION_SIZE(_offsize) (((_offsize &		\
11626 				      OFFSIZE_SIZE_MASK) >>	\
11627 				     OFFSIZE_SIZE_SHIFT) << 2)
11628 
11629 #define SECTION_ADDR(_offsize, idx) (MCP_REG_SCRATCH +			\
11630 				     SECTION_OFFSET(_offsize) +		\
11631 				     (QED_SECTION_SIZE(_offsize) * idx))
11632 
11633 #define SECTION_OFFSIZE_ADDR(_pub_base, _section)	\
11634 	(_pub_base + offsetof(struct mcp_public_data, sections[_section]))
11635 
11636 /* PHY configuration */
11637 struct eth_phy_cfg {
11638 	u32 speed;
11639 #define ETH_SPEED_AUTONEG	0
11640 #define ETH_SPEED_SMARTLINQ	0x8
11641 
11642 	u32 pause;
11643 #define ETH_PAUSE_NONE		0x0
11644 #define ETH_PAUSE_AUTONEG	0x1
11645 #define ETH_PAUSE_RX		0x2
11646 #define ETH_PAUSE_TX		0x4
11647 
11648 	u32 adv_speed;
11649 	u32 loopback_mode;
11650 #define ETH_LOOPBACK_NONE		(0)
11651 #define ETH_LOOPBACK_INT_PHY		(1)
11652 #define ETH_LOOPBACK_EXT_PHY		(2)
11653 #define ETH_LOOPBACK_EXT		(3)
11654 #define ETH_LOOPBACK_MAC		(4)
11655 
11656 	u32 eee_cfg;
11657 #define EEE_CFG_EEE_ENABLED			BIT(0)
11658 #define EEE_CFG_TX_LPI				BIT(1)
11659 #define EEE_CFG_ADV_SPEED_1G			BIT(2)
11660 #define EEE_CFG_ADV_SPEED_10G			BIT(3)
11661 #define EEE_TX_TIMER_USEC_MASK			(0xfffffff0)
11662 #define EEE_TX_TIMER_USEC_OFFSET		4
11663 #define EEE_TX_TIMER_USEC_BALANCED_TIME		(0xa00)
11664 #define EEE_TX_TIMER_USEC_AGGRESSIVE_TIME	(0x100)
11665 #define EEE_TX_TIMER_USEC_LATENCY_TIME		(0x6000)
11666 
11667 	u32 feature_config_flags;
11668 #define ETH_EEE_MODE_ADV_LPI		(1 << 0)
11669 };
11670 
11671 struct port_mf_cfg {
11672 	u32 dynamic_cfg;
11673 #define PORT_MF_CFG_OV_TAG_MASK		0x0000ffff
11674 #define PORT_MF_CFG_OV_TAG_SHIFT	0
11675 #define PORT_MF_CFG_OV_TAG_DEFAULT	PORT_MF_CFG_OV_TAG_MASK
11676 
11677 	u32 reserved[1];
11678 };
11679 
11680 struct eth_stats {
11681 	u64 r64;
11682 	u64 r127;
11683 	u64 r255;
11684 	u64 r511;
11685 	u64 r1023;
11686 	u64 r1518;
11687 
11688 	union {
11689 		struct {
11690 			u64 r1522;
11691 			u64 r2047;
11692 			u64 r4095;
11693 			u64 r9216;
11694 			u64 r16383;
11695 		} bb0;
11696 		struct {
11697 			u64 unused1;
11698 			u64 r1519_to_max;
11699 			u64 unused2;
11700 			u64 unused3;
11701 			u64 unused4;
11702 		} ah0;
11703 	} u0;
11704 
11705 	u64 rfcs;
11706 	u64 rxcf;
11707 	u64 rxpf;
11708 	u64 rxpp;
11709 	u64 raln;
11710 	u64 rfcr;
11711 	u64 rovr;
11712 	u64 rjbr;
11713 	u64 rund;
11714 	u64 rfrg;
11715 	u64 t64;
11716 	u64 t127;
11717 	u64 t255;
11718 	u64 t511;
11719 	u64 t1023;
11720 	u64 t1518;
11721 
11722 	union {
11723 		struct {
11724 			u64 t2047;
11725 			u64 t4095;
11726 			u64 t9216;
11727 			u64 t16383;
11728 		} bb1;
11729 		struct {
11730 			u64 t1519_to_max;
11731 			u64 unused6;
11732 			u64 unused7;
11733 			u64 unused8;
11734 		} ah1;
11735 	} u1;
11736 
11737 	u64 txpf;
11738 	u64 txpp;
11739 
11740 	union {
11741 		struct {
11742 			u64 tlpiec;
11743 			u64 tncl;
11744 		} bb2;
11745 		struct {
11746 			u64 unused9;
11747 			u64 unused10;
11748 		} ah2;
11749 	} u2;
11750 
11751 	u64 rbyte;
11752 	u64 rxuca;
11753 	u64 rxmca;
11754 	u64 rxbca;
11755 	u64 rxpok;
11756 	u64 tbyte;
11757 	u64 txuca;
11758 	u64 txmca;
11759 	u64 txbca;
11760 	u64 txcf;
11761 };
11762 
11763 struct brb_stats {
11764 	u64 brb_truncate[8];
11765 	u64 brb_discard[8];
11766 };
11767 
11768 struct port_stats {
11769 	struct brb_stats brb;
11770 	struct eth_stats eth;
11771 };
11772 
11773 struct couple_mode_teaming {
11774 	u8 port_cmt[MCP_GLOB_PORT_MAX];
11775 #define PORT_CMT_IN_TEAM	(1 << 0)
11776 
11777 #define PORT_CMT_PORT_ROLE	(1 << 1)
11778 #define PORT_CMT_PORT_INACTIVE	(0 << 1)
11779 #define PORT_CMT_PORT_ACTIVE	(1 << 1)
11780 
11781 #define PORT_CMT_TEAM_MASK	(1 << 2)
11782 #define PORT_CMT_TEAM0		(0 << 2)
11783 #define PORT_CMT_TEAM1		(1 << 2)
11784 };
11785 
11786 #define LLDP_CHASSIS_ID_STAT_LEN	4
11787 #define LLDP_PORT_ID_STAT_LEN		4
11788 #define DCBX_MAX_APP_PROTOCOL		32
11789 #define MAX_SYSTEM_LLDP_TLV_DATA	32
11790 
11791 enum _lldp_agent {
11792 	LLDP_NEAREST_BRIDGE = 0,
11793 	LLDP_NEAREST_NON_TPMR_BRIDGE,
11794 	LLDP_NEAREST_CUSTOMER_BRIDGE,
11795 	LLDP_MAX_LLDP_AGENTS
11796 };
11797 
11798 struct lldp_config_params_s {
11799 	u32 config;
11800 #define LLDP_CONFIG_TX_INTERVAL_MASK	0x000000ff
11801 #define LLDP_CONFIG_TX_INTERVAL_SHIFT	0
11802 #define LLDP_CONFIG_HOLD_MASK		0x00000f00
11803 #define LLDP_CONFIG_HOLD_SHIFT		8
11804 #define LLDP_CONFIG_MAX_CREDIT_MASK	0x0000f000
11805 #define LLDP_CONFIG_MAX_CREDIT_SHIFT	12
11806 #define LLDP_CONFIG_ENABLE_RX_MASK	0x40000000
11807 #define LLDP_CONFIG_ENABLE_RX_SHIFT	30
11808 #define LLDP_CONFIG_ENABLE_TX_MASK	0x80000000
11809 #define LLDP_CONFIG_ENABLE_TX_SHIFT	31
11810 	u32 local_chassis_id[LLDP_CHASSIS_ID_STAT_LEN];
11811 	u32 local_port_id[LLDP_PORT_ID_STAT_LEN];
11812 };
11813 
11814 struct lldp_status_params_s {
11815 	u32 prefix_seq_num;
11816 	u32 status;
11817 	u32 peer_chassis_id[LLDP_CHASSIS_ID_STAT_LEN];
11818 	u32 peer_port_id[LLDP_PORT_ID_STAT_LEN];
11819 	u32 suffix_seq_num;
11820 };
11821 
11822 struct dcbx_ets_feature {
11823 	u32 flags;
11824 #define DCBX_ETS_ENABLED_MASK	0x00000001
11825 #define DCBX_ETS_ENABLED_SHIFT	0
11826 #define DCBX_ETS_WILLING_MASK	0x00000002
11827 #define DCBX_ETS_WILLING_SHIFT	1
11828 #define DCBX_ETS_ERROR_MASK	0x00000004
11829 #define DCBX_ETS_ERROR_SHIFT	2
11830 #define DCBX_ETS_CBS_MASK	0x00000008
11831 #define DCBX_ETS_CBS_SHIFT	3
11832 #define DCBX_ETS_MAX_TCS_MASK	0x000000f0
11833 #define DCBX_ETS_MAX_TCS_SHIFT	4
11834 #define DCBX_OOO_TC_MASK	0x00000f00
11835 #define DCBX_OOO_TC_SHIFT	8
11836 	u32 pri_tc_tbl[1];
11837 #define DCBX_TCP_OOO_TC		(4)
11838 
11839 #define NIG_ETS_ISCSI_OOO_CLIENT_OFFSET	(DCBX_TCP_OOO_TC + 1)
11840 #define DCBX_CEE_STRICT_PRIORITY	0xf
11841 	u32 tc_bw_tbl[2];
11842 	u32 tc_tsa_tbl[2];
11843 #define DCBX_ETS_TSA_STRICT	0
11844 #define DCBX_ETS_TSA_CBS	1
11845 #define DCBX_ETS_TSA_ETS	2
11846 };
11847 
11848 #define DCBX_TCP_OOO_TC			(4)
11849 #define DCBX_TCP_OOO_K2_4PORT_TC	(3)
11850 
11851 struct dcbx_app_priority_entry {
11852 	u32 entry;
11853 #define DCBX_APP_PRI_MAP_MASK		0x000000ff
11854 #define DCBX_APP_PRI_MAP_SHIFT		0
11855 #define DCBX_APP_PRI_0			0x01
11856 #define DCBX_APP_PRI_1			0x02
11857 #define DCBX_APP_PRI_2			0x04
11858 #define DCBX_APP_PRI_3			0x08
11859 #define DCBX_APP_PRI_4			0x10
11860 #define DCBX_APP_PRI_5			0x20
11861 #define DCBX_APP_PRI_6			0x40
11862 #define DCBX_APP_PRI_7			0x80
11863 #define DCBX_APP_SF_MASK		0x00000300
11864 #define DCBX_APP_SF_SHIFT		8
11865 #define DCBX_APP_SF_ETHTYPE		0
11866 #define DCBX_APP_SF_PORT		1
11867 #define DCBX_APP_SF_IEEE_MASK		0x0000f000
11868 #define DCBX_APP_SF_IEEE_SHIFT		12
11869 #define DCBX_APP_SF_IEEE_RESERVED	0
11870 #define DCBX_APP_SF_IEEE_ETHTYPE	1
11871 #define DCBX_APP_SF_IEEE_TCP_PORT	2
11872 #define DCBX_APP_SF_IEEE_UDP_PORT	3
11873 #define DCBX_APP_SF_IEEE_TCP_UDP_PORT	4
11874 
11875 #define DCBX_APP_PROTOCOL_ID_MASK	0xffff0000
11876 #define DCBX_APP_PROTOCOL_ID_SHIFT	16
11877 };
11878 
11879 struct dcbx_app_priority_feature {
11880 	u32 flags;
11881 #define DCBX_APP_ENABLED_MASK		0x00000001
11882 #define DCBX_APP_ENABLED_SHIFT		0
11883 #define DCBX_APP_WILLING_MASK		0x00000002
11884 #define DCBX_APP_WILLING_SHIFT		1
11885 #define DCBX_APP_ERROR_MASK		0x00000004
11886 #define DCBX_APP_ERROR_SHIFT		2
11887 #define DCBX_APP_MAX_TCS_MASK		0x0000f000
11888 #define DCBX_APP_MAX_TCS_SHIFT		12
11889 #define DCBX_APP_NUM_ENTRIES_MASK	0x00ff0000
11890 #define DCBX_APP_NUM_ENTRIES_SHIFT	16
11891 	struct dcbx_app_priority_entry app_pri_tbl[DCBX_MAX_APP_PROTOCOL];
11892 };
11893 
11894 struct dcbx_features {
11895 	struct dcbx_ets_feature ets;
11896 	u32 pfc;
11897 #define DCBX_PFC_PRI_EN_BITMAP_MASK	0x000000ff
11898 #define DCBX_PFC_PRI_EN_BITMAP_SHIFT	0
11899 #define DCBX_PFC_PRI_EN_BITMAP_PRI_0	0x01
11900 #define DCBX_PFC_PRI_EN_BITMAP_PRI_1	0x02
11901 #define DCBX_PFC_PRI_EN_BITMAP_PRI_2	0x04
11902 #define DCBX_PFC_PRI_EN_BITMAP_PRI_3	0x08
11903 #define DCBX_PFC_PRI_EN_BITMAP_PRI_4	0x10
11904 #define DCBX_PFC_PRI_EN_BITMAP_PRI_5	0x20
11905 #define DCBX_PFC_PRI_EN_BITMAP_PRI_6	0x40
11906 #define DCBX_PFC_PRI_EN_BITMAP_PRI_7	0x80
11907 
11908 #define DCBX_PFC_FLAGS_MASK		0x0000ff00
11909 #define DCBX_PFC_FLAGS_SHIFT		8
11910 #define DCBX_PFC_CAPS_MASK		0x00000f00
11911 #define DCBX_PFC_CAPS_SHIFT		8
11912 #define DCBX_PFC_MBC_MASK		0x00004000
11913 #define DCBX_PFC_MBC_SHIFT		14
11914 #define DCBX_PFC_WILLING_MASK		0x00008000
11915 #define DCBX_PFC_WILLING_SHIFT		15
11916 #define DCBX_PFC_ENABLED_MASK		0x00010000
11917 #define DCBX_PFC_ENABLED_SHIFT		16
11918 #define DCBX_PFC_ERROR_MASK		0x00020000
11919 #define DCBX_PFC_ERROR_SHIFT		17
11920 
11921 	struct dcbx_app_priority_feature app;
11922 };
11923 
11924 struct dcbx_local_params {
11925 	u32 config;
11926 #define DCBX_CONFIG_VERSION_MASK	0x00000007
11927 #define DCBX_CONFIG_VERSION_SHIFT	0
11928 #define DCBX_CONFIG_VERSION_DISABLED	0
11929 #define DCBX_CONFIG_VERSION_IEEE	1
11930 #define DCBX_CONFIG_VERSION_CEE		2
11931 #define DCBX_CONFIG_VERSION_STATIC	4
11932 
11933 	u32 flags;
11934 	struct dcbx_features features;
11935 };
11936 
11937 struct dcbx_mib {
11938 	u32 prefix_seq_num;
11939 	u32 flags;
11940 	struct dcbx_features features;
11941 	u32 suffix_seq_num;
11942 };
11943 
11944 struct lldp_system_tlvs_buffer_s {
11945 	u16 valid;
11946 	u16 length;
11947 	u32 data[MAX_SYSTEM_LLDP_TLV_DATA];
11948 };
11949 
11950 struct dcb_dscp_map {
11951 	u32 flags;
11952 #define DCB_DSCP_ENABLE_MASK	0x1
11953 #define DCB_DSCP_ENABLE_SHIFT	0
11954 #define DCB_DSCP_ENABLE	1
11955 	u32 dscp_pri_map[8];
11956 };
11957 
11958 struct public_global {
11959 	u32 max_path;
11960 	u32 max_ports;
11961 #define MODE_1P 1
11962 #define MODE_2P 2
11963 #define MODE_3P 3
11964 #define MODE_4P 4
11965 	u32 debug_mb_offset;
11966 	u32 phymod_dbg_mb_offset;
11967 	struct couple_mode_teaming cmt;
11968 	s32 internal_temperature;
11969 	u32 mfw_ver;
11970 	u32 running_bundle_id;
11971 	s32 external_temperature;
11972 	u32 mdump_reason;
11973 	u64 reserved;
11974 	u32 data_ptr;
11975 	u32 data_size;
11976 };
11977 
11978 struct fw_flr_mb {
11979 	u32 aggint;
11980 	u32 opgen_addr;
11981 	u32 accum_ack;
11982 };
11983 
11984 struct public_path {
11985 	struct fw_flr_mb flr_mb;
11986 	u32 mcp_vf_disabled[VF_MAX_STATIC / 32];
11987 
11988 	u32 process_kill;
11989 #define PROCESS_KILL_COUNTER_MASK	0x0000ffff
11990 #define PROCESS_KILL_COUNTER_SHIFT	0
11991 #define PROCESS_KILL_GLOB_AEU_BIT_MASK	0xffff0000
11992 #define PROCESS_KILL_GLOB_AEU_BIT_SHIFT	16
11993 #define GLOBAL_AEU_BIT(aeu_reg_id, aeu_bit) (aeu_reg_id * 32 + aeu_bit)
11994 };
11995 
11996 struct public_port {
11997 	u32 validity_map;
11998 
11999 	u32 link_status;
12000 #define LINK_STATUS_LINK_UP			0x00000001
12001 #define LINK_STATUS_SPEED_AND_DUPLEX_MASK	0x0000001e
12002 #define LINK_STATUS_SPEED_AND_DUPLEX_1000THD	(1 << 1)
12003 #define LINK_STATUS_SPEED_AND_DUPLEX_1000TFD	(2 << 1)
12004 #define LINK_STATUS_SPEED_AND_DUPLEX_10G	(3 << 1)
12005 #define LINK_STATUS_SPEED_AND_DUPLEX_20G	(4 << 1)
12006 #define LINK_STATUS_SPEED_AND_DUPLEX_40G	(5 << 1)
12007 #define LINK_STATUS_SPEED_AND_DUPLEX_50G	(6 << 1)
12008 #define LINK_STATUS_SPEED_AND_DUPLEX_100G	(7 << 1)
12009 #define LINK_STATUS_SPEED_AND_DUPLEX_25G	(8 << 1)
12010 
12011 #define LINK_STATUS_AUTO_NEGOTIATE_ENABLED	0x00000020
12012 
12013 #define LINK_STATUS_AUTO_NEGOTIATE_COMPLETE	0x00000040
12014 #define LINK_STATUS_PARALLEL_DETECTION_USED	0x00000080
12015 
12016 #define LINK_STATUS_PFC_ENABLED				0x00000100
12017 #define LINK_STATUS_LINK_PARTNER_1000TFD_CAPABLE 0x00000200
12018 #define LINK_STATUS_LINK_PARTNER_1000THD_CAPABLE 0x00000400
12019 #define LINK_STATUS_LINK_PARTNER_10G_CAPABLE		0x00000800
12020 #define LINK_STATUS_LINK_PARTNER_20G_CAPABLE		0x00001000
12021 #define LINK_STATUS_LINK_PARTNER_40G_CAPABLE		0x00002000
12022 #define LINK_STATUS_LINK_PARTNER_50G_CAPABLE		0x00004000
12023 #define LINK_STATUS_LINK_PARTNER_100G_CAPABLE		0x00008000
12024 #define LINK_STATUS_LINK_PARTNER_25G_CAPABLE		0x00010000
12025 
12026 #define LINK_STATUS_LINK_PARTNER_FLOW_CONTROL_MASK	0x000C0000
12027 #define LINK_STATUS_LINK_PARTNER_NOT_PAUSE_CAPABLE	(0 << 18)
12028 #define LINK_STATUS_LINK_PARTNER_SYMMETRIC_PAUSE	(1 << 18)
12029 #define LINK_STATUS_LINK_PARTNER_ASYMMETRIC_PAUSE	(2 << 18)
12030 #define LINK_STATUS_LINK_PARTNER_BOTH_PAUSE		(3 << 18)
12031 
12032 #define LINK_STATUS_SFP_TX_FAULT			0x00100000
12033 #define LINK_STATUS_TX_FLOW_CONTROL_ENABLED		0x00200000
12034 #define LINK_STATUS_RX_FLOW_CONTROL_ENABLED		0x00400000
12035 #define LINK_STATUS_RX_SIGNAL_PRESENT			0x00800000
12036 #define LINK_STATUS_MAC_LOCAL_FAULT			0x01000000
12037 #define LINK_STATUS_MAC_REMOTE_FAULT			0x02000000
12038 #define LINK_STATUS_UNSUPPORTED_SPD_REQ			0x04000000
12039 
12040 	u32 link_status1;
12041 	u32 ext_phy_fw_version;
12042 	u32 drv_phy_cfg_addr;
12043 
12044 	u32 port_stx;
12045 
12046 	u32 stat_nig_timer;
12047 
12048 	struct port_mf_cfg port_mf_config;
12049 	struct port_stats stats;
12050 
12051 	u32 media_type;
12052 #define MEDIA_UNSPECIFIED	0x0
12053 #define MEDIA_SFPP_10G_FIBER	0x1
12054 #define MEDIA_XFP_FIBER		0x2
12055 #define MEDIA_DA_TWINAX		0x3
12056 #define MEDIA_BASE_T		0x4
12057 #define MEDIA_SFP_1G_FIBER	0x5
12058 #define MEDIA_MODULE_FIBER	0x6
12059 #define MEDIA_KR		0xf0
12060 #define MEDIA_NOT_PRESENT	0xff
12061 
12062 	u32 lfa_status;
12063 	u32 link_change_count;
12064 
12065 	struct lldp_config_params_s lldp_config_params[LLDP_MAX_LLDP_AGENTS];
12066 	struct lldp_status_params_s lldp_status_params[LLDP_MAX_LLDP_AGENTS];
12067 	struct lldp_system_tlvs_buffer_s system_lldp_tlvs_buf;
12068 
12069 	/* DCBX related MIB */
12070 	struct dcbx_local_params local_admin_dcbx_mib;
12071 	struct dcbx_mib remote_dcbx_mib;
12072 	struct dcbx_mib operational_dcbx_mib;
12073 
12074 	u32 reserved[2];
12075 	u32 transceiver_data;
12076 #define ETH_TRANSCEIVER_STATE_MASK	0x000000FF
12077 #define ETH_TRANSCEIVER_STATE_SHIFT	0x00000000
12078 #define ETH_TRANSCEIVER_STATE_OFFSET	0x00000000
12079 #define ETH_TRANSCEIVER_STATE_UNPLUGGED	0x00000000
12080 #define ETH_TRANSCEIVER_STATE_PRESENT	0x00000001
12081 #define ETH_TRANSCEIVER_STATE_VALID	0x00000003
12082 #define ETH_TRANSCEIVER_STATE_UPDATING	0x00000008
12083 #define ETH_TRANSCEIVER_TYPE_MASK       0x0000FF00
12084 #define ETH_TRANSCEIVER_TYPE_OFFSET     0x8
12085 #define ETH_TRANSCEIVER_TYPE_NONE                       0x00
12086 #define ETH_TRANSCEIVER_TYPE_UNKNOWN                    0xFF
12087 #define ETH_TRANSCEIVER_TYPE_1G_PCC                     0x01
12088 #define ETH_TRANSCEIVER_TYPE_1G_ACC                     0x02
12089 #define ETH_TRANSCEIVER_TYPE_1G_LX                      0x03
12090 #define ETH_TRANSCEIVER_TYPE_1G_SX                      0x04
12091 #define ETH_TRANSCEIVER_TYPE_10G_SR                     0x05
12092 #define ETH_TRANSCEIVER_TYPE_10G_LR                     0x06
12093 #define ETH_TRANSCEIVER_TYPE_10G_LRM                    0x07
12094 #define ETH_TRANSCEIVER_TYPE_10G_ER                     0x08
12095 #define ETH_TRANSCEIVER_TYPE_10G_PCC                    0x09
12096 #define ETH_TRANSCEIVER_TYPE_10G_ACC                    0x0a
12097 #define ETH_TRANSCEIVER_TYPE_XLPPI                      0x0b
12098 #define ETH_TRANSCEIVER_TYPE_40G_LR4                    0x0c
12099 #define ETH_TRANSCEIVER_TYPE_40G_SR4                    0x0d
12100 #define ETH_TRANSCEIVER_TYPE_40G_CR4                    0x0e
12101 #define ETH_TRANSCEIVER_TYPE_100G_AOC                   0x0f
12102 #define ETH_TRANSCEIVER_TYPE_100G_SR4                   0x10
12103 #define ETH_TRANSCEIVER_TYPE_100G_LR4                   0x11
12104 #define ETH_TRANSCEIVER_TYPE_100G_ER4                   0x12
12105 #define ETH_TRANSCEIVER_TYPE_100G_ACC                   0x13
12106 #define ETH_TRANSCEIVER_TYPE_100G_CR4                   0x14
12107 #define ETH_TRANSCEIVER_TYPE_4x10G_SR                   0x15
12108 #define ETH_TRANSCEIVER_TYPE_25G_CA_N                   0x16
12109 #define ETH_TRANSCEIVER_TYPE_25G_ACC_S                  0x17
12110 #define ETH_TRANSCEIVER_TYPE_25G_CA_S                   0x18
12111 #define ETH_TRANSCEIVER_TYPE_25G_ACC_M                  0x19
12112 #define ETH_TRANSCEIVER_TYPE_25G_CA_L                   0x1a
12113 #define ETH_TRANSCEIVER_TYPE_25G_ACC_L                  0x1b
12114 #define ETH_TRANSCEIVER_TYPE_25G_SR                     0x1c
12115 #define ETH_TRANSCEIVER_TYPE_25G_LR                     0x1d
12116 #define ETH_TRANSCEIVER_TYPE_25G_AOC                    0x1e
12117 #define ETH_TRANSCEIVER_TYPE_4x10G                      0x1f
12118 #define ETH_TRANSCEIVER_TYPE_4x25G_CR                   0x20
12119 #define ETH_TRANSCEIVER_TYPE_1000BASET                  0x21
12120 #define ETH_TRANSCEIVER_TYPE_10G_BASET                  0x22
12121 #define ETH_TRANSCEIVER_TYPE_MULTI_RATE_10G_40G_SR      0x30
12122 #define ETH_TRANSCEIVER_TYPE_MULTI_RATE_10G_40G_CR      0x31
12123 #define ETH_TRANSCEIVER_TYPE_MULTI_RATE_10G_40G_LR      0x32
12124 #define ETH_TRANSCEIVER_TYPE_MULTI_RATE_40G_100G_SR     0x33
12125 #define ETH_TRANSCEIVER_TYPE_MULTI_RATE_40G_100G_CR     0x34
12126 #define ETH_TRANSCEIVER_TYPE_MULTI_RATE_40G_100G_LR     0x35
12127 #define ETH_TRANSCEIVER_TYPE_MULTI_RATE_40G_100G_AOC    0x36
12128 	u32 wol_info;
12129 	u32 wol_pkt_len;
12130 	u32 wol_pkt_details;
12131 	struct dcb_dscp_map dcb_dscp_map;
12132 
12133 	u32 eee_status;
12134 #define EEE_ACTIVE_BIT			BIT(0)
12135 #define EEE_LD_ADV_STATUS_MASK		0x000000f0
12136 #define EEE_LD_ADV_STATUS_OFFSET	4
12137 #define EEE_1G_ADV			BIT(1)
12138 #define EEE_10G_ADV			BIT(2)
12139 #define EEE_LP_ADV_STATUS_MASK		0x00000f00
12140 #define EEE_LP_ADV_STATUS_OFFSET	8
12141 #define EEE_SUPPORTED_SPEED_MASK	0x0000f000
12142 #define EEE_SUPPORTED_SPEED_OFFSET	12
12143 #define EEE_1G_SUPPORTED		BIT(1)
12144 #define EEE_10G_SUPPORTED		BIT(2)
12145 
12146 	u32 eee_remote;
12147 #define EEE_REMOTE_TW_TX_MASK   0x0000ffff
12148 #define EEE_REMOTE_TW_TX_OFFSET 0
12149 #define EEE_REMOTE_TW_RX_MASK   0xffff0000
12150 #define EEE_REMOTE_TW_RX_OFFSET 16
12151 
12152 	u32 reserved1;
12153 	u32 oem_cfg_port;
12154 #define OEM_CFG_CHANNEL_TYPE_MASK                       0x00000003
12155 #define OEM_CFG_CHANNEL_TYPE_OFFSET                     0
12156 #define OEM_CFG_CHANNEL_TYPE_VLAN_PARTITION             0x1
12157 #define OEM_CFG_CHANNEL_TYPE_STAGGED                    0x2
12158 #define OEM_CFG_SCHED_TYPE_MASK                         0x0000000C
12159 #define OEM_CFG_SCHED_TYPE_OFFSET                       2
12160 #define OEM_CFG_SCHED_TYPE_ETS                          0x1
12161 #define OEM_CFG_SCHED_TYPE_VNIC_BW                      0x2
12162 };
12163 
12164 struct public_func {
12165 	u32 reserved0[2];
12166 
12167 	u32 mtu_size;
12168 
12169 	u32 reserved[7];
12170 
12171 	u32 config;
12172 #define FUNC_MF_CFG_FUNC_HIDE			0x00000001
12173 #define FUNC_MF_CFG_PAUSE_ON_HOST_RING		0x00000002
12174 #define FUNC_MF_CFG_PAUSE_ON_HOST_RING_SHIFT	0x00000001
12175 
12176 #define FUNC_MF_CFG_PROTOCOL_MASK	0x000000f0
12177 #define FUNC_MF_CFG_PROTOCOL_SHIFT	4
12178 #define FUNC_MF_CFG_PROTOCOL_ETHERNET	0x00000000
12179 #define FUNC_MF_CFG_PROTOCOL_ISCSI              0x00000010
12180 #define FUNC_MF_CFG_PROTOCOL_FCOE               0x00000020
12181 #define FUNC_MF_CFG_PROTOCOL_ROCE               0x00000030
12182 #define FUNC_MF_CFG_PROTOCOL_MAX	0x00000030
12183 
12184 #define FUNC_MF_CFG_MIN_BW_MASK		0x0000ff00
12185 #define FUNC_MF_CFG_MIN_BW_SHIFT	8
12186 #define FUNC_MF_CFG_MIN_BW_DEFAULT	0x00000000
12187 #define FUNC_MF_CFG_MAX_BW_MASK		0x00ff0000
12188 #define FUNC_MF_CFG_MAX_BW_SHIFT	16
12189 #define FUNC_MF_CFG_MAX_BW_DEFAULT	0x00640000
12190 
12191 	u32 status;
12192 #define FUNC_STATUS_VIRTUAL_LINK_UP	0x00000001
12193 
12194 	u32 mac_upper;
12195 #define FUNC_MF_CFG_UPPERMAC_MASK	0x0000ffff
12196 #define FUNC_MF_CFG_UPPERMAC_SHIFT	0
12197 #define FUNC_MF_CFG_UPPERMAC_DEFAULT	FUNC_MF_CFG_UPPERMAC_MASK
12198 	u32 mac_lower;
12199 #define FUNC_MF_CFG_LOWERMAC_DEFAULT	0xffffffff
12200 
12201 	u32 fcoe_wwn_port_name_upper;
12202 	u32 fcoe_wwn_port_name_lower;
12203 
12204 	u32 fcoe_wwn_node_name_upper;
12205 	u32 fcoe_wwn_node_name_lower;
12206 
12207 	u32 ovlan_stag;
12208 #define FUNC_MF_CFG_OV_STAG_MASK	0x0000ffff
12209 #define FUNC_MF_CFG_OV_STAG_SHIFT	0
12210 #define FUNC_MF_CFG_OV_STAG_DEFAULT	FUNC_MF_CFG_OV_STAG_MASK
12211 
12212 	u32 pf_allocation;
12213 
12214 	u32 preserve_data;
12215 
12216 	u32 driver_last_activity_ts;
12217 
12218 	u32 drv_ack_vf_disabled[VF_MAX_STATIC / 32];
12219 
12220 	u32 drv_id;
12221 #define DRV_ID_PDA_COMP_VER_MASK	0x0000ffff
12222 #define DRV_ID_PDA_COMP_VER_SHIFT	0
12223 
12224 #define LOAD_REQ_HSI_VERSION		2
12225 #define DRV_ID_MCP_HSI_VER_MASK		0x00ff0000
12226 #define DRV_ID_MCP_HSI_VER_SHIFT	16
12227 #define DRV_ID_MCP_HSI_VER_CURRENT	(LOAD_REQ_HSI_VERSION << \
12228 					 DRV_ID_MCP_HSI_VER_SHIFT)
12229 
12230 #define DRV_ID_DRV_TYPE_MASK		0x7f000000
12231 #define DRV_ID_DRV_TYPE_SHIFT		24
12232 #define DRV_ID_DRV_TYPE_UNKNOWN		(0 << DRV_ID_DRV_TYPE_SHIFT)
12233 #define DRV_ID_DRV_TYPE_LINUX		(1 << DRV_ID_DRV_TYPE_SHIFT)
12234 
12235 #define DRV_ID_DRV_INIT_HW_MASK		0x80000000
12236 #define DRV_ID_DRV_INIT_HW_SHIFT	31
12237 #define DRV_ID_DRV_INIT_HW_FLAG		(1 << DRV_ID_DRV_INIT_HW_SHIFT)
12238 
12239 	u32 oem_cfg_func;
12240 #define OEM_CFG_FUNC_TC_MASK                    0x0000000F
12241 #define OEM_CFG_FUNC_TC_OFFSET                  0
12242 #define OEM_CFG_FUNC_TC_0                       0x0
12243 #define OEM_CFG_FUNC_TC_1                       0x1
12244 #define OEM_CFG_FUNC_TC_2                       0x2
12245 #define OEM_CFG_FUNC_TC_3                       0x3
12246 #define OEM_CFG_FUNC_TC_4                       0x4
12247 #define OEM_CFG_FUNC_TC_5                       0x5
12248 #define OEM_CFG_FUNC_TC_6                       0x6
12249 #define OEM_CFG_FUNC_TC_7                       0x7
12250 
12251 #define OEM_CFG_FUNC_HOST_PRI_CTRL_MASK         0x00000030
12252 #define OEM_CFG_FUNC_HOST_PRI_CTRL_OFFSET       4
12253 #define OEM_CFG_FUNC_HOST_PRI_CTRL_VNIC         0x1
12254 #define OEM_CFG_FUNC_HOST_PRI_CTRL_OS           0x2
12255 };
12256 
12257 struct mcp_mac {
12258 	u32 mac_upper;
12259 	u32 mac_lower;
12260 };
12261 
12262 struct mcp_val64 {
12263 	u32 lo;
12264 	u32 hi;
12265 };
12266 
12267 struct mcp_file_att {
12268 	u32 nvm_start_addr;
12269 	u32 len;
12270 };
12271 
12272 struct bist_nvm_image_att {
12273 	u32 return_code;
12274 	u32 image_type;
12275 	u32 nvm_start_addr;
12276 	u32 len;
12277 };
12278 
12279 #define MCP_DRV_VER_STR_SIZE 16
12280 #define MCP_DRV_VER_STR_SIZE_DWORD (MCP_DRV_VER_STR_SIZE / sizeof(u32))
12281 #define MCP_DRV_NVM_BUF_LEN 32
12282 struct drv_version_stc {
12283 	u32 version;
12284 	u8 name[MCP_DRV_VER_STR_SIZE - 4];
12285 };
12286 
12287 struct lan_stats_stc {
12288 	u64 ucast_rx_pkts;
12289 	u64 ucast_tx_pkts;
12290 	u32 fcs_err;
12291 	u32 rserved;
12292 };
12293 
12294 struct fcoe_stats_stc {
12295 	u64 rx_pkts;
12296 	u64 tx_pkts;
12297 	u32 fcs_err;
12298 	u32 login_failure;
12299 };
12300 
12301 struct ocbb_data_stc {
12302 	u32 ocbb_host_addr;
12303 	u32 ocsd_host_addr;
12304 	u32 ocsd_req_update_interval;
12305 };
12306 
12307 #define MAX_NUM_OF_SENSORS 7
12308 struct temperature_status_stc {
12309 	u32 num_of_sensors;
12310 	u32 sensor[MAX_NUM_OF_SENSORS];
12311 };
12312 
12313 /* crash dump configuration header */
12314 struct mdump_config_stc {
12315 	u32 version;
12316 	u32 config;
12317 	u32 epoc;
12318 	u32 num_of_logs;
12319 	u32 valid_logs;
12320 };
12321 
12322 enum resource_id_enum {
12323 	RESOURCE_NUM_SB_E = 0,
12324 	RESOURCE_NUM_L2_QUEUE_E = 1,
12325 	RESOURCE_NUM_VPORT_E = 2,
12326 	RESOURCE_NUM_VMQ_E = 3,
12327 	RESOURCE_FACTOR_NUM_RSS_PF_E = 4,
12328 	RESOURCE_FACTOR_RSS_PER_VF_E = 5,
12329 	RESOURCE_NUM_RL_E = 6,
12330 	RESOURCE_NUM_PQ_E = 7,
12331 	RESOURCE_NUM_VF_E = 8,
12332 	RESOURCE_VFC_FILTER_E = 9,
12333 	RESOURCE_ILT_E = 10,
12334 	RESOURCE_CQS_E = 11,
12335 	RESOURCE_GFT_PROFILES_E = 12,
12336 	RESOURCE_NUM_TC_E = 13,
12337 	RESOURCE_NUM_RSS_ENGINES_E = 14,
12338 	RESOURCE_LL2_QUEUE_E = 15,
12339 	RESOURCE_RDMA_STATS_QUEUE_E = 16,
12340 	RESOURCE_BDQ_E = 17,
12341 	RESOURCE_QCN_E = 18,
12342 	RESOURCE_LLH_FILTER_E = 19,
12343 	RESOURCE_VF_MAC_ADDR = 20,
12344 	RESOURCE_LL2_CQS_E = 21,
12345 	RESOURCE_VF_CNQS = 22,
12346 	RESOURCE_MAX_NUM,
12347 	RESOURCE_NUM_INVALID = 0xFFFFFFFF
12348 };
12349 
12350 /* Resource ID is to be filled by the driver in the MB request
12351  * Size, offset & flags to be filled by the MFW in the MB response
12352  */
12353 struct resource_info {
12354 	enum resource_id_enum res_id;
12355 	u32 size;		/* number of allocated resources */
12356 	u32 offset;		/* Offset of the 1st resource */
12357 	u32 vf_size;
12358 	u32 vf_offset;
12359 	u32 flags;
12360 #define RESOURCE_ELEMENT_STRICT (1 << 0)
12361 };
12362 
12363 #define DRV_ROLE_NONE           0
12364 #define DRV_ROLE_PREBOOT        1
12365 #define DRV_ROLE_OS             2
12366 #define DRV_ROLE_KDUMP          3
12367 
12368 struct load_req_stc {
12369 	u32 drv_ver_0;
12370 	u32 drv_ver_1;
12371 	u32 fw_ver;
12372 	u32 misc0;
12373 #define LOAD_REQ_ROLE_MASK              0x000000FF
12374 #define LOAD_REQ_ROLE_SHIFT             0
12375 #define LOAD_REQ_LOCK_TO_MASK           0x0000FF00
12376 #define LOAD_REQ_LOCK_TO_SHIFT          8
12377 #define LOAD_REQ_LOCK_TO_DEFAULT        0
12378 #define LOAD_REQ_LOCK_TO_NONE           255
12379 #define LOAD_REQ_FORCE_MASK             0x000F0000
12380 #define LOAD_REQ_FORCE_SHIFT            16
12381 #define LOAD_REQ_FORCE_NONE             0
12382 #define LOAD_REQ_FORCE_PF               1
12383 #define LOAD_REQ_FORCE_ALL              2
12384 #define LOAD_REQ_FLAGS0_MASK            0x00F00000
12385 #define LOAD_REQ_FLAGS0_SHIFT           20
12386 #define LOAD_REQ_FLAGS0_AVOID_RESET     (0x1 << 0)
12387 };
12388 
12389 struct load_rsp_stc {
12390 	u32 drv_ver_0;
12391 	u32 drv_ver_1;
12392 	u32 fw_ver;
12393 	u32 misc0;
12394 #define LOAD_RSP_ROLE_MASK              0x000000FF
12395 #define LOAD_RSP_ROLE_SHIFT             0
12396 #define LOAD_RSP_HSI_MASK               0x0000FF00
12397 #define LOAD_RSP_HSI_SHIFT              8
12398 #define LOAD_RSP_FLAGS0_MASK            0x000F0000
12399 #define LOAD_RSP_FLAGS0_SHIFT           16
12400 #define LOAD_RSP_FLAGS0_DRV_EXISTS      (0x1 << 0)
12401 };
12402 
12403 union drv_union_data {
12404 	u32 ver_str[MCP_DRV_VER_STR_SIZE_DWORD];
12405 	struct mcp_mac wol_mac;
12406 
12407 	struct eth_phy_cfg drv_phy_cfg;
12408 
12409 	struct mcp_val64 val64;
12410 
12411 	u8 raw_data[MCP_DRV_NVM_BUF_LEN];
12412 
12413 	struct mcp_file_att file_att;
12414 
12415 	u32 ack_vf_disabled[VF_MAX_STATIC / 32];
12416 
12417 	struct drv_version_stc drv_version;
12418 
12419 	struct lan_stats_stc lan_stats;
12420 	struct fcoe_stats_stc fcoe_stats;
12421 	struct ocbb_data_stc ocbb_info;
12422 	struct temperature_status_stc temp_info;
12423 	struct resource_info resource;
12424 	struct bist_nvm_image_att nvm_image_att;
12425 	struct mdump_config_stc mdump_config;
12426 };
12427 
12428 struct public_drv_mb {
12429 	u32 drv_mb_header;
12430 #define DRV_MSG_CODE_MASK			0xffff0000
12431 #define DRV_MSG_CODE_LOAD_REQ			0x10000000
12432 #define DRV_MSG_CODE_LOAD_DONE			0x11000000
12433 #define DRV_MSG_CODE_INIT_HW			0x12000000
12434 #define DRV_MSG_CODE_CANCEL_LOAD_REQ            0x13000000
12435 #define DRV_MSG_CODE_UNLOAD_REQ			0x20000000
12436 #define DRV_MSG_CODE_UNLOAD_DONE		0x21000000
12437 #define DRV_MSG_CODE_INIT_PHY			0x22000000
12438 #define DRV_MSG_CODE_LINK_RESET			0x23000000
12439 #define DRV_MSG_CODE_SET_DCBX			0x25000000
12440 #define DRV_MSG_CODE_OV_UPDATE_CURR_CFG         0x26000000
12441 #define DRV_MSG_CODE_OV_UPDATE_BUS_NUM          0x27000000
12442 #define DRV_MSG_CODE_OV_UPDATE_BOOT_PROGRESS    0x28000000
12443 #define DRV_MSG_CODE_OV_UPDATE_STORM_FW_VER     0x29000000
12444 #define DRV_MSG_CODE_OV_UPDATE_DRIVER_STATE     0x31000000
12445 #define DRV_MSG_CODE_BW_UPDATE_ACK              0x32000000
12446 #define DRV_MSG_CODE_OV_UPDATE_MTU              0x33000000
12447 #define DRV_MSG_GET_RESOURCE_ALLOC_MSG		0x34000000
12448 #define DRV_MSG_SET_RESOURCE_VALUE_MSG		0x35000000
12449 #define DRV_MSG_CODE_OV_UPDATE_WOL              0x38000000
12450 #define DRV_MSG_CODE_OV_UPDATE_ESWITCH_MODE     0x39000000
12451 #define DRV_MSG_CODE_GET_OEM_UPDATES            0x41000000
12452 
12453 #define DRV_MSG_CODE_BW_UPDATE_ACK		0x32000000
12454 #define DRV_MSG_CODE_NIG_DRAIN			0x30000000
12455 #define DRV_MSG_CODE_S_TAG_UPDATE_ACK		0x3b000000
12456 #define DRV_MSG_CODE_GET_NVM_CFG_OPTION		0x003e0000
12457 #define DRV_MSG_CODE_SET_NVM_CFG_OPTION		0x003f0000
12458 #define DRV_MSG_CODE_INITIATE_PF_FLR            0x02010000
12459 #define DRV_MSG_CODE_VF_DISABLED_DONE		0xc0000000
12460 #define DRV_MSG_CODE_CFG_VF_MSIX		0xc0010000
12461 #define DRV_MSG_CODE_CFG_PF_VFS_MSIX		0xc0020000
12462 #define DRV_MSG_CODE_NVM_PUT_FILE_BEGIN		0x00010000
12463 #define DRV_MSG_CODE_NVM_PUT_FILE_DATA		0x00020000
12464 #define DRV_MSG_CODE_NVM_GET_FILE_ATT		0x00030000
12465 #define DRV_MSG_CODE_NVM_READ_NVRAM		0x00050000
12466 #define DRV_MSG_CODE_NVM_WRITE_NVRAM		0x00060000
12467 #define DRV_MSG_CODE_MCP_RESET			0x00090000
12468 #define DRV_MSG_CODE_SET_VERSION		0x000f0000
12469 #define DRV_MSG_CODE_MCP_HALT                   0x00100000
12470 #define DRV_MSG_CODE_SET_VMAC                   0x00110000
12471 #define DRV_MSG_CODE_GET_VMAC                   0x00120000
12472 #define DRV_MSG_CODE_VMAC_TYPE_SHIFT            4
12473 #define DRV_MSG_CODE_VMAC_TYPE_MASK             0x30
12474 #define DRV_MSG_CODE_VMAC_TYPE_MAC              1
12475 #define DRV_MSG_CODE_VMAC_TYPE_WWNN             2
12476 #define DRV_MSG_CODE_VMAC_TYPE_WWPN             3
12477 
12478 #define DRV_MSG_CODE_GET_STATS                  0x00130000
12479 #define DRV_MSG_CODE_STATS_TYPE_LAN             1
12480 #define DRV_MSG_CODE_STATS_TYPE_FCOE            2
12481 #define DRV_MSG_CODE_STATS_TYPE_ISCSI           3
12482 #define DRV_MSG_CODE_STATS_TYPE_RDMA            4
12483 
12484 #define DRV_MSG_CODE_TRANSCEIVER_READ           0x00160000
12485 
12486 #define DRV_MSG_CODE_MASK_PARITIES              0x001a0000
12487 
12488 #define DRV_MSG_CODE_BIST_TEST			0x001e0000
12489 #define DRV_MSG_CODE_SET_LED_MODE		0x00200000
12490 #define DRV_MSG_CODE_RESOURCE_CMD		0x00230000
12491 #define DRV_MSG_CODE_GET_TLV_DONE		0x002f0000
12492 #define DRV_MSG_CODE_GET_ENGINE_CONFIG		0x00370000
12493 #define DRV_MSG_CODE_GET_PPFID_BITMAP		0x43000000
12494 
12495 #define RESOURCE_CMD_REQ_RESC_MASK		0x0000001F
12496 #define RESOURCE_CMD_REQ_RESC_SHIFT		0
12497 #define RESOURCE_CMD_REQ_OPCODE_MASK		0x000000E0
12498 #define RESOURCE_CMD_REQ_OPCODE_SHIFT		5
12499 #define RESOURCE_OPCODE_REQ			1
12500 #define RESOURCE_OPCODE_REQ_WO_AGING		2
12501 #define RESOURCE_OPCODE_REQ_W_AGING		3
12502 #define RESOURCE_OPCODE_RELEASE			4
12503 #define RESOURCE_OPCODE_FORCE_RELEASE		5
12504 #define RESOURCE_CMD_REQ_AGE_MASK		0x0000FF00
12505 #define RESOURCE_CMD_REQ_AGE_SHIFT		8
12506 
12507 #define RESOURCE_CMD_RSP_OWNER_MASK		0x000000FF
12508 #define RESOURCE_CMD_RSP_OWNER_SHIFT		0
12509 #define RESOURCE_CMD_RSP_OPCODE_MASK		0x00000700
12510 #define RESOURCE_CMD_RSP_OPCODE_SHIFT		8
12511 #define RESOURCE_OPCODE_GNT			1
12512 #define RESOURCE_OPCODE_BUSY			2
12513 #define RESOURCE_OPCODE_RELEASED		3
12514 #define RESOURCE_OPCODE_RELEASED_PREVIOUS	4
12515 #define RESOURCE_OPCODE_WRONG_OWNER		5
12516 #define RESOURCE_OPCODE_UNKNOWN_CMD		255
12517 
12518 #define RESOURCE_DUMP				0
12519 
12520 #define DRV_MSG_CODE_GET_PF_RDMA_PROTOCOL	0x002b0000
12521 #define DRV_MSG_CODE_OS_WOL			0x002e0000
12522 
12523 #define DRV_MSG_CODE_FEATURE_SUPPORT		0x00300000
12524 #define DRV_MSG_CODE_GET_MFW_FEATURE_SUPPORT	0x00310000
12525 #define DRV_MSG_SEQ_NUMBER_MASK			0x0000ffff
12526 
12527 	u32 drv_mb_param;
12528 #define DRV_MB_PARAM_UNLOAD_WOL_UNKNOWN         0x00000000
12529 #define DRV_MB_PARAM_UNLOAD_WOL_MCP             0x00000001
12530 #define DRV_MB_PARAM_UNLOAD_WOL_DISABLED        0x00000002
12531 #define DRV_MB_PARAM_UNLOAD_WOL_ENABLED         0x00000003
12532 #define DRV_MB_PARAM_DCBX_NOTIFY_MASK		0x000000FF
12533 #define DRV_MB_PARAM_DCBX_NOTIFY_SHIFT		3
12534 
12535 #define DRV_MB_PARAM_NVM_PUT_FILE_BEGIN_MBI     0x3
12536 #define DRV_MB_PARAM_NVM_OFFSET_OFFSET          0
12537 #define DRV_MB_PARAM_NVM_OFFSET_MASK            0x00FFFFFF
12538 #define DRV_MB_PARAM_NVM_LEN_OFFSET		24
12539 #define DRV_MB_PARAM_NVM_LEN_MASK               0xFF000000
12540 
12541 #define DRV_MB_PARAM_CFG_VF_MSIX_VF_ID_SHIFT	0
12542 #define DRV_MB_PARAM_CFG_VF_MSIX_VF_ID_MASK	0x000000FF
12543 #define DRV_MB_PARAM_CFG_VF_MSIX_SB_NUM_SHIFT	8
12544 #define DRV_MB_PARAM_CFG_VF_MSIX_SB_NUM_MASK	0x0000FF00
12545 #define DRV_MB_PARAM_LLDP_SEND_MASK		0x00000001
12546 #define DRV_MB_PARAM_LLDP_SEND_SHIFT		0
12547 
12548 #define DRV_MB_PARAM_OV_CURR_CFG_SHIFT		0
12549 #define DRV_MB_PARAM_OV_CURR_CFG_MASK		0x0000000F
12550 #define DRV_MB_PARAM_OV_CURR_CFG_NONE		0
12551 #define DRV_MB_PARAM_OV_CURR_CFG_OS		1
12552 #define DRV_MB_PARAM_OV_CURR_CFG_VENDOR_SPEC	2
12553 #define DRV_MB_PARAM_OV_CURR_CFG_OTHER		3
12554 
12555 #define DRV_MB_PARAM_OV_STORM_FW_VER_SHIFT	0
12556 #define DRV_MB_PARAM_OV_STORM_FW_VER_MASK	0xFFFFFFFF
12557 #define DRV_MB_PARAM_OV_STORM_FW_VER_MAJOR_MASK	0xFF000000
12558 #define DRV_MB_PARAM_OV_STORM_FW_VER_MINOR_MASK	0x00FF0000
12559 #define DRV_MB_PARAM_OV_STORM_FW_VER_BUILD_MASK	0x0000FF00
12560 #define DRV_MB_PARAM_OV_STORM_FW_VER_DROP_MASK	0x000000FF
12561 
12562 #define DRV_MSG_CODE_OV_UPDATE_DRIVER_STATE_SHIFT	0
12563 #define DRV_MSG_CODE_OV_UPDATE_DRIVER_STATE_MASK	0xF
12564 #define DRV_MSG_CODE_OV_UPDATE_DRIVER_STATE_UNKNOWN	0x1
12565 #define DRV_MSG_CODE_OV_UPDATE_DRIVER_STATE_NOT_LOADED	0x2
12566 #define DRV_MSG_CODE_OV_UPDATE_DRIVER_STATE_LOADING	0x3
12567 #define DRV_MSG_CODE_OV_UPDATE_DRIVER_STATE_DISABLED	0x4
12568 #define DRV_MSG_CODE_OV_UPDATE_DRIVER_STATE_ACTIVE	0x5
12569 
12570 #define DRV_MB_PARAM_OV_MTU_SIZE_SHIFT	0
12571 #define DRV_MB_PARAM_OV_MTU_SIZE_MASK	0xFFFFFFFF
12572 
12573 #define DRV_MB_PARAM_WOL_MASK	(DRV_MB_PARAM_WOL_DEFAULT | \
12574 				 DRV_MB_PARAM_WOL_DISABLED | \
12575 				 DRV_MB_PARAM_WOL_ENABLED)
12576 #define DRV_MB_PARAM_WOL_DEFAULT	DRV_MB_PARAM_UNLOAD_WOL_MCP
12577 #define DRV_MB_PARAM_WOL_DISABLED	DRV_MB_PARAM_UNLOAD_WOL_DISABLED
12578 #define DRV_MB_PARAM_WOL_ENABLED	DRV_MB_PARAM_UNLOAD_WOL_ENABLED
12579 
12580 #define DRV_MB_PARAM_ESWITCH_MODE_MASK	(DRV_MB_PARAM_ESWITCH_MODE_NONE | \
12581 					 DRV_MB_PARAM_ESWITCH_MODE_VEB | \
12582 					 DRV_MB_PARAM_ESWITCH_MODE_VEPA)
12583 #define DRV_MB_PARAM_ESWITCH_MODE_NONE	0x0
12584 #define DRV_MB_PARAM_ESWITCH_MODE_VEB	0x1
12585 #define DRV_MB_PARAM_ESWITCH_MODE_VEPA	0x2
12586 
12587 #define DRV_MB_PARAM_DUMMY_OEM_UPDATES_MASK	0x1
12588 #define DRV_MB_PARAM_DUMMY_OEM_UPDATES_OFFSET	0
12589 
12590 #define DRV_MB_PARAM_SET_LED_MODE_OPER		0x0
12591 #define DRV_MB_PARAM_SET_LED_MODE_ON		0x1
12592 #define DRV_MB_PARAM_SET_LED_MODE_OFF		0x2
12593 
12594 #define DRV_MB_PARAM_TRANSCEIVER_PORT_OFFSET		0
12595 #define DRV_MB_PARAM_TRANSCEIVER_PORT_MASK		0x00000003
12596 #define DRV_MB_PARAM_TRANSCEIVER_SIZE_OFFSET		2
12597 #define DRV_MB_PARAM_TRANSCEIVER_SIZE_MASK		0x000000FC
12598 #define DRV_MB_PARAM_TRANSCEIVER_I2C_ADDRESS_OFFSET	8
12599 #define DRV_MB_PARAM_TRANSCEIVER_I2C_ADDRESS_MASK	0x0000FF00
12600 #define DRV_MB_PARAM_TRANSCEIVER_OFFSET_OFFSET		16
12601 #define DRV_MB_PARAM_TRANSCEIVER_OFFSET_MASK		0xFFFF0000
12602 
12603 	/* Resource Allocation params - Driver version support */
12604 #define DRV_MB_PARAM_RESOURCE_ALLOC_VERSION_MAJOR_MASK	0xFFFF0000
12605 #define DRV_MB_PARAM_RESOURCE_ALLOC_VERSION_MAJOR_SHIFT	16
12606 #define DRV_MB_PARAM_RESOURCE_ALLOC_VERSION_MINOR_MASK	0x0000FFFF
12607 #define DRV_MB_PARAM_RESOURCE_ALLOC_VERSION_MINOR_SHIFT	0
12608 
12609 #define DRV_MB_PARAM_BIST_REGISTER_TEST		1
12610 #define DRV_MB_PARAM_BIST_CLOCK_TEST		2
12611 #define DRV_MB_PARAM_BIST_NVM_TEST_NUM_IMAGES	3
12612 #define DRV_MB_PARAM_BIST_NVM_TEST_IMAGE_BY_INDEX	4
12613 
12614 #define DRV_MB_PARAM_BIST_RC_UNKNOWN		0
12615 #define DRV_MB_PARAM_BIST_RC_PASSED		1
12616 #define DRV_MB_PARAM_BIST_RC_FAILED		2
12617 #define DRV_MB_PARAM_BIST_RC_INVALID_PARAMETER	3
12618 
12619 #define DRV_MB_PARAM_BIST_TEST_INDEX_SHIFT	0
12620 #define DRV_MB_PARAM_BIST_TEST_INDEX_MASK	0x000000FF
12621 #define DRV_MB_PARAM_BIST_TEST_IMAGE_INDEX_SHIFT	8
12622 #define DRV_MB_PARAM_BIST_TEST_IMAGE_INDEX_MASK		0x0000FF00
12623 
12624 #define DRV_MB_PARAM_FEATURE_SUPPORT_PORT_MASK		0x0000FFFF
12625 #define DRV_MB_PARAM_FEATURE_SUPPORT_PORT_OFFSET	0
12626 #define DRV_MB_PARAM_FEATURE_SUPPORT_PORT_EEE		0x00000002
12627 #define DRV_MB_PARAM_FEATURE_SUPPORT_FUNC_VLINK		0x00010000
12628 
12629 #define DRV_MB_PARAM_NVM_CFG_OPTION_ID_SHIFT		0
12630 #define DRV_MB_PARAM_NVM_CFG_OPTION_ID_MASK		0x0000FFFF
12631 #define DRV_MB_PARAM_NVM_CFG_OPTION_ALL_SHIFT		16
12632 #define DRV_MB_PARAM_NVM_CFG_OPTION_ALL_MASK		0x00010000
12633 #define DRV_MB_PARAM_NVM_CFG_OPTION_INIT_SHIFT		17
12634 #define DRV_MB_PARAM_NVM_CFG_OPTION_INIT_MASK		0x00020000
12635 #define DRV_MB_PARAM_NVM_CFG_OPTION_COMMIT_SHIFT	18
12636 #define DRV_MB_PARAM_NVM_CFG_OPTION_COMMIT_MASK		0x00040000
12637 #define DRV_MB_PARAM_NVM_CFG_OPTION_FREE_SHIFT		19
12638 #define DRV_MB_PARAM_NVM_CFG_OPTION_FREE_MASK		0x00080000
12639 #define DRV_MB_PARAM_NVM_CFG_OPTION_ENTITY_SEL_SHIFT	20
12640 #define DRV_MB_PARAM_NVM_CFG_OPTION_ENTITY_SEL_MASK	0x00100000
12641 #define DRV_MB_PARAM_NVM_CFG_OPTION_ENTITY_ID_SHIFT	24
12642 #define DRV_MB_PARAM_NVM_CFG_OPTION_ENTITY_ID_MASK	0x0f000000
12643 
12644 	u32 fw_mb_header;
12645 #define FW_MSG_CODE_MASK			0xffff0000
12646 #define FW_MSG_CODE_UNSUPPORTED                 0x00000000
12647 #define FW_MSG_CODE_DRV_LOAD_ENGINE		0x10100000
12648 #define FW_MSG_CODE_DRV_LOAD_PORT		0x10110000
12649 #define FW_MSG_CODE_DRV_LOAD_FUNCTION		0x10120000
12650 #define FW_MSG_CODE_DRV_LOAD_REFUSED_PDA	0x10200000
12651 #define FW_MSG_CODE_DRV_LOAD_REFUSED_HSI_1	0x10210000
12652 #define FW_MSG_CODE_DRV_LOAD_REFUSED_DIAG	0x10220000
12653 #define FW_MSG_CODE_DRV_LOAD_REFUSED_HSI        0x10230000
12654 #define FW_MSG_CODE_DRV_LOAD_REFUSED_REQUIRES_FORCE 0x10300000
12655 #define FW_MSG_CODE_DRV_LOAD_REFUSED_REJECT     0x10310000
12656 #define FW_MSG_CODE_DRV_LOAD_DONE		0x11100000
12657 #define FW_MSG_CODE_DRV_UNLOAD_ENGINE		0x20110000
12658 #define FW_MSG_CODE_DRV_UNLOAD_PORT		0x20120000
12659 #define FW_MSG_CODE_DRV_UNLOAD_FUNCTION		0x20130000
12660 #define FW_MSG_CODE_DRV_UNLOAD_DONE		0x21100000
12661 #define FW_MSG_CODE_RESOURCE_ALLOC_OK           0x34000000
12662 #define FW_MSG_CODE_RESOURCE_ALLOC_UNKNOWN      0x35000000
12663 #define FW_MSG_CODE_RESOURCE_ALLOC_DEPRECATED   0x36000000
12664 #define FW_MSG_CODE_S_TAG_UPDATE_ACK_DONE	0x3b000000
12665 #define FW_MSG_CODE_DRV_CFG_VF_MSIX_DONE	0xb0010000
12666 
12667 #define FW_MSG_CODE_NVM_OK			0x00010000
12668 #define FW_MSG_CODE_NVM_PUT_FILE_FINISH_OK	0x00400000
12669 #define FW_MSG_CODE_PHY_OK			0x00110000
12670 #define FW_MSG_CODE_OK				0x00160000
12671 #define FW_MSG_CODE_ERROR			0x00170000
12672 #define FW_MSG_CODE_TRANSCEIVER_DIAG_OK		0x00160000
12673 #define FW_MSG_CODE_TRANSCEIVER_DIAG_ERROR	0x00170000
12674 #define FW_MSG_CODE_TRANSCEIVER_NOT_PRESENT	0x00020000
12675 
12676 #define FW_MSG_CODE_OS_WOL_SUPPORTED            0x00800000
12677 #define FW_MSG_CODE_OS_WOL_NOT_SUPPORTED        0x00810000
12678 #define FW_MSG_CODE_DRV_CFG_PF_VFS_MSIX_DONE	0x00870000
12679 #define FW_MSG_SEQ_NUMBER_MASK			0x0000ffff
12680 
12681 	u32 fw_mb_param;
12682 #define FW_MB_PARAM_RESOURCE_ALLOC_VERSION_MAJOR_MASK	0xFFFF0000
12683 #define FW_MB_PARAM_RESOURCE_ALLOC_VERSION_MAJOR_SHIFT	16
12684 #define FW_MB_PARAM_RESOURCE_ALLOC_VERSION_MINOR_MASK	0x0000FFFF
12685 #define FW_MB_PARAM_RESOURCE_ALLOC_VERSION_MINOR_SHIFT	0
12686 
12687 	/* get pf rdma protocol command responce */
12688 #define FW_MB_PARAM_GET_PF_RDMA_NONE		0x0
12689 #define FW_MB_PARAM_GET_PF_RDMA_ROCE		0x1
12690 #define FW_MB_PARAM_GET_PF_RDMA_IWARP		0x2
12691 #define FW_MB_PARAM_GET_PF_RDMA_BOTH		0x3
12692 
12693 /* get MFW feature support response */
12694 #define FW_MB_PARAM_FEATURE_SUPPORT_SMARTLINQ	0x00000001
12695 #define FW_MB_PARAM_FEATURE_SUPPORT_EEE		0x00000002
12696 #define FW_MB_PARAM_FEATURE_SUPPORT_VLINK	0x00010000
12697 
12698 #define FW_MB_PARAM_LOAD_DONE_DID_EFUSE_ERROR	(1 << 0)
12699 
12700 #define FW_MB_PARAM_ENG_CFG_FIR_AFFIN_VALID_MASK   0x00000001
12701 #define FW_MB_PARAM_ENG_CFG_FIR_AFFIN_VALID_SHIFT 0
12702 #define FW_MB_PARAM_ENG_CFG_FIR_AFFIN_VALUE_MASK   0x00000002
12703 #define FW_MB_PARAM_ENG_CFG_FIR_AFFIN_VALUE_SHIFT 1
12704 #define FW_MB_PARAM_ENG_CFG_L2_AFFIN_VALID_MASK    0x00000004
12705 #define FW_MB_PARAM_ENG_CFG_L2_AFFIN_VALID_SHIFT  2
12706 #define FW_MB_PARAM_ENG_CFG_L2_AFFIN_VALUE_MASK    0x00000008
12707 #define FW_MB_PARAM_ENG_CFG_L2_AFFIN_VALUE_SHIFT  3
12708 
12709 #define FW_MB_PARAM_PPFID_BITMAP_MASK	0xFF
12710 #define FW_MB_PARAM_PPFID_BITMAP_SHIFT	0
12711 
12712 	u32 drv_pulse_mb;
12713 #define DRV_PULSE_SEQ_MASK			0x00007fff
12714 #define DRV_PULSE_SYSTEM_TIME_MASK		0xffff0000
12715 #define DRV_PULSE_ALWAYS_ALIVE			0x00008000
12716 
12717 	u32 mcp_pulse_mb;
12718 #define MCP_PULSE_SEQ_MASK			0x00007fff
12719 #define MCP_PULSE_ALWAYS_ALIVE			0x00008000
12720 #define MCP_EVENT_MASK				0xffff0000
12721 #define MCP_EVENT_OTHER_DRIVER_RESET_REQ	0x00010000
12722 
12723 	union drv_union_data union_data;
12724 };
12725 
12726 #define FW_MB_PARAM_NVM_PUT_FILE_REQ_OFFSET_MASK	0x00ffffff
12727 #define FW_MB_PARAM_NVM_PUT_FILE_REQ_OFFSET_SHIFT	0
12728 #define FW_MB_PARAM_NVM_PUT_FILE_REQ_SIZE_MASK		0xff000000
12729 #define FW_MB_PARAM_NVM_PUT_FILE_REQ_SIZE_SHIFT		24
12730 
12731 enum MFW_DRV_MSG_TYPE {
12732 	MFW_DRV_MSG_LINK_CHANGE,
12733 	MFW_DRV_MSG_FLR_FW_ACK_FAILED,
12734 	MFW_DRV_MSG_VF_DISABLED,
12735 	MFW_DRV_MSG_LLDP_DATA_UPDATED,
12736 	MFW_DRV_MSG_DCBX_REMOTE_MIB_UPDATED,
12737 	MFW_DRV_MSG_DCBX_OPERATIONAL_MIB_UPDATED,
12738 	MFW_DRV_MSG_ERROR_RECOVERY,
12739 	MFW_DRV_MSG_BW_UPDATE,
12740 	MFW_DRV_MSG_S_TAG_UPDATE,
12741 	MFW_DRV_MSG_GET_LAN_STATS,
12742 	MFW_DRV_MSG_GET_FCOE_STATS,
12743 	MFW_DRV_MSG_GET_ISCSI_STATS,
12744 	MFW_DRV_MSG_GET_RDMA_STATS,
12745 	MFW_DRV_MSG_BW_UPDATE10,
12746 	MFW_DRV_MSG_TRANSCEIVER_STATE_CHANGE,
12747 	MFW_DRV_MSG_BW_UPDATE11,
12748 	MFW_DRV_MSG_RESERVED,
12749 	MFW_DRV_MSG_GET_TLV_REQ,
12750 	MFW_DRV_MSG_OEM_CFG_UPDATE,
12751 	MFW_DRV_MSG_MAX
12752 };
12753 
12754 #define MFW_DRV_MSG_MAX_DWORDS(msgs)	(((msgs - 1) >> 2) + 1)
12755 #define MFW_DRV_MSG_DWORD(msg_id)	(msg_id >> 2)
12756 #define MFW_DRV_MSG_OFFSET(msg_id)	((msg_id & 0x3) << 3)
12757 #define MFW_DRV_MSG_MASK(msg_id)	(0xff << MFW_DRV_MSG_OFFSET(msg_id))
12758 
12759 struct public_mfw_mb {
12760 	u32 sup_msgs;
12761 	u32 msg[MFW_DRV_MSG_MAX_DWORDS(MFW_DRV_MSG_MAX)];
12762 	u32 ack[MFW_DRV_MSG_MAX_DWORDS(MFW_DRV_MSG_MAX)];
12763 };
12764 
12765 enum public_sections {
12766 	PUBLIC_DRV_MB,
12767 	PUBLIC_MFW_MB,
12768 	PUBLIC_GLOBAL,
12769 	PUBLIC_PATH,
12770 	PUBLIC_PORT,
12771 	PUBLIC_FUNC,
12772 	PUBLIC_MAX_SECTIONS
12773 };
12774 
12775 struct mcp_public_data {
12776 	u32 num_sections;
12777 	u32 sections[PUBLIC_MAX_SECTIONS];
12778 	struct public_drv_mb drv_mb[MCP_GLOB_FUNC_MAX];
12779 	struct public_mfw_mb mfw_mb[MCP_GLOB_FUNC_MAX];
12780 	struct public_global global;
12781 	struct public_path path[MCP_GLOB_PATH_MAX];
12782 	struct public_port port[MCP_GLOB_PORT_MAX];
12783 	struct public_func func[MCP_GLOB_FUNC_MAX];
12784 };
12785 
12786 #define MAX_I2C_TRANSACTION_SIZE	16
12787 
12788 /* OCBB definitions */
12789 enum tlvs {
12790 	/* Category 1: Device Properties */
12791 	DRV_TLV_CLP_STR,
12792 	DRV_TLV_CLP_STR_CTD,
12793 	/* Category 6: Device Configuration */
12794 	DRV_TLV_SCSI_TO,
12795 	DRV_TLV_R_T_TOV,
12796 	DRV_TLV_R_A_TOV,
12797 	DRV_TLV_E_D_TOV,
12798 	DRV_TLV_CR_TOV,
12799 	DRV_TLV_BOOT_TYPE,
12800 	/* Category 8: Port Configuration */
12801 	DRV_TLV_NPIV_ENABLED,
12802 	/* Category 10: Function Configuration */
12803 	DRV_TLV_FEATURE_FLAGS,
12804 	DRV_TLV_LOCAL_ADMIN_ADDR,
12805 	DRV_TLV_ADDITIONAL_MAC_ADDR_1,
12806 	DRV_TLV_ADDITIONAL_MAC_ADDR_2,
12807 	DRV_TLV_LSO_MAX_OFFLOAD_SIZE,
12808 	DRV_TLV_LSO_MIN_SEGMENT_COUNT,
12809 	DRV_TLV_PROMISCUOUS_MODE,
12810 	DRV_TLV_TX_DESCRIPTORS_QUEUE_SIZE,
12811 	DRV_TLV_RX_DESCRIPTORS_QUEUE_SIZE,
12812 	DRV_TLV_NUM_OF_NET_QUEUE_VMQ_CFG,
12813 	DRV_TLV_FLEX_NIC_OUTER_VLAN_ID,
12814 	DRV_TLV_OS_DRIVER_STATES,
12815 	DRV_TLV_PXE_BOOT_PROGRESS,
12816 	/* Category 12: FC/FCoE Configuration */
12817 	DRV_TLV_NPIV_STATE,
12818 	DRV_TLV_NUM_OF_NPIV_IDS,
12819 	DRV_TLV_SWITCH_NAME,
12820 	DRV_TLV_SWITCH_PORT_NUM,
12821 	DRV_TLV_SWITCH_PORT_ID,
12822 	DRV_TLV_VENDOR_NAME,
12823 	DRV_TLV_SWITCH_MODEL,
12824 	DRV_TLV_SWITCH_FW_VER,
12825 	DRV_TLV_QOS_PRIORITY_PER_802_1P,
12826 	DRV_TLV_PORT_ALIAS,
12827 	DRV_TLV_PORT_STATE,
12828 	DRV_TLV_FIP_TX_DESCRIPTORS_QUEUE_SIZE,
12829 	DRV_TLV_FCOE_RX_DESCRIPTORS_QUEUE_SIZE,
12830 	DRV_TLV_LINK_FAILURE_COUNT,
12831 	DRV_TLV_FCOE_BOOT_PROGRESS,
12832 	/* Category 13: iSCSI Configuration */
12833 	DRV_TLV_TARGET_LLMNR_ENABLED,
12834 	DRV_TLV_HEADER_DIGEST_FLAG_ENABLED,
12835 	DRV_TLV_DATA_DIGEST_FLAG_ENABLED,
12836 	DRV_TLV_AUTHENTICATION_METHOD,
12837 	DRV_TLV_ISCSI_BOOT_TARGET_PORTAL,
12838 	DRV_TLV_MAX_FRAME_SIZE,
12839 	DRV_TLV_PDU_TX_DESCRIPTORS_QUEUE_SIZE,
12840 	DRV_TLV_PDU_RX_DESCRIPTORS_QUEUE_SIZE,
12841 	DRV_TLV_ISCSI_BOOT_PROGRESS,
12842 	/* Category 20: Device Data */
12843 	DRV_TLV_PCIE_BUS_RX_UTILIZATION,
12844 	DRV_TLV_PCIE_BUS_TX_UTILIZATION,
12845 	DRV_TLV_DEVICE_CPU_CORES_UTILIZATION,
12846 	DRV_TLV_LAST_VALID_DCC_TLV_RECEIVED,
12847 	DRV_TLV_NCSI_RX_BYTES_RECEIVED,
12848 	DRV_TLV_NCSI_TX_BYTES_SENT,
12849 	/* Category 22: Base Port Data */
12850 	DRV_TLV_RX_DISCARDS,
12851 	DRV_TLV_RX_ERRORS,
12852 	DRV_TLV_TX_ERRORS,
12853 	DRV_TLV_TX_DISCARDS,
12854 	DRV_TLV_RX_FRAMES_RECEIVED,
12855 	DRV_TLV_TX_FRAMES_SENT,
12856 	/* Category 23: FC/FCoE Port Data */
12857 	DRV_TLV_RX_BROADCAST_PACKETS,
12858 	DRV_TLV_TX_BROADCAST_PACKETS,
12859 	/* Category 28: Base Function Data */
12860 	DRV_TLV_NUM_OFFLOADED_CONNECTIONS_TCP_IPV4,
12861 	DRV_TLV_NUM_OFFLOADED_CONNECTIONS_TCP_IPV6,
12862 	DRV_TLV_TX_DESCRIPTOR_QUEUE_AVG_DEPTH,
12863 	DRV_TLV_RX_DESCRIPTORS_QUEUE_AVG_DEPTH,
12864 	DRV_TLV_PF_RX_FRAMES_RECEIVED,
12865 	DRV_TLV_RX_BYTES_RECEIVED,
12866 	DRV_TLV_PF_TX_FRAMES_SENT,
12867 	DRV_TLV_TX_BYTES_SENT,
12868 	DRV_TLV_IOV_OFFLOAD,
12869 	DRV_TLV_PCI_ERRORS_CAP_ID,
12870 	DRV_TLV_UNCORRECTABLE_ERROR_STATUS,
12871 	DRV_TLV_UNCORRECTABLE_ERROR_MASK,
12872 	DRV_TLV_CORRECTABLE_ERROR_STATUS,
12873 	DRV_TLV_CORRECTABLE_ERROR_MASK,
12874 	DRV_TLV_PCI_ERRORS_AECC_REGISTER,
12875 	DRV_TLV_TX_QUEUES_EMPTY,
12876 	DRV_TLV_RX_QUEUES_EMPTY,
12877 	DRV_TLV_TX_QUEUES_FULL,
12878 	DRV_TLV_RX_QUEUES_FULL,
12879 	/* Category 29: FC/FCoE Function Data */
12880 	DRV_TLV_FCOE_TX_DESCRIPTOR_QUEUE_AVG_DEPTH,
12881 	DRV_TLV_FCOE_RX_DESCRIPTORS_QUEUE_AVG_DEPTH,
12882 	DRV_TLV_FCOE_RX_FRAMES_RECEIVED,
12883 	DRV_TLV_FCOE_RX_BYTES_RECEIVED,
12884 	DRV_TLV_FCOE_TX_FRAMES_SENT,
12885 	DRV_TLV_FCOE_TX_BYTES_SENT,
12886 	DRV_TLV_CRC_ERROR_COUNT,
12887 	DRV_TLV_CRC_ERROR_1_RECEIVED_SOURCE_FC_ID,
12888 	DRV_TLV_CRC_ERROR_1_TIMESTAMP,
12889 	DRV_TLV_CRC_ERROR_2_RECEIVED_SOURCE_FC_ID,
12890 	DRV_TLV_CRC_ERROR_2_TIMESTAMP,
12891 	DRV_TLV_CRC_ERROR_3_RECEIVED_SOURCE_FC_ID,
12892 	DRV_TLV_CRC_ERROR_3_TIMESTAMP,
12893 	DRV_TLV_CRC_ERROR_4_RECEIVED_SOURCE_FC_ID,
12894 	DRV_TLV_CRC_ERROR_4_TIMESTAMP,
12895 	DRV_TLV_CRC_ERROR_5_RECEIVED_SOURCE_FC_ID,
12896 	DRV_TLV_CRC_ERROR_5_TIMESTAMP,
12897 	DRV_TLV_LOSS_OF_SYNC_ERROR_COUNT,
12898 	DRV_TLV_LOSS_OF_SIGNAL_ERRORS,
12899 	DRV_TLV_PRIMITIVE_SEQUENCE_PROTOCOL_ERROR_COUNT,
12900 	DRV_TLV_DISPARITY_ERROR_COUNT,
12901 	DRV_TLV_CODE_VIOLATION_ERROR_COUNT,
12902 	DRV_TLV_LAST_FLOGI_ISSUED_COMMON_PARAMETERS_WORD_1,
12903 	DRV_TLV_LAST_FLOGI_ISSUED_COMMON_PARAMETERS_WORD_2,
12904 	DRV_TLV_LAST_FLOGI_ISSUED_COMMON_PARAMETERS_WORD_3,
12905 	DRV_TLV_LAST_FLOGI_ISSUED_COMMON_PARAMETERS_WORD_4,
12906 	DRV_TLV_LAST_FLOGI_TIMESTAMP,
12907 	DRV_TLV_LAST_FLOGI_ACC_COMMON_PARAMETERS_WORD_1,
12908 	DRV_TLV_LAST_FLOGI_ACC_COMMON_PARAMETERS_WORD_2,
12909 	DRV_TLV_LAST_FLOGI_ACC_COMMON_PARAMETERS_WORD_3,
12910 	DRV_TLV_LAST_FLOGI_ACC_COMMON_PARAMETERS_WORD_4,
12911 	DRV_TLV_LAST_FLOGI_ACC_TIMESTAMP,
12912 	DRV_TLV_LAST_FLOGI_RJT,
12913 	DRV_TLV_LAST_FLOGI_RJT_TIMESTAMP,
12914 	DRV_TLV_FDISCS_SENT_COUNT,
12915 	DRV_TLV_FDISC_ACCS_RECEIVED,
12916 	DRV_TLV_FDISC_RJTS_RECEIVED,
12917 	DRV_TLV_PLOGI_SENT_COUNT,
12918 	DRV_TLV_PLOGI_ACCS_RECEIVED,
12919 	DRV_TLV_PLOGI_RJTS_RECEIVED,
12920 	DRV_TLV_PLOGI_1_SENT_DESTINATION_FC_ID,
12921 	DRV_TLV_PLOGI_1_TIMESTAMP,
12922 	DRV_TLV_PLOGI_2_SENT_DESTINATION_FC_ID,
12923 	DRV_TLV_PLOGI_2_TIMESTAMP,
12924 	DRV_TLV_PLOGI_3_SENT_DESTINATION_FC_ID,
12925 	DRV_TLV_PLOGI_3_TIMESTAMP,
12926 	DRV_TLV_PLOGI_4_SENT_DESTINATION_FC_ID,
12927 	DRV_TLV_PLOGI_4_TIMESTAMP,
12928 	DRV_TLV_PLOGI_5_SENT_DESTINATION_FC_ID,
12929 	DRV_TLV_PLOGI_5_TIMESTAMP,
12930 	DRV_TLV_PLOGI_1_ACC_RECEIVED_SOURCE_FC_ID,
12931 	DRV_TLV_PLOGI_1_ACC_TIMESTAMP,
12932 	DRV_TLV_PLOGI_2_ACC_RECEIVED_SOURCE_FC_ID,
12933 	DRV_TLV_PLOGI_2_ACC_TIMESTAMP,
12934 	DRV_TLV_PLOGI_3_ACC_RECEIVED_SOURCE_FC_ID,
12935 	DRV_TLV_PLOGI_3_ACC_TIMESTAMP,
12936 	DRV_TLV_PLOGI_4_ACC_RECEIVED_SOURCE_FC_ID,
12937 	DRV_TLV_PLOGI_4_ACC_TIMESTAMP,
12938 	DRV_TLV_PLOGI_5_ACC_RECEIVED_SOURCE_FC_ID,
12939 	DRV_TLV_PLOGI_5_ACC_TIMESTAMP,
12940 	DRV_TLV_LOGOS_ISSUED,
12941 	DRV_TLV_LOGO_ACCS_RECEIVED,
12942 	DRV_TLV_LOGO_RJTS_RECEIVED,
12943 	DRV_TLV_LOGO_1_RECEIVED_SOURCE_FC_ID,
12944 	DRV_TLV_LOGO_1_TIMESTAMP,
12945 	DRV_TLV_LOGO_2_RECEIVED_SOURCE_FC_ID,
12946 	DRV_TLV_LOGO_2_TIMESTAMP,
12947 	DRV_TLV_LOGO_3_RECEIVED_SOURCE_FC_ID,
12948 	DRV_TLV_LOGO_3_TIMESTAMP,
12949 	DRV_TLV_LOGO_4_RECEIVED_SOURCE_FC_ID,
12950 	DRV_TLV_LOGO_4_TIMESTAMP,
12951 	DRV_TLV_LOGO_5_RECEIVED_SOURCE_FC_ID,
12952 	DRV_TLV_LOGO_5_TIMESTAMP,
12953 	DRV_TLV_LOGOS_RECEIVED,
12954 	DRV_TLV_ACCS_ISSUED,
12955 	DRV_TLV_PRLIS_ISSUED,
12956 	DRV_TLV_ACCS_RECEIVED,
12957 	DRV_TLV_ABTS_SENT_COUNT,
12958 	DRV_TLV_ABTS_ACCS_RECEIVED,
12959 	DRV_TLV_ABTS_RJTS_RECEIVED,
12960 	DRV_TLV_ABTS_1_SENT_DESTINATION_FC_ID,
12961 	DRV_TLV_ABTS_1_TIMESTAMP,
12962 	DRV_TLV_ABTS_2_SENT_DESTINATION_FC_ID,
12963 	DRV_TLV_ABTS_2_TIMESTAMP,
12964 	DRV_TLV_ABTS_3_SENT_DESTINATION_FC_ID,
12965 	DRV_TLV_ABTS_3_TIMESTAMP,
12966 	DRV_TLV_ABTS_4_SENT_DESTINATION_FC_ID,
12967 	DRV_TLV_ABTS_4_TIMESTAMP,
12968 	DRV_TLV_ABTS_5_SENT_DESTINATION_FC_ID,
12969 	DRV_TLV_ABTS_5_TIMESTAMP,
12970 	DRV_TLV_RSCNS_RECEIVED,
12971 	DRV_TLV_LAST_RSCN_RECEIVED_N_PORT_1,
12972 	DRV_TLV_LAST_RSCN_RECEIVED_N_PORT_2,
12973 	DRV_TLV_LAST_RSCN_RECEIVED_N_PORT_3,
12974 	DRV_TLV_LAST_RSCN_RECEIVED_N_PORT_4,
12975 	DRV_TLV_LUN_RESETS_ISSUED,
12976 	DRV_TLV_ABORT_TASK_SETS_ISSUED,
12977 	DRV_TLV_TPRLOS_SENT,
12978 	DRV_TLV_NOS_SENT_COUNT,
12979 	DRV_TLV_NOS_RECEIVED_COUNT,
12980 	DRV_TLV_OLS_COUNT,
12981 	DRV_TLV_LR_COUNT,
12982 	DRV_TLV_LRR_COUNT,
12983 	DRV_TLV_LIP_SENT_COUNT,
12984 	DRV_TLV_LIP_RECEIVED_COUNT,
12985 	DRV_TLV_EOFA_COUNT,
12986 	DRV_TLV_EOFNI_COUNT,
12987 	DRV_TLV_SCSI_STATUS_CHECK_CONDITION_COUNT,
12988 	DRV_TLV_SCSI_STATUS_CONDITION_MET_COUNT,
12989 	DRV_TLV_SCSI_STATUS_BUSY_COUNT,
12990 	DRV_TLV_SCSI_STATUS_INTERMEDIATE_COUNT,
12991 	DRV_TLV_SCSI_STATUS_INTERMEDIATE_CONDITION_MET_COUNT,
12992 	DRV_TLV_SCSI_STATUS_RESERVATION_CONFLICT_COUNT,
12993 	DRV_TLV_SCSI_STATUS_TASK_SET_FULL_COUNT,
12994 	DRV_TLV_SCSI_STATUS_ACA_ACTIVE_COUNT,
12995 	DRV_TLV_SCSI_STATUS_TASK_ABORTED_COUNT,
12996 	DRV_TLV_SCSI_CHECK_CONDITION_1_RECEIVED_SK_ASC_ASCQ,
12997 	DRV_TLV_SCSI_CHECK_1_TIMESTAMP,
12998 	DRV_TLV_SCSI_CHECK_CONDITION_2_RECEIVED_SK_ASC_ASCQ,
12999 	DRV_TLV_SCSI_CHECK_2_TIMESTAMP,
13000 	DRV_TLV_SCSI_CHECK_CONDITION_3_RECEIVED_SK_ASC_ASCQ,
13001 	DRV_TLV_SCSI_CHECK_3_TIMESTAMP,
13002 	DRV_TLV_SCSI_CHECK_CONDITION_4_RECEIVED_SK_ASC_ASCQ,
13003 	DRV_TLV_SCSI_CHECK_4_TIMESTAMP,
13004 	DRV_TLV_SCSI_CHECK_CONDITION_5_RECEIVED_SK_ASC_ASCQ,
13005 	DRV_TLV_SCSI_CHECK_5_TIMESTAMP,
13006 	/* Category 30: iSCSI Function Data */
13007 	DRV_TLV_PDU_TX_DESCRIPTOR_QUEUE_AVG_DEPTH,
13008 	DRV_TLV_PDU_RX_DESCRIPTORS_QUEUE_AVG_DEPTH,
13009 	DRV_TLV_ISCSI_PDU_RX_FRAMES_RECEIVED,
13010 	DRV_TLV_ISCSI_PDU_RX_BYTES_RECEIVED,
13011 	DRV_TLV_ISCSI_PDU_TX_FRAMES_SENT,
13012 	DRV_TLV_ISCSI_PDU_TX_BYTES_SENT
13013 };
13014 
13015 struct nvm_cfg_mac_address {
13016 	u32 mac_addr_hi;
13017 #define NVM_CFG_MAC_ADDRESS_HI_MASK	0x0000FFFF
13018 #define NVM_CFG_MAC_ADDRESS_HI_OFFSET	0
13019 	u32 mac_addr_lo;
13020 };
13021 
13022 struct nvm_cfg1_glob {
13023 	u32 generic_cont0;
13024 #define NVM_CFG1_GLOB_MF_MODE_MASK		0x00000FF0
13025 #define NVM_CFG1_GLOB_MF_MODE_OFFSET		4
13026 #define NVM_CFG1_GLOB_MF_MODE_MF_ALLOWED	0x0
13027 #define NVM_CFG1_GLOB_MF_MODE_DEFAULT		0x1
13028 #define NVM_CFG1_GLOB_MF_MODE_SPIO4		0x2
13029 #define NVM_CFG1_GLOB_MF_MODE_NPAR1_0		0x3
13030 #define NVM_CFG1_GLOB_MF_MODE_NPAR1_5		0x4
13031 #define NVM_CFG1_GLOB_MF_MODE_NPAR2_0		0x5
13032 #define NVM_CFG1_GLOB_MF_MODE_BD		0x6
13033 #define NVM_CFG1_GLOB_MF_MODE_UFP		0x7
13034 	u32 engineering_change[3];
13035 	u32 manufacturing_id;
13036 	u32 serial_number[4];
13037 	u32 pcie_cfg;
13038 	u32 mgmt_traffic;
13039 	u32 core_cfg;
13040 #define NVM_CFG1_GLOB_NETWORK_PORT_MODE_MASK		0x000000FF
13041 #define NVM_CFG1_GLOB_NETWORK_PORT_MODE_OFFSET		0
13042 #define NVM_CFG1_GLOB_NETWORK_PORT_MODE_BB_2X40G	0x0
13043 #define NVM_CFG1_GLOB_NETWORK_PORT_MODE_2X50G		0x1
13044 #define NVM_CFG1_GLOB_NETWORK_PORT_MODE_BB_1X100G	0x2
13045 #define NVM_CFG1_GLOB_NETWORK_PORT_MODE_4X10G_F		0x3
13046 #define NVM_CFG1_GLOB_NETWORK_PORT_MODE_BB_4X10G_E	0x4
13047 #define NVM_CFG1_GLOB_NETWORK_PORT_MODE_BB_4X20G	0x5
13048 #define NVM_CFG1_GLOB_NETWORK_PORT_MODE_1X40G		0xB
13049 #define NVM_CFG1_GLOB_NETWORK_PORT_MODE_2X25G		0xC
13050 #define NVM_CFG1_GLOB_NETWORK_PORT_MODE_1X25G		0xD
13051 #define NVM_CFG1_GLOB_NETWORK_PORT_MODE_4X25G		0xE
13052 #define NVM_CFG1_GLOB_NETWORK_PORT_MODE_2X10G		0xF
13053 
13054 	u32 e_lane_cfg1;
13055 	u32 e_lane_cfg2;
13056 	u32 f_lane_cfg1;
13057 	u32 f_lane_cfg2;
13058 	u32 mps10_preemphasis;
13059 	u32 mps10_driver_current;
13060 	u32 mps25_preemphasis;
13061 	u32 mps25_driver_current;
13062 	u32 pci_id;
13063 	u32 pci_subsys_id;
13064 	u32 bar;
13065 	u32 mps10_txfir_main;
13066 	u32 mps10_txfir_post;
13067 	u32 mps25_txfir_main;
13068 	u32 mps25_txfir_post;
13069 	u32 manufacture_ver;
13070 	u32 manufacture_time;
13071 	u32 led_global_settings;
13072 	u32 generic_cont1;
13073 	u32 mbi_version;
13074 #define NVM_CFG1_GLOB_MBI_VERSION_0_MASK		0x000000FF
13075 #define NVM_CFG1_GLOB_MBI_VERSION_0_OFFSET		0
13076 #define NVM_CFG1_GLOB_MBI_VERSION_1_MASK		0x0000FF00
13077 #define NVM_CFG1_GLOB_MBI_VERSION_1_OFFSET		8
13078 #define NVM_CFG1_GLOB_MBI_VERSION_2_MASK		0x00FF0000
13079 #define NVM_CFG1_GLOB_MBI_VERSION_2_OFFSET		16
13080 	u32 mbi_date;
13081 	u32 misc_sig;
13082 	u32 device_capabilities;
13083 #define NVM_CFG1_GLOB_DEVICE_CAPABILITIES_ETHERNET	0x1
13084 #define NVM_CFG1_GLOB_DEVICE_CAPABILITIES_FCOE		0x2
13085 #define NVM_CFG1_GLOB_DEVICE_CAPABILITIES_ISCSI		0x4
13086 #define NVM_CFG1_GLOB_DEVICE_CAPABILITIES_ROCE		0x8
13087 	u32 power_dissipated;
13088 	u32 power_consumed;
13089 	u32 efi_version;
13090 	u32 multi_network_modes_capability;
13091 	u32 reserved[41];
13092 };
13093 
13094 struct nvm_cfg1_path {
13095 	u32 reserved[30];
13096 };
13097 
13098 struct nvm_cfg1_port {
13099 	u32 reserved__m_relocated_to_option_123;
13100 	u32 reserved__m_relocated_to_option_124;
13101 	u32 generic_cont0;
13102 #define NVM_CFG1_PORT_DCBX_MODE_MASK				0x000F0000
13103 #define NVM_CFG1_PORT_DCBX_MODE_OFFSET				16
13104 #define NVM_CFG1_PORT_DCBX_MODE_DISABLED			0x0
13105 #define NVM_CFG1_PORT_DCBX_MODE_IEEE				0x1
13106 #define NVM_CFG1_PORT_DCBX_MODE_CEE				0x2
13107 #define NVM_CFG1_PORT_DCBX_MODE_DYNAMIC				0x3
13108 #define NVM_CFG1_PORT_DEFAULT_ENABLED_PROTOCOLS_MASK		0x00F00000
13109 #define NVM_CFG1_PORT_DEFAULT_ENABLED_PROTOCOLS_OFFSET		20
13110 #define NVM_CFG1_PORT_DEFAULT_ENABLED_PROTOCOLS_ETHERNET	0x1
13111 #define NVM_CFG1_PORT_DEFAULT_ENABLED_PROTOCOLS_FCOE		0x2
13112 #define NVM_CFG1_PORT_DEFAULT_ENABLED_PROTOCOLS_ISCSI		0x4
13113 	u32 pcie_cfg;
13114 	u32 features;
13115 	u32 speed_cap_mask;
13116 #define NVM_CFG1_PORT_DRV_SPEED_CAPABILITY_MASK_MASK		0x0000FFFF
13117 #define NVM_CFG1_PORT_DRV_SPEED_CAPABILITY_MASK_OFFSET		0
13118 #define NVM_CFG1_PORT_DRV_SPEED_CAPABILITY_MASK_1G		0x1
13119 #define NVM_CFG1_PORT_DRV_SPEED_CAPABILITY_MASK_10G		0x2
13120 #define NVM_CFG1_PORT_DRV_SPEED_CAPABILITY_MASK_20G             0x4
13121 #define NVM_CFG1_PORT_DRV_SPEED_CAPABILITY_MASK_25G		0x8
13122 #define NVM_CFG1_PORT_DRV_SPEED_CAPABILITY_MASK_40G		0x10
13123 #define NVM_CFG1_PORT_DRV_SPEED_CAPABILITY_MASK_50G		0x20
13124 #define NVM_CFG1_PORT_DRV_SPEED_CAPABILITY_MASK_BB_100G		0x40
13125 	u32 link_settings;
13126 #define NVM_CFG1_PORT_DRV_LINK_SPEED_MASK			0x0000000F
13127 #define NVM_CFG1_PORT_DRV_LINK_SPEED_OFFSET			0
13128 #define NVM_CFG1_PORT_DRV_LINK_SPEED_AUTONEG			0x0
13129 #define NVM_CFG1_PORT_DRV_LINK_SPEED_1G				0x1
13130 #define NVM_CFG1_PORT_DRV_LINK_SPEED_10G			0x2
13131 #define NVM_CFG1_PORT_DRV_LINK_SPEED_20G                        0x3
13132 #define NVM_CFG1_PORT_DRV_LINK_SPEED_25G			0x4
13133 #define NVM_CFG1_PORT_DRV_LINK_SPEED_40G			0x5
13134 #define NVM_CFG1_PORT_DRV_LINK_SPEED_50G			0x6
13135 #define NVM_CFG1_PORT_DRV_LINK_SPEED_BB_100G			0x7
13136 #define NVM_CFG1_PORT_DRV_LINK_SPEED_SMARTLINQ			0x8
13137 #define NVM_CFG1_PORT_DRV_FLOW_CONTROL_MASK			0x00000070
13138 #define NVM_CFG1_PORT_DRV_FLOW_CONTROL_OFFSET			4
13139 #define NVM_CFG1_PORT_DRV_FLOW_CONTROL_AUTONEG			0x1
13140 #define NVM_CFG1_PORT_DRV_FLOW_CONTROL_RX			0x2
13141 #define NVM_CFG1_PORT_DRV_FLOW_CONTROL_TX			0x4
13142 	u32 phy_cfg;
13143 	u32 mgmt_traffic;
13144 
13145 	u32 ext_phy;
13146 	/* EEE power saving mode */
13147 #define NVM_CFG1_PORT_EEE_POWER_SAVING_MODE_MASK		0x00FF0000
13148 #define NVM_CFG1_PORT_EEE_POWER_SAVING_MODE_OFFSET		16
13149 #define NVM_CFG1_PORT_EEE_POWER_SAVING_MODE_DISABLED		0x0
13150 #define NVM_CFG1_PORT_EEE_POWER_SAVING_MODE_BALANCED		0x1
13151 #define NVM_CFG1_PORT_EEE_POWER_SAVING_MODE_AGGRESSIVE		0x2
13152 #define NVM_CFG1_PORT_EEE_POWER_SAVING_MODE_LOW_LATENCY		0x3
13153 
13154 	u32 mba_cfg1;
13155 	u32 mba_cfg2;
13156 	u32 vf_cfg;
13157 	struct nvm_cfg_mac_address lldp_mac_address;
13158 	u32 led_port_settings;
13159 	u32 transceiver_00;
13160 	u32 device_ids;
13161 	u32 board_cfg;
13162 #define NVM_CFG1_PORT_PORT_TYPE_MASK                            0x000000FF
13163 #define NVM_CFG1_PORT_PORT_TYPE_OFFSET                          0
13164 #define NVM_CFG1_PORT_PORT_TYPE_UNDEFINED                       0x0
13165 #define NVM_CFG1_PORT_PORT_TYPE_MODULE                          0x1
13166 #define NVM_CFG1_PORT_PORT_TYPE_BACKPLANE                       0x2
13167 #define NVM_CFG1_PORT_PORT_TYPE_EXT_PHY                         0x3
13168 #define NVM_CFG1_PORT_PORT_TYPE_MODULE_SLAVE                    0x4
13169 	u32 mnm_10g_cap;
13170 	u32 mnm_10g_ctrl;
13171 	u32 mnm_10g_misc;
13172 	u32 mnm_25g_cap;
13173 	u32 mnm_25g_ctrl;
13174 	u32 mnm_25g_misc;
13175 	u32 mnm_40g_cap;
13176 	u32 mnm_40g_ctrl;
13177 	u32 mnm_40g_misc;
13178 	u32 mnm_50g_cap;
13179 	u32 mnm_50g_ctrl;
13180 	u32 mnm_50g_misc;
13181 	u32 mnm_100g_cap;
13182 	u32 mnm_100g_ctrl;
13183 	u32 mnm_100g_misc;
13184 	u32 reserved[116];
13185 };
13186 
13187 struct nvm_cfg1_func {
13188 	struct nvm_cfg_mac_address mac_address;
13189 	u32 rsrv1;
13190 	u32 rsrv2;
13191 	u32 device_id;
13192 	u32 cmn_cfg;
13193 	u32 pci_cfg;
13194 	struct nvm_cfg_mac_address fcoe_node_wwn_mac_addr;
13195 	struct nvm_cfg_mac_address fcoe_port_wwn_mac_addr;
13196 	u32 preboot_generic_cfg;
13197 	u32 reserved[8];
13198 };
13199 
13200 struct nvm_cfg1 {
13201 	struct nvm_cfg1_glob glob;
13202 	struct nvm_cfg1_path path[MCP_GLOB_PATH_MAX];
13203 	struct nvm_cfg1_port port[MCP_GLOB_PORT_MAX];
13204 	struct nvm_cfg1_func func[MCP_GLOB_FUNC_MAX];
13205 };
13206 
13207 enum spad_sections {
13208 	SPAD_SECTION_TRACE,
13209 	SPAD_SECTION_NVM_CFG,
13210 	SPAD_SECTION_PUBLIC,
13211 	SPAD_SECTION_PRIVATE,
13212 	SPAD_SECTION_MAX
13213 };
13214 
13215 #define MCP_TRACE_SIZE          2048	/* 2kb */
13216 
13217 /* This section is located at a fixed location in the beginning of the
13218  * scratchpad, to ensure that the MCP trace is not run over during MFW upgrade.
13219  * All the rest of data has a floating location which differs from version to
13220  * version, and is pointed by the mcp_meta_data below.
13221  * Moreover, the spad_layout section is part of the MFW firmware, and is loaded
13222  * with it from nvram in order to clear this portion.
13223  */
13224 struct static_init {
13225 	u32 num_sections;
13226 	offsize_t sections[SPAD_SECTION_MAX];
13227 #define SECTION(_sec_) (*((offsize_t *)(STRUCT_OFFSET(sections[_sec_]))))
13228 
13229 	struct mcp_trace trace;
13230 #define MCP_TRACE_P ((struct mcp_trace *)(STRUCT_OFFSET(trace)))
13231 	u8 trace_buffer[MCP_TRACE_SIZE];
13232 #define MCP_TRACE_BUF ((u8 *)(STRUCT_OFFSET(trace_buffer)))
13233 	/* running_mfw has the same definition as in nvm_map.h.
13234 	 * This bit indicate both the running dir, and the running bundle.
13235 	 * It is set once when the LIM is loaded.
13236 	 */
13237 	u32 running_mfw;
13238 #define RUNNING_MFW (*((u32 *)(STRUCT_OFFSET(running_mfw))))
13239 	u32 build_time;
13240 #define MFW_BUILD_TIME (*((u32 *)(STRUCT_OFFSET(build_time))))
13241 	u32 reset_type;
13242 #define RESET_TYPE (*((u32 *)(STRUCT_OFFSET(reset_type))))
13243 	u32 mfw_secure_mode;
13244 #define MFW_SECURE_MODE (*((u32 *)(STRUCT_OFFSET(mfw_secure_mode))))
13245 	u16 pme_status_pf_bitmap;
13246 #define PME_STATUS_PF_BITMAP (*((u16 *)(STRUCT_OFFSET(pme_status_pf_bitmap))))
13247 	u16 pme_enable_pf_bitmap;
13248 #define PME_ENABLE_PF_BITMAP (*((u16 *)(STRUCT_OFFSET(pme_enable_pf_bitmap))))
13249 	u32 mim_nvm_addr;
13250 	u32 mim_start_addr;
13251 	u32 ah_pcie_link_params;
13252 #define AH_PCIE_LINK_PARAMS_LINK_SPEED_MASK     (0x000000ff)
13253 #define AH_PCIE_LINK_PARAMS_LINK_SPEED_SHIFT    (0)
13254 #define AH_PCIE_LINK_PARAMS_LINK_WIDTH_MASK     (0x0000ff00)
13255 #define AH_PCIE_LINK_PARAMS_LINK_WIDTH_SHIFT    (8)
13256 #define AH_PCIE_LINK_PARAMS_ASPM_MODE_MASK      (0x00ff0000)
13257 #define AH_PCIE_LINK_PARAMS_ASPM_MODE_SHIFT     (16)
13258 #define AH_PCIE_LINK_PARAMS_ASPM_CAP_MASK       (0xff000000)
13259 #define AH_PCIE_LINK_PARAMS_ASPM_CAP_SHIFT      (24)
13260 #define AH_PCIE_LINK_PARAMS (*((u32 *)(STRUCT_OFFSET(ah_pcie_link_params))))
13261 
13262 	u32 rsrv_persist[5];	/* Persist reserved for MFW upgrades */
13263 };
13264 
13265 #define NVM_MAGIC_VALUE		0x669955aa
13266 
13267 enum nvm_image_type {
13268 	NVM_TYPE_TIM1 = 0x01,
13269 	NVM_TYPE_TIM2 = 0x02,
13270 	NVM_TYPE_MIM1 = 0x03,
13271 	NVM_TYPE_MIM2 = 0x04,
13272 	NVM_TYPE_MBA = 0x05,
13273 	NVM_TYPE_MODULES_PN = 0x06,
13274 	NVM_TYPE_VPD = 0x07,
13275 	NVM_TYPE_MFW_TRACE1 = 0x08,
13276 	NVM_TYPE_MFW_TRACE2 = 0x09,
13277 	NVM_TYPE_NVM_CFG1 = 0x0a,
13278 	NVM_TYPE_L2B = 0x0b,
13279 	NVM_TYPE_DIR1 = 0x0c,
13280 	NVM_TYPE_EAGLE_FW1 = 0x0d,
13281 	NVM_TYPE_FALCON_FW1 = 0x0e,
13282 	NVM_TYPE_PCIE_FW1 = 0x0f,
13283 	NVM_TYPE_HW_SET = 0x10,
13284 	NVM_TYPE_LIM = 0x11,
13285 	NVM_TYPE_AVS_FW1 = 0x12,
13286 	NVM_TYPE_DIR2 = 0x13,
13287 	NVM_TYPE_CCM = 0x14,
13288 	NVM_TYPE_EAGLE_FW2 = 0x15,
13289 	NVM_TYPE_FALCON_FW2 = 0x16,
13290 	NVM_TYPE_PCIE_FW2 = 0x17,
13291 	NVM_TYPE_AVS_FW2 = 0x18,
13292 	NVM_TYPE_INIT_HW = 0x19,
13293 	NVM_TYPE_DEFAULT_CFG = 0x1a,
13294 	NVM_TYPE_MDUMP = 0x1b,
13295 	NVM_TYPE_META = 0x1c,
13296 	NVM_TYPE_ISCSI_CFG = 0x1d,
13297 	NVM_TYPE_FCOE_CFG = 0x1f,
13298 	NVM_TYPE_ETH_PHY_FW1 = 0x20,
13299 	NVM_TYPE_ETH_PHY_FW2 = 0x21,
13300 	NVM_TYPE_BDN = 0x22,
13301 	NVM_TYPE_8485X_PHY_FW = 0x23,
13302 	NVM_TYPE_PUB_KEY = 0x24,
13303 	NVM_TYPE_RECOVERY = 0x25,
13304 	NVM_TYPE_PLDM = 0x26,
13305 	NVM_TYPE_UPK1 = 0x27,
13306 	NVM_TYPE_UPK2 = 0x28,
13307 	NVM_TYPE_MASTER_KC = 0x29,
13308 	NVM_TYPE_BACKUP_KC = 0x2a,
13309 	NVM_TYPE_HW_DUMP = 0x2b,
13310 	NVM_TYPE_HW_DUMP_OUT = 0x2c,
13311 	NVM_TYPE_BIN_NVM_META = 0x30,
13312 	NVM_TYPE_ROM_TEST = 0xf0,
13313 	NVM_TYPE_88X33X0_PHY_FW = 0x31,
13314 	NVM_TYPE_88X33X0_PHY_SLAVE_FW = 0x32,
13315 	NVM_TYPE_MAX,
13316 };
13317 
13318 #define DIR_ID_1    (0)
13319 
13320 #endif
13321