blob: 7f5ec42dde484f3c7f99d2cac5600cf286292eb9 [file] [log] [blame]
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02001/* QLogic qed NIC Driver
Mintz, Yuvale8f1cb52017-01-01 13:57:00 +02002 * Copyright (c) 2015-2017 QLogic Corporation
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02003 *
Mintz, Yuvale8f1cb52017-01-01 13:57:00 +02004 * 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.
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020031 */
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>
Yuval Mintz7a9b6b82016-06-03 14:35:33 +030044#include <linux/qed/storage_common.h>
45#include <linux/qed/tcp_common.h>
Arun Easi1e128c82017-02-15 06:28:22 -080046#include <linux/qed/fcoe_common.h>
Yuval Mintz25c089d2015-10-26 11:02:26 +020047#include <linux/qed/eth_common.h>
Yuval Mintz7a9b6b82016-06-03 14:35:33 +030048#include <linux/qed/iscsi_common.h>
Kalderon, Michal67b40dc2017-07-02 10:29:22 +030049#include <linux/qed/iwarp_common.h>
Yuval Mintz7a9b6b82016-06-03 14:35:33 +030050#include <linux/qed/rdma_common.h>
51#include <linux/qed/roce_common.h>
Arun Easi1e128c82017-02-15 06:28:22 -080052#include <linux/qed/qed_fcoe_if.h>
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020053
54struct qed_hwfn;
55struct qed_ptt;
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020056
Tomer Tayara2e76992017-12-27 19:30:05 +020057/* Opcodes for the event ring */
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020058enum common_event_opcode {
59 COMMON_EVENT_PF_START,
60 COMMON_EVENT_PF_STOP,
Yuval Mintz1408cc1f2016-05-11 16:36:14 +030061 COMMON_EVENT_VF_START,
Yuval Mintz0b55e272016-05-11 16:36:15 +030062 COMMON_EVENT_VF_STOP,
Yuval Mintz37bff2b2016-05-11 16:36:13 +030063 COMMON_EVENT_VF_PF_CHANNEL,
Yuval Mintz351a4ded2016-06-02 10:23:29 +030064 COMMON_EVENT_VF_FLR,
65 COMMON_EVENT_PF_UPDATE,
66 COMMON_EVENT_MALICIOUS_VF,
67 COMMON_EVENT_RL_UPDATE,
Yuval Mintzfc48b7a2016-02-15 13:22:35 -050068 COMMON_EVENT_EMPTY,
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020069 MAX_COMMON_EVENT_OPCODE
70};
71
72/* Common Ramrod Command IDs */
73enum common_ramrod_cmd_id {
74 COMMON_RAMROD_UNUSED,
Yuval Mintz351a4ded2016-06-02 10:23:29 +030075 COMMON_RAMROD_PF_START,
76 COMMON_RAMROD_PF_STOP,
Yuval Mintz1408cc1f2016-05-11 16:36:14 +030077 COMMON_RAMROD_VF_START,
Yuval Mintz0b55e272016-05-11 16:36:15 +030078 COMMON_RAMROD_VF_STOP,
Manish Chopra464f6642016-04-14 01:38:29 -040079 COMMON_RAMROD_PF_UPDATE,
Yuval Mintz351a4ded2016-06-02 10:23:29 +030080 COMMON_RAMROD_RL_UPDATE,
Yuval Mintzfc48b7a2016-02-15 13:22:35 -050081 COMMON_RAMROD_EMPTY,
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020082 MAX_COMMON_RAMROD_CMD_ID
83};
84
Tomer Tayara2e76992017-12-27 19:30:05 +020085/* How ll2 should deal with packet upon errors */
86enum 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 */
94enum 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,
Tomer Tayarda090912017-12-27 19:30:07 +0200100 CORE_EVENT_TX_QUEUE_UPDATE,
Tomer Tayara2e76992017-12-27 19:30:05 +0200101 MAX_CORE_EVENT_OPCODE
102};
103
104/* The L4 pseudo checksum mode for Core */
105enum core_l4_pseudo_checksum_mode {
106 CORE_L4_PSEUDO_CSUM_CORRECT_LENGTH,
107 CORE_L4_PSEUDO_CSUM_ZERO_LENGTH,
108 MAX_CORE_L4_PSEUDO_CHECKSUM_MODE
109};
110
111/* Light-L2 RX Producers in Tstorm RAM */
112struct core_ll2_port_stats {
113 struct regpair gsi_invalid_hdr;
114 struct regpair gsi_invalid_pkt_length;
115 struct regpair gsi_unsupported_pkt_typ;
116 struct regpair gsi_crcchksm_error;
117};
118
119/* Ethernet TX Per Queue Stats */
120struct core_ll2_pstorm_per_queue_stat {
121 struct regpair sent_ucast_bytes;
122 struct regpair sent_mcast_bytes;
123 struct regpair sent_bcast_bytes;
124 struct regpair sent_ucast_pkts;
125 struct regpair sent_mcast_pkts;
126 struct regpair sent_bcast_pkts;
127};
128
129/* Light-L2 RX Producers in Tstorm RAM */
130struct core_ll2_rx_prod {
131 __le16 bd_prod;
132 __le16 cqe_prod;
133 __le32 reserved;
134};
135
136struct core_ll2_tstorm_per_queue_stat {
137 struct regpair packet_too_big_discard;
138 struct regpair no_buff_discard;
139};
140
141struct core_ll2_ustorm_per_queue_stat {
142 struct regpair rcv_ucast_bytes;
143 struct regpair rcv_mcast_bytes;
144 struct regpair rcv_bcast_bytes;
145 struct regpair rcv_ucast_pkts;
146 struct regpair rcv_mcast_pkts;
147 struct regpair rcv_bcast_pkts;
148};
149
150/* Core Ramrod Command IDs (light L2) */
151enum core_ramrod_cmd_id {
152 CORE_RAMROD_UNUSED,
153 CORE_RAMROD_RX_QUEUE_START,
154 CORE_RAMROD_TX_QUEUE_START,
155 CORE_RAMROD_RX_QUEUE_STOP,
156 CORE_RAMROD_TX_QUEUE_STOP,
157 CORE_RAMROD_RX_QUEUE_FLUSH,
Tomer Tayarda090912017-12-27 19:30:07 +0200158 CORE_RAMROD_TX_QUEUE_UPDATE,
Tomer Tayara2e76992017-12-27 19:30:05 +0200159 MAX_CORE_RAMROD_CMD_ID
160};
161
162/* Core RX CQE Type for Light L2 */
163enum core_roce_flavor_type {
164 CORE_ROCE,
165 CORE_RROCE,
166 MAX_CORE_ROCE_FLAVOR_TYPE
167};
168
169/* Specifies how ll2 should deal with packets errors: packet_too_big and
170 * no_buff.
171 */
172struct core_rx_action_on_error {
173 u8 error_type;
174#define CORE_RX_ACTION_ON_ERROR_PACKET_TOO_BIG_MASK 0x3
175#define CORE_RX_ACTION_ON_ERROR_PACKET_TOO_BIG_SHIFT 0
176#define CORE_RX_ACTION_ON_ERROR_NO_BUFF_MASK 0x3
177#define CORE_RX_ACTION_ON_ERROR_NO_BUFF_SHIFT 2
178#define CORE_RX_ACTION_ON_ERROR_RESERVED_MASK 0xF
179#define CORE_RX_ACTION_ON_ERROR_RESERVED_SHIFT 4
180};
181
182/* Core RX BD for Light L2 */
183struct core_rx_bd {
184 struct regpair addr;
185 __le16 reserved[4];
186};
187
188/* Core RX CM offload BD for Light L2 */
189struct core_rx_bd_with_buff_len {
190 struct regpair addr;
191 __le16 buff_length;
192 __le16 reserved[3];
193};
194
195/* Core RX CM offload BD for Light L2 */
196union core_rx_bd_union {
197 struct core_rx_bd rx_bd;
198 struct core_rx_bd_with_buff_len rx_bd_with_len;
199};
200
201/* Opaque Data for Light L2 RX CQE */
202struct core_rx_cqe_opaque_data {
203 __le32 data[2];
204};
205
206/* Core RX CQE Type for Light L2 */
207enum core_rx_cqe_type {
208 CORE_RX_CQE_ILLEGAL_TYPE,
209 CORE_RX_CQE_TYPE_REGULAR,
210 CORE_RX_CQE_TYPE_GSI_OFFLOAD,
211 CORE_RX_CQE_TYPE_SLOW_PATH,
212 MAX_CORE_RX_CQE_TYPE
213};
214
215/* Core RX CQE for Light L2 */
216struct core_rx_fast_path_cqe {
217 u8 type;
218 u8 placement_offset;
219 struct parsing_and_err_flags parse_flags;
220 __le16 packet_length;
221 __le16 vlan;
222 struct core_rx_cqe_opaque_data opaque_data;
223 struct parsing_err_flags err_flags;
224 __le16 reserved0;
225 __le32 reserved1[3];
226};
227
228/* Core Rx CM offload CQE */
229struct core_rx_gsi_offload_cqe {
230 u8 type;
231 u8 data_length_error;
232 struct parsing_and_err_flags parse_flags;
233 __le16 data_length;
234 __le16 vlan;
235 __le32 src_mac_addrhi;
236 __le16 src_mac_addrlo;
237 __le16 qp_id;
Tomer Tayarda090912017-12-27 19:30:07 +0200238 __le32 src_qp;
239 __le32 reserved[3];
Tomer Tayara2e76992017-12-27 19:30:05 +0200240};
241
242/* Core RX CQE for Light L2 */
243struct core_rx_slow_path_cqe {
244 u8 type;
245 u8 ramrod_cmd_id;
246 __le16 echo;
247 struct core_rx_cqe_opaque_data opaque_data;
248 __le32 reserved1[5];
249};
250
251/* Core RX CM offload BD for Light L2 */
252union core_rx_cqe_union {
253 struct core_rx_fast_path_cqe rx_cqe_fp;
254 struct core_rx_gsi_offload_cqe rx_cqe_gsi;
255 struct core_rx_slow_path_cqe rx_cqe_sp;
256};
257
258/* Ramrod data for rx queue start ramrod */
259struct core_rx_start_ramrod_data {
260 struct regpair bd_base;
261 struct regpair cqe_pbl_addr;
262 __le16 mtu;
263 __le16 sb_id;
264 u8 sb_index;
265 u8 complete_cqe_flg;
266 u8 complete_event_flg;
267 u8 drop_ttl0_flg;
268 __le16 num_of_pbl_pages;
Tomer Tayarda090912017-12-27 19:30:07 +0200269 u8 inner_vlan_stripping_en;
270 u8 report_outer_vlan;
Tomer Tayara2e76992017-12-27 19:30:05 +0200271 u8 queue_id;
272 u8 main_func_queue;
273 u8 mf_si_bcast_accept_all;
274 u8 mf_si_mcast_accept_all;
275 struct core_rx_action_on_error action_on_error;
276 u8 gsi_offload_flag;
Tomer Tayarda090912017-12-27 19:30:07 +0200277 u8 reserved[6];
Tomer Tayara2e76992017-12-27 19:30:05 +0200278};
279
280/* Ramrod data for rx queue stop ramrod */
281struct core_rx_stop_ramrod_data {
282 u8 complete_cqe_flg;
283 u8 complete_event_flg;
284 u8 queue_id;
285 u8 reserved1;
286 __le16 reserved2[2];
287};
288
289/* Flags for Core TX BD */
290struct core_tx_bd_data {
291 __le16 as_bitfield;
292#define CORE_TX_BD_DATA_FORCE_VLAN_MODE_MASK 0x1
293#define CORE_TX_BD_DATA_FORCE_VLAN_MODE_SHIFT 0
294#define CORE_TX_BD_DATA_VLAN_INSERTION_MASK 0x1
295#define CORE_TX_BD_DATA_VLAN_INSERTION_SHIFT 1
296#define CORE_TX_BD_DATA_START_BD_MASK 0x1
297#define CORE_TX_BD_DATA_START_BD_SHIFT 2
298#define CORE_TX_BD_DATA_IP_CSUM_MASK 0x1
299#define CORE_TX_BD_DATA_IP_CSUM_SHIFT 3
300#define CORE_TX_BD_DATA_L4_CSUM_MASK 0x1
301#define CORE_TX_BD_DATA_L4_CSUM_SHIFT 4
302#define CORE_TX_BD_DATA_IPV6_EXT_MASK 0x1
303#define CORE_TX_BD_DATA_IPV6_EXT_SHIFT 5
304#define CORE_TX_BD_DATA_L4_PROTOCOL_MASK 0x1
305#define CORE_TX_BD_DATA_L4_PROTOCOL_SHIFT 6
306#define CORE_TX_BD_DATA_L4_PSEUDO_CSUM_MODE_MASK 0x1
307#define CORE_TX_BD_DATA_L4_PSEUDO_CSUM_MODE_SHIFT 7
308#define CORE_TX_BD_DATA_NBDS_MASK 0xF
309#define CORE_TX_BD_DATA_NBDS_SHIFT 8
310#define CORE_TX_BD_DATA_ROCE_FLAV_MASK 0x1
311#define CORE_TX_BD_DATA_ROCE_FLAV_SHIFT 12
312#define CORE_TX_BD_DATA_IP_LEN_MASK 0x1
313#define CORE_TX_BD_DATA_IP_LEN_SHIFT 13
Tomer Tayarda090912017-12-27 19:30:07 +0200314#define CORE_TX_BD_DATA_DISABLE_STAG_INSERTION_MASK 0x1
315#define CORE_TX_BD_DATA_DISABLE_STAG_INSERTION_SHIFT 14
316#define CORE_TX_BD_DATA_RESERVED0_MASK 0x1
317#define CORE_TX_BD_DATA_RESERVED0_SHIFT 15
Tomer Tayara2e76992017-12-27 19:30:05 +0200318};
319
320/* Core TX BD for Light L2 */
321struct core_tx_bd {
322 struct regpair addr;
323 __le16 nbytes;
324 __le16 nw_vlan_or_lb_echo;
325 struct core_tx_bd_data bd_data;
326 __le16 bitfield1;
327#define CORE_TX_BD_L4_HDR_OFFSET_W_MASK 0x3FFF
328#define CORE_TX_BD_L4_HDR_OFFSET_W_SHIFT 0
329#define CORE_TX_BD_TX_DST_MASK 0x3
330#define CORE_TX_BD_TX_DST_SHIFT 14
331};
332
333/* Light L2 TX Destination */
334enum core_tx_dest {
335 CORE_TX_DEST_NW,
336 CORE_TX_DEST_LB,
337 CORE_TX_DEST_RESERVED,
338 CORE_TX_DEST_DROP,
339 MAX_CORE_TX_DEST
340};
341
342/* Ramrod data for tx queue start ramrod */
343struct core_tx_start_ramrod_data {
344 struct regpair pbl_base_addr;
345 __le16 mtu;
346 __le16 sb_id;
347 u8 sb_index;
348 u8 stats_en;
349 u8 stats_id;
350 u8 conn_type;
351 __le16 pbl_size;
352 __le16 qm_pq_id;
353 u8 gsi_offload_flag;
354 u8 resrved[3];
355};
356
357/* Ramrod data for tx queue stop ramrod */
358struct core_tx_stop_ramrod_data {
359 __le32 reserved0[2];
360};
361
Tomer Tayarda090912017-12-27 19:30:07 +0200362/* Ramrod data for tx queue update ramrod */
363struct core_tx_update_ramrod_data {
364 u8 update_qm_pq_id_flg;
365 u8 reserved0;
366 __le16 qm_pq_id;
367 __le32 reserved1[1];
368};
369
Tomer Tayara2e76992017-12-27 19:30:05 +0200370/* Enum flag for what type of dcb data to update */
371enum dcb_dscp_update_mode {
372 DONT_UPDATE_DCB_DSCP,
373 UPDATE_DCB,
374 UPDATE_DSCP,
375 UPDATE_DCB_DSCP,
376 MAX_DCB_DSCP_UPDATE_MODE
377};
378
Yuval Mintzfe56b9e2015-10-26 11:02:25 +0200379/* The core storm context for the Ystorm */
380struct ystorm_core_conn_st_ctx {
381 __le32 reserved[4];
382};
383
384/* The core storm context for the Pstorm */
385struct pstorm_core_conn_st_ctx {
386 __le32 reserved[4];
387};
388
389/* Core Slowpath Connection storm context of Xstorm */
390struct xstorm_core_conn_st_ctx {
Yuval Mintz351a4ded2016-06-02 10:23:29 +0300391 __le32 spq_base_lo;
392 __le32 spq_base_hi;
393 struct regpair consolid_base_addr;
394 __le16 spq_cons;
395 __le16 consolid_cons;
396 __le32 reserved0[55];
Yuval Mintzfe56b9e2015-10-26 11:02:25 +0200397};
398
Tomer Tayar21dd79e2017-12-27 19:30:06 +0200399struct e4_xstorm_core_conn_ag_ctx {
Yuval Mintz351a4ded2016-06-02 10:23:29 +0300400 u8 reserved0;
Tomer Tayarda090912017-12-27 19:30:07 +0200401 u8 state;
Yuval Mintz351a4ded2016-06-02 10:23:29 +0300402 u8 flags0;
Tomer Tayar21dd79e2017-12-27 19:30:06 +0200403#define E4_XSTORM_CORE_CONN_AG_CTX_EXIST_IN_QM0_MASK 0x1
404#define E4_XSTORM_CORE_CONN_AG_CTX_EXIST_IN_QM0_SHIFT 0
405#define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED1_MASK 0x1
406#define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED1_SHIFT 1
407#define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED2_MASK 0x1
408#define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED2_SHIFT 2
409#define E4_XSTORM_CORE_CONN_AG_CTX_EXIST_IN_QM3_MASK 0x1
410#define E4_XSTORM_CORE_CONN_AG_CTX_EXIST_IN_QM3_SHIFT 3
411#define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED3_MASK 0x1
412#define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED3_SHIFT 4
413#define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED4_MASK 0x1
414#define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED4_SHIFT 5
415#define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED5_MASK 0x1
416#define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED5_SHIFT 6
417#define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED6_MASK 0x1
418#define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED6_SHIFT 7
Yuval Mintzfe56b9e2015-10-26 11:02:25 +0200419 u8 flags1;
Tomer Tayar21dd79e2017-12-27 19:30:06 +0200420#define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED7_MASK 0x1
421#define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED7_SHIFT 0
422#define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED8_MASK 0x1
423#define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED8_SHIFT 1
424#define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED9_MASK 0x1
425#define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED9_SHIFT 2
426#define E4_XSTORM_CORE_CONN_AG_CTX_BIT11_MASK 0x1
427#define E4_XSTORM_CORE_CONN_AG_CTX_BIT11_SHIFT 3
428#define E4_XSTORM_CORE_CONN_AG_CTX_BIT12_MASK 0x1
429#define E4_XSTORM_CORE_CONN_AG_CTX_BIT12_SHIFT 4
430#define E4_XSTORM_CORE_CONN_AG_CTX_BIT13_MASK 0x1
431#define E4_XSTORM_CORE_CONN_AG_CTX_BIT13_SHIFT 5
432#define E4_XSTORM_CORE_CONN_AG_CTX_TX_RULE_ACTIVE_MASK 0x1
433#define E4_XSTORM_CORE_CONN_AG_CTX_TX_RULE_ACTIVE_SHIFT 6
434#define E4_XSTORM_CORE_CONN_AG_CTX_DQ_CF_ACTIVE_MASK 0x1
435#define E4_XSTORM_CORE_CONN_AG_CTX_DQ_CF_ACTIVE_SHIFT 7
Yuval Mintzfe56b9e2015-10-26 11:02:25 +0200436 u8 flags2;
Tomer Tayar21dd79e2017-12-27 19:30:06 +0200437#define E4_XSTORM_CORE_CONN_AG_CTX_CF0_MASK 0x3
438#define E4_XSTORM_CORE_CONN_AG_CTX_CF0_SHIFT 0
439#define E4_XSTORM_CORE_CONN_AG_CTX_CF1_MASK 0x3
440#define E4_XSTORM_CORE_CONN_AG_CTX_CF1_SHIFT 2
441#define E4_XSTORM_CORE_CONN_AG_CTX_CF2_MASK 0x3
442#define E4_XSTORM_CORE_CONN_AG_CTX_CF2_SHIFT 4
443#define E4_XSTORM_CORE_CONN_AG_CTX_CF3_MASK 0x3
444#define E4_XSTORM_CORE_CONN_AG_CTX_CF3_SHIFT 6
Yuval Mintzfe56b9e2015-10-26 11:02:25 +0200445 u8 flags3;
Tomer Tayar21dd79e2017-12-27 19:30:06 +0200446#define E4_XSTORM_CORE_CONN_AG_CTX_CF4_MASK 0x3
447#define E4_XSTORM_CORE_CONN_AG_CTX_CF4_SHIFT 0
448#define E4_XSTORM_CORE_CONN_AG_CTX_CF5_MASK 0x3
449#define E4_XSTORM_CORE_CONN_AG_CTX_CF5_SHIFT 2
450#define E4_XSTORM_CORE_CONN_AG_CTX_CF6_MASK 0x3
451#define E4_XSTORM_CORE_CONN_AG_CTX_CF6_SHIFT 4
452#define E4_XSTORM_CORE_CONN_AG_CTX_CF7_MASK 0x3
453#define E4_XSTORM_CORE_CONN_AG_CTX_CF7_SHIFT 6
Yuval Mintzfe56b9e2015-10-26 11:02:25 +0200454 u8 flags4;
Tomer Tayar21dd79e2017-12-27 19:30:06 +0200455#define E4_XSTORM_CORE_CONN_AG_CTX_CF8_MASK 0x3
456#define E4_XSTORM_CORE_CONN_AG_CTX_CF8_SHIFT 0
457#define E4_XSTORM_CORE_CONN_AG_CTX_CF9_MASK 0x3
458#define E4_XSTORM_CORE_CONN_AG_CTX_CF9_SHIFT 2
459#define E4_XSTORM_CORE_CONN_AG_CTX_CF10_MASK 0x3
460#define E4_XSTORM_CORE_CONN_AG_CTX_CF10_SHIFT 4
461#define E4_XSTORM_CORE_CONN_AG_CTX_CF11_MASK 0x3
462#define E4_XSTORM_CORE_CONN_AG_CTX_CF11_SHIFT 6
Yuval Mintzfe56b9e2015-10-26 11:02:25 +0200463 u8 flags5;
Tomer Tayar21dd79e2017-12-27 19:30:06 +0200464#define E4_XSTORM_CORE_CONN_AG_CTX_CF12_MASK 0x3
465#define E4_XSTORM_CORE_CONN_AG_CTX_CF12_SHIFT 0
466#define E4_XSTORM_CORE_CONN_AG_CTX_CF13_MASK 0x3
467#define E4_XSTORM_CORE_CONN_AG_CTX_CF13_SHIFT 2
468#define E4_XSTORM_CORE_CONN_AG_CTX_CF14_MASK 0x3
469#define E4_XSTORM_CORE_CONN_AG_CTX_CF14_SHIFT 4
470#define E4_XSTORM_CORE_CONN_AG_CTX_CF15_MASK 0x3
471#define E4_XSTORM_CORE_CONN_AG_CTX_CF15_SHIFT 6
Yuval Mintzfe56b9e2015-10-26 11:02:25 +0200472 u8 flags6;
Tomer Tayar21dd79e2017-12-27 19:30:06 +0200473#define E4_XSTORM_CORE_CONN_AG_CTX_CONSOLID_PROD_CF_MASK 0x3
474#define E4_XSTORM_CORE_CONN_AG_CTX_CONSOLID_PROD_CF_SHIFT 0
475#define E4_XSTORM_CORE_CONN_AG_CTX_CF17_MASK 0x3
476#define E4_XSTORM_CORE_CONN_AG_CTX_CF17_SHIFT 2
477#define E4_XSTORM_CORE_CONN_AG_CTX_DQ_CF_MASK 0x3
478#define E4_XSTORM_CORE_CONN_AG_CTX_DQ_CF_SHIFT 4
479#define E4_XSTORM_CORE_CONN_AG_CTX_TERMINATE_CF_MASK 0x3
480#define E4_XSTORM_CORE_CONN_AG_CTX_TERMINATE_CF_SHIFT 6
Yuval Mintzfe56b9e2015-10-26 11:02:25 +0200481 u8 flags7;
Tomer Tayar21dd79e2017-12-27 19:30:06 +0200482#define E4_XSTORM_CORE_CONN_AG_CTX_FLUSH_Q0_MASK 0x3
483#define E4_XSTORM_CORE_CONN_AG_CTX_FLUSH_Q0_SHIFT 0
484#define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED10_MASK 0x3
485#define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED10_SHIFT 2
486#define E4_XSTORM_CORE_CONN_AG_CTX_SLOW_PATH_MASK 0x3
487#define E4_XSTORM_CORE_CONN_AG_CTX_SLOW_PATH_SHIFT 4
488#define E4_XSTORM_CORE_CONN_AG_CTX_CF0EN_MASK 0x1
489#define E4_XSTORM_CORE_CONN_AG_CTX_CF0EN_SHIFT 6
490#define E4_XSTORM_CORE_CONN_AG_CTX_CF1EN_MASK 0x1
491#define E4_XSTORM_CORE_CONN_AG_CTX_CF1EN_SHIFT 7
Yuval Mintzfe56b9e2015-10-26 11:02:25 +0200492 u8 flags8;
Tomer Tayar21dd79e2017-12-27 19:30:06 +0200493#define E4_XSTORM_CORE_CONN_AG_CTX_CF2EN_MASK 0x1
494#define E4_XSTORM_CORE_CONN_AG_CTX_CF2EN_SHIFT 0
495#define E4_XSTORM_CORE_CONN_AG_CTX_CF3EN_MASK 0x1
496#define E4_XSTORM_CORE_CONN_AG_CTX_CF3EN_SHIFT 1
497#define E4_XSTORM_CORE_CONN_AG_CTX_CF4EN_MASK 0x1
498#define E4_XSTORM_CORE_CONN_AG_CTX_CF4EN_SHIFT 2
499#define E4_XSTORM_CORE_CONN_AG_CTX_CF5EN_MASK 0x1
500#define E4_XSTORM_CORE_CONN_AG_CTX_CF5EN_SHIFT 3
501#define E4_XSTORM_CORE_CONN_AG_CTX_CF6EN_MASK 0x1
502#define E4_XSTORM_CORE_CONN_AG_CTX_CF6EN_SHIFT 4
503#define E4_XSTORM_CORE_CONN_AG_CTX_CF7EN_MASK 0x1
504#define E4_XSTORM_CORE_CONN_AG_CTX_CF7EN_SHIFT 5
505#define E4_XSTORM_CORE_CONN_AG_CTX_CF8EN_MASK 0x1
506#define E4_XSTORM_CORE_CONN_AG_CTX_CF8EN_SHIFT 6
507#define E4_XSTORM_CORE_CONN_AG_CTX_CF9EN_MASK 0x1
508#define E4_XSTORM_CORE_CONN_AG_CTX_CF9EN_SHIFT 7
Yuval Mintzfe56b9e2015-10-26 11:02:25 +0200509 u8 flags9;
Tomer Tayar21dd79e2017-12-27 19:30:06 +0200510#define E4_XSTORM_CORE_CONN_AG_CTX_CF10EN_MASK 0x1
511#define E4_XSTORM_CORE_CONN_AG_CTX_CF10EN_SHIFT 0
512#define E4_XSTORM_CORE_CONN_AG_CTX_CF11EN_MASK 0x1
513#define E4_XSTORM_CORE_CONN_AG_CTX_CF11EN_SHIFT 1
514#define E4_XSTORM_CORE_CONN_AG_CTX_CF12EN_MASK 0x1
515#define E4_XSTORM_CORE_CONN_AG_CTX_CF12EN_SHIFT 2
516#define E4_XSTORM_CORE_CONN_AG_CTX_CF13EN_MASK 0x1
517#define E4_XSTORM_CORE_CONN_AG_CTX_CF13EN_SHIFT 3
518#define E4_XSTORM_CORE_CONN_AG_CTX_CF14EN_MASK 0x1
519#define E4_XSTORM_CORE_CONN_AG_CTX_CF14EN_SHIFT 4
520#define E4_XSTORM_CORE_CONN_AG_CTX_CF15EN_MASK 0x1
521#define E4_XSTORM_CORE_CONN_AG_CTX_CF15EN_SHIFT 5
522#define E4_XSTORM_CORE_CONN_AG_CTX_CONSOLID_PROD_CF_EN_MASK 0x1
523#define E4_XSTORM_CORE_CONN_AG_CTX_CONSOLID_PROD_CF_EN_SHIFT 6
524#define E4_XSTORM_CORE_CONN_AG_CTX_CF17EN_MASK 0x1
525#define E4_XSTORM_CORE_CONN_AG_CTX_CF17EN_SHIFT 7
Yuval Mintzfe56b9e2015-10-26 11:02:25 +0200526 u8 flags10;
Tomer Tayar21dd79e2017-12-27 19:30:06 +0200527#define E4_XSTORM_CORE_CONN_AG_CTX_DQ_CF_EN_MASK 0x1
528#define E4_XSTORM_CORE_CONN_AG_CTX_DQ_CF_EN_SHIFT 0
529#define E4_XSTORM_CORE_CONN_AG_CTX_TERMINATE_CF_EN_MASK 0x1
530#define E4_XSTORM_CORE_CONN_AG_CTX_TERMINATE_CF_EN_SHIFT 1
531#define E4_XSTORM_CORE_CONN_AG_CTX_FLUSH_Q0_EN_MASK 0x1
532#define E4_XSTORM_CORE_CONN_AG_CTX_FLUSH_Q0_EN_SHIFT 2
533#define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED11_MASK 0x1
534#define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED11_SHIFT 3
535#define E4_XSTORM_CORE_CONN_AG_CTX_SLOW_PATH_EN_MASK 0x1
536#define E4_XSTORM_CORE_CONN_AG_CTX_SLOW_PATH_EN_SHIFT 4
537#define E4_XSTORM_CORE_CONN_AG_CTX_CF23EN_MASK 0x1
538#define E4_XSTORM_CORE_CONN_AG_CTX_CF23EN_SHIFT 5
539#define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED12_MASK 0x1
540#define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED12_SHIFT 6
541#define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED13_MASK 0x1
542#define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED13_SHIFT 7
Yuval Mintzfe56b9e2015-10-26 11:02:25 +0200543 u8 flags11;
Tomer Tayar21dd79e2017-12-27 19:30:06 +0200544#define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED14_MASK 0x1
545#define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED14_SHIFT 0
546#define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED15_MASK 0x1
547#define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED15_SHIFT 1
548#define E4_XSTORM_CORE_CONN_AG_CTX_TX_DEC_RULE_EN_MASK 0x1
549#define E4_XSTORM_CORE_CONN_AG_CTX_TX_DEC_RULE_EN_SHIFT 2
550#define E4_XSTORM_CORE_CONN_AG_CTX_RULE5EN_MASK 0x1
551#define E4_XSTORM_CORE_CONN_AG_CTX_RULE5EN_SHIFT 3
552#define E4_XSTORM_CORE_CONN_AG_CTX_RULE6EN_MASK 0x1
553#define E4_XSTORM_CORE_CONN_AG_CTX_RULE6EN_SHIFT 4
554#define E4_XSTORM_CORE_CONN_AG_CTX_RULE7EN_MASK 0x1
555#define E4_XSTORM_CORE_CONN_AG_CTX_RULE7EN_SHIFT 5
556#define E4_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED1_MASK 0x1
557#define E4_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED1_SHIFT 6
558#define E4_XSTORM_CORE_CONN_AG_CTX_RULE9EN_MASK 0x1
559#define E4_XSTORM_CORE_CONN_AG_CTX_RULE9EN_SHIFT 7
Yuval Mintzfe56b9e2015-10-26 11:02:25 +0200560 u8 flags12;
Tomer Tayar21dd79e2017-12-27 19:30:06 +0200561#define E4_XSTORM_CORE_CONN_AG_CTX_RULE10EN_MASK 0x1
562#define E4_XSTORM_CORE_CONN_AG_CTX_RULE10EN_SHIFT 0
563#define E4_XSTORM_CORE_CONN_AG_CTX_RULE11EN_MASK 0x1
564#define E4_XSTORM_CORE_CONN_AG_CTX_RULE11EN_SHIFT 1
565#define E4_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED2_MASK 0x1
566#define E4_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED2_SHIFT 2
567#define E4_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED3_MASK 0x1
568#define E4_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED3_SHIFT 3
569#define E4_XSTORM_CORE_CONN_AG_CTX_RULE14EN_MASK 0x1
570#define E4_XSTORM_CORE_CONN_AG_CTX_RULE14EN_SHIFT 4
571#define E4_XSTORM_CORE_CONN_AG_CTX_RULE15EN_MASK 0x1
572#define E4_XSTORM_CORE_CONN_AG_CTX_RULE15EN_SHIFT 5
573#define E4_XSTORM_CORE_CONN_AG_CTX_RULE16EN_MASK 0x1
574#define E4_XSTORM_CORE_CONN_AG_CTX_RULE16EN_SHIFT 6
575#define E4_XSTORM_CORE_CONN_AG_CTX_RULE17EN_MASK 0x1
576#define E4_XSTORM_CORE_CONN_AG_CTX_RULE17EN_SHIFT 7
Yuval Mintzfe56b9e2015-10-26 11:02:25 +0200577 u8 flags13;
Tomer Tayar21dd79e2017-12-27 19:30:06 +0200578#define E4_XSTORM_CORE_CONN_AG_CTX_RULE18EN_MASK 0x1
579#define E4_XSTORM_CORE_CONN_AG_CTX_RULE18EN_SHIFT 0
580#define E4_XSTORM_CORE_CONN_AG_CTX_RULE19EN_MASK 0x1
581#define E4_XSTORM_CORE_CONN_AG_CTX_RULE19EN_SHIFT 1
582#define E4_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED4_MASK 0x1
583#define E4_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED4_SHIFT 2
584#define E4_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED5_MASK 0x1
585#define E4_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED5_SHIFT 3
586#define E4_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED6_MASK 0x1
587#define E4_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED6_SHIFT 4
588#define E4_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED7_MASK 0x1
589#define E4_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED7_SHIFT 5
590#define E4_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED8_MASK 0x1
591#define E4_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED8_SHIFT 6
592#define E4_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED9_MASK 0x1
593#define E4_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED9_SHIFT 7
Yuval Mintzfe56b9e2015-10-26 11:02:25 +0200594 u8 flags14;
Tomer Tayar21dd79e2017-12-27 19:30:06 +0200595#define E4_XSTORM_CORE_CONN_AG_CTX_BIT16_MASK 0x1
596#define E4_XSTORM_CORE_CONN_AG_CTX_BIT16_SHIFT 0
597#define E4_XSTORM_CORE_CONN_AG_CTX_BIT17_MASK 0x1
598#define E4_XSTORM_CORE_CONN_AG_CTX_BIT17_SHIFT 1
599#define E4_XSTORM_CORE_CONN_AG_CTX_BIT18_MASK 0x1
600#define E4_XSTORM_CORE_CONN_AG_CTX_BIT18_SHIFT 2
601#define E4_XSTORM_CORE_CONN_AG_CTX_BIT19_MASK 0x1
602#define E4_XSTORM_CORE_CONN_AG_CTX_BIT19_SHIFT 3
603#define E4_XSTORM_CORE_CONN_AG_CTX_BIT20_MASK 0x1
604#define E4_XSTORM_CORE_CONN_AG_CTX_BIT20_SHIFT 4
605#define E4_XSTORM_CORE_CONN_AG_CTX_BIT21_MASK 0x1
606#define E4_XSTORM_CORE_CONN_AG_CTX_BIT21_SHIFT 5
607#define E4_XSTORM_CORE_CONN_AG_CTX_CF23_MASK 0x3
608#define E4_XSTORM_CORE_CONN_AG_CTX_CF23_SHIFT 6
Yuval Mintz351a4ded2016-06-02 10:23:29 +0300609 u8 byte2;
610 __le16 physical_q0;
611 __le16 consolid_prod;
612 __le16 reserved16;
613 __le16 tx_bd_cons;
614 __le16 tx_bd_or_spq_prod;
Michal Kalderon50bc60c2018-03-28 11:42:16 +0300615 __le16 updated_qm_pq_id;
Yuval Mintz351a4ded2016-06-02 10:23:29 +0300616 __le16 conn_dpi;
617 u8 byte3;
618 u8 byte4;
619 u8 byte5;
620 u8 byte6;
621 __le32 reg0;
622 __le32 reg1;
623 __le32 reg2;
624 __le32 reg3;
625 __le32 reg4;
626 __le32 reg5;
627 __le32 reg6;
628 __le16 word7;
629 __le16 word8;
630 __le16 word9;
631 __le16 word10;
632 __le32 reg7;
633 __le32 reg8;
634 __le32 reg9;
635 u8 byte7;
636 u8 byte8;
637 u8 byte9;
638 u8 byte10;
639 u8 byte11;
640 u8 byte12;
641 u8 byte13;
642 u8 byte14;
643 u8 byte15;
Mintz, Yuval7b6859f2017-05-18 19:41:04 +0300644 u8 e5_reserved;
Yuval Mintz351a4ded2016-06-02 10:23:29 +0300645 __le16 word11;
646 __le32 reg10;
647 __le32 reg11;
648 __le32 reg12;
649 __le32 reg13;
650 __le32 reg14;
651 __le32 reg15;
652 __le32 reg16;
653 __le32 reg17;
654 __le32 reg18;
655 __le32 reg19;
656 __le16 word12;
657 __le16 word13;
658 __le16 word14;
659 __le16 word15;
Yuval Mintzfe56b9e2015-10-26 11:02:25 +0200660};
661
Tomer Tayar21dd79e2017-12-27 19:30:06 +0200662struct e4_tstorm_core_conn_ag_ctx {
Yuval Mintz351a4ded2016-06-02 10:23:29 +0300663 u8 byte0;
664 u8 byte1;
665 u8 flags0;
Tomer Tayar21dd79e2017-12-27 19:30:06 +0200666#define E4_TSTORM_CORE_CONN_AG_CTX_BIT0_MASK 0x1
667#define E4_TSTORM_CORE_CONN_AG_CTX_BIT0_SHIFT 0
668#define E4_TSTORM_CORE_CONN_AG_CTX_BIT1_MASK 0x1
669#define E4_TSTORM_CORE_CONN_AG_CTX_BIT1_SHIFT 1
670#define E4_TSTORM_CORE_CONN_AG_CTX_BIT2_MASK 0x1
671#define E4_TSTORM_CORE_CONN_AG_CTX_BIT2_SHIFT 2
672#define E4_TSTORM_CORE_CONN_AG_CTX_BIT3_MASK 0x1
673#define E4_TSTORM_CORE_CONN_AG_CTX_BIT3_SHIFT 3
674#define E4_TSTORM_CORE_CONN_AG_CTX_BIT4_MASK 0x1
675#define E4_TSTORM_CORE_CONN_AG_CTX_BIT4_SHIFT 4
676#define E4_TSTORM_CORE_CONN_AG_CTX_BIT5_MASK 0x1
677#define E4_TSTORM_CORE_CONN_AG_CTX_BIT5_SHIFT 5
678#define E4_TSTORM_CORE_CONN_AG_CTX_CF0_MASK 0x3
679#define E4_TSTORM_CORE_CONN_AG_CTX_CF0_SHIFT 6
Yuval Mintzfc48b7a2016-02-15 13:22:35 -0500680 u8 flags1;
Tomer Tayar21dd79e2017-12-27 19:30:06 +0200681#define E4_TSTORM_CORE_CONN_AG_CTX_CF1_MASK 0x3
682#define E4_TSTORM_CORE_CONN_AG_CTX_CF1_SHIFT 0
683#define E4_TSTORM_CORE_CONN_AG_CTX_CF2_MASK 0x3
684#define E4_TSTORM_CORE_CONN_AG_CTX_CF2_SHIFT 2
685#define E4_TSTORM_CORE_CONN_AG_CTX_CF3_MASK 0x3
686#define E4_TSTORM_CORE_CONN_AG_CTX_CF3_SHIFT 4
687#define E4_TSTORM_CORE_CONN_AG_CTX_CF4_MASK 0x3
688#define E4_TSTORM_CORE_CONN_AG_CTX_CF4_SHIFT 6
Yuval Mintzfc48b7a2016-02-15 13:22:35 -0500689 u8 flags2;
Tomer Tayar21dd79e2017-12-27 19:30:06 +0200690#define E4_TSTORM_CORE_CONN_AG_CTX_CF5_MASK 0x3
691#define E4_TSTORM_CORE_CONN_AG_CTX_CF5_SHIFT 0
692#define E4_TSTORM_CORE_CONN_AG_CTX_CF6_MASK 0x3
693#define E4_TSTORM_CORE_CONN_AG_CTX_CF6_SHIFT 2
694#define E4_TSTORM_CORE_CONN_AG_CTX_CF7_MASK 0x3
695#define E4_TSTORM_CORE_CONN_AG_CTX_CF7_SHIFT 4
696#define E4_TSTORM_CORE_CONN_AG_CTX_CF8_MASK 0x3
697#define E4_TSTORM_CORE_CONN_AG_CTX_CF8_SHIFT 6
Yuval Mintzfc48b7a2016-02-15 13:22:35 -0500698 u8 flags3;
Tomer Tayar21dd79e2017-12-27 19:30:06 +0200699#define E4_TSTORM_CORE_CONN_AG_CTX_CF9_MASK 0x3
700#define E4_TSTORM_CORE_CONN_AG_CTX_CF9_SHIFT 0
701#define E4_TSTORM_CORE_CONN_AG_CTX_CF10_MASK 0x3
702#define E4_TSTORM_CORE_CONN_AG_CTX_CF10_SHIFT 2
703#define E4_TSTORM_CORE_CONN_AG_CTX_CF0EN_MASK 0x1
704#define E4_TSTORM_CORE_CONN_AG_CTX_CF0EN_SHIFT 4
705#define E4_TSTORM_CORE_CONN_AG_CTX_CF1EN_MASK 0x1
706#define E4_TSTORM_CORE_CONN_AG_CTX_CF1EN_SHIFT 5
707#define E4_TSTORM_CORE_CONN_AG_CTX_CF2EN_MASK 0x1
708#define E4_TSTORM_CORE_CONN_AG_CTX_CF2EN_SHIFT 6
709#define E4_TSTORM_CORE_CONN_AG_CTX_CF3EN_MASK 0x1
710#define E4_TSTORM_CORE_CONN_AG_CTX_CF3EN_SHIFT 7
Yuval Mintzfc48b7a2016-02-15 13:22:35 -0500711 u8 flags4;
Tomer Tayar21dd79e2017-12-27 19:30:06 +0200712#define E4_TSTORM_CORE_CONN_AG_CTX_CF4EN_MASK 0x1
713#define E4_TSTORM_CORE_CONN_AG_CTX_CF4EN_SHIFT 0
714#define E4_TSTORM_CORE_CONN_AG_CTX_CF5EN_MASK 0x1
715#define E4_TSTORM_CORE_CONN_AG_CTX_CF5EN_SHIFT 1
716#define E4_TSTORM_CORE_CONN_AG_CTX_CF6EN_MASK 0x1
717#define E4_TSTORM_CORE_CONN_AG_CTX_CF6EN_SHIFT 2
718#define E4_TSTORM_CORE_CONN_AG_CTX_CF7EN_MASK 0x1
719#define E4_TSTORM_CORE_CONN_AG_CTX_CF7EN_SHIFT 3
720#define E4_TSTORM_CORE_CONN_AG_CTX_CF8EN_MASK 0x1
721#define E4_TSTORM_CORE_CONN_AG_CTX_CF8EN_SHIFT 4
722#define E4_TSTORM_CORE_CONN_AG_CTX_CF9EN_MASK 0x1
723#define E4_TSTORM_CORE_CONN_AG_CTX_CF9EN_SHIFT 5
724#define E4_TSTORM_CORE_CONN_AG_CTX_CF10EN_MASK 0x1
725#define E4_TSTORM_CORE_CONN_AG_CTX_CF10EN_SHIFT 6
726#define E4_TSTORM_CORE_CONN_AG_CTX_RULE0EN_MASK 0x1
727#define E4_TSTORM_CORE_CONN_AG_CTX_RULE0EN_SHIFT 7
Yuval Mintzfc48b7a2016-02-15 13:22:35 -0500728 u8 flags5;
Tomer Tayar21dd79e2017-12-27 19:30:06 +0200729#define E4_TSTORM_CORE_CONN_AG_CTX_RULE1EN_MASK 0x1
730#define E4_TSTORM_CORE_CONN_AG_CTX_RULE1EN_SHIFT 0
731#define E4_TSTORM_CORE_CONN_AG_CTX_RULE2EN_MASK 0x1
732#define E4_TSTORM_CORE_CONN_AG_CTX_RULE2EN_SHIFT 1
733#define E4_TSTORM_CORE_CONN_AG_CTX_RULE3EN_MASK 0x1
734#define E4_TSTORM_CORE_CONN_AG_CTX_RULE3EN_SHIFT 2
735#define E4_TSTORM_CORE_CONN_AG_CTX_RULE4EN_MASK 0x1
736#define E4_TSTORM_CORE_CONN_AG_CTX_RULE4EN_SHIFT 3
737#define E4_TSTORM_CORE_CONN_AG_CTX_RULE5EN_MASK 0x1
738#define E4_TSTORM_CORE_CONN_AG_CTX_RULE5EN_SHIFT 4
739#define E4_TSTORM_CORE_CONN_AG_CTX_RULE6EN_MASK 0x1
740#define E4_TSTORM_CORE_CONN_AG_CTX_RULE6EN_SHIFT 5
741#define E4_TSTORM_CORE_CONN_AG_CTX_RULE7EN_MASK 0x1
742#define E4_TSTORM_CORE_CONN_AG_CTX_RULE7EN_SHIFT 6
743#define E4_TSTORM_CORE_CONN_AG_CTX_RULE8EN_MASK 0x1
744#define E4_TSTORM_CORE_CONN_AG_CTX_RULE8EN_SHIFT 7
Yuval Mintz351a4ded2016-06-02 10:23:29 +0300745 __le32 reg0;
746 __le32 reg1;
747 __le32 reg2;
748 __le32 reg3;
749 __le32 reg4;
750 __le32 reg5;
751 __le32 reg6;
752 __le32 reg7;
753 __le32 reg8;
754 u8 byte2;
755 u8 byte3;
756 __le16 word0;
757 u8 byte4;
758 u8 byte5;
759 __le16 word1;
760 __le16 word2;
761 __le16 word3;
762 __le32 reg9;
763 __le32 reg10;
Yuval Mintzfc48b7a2016-02-15 13:22:35 -0500764};
765
Tomer Tayar21dd79e2017-12-27 19:30:06 +0200766struct e4_ustorm_core_conn_ag_ctx {
Yuval Mintz351a4ded2016-06-02 10:23:29 +0300767 u8 reserved;
768 u8 byte1;
769 u8 flags0;
Tomer Tayar21dd79e2017-12-27 19:30:06 +0200770#define E4_USTORM_CORE_CONN_AG_CTX_BIT0_MASK 0x1
771#define E4_USTORM_CORE_CONN_AG_CTX_BIT0_SHIFT 0
772#define E4_USTORM_CORE_CONN_AG_CTX_BIT1_MASK 0x1
773#define E4_USTORM_CORE_CONN_AG_CTX_BIT1_SHIFT 1
774#define E4_USTORM_CORE_CONN_AG_CTX_CF0_MASK 0x3
775#define E4_USTORM_CORE_CONN_AG_CTX_CF0_SHIFT 2
776#define E4_USTORM_CORE_CONN_AG_CTX_CF1_MASK 0x3
777#define E4_USTORM_CORE_CONN_AG_CTX_CF1_SHIFT 4
778#define E4_USTORM_CORE_CONN_AG_CTX_CF2_MASK 0x3
779#define E4_USTORM_CORE_CONN_AG_CTX_CF2_SHIFT 6
Yuval Mintzfc48b7a2016-02-15 13:22:35 -0500780 u8 flags1;
Tomer Tayar21dd79e2017-12-27 19:30:06 +0200781#define E4_USTORM_CORE_CONN_AG_CTX_CF3_MASK 0x3
782#define E4_USTORM_CORE_CONN_AG_CTX_CF3_SHIFT 0
783#define E4_USTORM_CORE_CONN_AG_CTX_CF4_MASK 0x3
784#define E4_USTORM_CORE_CONN_AG_CTX_CF4_SHIFT 2
785#define E4_USTORM_CORE_CONN_AG_CTX_CF5_MASK 0x3
786#define E4_USTORM_CORE_CONN_AG_CTX_CF5_SHIFT 4
787#define E4_USTORM_CORE_CONN_AG_CTX_CF6_MASK 0x3
788#define E4_USTORM_CORE_CONN_AG_CTX_CF6_SHIFT 6
Yuval Mintzfc48b7a2016-02-15 13:22:35 -0500789 u8 flags2;
Tomer Tayar21dd79e2017-12-27 19:30:06 +0200790#define E4_USTORM_CORE_CONN_AG_CTX_CF0EN_MASK 0x1
791#define E4_USTORM_CORE_CONN_AG_CTX_CF0EN_SHIFT 0
792#define E4_USTORM_CORE_CONN_AG_CTX_CF1EN_MASK 0x1
793#define E4_USTORM_CORE_CONN_AG_CTX_CF1EN_SHIFT 1
794#define E4_USTORM_CORE_CONN_AG_CTX_CF2EN_MASK 0x1
795#define E4_USTORM_CORE_CONN_AG_CTX_CF2EN_SHIFT 2
796#define E4_USTORM_CORE_CONN_AG_CTX_CF3EN_MASK 0x1
797#define E4_USTORM_CORE_CONN_AG_CTX_CF3EN_SHIFT 3
798#define E4_USTORM_CORE_CONN_AG_CTX_CF4EN_MASK 0x1
799#define E4_USTORM_CORE_CONN_AG_CTX_CF4EN_SHIFT 4
800#define E4_USTORM_CORE_CONN_AG_CTX_CF5EN_MASK 0x1
801#define E4_USTORM_CORE_CONN_AG_CTX_CF5EN_SHIFT 5
802#define E4_USTORM_CORE_CONN_AG_CTX_CF6EN_MASK 0x1
803#define E4_USTORM_CORE_CONN_AG_CTX_CF6EN_SHIFT 6
804#define E4_USTORM_CORE_CONN_AG_CTX_RULE0EN_MASK 0x1
805#define E4_USTORM_CORE_CONN_AG_CTX_RULE0EN_SHIFT 7
Yuval Mintzfc48b7a2016-02-15 13:22:35 -0500806 u8 flags3;
Tomer Tayar21dd79e2017-12-27 19:30:06 +0200807#define E4_USTORM_CORE_CONN_AG_CTX_RULE1EN_MASK 0x1
808#define E4_USTORM_CORE_CONN_AG_CTX_RULE1EN_SHIFT 0
809#define E4_USTORM_CORE_CONN_AG_CTX_RULE2EN_MASK 0x1
810#define E4_USTORM_CORE_CONN_AG_CTX_RULE2EN_SHIFT 1
811#define E4_USTORM_CORE_CONN_AG_CTX_RULE3EN_MASK 0x1
812#define E4_USTORM_CORE_CONN_AG_CTX_RULE3EN_SHIFT 2
813#define E4_USTORM_CORE_CONN_AG_CTX_RULE4EN_MASK 0x1
814#define E4_USTORM_CORE_CONN_AG_CTX_RULE4EN_SHIFT 3
815#define E4_USTORM_CORE_CONN_AG_CTX_RULE5EN_MASK 0x1
816#define E4_USTORM_CORE_CONN_AG_CTX_RULE5EN_SHIFT 4
817#define E4_USTORM_CORE_CONN_AG_CTX_RULE6EN_MASK 0x1
818#define E4_USTORM_CORE_CONN_AG_CTX_RULE6EN_SHIFT 5
819#define E4_USTORM_CORE_CONN_AG_CTX_RULE7EN_MASK 0x1
820#define E4_USTORM_CORE_CONN_AG_CTX_RULE7EN_SHIFT 6
821#define E4_USTORM_CORE_CONN_AG_CTX_RULE8EN_MASK 0x1
822#define E4_USTORM_CORE_CONN_AG_CTX_RULE8EN_SHIFT 7
Yuval Mintz351a4ded2016-06-02 10:23:29 +0300823 u8 byte2;
824 u8 byte3;
825 __le16 word0;
826 __le16 word1;
827 __le32 rx_producers;
828 __le32 reg1;
829 __le32 reg2;
830 __le32 reg3;
831 __le16 word2;
832 __le16 word3;
Yuval Mintzfc48b7a2016-02-15 13:22:35 -0500833};
834
Yuval Mintzfe56b9e2015-10-26 11:02:25 +0200835/* The core storm context for the Mstorm */
836struct mstorm_core_conn_st_ctx {
837 __le32 reserved[24];
838};
839
840/* The core storm context for the Ustorm */
841struct ustorm_core_conn_st_ctx {
842 __le32 reserved[4];
843};
844
845/* core connection context */
Tomer Tayar21dd79e2017-12-27 19:30:06 +0200846struct e4_core_conn_context {
Yuval Mintz351a4ded2016-06-02 10:23:29 +0300847 struct ystorm_core_conn_st_ctx ystorm_st_context;
848 struct regpair ystorm_st_padding[2];
849 struct pstorm_core_conn_st_ctx pstorm_st_context;
850 struct regpair pstorm_st_padding[2];
851 struct xstorm_core_conn_st_ctx xstorm_st_context;
Tomer Tayar21dd79e2017-12-27 19:30:06 +0200852 struct e4_xstorm_core_conn_ag_ctx xstorm_ag_context;
853 struct e4_tstorm_core_conn_ag_ctx tstorm_ag_context;
854 struct e4_ustorm_core_conn_ag_ctx ustorm_ag_context;
Yuval Mintz351a4ded2016-06-02 10:23:29 +0300855 struct mstorm_core_conn_st_ctx mstorm_st_context;
856 struct ustorm_core_conn_st_ctx ustorm_st_context;
857 struct regpair ustorm_st_padding[2];
858};
859
860struct eth_mstorm_per_pf_stat {
861 struct regpair gre_discard_pkts;
862 struct regpair vxlan_discard_pkts;
863 struct regpair geneve_discard_pkts;
864 struct regpair lb_discard_pkts;
Yuval Mintzfe56b9e2015-10-26 11:02:25 +0200865};
866
Manish Chopra9df2ed02015-10-26 11:02:33 +0200867struct eth_mstorm_per_queue_stat {
Yuval Mintz351a4ded2016-06-02 10:23:29 +0300868 struct regpair ttl0_discard;
869 struct regpair packet_too_big_discard;
870 struct regpair no_buff_discard;
871 struct regpair not_active_discard;
872 struct regpair tpa_coalesced_pkts;
873 struct regpair tpa_coalesced_events;
874 struct regpair tpa_aborts_num;
875 struct regpair tpa_coalesced_bytes;
Manish Chopra9df2ed02015-10-26 11:02:33 +0200876};
877
Yuval Mintz351a4ded2016-06-02 10:23:29 +0300878/* Ethernet TX Per PF */
879struct eth_pstorm_per_pf_stat {
880 struct regpair sent_lb_ucast_bytes;
881 struct regpair sent_lb_mcast_bytes;
882 struct regpair sent_lb_bcast_bytes;
883 struct regpair sent_lb_ucast_pkts;
884 struct regpair sent_lb_mcast_pkts;
885 struct regpair sent_lb_bcast_pkts;
886 struct regpair sent_gre_bytes;
887 struct regpair sent_vxlan_bytes;
888 struct regpair sent_geneve_bytes;
889 struct regpair sent_gre_pkts;
890 struct regpair sent_vxlan_pkts;
891 struct regpair sent_geneve_pkts;
892 struct regpair gre_drop_pkts;
893 struct regpair vxlan_drop_pkts;
894 struct regpair geneve_drop_pkts;
895};
896
897/* Ethernet TX Per Queue Stats */
Manish Chopra9df2ed02015-10-26 11:02:33 +0200898struct eth_pstorm_per_queue_stat {
Yuval Mintz351a4ded2016-06-02 10:23:29 +0300899 struct regpair sent_ucast_bytes;
900 struct regpair sent_mcast_bytes;
901 struct regpair sent_bcast_bytes;
902 struct regpair sent_ucast_pkts;
903 struct regpair sent_mcast_pkts;
904 struct regpair sent_bcast_pkts;
905 struct regpair error_drop_pkts;
906};
907
908/* ETH Rx producers data */
909struct eth_rx_rate_limit {
910 __le16 mult;
911 __le16 cnst;
912 u8 add_sub_cnst;
913 u8 reserved0;
914 __le16 reserved1;
915};
916
917struct eth_ustorm_per_pf_stat {
918 struct regpair rcv_lb_ucast_bytes;
919 struct regpair rcv_lb_mcast_bytes;
920 struct regpair rcv_lb_bcast_bytes;
921 struct regpair rcv_lb_ucast_pkts;
922 struct regpair rcv_lb_mcast_pkts;
923 struct regpair rcv_lb_bcast_pkts;
924 struct regpair rcv_gre_bytes;
925 struct regpair rcv_vxlan_bytes;
926 struct regpair rcv_geneve_bytes;
927 struct regpair rcv_gre_pkts;
928 struct regpair rcv_vxlan_pkts;
929 struct regpair rcv_geneve_pkts;
Manish Chopra9df2ed02015-10-26 11:02:33 +0200930};
931
932struct eth_ustorm_per_queue_stat {
Yuval Mintz351a4ded2016-06-02 10:23:29 +0300933 struct regpair rcv_ucast_bytes;
934 struct regpair rcv_mcast_bytes;
935 struct regpair rcv_bcast_bytes;
936 struct regpair rcv_ucast_pkts;
937 struct regpair rcv_mcast_pkts;
938 struct regpair rcv_bcast_pkts;
Manish Chopra9df2ed02015-10-26 11:02:33 +0200939};
940
Tomer Tayara2e76992017-12-27 19:30:05 +0200941/* Event Ring VF-PF Channel data */
942struct vf_pf_channel_eqe_data {
943 struct regpair msg_addr;
944};
945
946/* Event Ring malicious VF data */
947struct malicious_vf_eqe_data {
948 u8 vf_id;
949 u8 err_id;
950 __le16 reserved[3];
951};
952
953/* Event Ring initial cleanup data */
954struct initial_cleanup_eqe_data {
955 u8 vf_id;
956 u8 reserved[7];
957};
958
959/* Event Data Union */
960union event_ring_data {
961 u8 bytes[8];
962 struct vf_pf_channel_eqe_data vf_pf_channel;
963 struct iscsi_eqe_data iscsi_info;
Tomer Tayarda090912017-12-27 19:30:07 +0200964 struct iscsi_connect_done_results iscsi_conn_done_info;
Tomer Tayara2e76992017-12-27 19:30:05 +0200965 union rdma_eqe_data rdma_data;
966 struct malicious_vf_eqe_data malicious_vf;
967 struct initial_cleanup_eqe_data vf_init_cleanup;
968};
969
970/* Event Ring Entry */
971struct event_ring_entry {
972 u8 protocol_id;
973 u8 opcode;
974 __le16 reserved0;
975 __le16 echo;
976 u8 fw_return_code;
977 u8 flags;
978#define EVENT_RING_ENTRY_ASYNC_MASK 0x1
979#define EVENT_RING_ENTRY_ASYNC_SHIFT 0
980#define EVENT_RING_ENTRY_RESERVED1_MASK 0x7F
981#define EVENT_RING_ENTRY_RESERVED1_SHIFT 1
982 union event_ring_data data;
983};
984
Yuval Mintzfe56b9e2015-10-26 11:02:25 +0200985/* Event Ring Next Page Address */
986struct event_ring_next_addr {
Yuval Mintz351a4ded2016-06-02 10:23:29 +0300987 struct regpair addr;
988 __le32 reserved[2];
Yuval Mintzfe56b9e2015-10-26 11:02:25 +0200989};
990
Yuval Mintz351a4ded2016-06-02 10:23:29 +0300991/* Event Ring Element */
Yuval Mintzfe56b9e2015-10-26 11:02:25 +0200992union event_ring_element {
Yuval Mintz351a4ded2016-06-02 10:23:29 +0300993 struct event_ring_entry entry;
994 struct event_ring_next_addr next_addr;
Yuval Mintzfe56b9e2015-10-26 11:02:25 +0200995};
996
Tomer Tayara2e76992017-12-27 19:30:05 +0200997/* Ports mode */
Mintz, Yuvalbe086e72017-03-11 18:39:18 +0200998enum fw_flow_ctrl_mode {
999 flow_ctrl_pause,
1000 flow_ctrl_pfc,
1001 MAX_FW_FLOW_CTRL_MODE
1002};
1003
Tomer Tayarda090912017-12-27 19:30:07 +02001004/* GFT profile type */
1005enum gft_profile_type {
1006 GFT_PROFILE_TYPE_4_TUPLE,
1007 GFT_PROFILE_TYPE_L4_DST_PORT,
Michal Kalderon50bc60c2018-03-28 11:42:16 +03001008 GFT_PROFILE_TYPE_IP_DST_ADDR,
1009 GFT_PROFILE_TYPE_IP_SRC_ADDR,
1010 GFT_PROFILE_TYPE_TUNNEL_TYPE,
Tomer Tayarda090912017-12-27 19:30:07 +02001011 MAX_GFT_PROFILE_TYPE
1012};
1013
Yuval Mintz351a4ded2016-06-02 10:23:29 +03001014/* Major and Minor hsi Versions */
1015struct hsi_fp_ver_struct {
1016 u8 minor_ver_arr[2];
1017 u8 major_ver_arr[2];
1018};
1019
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03001020enum iwarp_ll2_tx_queues {
Tomer Tayara2e76992017-12-27 19:30:05 +02001021 IWARP_LL2_IN_ORDER_TX_QUEUE = 1,
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03001022 IWARP_LL2_ALIGNED_TX_QUEUE,
1023 IWARP_LL2_ALIGNED_RIGHT_TRIMMED_TX_QUEUE,
1024 IWARP_LL2_ERROR,
1025 MAX_IWARP_LL2_TX_QUEUES
1026};
1027
Tomer Tayara2e76992017-12-27 19:30:05 +02001028/* Malicious VF error ID */
Yuval Mintz05fafbf2016-08-19 09:33:31 +03001029enum malicious_vf_error_id {
1030 MALICIOUS_VF_NO_ERROR,
1031 VF_PF_CHANNEL_NOT_READY,
1032 VF_ZONE_MSG_NOT_VALID,
1033 VF_ZONE_FUNC_NOT_ENABLED,
1034 ETH_PACKET_TOO_SMALL,
1035 ETH_ILLEGAL_VLAN_MODE,
1036 ETH_MTU_VIOLATION,
1037 ETH_ILLEGAL_INBAND_TAGS,
1038 ETH_VLAN_INSERT_AND_INBAND_VLAN,
1039 ETH_ILLEGAL_NBDS,
1040 ETH_FIRST_BD_WO_SOP,
1041 ETH_INSUFFICIENT_BDS,
1042 ETH_ILLEGAL_LSO_HDR_NBDS,
1043 ETH_ILLEGAL_LSO_MSS,
1044 ETH_ZERO_SIZE_BD,
1045 ETH_ILLEGAL_LSO_HDR_LEN,
1046 ETH_INSUFFICIENT_PAYLOAD,
1047 ETH_EDPM_OUT_OF_SYNC,
1048 ETH_TUNN_IPV6_EXT_NBD_ERR,
1049 ETH_CONTROL_PACKET_VIOLATION,
Mintz, Yuvalbe086e72017-03-11 18:39:18 +02001050 ETH_ANTI_SPOOFING_ERR,
Tomer Tayarda090912017-12-27 19:30:07 +02001051 ETH_PACKET_SIZE_TOO_LARGE,
Yuval Mintz05fafbf2016-08-19 09:33:31 +03001052 MAX_MALICIOUS_VF_ERROR_ID
1053};
1054
Tomer Tayara2e76992017-12-27 19:30:05 +02001055/* Mstorm non-triggering VF zone */
Yuval Mintz1408cc1f2016-05-11 16:36:14 +03001056struct mstorm_non_trigger_vf_zone {
1057 struct eth_mstorm_per_queue_stat eth_queue_stat;
Yuval Mintz05fafbf2016-08-19 09:33:31 +03001058 struct eth_rx_prod_data eth_rx_queue_producers[ETH_MAX_NUM_RX_QUEUES_PER_VF_QUAD];
Yuval Mintz1408cc1f2016-05-11 16:36:14 +03001059};
1060
Yuval Mintz351a4ded2016-06-02 10:23:29 +03001061/* Mstorm VF zone */
Yuval Mintz1408cc1f2016-05-11 16:36:14 +03001062struct mstorm_vf_zone {
1063 struct mstorm_non_trigger_vf_zone non_trigger;
1064};
1065
Tomer Tayarda090912017-12-27 19:30:07 +02001066/* vlan header including TPID and TCI fields */
1067struct vlan_header {
1068 __le16 tpid;
1069 __le16 tci;
1070};
1071
1072/* outer tag configurations */
1073struct outer_tag_config_struct {
1074 u8 enable_stag_pri_change;
1075 u8 pri_map_valid;
1076 u8 reserved[2];
1077 struct vlan_header outer_tag;
1078 u8 inner_to_outer_pri_map[8];
1079};
1080
Yuval Mintz351a4ded2016-06-02 10:23:29 +03001081/* personality per PF */
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02001082enum personality_type {
Yuval Mintzfc48b7a2016-02-15 13:22:35 -05001083 BAD_PERSONALITY_TYP,
Yuval Mintzc5ac9312016-06-03 14:35:34 +03001084 PERSONALITY_ISCSI,
Arun Easi1e128c82017-02-15 06:28:22 -08001085 PERSONALITY_FCOE,
Yuval Mintz351a4ded2016-06-02 10:23:29 +03001086 PERSONALITY_RDMA_AND_ETH,
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03001087 PERSONALITY_RDMA,
Yuval Mintzfc48b7a2016-02-15 13:22:35 -05001088 PERSONALITY_CORE,
Yuval Mintz351a4ded2016-06-02 10:23:29 +03001089 PERSONALITY_ETH,
Tomer Tayara2e76992017-12-27 19:30:05 +02001090 PERSONALITY_RESERVED,
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02001091 MAX_PERSONALITY_TYPE
1092};
1093
Yuval Mintz351a4ded2016-06-02 10:23:29 +03001094/* tunnel configuration */
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02001095struct pf_start_tunnel_config {
Yuval Mintz351a4ded2016-06-02 10:23:29 +03001096 u8 set_vxlan_udp_port_flg;
1097 u8 set_geneve_udp_port_flg;
Yuval Mintz351a4ded2016-06-02 10:23:29 +03001098 u8 tunnel_clss_vxlan;
1099 u8 tunnel_clss_l2geneve;
1100 u8 tunnel_clss_ipgeneve;
1101 u8 tunnel_clss_l2gre;
1102 u8 tunnel_clss_ipgre;
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03001103 u8 reserved;
Yuval Mintz351a4ded2016-06-02 10:23:29 +03001104 __le16 vxlan_udp_port;
1105 __le16 geneve_udp_port;
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02001106};
1107
1108/* Ramrod data for PF start ramrod */
1109struct pf_start_ramrod_data {
Yuval Mintz351a4ded2016-06-02 10:23:29 +03001110 struct regpair event_ring_pbl_addr;
1111 struct regpair consolid_q_pbl_addr;
1112 struct pf_start_tunnel_config tunnel_config;
1113 __le16 event_ring_sb_id;
1114 u8 base_vf_id;
1115 u8 num_vfs;
1116 u8 event_ring_num_pages;
1117 u8 event_ring_sb_index;
1118 u8 path_id;
1119 u8 warning_as_error;
1120 u8 dont_log_ramrods;
1121 u8 personality;
1122 __le16 log_type_mask;
1123 u8 mf_mode;
1124 u8 integ_phase;
1125 u8 allow_npar_tx_switching;
Tomer Tayarda090912017-12-27 19:30:07 +02001126 u8 reserved0;
Yuval Mintz351a4ded2016-06-02 10:23:29 +03001127 struct hsi_fp_ver_struct hsi_fp_ver;
Tomer Tayarda090912017-12-27 19:30:07 +02001128 struct outer_tag_config_struct outer_tag_config;
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02001129};
1130
Tomer Tayara2e76992017-12-27 19:30:05 +02001131/* Data for port update ramrod */
Sudarsana Reddy Kalluru39651ab2016-05-17 06:44:26 -04001132struct protocol_dcb_data {
1133 u8 dcb_enable_flag;
Tomer Tayarda090912017-12-27 19:30:07 +02001134 u8 dscp_enable_flag;
Sudarsana Reddy Kalluru39651ab2016-05-17 06:44:26 -04001135 u8 dcb_priority;
1136 u8 dcb_tc;
Tomer Tayarda090912017-12-27 19:30:07 +02001137 u8 dscp_val;
Michal Kalderon50bc60c2018-03-28 11:42:16 +03001138 u8 dcb_dont_add_vlan0;
Sudarsana Reddy Kalluru39651ab2016-05-17 06:44:26 -04001139};
1140
Tomer Tayara2e76992017-12-27 19:30:05 +02001141/* Update tunnel configuration */
Manish Chopra464f6642016-04-14 01:38:29 -04001142struct pf_update_tunnel_config {
Yuval Mintz351a4ded2016-06-02 10:23:29 +03001143 u8 update_rx_pf_clss;
Yuval Mintz05fafbf2016-08-19 09:33:31 +03001144 u8 update_rx_def_ucast_clss;
1145 u8 update_rx_def_non_ucast_clss;
Yuval Mintz351a4ded2016-06-02 10:23:29 +03001146 u8 set_vxlan_udp_port_flg;
1147 u8 set_geneve_udp_port_flg;
Yuval Mintz351a4ded2016-06-02 10:23:29 +03001148 u8 tunnel_clss_vxlan;
1149 u8 tunnel_clss_l2geneve;
1150 u8 tunnel_clss_ipgeneve;
1151 u8 tunnel_clss_l2gre;
1152 u8 tunnel_clss_ipgre;
1153 __le16 vxlan_udp_port;
1154 __le16 geneve_udp_port;
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03001155 __le16 reserved;
Manish Chopra464f6642016-04-14 01:38:29 -04001156};
1157
Tomer Tayara2e76992017-12-27 19:30:05 +02001158/* Data for port update ramrod */
Manish Chopra464f6642016-04-14 01:38:29 -04001159struct pf_update_ramrod_data {
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03001160 u8 update_eth_dcb_data_mode;
1161 u8 update_fcoe_dcb_data_mode;
1162 u8 update_iscsi_dcb_data_mode;
1163 u8 update_roce_dcb_data_mode;
1164 u8 update_rroce_dcb_data_mode;
1165 u8 update_iwarp_dcb_data_mode;
Sudarsana Reddy Kalluru39651ab2016-05-17 06:44:26 -04001166 u8 update_mf_vlan_flag;
Tomer Tayarda090912017-12-27 19:30:07 +02001167 u8 update_enable_stag_pri_change;
Sudarsana Reddy Kalluru39651ab2016-05-17 06:44:26 -04001168 struct protocol_dcb_data eth_dcb_data;
1169 struct protocol_dcb_data fcoe_dcb_data;
1170 struct protocol_dcb_data iscsi_dcb_data;
1171 struct protocol_dcb_data roce_dcb_data;
Yuval Mintz05fafbf2016-08-19 09:33:31 +03001172 struct protocol_dcb_data rroce_dcb_data;
Yuval Mintz351a4ded2016-06-02 10:23:29 +03001173 struct protocol_dcb_data iwarp_dcb_data;
1174 __le16 mf_vlan;
Tomer Tayarda090912017-12-27 19:30:07 +02001175 u8 enable_stag_pri_change;
1176 u8 reserved;
Yuval Mintz351a4ded2016-06-02 10:23:29 +03001177 struct pf_update_tunnel_config tunnel_config;
1178};
1179
1180/* Ports mode */
1181enum ports_mode {
1182 ENGX2_PORTX1,
1183 ENGX2_PORTX2,
1184 ENGX1_PORTX1,
1185 ENGX1_PORTX2,
1186 ENGX1_PORTX4,
1187 MAX_PORTS_MODE
1188};
1189
1190/* use to index in hsi_fp_[major|minor]_ver_arr per protocol */
1191enum protocol_version_array_key {
1192 ETH_VER_KEY = 0,
1193 ROCE_VER_KEY,
1194 MAX_PROTOCOL_VERSION_ARRAY_KEY
1195};
1196
Tomer Tayara2e76992017-12-27 19:30:05 +02001197/* RDMA TX Stats */
Yuval Mintz05fafbf2016-08-19 09:33:31 +03001198struct rdma_sent_stats {
1199 struct regpair sent_bytes;
1200 struct regpair sent_pkts;
1201};
1202
Tomer Tayara2e76992017-12-27 19:30:05 +02001203/* Pstorm non-triggering VF zone */
Yuval Mintz351a4ded2016-06-02 10:23:29 +03001204struct pstorm_non_trigger_vf_zone {
1205 struct eth_pstorm_per_queue_stat eth_queue_stat;
Yuval Mintz05fafbf2016-08-19 09:33:31 +03001206 struct rdma_sent_stats rdma_stats;
Yuval Mintz351a4ded2016-06-02 10:23:29 +03001207};
1208
1209/* Pstorm VF zone */
1210struct pstorm_vf_zone {
1211 struct pstorm_non_trigger_vf_zone non_trigger;
1212 struct regpair reserved[7];
1213};
1214
1215/* Ramrod Header of SPQE */
1216struct ramrod_header {
1217 __le32 cid;
1218 u8 cmd_id;
1219 u8 protocol_id;
1220 __le16 echo;
1221};
1222
Tomer Tayara2e76992017-12-27 19:30:05 +02001223/* RDMA RX Stats */
Yuval Mintz05fafbf2016-08-19 09:33:31 +03001224struct rdma_rcv_stats {
1225 struct regpair rcv_bytes;
1226 struct regpair rcv_pkts;
1227};
1228
Tomer Tayarda090912017-12-27 19:30:07 +02001229/* Data for update QCN/DCQCN RL ramrod */
1230struct rl_update_ramrod_data {
1231 u8 qcn_update_param_flg;
1232 u8 dcqcn_update_param_flg;
1233 u8 rl_init_flg;
1234 u8 rl_start_flg;
1235 u8 rl_stop_flg;
1236 u8 rl_id_first;
1237 u8 rl_id_last;
1238 u8 rl_dc_qcn_flg;
1239 __le32 rl_bc_rate;
1240 __le16 rl_max_rate;
1241 __le16 rl_r_ai;
1242 __le16 rl_r_hai;
1243 __le16 dcqcn_g;
1244 __le32 dcqcn_k_us;
1245 __le32 dcqcn_timeuot_us;
1246 __le32 qcn_timeuot_us;
1247 __le32 reserved[2];
1248};
1249
Tomer Tayara2e76992017-12-27 19:30:05 +02001250/* Slowpath Element (SPQE) */
Yuval Mintz351a4ded2016-06-02 10:23:29 +03001251struct slow_path_element {
1252 struct ramrod_header hdr;
1253 struct regpair data_ptr;
1254};
1255
1256/* Tstorm non-triggering VF zone */
1257struct tstorm_non_trigger_vf_zone {
Yuval Mintz05fafbf2016-08-19 09:33:31 +03001258 struct rdma_rcv_stats rdma_stats;
Yuval Mintz351a4ded2016-06-02 10:23:29 +03001259};
1260
1261struct tstorm_per_port_stat {
1262 struct regpair trunc_error_discard;
1263 struct regpair mac_error_discard;
1264 struct regpair mftag_filter_discard;
1265 struct regpair eth_mac_filter_discard;
Yuval Mintz05fafbf2016-08-19 09:33:31 +03001266 struct regpair ll2_mac_filter_discard;
1267 struct regpair ll2_conn_disabled_discard;
1268 struct regpair iscsi_irregular_pkt;
Mintz, Yuvalbe086e72017-03-11 18:39:18 +02001269 struct regpair fcoe_irregular_pkt;
Yuval Mintz05fafbf2016-08-19 09:33:31 +03001270 struct regpair roce_irregular_pkt;
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03001271 struct regpair iwarp_irregular_pkt;
Yuval Mintz351a4ded2016-06-02 10:23:29 +03001272 struct regpair eth_irregular_pkt;
Tomer Tayarda090912017-12-27 19:30:07 +02001273 struct regpair toe_irregular_pkt;
Yuval Mintz05fafbf2016-08-19 09:33:31 +03001274 struct regpair preroce_irregular_pkt;
Yuval Mintz351a4ded2016-06-02 10:23:29 +03001275 struct regpair eth_gre_tunn_filter_discard;
1276 struct regpair eth_vxlan_tunn_filter_discard;
1277 struct regpair eth_geneve_tunn_filter_discard;
Tomer Tayarda090912017-12-27 19:30:07 +02001278 struct regpair eth_gft_drop_pkt;
Yuval Mintz351a4ded2016-06-02 10:23:29 +03001279};
1280
1281/* Tstorm VF zone */
1282struct tstorm_vf_zone {
1283 struct tstorm_non_trigger_vf_zone non_trigger;
Manish Chopra464f6642016-04-14 01:38:29 -04001284};
1285
1286/* Tunnel classification scheme */
1287enum tunnel_clss {
1288 TUNNEL_CLSS_MAC_VLAN = 0,
1289 TUNNEL_CLSS_MAC_VNI,
1290 TUNNEL_CLSS_INNER_MAC_VLAN,
1291 TUNNEL_CLSS_INNER_MAC_VNI,
Yuval Mintz351a4ded2016-06-02 10:23:29 +03001292 TUNNEL_CLSS_MAC_VLAN_DUAL_STAGE,
Manish Chopra464f6642016-04-14 01:38:29 -04001293 MAX_TUNNEL_CLSS
1294};
1295
Yuval Mintz351a4ded2016-06-02 10:23:29 +03001296/* Ustorm non-triggering VF zone */
Yuval Mintz1408cc1f2016-05-11 16:36:14 +03001297struct ustorm_non_trigger_vf_zone {
1298 struct eth_ustorm_per_queue_stat eth_queue_stat;
1299 struct regpair vf_pf_msg_addr;
1300};
1301
Yuval Mintz351a4ded2016-06-02 10:23:29 +03001302/* Ustorm triggering VF zone */
Yuval Mintz1408cc1f2016-05-11 16:36:14 +03001303struct ustorm_trigger_vf_zone {
1304 u8 vf_pf_msg_valid;
1305 u8 reserved[7];
1306};
1307
Yuval Mintz351a4ded2016-06-02 10:23:29 +03001308/* Ustorm VF zone */
Yuval Mintz1408cc1f2016-05-11 16:36:14 +03001309struct ustorm_vf_zone {
1310 struct ustorm_non_trigger_vf_zone non_trigger;
1311 struct ustorm_trigger_vf_zone trigger;
1312};
1313
Yuval Mintz351a4ded2016-06-02 10:23:29 +03001314/* VF-PF channel data */
1315struct vf_pf_channel_data {
1316 __le32 ready;
1317 u8 valid;
1318 u8 reserved0;
1319 __le16 reserved1;
1320};
1321
1322/* Ramrod data for VF start ramrod */
Yuval Mintz1408cc1f2016-05-11 16:36:14 +03001323struct vf_start_ramrod_data {
1324 u8 vf_id;
1325 u8 enable_flr_ack;
1326 __le16 opaque_fid;
1327 u8 personality;
Yuval Mintz351a4ded2016-06-02 10:23:29 +03001328 u8 reserved[7];
1329 struct hsi_fp_ver_struct hsi_fp_ver;
1330
Yuval Mintz1408cc1f2016-05-11 16:36:14 +03001331};
1332
Yuval Mintz351a4ded2016-06-02 10:23:29 +03001333/* Ramrod data for VF start ramrod */
Yuval Mintz0b55e272016-05-11 16:36:15 +03001334struct vf_stop_ramrod_data {
1335 u8 vf_id;
1336 u8 reserved0;
1337 __le16 reserved1;
1338 __le32 reserved2;
1339};
1340
Tomer Tayara2e76992017-12-27 19:30:05 +02001341/* VF zone size mode */
Yuval Mintz05fafbf2016-08-19 09:33:31 +03001342enum vf_zone_size_mode {
1343 VF_ZONE_SIZE_MODE_DEFAULT,
1344 VF_ZONE_SIZE_MODE_DOUBLE,
1345 VF_ZONE_SIZE_MODE_QUAD,
1346 MAX_VF_ZONE_SIZE_MODE
1347};
1348
Tomer Tayara2e76992017-12-27 19:30:05 +02001349/* Attentions status block */
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02001350struct atten_status_block {
Yuval Mintz351a4ded2016-06-02 10:23:29 +03001351 __le32 atten_bits;
1352 __le32 atten_ack;
1353 __le16 reserved0;
1354 __le16 sb_index;
1355 __le32 reserved1;
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02001356};
1357
Yuval Mintz351a4ded2016-06-02 10:23:29 +03001358/* DMAE command */
1359struct dmae_cmd {
1360 __le32 opcode;
1361#define DMAE_CMD_SRC_MASK 0x1
1362#define DMAE_CMD_SRC_SHIFT 0
1363#define DMAE_CMD_DST_MASK 0x3
1364#define DMAE_CMD_DST_SHIFT 1
1365#define DMAE_CMD_C_DST_MASK 0x1
1366#define DMAE_CMD_C_DST_SHIFT 3
1367#define DMAE_CMD_CRC_RESET_MASK 0x1
1368#define DMAE_CMD_CRC_RESET_SHIFT 4
1369#define DMAE_CMD_SRC_ADDR_RESET_MASK 0x1
1370#define DMAE_CMD_SRC_ADDR_RESET_SHIFT 5
1371#define DMAE_CMD_DST_ADDR_RESET_MASK 0x1
1372#define DMAE_CMD_DST_ADDR_RESET_SHIFT 6
1373#define DMAE_CMD_COMP_FUNC_MASK 0x1
1374#define DMAE_CMD_COMP_FUNC_SHIFT 7
1375#define DMAE_CMD_COMP_WORD_EN_MASK 0x1
1376#define DMAE_CMD_COMP_WORD_EN_SHIFT 8
1377#define DMAE_CMD_COMP_CRC_EN_MASK 0x1
1378#define DMAE_CMD_COMP_CRC_EN_SHIFT 9
1379#define DMAE_CMD_COMP_CRC_OFFSET_MASK 0x7
1380#define DMAE_CMD_COMP_CRC_OFFSET_SHIFT 10
1381#define DMAE_CMD_RESERVED1_MASK 0x1
1382#define DMAE_CMD_RESERVED1_SHIFT 13
1383#define DMAE_CMD_ENDIANITY_MODE_MASK 0x3
1384#define DMAE_CMD_ENDIANITY_MODE_SHIFT 14
1385#define DMAE_CMD_ERR_HANDLING_MASK 0x3
1386#define DMAE_CMD_ERR_HANDLING_SHIFT 16
1387#define DMAE_CMD_PORT_ID_MASK 0x3
1388#define DMAE_CMD_PORT_ID_SHIFT 18
1389#define DMAE_CMD_SRC_PF_ID_MASK 0xF
1390#define DMAE_CMD_SRC_PF_ID_SHIFT 20
1391#define DMAE_CMD_DST_PF_ID_MASK 0xF
1392#define DMAE_CMD_DST_PF_ID_SHIFT 24
1393#define DMAE_CMD_SRC_VF_ID_VALID_MASK 0x1
1394#define DMAE_CMD_SRC_VF_ID_VALID_SHIFT 28
1395#define DMAE_CMD_DST_VF_ID_VALID_MASK 0x1
1396#define DMAE_CMD_DST_VF_ID_VALID_SHIFT 29
1397#define DMAE_CMD_RESERVED2_MASK 0x3
1398#define DMAE_CMD_RESERVED2_SHIFT 30
1399 __le32 src_addr_lo;
1400 __le32 src_addr_hi;
1401 __le32 dst_addr_lo;
1402 __le32 dst_addr_hi;
1403 __le16 length_dw;
1404 __le16 opcode_b;
1405#define DMAE_CMD_SRC_VF_ID_MASK 0xFF
1406#define DMAE_CMD_SRC_VF_ID_SHIFT 0
1407#define DMAE_CMD_DST_VF_ID_MASK 0xFF
1408#define DMAE_CMD_DST_VF_ID_SHIFT 8
1409 __le32 comp_addr_lo;
1410 __le32 comp_addr_hi;
1411 __le32 comp_val;
1412 __le32 crc32;
1413 __le32 crc_32_c;
1414 __le16 crc16;
1415 __le16 crc16_c;
1416 __le16 crc10;
1417 __le16 reserved;
1418 __le16 xsum16;
1419 __le16 xsum8;
1420};
1421
1422enum dmae_cmd_comp_crc_en_enum {
1423 dmae_cmd_comp_crc_disabled,
1424 dmae_cmd_comp_crc_enabled,
1425 MAX_DMAE_CMD_COMP_CRC_EN_ENUM
1426};
1427
1428enum dmae_cmd_comp_func_enum {
1429 dmae_cmd_comp_func_to_src,
1430 dmae_cmd_comp_func_to_dst,
1431 MAX_DMAE_CMD_COMP_FUNC_ENUM
1432};
1433
1434enum dmae_cmd_comp_word_en_enum {
1435 dmae_cmd_comp_word_disabled,
1436 dmae_cmd_comp_word_enabled,
1437 MAX_DMAE_CMD_COMP_WORD_EN_ENUM
1438};
1439
1440enum dmae_cmd_c_dst_enum {
1441 dmae_cmd_c_dst_pcie,
1442 dmae_cmd_c_dst_grc,
1443 MAX_DMAE_CMD_C_DST_ENUM
1444};
1445
1446enum dmae_cmd_dst_enum {
1447 dmae_cmd_dst_none_0,
1448 dmae_cmd_dst_pcie,
1449 dmae_cmd_dst_grc,
1450 dmae_cmd_dst_none_3,
1451 MAX_DMAE_CMD_DST_ENUM
1452};
1453
1454enum dmae_cmd_error_handling_enum {
1455 dmae_cmd_error_handling_send_regular_comp,
1456 dmae_cmd_error_handling_send_comp_with_err,
1457 dmae_cmd_error_handling_dont_send_comp,
1458 MAX_DMAE_CMD_ERROR_HANDLING_ENUM
1459};
1460
1461enum dmae_cmd_src_enum {
1462 dmae_cmd_src_pcie,
1463 dmae_cmd_src_grc,
1464 MAX_DMAE_CMD_SRC_ENUM
1465};
1466
Tomer Tayar21dd79e2017-12-27 19:30:06 +02001467struct e4_mstorm_core_conn_ag_ctx {
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03001468 u8 byte0;
1469 u8 byte1;
1470 u8 flags0;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02001471#define E4_MSTORM_CORE_CONN_AG_CTX_BIT0_MASK 0x1
1472#define E4_MSTORM_CORE_CONN_AG_CTX_BIT0_SHIFT 0
1473#define E4_MSTORM_CORE_CONN_AG_CTX_BIT1_MASK 0x1
1474#define E4_MSTORM_CORE_CONN_AG_CTX_BIT1_SHIFT 1
1475#define E4_MSTORM_CORE_CONN_AG_CTX_CF0_MASK 0x3
1476#define E4_MSTORM_CORE_CONN_AG_CTX_CF0_SHIFT 2
1477#define E4_MSTORM_CORE_CONN_AG_CTX_CF1_MASK 0x3
1478#define E4_MSTORM_CORE_CONN_AG_CTX_CF1_SHIFT 4
1479#define E4_MSTORM_CORE_CONN_AG_CTX_CF2_MASK 0x3
1480#define E4_MSTORM_CORE_CONN_AG_CTX_CF2_SHIFT 6
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03001481 u8 flags1;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02001482#define E4_MSTORM_CORE_CONN_AG_CTX_CF0EN_MASK 0x1
1483#define E4_MSTORM_CORE_CONN_AG_CTX_CF0EN_SHIFT 0
1484#define E4_MSTORM_CORE_CONN_AG_CTX_CF1EN_MASK 0x1
1485#define E4_MSTORM_CORE_CONN_AG_CTX_CF1EN_SHIFT 1
1486#define E4_MSTORM_CORE_CONN_AG_CTX_CF2EN_MASK 0x1
1487#define E4_MSTORM_CORE_CONN_AG_CTX_CF2EN_SHIFT 2
1488#define E4_MSTORM_CORE_CONN_AG_CTX_RULE0EN_MASK 0x1
1489#define E4_MSTORM_CORE_CONN_AG_CTX_RULE0EN_SHIFT 3
1490#define E4_MSTORM_CORE_CONN_AG_CTX_RULE1EN_MASK 0x1
1491#define E4_MSTORM_CORE_CONN_AG_CTX_RULE1EN_SHIFT 4
1492#define E4_MSTORM_CORE_CONN_AG_CTX_RULE2EN_MASK 0x1
1493#define E4_MSTORM_CORE_CONN_AG_CTX_RULE2EN_SHIFT 5
1494#define E4_MSTORM_CORE_CONN_AG_CTX_RULE3EN_MASK 0x1
1495#define E4_MSTORM_CORE_CONN_AG_CTX_RULE3EN_SHIFT 6
1496#define E4_MSTORM_CORE_CONN_AG_CTX_RULE4EN_MASK 0x1
1497#define E4_MSTORM_CORE_CONN_AG_CTX_RULE4EN_SHIFT 7
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03001498 __le16 word0;
1499 __le16 word1;
1500 __le32 reg0;
1501 __le32 reg1;
1502};
1503
Tomer Tayar21dd79e2017-12-27 19:30:06 +02001504struct e4_ystorm_core_conn_ag_ctx {
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03001505 u8 byte0;
1506 u8 byte1;
1507 u8 flags0;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02001508#define E4_YSTORM_CORE_CONN_AG_CTX_BIT0_MASK 0x1
1509#define E4_YSTORM_CORE_CONN_AG_CTX_BIT0_SHIFT 0
1510#define E4_YSTORM_CORE_CONN_AG_CTX_BIT1_MASK 0x1
1511#define E4_YSTORM_CORE_CONN_AG_CTX_BIT1_SHIFT 1
1512#define E4_YSTORM_CORE_CONN_AG_CTX_CF0_MASK 0x3
1513#define E4_YSTORM_CORE_CONN_AG_CTX_CF0_SHIFT 2
1514#define E4_YSTORM_CORE_CONN_AG_CTX_CF1_MASK 0x3
1515#define E4_YSTORM_CORE_CONN_AG_CTX_CF1_SHIFT 4
1516#define E4_YSTORM_CORE_CONN_AG_CTX_CF2_MASK 0x3
1517#define E4_YSTORM_CORE_CONN_AG_CTX_CF2_SHIFT 6
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03001518 u8 flags1;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02001519#define E4_YSTORM_CORE_CONN_AG_CTX_CF0EN_MASK 0x1
1520#define E4_YSTORM_CORE_CONN_AG_CTX_CF0EN_SHIFT 0
1521#define E4_YSTORM_CORE_CONN_AG_CTX_CF1EN_MASK 0x1
1522#define E4_YSTORM_CORE_CONN_AG_CTX_CF1EN_SHIFT 1
1523#define E4_YSTORM_CORE_CONN_AG_CTX_CF2EN_MASK 0x1
1524#define E4_YSTORM_CORE_CONN_AG_CTX_CF2EN_SHIFT 2
1525#define E4_YSTORM_CORE_CONN_AG_CTX_RULE0EN_MASK 0x1
1526#define E4_YSTORM_CORE_CONN_AG_CTX_RULE0EN_SHIFT 3
1527#define E4_YSTORM_CORE_CONN_AG_CTX_RULE1EN_MASK 0x1
1528#define E4_YSTORM_CORE_CONN_AG_CTX_RULE1EN_SHIFT 4
1529#define E4_YSTORM_CORE_CONN_AG_CTX_RULE2EN_MASK 0x1
1530#define E4_YSTORM_CORE_CONN_AG_CTX_RULE2EN_SHIFT 5
1531#define E4_YSTORM_CORE_CONN_AG_CTX_RULE3EN_MASK 0x1
1532#define E4_YSTORM_CORE_CONN_AG_CTX_RULE3EN_SHIFT 6
1533#define E4_YSTORM_CORE_CONN_AG_CTX_RULE4EN_MASK 0x1
1534#define E4_YSTORM_CORE_CONN_AG_CTX_RULE4EN_SHIFT 7
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03001535 u8 byte2;
1536 u8 byte3;
1537 __le16 word0;
1538 __le32 reg0;
1539 __le32 reg1;
1540 __le16 word1;
1541 __le16 word2;
1542 __le16 word3;
1543 __le16 word4;
1544 __le32 reg2;
1545 __le32 reg3;
1546};
1547
Yuval Mintz351a4ded2016-06-02 10:23:29 +03001548/* IGU cleanup command */
1549struct igu_cleanup {
1550 __le32 sb_id_and_flags;
1551#define IGU_CLEANUP_RESERVED0_MASK 0x7FFFFFF
1552#define IGU_CLEANUP_RESERVED0_SHIFT 0
1553#define IGU_CLEANUP_CLEANUP_SET_MASK 0x1
1554#define IGU_CLEANUP_CLEANUP_SET_SHIFT 27
1555#define IGU_CLEANUP_CLEANUP_TYPE_MASK 0x7
1556#define IGU_CLEANUP_CLEANUP_TYPE_SHIFT 28
1557#define IGU_CLEANUP_COMMAND_TYPE_MASK 0x1
1558#define IGU_CLEANUP_COMMAND_TYPE_SHIFT 31
1559 __le32 reserved1;
1560};
1561
1562/* IGU firmware driver command */
1563union igu_command {
1564 struct igu_prod_cons_update prod_cons_update;
1565 struct igu_cleanup cleanup;
1566};
1567
1568/* IGU firmware driver command */
1569struct igu_command_reg_ctrl {
1570 __le16 opaque_fid;
1571 __le16 igu_command_reg_ctrl_fields;
1572#define IGU_COMMAND_REG_CTRL_PXP_BAR_ADDR_MASK 0xFFF
1573#define IGU_COMMAND_REG_CTRL_PXP_BAR_ADDR_SHIFT 0
1574#define IGU_COMMAND_REG_CTRL_RESERVED_MASK 0x7
1575#define IGU_COMMAND_REG_CTRL_RESERVED_SHIFT 12
1576#define IGU_COMMAND_REG_CTRL_COMMAND_TYPE_MASK 0x1
1577#define IGU_COMMAND_REG_CTRL_COMMAND_TYPE_SHIFT 15
1578};
1579
1580/* IGU mapping line structure */
1581struct igu_mapping_line {
1582 __le32 igu_mapping_line_fields;
1583#define IGU_MAPPING_LINE_VALID_MASK 0x1
1584#define IGU_MAPPING_LINE_VALID_SHIFT 0
1585#define IGU_MAPPING_LINE_VECTOR_NUMBER_MASK 0xFF
1586#define IGU_MAPPING_LINE_VECTOR_NUMBER_SHIFT 1
1587#define IGU_MAPPING_LINE_FUNCTION_NUMBER_MASK 0xFF
1588#define IGU_MAPPING_LINE_FUNCTION_NUMBER_SHIFT 9
1589#define IGU_MAPPING_LINE_PF_VALID_MASK 0x1
1590#define IGU_MAPPING_LINE_PF_VALID_SHIFT 17
1591#define IGU_MAPPING_LINE_IPS_GROUP_MASK 0x3F
1592#define IGU_MAPPING_LINE_IPS_GROUP_SHIFT 18
1593#define IGU_MAPPING_LINE_RESERVED_MASK 0xFF
1594#define IGU_MAPPING_LINE_RESERVED_SHIFT 24
1595};
1596
1597/* IGU MSIX line structure */
1598struct igu_msix_vector {
1599 struct regpair address;
1600 __le32 data;
1601 __le32 msix_vector_fields;
1602#define IGU_MSIX_VECTOR_MASK_BIT_MASK 0x1
1603#define IGU_MSIX_VECTOR_MASK_BIT_SHIFT 0
1604#define IGU_MSIX_VECTOR_RESERVED0_MASK 0x7FFF
1605#define IGU_MSIX_VECTOR_RESERVED0_SHIFT 1
1606#define IGU_MSIX_VECTOR_STEERING_TAG_MASK 0xFF
1607#define IGU_MSIX_VECTOR_STEERING_TAG_SHIFT 16
1608#define IGU_MSIX_VECTOR_RESERVED1_MASK 0xFF
1609#define IGU_MSIX_VECTOR_RESERVED1_SHIFT 24
1610};
Yuval Mintz351a4ded2016-06-02 10:23:29 +03001611/* per encapsulation type enabling flags */
1612struct prs_reg_encapsulation_type_en {
1613 u8 flags;
1614#define PRS_REG_ENCAPSULATION_TYPE_EN_ETH_OVER_GRE_ENABLE_MASK 0x1
1615#define PRS_REG_ENCAPSULATION_TYPE_EN_ETH_OVER_GRE_ENABLE_SHIFT 0
1616#define PRS_REG_ENCAPSULATION_TYPE_EN_IP_OVER_GRE_ENABLE_MASK 0x1
1617#define PRS_REG_ENCAPSULATION_TYPE_EN_IP_OVER_GRE_ENABLE_SHIFT 1
1618#define PRS_REG_ENCAPSULATION_TYPE_EN_VXLAN_ENABLE_MASK 0x1
1619#define PRS_REG_ENCAPSULATION_TYPE_EN_VXLAN_ENABLE_SHIFT 2
1620#define PRS_REG_ENCAPSULATION_TYPE_EN_T_TAG_ENABLE_MASK 0x1
1621#define PRS_REG_ENCAPSULATION_TYPE_EN_T_TAG_ENABLE_SHIFT 3
1622#define PRS_REG_ENCAPSULATION_TYPE_EN_ETH_OVER_GENEVE_ENABLE_MASK 0x1
1623#define PRS_REG_ENCAPSULATION_TYPE_EN_ETH_OVER_GENEVE_ENABLE_SHIFT 4
1624#define PRS_REG_ENCAPSULATION_TYPE_EN_IP_OVER_GENEVE_ENABLE_MASK 0x1
1625#define PRS_REG_ENCAPSULATION_TYPE_EN_IP_OVER_GENEVE_ENABLE_SHIFT 5
1626#define PRS_REG_ENCAPSULATION_TYPE_EN_RESERVED_MASK 0x3
1627#define PRS_REG_ENCAPSULATION_TYPE_EN_RESERVED_SHIFT 6
1628};
1629
1630enum pxp_tph_st_hint {
1631 TPH_ST_HINT_BIDIR,
1632 TPH_ST_HINT_REQUESTER,
1633 TPH_ST_HINT_TARGET,
1634 TPH_ST_HINT_TARGET_PRIO,
1635 MAX_PXP_TPH_ST_HINT
1636};
1637
1638/* QM hardware structure of enable bypass credit mask */
1639struct qm_rf_bypass_mask {
1640 u8 flags;
1641#define QM_RF_BYPASS_MASK_LINEVOQ_MASK 0x1
1642#define QM_RF_BYPASS_MASK_LINEVOQ_SHIFT 0
1643#define QM_RF_BYPASS_MASK_RESERVED0_MASK 0x1
1644#define QM_RF_BYPASS_MASK_RESERVED0_SHIFT 1
1645#define QM_RF_BYPASS_MASK_PFWFQ_MASK 0x1
1646#define QM_RF_BYPASS_MASK_PFWFQ_SHIFT 2
1647#define QM_RF_BYPASS_MASK_VPWFQ_MASK 0x1
1648#define QM_RF_BYPASS_MASK_VPWFQ_SHIFT 3
1649#define QM_RF_BYPASS_MASK_PFRL_MASK 0x1
1650#define QM_RF_BYPASS_MASK_PFRL_SHIFT 4
1651#define QM_RF_BYPASS_MASK_VPQCNRL_MASK 0x1
1652#define QM_RF_BYPASS_MASK_VPQCNRL_SHIFT 5
1653#define QM_RF_BYPASS_MASK_FWPAUSE_MASK 0x1
1654#define QM_RF_BYPASS_MASK_FWPAUSE_SHIFT 6
1655#define QM_RF_BYPASS_MASK_RESERVED1_MASK 0x1
1656#define QM_RF_BYPASS_MASK_RESERVED1_SHIFT 7
1657};
1658
1659/* QM hardware structure of opportunistic credit mask */
1660struct qm_rf_opportunistic_mask {
1661 __le16 flags;
1662#define QM_RF_OPPORTUNISTIC_MASK_LINEVOQ_MASK 0x1
1663#define QM_RF_OPPORTUNISTIC_MASK_LINEVOQ_SHIFT 0
1664#define QM_RF_OPPORTUNISTIC_MASK_BYTEVOQ_MASK 0x1
1665#define QM_RF_OPPORTUNISTIC_MASK_BYTEVOQ_SHIFT 1
1666#define QM_RF_OPPORTUNISTIC_MASK_PFWFQ_MASK 0x1
1667#define QM_RF_OPPORTUNISTIC_MASK_PFWFQ_SHIFT 2
1668#define QM_RF_OPPORTUNISTIC_MASK_VPWFQ_MASK 0x1
1669#define QM_RF_OPPORTUNISTIC_MASK_VPWFQ_SHIFT 3
1670#define QM_RF_OPPORTUNISTIC_MASK_PFRL_MASK 0x1
1671#define QM_RF_OPPORTUNISTIC_MASK_PFRL_SHIFT 4
1672#define QM_RF_OPPORTUNISTIC_MASK_VPQCNRL_MASK 0x1
1673#define QM_RF_OPPORTUNISTIC_MASK_VPQCNRL_SHIFT 5
1674#define QM_RF_OPPORTUNISTIC_MASK_FWPAUSE_MASK 0x1
1675#define QM_RF_OPPORTUNISTIC_MASK_FWPAUSE_SHIFT 6
1676#define QM_RF_OPPORTUNISTIC_MASK_RESERVED0_MASK 0x1
1677#define QM_RF_OPPORTUNISTIC_MASK_RESERVED0_SHIFT 7
1678#define QM_RF_OPPORTUNISTIC_MASK_QUEUEEMPTY_MASK 0x1
1679#define QM_RF_OPPORTUNISTIC_MASK_QUEUEEMPTY_SHIFT 8
1680#define QM_RF_OPPORTUNISTIC_MASK_RESERVED1_MASK 0x7F
1681#define QM_RF_OPPORTUNISTIC_MASK_RESERVED1_SHIFT 9
1682};
1683
1684/* QM hardware structure of QM map memory */
Tomer Tayar21dd79e2017-12-27 19:30:06 +02001685struct qm_rf_pq_map_e4 {
Yuval Mintz351a4ded2016-06-02 10:23:29 +03001686 __le32 reg;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02001687#define QM_RF_PQ_MAP_E4_PQ_VALID_MASK 0x1
1688#define QM_RF_PQ_MAP_E4_PQ_VALID_SHIFT 0
1689#define QM_RF_PQ_MAP_E4_RL_ID_MASK 0xFF
1690#define QM_RF_PQ_MAP_E4_RL_ID_SHIFT 1
1691#define QM_RF_PQ_MAP_E4_VP_PQ_ID_MASK 0x1FF
1692#define QM_RF_PQ_MAP_E4_VP_PQ_ID_SHIFT 9
1693#define QM_RF_PQ_MAP_E4_VOQ_MASK 0x1F
1694#define QM_RF_PQ_MAP_E4_VOQ_SHIFT 18
1695#define QM_RF_PQ_MAP_E4_WRR_WEIGHT_GROUP_MASK 0x3
1696#define QM_RF_PQ_MAP_E4_WRR_WEIGHT_GROUP_SHIFT 23
1697#define QM_RF_PQ_MAP_E4_RL_VALID_MASK 0x1
1698#define QM_RF_PQ_MAP_E4_RL_VALID_SHIFT 25
1699#define QM_RF_PQ_MAP_E4_RESERVED_MASK 0x3F
1700#define QM_RF_PQ_MAP_E4_RESERVED_SHIFT 26
Yuval Mintz351a4ded2016-06-02 10:23:29 +03001701};
1702
1703/* Completion params for aggregated interrupt completion */
1704struct sdm_agg_int_comp_params {
1705 __le16 params;
1706#define SDM_AGG_INT_COMP_PARAMS_AGG_INT_INDEX_MASK 0x3F
1707#define SDM_AGG_INT_COMP_PARAMS_AGG_INT_INDEX_SHIFT 0
1708#define SDM_AGG_INT_COMP_PARAMS_AGG_VECTOR_ENABLE_MASK 0x1
1709#define SDM_AGG_INT_COMP_PARAMS_AGG_VECTOR_ENABLE_SHIFT 6
1710#define SDM_AGG_INT_COMP_PARAMS_AGG_VECTOR_BIT_MASK 0x1FF
1711#define SDM_AGG_INT_COMP_PARAMS_AGG_VECTOR_BIT_SHIFT 7
1712};
1713
1714/* SDM operation gen command (generate aggregative interrupt) */
1715struct sdm_op_gen {
1716 __le32 command;
1717#define SDM_OP_GEN_COMP_PARAM_MASK 0xFFFF
1718#define SDM_OP_GEN_COMP_PARAM_SHIFT 0
1719#define SDM_OP_GEN_COMP_TYPE_MASK 0xF
1720#define SDM_OP_GEN_COMP_TYPE_SHIFT 16
1721#define SDM_OP_GEN_RESERVED_MASK 0xFFF
1722#define SDM_OP_GEN_RESERVED_SHIFT 20
1723};
1724
Yuval Mintz351a4ded2016-06-02 10:23:29 +03001725/****************************************/
1726/* Debug Tools HSI constants and macros */
1727/****************************************/
1728
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02001729enum block_addr {
Yuval Mintz351a4ded2016-06-02 10:23:29 +03001730 GRCBASE_GRC = 0x50000,
1731 GRCBASE_MISCS = 0x9000,
1732 GRCBASE_MISC = 0x8000,
1733 GRCBASE_DBU = 0xa000,
1734 GRCBASE_PGLUE_B = 0x2a8000,
1735 GRCBASE_CNIG = 0x218000,
1736 GRCBASE_CPMU = 0x30000,
1737 GRCBASE_NCSI = 0x40000,
1738 GRCBASE_OPTE = 0x53000,
1739 GRCBASE_BMB = 0x540000,
1740 GRCBASE_PCIE = 0x54000,
1741 GRCBASE_MCP = 0xe00000,
1742 GRCBASE_MCP2 = 0x52000,
1743 GRCBASE_PSWHST = 0x2a0000,
1744 GRCBASE_PSWHST2 = 0x29e000,
1745 GRCBASE_PSWRD = 0x29c000,
1746 GRCBASE_PSWRD2 = 0x29d000,
1747 GRCBASE_PSWWR = 0x29a000,
1748 GRCBASE_PSWWR2 = 0x29b000,
1749 GRCBASE_PSWRQ = 0x280000,
1750 GRCBASE_PSWRQ2 = 0x240000,
1751 GRCBASE_PGLCS = 0x0,
1752 GRCBASE_DMAE = 0xc000,
1753 GRCBASE_PTU = 0x560000,
1754 GRCBASE_TCM = 0x1180000,
1755 GRCBASE_MCM = 0x1200000,
1756 GRCBASE_UCM = 0x1280000,
1757 GRCBASE_XCM = 0x1000000,
1758 GRCBASE_YCM = 0x1080000,
1759 GRCBASE_PCM = 0x1100000,
1760 GRCBASE_QM = 0x2f0000,
1761 GRCBASE_TM = 0x2c0000,
1762 GRCBASE_DORQ = 0x100000,
1763 GRCBASE_BRB = 0x340000,
1764 GRCBASE_SRC = 0x238000,
1765 GRCBASE_PRS = 0x1f0000,
1766 GRCBASE_TSDM = 0xfb0000,
1767 GRCBASE_MSDM = 0xfc0000,
1768 GRCBASE_USDM = 0xfd0000,
1769 GRCBASE_XSDM = 0xf80000,
1770 GRCBASE_YSDM = 0xf90000,
1771 GRCBASE_PSDM = 0xfa0000,
1772 GRCBASE_TSEM = 0x1700000,
1773 GRCBASE_MSEM = 0x1800000,
1774 GRCBASE_USEM = 0x1900000,
1775 GRCBASE_XSEM = 0x1400000,
1776 GRCBASE_YSEM = 0x1500000,
1777 GRCBASE_PSEM = 0x1600000,
1778 GRCBASE_RSS = 0x238800,
1779 GRCBASE_TMLD = 0x4d0000,
1780 GRCBASE_MULD = 0x4e0000,
1781 GRCBASE_YULD = 0x4c8000,
1782 GRCBASE_XYLD = 0x4c0000,
Tomer Tayarda090912017-12-27 19:30:07 +02001783 GRCBASE_PTLD = 0x5a0000,
1784 GRCBASE_YPLD = 0x5c0000,
Yuval Mintz351a4ded2016-06-02 10:23:29 +03001785 GRCBASE_PRM = 0x230000,
1786 GRCBASE_PBF_PB1 = 0xda0000,
1787 GRCBASE_PBF_PB2 = 0xda4000,
1788 GRCBASE_RPB = 0x23c000,
1789 GRCBASE_BTB = 0xdb0000,
1790 GRCBASE_PBF = 0xd80000,
1791 GRCBASE_RDIF = 0x300000,
1792 GRCBASE_TDIF = 0x310000,
1793 GRCBASE_CDU = 0x580000,
1794 GRCBASE_CCFC = 0x2e0000,
1795 GRCBASE_TCFC = 0x2d0000,
1796 GRCBASE_IGU = 0x180000,
1797 GRCBASE_CAU = 0x1c0000,
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03001798 GRCBASE_RGFS = 0xf00000,
1799 GRCBASE_RGSRC = 0x320000,
1800 GRCBASE_TGFS = 0xd00000,
1801 GRCBASE_TGSRC = 0x322000,
Yuval Mintz351a4ded2016-06-02 10:23:29 +03001802 GRCBASE_UMAC = 0x51000,
1803 GRCBASE_XMAC = 0x210000,
1804 GRCBASE_DBG = 0x10000,
1805 GRCBASE_NIG = 0x500000,
1806 GRCBASE_WOL = 0x600000,
1807 GRCBASE_BMBN = 0x610000,
1808 GRCBASE_IPC = 0x20000,
1809 GRCBASE_NWM = 0x800000,
1810 GRCBASE_NWS = 0x700000,
1811 GRCBASE_MS = 0x6a0000,
1812 GRCBASE_PHY_PCIE = 0x620000,
1813 GRCBASE_LED = 0x6b8000,
Mintz, Yuvalbe086e72017-03-11 18:39:18 +02001814 GRCBASE_AVS_WRAP = 0x6b0000,
Tomer Tayarda090912017-12-27 19:30:07 +02001815 GRCBASE_PXPREQBUS = 0x56000,
Yuval Mintz351a4ded2016-06-02 10:23:29 +03001816 GRCBASE_MISC_AEU = 0x8000,
1817 GRCBASE_BAR0_MAP = 0x1c00000,
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02001818 MAX_BLOCK_ADDR
1819};
1820
1821enum block_id {
1822 BLOCK_GRC,
1823 BLOCK_MISCS,
1824 BLOCK_MISC,
1825 BLOCK_DBU,
1826 BLOCK_PGLUE_B,
1827 BLOCK_CNIG,
1828 BLOCK_CPMU,
1829 BLOCK_NCSI,
1830 BLOCK_OPTE,
1831 BLOCK_BMB,
1832 BLOCK_PCIE,
1833 BLOCK_MCP,
1834 BLOCK_MCP2,
1835 BLOCK_PSWHST,
1836 BLOCK_PSWHST2,
1837 BLOCK_PSWRD,
1838 BLOCK_PSWRD2,
1839 BLOCK_PSWWR,
1840 BLOCK_PSWWR2,
1841 BLOCK_PSWRQ,
1842 BLOCK_PSWRQ2,
1843 BLOCK_PGLCS,
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02001844 BLOCK_DMAE,
Yuval Mintz351a4ded2016-06-02 10:23:29 +03001845 BLOCK_PTU,
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02001846 BLOCK_TCM,
1847 BLOCK_MCM,
1848 BLOCK_UCM,
1849 BLOCK_XCM,
1850 BLOCK_YCM,
1851 BLOCK_PCM,
1852 BLOCK_QM,
1853 BLOCK_TM,
1854 BLOCK_DORQ,
1855 BLOCK_BRB,
1856 BLOCK_SRC,
1857 BLOCK_PRS,
1858 BLOCK_TSDM,
1859 BLOCK_MSDM,
1860 BLOCK_USDM,
1861 BLOCK_XSDM,
1862 BLOCK_YSDM,
1863 BLOCK_PSDM,
1864 BLOCK_TSEM,
1865 BLOCK_MSEM,
1866 BLOCK_USEM,
1867 BLOCK_XSEM,
1868 BLOCK_YSEM,
1869 BLOCK_PSEM,
1870 BLOCK_RSS,
1871 BLOCK_TMLD,
1872 BLOCK_MULD,
1873 BLOCK_YULD,
1874 BLOCK_XYLD,
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03001875 BLOCK_PTLD,
1876 BLOCK_YPLD,
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02001877 BLOCK_PRM,
1878 BLOCK_PBF_PB1,
1879 BLOCK_PBF_PB2,
1880 BLOCK_RPB,
1881 BLOCK_BTB,
1882 BLOCK_PBF,
1883 BLOCK_RDIF,
1884 BLOCK_TDIF,
1885 BLOCK_CDU,
1886 BLOCK_CCFC,
1887 BLOCK_TCFC,
1888 BLOCK_IGU,
1889 BLOCK_CAU,
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03001890 BLOCK_RGFS,
1891 BLOCK_RGSRC,
1892 BLOCK_TGFS,
1893 BLOCK_TGSRC,
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02001894 BLOCK_UMAC,
1895 BLOCK_XMAC,
1896 BLOCK_DBG,
1897 BLOCK_NIG,
1898 BLOCK_WOL,
1899 BLOCK_BMBN,
1900 BLOCK_IPC,
1901 BLOCK_NWM,
1902 BLOCK_NWS,
1903 BLOCK_MS,
1904 BLOCK_PHY_PCIE,
Yuval Mintz351a4ded2016-06-02 10:23:29 +03001905 BLOCK_LED,
Mintz, Yuvalbe086e72017-03-11 18:39:18 +02001906 BLOCK_AVS_WRAP,
Tomer Tayarda090912017-12-27 19:30:07 +02001907 BLOCK_PXPREQBUS,
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02001908 BLOCK_MISC_AEU,
1909 BLOCK_BAR0_MAP,
1910 MAX_BLOCK_ID
1911};
1912
Yuval Mintz351a4ded2016-06-02 10:23:29 +03001913/* binary debug buffer types */
1914enum bin_dbg_buffer_type {
1915 BIN_BUF_DBG_MODE_TREE,
1916 BIN_BUF_DBG_DUMP_REG,
1917 BIN_BUF_DBG_DUMP_MEM,
1918 BIN_BUF_DBG_IDLE_CHK_REGS,
1919 BIN_BUF_DBG_IDLE_CHK_IMMS,
1920 BIN_BUF_DBG_IDLE_CHK_RULES,
1921 BIN_BUF_DBG_IDLE_CHK_PARSING_DATA,
1922 BIN_BUF_DBG_ATTN_BLOCKS,
1923 BIN_BUF_DBG_ATTN_REGS,
1924 BIN_BUF_DBG_ATTN_INDEXES,
1925 BIN_BUF_DBG_ATTN_NAME_OFFSETS,
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03001926 BIN_BUF_DBG_BUS_BLOCKS,
1927 BIN_BUF_DBG_BUS_LINES,
1928 BIN_BUF_DBG_BUS_BLOCKS_USER_DATA,
1929 BIN_BUF_DBG_BUS_LINE_NAME_OFFSETS,
Yuval Mintz351a4ded2016-06-02 10:23:29 +03001930 BIN_BUF_DBG_PARSING_STRINGS,
1931 MAX_BIN_DBG_BUFFER_TYPE
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02001932};
1933
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02001934
Yuval Mintz351a4ded2016-06-02 10:23:29 +03001935/* Attention bit mapping */
1936struct dbg_attn_bit_mapping {
Michal Kalderon50bc60c2018-03-28 11:42:16 +03001937 u16 data;
Yuval Mintz351a4ded2016-06-02 10:23:29 +03001938#define DBG_ATTN_BIT_MAPPING_VAL_MASK 0x7FFF
1939#define DBG_ATTN_BIT_MAPPING_VAL_SHIFT 0
1940#define DBG_ATTN_BIT_MAPPING_IS_UNUSED_BIT_CNT_MASK 0x1
1941#define DBG_ATTN_BIT_MAPPING_IS_UNUSED_BIT_CNT_SHIFT 15
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02001942};
1943
Yuval Mintz351a4ded2016-06-02 10:23:29 +03001944/* Attention block per-type data */
1945struct dbg_attn_block_type_data {
Michal Kalderon50bc60c2018-03-28 11:42:16 +03001946 u16 names_offset;
1947 u16 reserved1;
Yuval Mintz351a4ded2016-06-02 10:23:29 +03001948 u8 num_regs;
1949 u8 reserved2;
Michal Kalderon50bc60c2018-03-28 11:42:16 +03001950 u16 regs_offset;
1951
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02001952};
1953
Yuval Mintz351a4ded2016-06-02 10:23:29 +03001954/* Block attentions */
1955struct dbg_attn_block {
1956 struct dbg_attn_block_type_data per_type_data[2];
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02001957};
1958
Yuval Mintz351a4ded2016-06-02 10:23:29 +03001959/* Attention register result */
1960struct dbg_attn_reg_result {
Michal Kalderon50bc60c2018-03-28 11:42:16 +03001961 u32 data;
Yuval Mintz351a4ded2016-06-02 10:23:29 +03001962#define DBG_ATTN_REG_RESULT_STS_ADDRESS_MASK 0xFFFFFF
1963#define DBG_ATTN_REG_RESULT_STS_ADDRESS_SHIFT 0
Mintz, Yuvalbe086e72017-03-11 18:39:18 +02001964#define DBG_ATTN_REG_RESULT_NUM_REG_ATTN_MASK 0xFF
1965#define DBG_ATTN_REG_RESULT_NUM_REG_ATTN_SHIFT 24
Michal Kalderon50bc60c2018-03-28 11:42:16 +03001966 u16 block_attn_offset;
1967 u16 reserved;
1968 u32 sts_val;
1969 u32 mask_val;
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02001970};
1971
Yuval Mintz351a4ded2016-06-02 10:23:29 +03001972/* Attention block result */
1973struct dbg_attn_block_result {
1974 u8 block_id;
1975 u8 data;
1976#define DBG_ATTN_BLOCK_RESULT_ATTN_TYPE_MASK 0x3
1977#define DBG_ATTN_BLOCK_RESULT_ATTN_TYPE_SHIFT 0
1978#define DBG_ATTN_BLOCK_RESULT_NUM_REGS_MASK 0x3F
1979#define DBG_ATTN_BLOCK_RESULT_NUM_REGS_SHIFT 2
Michal Kalderon50bc60c2018-03-28 11:42:16 +03001980 u16 names_offset;
Yuval Mintz351a4ded2016-06-02 10:23:29 +03001981 struct dbg_attn_reg_result reg_results[15];
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02001982};
1983
Tomer Tayara2e76992017-12-27 19:30:05 +02001984/* Mode header */
Yuval Mintz351a4ded2016-06-02 10:23:29 +03001985struct dbg_mode_hdr {
Michal Kalderon50bc60c2018-03-28 11:42:16 +03001986 u16 data;
Yuval Mintz351a4ded2016-06-02 10:23:29 +03001987#define DBG_MODE_HDR_EVAL_MODE_MASK 0x1
1988#define DBG_MODE_HDR_EVAL_MODE_SHIFT 0
1989#define DBG_MODE_HDR_MODES_BUF_OFFSET_MASK 0x7FFF
1990#define DBG_MODE_HDR_MODES_BUF_OFFSET_SHIFT 1
1991};
1992
1993/* Attention register */
1994struct dbg_attn_reg {
1995 struct dbg_mode_hdr mode;
Michal Kalderon50bc60c2018-03-28 11:42:16 +03001996 u16 block_attn_offset;
1997 u32 data;
Yuval Mintz351a4ded2016-06-02 10:23:29 +03001998#define DBG_ATTN_REG_STS_ADDRESS_MASK 0xFFFFFF
1999#define DBG_ATTN_REG_STS_ADDRESS_SHIFT 0
Mintz, Yuvalbe086e72017-03-11 18:39:18 +02002000#define DBG_ATTN_REG_NUM_REG_ATTN_MASK 0xFF
2001#define DBG_ATTN_REG_NUM_REG_ATTN_SHIFT 24
Michal Kalderon50bc60c2018-03-28 11:42:16 +03002002 u32 sts_clr_address;
2003 u32 mask_address;
Yuval Mintz351a4ded2016-06-02 10:23:29 +03002004};
2005
Tomer Tayara2e76992017-12-27 19:30:05 +02002006/* Attention types */
Yuval Mintz351a4ded2016-06-02 10:23:29 +03002007enum dbg_attn_type {
2008 ATTN_TYPE_INTERRUPT,
2009 ATTN_TYPE_PARITY,
2010 MAX_DBG_ATTN_TYPE
2011};
2012
Tomer Tayara2e76992017-12-27 19:30:05 +02002013/* Debug Bus block data */
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03002014struct dbg_bus_block {
2015 u8 num_of_lines;
2016 u8 has_latency_events;
Michal Kalderon50bc60c2018-03-28 11:42:16 +03002017 u16 lines_offset;
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03002018};
2019
Tomer Tayara2e76992017-12-27 19:30:05 +02002020/* Debug Bus block user data */
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03002021struct dbg_bus_block_user_data {
2022 u8 num_of_lines;
2023 u8 has_latency_events;
Michal Kalderon50bc60c2018-03-28 11:42:16 +03002024 u16 names_offset;
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03002025};
2026
Tomer Tayara2e76992017-12-27 19:30:05 +02002027/* Block Debug line data */
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03002028struct dbg_bus_line {
2029 u8 data;
Tomer Tayara2e76992017-12-27 19:30:05 +02002030#define DBG_BUS_LINE_NUM_OF_GROUPS_MASK 0xF
2031#define DBG_BUS_LINE_NUM_OF_GROUPS_SHIFT 0
2032#define DBG_BUS_LINE_IS_256B_MASK 0x1
2033#define DBG_BUS_LINE_IS_256B_SHIFT 4
2034#define DBG_BUS_LINE_RESERVED_MASK 0x7
2035#define DBG_BUS_LINE_RESERVED_SHIFT 5
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03002036 u8 group_sizes;
2037};
2038
Tomer Tayara2e76992017-12-27 19:30:05 +02002039/* Condition header for registers dump */
Tomer Tayarc965db42016-09-07 16:36:24 +03002040struct dbg_dump_cond_hdr {
2041 struct dbg_mode_hdr mode; /* Mode header */
2042 u8 block_id; /* block ID */
2043 u8 data_size; /* size in dwords of the data following this header */
2044};
2045
Tomer Tayara2e76992017-12-27 19:30:05 +02002046/* Memory data for registers dump */
Tomer Tayarc965db42016-09-07 16:36:24 +03002047struct dbg_dump_mem {
Michal Kalderon50bc60c2018-03-28 11:42:16 +03002048 u32 dword0;
Tomer Tayara2e76992017-12-27 19:30:05 +02002049#define DBG_DUMP_MEM_ADDRESS_MASK 0xFFFFFF
2050#define DBG_DUMP_MEM_ADDRESS_SHIFT 0
2051#define DBG_DUMP_MEM_MEM_GROUP_ID_MASK 0xFF
2052#define DBG_DUMP_MEM_MEM_GROUP_ID_SHIFT 24
Michal Kalderon50bc60c2018-03-28 11:42:16 +03002053 u32 dword1;
Tomer Tayara2e76992017-12-27 19:30:05 +02002054#define DBG_DUMP_MEM_LENGTH_MASK 0xFFFFFF
2055#define DBG_DUMP_MEM_LENGTH_SHIFT 0
2056#define DBG_DUMP_MEM_WIDE_BUS_MASK 0x1
2057#define DBG_DUMP_MEM_WIDE_BUS_SHIFT 24
2058#define DBG_DUMP_MEM_RESERVED_MASK 0x7F
2059#define DBG_DUMP_MEM_RESERVED_SHIFT 25
Tomer Tayarc965db42016-09-07 16:36:24 +03002060};
2061
Tomer Tayara2e76992017-12-27 19:30:05 +02002062/* Register data for registers dump */
Tomer Tayarc965db42016-09-07 16:36:24 +03002063struct dbg_dump_reg {
Michal Kalderon50bc60c2018-03-28 11:42:16 +03002064 u32 data;
Tomer Tayara2e76992017-12-27 19:30:05 +02002065#define DBG_DUMP_REG_ADDRESS_MASK 0x7FFFFF
2066#define DBG_DUMP_REG_ADDRESS_SHIFT 0
2067#define DBG_DUMP_REG_WIDE_BUS_MASK 0x1
2068#define DBG_DUMP_REG_WIDE_BUS_SHIFT 23
2069#define DBG_DUMP_REG_LENGTH_MASK 0xFF
2070#define DBG_DUMP_REG_LENGTH_SHIFT 24
Tomer Tayarc965db42016-09-07 16:36:24 +03002071};
2072
Tomer Tayara2e76992017-12-27 19:30:05 +02002073/* Split header for registers dump */
Tomer Tayarc965db42016-09-07 16:36:24 +03002074struct dbg_dump_split_hdr {
Michal Kalderon50bc60c2018-03-28 11:42:16 +03002075 u32 hdr;
Tomer Tayara2e76992017-12-27 19:30:05 +02002076#define DBG_DUMP_SPLIT_HDR_DATA_SIZE_MASK 0xFFFFFF
2077#define DBG_DUMP_SPLIT_HDR_DATA_SIZE_SHIFT 0
2078#define DBG_DUMP_SPLIT_HDR_SPLIT_TYPE_ID_MASK 0xFF
2079#define DBG_DUMP_SPLIT_HDR_SPLIT_TYPE_ID_SHIFT 24
Tomer Tayarc965db42016-09-07 16:36:24 +03002080};
2081
Tomer Tayara2e76992017-12-27 19:30:05 +02002082/* Condition header for idle check */
Tomer Tayarc965db42016-09-07 16:36:24 +03002083struct dbg_idle_chk_cond_hdr {
2084 struct dbg_mode_hdr mode; /* Mode header */
Michal Kalderon50bc60c2018-03-28 11:42:16 +03002085 u16 data_size; /* size in dwords of the data following this header */
Tomer Tayarc965db42016-09-07 16:36:24 +03002086};
2087
2088/* Idle Check condition register */
2089struct dbg_idle_chk_cond_reg {
Michal Kalderon50bc60c2018-03-28 11:42:16 +03002090 u32 data;
Tomer Tayara2e76992017-12-27 19:30:05 +02002091#define DBG_IDLE_CHK_COND_REG_ADDRESS_MASK 0x7FFFFF
2092#define DBG_IDLE_CHK_COND_REG_ADDRESS_SHIFT 0
2093#define DBG_IDLE_CHK_COND_REG_WIDE_BUS_MASK 0x1
2094#define DBG_IDLE_CHK_COND_REG_WIDE_BUS_SHIFT 23
2095#define DBG_IDLE_CHK_COND_REG_BLOCK_ID_MASK 0xFF
2096#define DBG_IDLE_CHK_COND_REG_BLOCK_ID_SHIFT 24
Michal Kalderon50bc60c2018-03-28 11:42:16 +03002097 u16 num_entries;
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03002098 u8 entry_size;
2099 u8 start_entry;
Tomer Tayarc965db42016-09-07 16:36:24 +03002100};
2101
2102/* Idle Check info register */
2103struct dbg_idle_chk_info_reg {
Michal Kalderon50bc60c2018-03-28 11:42:16 +03002104 u32 data;
Tomer Tayara2e76992017-12-27 19:30:05 +02002105#define DBG_IDLE_CHK_INFO_REG_ADDRESS_MASK 0x7FFFFF
2106#define DBG_IDLE_CHK_INFO_REG_ADDRESS_SHIFT 0
2107#define DBG_IDLE_CHK_INFO_REG_WIDE_BUS_MASK 0x1
2108#define DBG_IDLE_CHK_INFO_REG_WIDE_BUS_SHIFT 23
2109#define DBG_IDLE_CHK_INFO_REG_BLOCK_ID_MASK 0xFF
2110#define DBG_IDLE_CHK_INFO_REG_BLOCK_ID_SHIFT 24
Michal Kalderon50bc60c2018-03-28 11:42:16 +03002111 u16 size; /* register size in dwords */
Tomer Tayarc965db42016-09-07 16:36:24 +03002112 struct dbg_mode_hdr mode; /* Mode header */
2113};
2114
2115/* Idle Check register */
2116union dbg_idle_chk_reg {
2117 struct dbg_idle_chk_cond_reg cond_reg; /* condition register */
2118 struct dbg_idle_chk_info_reg info_reg; /* info register */
2119};
2120
2121/* Idle Check result header */
2122struct dbg_idle_chk_result_hdr {
Michal Kalderon50bc60c2018-03-28 11:42:16 +03002123 u16 rule_id; /* Failing rule index */
2124 u16 mem_entry_id; /* Failing memory entry index */
Tomer Tayarc965db42016-09-07 16:36:24 +03002125 u8 num_dumped_cond_regs; /* number of dumped condition registers */
2126 u8 num_dumped_info_regs; /* number of dumped condition registers */
2127 u8 severity; /* from dbg_idle_chk_severity_types enum */
2128 u8 reserved;
2129};
2130
2131/* Idle Check result register header */
2132struct dbg_idle_chk_result_reg_hdr {
2133 u8 data;
2134#define DBG_IDLE_CHK_RESULT_REG_HDR_IS_MEM_MASK 0x1
2135#define DBG_IDLE_CHK_RESULT_REG_HDR_IS_MEM_SHIFT 0
2136#define DBG_IDLE_CHK_RESULT_REG_HDR_REG_ID_MASK 0x7F
2137#define DBG_IDLE_CHK_RESULT_REG_HDR_REG_ID_SHIFT 1
2138 u8 start_entry; /* index of the first checked entry */
Michal Kalderon50bc60c2018-03-28 11:42:16 +03002139 u16 size; /* register size in dwords */
Tomer Tayarc965db42016-09-07 16:36:24 +03002140};
2141
2142/* Idle Check rule */
2143struct dbg_idle_chk_rule {
Michal Kalderon50bc60c2018-03-28 11:42:16 +03002144 u16 rule_id; /* Idle Check rule ID */
Tomer Tayarc965db42016-09-07 16:36:24 +03002145 u8 severity; /* value from dbg_idle_chk_severity_types enum */
2146 u8 cond_id; /* Condition ID */
2147 u8 num_cond_regs; /* number of condition registers */
2148 u8 num_info_regs; /* number of info registers */
2149 u8 num_imms; /* number of immediates in the condition */
2150 u8 reserved1;
Michal Kalderon50bc60c2018-03-28 11:42:16 +03002151 u16 reg_offset; /* offset of this rules registers in the idle check
2152 * register array (in dbg_idle_chk_reg units).
2153 */
2154 u16 imm_offset; /* offset of this rules immediate values in the
2155 * immediate values array (in dwords).
2156 */
Tomer Tayarc965db42016-09-07 16:36:24 +03002157};
2158
2159/* Idle Check rule parsing data */
2160struct dbg_idle_chk_rule_parsing_data {
Michal Kalderon50bc60c2018-03-28 11:42:16 +03002161 u32 data;
Tomer Tayara2e76992017-12-27 19:30:05 +02002162#define DBG_IDLE_CHK_RULE_PARSING_DATA_HAS_FW_MSG_MASK 0x1
2163#define DBG_IDLE_CHK_RULE_PARSING_DATA_HAS_FW_MSG_SHIFT 0
2164#define DBG_IDLE_CHK_RULE_PARSING_DATA_STR_OFFSET_MASK 0x7FFFFFFF
2165#define DBG_IDLE_CHK_RULE_PARSING_DATA_STR_OFFSET_SHIFT 1
Tomer Tayarc965db42016-09-07 16:36:24 +03002166};
2167
Tomer Tayara2e76992017-12-27 19:30:05 +02002168/* Idle check severity types */
Tomer Tayarc965db42016-09-07 16:36:24 +03002169enum dbg_idle_chk_severity_types {
2170 /* idle check failure should cause an error */
2171 IDLE_CHK_SEVERITY_ERROR,
2172 /* idle check failure should cause an error only if theres no traffic */
2173 IDLE_CHK_SEVERITY_ERROR_NO_TRAFFIC,
2174 /* idle check failure should cause a warning */
2175 IDLE_CHK_SEVERITY_WARNING,
2176 MAX_DBG_IDLE_CHK_SEVERITY_TYPES
2177};
2178
2179/* Debug Bus block data */
2180struct dbg_bus_block_data {
Michal Kalderon50bc60c2018-03-28 11:42:16 +03002181 u16 data;
Tomer Tayara2e76992017-12-27 19:30:05 +02002182#define DBG_BUS_BLOCK_DATA_ENABLE_MASK_MASK 0xF
2183#define DBG_BUS_BLOCK_DATA_ENABLE_MASK_SHIFT 0
2184#define DBG_BUS_BLOCK_DATA_RIGHT_SHIFT_MASK 0xF
2185#define DBG_BUS_BLOCK_DATA_RIGHT_SHIFT_SHIFT 4
2186#define DBG_BUS_BLOCK_DATA_FORCE_VALID_MASK_MASK 0xF
2187#define DBG_BUS_BLOCK_DATA_FORCE_VALID_MASK_SHIFT 8
2188#define DBG_BUS_BLOCK_DATA_FORCE_FRAME_MASK_MASK 0xF
2189#define DBG_BUS_BLOCK_DATA_FORCE_FRAME_MASK_SHIFT 12
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03002190 u8 line_num;
2191 u8 hw_id;
Tomer Tayarc965db42016-09-07 16:36:24 +03002192};
2193
2194/* Debug Bus Clients */
2195enum dbg_bus_clients {
2196 DBG_BUS_CLIENT_RBCN,
2197 DBG_BUS_CLIENT_RBCP,
2198 DBG_BUS_CLIENT_RBCR,
2199 DBG_BUS_CLIENT_RBCT,
2200 DBG_BUS_CLIENT_RBCU,
2201 DBG_BUS_CLIENT_RBCF,
2202 DBG_BUS_CLIENT_RBCX,
2203 DBG_BUS_CLIENT_RBCS,
2204 DBG_BUS_CLIENT_RBCH,
2205 DBG_BUS_CLIENT_RBCZ,
2206 DBG_BUS_CLIENT_OTHER_ENGINE,
2207 DBG_BUS_CLIENT_TIMESTAMP,
2208 DBG_BUS_CLIENT_CPU,
2209 DBG_BUS_CLIENT_RBCY,
2210 DBG_BUS_CLIENT_RBCQ,
2211 DBG_BUS_CLIENT_RBCM,
2212 DBG_BUS_CLIENT_RBCB,
2213 DBG_BUS_CLIENT_RBCW,
2214 DBG_BUS_CLIENT_RBCV,
2215 MAX_DBG_BUS_CLIENTS
2216};
2217
Tomer Tayara2e76992017-12-27 19:30:05 +02002218/* Debug Bus constraint operation types */
Mintz, Yuvalbe086e72017-03-11 18:39:18 +02002219enum dbg_bus_constraint_ops {
2220 DBG_BUS_CONSTRAINT_OP_EQ,
2221 DBG_BUS_CONSTRAINT_OP_NE,
2222 DBG_BUS_CONSTRAINT_OP_LT,
2223 DBG_BUS_CONSTRAINT_OP_LTC,
2224 DBG_BUS_CONSTRAINT_OP_LE,
2225 DBG_BUS_CONSTRAINT_OP_LEC,
2226 DBG_BUS_CONSTRAINT_OP_GT,
2227 DBG_BUS_CONSTRAINT_OP_GTC,
2228 DBG_BUS_CONSTRAINT_OP_GE,
2229 DBG_BUS_CONSTRAINT_OP_GEC,
2230 MAX_DBG_BUS_CONSTRAINT_OPS
2231};
2232
Tomer Tayara2e76992017-12-27 19:30:05 +02002233/* Debug Bus trigger state data */
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03002234struct dbg_bus_trigger_state_data {
2235 u8 data;
Tomer Tayara2e76992017-12-27 19:30:05 +02002236#define DBG_BUS_TRIGGER_STATE_DATA_BLOCK_SHIFTED_ENABLE_MASK_MASK 0xF
2237#define DBG_BUS_TRIGGER_STATE_DATA_BLOCK_SHIFTED_ENABLE_MASK_SHIFT 0
2238#define DBG_BUS_TRIGGER_STATE_DATA_CONSTRAINT_DWORD_MASK_MASK 0xF
2239#define DBG_BUS_TRIGGER_STATE_DATA_CONSTRAINT_DWORD_MASK_SHIFT 4
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03002240};
2241
Tomer Tayarc965db42016-09-07 16:36:24 +03002242/* Debug Bus memory address */
2243struct dbg_bus_mem_addr {
Michal Kalderon50bc60c2018-03-28 11:42:16 +03002244 u32 lo;
2245 u32 hi;
Tomer Tayarc965db42016-09-07 16:36:24 +03002246};
2247
2248/* Debug Bus PCI buffer data */
2249struct dbg_bus_pci_buf_data {
2250 struct dbg_bus_mem_addr phys_addr; /* PCI buffer physical address */
2251 struct dbg_bus_mem_addr virt_addr; /* PCI buffer virtual address */
Michal Kalderon50bc60c2018-03-28 11:42:16 +03002252 u32 size; /* PCI buffer size in bytes */
Tomer Tayarc965db42016-09-07 16:36:24 +03002253};
2254
2255/* Debug Bus Storm EID range filter params */
2256struct dbg_bus_storm_eid_range_params {
2257 u8 min; /* Minimal event ID to filter on */
2258 u8 max; /* Maximal event ID to filter on */
2259};
2260
2261/* Debug Bus Storm EID mask filter params */
2262struct dbg_bus_storm_eid_mask_params {
2263 u8 val; /* Event ID value */
2264 u8 mask; /* Event ID mask. 1s in the mask = dont care bits. */
2265};
2266
2267/* Debug Bus Storm EID filter params */
2268union dbg_bus_storm_eid_params {
2269 struct dbg_bus_storm_eid_range_params range;
2270 struct dbg_bus_storm_eid_mask_params mask;
2271};
2272
2273/* Debug Bus Storm data */
2274struct dbg_bus_storm_data {
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03002275 u8 enabled;
2276 u8 mode;
Tomer Tayarc965db42016-09-07 16:36:24 +03002277 u8 hw_id;
2278 u8 eid_filter_en;
2279 u8 eid_range_not_mask;
2280 u8 cid_filter_en;
2281 union dbg_bus_storm_eid_params eid_filter_params;
Michal Kalderon50bc60c2018-03-28 11:42:16 +03002282 u32 cid;
Tomer Tayarc965db42016-09-07 16:36:24 +03002283};
2284
2285/* Debug Bus data */
2286struct dbg_bus_data {
Michal Kalderon50bc60c2018-03-28 11:42:16 +03002287 u32 app_version;
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03002288 u8 state;
2289 u8 hw_dwords;
Michal Kalderon50bc60c2018-03-28 11:42:16 +03002290 u16 hw_id_mask;
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03002291 u8 num_enabled_blocks;
2292 u8 num_enabled_storms;
2293 u8 target;
2294 u8 one_shot_en;
2295 u8 grc_input_en;
2296 u8 timestamp_input_en;
2297 u8 filter_en;
2298 u8 adding_filter;
2299 u8 filter_pre_trigger;
2300 u8 filter_post_trigger;
Michal Kalderon50bc60c2018-03-28 11:42:16 +03002301 u16 reserved;
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03002302 u8 trigger_en;
2303 struct dbg_bus_trigger_state_data trigger_states[3];
2304 u8 next_trigger_state;
2305 u8 next_constraint_id;
2306 u8 unify_inputs;
2307 u8 rcv_from_other_engine;
2308 struct dbg_bus_pci_buf_data pci_buf;
2309 struct dbg_bus_block_data blocks[88];
2310 struct dbg_bus_storm_data storms[6];
Tomer Tayarc965db42016-09-07 16:36:24 +03002311};
2312
Tomer Tayara2e76992017-12-27 19:30:05 +02002313/* Debug bus filter types */
Mintz, Yuvalbe086e72017-03-11 18:39:18 +02002314enum dbg_bus_filter_types {
2315 DBG_BUS_FILTER_TYPE_OFF,
2316 DBG_BUS_FILTER_TYPE_PRE,
2317 DBG_BUS_FILTER_TYPE_POST,
2318 DBG_BUS_FILTER_TYPE_ON,
2319 MAX_DBG_BUS_FILTER_TYPES
2320};
2321
Tomer Tayarc965db42016-09-07 16:36:24 +03002322/* Debug bus frame modes */
2323enum dbg_bus_frame_modes {
2324 DBG_BUS_FRAME_MODE_0HW_4ST = 0, /* 0 HW dwords, 4 Storm dwords */
2325 DBG_BUS_FRAME_MODE_4HW_0ST = 3, /* 4 HW dwords, 0 Storm dwords */
2326 DBG_BUS_FRAME_MODE_8HW_0ST = 4, /* 8 HW dwords, 0 Storm dwords */
2327 MAX_DBG_BUS_FRAME_MODES
2328};
2329
Tomer Tayara2e76992017-12-27 19:30:05 +02002330/* Debug bus other engine mode */
Mintz, Yuvalbe086e72017-03-11 18:39:18 +02002331enum dbg_bus_other_engine_modes {
2332 DBG_BUS_OTHER_ENGINE_MODE_NONE,
2333 DBG_BUS_OTHER_ENGINE_MODE_DOUBLE_BW_TX,
2334 DBG_BUS_OTHER_ENGINE_MODE_DOUBLE_BW_RX,
2335 DBG_BUS_OTHER_ENGINE_MODE_CROSS_ENGINE_TX,
2336 DBG_BUS_OTHER_ENGINE_MODE_CROSS_ENGINE_RX,
2337 MAX_DBG_BUS_OTHER_ENGINE_MODES
2338};
2339
Tomer Tayara2e76992017-12-27 19:30:05 +02002340/* Debug bus post-trigger recording types */
Mintz, Yuvalbe086e72017-03-11 18:39:18 +02002341enum dbg_bus_post_trigger_types {
2342 DBG_BUS_POST_TRIGGER_RECORD,
2343 DBG_BUS_POST_TRIGGER_DROP,
2344 MAX_DBG_BUS_POST_TRIGGER_TYPES
2345};
2346
Tomer Tayara2e76992017-12-27 19:30:05 +02002347/* Debug bus pre-trigger recording types */
Mintz, Yuvalbe086e72017-03-11 18:39:18 +02002348enum dbg_bus_pre_trigger_types {
2349 DBG_BUS_PRE_TRIGGER_START_FROM_ZERO,
2350 DBG_BUS_PRE_TRIGGER_NUM_CHUNKS,
2351 DBG_BUS_PRE_TRIGGER_DROP,
2352 MAX_DBG_BUS_PRE_TRIGGER_TYPES
2353};
2354
Tomer Tayara2e76992017-12-27 19:30:05 +02002355/* Debug bus SEMI frame modes */
Mintz, Yuvalbe086e72017-03-11 18:39:18 +02002356enum dbg_bus_semi_frame_modes {
Tomer Tayara2e76992017-12-27 19:30:05 +02002357 DBG_BUS_SEMI_FRAME_MODE_0SLOW_4FAST = 0,
2358 DBG_BUS_SEMI_FRAME_MODE_4SLOW_0FAST = 3,
Mintz, Yuvalbe086e72017-03-11 18:39:18 +02002359 MAX_DBG_BUS_SEMI_FRAME_MODES
2360};
2361
Tomer Tayarc965db42016-09-07 16:36:24 +03002362/* Debug bus states */
2363enum dbg_bus_states {
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03002364 DBG_BUS_STATE_IDLE,
2365 DBG_BUS_STATE_READY,
2366 DBG_BUS_STATE_RECORDING,
2367 DBG_BUS_STATE_STOPPED,
Tomer Tayarc965db42016-09-07 16:36:24 +03002368 MAX_DBG_BUS_STATES
2369};
2370
Tomer Tayara2e76992017-12-27 19:30:05 +02002371/* Debug Bus Storm modes */
Mintz, Yuvalbe086e72017-03-11 18:39:18 +02002372enum dbg_bus_storm_modes {
2373 DBG_BUS_STORM_MODE_PRINTF,
2374 DBG_BUS_STORM_MODE_PRAM_ADDR,
2375 DBG_BUS_STORM_MODE_DRA_RW,
2376 DBG_BUS_STORM_MODE_DRA_W,
2377 DBG_BUS_STORM_MODE_LD_ST_ADDR,
2378 DBG_BUS_STORM_MODE_DRA_FSM,
2379 DBG_BUS_STORM_MODE_RH,
2380 DBG_BUS_STORM_MODE_FOC,
2381 DBG_BUS_STORM_MODE_EXT_STORE,
2382 MAX_DBG_BUS_STORM_MODES
2383};
2384
Tomer Tayarc965db42016-09-07 16:36:24 +03002385/* Debug bus target IDs */
2386enum dbg_bus_targets {
Tomer Tayarc965db42016-09-07 16:36:24 +03002387 DBG_BUS_TARGET_ID_INT_BUF,
Tomer Tayarc965db42016-09-07 16:36:24 +03002388 DBG_BUS_TARGET_ID_NIG,
Tomer Tayarc965db42016-09-07 16:36:24 +03002389 DBG_BUS_TARGET_ID_PCI,
2390 MAX_DBG_BUS_TARGETS
2391};
2392
2393/* GRC Dump data */
2394struct dbg_grc_data {
Mintz, Yuvalbe086e72017-03-11 18:39:18 +02002395 u8 params_initialized;
2396 u8 reserved1;
Michal Kalderon50bc60c2018-03-28 11:42:16 +03002397 u16 reserved2;
2398 u32 param_val[48];
Tomer Tayarc965db42016-09-07 16:36:24 +03002399};
2400
2401/* Debug GRC params */
2402enum dbg_grc_params {
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03002403 DBG_GRC_PARAM_DUMP_TSTORM,
2404 DBG_GRC_PARAM_DUMP_MSTORM,
2405 DBG_GRC_PARAM_DUMP_USTORM,
2406 DBG_GRC_PARAM_DUMP_XSTORM,
2407 DBG_GRC_PARAM_DUMP_YSTORM,
2408 DBG_GRC_PARAM_DUMP_PSTORM,
2409 DBG_GRC_PARAM_DUMP_REGS,
2410 DBG_GRC_PARAM_DUMP_RAM,
2411 DBG_GRC_PARAM_DUMP_PBUF,
2412 DBG_GRC_PARAM_DUMP_IOR,
2413 DBG_GRC_PARAM_DUMP_VFC,
2414 DBG_GRC_PARAM_DUMP_CM_CTX,
2415 DBG_GRC_PARAM_DUMP_PXP,
2416 DBG_GRC_PARAM_DUMP_RSS,
2417 DBG_GRC_PARAM_DUMP_CAU,
2418 DBG_GRC_PARAM_DUMP_QM,
2419 DBG_GRC_PARAM_DUMP_MCP,
Michal Kalderon50bc60c2018-03-28 11:42:16 +03002420 DBG_GRC_PARAM_MCP_TRACE_META_SIZE,
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03002421 DBG_GRC_PARAM_DUMP_CFC,
2422 DBG_GRC_PARAM_DUMP_IGU,
2423 DBG_GRC_PARAM_DUMP_BRB,
2424 DBG_GRC_PARAM_DUMP_BTB,
2425 DBG_GRC_PARAM_DUMP_BMB,
2426 DBG_GRC_PARAM_DUMP_NIG,
2427 DBG_GRC_PARAM_DUMP_MULD,
2428 DBG_GRC_PARAM_DUMP_PRS,
2429 DBG_GRC_PARAM_DUMP_DMAE,
2430 DBG_GRC_PARAM_DUMP_TM,
2431 DBG_GRC_PARAM_DUMP_SDM,
2432 DBG_GRC_PARAM_DUMP_DIF,
2433 DBG_GRC_PARAM_DUMP_STATIC,
2434 DBG_GRC_PARAM_UNSTALL,
2435 DBG_GRC_PARAM_NUM_LCIDS,
2436 DBG_GRC_PARAM_NUM_LTIDS,
Tomer Tayarc965db42016-09-07 16:36:24 +03002437 DBG_GRC_PARAM_EXCLUDE_ALL,
Tomer Tayarc965db42016-09-07 16:36:24 +03002438 DBG_GRC_PARAM_CRASH,
Tomer Tayarc965db42016-09-07 16:36:24 +03002439 DBG_GRC_PARAM_PARITY_SAFE,
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03002440 DBG_GRC_PARAM_DUMP_CM,
2441 DBG_GRC_PARAM_DUMP_PHY,
Mintz, Yuvalbe086e72017-03-11 18:39:18 +02002442 DBG_GRC_PARAM_NO_MCP,
2443 DBG_GRC_PARAM_NO_FW_VER,
Tomer Tayarc965db42016-09-07 16:36:24 +03002444 MAX_DBG_GRC_PARAMS
2445};
2446
2447/* Debug reset registers */
2448enum dbg_reset_regs {
2449 DBG_RESET_REG_MISCS_PL_UA,
2450 DBG_RESET_REG_MISCS_PL_HV,
2451 DBG_RESET_REG_MISCS_PL_HV_2,
2452 DBG_RESET_REG_MISC_PL_UA,
2453 DBG_RESET_REG_MISC_PL_HV,
2454 DBG_RESET_REG_MISC_PL_PDA_VMAIN_1,
2455 DBG_RESET_REG_MISC_PL_PDA_VMAIN_2,
2456 DBG_RESET_REG_MISC_PL_PDA_VAUX,
2457 MAX_DBG_RESET_REGS
2458};
2459
Yuval Mintz351a4ded2016-06-02 10:23:29 +03002460/* Debug status codes */
2461enum dbg_status {
2462 DBG_STATUS_OK,
2463 DBG_STATUS_APP_VERSION_NOT_SET,
2464 DBG_STATUS_UNSUPPORTED_APP_VERSION,
2465 DBG_STATUS_DBG_BLOCK_NOT_RESET,
2466 DBG_STATUS_INVALID_ARGS,
2467 DBG_STATUS_OUTPUT_ALREADY_SET,
2468 DBG_STATUS_INVALID_PCI_BUF_SIZE,
2469 DBG_STATUS_PCI_BUF_ALLOC_FAILED,
2470 DBG_STATUS_PCI_BUF_NOT_ALLOCATED,
2471 DBG_STATUS_TOO_MANY_INPUTS,
2472 DBG_STATUS_INPUT_OVERLAP,
2473 DBG_STATUS_HW_ONLY_RECORDING,
2474 DBG_STATUS_STORM_ALREADY_ENABLED,
2475 DBG_STATUS_STORM_NOT_ENABLED,
2476 DBG_STATUS_BLOCK_ALREADY_ENABLED,
2477 DBG_STATUS_BLOCK_NOT_ENABLED,
2478 DBG_STATUS_NO_INPUT_ENABLED,
2479 DBG_STATUS_NO_FILTER_TRIGGER_64B,
2480 DBG_STATUS_FILTER_ALREADY_ENABLED,
2481 DBG_STATUS_TRIGGER_ALREADY_ENABLED,
2482 DBG_STATUS_TRIGGER_NOT_ENABLED,
2483 DBG_STATUS_CANT_ADD_CONSTRAINT,
2484 DBG_STATUS_TOO_MANY_TRIGGER_STATES,
2485 DBG_STATUS_TOO_MANY_CONSTRAINTS,
2486 DBG_STATUS_RECORDING_NOT_STARTED,
2487 DBG_STATUS_DATA_DIDNT_TRIGGER,
2488 DBG_STATUS_NO_DATA_RECORDED,
2489 DBG_STATUS_DUMP_BUF_TOO_SMALL,
2490 DBG_STATUS_DUMP_NOT_CHUNK_ALIGNED,
2491 DBG_STATUS_UNKNOWN_CHIP,
2492 DBG_STATUS_VIRT_MEM_ALLOC_FAILED,
2493 DBG_STATUS_BLOCK_IN_RESET,
2494 DBG_STATUS_INVALID_TRACE_SIGNATURE,
2495 DBG_STATUS_INVALID_NVRAM_BUNDLE,
2496 DBG_STATUS_NVRAM_GET_IMAGE_FAILED,
2497 DBG_STATUS_NON_ALIGNED_NVRAM_IMAGE,
2498 DBG_STATUS_NVRAM_READ_FAILED,
2499 DBG_STATUS_IDLE_CHK_PARSE_FAILED,
2500 DBG_STATUS_MCP_TRACE_BAD_DATA,
2501 DBG_STATUS_MCP_TRACE_NO_META,
2502 DBG_STATUS_MCP_COULD_NOT_HALT,
2503 DBG_STATUS_MCP_COULD_NOT_RESUME,
Tomer Tayarda090912017-12-27 19:30:07 +02002504 DBG_STATUS_RESERVED2,
Yuval Mintz351a4ded2016-06-02 10:23:29 +03002505 DBG_STATUS_SEMI_FIFO_NOT_EMPTY,
2506 DBG_STATUS_IGU_FIFO_BAD_DATA,
2507 DBG_STATUS_MCP_COULD_NOT_MASK_PRTY,
2508 DBG_STATUS_FW_ASSERTS_PARSE_FAILED,
2509 DBG_STATUS_REG_FIFO_BAD_DATA,
2510 DBG_STATUS_PROTECTION_OVERRIDE_BAD_DATA,
2511 DBG_STATUS_DBG_ARRAY_NOT_SET,
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03002512 DBG_STATUS_FILTER_BUG,
2513 DBG_STATUS_NON_MATCHING_LINES,
2514 DBG_STATUS_INVALID_TRIGGER_DWORD_OFFSET,
2515 DBG_STATUS_DBG_BUS_IN_USE,
Yuval Mintz351a4ded2016-06-02 10:23:29 +03002516 MAX_DBG_STATUS
2517};
2518
Tomer Tayarc965db42016-09-07 16:36:24 +03002519/* Debug Storms IDs */
2520enum dbg_storms {
2521 DBG_TSTORM_ID,
2522 DBG_MSTORM_ID,
2523 DBG_USTORM_ID,
2524 DBG_XSTORM_ID,
2525 DBG_YSTORM_ID,
2526 DBG_PSTORM_ID,
2527 MAX_DBG_STORMS
2528};
2529
2530/* Idle Check data */
2531struct idle_chk_data {
Michal Kalderon50bc60c2018-03-28 11:42:16 +03002532 u32 buf_size;
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03002533 u8 buf_size_set;
Tomer Tayarc965db42016-09-07 16:36:24 +03002534 u8 reserved1;
Michal Kalderon50bc60c2018-03-28 11:42:16 +03002535 u16 reserved2;
Tomer Tayarc965db42016-09-07 16:36:24 +03002536};
2537
2538/* Debug Tools data (per HW function) */
2539struct dbg_tools_data {
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03002540 struct dbg_grc_data grc;
2541 struct dbg_bus_data bus;
2542 struct idle_chk_data idle_chk;
2543 u8 mode_enable[40];
2544 u8 block_in_reset[88];
2545 u8 chip_id;
2546 u8 platform_id;
2547 u8 initialized;
Tomer Tayarda090912017-12-27 19:30:07 +02002548 u8 use_dmae;
Michal Kalderon50bc60c2018-03-28 11:42:16 +03002549 u32 num_regs_read;
Tomer Tayarc965db42016-09-07 16:36:24 +03002550};
2551
Yuval Mintz351a4ded2016-06-02 10:23:29 +03002552/********************************/
2553/* HSI Init Functions constants */
2554/********************************/
2555
2556/* Number of VLAN priorities */
2557#define NUM_OF_VLAN_PRIORITIES 8
2558
Tomer Tayara2e76992017-12-27 19:30:05 +02002559/* BRB RAM init requirements */
Yuval Mintz05fafbf2016-08-19 09:33:31 +03002560struct init_brb_ram_req {
Michal Kalderon50bc60c2018-03-28 11:42:16 +03002561 u32 guranteed_per_tc;
2562 u32 headroom_per_tc;
2563 u32 min_pkt_size;
2564 u32 max_ports_per_engine;
Yuval Mintz05fafbf2016-08-19 09:33:31 +03002565 u8 num_active_tcs[MAX_NUM_PORTS];
2566};
2567
Tomer Tayara2e76992017-12-27 19:30:05 +02002568/* ETS per-TC init requirements */
Yuval Mintz05fafbf2016-08-19 09:33:31 +03002569struct init_ets_tc_req {
2570 u8 use_sp;
2571 u8 use_wfq;
Michal Kalderon50bc60c2018-03-28 11:42:16 +03002572 u16 weight;
Yuval Mintz05fafbf2016-08-19 09:33:31 +03002573};
2574
Tomer Tayara2e76992017-12-27 19:30:05 +02002575/* ETS init requirements */
Yuval Mintz05fafbf2016-08-19 09:33:31 +03002576struct init_ets_req {
Michal Kalderon50bc60c2018-03-28 11:42:16 +03002577 u32 mtu;
Yuval Mintz05fafbf2016-08-19 09:33:31 +03002578 struct init_ets_tc_req tc_req[NUM_OF_TCS];
2579};
2580
Tomer Tayara2e76992017-12-27 19:30:05 +02002581/* NIG LB RL init requirements */
Yuval Mintz05fafbf2016-08-19 09:33:31 +03002582struct init_nig_lb_rl_req {
Michal Kalderon50bc60c2018-03-28 11:42:16 +03002583 u16 lb_mac_rate;
2584 u16 lb_rate;
2585 u32 mtu;
2586 u16 tc_rate[NUM_OF_PHYS_TCS];
Yuval Mintz05fafbf2016-08-19 09:33:31 +03002587};
2588
Tomer Tayara2e76992017-12-27 19:30:05 +02002589/* NIG TC mapping for each priority */
Yuval Mintz05fafbf2016-08-19 09:33:31 +03002590struct init_nig_pri_tc_map_entry {
2591 u8 tc_id;
2592 u8 valid;
2593};
2594
Tomer Tayara2e76992017-12-27 19:30:05 +02002595/* NIG priority to TC map init requirements */
Yuval Mintz05fafbf2016-08-19 09:33:31 +03002596struct init_nig_pri_tc_map_req {
2597 struct init_nig_pri_tc_map_entry pri[NUM_OF_VLAN_PRIORITIES];
2598};
2599
Tomer Tayara2e76992017-12-27 19:30:05 +02002600/* QM per-port init parameters */
Yuval Mintz351a4ded2016-06-02 10:23:29 +03002601struct init_qm_port_params {
2602 u8 active;
2603 u8 active_phys_tcs;
Michal Kalderon50bc60c2018-03-28 11:42:16 +03002604 u16 num_pbf_cmd_lines;
2605 u16 num_btb_blocks;
2606 u16 reserved;
Yuval Mintz351a4ded2016-06-02 10:23:29 +03002607};
2608
2609/* QM per-PQ init parameters */
2610struct init_qm_pq_params {
2611 u8 vport_id;
2612 u8 tc_id;
2613 u8 wrr_group;
2614 u8 rl_valid;
Michal Kalderon50bc60c2018-03-28 11:42:16 +03002615 u8 port_id;
2616 u8 reserved0;
2617 u16 reserved1;
Yuval Mintz351a4ded2016-06-02 10:23:29 +03002618};
2619
2620/* QM per-vport init parameters */
2621struct init_qm_vport_params {
Michal Kalderon50bc60c2018-03-28 11:42:16 +03002622 u32 vport_rl;
2623 u16 vport_wfq;
2624 u16 first_tx_pq_id[NUM_OF_TCS];
Yuval Mintz351a4ded2016-06-02 10:23:29 +03002625};
2626
2627/**************************************/
2628/* Init Tool HSI constants and macros */
2629/**************************************/
2630
2631/* Width of GRC address in bits (addresses are specified in dwords) */
2632#define GRC_ADDR_BITS 23
Yuval Mintz05fafbf2016-08-19 09:33:31 +03002633#define MAX_GRC_ADDR (BIT(GRC_ADDR_BITS) - 1)
Yuval Mintz351a4ded2016-06-02 10:23:29 +03002634
2635/* indicates an init that should be applied to any phase ID */
2636#define ANY_PHASE_ID 0xffff
2637
2638/* Max size in dwords of a zipped array */
2639#define MAX_ZIPPED_SIZE 8192
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03002640enum chip_ids {
2641 CHIP_BB,
2642 CHIP_K2,
2643 CHIP_RESERVED,
2644 MAX_CHIP_IDS
2645};
Yuval Mintz351a4ded2016-06-02 10:23:29 +03002646
Tomer Tayarc965db42016-09-07 16:36:24 +03002647struct fw_asserts_ram_section {
Michal Kalderon50bc60c2018-03-28 11:42:16 +03002648 u16 section_ram_line_offset;
2649 u16 section_ram_line_size;
Tomer Tayarc965db42016-09-07 16:36:24 +03002650 u8 list_dword_offset;
2651 u8 list_element_dword_size;
2652 u8 list_num_elements;
2653 u8 list_next_index_dword_offset;
2654};
2655
2656struct fw_ver_num {
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03002657 u8 major;
2658 u8 minor;
2659 u8 rev;
2660 u8 eng;
Tomer Tayarc965db42016-09-07 16:36:24 +03002661};
2662
2663struct fw_ver_info {
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03002664 __le16 tools_ver;
2665 u8 image_id;
Tomer Tayarc965db42016-09-07 16:36:24 +03002666 u8 reserved1;
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03002667 struct fw_ver_num num;
2668 __le32 timestamp;
Tomer Tayarc965db42016-09-07 16:36:24 +03002669 __le32 reserved2;
2670};
2671
2672struct fw_info {
2673 struct fw_ver_info ver;
2674 struct fw_asserts_ram_section fw_asserts_section;
2675};
2676
2677struct fw_info_location {
2678 __le32 grc_addr;
2679 __le32 size;
2680};
2681
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02002682enum init_modes {
Yuval Mintz351a4ded2016-06-02 10:23:29 +03002683 MODE_RESERVED,
Mintz, Yuval9c79dda2017-03-14 16:23:54 +02002684 MODE_BB,
Tomer Tayarc965db42016-09-07 16:36:24 +03002685 MODE_K2,
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02002686 MODE_ASIC,
Tomer Tayarc965db42016-09-07 16:36:24 +03002687 MODE_RESERVED2,
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02002688 MODE_RESERVED3,
2689 MODE_RESERVED4,
2690 MODE_RESERVED5,
2691 MODE_SF,
2692 MODE_MF_SD,
2693 MODE_MF_SI,
2694 MODE_PORTS_PER_ENG_1,
2695 MODE_PORTS_PER_ENG_2,
2696 MODE_PORTS_PER_ENG_4,
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02002697 MODE_100G,
Tomer Tayarc965db42016-09-07 16:36:24 +03002698 MODE_RESERVED6,
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02002699 MAX_INIT_MODES
2700};
2701
2702enum init_phases {
2703 PHASE_ENGINE,
2704 PHASE_PORT,
2705 PHASE_PF,
Yuval Mintz1408cc1f2016-05-11 16:36:14 +03002706 PHASE_VF,
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02002707 PHASE_QM_PF,
2708 MAX_INIT_PHASES
2709};
2710
Yuval Mintz351a4ded2016-06-02 10:23:29 +03002711enum init_split_types {
2712 SPLIT_TYPE_NONE,
2713 SPLIT_TYPE_PORT,
2714 SPLIT_TYPE_PF,
2715 SPLIT_TYPE_PORT_PF,
2716 SPLIT_TYPE_VF,
2717 MAX_INIT_SPLIT_TYPES
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02002718};
2719
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02002720/* Binary buffer header */
2721struct bin_buffer_hdr {
Michal Kalderon50bc60c2018-03-28 11:42:16 +03002722 u32 offset;
2723 u32 length;
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02002724};
2725
Tomer Tayara2e76992017-12-27 19:30:05 +02002726/* Binary init buffer types */
Yuval Mintz351a4ded2016-06-02 10:23:29 +03002727enum bin_init_buffer_type {
Yuval Mintz05fafbf2016-08-19 09:33:31 +03002728 BIN_BUF_INIT_FW_VER_INFO,
Yuval Mintz351a4ded2016-06-02 10:23:29 +03002729 BIN_BUF_INIT_CMD,
2730 BIN_BUF_INIT_VAL,
2731 BIN_BUF_INIT_MODE_TREE,
Yuval Mintz05fafbf2016-08-19 09:33:31 +03002732 BIN_BUF_INIT_IRO,
Yuval Mintz351a4ded2016-06-02 10:23:29 +03002733 MAX_BIN_INIT_BUFFER_TYPE
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02002734};
2735
Yuval Mintz351a4ded2016-06-02 10:23:29 +03002736/* init array header: raw */
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02002737struct init_array_raw_hdr {
Michal Kalderon50bc60c2018-03-28 11:42:16 +03002738 u32 data;
Yuval Mintz351a4ded2016-06-02 10:23:29 +03002739#define INIT_ARRAY_RAW_HDR_TYPE_MASK 0xF
2740#define INIT_ARRAY_RAW_HDR_TYPE_SHIFT 0
2741#define INIT_ARRAY_RAW_HDR_PARAMS_MASK 0xFFFFFFF
2742#define INIT_ARRAY_RAW_HDR_PARAMS_SHIFT 4
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02002743};
2744
Yuval Mintz351a4ded2016-06-02 10:23:29 +03002745/* init array header: standard */
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02002746struct init_array_standard_hdr {
Michal Kalderon50bc60c2018-03-28 11:42:16 +03002747 u32 data;
Yuval Mintz351a4ded2016-06-02 10:23:29 +03002748#define INIT_ARRAY_STANDARD_HDR_TYPE_MASK 0xF
2749#define INIT_ARRAY_STANDARD_HDR_TYPE_SHIFT 0
2750#define INIT_ARRAY_STANDARD_HDR_SIZE_MASK 0xFFFFFFF
2751#define INIT_ARRAY_STANDARD_HDR_SIZE_SHIFT 4
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02002752};
2753
Yuval Mintz351a4ded2016-06-02 10:23:29 +03002754/* init array header: zipped */
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02002755struct init_array_zipped_hdr {
Michal Kalderon50bc60c2018-03-28 11:42:16 +03002756 u32 data;
Yuval Mintz351a4ded2016-06-02 10:23:29 +03002757#define INIT_ARRAY_ZIPPED_HDR_TYPE_MASK 0xF
2758#define INIT_ARRAY_ZIPPED_HDR_TYPE_SHIFT 0
2759#define INIT_ARRAY_ZIPPED_HDR_ZIPPED_SIZE_MASK 0xFFFFFFF
2760#define INIT_ARRAY_ZIPPED_HDR_ZIPPED_SIZE_SHIFT 4
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02002761};
2762
Yuval Mintz351a4ded2016-06-02 10:23:29 +03002763/* init array header: pattern */
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02002764struct init_array_pattern_hdr {
Michal Kalderon50bc60c2018-03-28 11:42:16 +03002765 u32 data;
Yuval Mintz351a4ded2016-06-02 10:23:29 +03002766#define INIT_ARRAY_PATTERN_HDR_TYPE_MASK 0xF
2767#define INIT_ARRAY_PATTERN_HDR_TYPE_SHIFT 0
2768#define INIT_ARRAY_PATTERN_HDR_PATTERN_SIZE_MASK 0xF
2769#define INIT_ARRAY_PATTERN_HDR_PATTERN_SIZE_SHIFT 4
2770#define INIT_ARRAY_PATTERN_HDR_REPETITIONS_MASK 0xFFFFFF
2771#define INIT_ARRAY_PATTERN_HDR_REPETITIONS_SHIFT 8
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02002772};
2773
Yuval Mintz351a4ded2016-06-02 10:23:29 +03002774/* init array header union */
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02002775union init_array_hdr {
Yuval Mintz351a4ded2016-06-02 10:23:29 +03002776 struct init_array_raw_hdr raw;
2777 struct init_array_standard_hdr standard;
2778 struct init_array_zipped_hdr zipped;
2779 struct init_array_pattern_hdr pattern;
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02002780};
2781
Yuval Mintz351a4ded2016-06-02 10:23:29 +03002782/* init array types */
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02002783enum init_array_types {
Yuval Mintz351a4ded2016-06-02 10:23:29 +03002784 INIT_ARR_STANDARD,
2785 INIT_ARR_ZIPPED,
2786 INIT_ARR_PATTERN,
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02002787 MAX_INIT_ARRAY_TYPES
2788};
2789
2790/* init operation: callback */
2791struct init_callback_op {
Michal Kalderon50bc60c2018-03-28 11:42:16 +03002792 u32 op_data;
Yuval Mintz351a4ded2016-06-02 10:23:29 +03002793#define INIT_CALLBACK_OP_OP_MASK 0xF
2794#define INIT_CALLBACK_OP_OP_SHIFT 0
2795#define INIT_CALLBACK_OP_RESERVED_MASK 0xFFFFFFF
2796#define INIT_CALLBACK_OP_RESERVED_SHIFT 4
Michal Kalderon50bc60c2018-03-28 11:42:16 +03002797 u16 callback_id;
2798 u16 block_id;
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02002799};
2800
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02002801/* init operation: delay */
2802struct init_delay_op {
Michal Kalderon50bc60c2018-03-28 11:42:16 +03002803 u32 op_data;
Yuval Mintz351a4ded2016-06-02 10:23:29 +03002804#define INIT_DELAY_OP_OP_MASK 0xF
2805#define INIT_DELAY_OP_OP_SHIFT 0
2806#define INIT_DELAY_OP_RESERVED_MASK 0xFFFFFFF
2807#define INIT_DELAY_OP_RESERVED_SHIFT 4
Michal Kalderon50bc60c2018-03-28 11:42:16 +03002808 u32 delay;
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02002809};
2810
2811/* init operation: if_mode */
2812struct init_if_mode_op {
Michal Kalderon50bc60c2018-03-28 11:42:16 +03002813 u32 op_data;
Yuval Mintz351a4ded2016-06-02 10:23:29 +03002814#define INIT_IF_MODE_OP_OP_MASK 0xF
2815#define INIT_IF_MODE_OP_OP_SHIFT 0
2816#define INIT_IF_MODE_OP_RESERVED1_MASK 0xFFF
2817#define INIT_IF_MODE_OP_RESERVED1_SHIFT 4
2818#define INIT_IF_MODE_OP_CMD_OFFSET_MASK 0xFFFF
2819#define INIT_IF_MODE_OP_CMD_OFFSET_SHIFT 16
Michal Kalderon50bc60c2018-03-28 11:42:16 +03002820 u16 reserved2;
2821 u16 modes_buf_offset;
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02002822};
2823
Yuval Mintz351a4ded2016-06-02 10:23:29 +03002824/* init operation: if_phase */
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02002825struct init_if_phase_op {
Michal Kalderon50bc60c2018-03-28 11:42:16 +03002826 u32 op_data;
Yuval Mintz351a4ded2016-06-02 10:23:29 +03002827#define INIT_IF_PHASE_OP_OP_MASK 0xF
2828#define INIT_IF_PHASE_OP_OP_SHIFT 0
2829#define INIT_IF_PHASE_OP_DMAE_ENABLE_MASK 0x1
2830#define INIT_IF_PHASE_OP_DMAE_ENABLE_SHIFT 4
2831#define INIT_IF_PHASE_OP_RESERVED1_MASK 0x7FF
2832#define INIT_IF_PHASE_OP_RESERVED1_SHIFT 5
2833#define INIT_IF_PHASE_OP_CMD_OFFSET_MASK 0xFFFF
2834#define INIT_IF_PHASE_OP_CMD_OFFSET_SHIFT 16
Michal Kalderon50bc60c2018-03-28 11:42:16 +03002835 u32 phase_data;
Yuval Mintz351a4ded2016-06-02 10:23:29 +03002836#define INIT_IF_PHASE_OP_PHASE_MASK 0xFF
2837#define INIT_IF_PHASE_OP_PHASE_SHIFT 0
2838#define INIT_IF_PHASE_OP_RESERVED2_MASK 0xFF
2839#define INIT_IF_PHASE_OP_RESERVED2_SHIFT 8
2840#define INIT_IF_PHASE_OP_PHASE_ID_MASK 0xFFFF
2841#define INIT_IF_PHASE_OP_PHASE_ID_SHIFT 16
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02002842};
2843
2844/* init mode operators */
2845enum init_mode_ops {
Yuval Mintz351a4ded2016-06-02 10:23:29 +03002846 INIT_MODE_OP_NOT,
2847 INIT_MODE_OP_OR,
2848 INIT_MODE_OP_AND,
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02002849 MAX_INIT_MODE_OPS
2850};
2851
2852/* init operation: raw */
2853struct init_raw_op {
Michal Kalderon50bc60c2018-03-28 11:42:16 +03002854 u32 op_data;
Yuval Mintz351a4ded2016-06-02 10:23:29 +03002855#define INIT_RAW_OP_OP_MASK 0xF
2856#define INIT_RAW_OP_OP_SHIFT 0
2857#define INIT_RAW_OP_PARAM1_MASK 0xFFFFFFF
2858#define INIT_RAW_OP_PARAM1_SHIFT 4
Michal Kalderon50bc60c2018-03-28 11:42:16 +03002859 u32 param2;
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02002860};
2861
2862/* init array params */
2863struct init_op_array_params {
Michal Kalderon50bc60c2018-03-28 11:42:16 +03002864 u16 size;
2865 u16 offset;
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02002866};
2867
2868/* Write init operation arguments */
2869union init_write_args {
Michal Kalderon50bc60c2018-03-28 11:42:16 +03002870 u32 inline_val;
2871 u32 zeros_count;
2872 u32 array_offset;
Yuval Mintz351a4ded2016-06-02 10:23:29 +03002873 struct init_op_array_params runtime;
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02002874};
2875
2876/* init operation: write */
2877struct init_write_op {
Michal Kalderon50bc60c2018-03-28 11:42:16 +03002878 u32 data;
Yuval Mintz351a4ded2016-06-02 10:23:29 +03002879#define INIT_WRITE_OP_OP_MASK 0xF
2880#define INIT_WRITE_OP_OP_SHIFT 0
2881#define INIT_WRITE_OP_SOURCE_MASK 0x7
2882#define INIT_WRITE_OP_SOURCE_SHIFT 4
2883#define INIT_WRITE_OP_RESERVED_MASK 0x1
2884#define INIT_WRITE_OP_RESERVED_SHIFT 7
2885#define INIT_WRITE_OP_WIDE_BUS_MASK 0x1
2886#define INIT_WRITE_OP_WIDE_BUS_SHIFT 8
2887#define INIT_WRITE_OP_ADDRESS_MASK 0x7FFFFF
2888#define INIT_WRITE_OP_ADDRESS_SHIFT 9
2889 union init_write_args args;
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02002890};
2891
2892/* init operation: read */
2893struct init_read_op {
Michal Kalderon50bc60c2018-03-28 11:42:16 +03002894 u32 op_data;
Yuval Mintz351a4ded2016-06-02 10:23:29 +03002895#define INIT_READ_OP_OP_MASK 0xF
2896#define INIT_READ_OP_OP_SHIFT 0
2897#define INIT_READ_OP_POLL_TYPE_MASK 0xF
2898#define INIT_READ_OP_POLL_TYPE_SHIFT 4
2899#define INIT_READ_OP_RESERVED_MASK 0x1
2900#define INIT_READ_OP_RESERVED_SHIFT 8
2901#define INIT_READ_OP_ADDRESS_MASK 0x7FFFFF
2902#define INIT_READ_OP_ADDRESS_SHIFT 9
Michal Kalderon50bc60c2018-03-28 11:42:16 +03002903 u32 expected_val;
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02002904};
2905
2906/* Init operations union */
2907union init_op {
Yuval Mintz351a4ded2016-06-02 10:23:29 +03002908 struct init_raw_op raw;
2909 struct init_write_op write;
2910 struct init_read_op read;
2911 struct init_if_mode_op if_mode;
2912 struct init_if_phase_op if_phase;
2913 struct init_callback_op callback;
2914 struct init_delay_op delay;
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02002915};
2916
2917/* Init command operation types */
2918enum init_op_types {
Yuval Mintz351a4ded2016-06-02 10:23:29 +03002919 INIT_OP_READ,
2920 INIT_OP_WRITE,
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02002921 INIT_OP_IF_MODE,
2922 INIT_OP_IF_PHASE,
Yuval Mintz351a4ded2016-06-02 10:23:29 +03002923 INIT_OP_DELAY,
2924 INIT_OP_CALLBACK,
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02002925 MAX_INIT_OP_TYPES
2926};
2927
Yuval Mintz351a4ded2016-06-02 10:23:29 +03002928/* init polling types */
Yuval Mintzfc48b7a2016-02-15 13:22:35 -05002929enum init_poll_types {
Yuval Mintz351a4ded2016-06-02 10:23:29 +03002930 INIT_POLL_NONE,
2931 INIT_POLL_EQ,
2932 INIT_POLL_OR,
2933 INIT_POLL_AND,
Yuval Mintzfc48b7a2016-02-15 13:22:35 -05002934 MAX_INIT_POLL_TYPES
2935};
2936
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02002937/* init source types */
2938enum init_source_types {
Yuval Mintz351a4ded2016-06-02 10:23:29 +03002939 INIT_SRC_INLINE,
2940 INIT_SRC_ZEROS,
2941 INIT_SRC_ARRAY,
2942 INIT_SRC_RUNTIME,
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02002943 MAX_INIT_SOURCE_TYPES
2944};
2945
2946/* Internal RAM Offsets macro data */
2947struct iro {
Michal Kalderon50bc60c2018-03-28 11:42:16 +03002948 u32 base;
2949 u16 m1;
2950 u16 m2;
2951 u16 m3;
2952 u16 size;
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02002953};
2954
Tomer Tayarc965db42016-09-07 16:36:24 +03002955/***************************** Public Functions *******************************/
Tomer Tayara2e76992017-12-27 19:30:05 +02002956
Yuval Mintz351a4ded2016-06-02 10:23:29 +03002957/**
Tomer Tayarc965db42016-09-07 16:36:24 +03002958 * @brief qed_dbg_set_bin_ptr - Sets a pointer to the binary data with debug
2959 * arrays.
2960 *
2961 * @param bin_ptr - a pointer to the binary data with debug arrays.
2962 */
2963enum dbg_status qed_dbg_set_bin_ptr(const u8 * const bin_ptr);
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03002964
Tomer Tayarc965db42016-09-07 16:36:24 +03002965/**
Tomer Tayarda090912017-12-27 19:30:07 +02002966 * @brief qed_read_regs - Reads registers into a buffer (using GRC).
2967 *
2968 * @param p_hwfn - HW device data
2969 * @param p_ptt - Ptt window used for writing the registers.
2970 * @param buf - Destination buffer.
2971 * @param addr - Source GRC address in dwords.
2972 * @param len - Number of registers to read.
2973 */
2974void qed_read_regs(struct qed_hwfn *p_hwfn,
2975 struct qed_ptt *p_ptt, u32 *buf, u32 addr, u32 len);
2976
2977/**
Mintz, Yuvalbe086e72017-03-11 18:39:18 +02002978 * @brief qed_dbg_grc_set_params_default - Reverts all GRC parameters to their
2979 * default value.
2980 *
2981 * @param p_hwfn - HW device data
2982 */
2983void qed_dbg_grc_set_params_default(struct qed_hwfn *p_hwfn);
2984/**
Tomer Tayarc965db42016-09-07 16:36:24 +03002985 * @brief qed_dbg_grc_get_dump_buf_size - Returns the required buffer size for
2986 * GRC Dump.
2987 *
2988 * @param p_hwfn - HW device data
2989 * @param p_ptt - Ptt window used for writing the registers.
2990 * @param buf_size - OUT: required buffer size (in dwords) for the GRC Dump
2991 * data.
2992 *
2993 * @return error if one of the following holds:
2994 * - the version wasn't set
2995 * Otherwise, returns ok.
2996 */
2997enum dbg_status qed_dbg_grc_get_dump_buf_size(struct qed_hwfn *p_hwfn,
2998 struct qed_ptt *p_ptt,
2999 u32 *buf_size);
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03003000
Tomer Tayarc965db42016-09-07 16:36:24 +03003001/**
3002 * @brief qed_dbg_grc_dump - Dumps GRC data into the specified buffer.
3003 *
3004 * @param p_hwfn - HW device data
3005 * @param p_ptt - Ptt window used for writing the registers.
3006 * @param dump_buf - Pointer to write the collected GRC data into.
3007 * @param buf_size_in_dwords - Size of the specified buffer in dwords.
3008 * @param num_dumped_dwords - OUT: number of dumped dwords.
3009 *
3010 * @return error if one of the following holds:
3011 * - the version wasn't set
3012 * - the specified dump buffer is too small
3013 * Otherwise, returns ok.
3014 */
3015enum dbg_status qed_dbg_grc_dump(struct qed_hwfn *p_hwfn,
3016 struct qed_ptt *p_ptt,
3017 u32 *dump_buf,
3018 u32 buf_size_in_dwords,
3019 u32 *num_dumped_dwords);
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03003020
Tomer Tayarc965db42016-09-07 16:36:24 +03003021/**
3022 * @brief qed_dbg_idle_chk_get_dump_buf_size - Returns the required buffer size
3023 * for idle check results.
3024 *
3025 * @param p_hwfn - HW device data
3026 * @param p_ptt - Ptt window used for writing the registers.
3027 * @param buf_size - OUT: required buffer size (in dwords) for the idle check
3028 * data.
3029 *
3030 * @return error if one of the following holds:
3031 * - the version wasn't set
3032 * Otherwise, returns ok.
3033 */
3034enum dbg_status qed_dbg_idle_chk_get_dump_buf_size(struct qed_hwfn *p_hwfn,
3035 struct qed_ptt *p_ptt,
3036 u32 *buf_size);
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03003037
Tomer Tayarc965db42016-09-07 16:36:24 +03003038/**
3039 * @brief qed_dbg_idle_chk_dump - Performs idle check and writes the results
3040 * into the specified buffer.
3041 *
3042 * @param p_hwfn - HW device data
3043 * @param p_ptt - Ptt window used for writing the registers.
3044 * @param dump_buf - Pointer to write the idle check data into.
3045 * @param buf_size_in_dwords - Size of the specified buffer in dwords.
3046 * @param num_dumped_dwords - OUT: number of dumped dwords.
3047 *
3048 * @return error if one of the following holds:
3049 * - the version wasn't set
3050 * - the specified buffer is too small
3051 * Otherwise, returns ok.
3052 */
3053enum dbg_status qed_dbg_idle_chk_dump(struct qed_hwfn *p_hwfn,
3054 struct qed_ptt *p_ptt,
3055 u32 *dump_buf,
3056 u32 buf_size_in_dwords,
3057 u32 *num_dumped_dwords);
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03003058
Tomer Tayarc965db42016-09-07 16:36:24 +03003059/**
3060 * @brief qed_dbg_mcp_trace_get_dump_buf_size - Returns the required buffer size
3061 * for mcp trace results.
3062 *
3063 * @param p_hwfn - HW device data
3064 * @param p_ptt - Ptt window used for writing the registers.
3065 * @param buf_size - OUT: required buffer size (in dwords) for mcp trace data.
3066 *
3067 * @return error if one of the following holds:
3068 * - the version wasn't set
3069 * - the trace data in MCP scratchpad contain an invalid signature
3070 * - the bundle ID in NVRAM is invalid
3071 * - the trace meta data cannot be found (in NVRAM or image file)
3072 * Otherwise, returns ok.
3073 */
3074enum dbg_status qed_dbg_mcp_trace_get_dump_buf_size(struct qed_hwfn *p_hwfn,
3075 struct qed_ptt *p_ptt,
3076 u32 *buf_size);
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03003077
Tomer Tayarc965db42016-09-07 16:36:24 +03003078/**
3079 * @brief qed_dbg_mcp_trace_dump - Performs mcp trace and writes the results
3080 * into the specified buffer.
3081 *
3082 * @param p_hwfn - HW device data
3083 * @param p_ptt - Ptt window used for writing the registers.
3084 * @param dump_buf - Pointer to write the mcp trace data into.
3085 * @param buf_size_in_dwords - Size of the specified buffer in dwords.
3086 * @param num_dumped_dwords - OUT: number of dumped dwords.
3087 *
3088 * @return error if one of the following holds:
3089 * - the version wasn't set
3090 * - the specified buffer is too small
3091 * - the trace data in MCP scratchpad contain an invalid signature
3092 * - the bundle ID in NVRAM is invalid
3093 * - the trace meta data cannot be found (in NVRAM or image file)
3094 * - the trace meta data cannot be read (from NVRAM or image file)
3095 * Otherwise, returns ok.
3096 */
3097enum dbg_status qed_dbg_mcp_trace_dump(struct qed_hwfn *p_hwfn,
3098 struct qed_ptt *p_ptt,
3099 u32 *dump_buf,
3100 u32 buf_size_in_dwords,
3101 u32 *num_dumped_dwords);
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03003102
Tomer Tayarc965db42016-09-07 16:36:24 +03003103/**
3104 * @brief qed_dbg_reg_fifo_get_dump_buf_size - Returns the required buffer size
3105 * for grc trace fifo results.
3106 *
3107 * @param p_hwfn - HW device data
3108 * @param p_ptt - Ptt window used for writing the registers.
3109 * @param buf_size - OUT: required buffer size (in dwords) for reg fifo data.
3110 *
3111 * @return error if one of the following holds:
3112 * - the version wasn't set
3113 * Otherwise, returns ok.
3114 */
3115enum dbg_status qed_dbg_reg_fifo_get_dump_buf_size(struct qed_hwfn *p_hwfn,
3116 struct qed_ptt *p_ptt,
3117 u32 *buf_size);
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03003118
Tomer Tayarc965db42016-09-07 16:36:24 +03003119/**
3120 * @brief qed_dbg_reg_fifo_dump - Reads the reg fifo and writes the results into
3121 * the specified buffer.
3122 *
3123 * @param p_hwfn - HW device data
3124 * @param p_ptt - Ptt window used for writing the registers.
3125 * @param dump_buf - Pointer to write the reg fifo data into.
3126 * @param buf_size_in_dwords - Size of the specified buffer in dwords.
3127 * @param num_dumped_dwords - OUT: number of dumped dwords.
3128 *
3129 * @return error if one of the following holds:
3130 * - the version wasn't set
3131 * - the specified buffer is too small
3132 * - DMAE transaction failed
3133 * Otherwise, returns ok.
3134 */
3135enum dbg_status qed_dbg_reg_fifo_dump(struct qed_hwfn *p_hwfn,
3136 struct qed_ptt *p_ptt,
3137 u32 *dump_buf,
3138 u32 buf_size_in_dwords,
3139 u32 *num_dumped_dwords);
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03003140
Tomer Tayarc965db42016-09-07 16:36:24 +03003141/**
3142 * @brief qed_dbg_igu_fifo_get_dump_buf_size - Returns the required buffer size
3143 * for the IGU fifo results.
3144 *
3145 * @param p_hwfn - HW device data
3146 * @param p_ptt - Ptt window used for writing the registers.
3147 * @param buf_size - OUT: required buffer size (in dwords) for the IGU fifo
3148 * data.
3149 *
3150 * @return error if one of the following holds:
3151 * - the version wasn't set
3152 * Otherwise, returns ok.
3153 */
3154enum dbg_status qed_dbg_igu_fifo_get_dump_buf_size(struct qed_hwfn *p_hwfn,
3155 struct qed_ptt *p_ptt,
3156 u32 *buf_size);
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03003157
Tomer Tayarc965db42016-09-07 16:36:24 +03003158/**
3159 * @brief qed_dbg_igu_fifo_dump - Reads the IGU fifo and writes the results into
3160 * the specified buffer.
3161 *
3162 * @param p_hwfn - HW device data
3163 * @param p_ptt - Ptt window used for writing the registers.
3164 * @param dump_buf - Pointer to write the IGU fifo data into.
3165 * @param buf_size_in_dwords - Size of the specified buffer in dwords.
3166 * @param num_dumped_dwords - OUT: number of dumped dwords.
3167 *
3168 * @return error if one of the following holds:
3169 * - the version wasn't set
3170 * - the specified buffer is too small
3171 * - DMAE transaction failed
3172 * Otherwise, returns ok.
3173 */
3174enum dbg_status qed_dbg_igu_fifo_dump(struct qed_hwfn *p_hwfn,
3175 struct qed_ptt *p_ptt,
3176 u32 *dump_buf,
3177 u32 buf_size_in_dwords,
3178 u32 *num_dumped_dwords);
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03003179
Tomer Tayarc965db42016-09-07 16:36:24 +03003180/**
3181 * @brief qed_dbg_protection_override_get_dump_buf_size - Returns the required
3182 * buffer size for protection override window results.
3183 *
3184 * @param p_hwfn - HW device data
3185 * @param p_ptt - Ptt window used for writing the registers.
3186 * @param buf_size - OUT: required buffer size (in dwords) for protection
3187 * override data.
3188 *
3189 * @return error if one of the following holds:
3190 * - the version wasn't set
3191 * Otherwise, returns ok.
3192 */
3193enum dbg_status
3194qed_dbg_protection_override_get_dump_buf_size(struct qed_hwfn *p_hwfn,
3195 struct qed_ptt *p_ptt,
3196 u32 *buf_size);
3197/**
3198 * @brief qed_dbg_protection_override_dump - Reads protection override window
3199 * entries and writes the results into the specified buffer.
3200 *
3201 * @param p_hwfn - HW device data
3202 * @param p_ptt - Ptt window used for writing the registers.
3203 * @param dump_buf - Pointer to write the protection override data into.
3204 * @param buf_size_in_dwords - Size of the specified buffer in dwords.
3205 * @param num_dumped_dwords - OUT: number of dumped dwords.
3206 *
3207 * @return error if one of the following holds:
3208 * - the version wasn't set
3209 * - the specified buffer is too small
3210 * - DMAE transaction failed
3211 * Otherwise, returns ok.
3212 */
3213enum dbg_status qed_dbg_protection_override_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 * @brief qed_dbg_fw_asserts_get_dump_buf_size - Returns the required buffer
3220 * size for FW Asserts results.
3221 *
3222 * @param p_hwfn - HW device data
3223 * @param p_ptt - Ptt window used for writing the registers.
3224 * @param buf_size - OUT: required buffer size (in dwords) for FW Asserts data.
3225 *
3226 * @return error if one of the following holds:
3227 * - the version wasn't set
3228 * Otherwise, returns ok.
3229 */
3230enum dbg_status qed_dbg_fw_asserts_get_dump_buf_size(struct qed_hwfn *p_hwfn,
3231 struct qed_ptt *p_ptt,
3232 u32 *buf_size);
3233/**
3234 * @brief qed_dbg_fw_asserts_dump - Reads the FW Asserts and writes the results
3235 * into the specified buffer.
3236 *
3237 * @param p_hwfn - HW device data
3238 * @param p_ptt - Ptt window used for writing the registers.
3239 * @param dump_buf - Pointer to write the FW Asserts data into.
3240 * @param buf_size_in_dwords - Size of the specified buffer in dwords.
3241 * @param num_dumped_dwords - OUT: number of dumped dwords.
3242 *
3243 * @return error if one of the following holds:
3244 * - the version wasn't set
3245 * - the specified buffer is too small
3246 * Otherwise, returns ok.
3247 */
3248enum dbg_status qed_dbg_fw_asserts_dump(struct qed_hwfn *p_hwfn,
3249 struct qed_ptt *p_ptt,
3250 u32 *dump_buf,
3251 u32 buf_size_in_dwords,
3252 u32 *num_dumped_dwords);
Mintz, Yuval0ebbd1c2017-05-29 09:53:10 +03003253
3254/**
3255 * @brief qed_dbg_read_attn - Reads the attention registers of the specified
3256 * block and type, and writes the results into the specified buffer.
3257 *
3258 * @param p_hwfn - HW device data
3259 * @param p_ptt - Ptt window used for writing the registers.
3260 * @param block - Block ID.
3261 * @param attn_type - Attention type.
3262 * @param clear_status - Indicates if the attention status should be cleared.
3263 * @param results - OUT: Pointer to write the read results into
3264 *
3265 * @return error if one of the following holds:
3266 * - the version wasn't set
3267 * Otherwise, returns ok.
3268 */
3269enum dbg_status qed_dbg_read_attn(struct qed_hwfn *p_hwfn,
3270 struct qed_ptt *p_ptt,
3271 enum block_id block,
3272 enum dbg_attn_type attn_type,
3273 bool clear_status,
3274 struct dbg_attn_block_result *results);
3275
Tomer Tayarc965db42016-09-07 16:36:24 +03003276/**
3277 * @brief qed_dbg_print_attn - Prints attention registers values in the
3278 * specified results struct.
Yuval Mintz351a4ded2016-06-02 10:23:29 +03003279 *
3280 * @param p_hwfn
3281 * @param results - Pointer to the attention read results
3282 *
3283 * @return error if one of the following holds:
3284 * - the version wasn't set
3285 * Otherwise, returns ok.
3286 */
3287enum dbg_status qed_dbg_print_attn(struct qed_hwfn *p_hwfn,
3288 struct dbg_attn_block_result *results);
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02003289
Tomer Tayarc965db42016-09-07 16:36:24 +03003290/******************************** Constants **********************************/
3291
Yuval Mintz351a4ded2016-06-02 10:23:29 +03003292#define MAX_NAME_LEN 16
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02003293
Tomer Tayarc965db42016-09-07 16:36:24 +03003294/***************************** Public Functions *******************************/
Tomer Tayara2e76992017-12-27 19:30:05 +02003295
Tomer Tayarc965db42016-09-07 16:36:24 +03003296/**
3297 * @brief qed_dbg_user_set_bin_ptr - Sets a pointer to the binary data with
3298 * debug arrays.
3299 *
3300 * @param bin_ptr - a pointer to the binary data with debug arrays.
3301 */
3302enum dbg_status qed_dbg_user_set_bin_ptr(const u8 * const bin_ptr);
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03003303
Tomer Tayarc965db42016-09-07 16:36:24 +03003304/**
3305 * @brief qed_dbg_get_status_str - Returns a string for the specified status.
3306 *
3307 * @param status - a debug status code.
3308 *
3309 * @return a string for the specified status
3310 */
3311const char *qed_dbg_get_status_str(enum dbg_status status);
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03003312
Tomer Tayarc965db42016-09-07 16:36:24 +03003313/**
3314 * @brief qed_get_idle_chk_results_buf_size - Returns the required buffer size
3315 * for idle check results (in bytes).
3316 *
3317 * @param p_hwfn - HW device data
3318 * @param dump_buf - idle check dump buffer.
3319 * @param num_dumped_dwords - number of dwords that were dumped.
3320 * @param results_buf_size - OUT: required buffer size (in bytes) for the parsed
3321 * results.
3322 *
3323 * @return error if the parsing fails, ok otherwise.
3324 */
3325enum dbg_status qed_get_idle_chk_results_buf_size(struct qed_hwfn *p_hwfn,
3326 u32 *dump_buf,
3327 u32 num_dumped_dwords,
3328 u32 *results_buf_size);
3329/**
3330 * @brief qed_print_idle_chk_results - Prints idle check results
3331 *
3332 * @param p_hwfn - HW device data
3333 * @param dump_buf - idle check dump buffer.
3334 * @param num_dumped_dwords - number of dwords that were dumped.
3335 * @param results_buf - buffer for printing the idle check results.
3336 * @param num_errors - OUT: number of errors found in idle check.
3337 * @param num_warnings - OUT: number of warnings found in idle check.
3338 *
3339 * @return error if the parsing fails, ok otherwise.
3340 */
3341enum dbg_status qed_print_idle_chk_results(struct qed_hwfn *p_hwfn,
3342 u32 *dump_buf,
3343 u32 num_dumped_dwords,
3344 char *results_buf,
3345 u32 *num_errors,
3346 u32 *num_warnings);
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03003347
Tomer Tayarc965db42016-09-07 16:36:24 +03003348/**
Tomer Tayarda090912017-12-27 19:30:07 +02003349 * @brief qed_dbg_mcp_trace_set_meta_data - Sets a pointer to the MCP Trace
3350 * meta data.
3351 *
3352 * Needed in case the MCP Trace dump doesn't contain the meta data (e.g. due to
3353 * no NVRAM access).
3354 *
3355 * @param data - pointer to MCP Trace meta data
3356 * @param size - size of MCP Trace meta data in dwords
3357 */
3358void qed_dbg_mcp_trace_set_meta_data(u32 *data, u32 size);
3359
3360/**
Tomer Tayarc965db42016-09-07 16:36:24 +03003361 * @brief qed_get_mcp_trace_results_buf_size - Returns the required buffer size
3362 * for MCP Trace results (in bytes).
3363 *
3364 * @param p_hwfn - HW device data
3365 * @param dump_buf - MCP Trace dump buffer.
3366 * @param num_dumped_dwords - number of dwords that were dumped.
3367 * @param results_buf_size - OUT: required buffer size (in bytes) for the parsed
3368 * results.
3369 *
3370 * @return error if the parsing fails, ok otherwise.
3371 */
3372enum dbg_status qed_get_mcp_trace_results_buf_size(struct qed_hwfn *p_hwfn,
3373 u32 *dump_buf,
3374 u32 num_dumped_dwords,
3375 u32 *results_buf_size);
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03003376
Tomer Tayarc965db42016-09-07 16:36:24 +03003377/**
3378 * @brief qed_print_mcp_trace_results - Prints MCP Trace results
3379 *
3380 * @param p_hwfn - HW device data
3381 * @param dump_buf - mcp trace dump buffer, starting from the header.
3382 * @param num_dumped_dwords - number of dwords that were dumped.
3383 * @param results_buf - buffer for printing the mcp trace results.
3384 *
3385 * @return error if the parsing fails, ok otherwise.
3386 */
3387enum dbg_status qed_print_mcp_trace_results(struct qed_hwfn *p_hwfn,
3388 u32 *dump_buf,
3389 u32 num_dumped_dwords,
3390 char *results_buf);
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03003391
Tomer Tayarc965db42016-09-07 16:36:24 +03003392/**
Michal Kalderon50bc60c2018-03-28 11:42:16 +03003393 * @brief print_mcp_trace_line - Prints MCP Trace results for a single line
3394 *
3395 * @param dump_buf - mcp trace dump buffer, starting from the header.
3396 * @param num_dumped_bytes - number of bytes that were dumped.
3397 * @param results_buf - buffer for printing the mcp trace results.
3398 *
3399 * @return error if the parsing fails, ok otherwise.
3400 */
3401enum dbg_status qed_print_mcp_trace_line(u8 *dump_buf,
3402 u32 num_dumped_bytes,
3403 char *results_buf);
3404
3405/**
Tomer Tayarc965db42016-09-07 16:36:24 +03003406 * @brief qed_get_reg_fifo_results_buf_size - Returns the required buffer size
3407 * for reg_fifo results (in bytes).
3408 *
3409 * @param p_hwfn - HW device data
3410 * @param dump_buf - reg fifo dump buffer.
3411 * @param num_dumped_dwords - number of dwords that were dumped.
3412 * @param results_buf_size - OUT: required buffer size (in bytes) for the parsed
3413 * results.
3414 *
3415 * @return error if the parsing fails, ok otherwise.
3416 */
3417enum dbg_status qed_get_reg_fifo_results_buf_size(struct qed_hwfn *p_hwfn,
3418 u32 *dump_buf,
3419 u32 num_dumped_dwords,
3420 u32 *results_buf_size);
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03003421
Tomer Tayarc965db42016-09-07 16:36:24 +03003422/**
3423 * @brief qed_print_reg_fifo_results - Prints reg fifo results
3424 *
3425 * @param p_hwfn - HW device data
3426 * @param dump_buf - reg fifo dump buffer, starting from the header.
3427 * @param num_dumped_dwords - number of dwords that were dumped.
3428 * @param results_buf - buffer for printing the reg fifo results.
3429 *
3430 * @return error if the parsing fails, ok otherwise.
3431 */
3432enum dbg_status qed_print_reg_fifo_results(struct qed_hwfn *p_hwfn,
3433 u32 *dump_buf,
3434 u32 num_dumped_dwords,
3435 char *results_buf);
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03003436
Tomer Tayarc965db42016-09-07 16:36:24 +03003437/**
3438 * @brief qed_get_igu_fifo_results_buf_size - Returns the required buffer size
3439 * for igu_fifo results (in bytes).
3440 *
3441 * @param p_hwfn - HW device data
3442 * @param dump_buf - IGU fifo dump buffer.
3443 * @param num_dumped_dwords - number of dwords that were dumped.
3444 * @param results_buf_size - OUT: required buffer size (in bytes) for the parsed
3445 * results.
3446 *
3447 * @return error if the parsing fails, ok otherwise.
3448 */
3449enum dbg_status qed_get_igu_fifo_results_buf_size(struct qed_hwfn *p_hwfn,
3450 u32 *dump_buf,
3451 u32 num_dumped_dwords,
3452 u32 *results_buf_size);
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03003453
Tomer Tayarc965db42016-09-07 16:36:24 +03003454/**
3455 * @brief qed_print_igu_fifo_results - Prints IGU fifo results
3456 *
3457 * @param p_hwfn - HW device data
3458 * @param dump_buf - IGU fifo dump buffer, starting from the header.
3459 * @param num_dumped_dwords - number of dwords that were dumped.
3460 * @param results_buf - buffer for printing the IGU fifo results.
3461 *
3462 * @return error if the parsing fails, ok otherwise.
3463 */
3464enum dbg_status qed_print_igu_fifo_results(struct qed_hwfn *p_hwfn,
3465 u32 *dump_buf,
3466 u32 num_dumped_dwords,
3467 char *results_buf);
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03003468
Tomer Tayarc965db42016-09-07 16:36:24 +03003469/**
3470 * @brief qed_get_protection_override_results_buf_size - Returns the required
3471 * buffer size for protection override results (in bytes).
3472 *
3473 * @param p_hwfn - HW device data
3474 * @param dump_buf - protection override dump buffer.
3475 * @param num_dumped_dwords - number of dwords that were dumped.
3476 * @param results_buf_size - OUT: required buffer size (in bytes) for the parsed
3477 * results.
3478 *
3479 * @return error if the parsing fails, ok otherwise.
3480 */
3481enum dbg_status
3482qed_get_protection_override_results_buf_size(struct qed_hwfn *p_hwfn,
3483 u32 *dump_buf,
3484 u32 num_dumped_dwords,
3485 u32 *results_buf_size);
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03003486
Tomer Tayarc965db42016-09-07 16:36:24 +03003487/**
3488 * @brief qed_print_protection_override_results - Prints protection override
3489 * results.
3490 *
3491 * @param p_hwfn - HW device data
3492 * @param dump_buf - protection override dump buffer, starting from the header.
3493 * @param num_dumped_dwords - number of dwords that were dumped.
3494 * @param results_buf - buffer for printing the reg fifo results.
3495 *
3496 * @return error if the parsing fails, ok otherwise.
3497 */
3498enum dbg_status qed_print_protection_override_results(struct qed_hwfn *p_hwfn,
3499 u32 *dump_buf,
3500 u32 num_dumped_dwords,
3501 char *results_buf);
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03003502
Tomer Tayarc965db42016-09-07 16:36:24 +03003503/**
3504 * @brief qed_get_fw_asserts_results_buf_size - Returns the required buffer size
3505 * for FW Asserts results (in bytes).
3506 *
3507 * @param p_hwfn - HW device data
3508 * @param dump_buf - FW Asserts dump buffer.
3509 * @param num_dumped_dwords - number of dwords that were dumped.
3510 * @param results_buf_size - OUT: required buffer size (in bytes) for the parsed
3511 * results.
3512 *
3513 * @return error if the parsing fails, ok otherwise.
3514 */
3515enum dbg_status qed_get_fw_asserts_results_buf_size(struct qed_hwfn *p_hwfn,
3516 u32 *dump_buf,
3517 u32 num_dumped_dwords,
3518 u32 *results_buf_size);
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03003519
Tomer Tayarc965db42016-09-07 16:36:24 +03003520/**
3521 * @brief qed_print_fw_asserts_results - Prints FW Asserts results
3522 *
3523 * @param p_hwfn - HW device data
3524 * @param dump_buf - FW Asserts dump buffer, starting from the header.
3525 * @param num_dumped_dwords - number of dwords that were dumped.
3526 * @param results_buf - buffer for printing the FW Asserts results.
3527 *
3528 * @return error if the parsing fails, ok otherwise.
3529 */
3530enum dbg_status qed_print_fw_asserts_results(struct qed_hwfn *p_hwfn,
3531 u32 *dump_buf,
3532 u32 num_dumped_dwords,
3533 char *results_buf);
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03003534
Mintz, Yuval0ebbd1c2017-05-29 09:53:10 +03003535/**
3536 * @brief qed_dbg_parse_attn - Parses and prints attention registers values in
3537 * the specified results struct.
3538 *
3539 * @param p_hwfn - HW device data
3540 * @param results - Pointer to the attention read results
3541 *
3542 * @return error if one of the following holds:
3543 * - the version wasn't set
3544 * Otherwise, returns ok.
3545 */
3546enum dbg_status qed_dbg_parse_attn(struct qed_hwfn *p_hwfn,
3547 struct dbg_attn_block_result *results);
3548
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03003549/* Debug Bus blocks */
3550static const u32 dbg_bus_blocks[] = {
3551 0x0000000f, /* grc, bb, 15 lines */
3552 0x0000000f, /* grc, k2, 15 lines */
3553 0x00000000,
3554 0x00000000, /* miscs, bb, 0 lines */
3555 0x00000000, /* miscs, k2, 0 lines */
3556 0x00000000,
3557 0x00000000, /* misc, bb, 0 lines */
3558 0x00000000, /* misc, k2, 0 lines */
3559 0x00000000,
3560 0x00000000, /* dbu, bb, 0 lines */
3561 0x00000000, /* dbu, k2, 0 lines */
3562 0x00000000,
3563 0x000f0127, /* pglue_b, bb, 39 lines */
3564 0x0036012a, /* pglue_b, k2, 42 lines */
3565 0x00000000,
3566 0x00000000, /* cnig, bb, 0 lines */
3567 0x00120102, /* cnig, k2, 2 lines */
3568 0x00000000,
3569 0x00000000, /* cpmu, bb, 0 lines */
3570 0x00000000, /* cpmu, k2, 0 lines */
3571 0x00000000,
3572 0x00000001, /* ncsi, bb, 1 lines */
3573 0x00000001, /* ncsi, k2, 1 lines */
3574 0x00000000,
3575 0x00000000, /* opte, bb, 0 lines */
3576 0x00000000, /* opte, k2, 0 lines */
3577 0x00000000,
3578 0x00600085, /* bmb, bb, 133 lines */
3579 0x00600085, /* bmb, k2, 133 lines */
3580 0x00000000,
3581 0x00000000, /* pcie, bb, 0 lines */
3582 0x00e50033, /* pcie, k2, 51 lines */
3583 0x00000000,
3584 0x00000000, /* mcp, bb, 0 lines */
3585 0x00000000, /* mcp, k2, 0 lines */
3586 0x00000000,
3587 0x01180009, /* mcp2, bb, 9 lines */
3588 0x01180009, /* mcp2, k2, 9 lines */
3589 0x00000000,
3590 0x01210104, /* pswhst, bb, 4 lines */
3591 0x01210104, /* pswhst, k2, 4 lines */
3592 0x00000000,
3593 0x01250103, /* pswhst2, bb, 3 lines */
3594 0x01250103, /* pswhst2, k2, 3 lines */
3595 0x00000000,
3596 0x00340101, /* pswrd, bb, 1 lines */
3597 0x00340101, /* pswrd, k2, 1 lines */
3598 0x00000000,
3599 0x01280119, /* pswrd2, bb, 25 lines */
3600 0x01280119, /* pswrd2, k2, 25 lines */
3601 0x00000000,
3602 0x01410109, /* pswwr, bb, 9 lines */
3603 0x01410109, /* pswwr, k2, 9 lines */
3604 0x00000000,
3605 0x00000000, /* pswwr2, bb, 0 lines */
3606 0x00000000, /* pswwr2, k2, 0 lines */
3607 0x00000000,
3608 0x001c0001, /* pswrq, bb, 1 lines */
3609 0x001c0001, /* pswrq, k2, 1 lines */
3610 0x00000000,
3611 0x014a0015, /* pswrq2, bb, 21 lines */
3612 0x014a0015, /* pswrq2, k2, 21 lines */
3613 0x00000000,
3614 0x00000000, /* pglcs, bb, 0 lines */
3615 0x00120006, /* pglcs, k2, 6 lines */
3616 0x00000000,
3617 0x00100001, /* dmae, bb, 1 lines */
3618 0x00100001, /* dmae, k2, 1 lines */
3619 0x00000000,
3620 0x015f0105, /* ptu, bb, 5 lines */
3621 0x015f0105, /* ptu, k2, 5 lines */
3622 0x00000000,
3623 0x01640120, /* tcm, bb, 32 lines */
3624 0x01640120, /* tcm, k2, 32 lines */
3625 0x00000000,
3626 0x01640120, /* mcm, bb, 32 lines */
3627 0x01640120, /* mcm, k2, 32 lines */
3628 0x00000000,
3629 0x01640120, /* ucm, bb, 32 lines */
3630 0x01640120, /* ucm, k2, 32 lines */
3631 0x00000000,
3632 0x01640120, /* xcm, bb, 32 lines */
3633 0x01640120, /* xcm, k2, 32 lines */
3634 0x00000000,
3635 0x01640120, /* ycm, bb, 32 lines */
3636 0x01640120, /* ycm, k2, 32 lines */
3637 0x00000000,
3638 0x01640120, /* pcm, bb, 32 lines */
3639 0x01640120, /* pcm, k2, 32 lines */
3640 0x00000000,
3641 0x01840062, /* qm, bb, 98 lines */
3642 0x01840062, /* qm, k2, 98 lines */
3643 0x00000000,
3644 0x01e60021, /* tm, bb, 33 lines */
3645 0x01e60021, /* tm, k2, 33 lines */
3646 0x00000000,
3647 0x02070107, /* dorq, bb, 7 lines */
3648 0x02070107, /* dorq, k2, 7 lines */
3649 0x00000000,
3650 0x00600185, /* brb, bb, 133 lines */
3651 0x00600185, /* brb, k2, 133 lines */
3652 0x00000000,
3653 0x020e0019, /* src, bb, 25 lines */
3654 0x020c001a, /* src, k2, 26 lines */
3655 0x00000000,
3656 0x02270104, /* prs, bb, 4 lines */
3657 0x02270104, /* prs, k2, 4 lines */
3658 0x00000000,
3659 0x022b0133, /* tsdm, bb, 51 lines */
3660 0x022b0133, /* tsdm, k2, 51 lines */
3661 0x00000000,
3662 0x022b0133, /* msdm, bb, 51 lines */
3663 0x022b0133, /* msdm, k2, 51 lines */
3664 0x00000000,
3665 0x022b0133, /* usdm, bb, 51 lines */
3666 0x022b0133, /* usdm, k2, 51 lines */
3667 0x00000000,
3668 0x022b0133, /* xsdm, bb, 51 lines */
3669 0x022b0133, /* xsdm, k2, 51 lines */
3670 0x00000000,
3671 0x022b0133, /* ysdm, bb, 51 lines */
3672 0x022b0133, /* ysdm, k2, 51 lines */
3673 0x00000000,
3674 0x022b0133, /* psdm, bb, 51 lines */
3675 0x022b0133, /* psdm, k2, 51 lines */
3676 0x00000000,
3677 0x025e010c, /* tsem, bb, 12 lines */
3678 0x025e010c, /* tsem, k2, 12 lines */
3679 0x00000000,
3680 0x025e010c, /* msem, bb, 12 lines */
3681 0x025e010c, /* msem, k2, 12 lines */
3682 0x00000000,
3683 0x025e010c, /* usem, bb, 12 lines */
3684 0x025e010c, /* usem, k2, 12 lines */
3685 0x00000000,
3686 0x025e010c, /* xsem, bb, 12 lines */
3687 0x025e010c, /* xsem, k2, 12 lines */
3688 0x00000000,
3689 0x025e010c, /* ysem, bb, 12 lines */
3690 0x025e010c, /* ysem, k2, 12 lines */
3691 0x00000000,
3692 0x025e010c, /* psem, bb, 12 lines */
3693 0x025e010c, /* psem, k2, 12 lines */
3694 0x00000000,
3695 0x026a000d, /* rss, bb, 13 lines */
3696 0x026a000d, /* rss, k2, 13 lines */
3697 0x00000000,
3698 0x02770106, /* tmld, bb, 6 lines */
3699 0x02770106, /* tmld, k2, 6 lines */
3700 0x00000000,
3701 0x027d0106, /* muld, bb, 6 lines */
3702 0x027d0106, /* muld, k2, 6 lines */
3703 0x00000000,
3704 0x02770005, /* yuld, bb, 5 lines */
3705 0x02770005, /* yuld, k2, 5 lines */
3706 0x00000000,
3707 0x02830107, /* xyld, bb, 7 lines */
3708 0x027d0107, /* xyld, k2, 7 lines */
3709 0x00000000,
3710 0x00000000, /* ptld, bb, 0 lines */
3711 0x00000000, /* ptld, k2, 0 lines */
3712 0x00000000,
3713 0x00000000, /* ypld, bb, 0 lines */
3714 0x00000000, /* ypld, k2, 0 lines */
3715 0x00000000,
3716 0x028a010e, /* prm, bb, 14 lines */
3717 0x02980110, /* prm, k2, 16 lines */
3718 0x00000000,
3719 0x02a8000d, /* pbf_pb1, bb, 13 lines */
3720 0x02a8000d, /* pbf_pb1, k2, 13 lines */
3721 0x00000000,
3722 0x02a8000d, /* pbf_pb2, bb, 13 lines */
3723 0x02a8000d, /* pbf_pb2, k2, 13 lines */
3724 0x00000000,
3725 0x02a8000d, /* rpb, bb, 13 lines */
3726 0x02a8000d, /* rpb, k2, 13 lines */
3727 0x00000000,
3728 0x00600185, /* btb, bb, 133 lines */
3729 0x00600185, /* btb, k2, 133 lines */
3730 0x00000000,
3731 0x02b50117, /* pbf, bb, 23 lines */
3732 0x02b50117, /* pbf, k2, 23 lines */
3733 0x00000000,
3734 0x02cc0006, /* rdif, bb, 6 lines */
3735 0x02cc0006, /* rdif, k2, 6 lines */
3736 0x00000000,
3737 0x02d20006, /* tdif, bb, 6 lines */
3738 0x02d20006, /* tdif, k2, 6 lines */
3739 0x00000000,
3740 0x02d80003, /* cdu, bb, 3 lines */
3741 0x02db000e, /* cdu, k2, 14 lines */
3742 0x00000000,
3743 0x02e9010d, /* ccfc, bb, 13 lines */
3744 0x02f60117, /* ccfc, k2, 23 lines */
3745 0x00000000,
3746 0x02e9010d, /* tcfc, bb, 13 lines */
3747 0x02f60117, /* tcfc, k2, 23 lines */
3748 0x00000000,
3749 0x030d0133, /* igu, bb, 51 lines */
3750 0x030d0133, /* igu, k2, 51 lines */
3751 0x00000000,
3752 0x03400106, /* cau, bb, 6 lines */
3753 0x03400106, /* cau, k2, 6 lines */
3754 0x00000000,
3755 0x00000000, /* rgfs, bb, 0 lines */
3756 0x00000000, /* rgfs, k2, 0 lines */
3757 0x00000000,
3758 0x00000000, /* rgsrc, bb, 0 lines */
3759 0x00000000, /* rgsrc, k2, 0 lines */
3760 0x00000000,
3761 0x00000000, /* tgfs, bb, 0 lines */
3762 0x00000000, /* tgfs, k2, 0 lines */
3763 0x00000000,
3764 0x00000000, /* tgsrc, bb, 0 lines */
3765 0x00000000, /* tgsrc, k2, 0 lines */
3766 0x00000000,
3767 0x00000000, /* umac, bb, 0 lines */
3768 0x00120006, /* umac, k2, 6 lines */
3769 0x00000000,
3770 0x00000000, /* xmac, bb, 0 lines */
3771 0x00000000, /* xmac, k2, 0 lines */
3772 0x00000000,
3773 0x00000000, /* dbg, bb, 0 lines */
3774 0x00000000, /* dbg, k2, 0 lines */
3775 0x00000000,
3776 0x0346012b, /* nig, bb, 43 lines */
3777 0x0346011d, /* nig, k2, 29 lines */
3778 0x00000000,
3779 0x00000000, /* wol, bb, 0 lines */
3780 0x001c0002, /* wol, k2, 2 lines */
3781 0x00000000,
3782 0x00000000, /* bmbn, bb, 0 lines */
3783 0x00210008, /* bmbn, k2, 8 lines */
3784 0x00000000,
3785 0x00000000, /* ipc, bb, 0 lines */
3786 0x00000000, /* ipc, k2, 0 lines */
3787 0x00000000,
3788 0x00000000, /* nwm, bb, 0 lines */
3789 0x0371000b, /* nwm, k2, 11 lines */
3790 0x00000000,
3791 0x00000000, /* nws, bb, 0 lines */
3792 0x037c0009, /* nws, k2, 9 lines */
3793 0x00000000,
3794 0x00000000, /* ms, bb, 0 lines */
3795 0x00120004, /* ms, k2, 4 lines */
3796 0x00000000,
3797 0x00000000, /* phy_pcie, bb, 0 lines */
3798 0x00e5001a, /* phy_pcie, k2, 26 lines */
3799 0x00000000,
3800 0x00000000, /* led, bb, 0 lines */
3801 0x00000000, /* led, k2, 0 lines */
3802 0x00000000,
3803 0x00000000, /* avs_wrap, bb, 0 lines */
3804 0x00000000, /* avs_wrap, k2, 0 lines */
3805 0x00000000,
3806 0x00000000, /* bar0_map, bb, 0 lines */
3807 0x00000000, /* bar0_map, k2, 0 lines */
3808 0x00000000,
Tomer Tayarda090912017-12-27 19:30:07 +02003809 0x00000000, /* bar0_map, bb, 0 lines */
3810 0x00000000, /* bar0_map, k2, 0 lines */
3811 0x00000000,
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03003812};
3813
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02003814/* Win 2 */
Yuval Mintz05fafbf2016-08-19 09:33:31 +03003815#define GTT_BAR0_MAP_REG_IGU_CMD 0x00f000UL
Yuval Mintz351a4ded2016-06-02 10:23:29 +03003816
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02003817/* Win 3 */
Yuval Mintz05fafbf2016-08-19 09:33:31 +03003818#define GTT_BAR0_MAP_REG_TSDM_RAM 0x010000UL
Yuval Mintz351a4ded2016-06-02 10:23:29 +03003819
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02003820/* Win 4 */
Yuval Mintz05fafbf2016-08-19 09:33:31 +03003821#define GTT_BAR0_MAP_REG_MSDM_RAM 0x011000UL
Yuval Mintz351a4ded2016-06-02 10:23:29 +03003822
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02003823/* Win 5 */
Yuval Mintz05fafbf2016-08-19 09:33:31 +03003824#define GTT_BAR0_MAP_REG_MSDM_RAM_1024 0x012000UL
Yuval Mintz351a4ded2016-06-02 10:23:29 +03003825
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02003826/* Win 6 */
Yuval Mintz05fafbf2016-08-19 09:33:31 +03003827#define GTT_BAR0_MAP_REG_USDM_RAM 0x013000UL
Yuval Mintz351a4ded2016-06-02 10:23:29 +03003828
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02003829/* Win 7 */
Yuval Mintz05fafbf2016-08-19 09:33:31 +03003830#define GTT_BAR0_MAP_REG_USDM_RAM_1024 0x014000UL
Yuval Mintz351a4ded2016-06-02 10:23:29 +03003831
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02003832/* Win 8 */
Yuval Mintz05fafbf2016-08-19 09:33:31 +03003833#define GTT_BAR0_MAP_REG_USDM_RAM_2048 0x015000UL
Yuval Mintz351a4ded2016-06-02 10:23:29 +03003834
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02003835/* Win 9 */
Yuval Mintz05fafbf2016-08-19 09:33:31 +03003836#define GTT_BAR0_MAP_REG_XSDM_RAM 0x016000UL
Yuval Mintz351a4ded2016-06-02 10:23:29 +03003837
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02003838/* Win 10 */
Yuval Mintz05fafbf2016-08-19 09:33:31 +03003839#define GTT_BAR0_MAP_REG_YSDM_RAM 0x017000UL
Yuval Mintz351a4ded2016-06-02 10:23:29 +03003840
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02003841/* Win 11 */
Yuval Mintz05fafbf2016-08-19 09:33:31 +03003842#define GTT_BAR0_MAP_REG_PSDM_RAM 0x018000UL
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02003843
3844/**
3845 * @brief qed_qm_pf_mem_size - prepare QM ILT sizes
3846 *
3847 * Returns the required host memory size in 4KB units.
3848 * Must be called before all QM init HSI functions.
3849 *
Yuval Mintz351a4ded2016-06-02 10:23:29 +03003850 * @param num_pf_cids - number of connections used by this PF
3851 * @param num_vf_cids - number of connections used by VFs of this PF
3852 * @param num_tids - number of tasks used by this PF
3853 * @param num_pf_pqs - number of PQs used by this PF
3854 * @param num_vf_pqs - number of PQs used by VFs of this PF
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02003855 *
3856 * @return The required host memory size in 4KB units.
3857 */
Tomer Tayarda090912017-12-27 19:30:07 +02003858u32 qed_qm_pf_mem_size(u32 num_pf_cids,
Yuval Mintz351a4ded2016-06-02 10:23:29 +03003859 u32 num_vf_cids,
3860 u32 num_tids, u16 num_pf_pqs, u16 num_vf_pqs);
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02003861
3862struct qed_qm_common_rt_init_params {
Yuval Mintz351a4ded2016-06-02 10:23:29 +03003863 u8 max_ports_per_engine;
3864 u8 max_phys_tcs_per_port;
3865 bool pf_rl_en;
3866 bool pf_wfq_en;
3867 bool vport_rl_en;
3868 bool vport_wfq_en;
3869 struct init_qm_port_params *port_params;
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02003870};
3871
Yuval Mintz351a4ded2016-06-02 10:23:29 +03003872int qed_qm_common_rt_init(struct qed_hwfn *p_hwfn,
3873 struct qed_qm_common_rt_init_params *p_params);
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02003874
3875struct qed_qm_pf_rt_init_params {
Yuval Mintz351a4ded2016-06-02 10:23:29 +03003876 u8 port_id;
3877 u8 pf_id;
3878 u8 max_phys_tcs_per_port;
Tomer Tayarda090912017-12-27 19:30:07 +02003879 bool is_pf_loading;
Yuval Mintz351a4ded2016-06-02 10:23:29 +03003880 u32 num_pf_cids;
3881 u32 num_vf_cids;
3882 u32 num_tids;
3883 u16 start_pq;
3884 u16 num_pf_pqs;
3885 u16 num_vf_pqs;
3886 u8 start_vport;
3887 u8 num_vports;
Yuval Mintz05fafbf2016-08-19 09:33:31 +03003888 u16 pf_wfq;
Yuval Mintz351a4ded2016-06-02 10:23:29 +03003889 u32 pf_rl;
Tomer Tayarda090912017-12-27 19:30:07 +02003890 u32 link_speed;
Yuval Mintz351a4ded2016-06-02 10:23:29 +03003891 struct init_qm_pq_params *pq_params;
3892 struct init_qm_vport_params *vport_params;
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02003893};
3894
Yuval Mintz351a4ded2016-06-02 10:23:29 +03003895int qed_qm_pf_rt_init(struct qed_hwfn *p_hwfn,
3896 struct qed_ptt *p_ptt,
3897 struct qed_qm_pf_rt_init_params *p_params);
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02003898
3899/**
Yuval Mintz351a4ded2016-06-02 10:23:29 +03003900 * @brief qed_init_pf_wfq - Initializes the WFQ weight of the specified PF
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02003901 *
3902 * @param p_hwfn
Yuval Mintz351a4ded2016-06-02 10:23:29 +03003903 * @param p_ptt - ptt window used for writing the registers
3904 * @param pf_id - PF ID
3905 * @param pf_wfq - WFQ weight. Must be non-zero.
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02003906 *
3907 * @return 0 on success, -1 on error.
3908 */
Yuval Mintz351a4ded2016-06-02 10:23:29 +03003909int qed_init_pf_wfq(struct qed_hwfn *p_hwfn,
3910 struct qed_ptt *p_ptt, u8 pf_id, u16 pf_wfq);
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02003911
3912/**
Yuval Mintz351a4ded2016-06-02 10:23:29 +03003913 * @brief qed_init_pf_rl - Initializes the rate limit of the specified PF
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02003914 *
3915 * @param p_hwfn
Yuval Mintz351a4ded2016-06-02 10:23:29 +03003916 * @param p_ptt - ptt window used for writing the registers
3917 * @param pf_id - PF ID
3918 * @param pf_rl - rate limit in Mb/sec units
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02003919 *
3920 * @return 0 on success, -1 on error.
3921 */
Yuval Mintz351a4ded2016-06-02 10:23:29 +03003922int qed_init_pf_rl(struct qed_hwfn *p_hwfn,
3923 struct qed_ptt *p_ptt, u8 pf_id, u32 pf_rl);
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02003924
Yuval Mintz351a4ded2016-06-02 10:23:29 +03003925/**
3926 * @brief qed_init_vport_wfq Initializes the WFQ weight of the specified VPORT
3927 *
3928 * @param p_hwfn
3929 * @param p_ptt - ptt window used for writing the registers
3930 * @param first_tx_pq_id- An array containing the first Tx PQ ID associated
3931 * with the VPORT for each TC. This array is filled by
3932 * qed_qm_pf_rt_init
3933 * @param vport_wfq - WFQ weight. Must be non-zero.
3934 *
3935 * @return 0 on success, -1 on error.
3936 */
3937int qed_init_vport_wfq(struct qed_hwfn *p_hwfn,
3938 struct qed_ptt *p_ptt,
3939 u16 first_tx_pq_id[NUM_OF_TCS], u16 vport_wfq);
3940
3941/**
3942 * @brief qed_init_vport_rl - Initializes the rate limit of the specified VPORT
3943 *
3944 * @param p_hwfn
3945 * @param p_ptt - ptt window used for writing the registers
3946 * @param vport_id - VPORT ID
3947 * @param vport_rl - rate limit in Mb/sec units
Tomer Tayarda090912017-12-27 19:30:07 +02003948 * @param link_speed - link speed in Mbps.
Yuval Mintz351a4ded2016-06-02 10:23:29 +03003949 *
3950 * @return 0 on success, -1 on error.
3951 */
3952int qed_init_vport_rl(struct qed_hwfn *p_hwfn,
Tomer Tayarda090912017-12-27 19:30:07 +02003953 struct qed_ptt *p_ptt,
3954 u8 vport_id, u32 vport_rl, u32 link_speed);
3955
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02003956/**
3957 * @brief qed_send_qm_stop_cmd Sends a stop command to the QM
3958 *
3959 * @param p_hwfn
Yuval Mintz351a4ded2016-06-02 10:23:29 +03003960 * @param p_ptt
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02003961 * @param is_release_cmd - true for release, false for stop.
Yuval Mintz351a4ded2016-06-02 10:23:29 +03003962 * @param is_tx_pq - true for Tx PQs, false for Other PQs.
3963 * @param start_pq - first PQ ID to stop
3964 * @param num_pqs - Number of PQs to stop, starting from start_pq.
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02003965 *
Tomer Tayarda090912017-12-27 19:30:07 +02003966 * @return bool, true if successful, false if timeout occurred while waiting for
3967 * QM command done.
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02003968 */
Yuval Mintz351a4ded2016-06-02 10:23:29 +03003969bool qed_send_qm_stop_cmd(struct qed_hwfn *p_hwfn,
3970 struct qed_ptt *p_ptt,
3971 bool is_release_cmd,
3972 bool is_tx_pq, u16 start_pq, u16 num_pqs);
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02003973
Yuval Mintz351a4ded2016-06-02 10:23:29 +03003974/**
3975 * @brief qed_set_vxlan_dest_port - initializes vxlan tunnel destination udp port
3976 *
Tomer Tayarda090912017-12-27 19:30:07 +02003977 * @param p_hwfn
Yuval Mintz351a4ded2016-06-02 10:23:29 +03003978 * @param p_ptt - ptt window used for writing the registers.
3979 * @param dest_port - vxlan destination udp port.
3980 */
Manish Chopra464f6642016-04-14 01:38:29 -04003981void qed_set_vxlan_dest_port(struct qed_hwfn *p_hwfn,
Yuval Mintz351a4ded2016-06-02 10:23:29 +03003982 struct qed_ptt *p_ptt, u16 dest_port);
3983
3984/**
3985 * @brief qed_set_vxlan_enable - enable or disable VXLAN tunnel in HW
3986 *
Tomer Tayarda090912017-12-27 19:30:07 +02003987 * @param p_hwfn
Yuval Mintz351a4ded2016-06-02 10:23:29 +03003988 * @param p_ptt - ptt window used for writing the registers.
3989 * @param vxlan_enable - vxlan enable flag.
3990 */
Manish Chopra464f6642016-04-14 01:38:29 -04003991void qed_set_vxlan_enable(struct qed_hwfn *p_hwfn,
3992 struct qed_ptt *p_ptt, bool vxlan_enable);
Yuval Mintz351a4ded2016-06-02 10:23:29 +03003993
3994/**
3995 * @brief qed_set_gre_enable - enable or disable GRE tunnel in HW
3996 *
Tomer Tayarda090912017-12-27 19:30:07 +02003997 * @param p_hwfn
Yuval Mintz351a4ded2016-06-02 10:23:29 +03003998 * @param p_ptt - ptt window used for writing the registers.
3999 * @param eth_gre_enable - eth GRE enable enable flag.
4000 * @param ip_gre_enable - IP GRE enable enable flag.
4001 */
Manish Chopra464f6642016-04-14 01:38:29 -04004002void qed_set_gre_enable(struct qed_hwfn *p_hwfn,
Yuval Mintz351a4ded2016-06-02 10:23:29 +03004003 struct qed_ptt *p_ptt,
4004 bool eth_gre_enable, bool ip_gre_enable);
4005
4006/**
4007 * @brief qed_set_geneve_dest_port - initializes geneve tunnel destination udp port
4008 *
Tomer Tayarda090912017-12-27 19:30:07 +02004009 * @param p_hwfn
Yuval Mintz351a4ded2016-06-02 10:23:29 +03004010 * @param p_ptt - ptt window used for writing the registers.
4011 * @param dest_port - geneve destination udp port.
4012 */
Manish Chopra464f6642016-04-14 01:38:29 -04004013void qed_set_geneve_dest_port(struct qed_hwfn *p_hwfn,
4014 struct qed_ptt *p_ptt, u16 dest_port);
Yuval Mintz351a4ded2016-06-02 10:23:29 +03004015
4016/**
4017 * @brief qed_set_gre_enable - enable or disable GRE tunnel in HW
4018 *
4019 * @param p_ptt - ptt window used for writing the registers.
4020 * @param eth_geneve_enable - eth GENEVE enable enable flag.
4021 * @param ip_geneve_enable - IP GENEVE enable enable flag.
4022 */
Manish Chopra464f6642016-04-14 01:38:29 -04004023void qed_set_geneve_enable(struct qed_hwfn *p_hwfn,
Yuval Mintz351a4ded2016-06-02 10:23:29 +03004024 struct qed_ptt *p_ptt,
4025 bool eth_geneve_enable, bool ip_geneve_enable);
Tomer Tayarda090912017-12-27 19:30:07 +02004026
Michal Kalderon50bc60c2018-03-28 11:42:16 +03004027void qed_set_vxlan_no_l2_enable(struct qed_hwfn *p_hwfn,
4028 struct qed_ptt *p_ptt, bool enable);
4029
Tomer Tayarda090912017-12-27 19:30:07 +02004030/**
4031 * @brief qed_gft_disable - Disable GFT
4032 *
4033 * @param p_hwfn
4034 * @param p_ptt - ptt window used for writing the registers.
4035 * @param pf_id - pf on which to disable GFT.
4036 */
4037void qed_gft_disable(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt, u16 pf_id);
4038
4039/**
4040 * @brief qed_gft_config - Enable and configure HW for GFT
4041 *
4042 * @param p_hwfn
4043 * @param p_ptt - ptt window used for writing the registers.
4044 * @param pf_id - pf on which to enable GFT.
4045 * @param tcp - set profile tcp packets.
4046 * @param udp - set profile udp packet.
4047 * @param ipv4 - set profile ipv4 packet.
4048 * @param ipv6 - set profile ipv6 packet.
4049 * @param profile_type - define packet same fields. Use enum gft_profile_type.
4050 */
4051void qed_gft_config(struct qed_hwfn *p_hwfn,
4052 struct qed_ptt *p_ptt,
4053 u16 pf_id,
4054 bool tcp,
4055 bool udp,
4056 bool ipv4, bool ipv6, enum gft_profile_type profile_type);
4057
4058/**
4059 * @brief qed_enable_context_validation - Enable and configure context
4060 * validation.
4061 *
4062 * @param p_hwfn
4063 * @param p_ptt - ptt window used for writing the registers.
4064 */
4065void qed_enable_context_validation(struct qed_hwfn *p_hwfn,
4066 struct qed_ptt *p_ptt);
4067
4068/**
4069 * @brief qed_calc_session_ctx_validation - Calcualte validation byte for
4070 * session context.
4071 *
4072 * @param p_ctx_mem - pointer to context memory.
4073 * @param ctx_size - context size.
4074 * @param ctx_type - context type.
4075 * @param cid - context cid.
4076 */
4077void qed_calc_session_ctx_validation(void *p_ctx_mem,
4078 u16 ctx_size, u8 ctx_type, u32 cid);
4079
4080/**
4081 * @brief qed_calc_task_ctx_validation - Calcualte validation byte for task
4082 * context.
4083 *
4084 * @param p_ctx_mem - pointer to context memory.
4085 * @param ctx_size - context size.
4086 * @param ctx_type - context type.
4087 * @param tid - context tid.
4088 */
4089void qed_calc_task_ctx_validation(void *p_ctx_mem,
4090 u16 ctx_size, u8 ctx_type, u32 tid);
4091
4092/**
4093 * @brief qed_memset_session_ctx - Memset session context to 0 while
4094 * preserving validation bytes.
4095 *
4096 * @param p_hwfn -
4097 * @param p_ctx_mem - pointer to context memory.
4098 * @param ctx_size - size to initialzie.
4099 * @param ctx_type - context type.
4100 */
4101void qed_memset_session_ctx(void *p_ctx_mem, u32 ctx_size, u8 ctx_type);
4102
4103/**
4104 * @brief qed_memset_task_ctx - Memset task context to 0 while preserving
4105 * validation bytes.
4106 *
4107 * @param p_ctx_mem - pointer to context memory.
4108 * @param ctx_size - size to initialzie.
4109 * @param ctx_type - context type.
4110 */
4111void qed_memset_task_ctx(void *p_ctx_mem, u32 ctx_size, u8 ctx_type);
Manish Chopra464f6642016-04-14 01:38:29 -04004112
Tomer Tayara2e76992017-12-27 19:30:05 +02004113/* Ystorm flow control mode. Use enum fw_flow_ctrl_mode */
4114#define YSTORM_FLOW_CONTROL_MODE_OFFSET (IRO[0].base)
4115#define YSTORM_FLOW_CONTROL_MODE_SIZE (IRO[0].size)
4116
4117/* Tstorm port statistics */
4118#define TSTORM_PORT_STAT_OFFSET(port_id) \
Yuval Mintz351a4ded2016-06-02 10:23:29 +03004119 (IRO[1].base + ((port_id) * IRO[1].m1))
Tomer Tayara2e76992017-12-27 19:30:05 +02004120#define TSTORM_PORT_STAT_SIZE (IRO[1].size)
4121
4122/* Tstorm ll2 port statistics */
Yuval Mintz05fafbf2016-08-19 09:33:31 +03004123#define TSTORM_LL2_PORT_STAT_OFFSET(port_id) \
4124 (IRO[2].base + ((port_id) * IRO[2].m1))
4125#define TSTORM_LL2_PORT_STAT_SIZE (IRO[2].size)
Tomer Tayara2e76992017-12-27 19:30:05 +02004126
4127/* Ustorm VF-PF Channel ready flag */
4128#define USTORM_VF_PF_CHANNEL_READY_OFFSET(vf_id) \
Yuval Mintz351a4ded2016-06-02 10:23:29 +03004129 (IRO[3].base + ((vf_id) * IRO[3].m1))
Tomer Tayara2e76992017-12-27 19:30:05 +02004130#define USTORM_VF_PF_CHANNEL_READY_SIZE (IRO[3].size)
4131
4132/* Ustorm Final flr cleanup ack */
4133#define USTORM_FLR_FINAL_ACK_OFFSET(pf_id) \
4134 (IRO[4].base + ((pf_id) * IRO[4].m1))
4135#define USTORM_FLR_FINAL_ACK_SIZE (IRO[4].size)
4136
4137/* Ustorm Event ring consumer */
4138#define USTORM_EQE_CONS_OFFSET(pf_id) \
Yuval Mintz351a4ded2016-06-02 10:23:29 +03004139 (IRO[5].base + ((pf_id) * IRO[5].m1))
Tomer Tayara2e76992017-12-27 19:30:05 +02004140#define USTORM_EQE_CONS_SIZE (IRO[5].size)
4141
4142/* Ustorm eth queue zone */
4143#define USTORM_ETH_QUEUE_ZONE_OFFSET(queue_zone_id) \
Yuval Mintz351a4ded2016-06-02 10:23:29 +03004144 (IRO[6].base + ((queue_zone_id) * IRO[6].m1))
Tomer Tayara2e76992017-12-27 19:30:05 +02004145#define USTORM_ETH_QUEUE_ZONE_SIZE (IRO[6].size)
4146
4147/* Ustorm Common Queue ring consumer */
4148#define USTORM_COMMON_QUEUE_CONS_OFFSET(queue_zone_id) \
Yuval Mintz351a4ded2016-06-02 10:23:29 +03004149 (IRO[7].base + ((queue_zone_id) * IRO[7].m1))
Tomer Tayara2e76992017-12-27 19:30:05 +02004150#define USTORM_COMMON_QUEUE_CONS_SIZE (IRO[7].size)
4151
Tomer Tayarda090912017-12-27 19:30:07 +02004152/* Xstorm Integration Test Data */
4153#define XSTORM_INTEG_TEST_DATA_OFFSET (IRO[8].base)
4154#define XSTORM_INTEG_TEST_DATA_SIZE (IRO[8].size)
4155
4156/* Ystorm Integration Test Data */
4157#define YSTORM_INTEG_TEST_DATA_OFFSET (IRO[9].base)
4158#define YSTORM_INTEG_TEST_DATA_SIZE (IRO[9].size)
4159
4160/* Pstorm Integration Test Data */
4161#define PSTORM_INTEG_TEST_DATA_OFFSET (IRO[10].base)
4162#define PSTORM_INTEG_TEST_DATA_SIZE (IRO[10].size)
4163
4164/* Tstorm Integration Test Data */
4165#define TSTORM_INTEG_TEST_DATA_OFFSET (IRO[11].base)
4166#define TSTORM_INTEG_TEST_DATA_SIZE (IRO[11].size)
4167
4168/* Mstorm Integration Test Data */
4169#define MSTORM_INTEG_TEST_DATA_OFFSET (IRO[12].base)
4170#define MSTORM_INTEG_TEST_DATA_SIZE (IRO[12].size)
4171
4172/* Ustorm Integration Test Data */
4173#define USTORM_INTEG_TEST_DATA_OFFSET (IRO[13].base)
4174#define USTORM_INTEG_TEST_DATA_SIZE (IRO[13].size)
4175
Tomer Tayara2e76992017-12-27 19:30:05 +02004176/* Tstorm producers */
Yuval Mintz05fafbf2016-08-19 09:33:31 +03004177#define TSTORM_LL2_RX_PRODS_OFFSET(core_rx_queue_id) \
Tomer Tayara2e76992017-12-27 19:30:05 +02004178 (IRO[14].base + ((core_rx_queue_id) * IRO[14].m1))
Yuval Mintz05fafbf2016-08-19 09:33:31 +03004179#define TSTORM_LL2_RX_PRODS_SIZE (IRO[14].size)
Tomer Tayara2e76992017-12-27 19:30:05 +02004180
4181/* Tstorm LightL2 queue statistics */
Yuval Mintz05fafbf2016-08-19 09:33:31 +03004182#define CORE_LL2_TSTORM_PER_QUEUE_STAT_OFFSET(core_rx_queue_id) \
4183 (IRO[15].base + ((core_rx_queue_id) * IRO[15].m1))
4184#define CORE_LL2_TSTORM_PER_QUEUE_STAT_SIZE (IRO[15].size)
Tomer Tayara2e76992017-12-27 19:30:05 +02004185
4186/* Ustorm LiteL2 queue statistics */
Yuval Mintz05fafbf2016-08-19 09:33:31 +03004187#define CORE_LL2_USTORM_PER_QUEUE_STAT_OFFSET(core_rx_queue_id) \
Tomer Tayara2e76992017-12-27 19:30:05 +02004188 (IRO[16].base + ((core_rx_queue_id) * IRO[16].m1))
Yuval Mintz05fafbf2016-08-19 09:33:31 +03004189#define CORE_LL2_USTORM_PER_QUEUE_STAT_SIZE (IRO[16].size)
Tomer Tayara2e76992017-12-27 19:30:05 +02004190
4191/* Pstorm LiteL2 queue statistics */
Yuval Mintz05fafbf2016-08-19 09:33:31 +03004192#define CORE_LL2_PSTORM_PER_QUEUE_STAT_OFFSET(core_tx_stats_id) \
Tomer Tayara2e76992017-12-27 19:30:05 +02004193 (IRO[17].base + ((core_tx_stats_id) * IRO[17].m1))
4194#define CORE_LL2_PSTORM_PER_QUEUE_STAT_SIZE (IRO[17].size)
4195
4196/* Mstorm queue statistics */
4197#define MSTORM_QUEUE_STAT_OFFSET(stat_counter_id) \
Yuval Mintz351a4ded2016-06-02 10:23:29 +03004198 (IRO[18].base + ((stat_counter_id) * IRO[18].m1))
Tomer Tayara2e76992017-12-27 19:30:05 +02004199#define MSTORM_QUEUE_STAT_SIZE (IRO[18].size)
4200
4201/* Mstorm ETH PF queues producers */
4202#define MSTORM_ETH_PF_PRODS_OFFSET(queue_id) \
Yuval Mintz351a4ded2016-06-02 10:23:29 +03004203 (IRO[19].base + ((queue_id) * IRO[19].m1))
Tomer Tayara2e76992017-12-27 19:30:05 +02004204#define MSTORM_ETH_PF_PRODS_SIZE (IRO[19].size)
4205
4206/* Mstorm ETH VF queues producers offset in RAM. Used in default VF zone size
4207 * mode.
4208 */
Yuval Mintz05fafbf2016-08-19 09:33:31 +03004209#define MSTORM_ETH_VF_PRODS_OFFSET(vf_id, vf_queue_id) \
Tomer Tayara2e76992017-12-27 19:30:05 +02004210 (IRO[20].base + ((vf_id) * IRO[20].m1) + ((vf_queue_id) * IRO[20].m2))
Yuval Mintz05fafbf2016-08-19 09:33:31 +03004211#define MSTORM_ETH_VF_PRODS_SIZE (IRO[20].size)
Tomer Tayara2e76992017-12-27 19:30:05 +02004212
4213/* TPA agregation timeout in us resolution (on ASIC) */
4214#define MSTORM_TPA_TIMEOUT_US_OFFSET (IRO[21].base)
4215#define MSTORM_TPA_TIMEOUT_US_SIZE (IRO[21].size)
4216
4217/* Mstorm pf statistics */
4218#define MSTORM_ETH_PF_STAT_OFFSET(pf_id) \
Yuval Mintz05fafbf2016-08-19 09:33:31 +03004219 (IRO[22].base + ((pf_id) * IRO[22].m1))
Tomer Tayara2e76992017-12-27 19:30:05 +02004220#define MSTORM_ETH_PF_STAT_SIZE (IRO[22].size)
4221
4222/* Ustorm queue statistics */
4223#define USTORM_QUEUE_STAT_OFFSET(stat_counter_id) \
Yuval Mintz05fafbf2016-08-19 09:33:31 +03004224 (IRO[23].base + ((stat_counter_id) * IRO[23].m1))
Tomer Tayara2e76992017-12-27 19:30:05 +02004225#define USTORM_QUEUE_STAT_SIZE (IRO[23].size)
4226
4227/* Ustorm pf statistics */
4228#define USTORM_ETH_PF_STAT_OFFSET(pf_id)\
Yuval Mintz05fafbf2016-08-19 09:33:31 +03004229 (IRO[24].base + ((pf_id) * IRO[24].m1))
Tomer Tayara2e76992017-12-27 19:30:05 +02004230#define USTORM_ETH_PF_STAT_SIZE (IRO[24].size)
4231
4232/* Pstorm queue statistics */
4233#define PSTORM_QUEUE_STAT_OFFSET(stat_counter_id) \
Yuval Mintz05fafbf2016-08-19 09:33:31 +03004234 (IRO[25].base + ((stat_counter_id) * IRO[25].m1))
Tomer Tayara2e76992017-12-27 19:30:05 +02004235#define PSTORM_QUEUE_STAT_SIZE (IRO[25].size)
4236
4237/* Pstorm pf statistics */
4238#define PSTORM_ETH_PF_STAT_OFFSET(pf_id) \
Yuval Mintz05fafbf2016-08-19 09:33:31 +03004239 (IRO[26].base + ((pf_id) * IRO[26].m1))
Tomer Tayara2e76992017-12-27 19:30:05 +02004240#define PSTORM_ETH_PF_STAT_SIZE (IRO[26].size)
4241
4242/* Control frame's EthType configuration for TX control frame security */
4243#define PSTORM_CTL_FRAME_ETHTYPE_OFFSET(eth_type_id) \
4244 (IRO[27].base + ((eth_type_id) * IRO[27].m1))
4245#define PSTORM_CTL_FRAME_ETHTYPE_SIZE (IRO[27].size)
4246
4247/* Tstorm last parser message */
4248#define TSTORM_ETH_PRS_INPUT_OFFSET (IRO[28].base)
4249#define TSTORM_ETH_PRS_INPUT_SIZE (IRO[28].size)
4250
4251/* Tstorm Eth limit Rx rate */
4252#define ETH_RX_RATE_LIMIT_OFFSET(pf_id) \
Yuval Mintz05fafbf2016-08-19 09:33:31 +03004253 (IRO[29].base + ((pf_id) * IRO[29].m1))
Tomer Tayara2e76992017-12-27 19:30:05 +02004254#define ETH_RX_RATE_LIMIT_SIZE (IRO[29].size)
4255
4256/* Xstorm queue zone */
4257#define XSTORM_ETH_QUEUE_ZONE_OFFSET(queue_id) \
Yuval Mintz05fafbf2016-08-19 09:33:31 +03004258 (IRO[30].base + ((queue_id) * IRO[30].m1))
Tomer Tayara2e76992017-12-27 19:30:05 +02004259#define XSTORM_ETH_QUEUE_ZONE_SIZE (IRO[30].size)
4260
Tomer Tayarda090912017-12-27 19:30:07 +02004261/* Ystorm cqe producer */
4262#define YSTORM_TOE_CQ_PROD_OFFSET(rss_id) \
4263 (IRO[31].base + ((rss_id) * IRO[31].m1))
4264#define YSTORM_TOE_CQ_PROD_SIZE (IRO[31].size)
4265
4266/* Ustorm cqe producer */
4267#define USTORM_TOE_CQ_PROD_OFFSET(rss_id) \
4268 (IRO[32].base + ((rss_id) * IRO[32].m1))
4269#define USTORM_TOE_CQ_PROD_SIZE (IRO[32].size)
4270
4271/* Ustorm grq producer */
4272#define USTORM_TOE_GRQ_PROD_OFFSET(pf_id) \
4273 (IRO[33].base + ((pf_id) * IRO[33].m1))
4274#define USTORM_TOE_GRQ_PROD_SIZE (IRO[33].size)
4275
Tomer Tayara2e76992017-12-27 19:30:05 +02004276/* Tstorm cmdq-cons of given command queue-id */
Yuval Mintz05fafbf2016-08-19 09:33:31 +03004277#define TSTORM_SCSI_CMDQ_CONS_OFFSET(cmdq_queue_id) \
Tomer Tayara2e76992017-12-27 19:30:05 +02004278 (IRO[34].base + ((cmdq_queue_id) * IRO[34].m1))
4279#define TSTORM_SCSI_CMDQ_CONS_SIZE (IRO[34].size)
4280
4281/* Tstorm (reflects M-Storm) bdq-external-producer of given function ID,
4282 * BDqueue-id.
4283 */
Yuval Mintz05fafbf2016-08-19 09:33:31 +03004284#define TSTORM_SCSI_BDQ_EXT_PROD_OFFSET(func_id, bdq_id) \
Tomer Tayara2e76992017-12-27 19:30:05 +02004285 (IRO[35].base + ((func_id) * IRO[35].m1) + ((bdq_id) * IRO[35].m2))
4286#define TSTORM_SCSI_BDQ_EXT_PROD_SIZE (IRO[35].size)
4287
4288/* Mstorm bdq-external-producer of given BDQ resource ID, BDqueue-id */
Yuval Mintz05fafbf2016-08-19 09:33:31 +03004289#define MSTORM_SCSI_BDQ_EXT_PROD_OFFSET(func_id, bdq_id) \
Tomer Tayara2e76992017-12-27 19:30:05 +02004290 (IRO[36].base + ((func_id) * IRO[36].m1) + ((bdq_id) * IRO[36].m2))
4291#define MSTORM_SCSI_BDQ_EXT_PROD_SIZE (IRO[36].size)
4292
4293/* Tstorm iSCSI RX stats */
Yuval Mintz05fafbf2016-08-19 09:33:31 +03004294#define TSTORM_ISCSI_RX_STATS_OFFSET(pf_id) \
Tomer Tayara2e76992017-12-27 19:30:05 +02004295 (IRO[37].base + ((pf_id) * IRO[37].m1))
4296#define TSTORM_ISCSI_RX_STATS_SIZE (IRO[37].size)
4297
4298/* Mstorm iSCSI RX stats */
Yuval Mintz05fafbf2016-08-19 09:33:31 +03004299#define MSTORM_ISCSI_RX_STATS_OFFSET(pf_id) \
Tomer Tayara2e76992017-12-27 19:30:05 +02004300 (IRO[38].base + ((pf_id) * IRO[38].m1))
4301#define MSTORM_ISCSI_RX_STATS_SIZE (IRO[38].size)
4302
4303/* Ustorm iSCSI RX stats */
Yuval Mintz05fafbf2016-08-19 09:33:31 +03004304#define USTORM_ISCSI_RX_STATS_OFFSET(pf_id) \
Tomer Tayara2e76992017-12-27 19:30:05 +02004305 (IRO[39].base + ((pf_id) * IRO[39].m1))
4306#define USTORM_ISCSI_RX_STATS_SIZE (IRO[39].size)
4307
4308/* Xstorm iSCSI TX stats */
Yuval Mintz05fafbf2016-08-19 09:33:31 +03004309#define XSTORM_ISCSI_TX_STATS_OFFSET(pf_id) \
Tomer Tayara2e76992017-12-27 19:30:05 +02004310 (IRO[40].base + ((pf_id) * IRO[40].m1))
4311#define XSTORM_ISCSI_TX_STATS_SIZE (IRO[40].size)
4312
4313/* Ystorm iSCSI TX stats */
Yuval Mintz05fafbf2016-08-19 09:33:31 +03004314#define YSTORM_ISCSI_TX_STATS_OFFSET(pf_id) \
Tomer Tayara2e76992017-12-27 19:30:05 +02004315 (IRO[41].base + ((pf_id) * IRO[41].m1))
4316#define YSTORM_ISCSI_TX_STATS_SIZE (IRO[41].size)
4317
4318/* Pstorm iSCSI TX stats */
Yuval Mintz05fafbf2016-08-19 09:33:31 +03004319#define PSTORM_ISCSI_TX_STATS_OFFSET(pf_id) \
Tomer Tayara2e76992017-12-27 19:30:05 +02004320 (IRO[42].base + ((pf_id) * IRO[42].m1))
4321#define PSTORM_ISCSI_TX_STATS_SIZE (IRO[42].size)
4322
4323/* Tstorm FCoE RX stats */
Arun Easi1e128c82017-02-15 06:28:22 -08004324#define TSTORM_FCOE_RX_STATS_OFFSET(pf_id) \
Tomer Tayara2e76992017-12-27 19:30:05 +02004325 (IRO[43].base + ((pf_id) * IRO[43].m1))
Tomer Tayarda090912017-12-27 19:30:07 +02004326#define TSTORM_FCOE_RX_STATS_SIZE (IRO[43].size)
Tomer Tayara2e76992017-12-27 19:30:05 +02004327
4328/* Pstorm FCoE TX stats */
Arun Easi1e128c82017-02-15 06:28:22 -08004329#define PSTORM_FCOE_TX_STATS_OFFSET(pf_id) \
4330 (IRO[44].base + ((pf_id) * IRO[44].m1))
Tomer Tayarda090912017-12-27 19:30:07 +02004331#define PSTORM_FCOE_TX_STATS_SIZE (IRO[44].size)
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02004332
Tomer Tayara2e76992017-12-27 19:30:05 +02004333/* Pstorm RDMA queue statistics */
4334#define PSTORM_RDMA_QUEUE_STAT_OFFSET(rdma_stat_counter_id) \
4335 (IRO[45].base + ((rdma_stat_counter_id) * IRO[45].m1))
4336#define PSTORM_RDMA_QUEUE_STAT_SIZE (IRO[45].size)
4337
4338/* Tstorm RDMA queue statistics */
4339#define TSTORM_RDMA_QUEUE_STAT_OFFSET(rdma_stat_counter_id) \
4340 (IRO[46].base + ((rdma_stat_counter_id) * IRO[46].m1))
4341#define TSTORM_RDMA_QUEUE_STAT_SIZE (IRO[46].size)
4342
Tomer Tayarda090912017-12-27 19:30:07 +02004343/* Xstorm iWARP rxmit stats */
4344#define XSTORM_IWARP_RXMIT_STATS_OFFSET(pf_id) \
4345 (IRO[47].base + ((pf_id) * IRO[47].m1))
4346#define XSTORM_IWARP_RXMIT_STATS_SIZE (IRO[47].size)
4347
4348/* Tstorm RoCE Event Statistics */
4349#define TSTORM_ROCE_EVENTS_STAT_OFFSET(roce_pf_id) \
4350 (IRO[48].base + ((roce_pf_id) * IRO[48].m1))
4351#define TSTORM_ROCE_EVENTS_STAT_SIZE (IRO[48].size)
4352
4353/* DCQCN Received Statistics */
4354#define YSTORM_ROCE_DCQCN_RECEIVED_STATS_OFFSET(roce_pf_id) \
4355 (IRO[49].base + ((roce_pf_id) * IRO[49].m1))
4356#define YSTORM_ROCE_DCQCN_RECEIVED_STATS_SIZE (IRO[49].size)
4357
4358/* DCQCN Sent Statistics */
4359#define PSTORM_ROCE_DCQCN_SENT_STATS_OFFSET(roce_pf_id) \
4360 (IRO[50].base + ((roce_pf_id) * IRO[50].m1))
4361#define PSTORM_ROCE_DCQCN_SENT_STATS_SIZE (IRO[50].size)
4362
4363static const struct iro iro_arr[51] = {
Yuval Mintz351a4ded2016-06-02 10:23:29 +03004364 {0x0, 0x0, 0x0, 0x0, 0x8},
Tomer Tayarda090912017-12-27 19:30:07 +02004365 {0x4cb8, 0x88, 0x0, 0x0, 0x88},
4366 {0x6530, 0x20, 0x0, 0x0, 0x20},
Yuval Mintz351a4ded2016-06-02 10:23:29 +03004367 {0xb00, 0x8, 0x0, 0x0, 0x4},
4368 {0xa80, 0x8, 0x0, 0x0, 0x4},
4369 {0x0, 0x8, 0x0, 0x0, 0x2},
4370 {0x80, 0x8, 0x0, 0x0, 0x4},
4371 {0x84, 0x8, 0x0, 0x0, 0x2},
Tomer Tayarda090912017-12-27 19:30:07 +02004372 {0x4c48, 0x0, 0x0, 0x0, 0x78},
Michal Kalderon50bc60c2018-03-28 11:42:16 +03004373 {0x3e38, 0x0, 0x0, 0x0, 0x78},
4374 {0x2b78, 0x0, 0x0, 0x0, 0x78},
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03004375 {0x4c40, 0x0, 0x0, 0x0, 0x78},
Tomer Tayarda090912017-12-27 19:30:07 +02004376 {0x4998, 0x0, 0x0, 0x0, 0x78},
4377 {0x7f50, 0x0, 0x0, 0x0, 0x78},
Yuval Mintz351a4ded2016-06-02 10:23:29 +03004378 {0xa28, 0x8, 0x0, 0x0, 0x8},
Tomer Tayarda090912017-12-27 19:30:07 +02004379 {0x6210, 0x10, 0x0, 0x0, 0x10},
4380 {0xb820, 0x30, 0x0, 0x0, 0x30},
4381 {0x96c0, 0x30, 0x0, 0x0, 0x30},
4382 {0x4b68, 0x80, 0x0, 0x0, 0x40},
Yuval Mintz351a4ded2016-06-02 10:23:29 +03004383 {0x1f8, 0x4, 0x0, 0x0, 0x4},
Tomer Tayarda090912017-12-27 19:30:07 +02004384 {0x53a8, 0x80, 0x4, 0x0, 0x4},
4385 {0xc7d0, 0x0, 0x0, 0x0, 0x4},
4386 {0x4ba8, 0x80, 0x0, 0x0, 0x20},
4387 {0x8158, 0x40, 0x0, 0x0, 0x30},
4388 {0xe770, 0x60, 0x0, 0x0, 0x60},
Michal Kalderon50bc60c2018-03-28 11:42:16 +03004389 {0x2d10, 0x80, 0x0, 0x0, 0x38},
Tomer Tayarda090912017-12-27 19:30:07 +02004390 {0xf2b8, 0x78, 0x0, 0x0, 0x78},
Yuval Mintz351a4ded2016-06-02 10:23:29 +03004391 {0x1f8, 0x4, 0x0, 0x0, 0x4},
Tomer Tayarda090912017-12-27 19:30:07 +02004392 {0xaf20, 0x0, 0x0, 0x0, 0xf0},
4393 {0xb010, 0x8, 0x0, 0x0, 0x8},
Yuval Mintz351a4ded2016-06-02 10:23:29 +03004394 {0x1f8, 0x8, 0x0, 0x0, 0x8},
4395 {0xac0, 0x8, 0x0, 0x0, 0x8},
4396 {0x2578, 0x8, 0x0, 0x0, 0x8},
4397 {0x24f8, 0x8, 0x0, 0x0, 0x8},
4398 {0x0, 0x8, 0x0, 0x0, 0x8},
Tomer Tayarda090912017-12-27 19:30:07 +02004399 {0x400, 0x18, 0x8, 0x0, 0x8},
4400 {0xb78, 0x18, 0x8, 0x0, 0x2},
4401 {0xd898, 0x50, 0x0, 0x0, 0x3c},
4402 {0x12908, 0x18, 0x0, 0x0, 0x10},
4403 {0x11aa8, 0x40, 0x0, 0x0, 0x18},
4404 {0xa588, 0x50, 0x0, 0x0, 0x20},
4405 {0x8700, 0x40, 0x0, 0x0, 0x28},
4406 {0x10300, 0x18, 0x0, 0x0, 0x10},
4407 {0xde48, 0x48, 0x0, 0x0, 0x38},
4408 {0x10768, 0x20, 0x0, 0x0, 0x20},
Michal Kalderon50bc60c2018-03-28 11:42:16 +03004409 {0x2d48, 0x80, 0x0, 0x0, 0x10},
Tomer Tayarda090912017-12-27 19:30:07 +02004410 {0x5048, 0x10, 0x0, 0x0, 0x10},
4411 {0xc9b8, 0x30, 0x0, 0x0, 0x10},
Michal Kalderon50bc60c2018-03-28 11:42:16 +03004412 {0xed90, 0x10, 0x0, 0x0, 0x10},
Tomer Tayarda090912017-12-27 19:30:07 +02004413 {0xa3a0, 0x10, 0x0, 0x0, 0x10},
4414 {0x13108, 0x8, 0x0, 0x0, 0x8},
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02004415};
4416
4417/* Runtime array offsets */
Tomer Tayarda090912017-12-27 19:30:07 +02004418#define DORQ_REG_PF_MAX_ICID_0_RT_OFFSET 0
4419#define DORQ_REG_PF_MAX_ICID_1_RT_OFFSET 1
4420#define DORQ_REG_PF_MAX_ICID_2_RT_OFFSET 2
4421#define DORQ_REG_PF_MAX_ICID_3_RT_OFFSET 3
4422#define DORQ_REG_PF_MAX_ICID_4_RT_OFFSET 4
4423#define DORQ_REG_PF_MAX_ICID_5_RT_OFFSET 5
4424#define DORQ_REG_PF_MAX_ICID_6_RT_OFFSET 6
4425#define DORQ_REG_PF_MAX_ICID_7_RT_OFFSET 7
4426#define DORQ_REG_VF_MAX_ICID_0_RT_OFFSET 8
4427#define DORQ_REG_VF_MAX_ICID_1_RT_OFFSET 9
4428#define DORQ_REG_VF_MAX_ICID_2_RT_OFFSET 10
4429#define DORQ_REG_VF_MAX_ICID_3_RT_OFFSET 11
4430#define DORQ_REG_VF_MAX_ICID_4_RT_OFFSET 12
4431#define DORQ_REG_VF_MAX_ICID_5_RT_OFFSET 13
4432#define DORQ_REG_VF_MAX_ICID_6_RT_OFFSET 14
4433#define DORQ_REG_VF_MAX_ICID_7_RT_OFFSET 15
4434#define DORQ_REG_PF_WAKE_ALL_RT_OFFSET 16
4435#define DORQ_REG_TAG1_ETHERTYPE_RT_OFFSET 17
4436#define DORQ_REG_GLB_MAX_ICID_0_RT_OFFSET 18
4437#define DORQ_REG_GLB_MAX_ICID_1_RT_OFFSET 19
4438#define DORQ_REG_GLB_RANGE2CONN_TYPE_0_RT_OFFSET 20
4439#define DORQ_REG_GLB_RANGE2CONN_TYPE_1_RT_OFFSET 21
4440#define DORQ_REG_PRV_PF_MAX_ICID_2_RT_OFFSET 22
4441#define DORQ_REG_PRV_PF_MAX_ICID_3_RT_OFFSET 23
4442#define DORQ_REG_PRV_PF_MAX_ICID_4_RT_OFFSET 24
4443#define DORQ_REG_PRV_PF_MAX_ICID_5_RT_OFFSET 25
4444#define DORQ_REG_PRV_VF_MAX_ICID_2_RT_OFFSET 26
4445#define DORQ_REG_PRV_VF_MAX_ICID_3_RT_OFFSET 27
4446#define DORQ_REG_PRV_VF_MAX_ICID_4_RT_OFFSET 28
4447#define DORQ_REG_PRV_VF_MAX_ICID_5_RT_OFFSET 29
4448#define DORQ_REG_PRV_PF_RANGE2CONN_TYPE_2_RT_OFFSET 30
4449#define DORQ_REG_PRV_PF_RANGE2CONN_TYPE_3_RT_OFFSET 31
4450#define DORQ_REG_PRV_PF_RANGE2CONN_TYPE_4_RT_OFFSET 32
4451#define DORQ_REG_PRV_PF_RANGE2CONN_TYPE_5_RT_OFFSET 33
4452#define DORQ_REG_PRV_VF_RANGE2CONN_TYPE_2_RT_OFFSET 34
4453#define DORQ_REG_PRV_VF_RANGE2CONN_TYPE_3_RT_OFFSET 35
4454#define DORQ_REG_PRV_VF_RANGE2CONN_TYPE_4_RT_OFFSET 36
4455#define DORQ_REG_PRV_VF_RANGE2CONN_TYPE_5_RT_OFFSET 37
4456#define IGU_REG_PF_CONFIGURATION_RT_OFFSET 38
4457#define IGU_REG_VF_CONFIGURATION_RT_OFFSET 39
4458#define IGU_REG_ATTN_MSG_ADDR_L_RT_OFFSET 40
4459#define IGU_REG_ATTN_MSG_ADDR_H_RT_OFFSET 41
4460#define IGU_REG_LEADING_EDGE_LATCH_RT_OFFSET 42
4461#define IGU_REG_TRAILING_EDGE_LATCH_RT_OFFSET 43
4462#define CAU_REG_CQE_AGG_UNIT_SIZE_RT_OFFSET 44
4463#define CAU_REG_SB_VAR_MEMORY_RT_OFFSET 45
4464#define CAU_REG_SB_VAR_MEMORY_RT_SIZE 1024
4465#define CAU_REG_SB_ADDR_MEMORY_RT_OFFSET 1069
4466#define CAU_REG_SB_ADDR_MEMORY_RT_SIZE 1024
4467#define CAU_REG_PI_MEMORY_RT_OFFSET 2093
4468#define CAU_REG_PI_MEMORY_RT_SIZE 4416
4469#define PRS_REG_SEARCH_RESP_INITIATOR_TYPE_RT_OFFSET 6509
4470#define PRS_REG_TASK_ID_MAX_INITIATOR_PF_RT_OFFSET 6510
4471#define PRS_REG_TASK_ID_MAX_INITIATOR_VF_RT_OFFSET 6511
4472#define PRS_REG_TASK_ID_MAX_TARGET_PF_RT_OFFSET 6512
4473#define PRS_REG_TASK_ID_MAX_TARGET_VF_RT_OFFSET 6513
4474#define PRS_REG_SEARCH_TCP_RT_OFFSET 6514
4475#define PRS_REG_SEARCH_FCOE_RT_OFFSET 6515
4476#define PRS_REG_SEARCH_ROCE_RT_OFFSET 6516
4477#define PRS_REG_ROCE_DEST_QP_MAX_VF_RT_OFFSET 6517
4478#define PRS_REG_ROCE_DEST_QP_MAX_PF_RT_OFFSET 6518
4479#define PRS_REG_SEARCH_OPENFLOW_RT_OFFSET 6519
4480#define PRS_REG_SEARCH_NON_IP_AS_OPENFLOW_RT_OFFSET 6520
4481#define PRS_REG_OPENFLOW_SUPPORT_ONLY_KNOWN_OVER_IP_RT_OFFSET 6521
4482#define PRS_REG_OPENFLOW_SEARCH_KEY_MASK_RT_OFFSET 6522
4483#define PRS_REG_TAG_ETHERTYPE_0_RT_OFFSET 6523
4484#define PRS_REG_LIGHT_L2_ETHERTYPE_EN_RT_OFFSET 6524
4485#define SRC_REG_FIRSTFREE_RT_OFFSET 6525
4486#define SRC_REG_FIRSTFREE_RT_SIZE 2
4487#define SRC_REG_LASTFREE_RT_OFFSET 6527
4488#define SRC_REG_LASTFREE_RT_SIZE 2
4489#define SRC_REG_COUNTFREE_RT_OFFSET 6529
4490#define SRC_REG_NUMBER_HASH_BITS_RT_OFFSET 6530
4491#define PSWRQ2_REG_CDUT_P_SIZE_RT_OFFSET 6531
4492#define PSWRQ2_REG_CDUC_P_SIZE_RT_OFFSET 6532
4493#define PSWRQ2_REG_TM_P_SIZE_RT_OFFSET 6533
4494#define PSWRQ2_REG_QM_P_SIZE_RT_OFFSET 6534
4495#define PSWRQ2_REG_SRC_P_SIZE_RT_OFFSET 6535
4496#define PSWRQ2_REG_TSDM_P_SIZE_RT_OFFSET 6536
4497#define PSWRQ2_REG_TM_FIRST_ILT_RT_OFFSET 6537
4498#define PSWRQ2_REG_TM_LAST_ILT_RT_OFFSET 6538
4499#define PSWRQ2_REG_QM_FIRST_ILT_RT_OFFSET 6539
4500#define PSWRQ2_REG_QM_LAST_ILT_RT_OFFSET 6540
4501#define PSWRQ2_REG_SRC_FIRST_ILT_RT_OFFSET 6541
4502#define PSWRQ2_REG_SRC_LAST_ILT_RT_OFFSET 6542
4503#define PSWRQ2_REG_CDUC_FIRST_ILT_RT_OFFSET 6543
4504#define PSWRQ2_REG_CDUC_LAST_ILT_RT_OFFSET 6544
4505#define PSWRQ2_REG_CDUT_FIRST_ILT_RT_OFFSET 6545
4506#define PSWRQ2_REG_CDUT_LAST_ILT_RT_OFFSET 6546
4507#define PSWRQ2_REG_TSDM_FIRST_ILT_RT_OFFSET 6547
4508#define PSWRQ2_REG_TSDM_LAST_ILT_RT_OFFSET 6548
4509#define PSWRQ2_REG_TM_NUMBER_OF_PF_BLOCKS_RT_OFFSET 6549
4510#define PSWRQ2_REG_CDUT_NUMBER_OF_PF_BLOCKS_RT_OFFSET 6550
4511#define PSWRQ2_REG_CDUC_NUMBER_OF_PF_BLOCKS_RT_OFFSET 6551
4512#define PSWRQ2_REG_TM_VF_BLOCKS_RT_OFFSET 6552
4513#define PSWRQ2_REG_CDUT_VF_BLOCKS_RT_OFFSET 6553
4514#define PSWRQ2_REG_CDUC_VF_BLOCKS_RT_OFFSET 6554
4515#define PSWRQ2_REG_TM_BLOCKS_FACTOR_RT_OFFSET 6555
4516#define PSWRQ2_REG_CDUT_BLOCKS_FACTOR_RT_OFFSET 6556
4517#define PSWRQ2_REG_CDUC_BLOCKS_FACTOR_RT_OFFSET 6557
4518#define PSWRQ2_REG_VF_BASE_RT_OFFSET 6558
4519#define PSWRQ2_REG_VF_LAST_ILT_RT_OFFSET 6559
4520#define PSWRQ2_REG_DRAM_ALIGN_WR_RT_OFFSET 6560
4521#define PSWRQ2_REG_DRAM_ALIGN_RD_RT_OFFSET 6561
4522#define PSWRQ2_REG_TGSRC_FIRST_ILT_RT_OFFSET 6562
4523#define PSWRQ2_REG_RGSRC_FIRST_ILT_RT_OFFSET 6563
4524#define PSWRQ2_REG_TGSRC_LAST_ILT_RT_OFFSET 6564
4525#define PSWRQ2_REG_RGSRC_LAST_ILT_RT_OFFSET 6565
4526#define PSWRQ2_REG_ILT_MEMORY_RT_OFFSET 6566
4527#define PSWRQ2_REG_ILT_MEMORY_RT_SIZE 26414
4528#define PGLUE_REG_B_VF_BASE_RT_OFFSET 32980
4529#define PGLUE_REG_B_MSDM_OFFSET_MASK_B_RT_OFFSET 32981
4530#define PGLUE_REG_B_MSDM_VF_SHIFT_B_RT_OFFSET 32982
4531#define PGLUE_REG_B_CACHE_LINE_SIZE_RT_OFFSET 32983
4532#define PGLUE_REG_B_PF_BAR0_SIZE_RT_OFFSET 32984
4533#define PGLUE_REG_B_PF_BAR1_SIZE_RT_OFFSET 32985
4534#define PGLUE_REG_B_VF_BAR1_SIZE_RT_OFFSET 32986
4535#define TM_REG_VF_ENABLE_CONN_RT_OFFSET 32987
4536#define TM_REG_PF_ENABLE_CONN_RT_OFFSET 32988
4537#define TM_REG_PF_ENABLE_TASK_RT_OFFSET 32989
4538#define TM_REG_GROUP_SIZE_RESOLUTION_CONN_RT_OFFSET 32990
4539#define TM_REG_GROUP_SIZE_RESOLUTION_TASK_RT_OFFSET 32991
4540#define TM_REG_CONFIG_CONN_MEM_RT_OFFSET 32992
4541#define TM_REG_CONFIG_CONN_MEM_RT_SIZE 416
4542#define TM_REG_CONFIG_TASK_MEM_RT_OFFSET 33408
4543#define TM_REG_CONFIG_TASK_MEM_RT_SIZE 608
4544#define QM_REG_MAXPQSIZE_0_RT_OFFSET 34016
4545#define QM_REG_MAXPQSIZE_1_RT_OFFSET 34017
4546#define QM_REG_MAXPQSIZE_2_RT_OFFSET 34018
4547#define QM_REG_MAXPQSIZETXSEL_0_RT_OFFSET 34019
4548#define QM_REG_MAXPQSIZETXSEL_1_RT_OFFSET 34020
4549#define QM_REG_MAXPQSIZETXSEL_2_RT_OFFSET 34021
4550#define QM_REG_MAXPQSIZETXSEL_3_RT_OFFSET 34022
4551#define QM_REG_MAXPQSIZETXSEL_4_RT_OFFSET 34023
4552#define QM_REG_MAXPQSIZETXSEL_5_RT_OFFSET 34024
4553#define QM_REG_MAXPQSIZETXSEL_6_RT_OFFSET 34025
4554#define QM_REG_MAXPQSIZETXSEL_7_RT_OFFSET 34026
4555#define QM_REG_MAXPQSIZETXSEL_8_RT_OFFSET 34027
4556#define QM_REG_MAXPQSIZETXSEL_9_RT_OFFSET 34028
4557#define QM_REG_MAXPQSIZETXSEL_10_RT_OFFSET 34029
4558#define QM_REG_MAXPQSIZETXSEL_11_RT_OFFSET 34030
4559#define QM_REG_MAXPQSIZETXSEL_12_RT_OFFSET 34031
4560#define QM_REG_MAXPQSIZETXSEL_13_RT_OFFSET 34032
4561#define QM_REG_MAXPQSIZETXSEL_14_RT_OFFSET 34033
4562#define QM_REG_MAXPQSIZETXSEL_15_RT_OFFSET 34034
4563#define QM_REG_MAXPQSIZETXSEL_16_RT_OFFSET 34035
4564#define QM_REG_MAXPQSIZETXSEL_17_RT_OFFSET 34036
4565#define QM_REG_MAXPQSIZETXSEL_18_RT_OFFSET 34037
4566#define QM_REG_MAXPQSIZETXSEL_19_RT_OFFSET 34038
4567#define QM_REG_MAXPQSIZETXSEL_20_RT_OFFSET 34039
4568#define QM_REG_MAXPQSIZETXSEL_21_RT_OFFSET 34040
4569#define QM_REG_MAXPQSIZETXSEL_22_RT_OFFSET 34041
4570#define QM_REG_MAXPQSIZETXSEL_23_RT_OFFSET 34042
4571#define QM_REG_MAXPQSIZETXSEL_24_RT_OFFSET 34043
4572#define QM_REG_MAXPQSIZETXSEL_25_RT_OFFSET 34044
4573#define QM_REG_MAXPQSIZETXSEL_26_RT_OFFSET 34045
4574#define QM_REG_MAXPQSIZETXSEL_27_RT_OFFSET 34046
4575#define QM_REG_MAXPQSIZETXSEL_28_RT_OFFSET 34047
4576#define QM_REG_MAXPQSIZETXSEL_29_RT_OFFSET 34048
4577#define QM_REG_MAXPQSIZETXSEL_30_RT_OFFSET 34049
4578#define QM_REG_MAXPQSIZETXSEL_31_RT_OFFSET 34050
4579#define QM_REG_MAXPQSIZETXSEL_32_RT_OFFSET 34051
4580#define QM_REG_MAXPQSIZETXSEL_33_RT_OFFSET 34052
4581#define QM_REG_MAXPQSIZETXSEL_34_RT_OFFSET 34053
4582#define QM_REG_MAXPQSIZETXSEL_35_RT_OFFSET 34054
4583#define QM_REG_MAXPQSIZETXSEL_36_RT_OFFSET 34055
4584#define QM_REG_MAXPQSIZETXSEL_37_RT_OFFSET 34056
4585#define QM_REG_MAXPQSIZETXSEL_38_RT_OFFSET 34057
4586#define QM_REG_MAXPQSIZETXSEL_39_RT_OFFSET 34058
4587#define QM_REG_MAXPQSIZETXSEL_40_RT_OFFSET 34059
4588#define QM_REG_MAXPQSIZETXSEL_41_RT_OFFSET 34060
4589#define QM_REG_MAXPQSIZETXSEL_42_RT_OFFSET 34061
4590#define QM_REG_MAXPQSIZETXSEL_43_RT_OFFSET 34062
4591#define QM_REG_MAXPQSIZETXSEL_44_RT_OFFSET 34063
4592#define QM_REG_MAXPQSIZETXSEL_45_RT_OFFSET 34064
4593#define QM_REG_MAXPQSIZETXSEL_46_RT_OFFSET 34065
4594#define QM_REG_MAXPQSIZETXSEL_47_RT_OFFSET 34066
4595#define QM_REG_MAXPQSIZETXSEL_48_RT_OFFSET 34067
4596#define QM_REG_MAXPQSIZETXSEL_49_RT_OFFSET 34068
4597#define QM_REG_MAXPQSIZETXSEL_50_RT_OFFSET 34069
4598#define QM_REG_MAXPQSIZETXSEL_51_RT_OFFSET 34070
4599#define QM_REG_MAXPQSIZETXSEL_52_RT_OFFSET 34071
4600#define QM_REG_MAXPQSIZETXSEL_53_RT_OFFSET 34072
4601#define QM_REG_MAXPQSIZETXSEL_54_RT_OFFSET 34073
4602#define QM_REG_MAXPQSIZETXSEL_55_RT_OFFSET 34074
4603#define QM_REG_MAXPQSIZETXSEL_56_RT_OFFSET 34075
4604#define QM_REG_MAXPQSIZETXSEL_57_RT_OFFSET 34076
4605#define QM_REG_MAXPQSIZETXSEL_58_RT_OFFSET 34077
4606#define QM_REG_MAXPQSIZETXSEL_59_RT_OFFSET 34078
4607#define QM_REG_MAXPQSIZETXSEL_60_RT_OFFSET 34079
4608#define QM_REG_MAXPQSIZETXSEL_61_RT_OFFSET 34080
4609#define QM_REG_MAXPQSIZETXSEL_62_RT_OFFSET 34081
4610#define QM_REG_MAXPQSIZETXSEL_63_RT_OFFSET 34082
4611#define QM_REG_BASEADDROTHERPQ_RT_OFFSET 34083
4612#define QM_REG_BASEADDROTHERPQ_RT_SIZE 128
4613#define QM_REG_PTRTBLOTHER_RT_OFFSET 34211
4614#define QM_REG_PTRTBLOTHER_RT_SIZE 256
4615#define QM_REG_AFULLQMBYPTHRPFWFQ_RT_OFFSET 34467
4616#define QM_REG_AFULLQMBYPTHRVPWFQ_RT_OFFSET 34468
4617#define QM_REG_AFULLQMBYPTHRPFRL_RT_OFFSET 34469
4618#define QM_REG_AFULLQMBYPTHRGLBLRL_RT_OFFSET 34470
4619#define QM_REG_AFULLOPRTNSTCCRDMASK_RT_OFFSET 34471
4620#define QM_REG_WRROTHERPQGRP_0_RT_OFFSET 34472
4621#define QM_REG_WRROTHERPQGRP_1_RT_OFFSET 34473
4622#define QM_REG_WRROTHERPQGRP_2_RT_OFFSET 34474
4623#define QM_REG_WRROTHERPQGRP_3_RT_OFFSET 34475
4624#define QM_REG_WRROTHERPQGRP_4_RT_OFFSET 34476
4625#define QM_REG_WRROTHERPQGRP_5_RT_OFFSET 34477
4626#define QM_REG_WRROTHERPQGRP_6_RT_OFFSET 34478
4627#define QM_REG_WRROTHERPQGRP_7_RT_OFFSET 34479
4628#define QM_REG_WRROTHERPQGRP_8_RT_OFFSET 34480
4629#define QM_REG_WRROTHERPQGRP_9_RT_OFFSET 34481
4630#define QM_REG_WRROTHERPQGRP_10_RT_OFFSET 34482
4631#define QM_REG_WRROTHERPQGRP_11_RT_OFFSET 34483
4632#define QM_REG_WRROTHERPQGRP_12_RT_OFFSET 34484
4633#define QM_REG_WRROTHERPQGRP_13_RT_OFFSET 34485
4634#define QM_REG_WRROTHERPQGRP_14_RT_OFFSET 34486
4635#define QM_REG_WRROTHERPQGRP_15_RT_OFFSET 34487
4636#define QM_REG_WRROTHERGRPWEIGHT_0_RT_OFFSET 34488
4637#define QM_REG_WRROTHERGRPWEIGHT_1_RT_OFFSET 34489
4638#define QM_REG_WRROTHERGRPWEIGHT_2_RT_OFFSET 34490
4639#define QM_REG_WRROTHERGRPWEIGHT_3_RT_OFFSET 34491
4640#define QM_REG_WRRTXGRPWEIGHT_0_RT_OFFSET 34492
4641#define QM_REG_WRRTXGRPWEIGHT_1_RT_OFFSET 34493
4642#define QM_REG_PQTX2PF_0_RT_OFFSET 34494
4643#define QM_REG_PQTX2PF_1_RT_OFFSET 34495
4644#define QM_REG_PQTX2PF_2_RT_OFFSET 34496
4645#define QM_REG_PQTX2PF_3_RT_OFFSET 34497
4646#define QM_REG_PQTX2PF_4_RT_OFFSET 34498
4647#define QM_REG_PQTX2PF_5_RT_OFFSET 34499
4648#define QM_REG_PQTX2PF_6_RT_OFFSET 34500
4649#define QM_REG_PQTX2PF_7_RT_OFFSET 34501
4650#define QM_REG_PQTX2PF_8_RT_OFFSET 34502
4651#define QM_REG_PQTX2PF_9_RT_OFFSET 34503
4652#define QM_REG_PQTX2PF_10_RT_OFFSET 34504
4653#define QM_REG_PQTX2PF_11_RT_OFFSET 34505
4654#define QM_REG_PQTX2PF_12_RT_OFFSET 34506
4655#define QM_REG_PQTX2PF_13_RT_OFFSET 34507
4656#define QM_REG_PQTX2PF_14_RT_OFFSET 34508
4657#define QM_REG_PQTX2PF_15_RT_OFFSET 34509
4658#define QM_REG_PQTX2PF_16_RT_OFFSET 34510
4659#define QM_REG_PQTX2PF_17_RT_OFFSET 34511
4660#define QM_REG_PQTX2PF_18_RT_OFFSET 34512
4661#define QM_REG_PQTX2PF_19_RT_OFFSET 34513
4662#define QM_REG_PQTX2PF_20_RT_OFFSET 34514
4663#define QM_REG_PQTX2PF_21_RT_OFFSET 34515
4664#define QM_REG_PQTX2PF_22_RT_OFFSET 34516
4665#define QM_REG_PQTX2PF_23_RT_OFFSET 34517
4666#define QM_REG_PQTX2PF_24_RT_OFFSET 34518
4667#define QM_REG_PQTX2PF_25_RT_OFFSET 34519
4668#define QM_REG_PQTX2PF_26_RT_OFFSET 34520
4669#define QM_REG_PQTX2PF_27_RT_OFFSET 34521
4670#define QM_REG_PQTX2PF_28_RT_OFFSET 34522
4671#define QM_REG_PQTX2PF_29_RT_OFFSET 34523
4672#define QM_REG_PQTX2PF_30_RT_OFFSET 34524
4673#define QM_REG_PQTX2PF_31_RT_OFFSET 34525
4674#define QM_REG_PQTX2PF_32_RT_OFFSET 34526
4675#define QM_REG_PQTX2PF_33_RT_OFFSET 34527
4676#define QM_REG_PQTX2PF_34_RT_OFFSET 34528
4677#define QM_REG_PQTX2PF_35_RT_OFFSET 34529
4678#define QM_REG_PQTX2PF_36_RT_OFFSET 34530
4679#define QM_REG_PQTX2PF_37_RT_OFFSET 34531
4680#define QM_REG_PQTX2PF_38_RT_OFFSET 34532
4681#define QM_REG_PQTX2PF_39_RT_OFFSET 34533
4682#define QM_REG_PQTX2PF_40_RT_OFFSET 34534
4683#define QM_REG_PQTX2PF_41_RT_OFFSET 34535
4684#define QM_REG_PQTX2PF_42_RT_OFFSET 34536
4685#define QM_REG_PQTX2PF_43_RT_OFFSET 34537
4686#define QM_REG_PQTX2PF_44_RT_OFFSET 34538
4687#define QM_REG_PQTX2PF_45_RT_OFFSET 34539
4688#define QM_REG_PQTX2PF_46_RT_OFFSET 34540
4689#define QM_REG_PQTX2PF_47_RT_OFFSET 34541
4690#define QM_REG_PQTX2PF_48_RT_OFFSET 34542
4691#define QM_REG_PQTX2PF_49_RT_OFFSET 34543
4692#define QM_REG_PQTX2PF_50_RT_OFFSET 34544
4693#define QM_REG_PQTX2PF_51_RT_OFFSET 34545
4694#define QM_REG_PQTX2PF_52_RT_OFFSET 34546
4695#define QM_REG_PQTX2PF_53_RT_OFFSET 34547
4696#define QM_REG_PQTX2PF_54_RT_OFFSET 34548
4697#define QM_REG_PQTX2PF_55_RT_OFFSET 34549
4698#define QM_REG_PQTX2PF_56_RT_OFFSET 34550
4699#define QM_REG_PQTX2PF_57_RT_OFFSET 34551
4700#define QM_REG_PQTX2PF_58_RT_OFFSET 34552
4701#define QM_REG_PQTX2PF_59_RT_OFFSET 34553
4702#define QM_REG_PQTX2PF_60_RT_OFFSET 34554
4703#define QM_REG_PQTX2PF_61_RT_OFFSET 34555
4704#define QM_REG_PQTX2PF_62_RT_OFFSET 34556
4705#define QM_REG_PQTX2PF_63_RT_OFFSET 34557
4706#define QM_REG_PQOTHER2PF_0_RT_OFFSET 34558
4707#define QM_REG_PQOTHER2PF_1_RT_OFFSET 34559
4708#define QM_REG_PQOTHER2PF_2_RT_OFFSET 34560
4709#define QM_REG_PQOTHER2PF_3_RT_OFFSET 34561
4710#define QM_REG_PQOTHER2PF_4_RT_OFFSET 34562
4711#define QM_REG_PQOTHER2PF_5_RT_OFFSET 34563
4712#define QM_REG_PQOTHER2PF_6_RT_OFFSET 34564
4713#define QM_REG_PQOTHER2PF_7_RT_OFFSET 34565
4714#define QM_REG_PQOTHER2PF_8_RT_OFFSET 34566
4715#define QM_REG_PQOTHER2PF_9_RT_OFFSET 34567
4716#define QM_REG_PQOTHER2PF_10_RT_OFFSET 34568
4717#define QM_REG_PQOTHER2PF_11_RT_OFFSET 34569
4718#define QM_REG_PQOTHER2PF_12_RT_OFFSET 34570
4719#define QM_REG_PQOTHER2PF_13_RT_OFFSET 34571
4720#define QM_REG_PQOTHER2PF_14_RT_OFFSET 34572
4721#define QM_REG_PQOTHER2PF_15_RT_OFFSET 34573
4722#define QM_REG_RLGLBLPERIOD_0_RT_OFFSET 34574
4723#define QM_REG_RLGLBLPERIOD_1_RT_OFFSET 34575
4724#define QM_REG_RLGLBLPERIODTIMER_0_RT_OFFSET 34576
4725#define QM_REG_RLGLBLPERIODTIMER_1_RT_OFFSET 34577
4726#define QM_REG_RLGLBLPERIODSEL_0_RT_OFFSET 34578
4727#define QM_REG_RLGLBLPERIODSEL_1_RT_OFFSET 34579
4728#define QM_REG_RLGLBLPERIODSEL_2_RT_OFFSET 34580
4729#define QM_REG_RLGLBLPERIODSEL_3_RT_OFFSET 34581
4730#define QM_REG_RLGLBLPERIODSEL_4_RT_OFFSET 34582
4731#define QM_REG_RLGLBLPERIODSEL_5_RT_OFFSET 34583
4732#define QM_REG_RLGLBLPERIODSEL_6_RT_OFFSET 34584
4733#define QM_REG_RLGLBLPERIODSEL_7_RT_OFFSET 34585
4734#define QM_REG_RLGLBLINCVAL_RT_OFFSET 34586
4735#define QM_REG_RLGLBLINCVAL_RT_SIZE 256
4736#define QM_REG_RLGLBLUPPERBOUND_RT_OFFSET 34842
4737#define QM_REG_RLGLBLUPPERBOUND_RT_SIZE 256
4738#define QM_REG_RLGLBLCRD_RT_OFFSET 35098
4739#define QM_REG_RLGLBLCRD_RT_SIZE 256
4740#define QM_REG_RLGLBLENABLE_RT_OFFSET 35354
4741#define QM_REG_RLPFPERIOD_RT_OFFSET 35355
4742#define QM_REG_RLPFPERIODTIMER_RT_OFFSET 35356
4743#define QM_REG_RLPFINCVAL_RT_OFFSET 35357
4744#define QM_REG_RLPFINCVAL_RT_SIZE 16
4745#define QM_REG_RLPFUPPERBOUND_RT_OFFSET 35373
4746#define QM_REG_RLPFUPPERBOUND_RT_SIZE 16
4747#define QM_REG_RLPFCRD_RT_OFFSET 35389
4748#define QM_REG_RLPFCRD_RT_SIZE 16
4749#define QM_REG_RLPFENABLE_RT_OFFSET 35405
4750#define QM_REG_RLPFVOQENABLE_RT_OFFSET 35406
4751#define QM_REG_WFQPFWEIGHT_RT_OFFSET 35407
4752#define QM_REG_WFQPFWEIGHT_RT_SIZE 16
4753#define QM_REG_WFQPFUPPERBOUND_RT_OFFSET 35423
4754#define QM_REG_WFQPFUPPERBOUND_RT_SIZE 16
4755#define QM_REG_WFQPFCRD_RT_OFFSET 35439
4756#define QM_REG_WFQPFCRD_RT_SIZE 256
4757#define QM_REG_WFQPFENABLE_RT_OFFSET 35695
4758#define QM_REG_WFQVPENABLE_RT_OFFSET 35696
4759#define QM_REG_BASEADDRTXPQ_RT_OFFSET 35697
4760#define QM_REG_BASEADDRTXPQ_RT_SIZE 512
4761#define QM_REG_TXPQMAP_RT_OFFSET 36209
4762#define QM_REG_TXPQMAP_RT_SIZE 512
4763#define QM_REG_WFQVPWEIGHT_RT_OFFSET 36721
4764#define QM_REG_WFQVPWEIGHT_RT_SIZE 512
4765#define QM_REG_WFQVPCRD_RT_OFFSET 37233
4766#define QM_REG_WFQVPCRD_RT_SIZE 512
4767#define QM_REG_WFQVPMAP_RT_OFFSET 37745
4768#define QM_REG_WFQVPMAP_RT_SIZE 512
4769#define QM_REG_PTRTBLTX_RT_OFFSET 38257
4770#define QM_REG_PTRTBLTX_RT_SIZE 1024
4771#define QM_REG_WFQPFCRD_MSB_RT_OFFSET 39281
4772#define QM_REG_WFQPFCRD_MSB_RT_SIZE 320
4773#define QM_REG_VOQCRDLINE_RT_OFFSET 39601
4774#define QM_REG_VOQCRDLINE_RT_SIZE 36
4775#define QM_REG_VOQINITCRDLINE_RT_OFFSET 39637
4776#define QM_REG_VOQINITCRDLINE_RT_SIZE 36
4777#define QM_REG_RLPFVOQENABLE_MSB_RT_OFFSET 39673
4778#define NIG_REG_TAG_ETHERTYPE_0_RT_OFFSET 39674
4779#define NIG_REG_BRB_GATE_DNTFWD_PORT_RT_OFFSET 39675
4780#define NIG_REG_OUTER_TAG_VALUE_LIST0_RT_OFFSET 39676
4781#define NIG_REG_OUTER_TAG_VALUE_LIST1_RT_OFFSET 39677
4782#define NIG_REG_OUTER_TAG_VALUE_LIST2_RT_OFFSET 39678
4783#define NIG_REG_OUTER_TAG_VALUE_LIST3_RT_OFFSET 39679
4784#define NIG_REG_LLH_FUNC_TAGMAC_CLS_TYPE_RT_OFFSET 39680
4785#define NIG_REG_LLH_FUNC_TAG_EN_RT_OFFSET 39681
4786#define NIG_REG_LLH_FUNC_TAG_EN_RT_SIZE 4
4787#define NIG_REG_LLH_FUNC_TAG_VALUE_RT_OFFSET 39685
4788#define NIG_REG_LLH_FUNC_TAG_VALUE_RT_SIZE 4
4789#define NIG_REG_LLH_FUNC_FILTER_VALUE_RT_OFFSET 39689
4790#define NIG_REG_LLH_FUNC_FILTER_VALUE_RT_SIZE 32
4791#define NIG_REG_LLH_FUNC_FILTER_EN_RT_OFFSET 39721
4792#define NIG_REG_LLH_FUNC_FILTER_EN_RT_SIZE 16
4793#define NIG_REG_LLH_FUNC_FILTER_MODE_RT_OFFSET 39737
4794#define NIG_REG_LLH_FUNC_FILTER_MODE_RT_SIZE 16
4795#define NIG_REG_LLH_FUNC_FILTER_PROTOCOL_TYPE_RT_OFFSET 39753
4796#define NIG_REG_LLH_FUNC_FILTER_PROTOCOL_TYPE_RT_SIZE 16
4797#define NIG_REG_LLH_FUNC_FILTER_HDR_SEL_RT_OFFSET 39769
4798#define NIG_REG_LLH_FUNC_FILTER_HDR_SEL_RT_SIZE 16
4799#define NIG_REG_TX_EDPM_CTRL_RT_OFFSET 39785
4800#define NIG_REG_ROCE_DUPLICATE_TO_HOST_RT_OFFSET 39786
4801#define NIG_REG_PPF_TO_ENGINE_SEL_RT_OFFSET 39787
4802#define NIG_REG_PPF_TO_ENGINE_SEL_RT_SIZE 8
4803#define NIG_REG_LLH_PF_CLS_FUNC_FILTER_VALUE_RT_OFFSET 39795
4804#define NIG_REG_LLH_PF_CLS_FUNC_FILTER_VALUE_RT_SIZE 1024
4805#define NIG_REG_LLH_PF_CLS_FUNC_FILTER_EN_RT_OFFSET 40819
4806#define NIG_REG_LLH_PF_CLS_FUNC_FILTER_EN_RT_SIZE 512
4807#define NIG_REG_LLH_PF_CLS_FUNC_FILTER_MODE_RT_OFFSET 41331
4808#define NIG_REG_LLH_PF_CLS_FUNC_FILTER_MODE_RT_SIZE 512
4809#define NIG_REG_LLH_PF_CLS_FUNC_FILTER_PROTOCOL_TYPE_RT_OFFSET 41843
4810#define NIG_REG_LLH_PF_CLS_FUNC_FILTER_PROTOCOL_TYPE_RT_SIZE 512
4811#define NIG_REG_LLH_PF_CLS_FUNC_FILTER_HDR_SEL_RT_OFFSET 42355
4812#define NIG_REG_LLH_PF_CLS_FUNC_FILTER_HDR_SEL_RT_SIZE 512
4813#define NIG_REG_LLH_PF_CLS_FILTERS_MAP_RT_OFFSET 42867
4814#define NIG_REG_LLH_PF_CLS_FILTERS_MAP_RT_SIZE 32
4815#define CDU_REG_CID_ADDR_PARAMS_RT_OFFSET 42899
4816#define CDU_REG_SEGMENT0_PARAMS_RT_OFFSET 42900
4817#define CDU_REG_SEGMENT1_PARAMS_RT_OFFSET 42901
4818#define CDU_REG_PF_SEG0_TYPE_OFFSET_RT_OFFSET 42902
4819#define CDU_REG_PF_SEG1_TYPE_OFFSET_RT_OFFSET 42903
4820#define CDU_REG_PF_SEG2_TYPE_OFFSET_RT_OFFSET 42904
4821#define CDU_REG_PF_SEG3_TYPE_OFFSET_RT_OFFSET 42905
4822#define CDU_REG_PF_FL_SEG0_TYPE_OFFSET_RT_OFFSET 42906
4823#define CDU_REG_PF_FL_SEG1_TYPE_OFFSET_RT_OFFSET 42907
4824#define CDU_REG_PF_FL_SEG2_TYPE_OFFSET_RT_OFFSET 42908
4825#define CDU_REG_PF_FL_SEG3_TYPE_OFFSET_RT_OFFSET 42909
4826#define CDU_REG_VF_SEG_TYPE_OFFSET_RT_OFFSET 42910
4827#define CDU_REG_VF_FL_SEG_TYPE_OFFSET_RT_OFFSET 42911
4828#define PBF_REG_TAG_ETHERTYPE_0_RT_OFFSET 42912
4829#define PBF_REG_BTB_SHARED_AREA_SIZE_RT_OFFSET 42913
4830#define PBF_REG_YCMD_QS_NUM_LINES_VOQ0_RT_OFFSET 42914
4831#define PBF_REG_BTB_GUARANTEED_VOQ0_RT_OFFSET 42915
4832#define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ0_RT_OFFSET 42916
4833#define PBF_REG_YCMD_QS_NUM_LINES_VOQ1_RT_OFFSET 42917
4834#define PBF_REG_BTB_GUARANTEED_VOQ1_RT_OFFSET 42918
4835#define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ1_RT_OFFSET 42919
4836#define PBF_REG_YCMD_QS_NUM_LINES_VOQ2_RT_OFFSET 42920
4837#define PBF_REG_BTB_GUARANTEED_VOQ2_RT_OFFSET 42921
4838#define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ2_RT_OFFSET 42922
4839#define PBF_REG_YCMD_QS_NUM_LINES_VOQ3_RT_OFFSET 42923
4840#define PBF_REG_BTB_GUARANTEED_VOQ3_RT_OFFSET 42924
4841#define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ3_RT_OFFSET 42925
4842#define PBF_REG_YCMD_QS_NUM_LINES_VOQ4_RT_OFFSET 42926
4843#define PBF_REG_BTB_GUARANTEED_VOQ4_RT_OFFSET 42927
4844#define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ4_RT_OFFSET 42928
4845#define PBF_REG_YCMD_QS_NUM_LINES_VOQ5_RT_OFFSET 42929
4846#define PBF_REG_BTB_GUARANTEED_VOQ5_RT_OFFSET 42930
4847#define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ5_RT_OFFSET 42931
4848#define PBF_REG_YCMD_QS_NUM_LINES_VOQ6_RT_OFFSET 42932
4849#define PBF_REG_BTB_GUARANTEED_VOQ6_RT_OFFSET 42933
4850#define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ6_RT_OFFSET 42934
4851#define PBF_REG_YCMD_QS_NUM_LINES_VOQ7_RT_OFFSET 42935
4852#define PBF_REG_BTB_GUARANTEED_VOQ7_RT_OFFSET 42936
4853#define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ7_RT_OFFSET 42937
4854#define PBF_REG_YCMD_QS_NUM_LINES_VOQ8_RT_OFFSET 42938
4855#define PBF_REG_BTB_GUARANTEED_VOQ8_RT_OFFSET 42939
4856#define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ8_RT_OFFSET 42940
4857#define PBF_REG_YCMD_QS_NUM_LINES_VOQ9_RT_OFFSET 42941
4858#define PBF_REG_BTB_GUARANTEED_VOQ9_RT_OFFSET 42942
4859#define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ9_RT_OFFSET 42943
4860#define PBF_REG_YCMD_QS_NUM_LINES_VOQ10_RT_OFFSET 42944
4861#define PBF_REG_BTB_GUARANTEED_VOQ10_RT_OFFSET 42945
4862#define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ10_RT_OFFSET 42946
4863#define PBF_REG_YCMD_QS_NUM_LINES_VOQ11_RT_OFFSET 42947
4864#define PBF_REG_BTB_GUARANTEED_VOQ11_RT_OFFSET 42948
4865#define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ11_RT_OFFSET 42949
4866#define PBF_REG_YCMD_QS_NUM_LINES_VOQ12_RT_OFFSET 42950
4867#define PBF_REG_BTB_GUARANTEED_VOQ12_RT_OFFSET 42951
4868#define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ12_RT_OFFSET 42952
4869#define PBF_REG_YCMD_QS_NUM_LINES_VOQ13_RT_OFFSET 42953
4870#define PBF_REG_BTB_GUARANTEED_VOQ13_RT_OFFSET 42954
4871#define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ13_RT_OFFSET 42955
4872#define PBF_REG_YCMD_QS_NUM_LINES_VOQ14_RT_OFFSET 42956
4873#define PBF_REG_BTB_GUARANTEED_VOQ14_RT_OFFSET 42957
4874#define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ14_RT_OFFSET 42958
4875#define PBF_REG_YCMD_QS_NUM_LINES_VOQ15_RT_OFFSET 42959
4876#define PBF_REG_BTB_GUARANTEED_VOQ15_RT_OFFSET 42960
4877#define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ15_RT_OFFSET 42961
4878#define PBF_REG_YCMD_QS_NUM_LINES_VOQ16_RT_OFFSET 42962
4879#define PBF_REG_BTB_GUARANTEED_VOQ16_RT_OFFSET 42963
4880#define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ16_RT_OFFSET 42964
4881#define PBF_REG_YCMD_QS_NUM_LINES_VOQ17_RT_OFFSET 42965
4882#define PBF_REG_BTB_GUARANTEED_VOQ17_RT_OFFSET 42966
4883#define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ17_RT_OFFSET 42967
4884#define PBF_REG_YCMD_QS_NUM_LINES_VOQ18_RT_OFFSET 42968
4885#define PBF_REG_BTB_GUARANTEED_VOQ18_RT_OFFSET 42969
4886#define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ18_RT_OFFSET 42970
4887#define PBF_REG_YCMD_QS_NUM_LINES_VOQ19_RT_OFFSET 42971
4888#define PBF_REG_BTB_GUARANTEED_VOQ19_RT_OFFSET 42972
4889#define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ19_RT_OFFSET 42973
4890#define PBF_REG_YCMD_QS_NUM_LINES_VOQ20_RT_OFFSET 42974
4891#define PBF_REG_BTB_GUARANTEED_VOQ20_RT_OFFSET 42975
4892#define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ20_RT_OFFSET 42976
4893#define PBF_REG_YCMD_QS_NUM_LINES_VOQ21_RT_OFFSET 42977
4894#define PBF_REG_BTB_GUARANTEED_VOQ21_RT_OFFSET 42978
4895#define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ21_RT_OFFSET 42979
4896#define PBF_REG_YCMD_QS_NUM_LINES_VOQ22_RT_OFFSET 42980
4897#define PBF_REG_BTB_GUARANTEED_VOQ22_RT_OFFSET 42981
4898#define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ22_RT_OFFSET 42982
4899#define PBF_REG_YCMD_QS_NUM_LINES_VOQ23_RT_OFFSET 42983
4900#define PBF_REG_BTB_GUARANTEED_VOQ23_RT_OFFSET 42984
4901#define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ23_RT_OFFSET 42985
4902#define PBF_REG_YCMD_QS_NUM_LINES_VOQ24_RT_OFFSET 42986
4903#define PBF_REG_BTB_GUARANTEED_VOQ24_RT_OFFSET 42987
4904#define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ24_RT_OFFSET 42988
4905#define PBF_REG_YCMD_QS_NUM_LINES_VOQ25_RT_OFFSET 42989
4906#define PBF_REG_BTB_GUARANTEED_VOQ25_RT_OFFSET 42990
4907#define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ25_RT_OFFSET 42991
4908#define PBF_REG_YCMD_QS_NUM_LINES_VOQ26_RT_OFFSET 42992
4909#define PBF_REG_BTB_GUARANTEED_VOQ26_RT_OFFSET 42993
4910#define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ26_RT_OFFSET 42994
4911#define PBF_REG_YCMD_QS_NUM_LINES_VOQ27_RT_OFFSET 42995
4912#define PBF_REG_BTB_GUARANTEED_VOQ27_RT_OFFSET 42996
4913#define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ27_RT_OFFSET 42997
4914#define PBF_REG_YCMD_QS_NUM_LINES_VOQ28_RT_OFFSET 42998
4915#define PBF_REG_BTB_GUARANTEED_VOQ28_RT_OFFSET 42999
4916#define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ28_RT_OFFSET 43000
4917#define PBF_REG_YCMD_QS_NUM_LINES_VOQ29_RT_OFFSET 43001
4918#define PBF_REG_BTB_GUARANTEED_VOQ29_RT_OFFSET 43002
4919#define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ29_RT_OFFSET 43003
4920#define PBF_REG_YCMD_QS_NUM_LINES_VOQ30_RT_OFFSET 43004
4921#define PBF_REG_BTB_GUARANTEED_VOQ30_RT_OFFSET 43005
4922#define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ30_RT_OFFSET 43006
4923#define PBF_REG_YCMD_QS_NUM_LINES_VOQ31_RT_OFFSET 43007
4924#define PBF_REG_BTB_GUARANTEED_VOQ31_RT_OFFSET 43008
4925#define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ31_RT_OFFSET 43009
4926#define PBF_REG_YCMD_QS_NUM_LINES_VOQ32_RT_OFFSET 43010
4927#define PBF_REG_BTB_GUARANTEED_VOQ32_RT_OFFSET 43011
4928#define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ32_RT_OFFSET 43012
4929#define PBF_REG_YCMD_QS_NUM_LINES_VOQ33_RT_OFFSET 43013
4930#define PBF_REG_BTB_GUARANTEED_VOQ33_RT_OFFSET 43014
4931#define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ33_RT_OFFSET 43015
4932#define PBF_REG_YCMD_QS_NUM_LINES_VOQ34_RT_OFFSET 43016
4933#define PBF_REG_BTB_GUARANTEED_VOQ34_RT_OFFSET 43017
4934#define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ34_RT_OFFSET 43018
4935#define PBF_REG_YCMD_QS_NUM_LINES_VOQ35_RT_OFFSET 43019
4936#define PBF_REG_BTB_GUARANTEED_VOQ35_RT_OFFSET 43020
4937#define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ35_RT_OFFSET 43021
4938#define XCM_REG_CON_PHY_Q3_RT_OFFSET 43022
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02004939
Tomer Tayarda090912017-12-27 19:30:07 +02004940#define RUNTIME_ARRAY_SIZE 43023
4941
4942/* Init Callbacks */
4943#define DMAE_READY_CB 0
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02004944
Yuval Mintzfc48b7a2016-02-15 13:22:35 -05004945/* The eth storm context for the Tstorm */
4946struct tstorm_eth_conn_st_ctx {
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02004947 __le32 reserved[4];
4948};
4949
4950/* The eth storm context for the Pstorm */
4951struct pstorm_eth_conn_st_ctx {
4952 __le32 reserved[8];
4953};
4954
4955/* The eth storm context for the Xstorm */
4956struct xstorm_eth_conn_st_ctx {
4957 __le32 reserved[60];
4958};
4959
Tomer Tayar21dd79e2017-12-27 19:30:06 +02004960struct e4_xstorm_eth_conn_ag_ctx {
Yuval Mintz351a4ded2016-06-02 10:23:29 +03004961 u8 reserved0;
Tomer Tayarda090912017-12-27 19:30:07 +02004962 u8 state;
Yuval Mintz351a4ded2016-06-02 10:23:29 +03004963 u8 flags0;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02004964#define E4_XSTORM_ETH_CONN_AG_CTX_EXIST_IN_QM0_MASK 0x1
4965#define E4_XSTORM_ETH_CONN_AG_CTX_EXIST_IN_QM0_SHIFT 0
4966#define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED1_MASK 0x1
4967#define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED1_SHIFT 1
4968#define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED2_MASK 0x1
4969#define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED2_SHIFT 2
4970#define E4_XSTORM_ETH_CONN_AG_CTX_EXIST_IN_QM3_MASK 0x1
4971#define E4_XSTORM_ETH_CONN_AG_CTX_EXIST_IN_QM3_SHIFT 3
4972#define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED3_MASK 0x1
4973#define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED3_SHIFT 4
4974#define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED4_MASK 0x1
4975#define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED4_SHIFT 5
4976#define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED5_MASK 0x1
4977#define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED5_SHIFT 6
4978#define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED6_MASK 0x1
4979#define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED6_SHIFT 7
Yuval Mintz351a4ded2016-06-02 10:23:29 +03004980 u8 flags1;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02004981#define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED7_MASK 0x1
4982#define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED7_SHIFT 0
4983#define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED8_MASK 0x1
4984#define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED8_SHIFT 1
4985#define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED9_MASK 0x1
4986#define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED9_SHIFT 2
4987#define E4_XSTORM_ETH_CONN_AG_CTX_BIT11_MASK 0x1
4988#define E4_XSTORM_ETH_CONN_AG_CTX_BIT11_SHIFT 3
Tomer Tayarda090912017-12-27 19:30:07 +02004989#define E4_XSTORM_ETH_CONN_AG_CTX_E5_RESERVED2_MASK 0x1
4990#define E4_XSTORM_ETH_CONN_AG_CTX_E5_RESERVED2_SHIFT 4
4991#define E4_XSTORM_ETH_CONN_AG_CTX_E5_RESERVED3_MASK 0x1
4992#define E4_XSTORM_ETH_CONN_AG_CTX_E5_RESERVED3_SHIFT 5
Tomer Tayar21dd79e2017-12-27 19:30:06 +02004993#define E4_XSTORM_ETH_CONN_AG_CTX_TX_RULE_ACTIVE_MASK 0x1
4994#define E4_XSTORM_ETH_CONN_AG_CTX_TX_RULE_ACTIVE_SHIFT 6
4995#define E4_XSTORM_ETH_CONN_AG_CTX_DQ_CF_ACTIVE_MASK 0x1
4996#define E4_XSTORM_ETH_CONN_AG_CTX_DQ_CF_ACTIVE_SHIFT 7
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02004997 u8 flags2;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02004998#define E4_XSTORM_ETH_CONN_AG_CTX_CF0_MASK 0x3
4999#define E4_XSTORM_ETH_CONN_AG_CTX_CF0_SHIFT 0
5000#define E4_XSTORM_ETH_CONN_AG_CTX_CF1_MASK 0x3
5001#define E4_XSTORM_ETH_CONN_AG_CTX_CF1_SHIFT 2
5002#define E4_XSTORM_ETH_CONN_AG_CTX_CF2_MASK 0x3
5003#define E4_XSTORM_ETH_CONN_AG_CTX_CF2_SHIFT 4
5004#define E4_XSTORM_ETH_CONN_AG_CTX_CF3_MASK 0x3
5005#define E4_XSTORM_ETH_CONN_AG_CTX_CF3_SHIFT 6
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02005006 u8 flags3;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02005007#define E4_XSTORM_ETH_CONN_AG_CTX_CF4_MASK 0x3
5008#define E4_XSTORM_ETH_CONN_AG_CTX_CF4_SHIFT 0
5009#define E4_XSTORM_ETH_CONN_AG_CTX_CF5_MASK 0x3
5010#define E4_XSTORM_ETH_CONN_AG_CTX_CF5_SHIFT 2
5011#define E4_XSTORM_ETH_CONN_AG_CTX_CF6_MASK 0x3
5012#define E4_XSTORM_ETH_CONN_AG_CTX_CF6_SHIFT 4
5013#define E4_XSTORM_ETH_CONN_AG_CTX_CF7_MASK 0x3
5014#define E4_XSTORM_ETH_CONN_AG_CTX_CF7_SHIFT 6
Yuval Mintz351a4ded2016-06-02 10:23:29 +03005015 u8 flags4;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02005016#define E4_XSTORM_ETH_CONN_AG_CTX_CF8_MASK 0x3
5017#define E4_XSTORM_ETH_CONN_AG_CTX_CF8_SHIFT 0
5018#define E4_XSTORM_ETH_CONN_AG_CTX_CF9_MASK 0x3
5019#define E4_XSTORM_ETH_CONN_AG_CTX_CF9_SHIFT 2
5020#define E4_XSTORM_ETH_CONN_AG_CTX_CF10_MASK 0x3
5021#define E4_XSTORM_ETH_CONN_AG_CTX_CF10_SHIFT 4
5022#define E4_XSTORM_ETH_CONN_AG_CTX_CF11_MASK 0x3
5023#define E4_XSTORM_ETH_CONN_AG_CTX_CF11_SHIFT 6
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02005024 u8 flags5;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02005025#define E4_XSTORM_ETH_CONN_AG_CTX_CF12_MASK 0x3
5026#define E4_XSTORM_ETH_CONN_AG_CTX_CF12_SHIFT 0
5027#define E4_XSTORM_ETH_CONN_AG_CTX_CF13_MASK 0x3
5028#define E4_XSTORM_ETH_CONN_AG_CTX_CF13_SHIFT 2
5029#define E4_XSTORM_ETH_CONN_AG_CTX_CF14_MASK 0x3
5030#define E4_XSTORM_ETH_CONN_AG_CTX_CF14_SHIFT 4
5031#define E4_XSTORM_ETH_CONN_AG_CTX_CF15_MASK 0x3
5032#define E4_XSTORM_ETH_CONN_AG_CTX_CF15_SHIFT 6
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02005033 u8 flags6;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02005034#define E4_XSTORM_ETH_CONN_AG_CTX_GO_TO_BD_CONS_CF_MASK 0x3
5035#define E4_XSTORM_ETH_CONN_AG_CTX_GO_TO_BD_CONS_CF_SHIFT 0
5036#define E4_XSTORM_ETH_CONN_AG_CTX_MULTI_UNICAST_CF_MASK 0x3
5037#define E4_XSTORM_ETH_CONN_AG_CTX_MULTI_UNICAST_CF_SHIFT 2
5038#define E4_XSTORM_ETH_CONN_AG_CTX_DQ_CF_MASK 0x3
5039#define E4_XSTORM_ETH_CONN_AG_CTX_DQ_CF_SHIFT 4
5040#define E4_XSTORM_ETH_CONN_AG_CTX_TERMINATE_CF_MASK 0x3
5041#define E4_XSTORM_ETH_CONN_AG_CTX_TERMINATE_CF_SHIFT 6
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02005042 u8 flags7;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02005043#define E4_XSTORM_ETH_CONN_AG_CTX_FLUSH_Q0_MASK 0x3
5044#define E4_XSTORM_ETH_CONN_AG_CTX_FLUSH_Q0_SHIFT 0
5045#define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED10_MASK 0x3
5046#define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED10_SHIFT 2
5047#define E4_XSTORM_ETH_CONN_AG_CTX_SLOW_PATH_MASK 0x3
5048#define E4_XSTORM_ETH_CONN_AG_CTX_SLOW_PATH_SHIFT 4
5049#define E4_XSTORM_ETH_CONN_AG_CTX_CF0EN_MASK 0x1
5050#define E4_XSTORM_ETH_CONN_AG_CTX_CF0EN_SHIFT 6
5051#define E4_XSTORM_ETH_CONN_AG_CTX_CF1EN_MASK 0x1
5052#define E4_XSTORM_ETH_CONN_AG_CTX_CF1EN_SHIFT 7
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02005053 u8 flags8;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02005054#define E4_XSTORM_ETH_CONN_AG_CTX_CF2EN_MASK 0x1
5055#define E4_XSTORM_ETH_CONN_AG_CTX_CF2EN_SHIFT 0
5056#define E4_XSTORM_ETH_CONN_AG_CTX_CF3EN_MASK 0x1
5057#define E4_XSTORM_ETH_CONN_AG_CTX_CF3EN_SHIFT 1
5058#define E4_XSTORM_ETH_CONN_AG_CTX_CF4EN_MASK 0x1
5059#define E4_XSTORM_ETH_CONN_AG_CTX_CF4EN_SHIFT 2
5060#define E4_XSTORM_ETH_CONN_AG_CTX_CF5EN_MASK 0x1
5061#define E4_XSTORM_ETH_CONN_AG_CTX_CF5EN_SHIFT 3
5062#define E4_XSTORM_ETH_CONN_AG_CTX_CF6EN_MASK 0x1
5063#define E4_XSTORM_ETH_CONN_AG_CTX_CF6EN_SHIFT 4
5064#define E4_XSTORM_ETH_CONN_AG_CTX_CF7EN_MASK 0x1
5065#define E4_XSTORM_ETH_CONN_AG_CTX_CF7EN_SHIFT 5
5066#define E4_XSTORM_ETH_CONN_AG_CTX_CF8EN_MASK 0x1
5067#define E4_XSTORM_ETH_CONN_AG_CTX_CF8EN_SHIFT 6
5068#define E4_XSTORM_ETH_CONN_AG_CTX_CF9EN_MASK 0x1
5069#define E4_XSTORM_ETH_CONN_AG_CTX_CF9EN_SHIFT 7
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02005070 u8 flags9;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02005071#define E4_XSTORM_ETH_CONN_AG_CTX_CF10EN_MASK 0x1
5072#define E4_XSTORM_ETH_CONN_AG_CTX_CF10EN_SHIFT 0
5073#define E4_XSTORM_ETH_CONN_AG_CTX_CF11EN_MASK 0x1
5074#define E4_XSTORM_ETH_CONN_AG_CTX_CF11EN_SHIFT 1
5075#define E4_XSTORM_ETH_CONN_AG_CTX_CF12EN_MASK 0x1
5076#define E4_XSTORM_ETH_CONN_AG_CTX_CF12EN_SHIFT 2
5077#define E4_XSTORM_ETH_CONN_AG_CTX_CF13EN_MASK 0x1
5078#define E4_XSTORM_ETH_CONN_AG_CTX_CF13EN_SHIFT 3
5079#define E4_XSTORM_ETH_CONN_AG_CTX_CF14EN_MASK 0x1
5080#define E4_XSTORM_ETH_CONN_AG_CTX_CF14EN_SHIFT 4
5081#define E4_XSTORM_ETH_CONN_AG_CTX_CF15EN_MASK 0x1
5082#define E4_XSTORM_ETH_CONN_AG_CTX_CF15EN_SHIFT 5
5083#define E4_XSTORM_ETH_CONN_AG_CTX_GO_TO_BD_CONS_CF_EN_MASK 0x1
5084#define E4_XSTORM_ETH_CONN_AG_CTX_GO_TO_BD_CONS_CF_EN_SHIFT 6
5085#define E4_XSTORM_ETH_CONN_AG_CTX_MULTI_UNICAST_CF_EN_MASK 0x1
5086#define E4_XSTORM_ETH_CONN_AG_CTX_MULTI_UNICAST_CF_EN_SHIFT 7
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02005087 u8 flags10;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02005088#define E4_XSTORM_ETH_CONN_AG_CTX_DQ_CF_EN_MASK 0x1
5089#define E4_XSTORM_ETH_CONN_AG_CTX_DQ_CF_EN_SHIFT 0
5090#define E4_XSTORM_ETH_CONN_AG_CTX_TERMINATE_CF_EN_MASK 0x1
5091#define E4_XSTORM_ETH_CONN_AG_CTX_TERMINATE_CF_EN_SHIFT 1
5092#define E4_XSTORM_ETH_CONN_AG_CTX_FLUSH_Q0_EN_MASK 0x1
5093#define E4_XSTORM_ETH_CONN_AG_CTX_FLUSH_Q0_EN_SHIFT 2
5094#define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED11_MASK 0x1
5095#define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED11_SHIFT 3
5096#define E4_XSTORM_ETH_CONN_AG_CTX_SLOW_PATH_EN_MASK 0x1
5097#define E4_XSTORM_ETH_CONN_AG_CTX_SLOW_PATH_EN_SHIFT 4
5098#define E4_XSTORM_ETH_CONN_AG_CTX_TPH_ENABLE_EN_RESERVED_MASK 0x1
5099#define E4_XSTORM_ETH_CONN_AG_CTX_TPH_ENABLE_EN_RESERVED_SHIFT 5
5100#define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED12_MASK 0x1
5101#define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED12_SHIFT 6
5102#define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED13_MASK 0x1
5103#define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED13_SHIFT 7
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02005104 u8 flags11;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02005105#define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED14_MASK 0x1
5106#define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED14_SHIFT 0
5107#define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED15_MASK 0x1
5108#define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED15_SHIFT 1
5109#define E4_XSTORM_ETH_CONN_AG_CTX_TX_DEC_RULE_EN_MASK 0x1
5110#define E4_XSTORM_ETH_CONN_AG_CTX_TX_DEC_RULE_EN_SHIFT 2
5111#define E4_XSTORM_ETH_CONN_AG_CTX_RULE5EN_MASK 0x1
5112#define E4_XSTORM_ETH_CONN_AG_CTX_RULE5EN_SHIFT 3
5113#define E4_XSTORM_ETH_CONN_AG_CTX_RULE6EN_MASK 0x1
5114#define E4_XSTORM_ETH_CONN_AG_CTX_RULE6EN_SHIFT 4
5115#define E4_XSTORM_ETH_CONN_AG_CTX_RULE7EN_MASK 0x1
5116#define E4_XSTORM_ETH_CONN_AG_CTX_RULE7EN_SHIFT 5
5117#define E4_XSTORM_ETH_CONN_AG_CTX_A0_RESERVED1_MASK 0x1
5118#define E4_XSTORM_ETH_CONN_AG_CTX_A0_RESERVED1_SHIFT 6
5119#define E4_XSTORM_ETH_CONN_AG_CTX_RULE9EN_MASK 0x1
5120#define E4_XSTORM_ETH_CONN_AG_CTX_RULE9EN_SHIFT 7
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02005121 u8 flags12;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02005122#define E4_XSTORM_ETH_CONN_AG_CTX_RULE10EN_MASK 0x1
5123#define E4_XSTORM_ETH_CONN_AG_CTX_RULE10EN_SHIFT 0
5124#define E4_XSTORM_ETH_CONN_AG_CTX_RULE11EN_MASK 0x1
5125#define E4_XSTORM_ETH_CONN_AG_CTX_RULE11EN_SHIFT 1
5126#define E4_XSTORM_ETH_CONN_AG_CTX_A0_RESERVED2_MASK 0x1
5127#define E4_XSTORM_ETH_CONN_AG_CTX_A0_RESERVED2_SHIFT 2
5128#define E4_XSTORM_ETH_CONN_AG_CTX_A0_RESERVED3_MASK 0x1
5129#define E4_XSTORM_ETH_CONN_AG_CTX_A0_RESERVED3_SHIFT 3
5130#define E4_XSTORM_ETH_CONN_AG_CTX_RULE14EN_MASK 0x1
5131#define E4_XSTORM_ETH_CONN_AG_CTX_RULE14EN_SHIFT 4
5132#define E4_XSTORM_ETH_CONN_AG_CTX_RULE15EN_MASK 0x1
5133#define E4_XSTORM_ETH_CONN_AG_CTX_RULE15EN_SHIFT 5
5134#define E4_XSTORM_ETH_CONN_AG_CTX_RULE16EN_MASK 0x1
5135#define E4_XSTORM_ETH_CONN_AG_CTX_RULE16EN_SHIFT 6
5136#define E4_XSTORM_ETH_CONN_AG_CTX_RULE17EN_MASK 0x1
5137#define E4_XSTORM_ETH_CONN_AG_CTX_RULE17EN_SHIFT 7
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02005138 u8 flags13;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02005139#define E4_XSTORM_ETH_CONN_AG_CTX_RULE18EN_MASK 0x1
5140#define E4_XSTORM_ETH_CONN_AG_CTX_RULE18EN_SHIFT 0
5141#define E4_XSTORM_ETH_CONN_AG_CTX_RULE19EN_MASK 0x1
5142#define E4_XSTORM_ETH_CONN_AG_CTX_RULE19EN_SHIFT 1
5143#define E4_XSTORM_ETH_CONN_AG_CTX_A0_RESERVED4_MASK 0x1
5144#define E4_XSTORM_ETH_CONN_AG_CTX_A0_RESERVED4_SHIFT 2
5145#define E4_XSTORM_ETH_CONN_AG_CTX_A0_RESERVED5_MASK 0x1
5146#define E4_XSTORM_ETH_CONN_AG_CTX_A0_RESERVED5_SHIFT 3
5147#define E4_XSTORM_ETH_CONN_AG_CTX_A0_RESERVED6_MASK 0x1
5148#define E4_XSTORM_ETH_CONN_AG_CTX_A0_RESERVED6_SHIFT 4
5149#define E4_XSTORM_ETH_CONN_AG_CTX_A0_RESERVED7_MASK 0x1
5150#define E4_XSTORM_ETH_CONN_AG_CTX_A0_RESERVED7_SHIFT 5
5151#define E4_XSTORM_ETH_CONN_AG_CTX_A0_RESERVED8_MASK 0x1
5152#define E4_XSTORM_ETH_CONN_AG_CTX_A0_RESERVED8_SHIFT 6
5153#define E4_XSTORM_ETH_CONN_AG_CTX_A0_RESERVED9_MASK 0x1
5154#define E4_XSTORM_ETH_CONN_AG_CTX_A0_RESERVED9_SHIFT 7
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02005155 u8 flags14;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02005156#define E4_XSTORM_ETH_CONN_AG_CTX_EDPM_USE_EXT_HDR_MASK 0x1
5157#define E4_XSTORM_ETH_CONN_AG_CTX_EDPM_USE_EXT_HDR_SHIFT 0
5158#define E4_XSTORM_ETH_CONN_AG_CTX_EDPM_SEND_RAW_L3L4_MASK 0x1
5159#define E4_XSTORM_ETH_CONN_AG_CTX_EDPM_SEND_RAW_L3L4_SHIFT 1
5160#define E4_XSTORM_ETH_CONN_AG_CTX_EDPM_INBAND_PROP_HDR_MASK 0x1
5161#define E4_XSTORM_ETH_CONN_AG_CTX_EDPM_INBAND_PROP_HDR_SHIFT 2
5162#define E4_XSTORM_ETH_CONN_AG_CTX_EDPM_SEND_EXT_TUNNEL_MASK 0x1
5163#define E4_XSTORM_ETH_CONN_AG_CTX_EDPM_SEND_EXT_TUNNEL_SHIFT 3
5164#define E4_XSTORM_ETH_CONN_AG_CTX_L2_EDPM_ENABLE_MASK 0x1
5165#define E4_XSTORM_ETH_CONN_AG_CTX_L2_EDPM_ENABLE_SHIFT 4
5166#define E4_XSTORM_ETH_CONN_AG_CTX_ROCE_EDPM_ENABLE_MASK 0x1
5167#define E4_XSTORM_ETH_CONN_AG_CTX_ROCE_EDPM_ENABLE_SHIFT 5
5168#define E4_XSTORM_ETH_CONN_AG_CTX_TPH_ENABLE_MASK 0x3
5169#define E4_XSTORM_ETH_CONN_AG_CTX_TPH_ENABLE_SHIFT 6
Yuval Mintz351a4ded2016-06-02 10:23:29 +03005170 u8 edpm_event_id;
5171 __le16 physical_q0;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02005172 __le16 e5_reserved1;
Yuval Mintz351a4ded2016-06-02 10:23:29 +03005173 __le16 edpm_num_bds;
5174 __le16 tx_bd_cons;
5175 __le16 tx_bd_prod;
Michal Kalderon50bc60c2018-03-28 11:42:16 +03005176 __le16 updated_qm_pq_id;
Yuval Mintz351a4ded2016-06-02 10:23:29 +03005177 __le16 conn_dpi;
5178 u8 byte3;
5179 u8 byte4;
5180 u8 byte5;
5181 u8 byte6;
5182 __le32 reg0;
5183 __le32 reg1;
5184 __le32 reg2;
5185 __le32 reg3;
5186 __le32 reg4;
5187 __le32 reg5;
5188 __le32 reg6;
5189 __le16 word7;
5190 __le16 word8;
5191 __le16 word9;
5192 __le16 word10;
5193 __le32 reg7;
5194 __le32 reg8;
5195 __le32 reg9;
5196 u8 byte7;
5197 u8 byte8;
5198 u8 byte9;
5199 u8 byte10;
5200 u8 byte11;
5201 u8 byte12;
5202 u8 byte13;
5203 u8 byte14;
5204 u8 byte15;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02005205 u8 e5_reserved;
Yuval Mintz351a4ded2016-06-02 10:23:29 +03005206 __le16 word11;
5207 __le32 reg10;
5208 __le32 reg11;
5209 __le32 reg12;
5210 __le32 reg13;
5211 __le32 reg14;
5212 __le32 reg15;
5213 __le32 reg16;
5214 __le32 reg17;
5215 __le32 reg18;
5216 __le32 reg19;
5217 __le16 word12;
5218 __le16 word13;
5219 __le16 word14;
5220 __le16 word15;
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02005221};
5222
Yuval Mintzfc48b7a2016-02-15 13:22:35 -05005223/* The eth storm context for the Ystorm */
5224struct ystorm_eth_conn_st_ctx {
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02005225 __le32 reserved[8];
5226};
5227
Tomer Tayar21dd79e2017-12-27 19:30:06 +02005228struct e4_ystorm_eth_conn_ag_ctx {
Yuval Mintz351a4ded2016-06-02 10:23:29 +03005229 u8 byte0;
5230 u8 state;
5231 u8 flags0;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02005232#define E4_YSTORM_ETH_CONN_AG_CTX_BIT0_MASK 0x1
5233#define E4_YSTORM_ETH_CONN_AG_CTX_BIT0_SHIFT 0
5234#define E4_YSTORM_ETH_CONN_AG_CTX_BIT1_MASK 0x1
5235#define E4_YSTORM_ETH_CONN_AG_CTX_BIT1_SHIFT 1
5236#define E4_YSTORM_ETH_CONN_AG_CTX_TX_BD_CONS_UPD_CF_MASK 0x3
5237#define E4_YSTORM_ETH_CONN_AG_CTX_TX_BD_CONS_UPD_CF_SHIFT 2
5238#define E4_YSTORM_ETH_CONN_AG_CTX_PMD_TERMINATE_CF_MASK 0x3
5239#define E4_YSTORM_ETH_CONN_AG_CTX_PMD_TERMINATE_CF_SHIFT 4
5240#define E4_YSTORM_ETH_CONN_AG_CTX_CF2_MASK 0x3
5241#define E4_YSTORM_ETH_CONN_AG_CTX_CF2_SHIFT 6
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02005242 u8 flags1;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02005243#define E4_YSTORM_ETH_CONN_AG_CTX_TX_BD_CONS_UPD_CF_EN_MASK 0x1
5244#define E4_YSTORM_ETH_CONN_AG_CTX_TX_BD_CONS_UPD_CF_EN_SHIFT 0
5245#define E4_YSTORM_ETH_CONN_AG_CTX_PMD_TERMINATE_CF_EN_MASK 0x1
5246#define E4_YSTORM_ETH_CONN_AG_CTX_PMD_TERMINATE_CF_EN_SHIFT 1
5247#define E4_YSTORM_ETH_CONN_AG_CTX_CF2EN_MASK 0x1
5248#define E4_YSTORM_ETH_CONN_AG_CTX_CF2EN_SHIFT 2
5249#define E4_YSTORM_ETH_CONN_AG_CTX_RULE0EN_MASK 0x1
5250#define E4_YSTORM_ETH_CONN_AG_CTX_RULE0EN_SHIFT 3
5251#define E4_YSTORM_ETH_CONN_AG_CTX_RULE1EN_MASK 0x1
5252#define E4_YSTORM_ETH_CONN_AG_CTX_RULE1EN_SHIFT 4
5253#define E4_YSTORM_ETH_CONN_AG_CTX_RULE2EN_MASK 0x1
5254#define E4_YSTORM_ETH_CONN_AG_CTX_RULE2EN_SHIFT 5
5255#define E4_YSTORM_ETH_CONN_AG_CTX_RULE3EN_MASK 0x1
5256#define E4_YSTORM_ETH_CONN_AG_CTX_RULE3EN_SHIFT 6
5257#define E4_YSTORM_ETH_CONN_AG_CTX_RULE4EN_MASK 0x1
5258#define E4_YSTORM_ETH_CONN_AG_CTX_RULE4EN_SHIFT 7
Yuval Mintz351a4ded2016-06-02 10:23:29 +03005259 u8 tx_q0_int_coallecing_timeset;
5260 u8 byte3;
5261 __le16 word0;
5262 __le32 terminate_spqe;
5263 __le32 reg1;
5264 __le16 tx_bd_cons_upd;
5265 __le16 word2;
5266 __le16 word3;
5267 __le16 word4;
5268 __le32 reg2;
5269 __le32 reg3;
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02005270};
5271
Tomer Tayar21dd79e2017-12-27 19:30:06 +02005272struct e4_tstorm_eth_conn_ag_ctx {
Yuval Mintz351a4ded2016-06-02 10:23:29 +03005273 u8 byte0;
5274 u8 byte1;
5275 u8 flags0;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02005276#define E4_TSTORM_ETH_CONN_AG_CTX_BIT0_MASK 0x1
5277#define E4_TSTORM_ETH_CONN_AG_CTX_BIT0_SHIFT 0
5278#define E4_TSTORM_ETH_CONN_AG_CTX_BIT1_MASK 0x1
5279#define E4_TSTORM_ETH_CONN_AG_CTX_BIT1_SHIFT 1
5280#define E4_TSTORM_ETH_CONN_AG_CTX_BIT2_MASK 0x1
5281#define E4_TSTORM_ETH_CONN_AG_CTX_BIT2_SHIFT 2
5282#define E4_TSTORM_ETH_CONN_AG_CTX_BIT3_MASK 0x1
5283#define E4_TSTORM_ETH_CONN_AG_CTX_BIT3_SHIFT 3
5284#define E4_TSTORM_ETH_CONN_AG_CTX_BIT4_MASK 0x1
5285#define E4_TSTORM_ETH_CONN_AG_CTX_BIT4_SHIFT 4
5286#define E4_TSTORM_ETH_CONN_AG_CTX_BIT5_MASK 0x1
5287#define E4_TSTORM_ETH_CONN_AG_CTX_BIT5_SHIFT 5
5288#define E4_TSTORM_ETH_CONN_AG_CTX_CF0_MASK 0x3
5289#define E4_TSTORM_ETH_CONN_AG_CTX_CF0_SHIFT 6
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02005290 u8 flags1;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02005291#define E4_TSTORM_ETH_CONN_AG_CTX_CF1_MASK 0x3
5292#define E4_TSTORM_ETH_CONN_AG_CTX_CF1_SHIFT 0
5293#define E4_TSTORM_ETH_CONN_AG_CTX_CF2_MASK 0x3
5294#define E4_TSTORM_ETH_CONN_AG_CTX_CF2_SHIFT 2
5295#define E4_TSTORM_ETH_CONN_AG_CTX_CF3_MASK 0x3
5296#define E4_TSTORM_ETH_CONN_AG_CTX_CF3_SHIFT 4
5297#define E4_TSTORM_ETH_CONN_AG_CTX_CF4_MASK 0x3
5298#define E4_TSTORM_ETH_CONN_AG_CTX_CF4_SHIFT 6
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02005299 u8 flags2;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02005300#define E4_TSTORM_ETH_CONN_AG_CTX_CF5_MASK 0x3
5301#define E4_TSTORM_ETH_CONN_AG_CTX_CF5_SHIFT 0
5302#define E4_TSTORM_ETH_CONN_AG_CTX_CF6_MASK 0x3
5303#define E4_TSTORM_ETH_CONN_AG_CTX_CF6_SHIFT 2
5304#define E4_TSTORM_ETH_CONN_AG_CTX_CF7_MASK 0x3
5305#define E4_TSTORM_ETH_CONN_AG_CTX_CF7_SHIFT 4
5306#define E4_TSTORM_ETH_CONN_AG_CTX_CF8_MASK 0x3
5307#define E4_TSTORM_ETH_CONN_AG_CTX_CF8_SHIFT 6
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02005308 u8 flags3;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02005309#define E4_TSTORM_ETH_CONN_AG_CTX_CF9_MASK 0x3
5310#define E4_TSTORM_ETH_CONN_AG_CTX_CF9_SHIFT 0
5311#define E4_TSTORM_ETH_CONN_AG_CTX_CF10_MASK 0x3
5312#define E4_TSTORM_ETH_CONN_AG_CTX_CF10_SHIFT 2
5313#define E4_TSTORM_ETH_CONN_AG_CTX_CF0EN_MASK 0x1
5314#define E4_TSTORM_ETH_CONN_AG_CTX_CF0EN_SHIFT 4
5315#define E4_TSTORM_ETH_CONN_AG_CTX_CF1EN_MASK 0x1
5316#define E4_TSTORM_ETH_CONN_AG_CTX_CF1EN_SHIFT 5
5317#define E4_TSTORM_ETH_CONN_AG_CTX_CF2EN_MASK 0x1
5318#define E4_TSTORM_ETH_CONN_AG_CTX_CF2EN_SHIFT 6
5319#define E4_TSTORM_ETH_CONN_AG_CTX_CF3EN_MASK 0x1
5320#define E4_TSTORM_ETH_CONN_AG_CTX_CF3EN_SHIFT 7
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02005321 u8 flags4;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02005322#define E4_TSTORM_ETH_CONN_AG_CTX_CF4EN_MASK 0x1
5323#define E4_TSTORM_ETH_CONN_AG_CTX_CF4EN_SHIFT 0
5324#define E4_TSTORM_ETH_CONN_AG_CTX_CF5EN_MASK 0x1
5325#define E4_TSTORM_ETH_CONN_AG_CTX_CF5EN_SHIFT 1
5326#define E4_TSTORM_ETH_CONN_AG_CTX_CF6EN_MASK 0x1
5327#define E4_TSTORM_ETH_CONN_AG_CTX_CF6EN_SHIFT 2
5328#define E4_TSTORM_ETH_CONN_AG_CTX_CF7EN_MASK 0x1
5329#define E4_TSTORM_ETH_CONN_AG_CTX_CF7EN_SHIFT 3
5330#define E4_TSTORM_ETH_CONN_AG_CTX_CF8EN_MASK 0x1
5331#define E4_TSTORM_ETH_CONN_AG_CTX_CF8EN_SHIFT 4
5332#define E4_TSTORM_ETH_CONN_AG_CTX_CF9EN_MASK 0x1
5333#define E4_TSTORM_ETH_CONN_AG_CTX_CF9EN_SHIFT 5
5334#define E4_TSTORM_ETH_CONN_AG_CTX_CF10EN_MASK 0x1
5335#define E4_TSTORM_ETH_CONN_AG_CTX_CF10EN_SHIFT 6
5336#define E4_TSTORM_ETH_CONN_AG_CTX_RULE0EN_MASK 0x1
5337#define E4_TSTORM_ETH_CONN_AG_CTX_RULE0EN_SHIFT 7
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02005338 u8 flags5;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02005339#define E4_TSTORM_ETH_CONN_AG_CTX_RULE1EN_MASK 0x1
5340#define E4_TSTORM_ETH_CONN_AG_CTX_RULE1EN_SHIFT 0
5341#define E4_TSTORM_ETH_CONN_AG_CTX_RULE2EN_MASK 0x1
5342#define E4_TSTORM_ETH_CONN_AG_CTX_RULE2EN_SHIFT 1
5343#define E4_TSTORM_ETH_CONN_AG_CTX_RULE3EN_MASK 0x1
5344#define E4_TSTORM_ETH_CONN_AG_CTX_RULE3EN_SHIFT 2
5345#define E4_TSTORM_ETH_CONN_AG_CTX_RULE4EN_MASK 0x1
5346#define E4_TSTORM_ETH_CONN_AG_CTX_RULE4EN_SHIFT 3
5347#define E4_TSTORM_ETH_CONN_AG_CTX_RULE5EN_MASK 0x1
5348#define E4_TSTORM_ETH_CONN_AG_CTX_RULE5EN_SHIFT 4
5349#define E4_TSTORM_ETH_CONN_AG_CTX_RX_BD_EN_MASK 0x1
5350#define E4_TSTORM_ETH_CONN_AG_CTX_RX_BD_EN_SHIFT 5
5351#define E4_TSTORM_ETH_CONN_AG_CTX_RULE7EN_MASK 0x1
5352#define E4_TSTORM_ETH_CONN_AG_CTX_RULE7EN_SHIFT 6
5353#define E4_TSTORM_ETH_CONN_AG_CTX_RULE8EN_MASK 0x1
5354#define E4_TSTORM_ETH_CONN_AG_CTX_RULE8EN_SHIFT 7
Yuval Mintz351a4ded2016-06-02 10:23:29 +03005355 __le32 reg0;
5356 __le32 reg1;
5357 __le32 reg2;
5358 __le32 reg3;
5359 __le32 reg4;
5360 __le32 reg5;
5361 __le32 reg6;
5362 __le32 reg7;
5363 __le32 reg8;
5364 u8 byte2;
5365 u8 byte3;
5366 __le16 rx_bd_cons;
5367 u8 byte4;
5368 u8 byte5;
5369 __le16 rx_bd_prod;
5370 __le16 word2;
5371 __le16 word3;
5372 __le32 reg9;
5373 __le32 reg10;
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02005374};
5375
Tomer Tayar21dd79e2017-12-27 19:30:06 +02005376struct e4_ustorm_eth_conn_ag_ctx {
Yuval Mintz351a4ded2016-06-02 10:23:29 +03005377 u8 byte0;
5378 u8 byte1;
5379 u8 flags0;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02005380#define E4_USTORM_ETH_CONN_AG_CTX_BIT0_MASK 0x1
5381#define E4_USTORM_ETH_CONN_AG_CTX_BIT0_SHIFT 0
5382#define E4_USTORM_ETH_CONN_AG_CTX_BIT1_MASK 0x1
5383#define E4_USTORM_ETH_CONN_AG_CTX_BIT1_SHIFT 1
5384#define E4_USTORM_ETH_CONN_AG_CTX_TX_PMD_TERMINATE_CF_MASK 0x3
5385#define E4_USTORM_ETH_CONN_AG_CTX_TX_PMD_TERMINATE_CF_SHIFT 2
5386#define E4_USTORM_ETH_CONN_AG_CTX_RX_PMD_TERMINATE_CF_MASK 0x3
5387#define E4_USTORM_ETH_CONN_AG_CTX_RX_PMD_TERMINATE_CF_SHIFT 4
5388#define E4_USTORM_ETH_CONN_AG_CTX_CF2_MASK 0x3
5389#define E4_USTORM_ETH_CONN_AG_CTX_CF2_SHIFT 6
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02005390 u8 flags1;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02005391#define E4_USTORM_ETH_CONN_AG_CTX_CF3_MASK 0x3
5392#define E4_USTORM_ETH_CONN_AG_CTX_CF3_SHIFT 0
5393#define E4_USTORM_ETH_CONN_AG_CTX_TX_ARM_CF_MASK 0x3
5394#define E4_USTORM_ETH_CONN_AG_CTX_TX_ARM_CF_SHIFT 2
5395#define E4_USTORM_ETH_CONN_AG_CTX_RX_ARM_CF_MASK 0x3
5396#define E4_USTORM_ETH_CONN_AG_CTX_RX_ARM_CF_SHIFT 4
5397#define E4_USTORM_ETH_CONN_AG_CTX_TX_BD_CONS_UPD_CF_MASK 0x3
5398#define E4_USTORM_ETH_CONN_AG_CTX_TX_BD_CONS_UPD_CF_SHIFT 6
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02005399 u8 flags2;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02005400#define E4_USTORM_ETH_CONN_AG_CTX_TX_PMD_TERMINATE_CF_EN_MASK 0x1
5401#define E4_USTORM_ETH_CONN_AG_CTX_TX_PMD_TERMINATE_CF_EN_SHIFT 0
5402#define E4_USTORM_ETH_CONN_AG_CTX_RX_PMD_TERMINATE_CF_EN_MASK 0x1
5403#define E4_USTORM_ETH_CONN_AG_CTX_RX_PMD_TERMINATE_CF_EN_SHIFT 1
5404#define E4_USTORM_ETH_CONN_AG_CTX_CF2EN_MASK 0x1
5405#define E4_USTORM_ETH_CONN_AG_CTX_CF2EN_SHIFT 2
5406#define E4_USTORM_ETH_CONN_AG_CTX_CF3EN_MASK 0x1
5407#define E4_USTORM_ETH_CONN_AG_CTX_CF3EN_SHIFT 3
5408#define E4_USTORM_ETH_CONN_AG_CTX_TX_ARM_CF_EN_MASK 0x1
5409#define E4_USTORM_ETH_CONN_AG_CTX_TX_ARM_CF_EN_SHIFT 4
5410#define E4_USTORM_ETH_CONN_AG_CTX_RX_ARM_CF_EN_MASK 0x1
5411#define E4_USTORM_ETH_CONN_AG_CTX_RX_ARM_CF_EN_SHIFT 5
5412#define E4_USTORM_ETH_CONN_AG_CTX_TX_BD_CONS_UPD_CF_EN_MASK 0x1
5413#define E4_USTORM_ETH_CONN_AG_CTX_TX_BD_CONS_UPD_CF_EN_SHIFT 6
5414#define E4_USTORM_ETH_CONN_AG_CTX_RULE0EN_MASK 0x1
5415#define E4_USTORM_ETH_CONN_AG_CTX_RULE0EN_SHIFT 7
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02005416 u8 flags3;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02005417#define E4_USTORM_ETH_CONN_AG_CTX_RULE1EN_MASK 0x1
5418#define E4_USTORM_ETH_CONN_AG_CTX_RULE1EN_SHIFT 0
5419#define E4_USTORM_ETH_CONN_AG_CTX_RULE2EN_MASK 0x1
5420#define E4_USTORM_ETH_CONN_AG_CTX_RULE2EN_SHIFT 1
5421#define E4_USTORM_ETH_CONN_AG_CTX_RULE3EN_MASK 0x1
5422#define E4_USTORM_ETH_CONN_AG_CTX_RULE3EN_SHIFT 2
5423#define E4_USTORM_ETH_CONN_AG_CTX_RULE4EN_MASK 0x1
5424#define E4_USTORM_ETH_CONN_AG_CTX_RULE4EN_SHIFT 3
5425#define E4_USTORM_ETH_CONN_AG_CTX_RULE5EN_MASK 0x1
5426#define E4_USTORM_ETH_CONN_AG_CTX_RULE5EN_SHIFT 4
5427#define E4_USTORM_ETH_CONN_AG_CTX_RULE6EN_MASK 0x1
5428#define E4_USTORM_ETH_CONN_AG_CTX_RULE6EN_SHIFT 5
5429#define E4_USTORM_ETH_CONN_AG_CTX_RULE7EN_MASK 0x1
5430#define E4_USTORM_ETH_CONN_AG_CTX_RULE7EN_SHIFT 6
5431#define E4_USTORM_ETH_CONN_AG_CTX_RULE8EN_MASK 0x1
5432#define E4_USTORM_ETH_CONN_AG_CTX_RULE8EN_SHIFT 7
Yuval Mintz351a4ded2016-06-02 10:23:29 +03005433 u8 byte2;
5434 u8 byte3;
5435 __le16 word0;
5436 __le16 tx_bd_cons;
5437 __le32 reg0;
5438 __le32 reg1;
5439 __le32 reg2;
5440 __le32 tx_int_coallecing_timeset;
5441 __le16 tx_drv_bd_cons;
5442 __le16 rx_drv_cqe_cons;
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02005443};
5444
Yuval Mintzfc48b7a2016-02-15 13:22:35 -05005445/* The eth storm context for the Ustorm */
5446struct ustorm_eth_conn_st_ctx {
5447 __le32 reserved[40];
5448};
5449
5450/* The eth storm context for the Mstorm */
5451struct mstorm_eth_conn_st_ctx {
5452 __le32 reserved[8];
5453};
5454
5455/* eth connection context */
Tomer Tayar21dd79e2017-12-27 19:30:06 +02005456struct e4_eth_conn_context {
Yuval Mintz351a4ded2016-06-02 10:23:29 +03005457 struct tstorm_eth_conn_st_ctx tstorm_st_context;
5458 struct regpair tstorm_st_padding[2];
5459 struct pstorm_eth_conn_st_ctx pstorm_st_context;
5460 struct xstorm_eth_conn_st_ctx xstorm_st_context;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02005461 struct e4_xstorm_eth_conn_ag_ctx xstorm_ag_context;
Yuval Mintz351a4ded2016-06-02 10:23:29 +03005462 struct ystorm_eth_conn_st_ctx ystorm_st_context;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02005463 struct e4_ystorm_eth_conn_ag_ctx ystorm_ag_context;
5464 struct e4_tstorm_eth_conn_ag_ctx tstorm_ag_context;
5465 struct e4_ustorm_eth_conn_ag_ctx ustorm_ag_context;
Yuval Mintz351a4ded2016-06-02 10:23:29 +03005466 struct ustorm_eth_conn_st_ctx ustorm_st_context;
5467 struct mstorm_eth_conn_st_ctx mstorm_st_context;
Yuval Mintzfc48b7a2016-02-15 13:22:35 -05005468};
5469
Tomer Tayara2e76992017-12-27 19:30:05 +02005470/* Ethernet filter types: mac/vlan/pair */
Yuval Mintz05fafbf2016-08-19 09:33:31 +03005471enum eth_error_code {
5472 ETH_OK = 0x00,
5473 ETH_FILTERS_MAC_ADD_FAIL_FULL,
5474 ETH_FILTERS_MAC_ADD_FAIL_FULL_MTT2,
5475 ETH_FILTERS_MAC_ADD_FAIL_DUP_MTT2,
5476 ETH_FILTERS_MAC_ADD_FAIL_DUP_STT2,
5477 ETH_FILTERS_MAC_DEL_FAIL_NOF,
5478 ETH_FILTERS_MAC_DEL_FAIL_NOF_MTT2,
5479 ETH_FILTERS_MAC_DEL_FAIL_NOF_STT2,
5480 ETH_FILTERS_MAC_ADD_FAIL_ZERO_MAC,
5481 ETH_FILTERS_VLAN_ADD_FAIL_FULL,
5482 ETH_FILTERS_VLAN_ADD_FAIL_DUP,
5483 ETH_FILTERS_VLAN_DEL_FAIL_NOF,
5484 ETH_FILTERS_VLAN_DEL_FAIL_NOF_TT1,
5485 ETH_FILTERS_PAIR_ADD_FAIL_DUP,
5486 ETH_FILTERS_PAIR_ADD_FAIL_FULL,
5487 ETH_FILTERS_PAIR_ADD_FAIL_FULL_MAC,
5488 ETH_FILTERS_PAIR_DEL_FAIL_NOF,
5489 ETH_FILTERS_PAIR_DEL_FAIL_NOF_TT1,
5490 ETH_FILTERS_PAIR_ADD_FAIL_ZERO_MAC,
5491 ETH_FILTERS_VNI_ADD_FAIL_FULL,
5492 ETH_FILTERS_VNI_ADD_FAIL_DUP,
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03005493 ETH_FILTERS_GFT_UPDATE_FAIL,
Yuval Mintz05fafbf2016-08-19 09:33:31 +03005494 MAX_ETH_ERROR_CODE
5495};
5496
Tomer Tayara2e76992017-12-27 19:30:05 +02005497/* Opcodes for the event ring */
Yuval Mintz351a4ded2016-06-02 10:23:29 +03005498enum eth_event_opcode {
5499 ETH_EVENT_UNUSED,
5500 ETH_EVENT_VPORT_START,
5501 ETH_EVENT_VPORT_UPDATE,
5502 ETH_EVENT_VPORT_STOP,
5503 ETH_EVENT_TX_QUEUE_START,
5504 ETH_EVENT_TX_QUEUE_STOP,
5505 ETH_EVENT_RX_QUEUE_START,
5506 ETH_EVENT_RX_QUEUE_UPDATE,
5507 ETH_EVENT_RX_QUEUE_STOP,
5508 ETH_EVENT_FILTERS_UPDATE,
Tomer Tayarda090912017-12-27 19:30:07 +02005509 ETH_EVENT_RX_ADD_OPENFLOW_FILTER,
5510 ETH_EVENT_RX_DELETE_OPENFLOW_FILTER,
5511 ETH_EVENT_RX_CREATE_OPENFLOW_ACTION,
Yuval Mintz351a4ded2016-06-02 10:23:29 +03005512 ETH_EVENT_RX_ADD_UDP_FILTER,
5513 ETH_EVENT_RX_DELETE_UDP_FILTER,
Tomer Tayarda090912017-12-27 19:30:07 +02005514 ETH_EVENT_RX_CREATE_GFT_ACTION,
5515 ETH_EVENT_RX_GFT_UPDATE_FILTER,
5516 ETH_EVENT_TX_QUEUE_UPDATE,
Yuval Mintz351a4ded2016-06-02 10:23:29 +03005517 MAX_ETH_EVENT_OPCODE
5518};
5519
5520/* Classify rule types in E2/E3 */
Yuval Mintzfc48b7a2016-02-15 13:22:35 -05005521enum eth_filter_action {
Yuval Mintz351a4ded2016-06-02 10:23:29 +03005522 ETH_FILTER_ACTION_UNUSED,
Yuval Mintzfc48b7a2016-02-15 13:22:35 -05005523 ETH_FILTER_ACTION_REMOVE,
5524 ETH_FILTER_ACTION_ADD,
5525 ETH_FILTER_ACTION_REMOVE_ALL,
5526 MAX_ETH_FILTER_ACTION
5527};
5528
Yuval Mintz351a4ded2016-06-02 10:23:29 +03005529/* Command for adding/removing a classification rule $$KEEP_ENDIANNESS$$ */
Yuval Mintzfc48b7a2016-02-15 13:22:35 -05005530struct eth_filter_cmd {
Yuval Mintz351a4ded2016-06-02 10:23:29 +03005531 u8 type;
5532 u8 vport_id;
5533 u8 action;
5534 u8 reserved0;
5535 __le32 vni;
5536 __le16 mac_lsb;
5537 __le16 mac_mid;
5538 __le16 mac_msb;
5539 __le16 vlan_id;
Yuval Mintzfc48b7a2016-02-15 13:22:35 -05005540};
5541
Yuval Mintz351a4ded2016-06-02 10:23:29 +03005542/* $$KEEP_ENDIANNESS$$ */
Yuval Mintzfc48b7a2016-02-15 13:22:35 -05005543struct eth_filter_cmd_header {
Yuval Mintz351a4ded2016-06-02 10:23:29 +03005544 u8 rx;
5545 u8 tx;
5546 u8 cmd_cnt;
5547 u8 assert_on_error;
5548 u8 reserved1[4];
Yuval Mintzfc48b7a2016-02-15 13:22:35 -05005549};
5550
Yuval Mintz351a4ded2016-06-02 10:23:29 +03005551/* Ethernet filter types: mac/vlan/pair */
Yuval Mintzfc48b7a2016-02-15 13:22:35 -05005552enum eth_filter_type {
Yuval Mintz351a4ded2016-06-02 10:23:29 +03005553 ETH_FILTER_TYPE_UNUSED,
Yuval Mintzfc48b7a2016-02-15 13:22:35 -05005554 ETH_FILTER_TYPE_MAC,
5555 ETH_FILTER_TYPE_VLAN,
5556 ETH_FILTER_TYPE_PAIR,
5557 ETH_FILTER_TYPE_INNER_MAC,
5558 ETH_FILTER_TYPE_INNER_VLAN,
5559 ETH_FILTER_TYPE_INNER_PAIR,
5560 ETH_FILTER_TYPE_INNER_MAC_VNI_PAIR,
5561 ETH_FILTER_TYPE_MAC_VNI_PAIR,
5562 ETH_FILTER_TYPE_VNI,
5563 MAX_ETH_FILTER_TYPE
5564};
5565
Tomer Tayara2e76992017-12-27 19:30:05 +02005566/* Eth IPv4 Fragment Type */
Yuval Mintz05fafbf2016-08-19 09:33:31 +03005567enum eth_ipv4_frag_type {
5568 ETH_IPV4_NOT_FRAG,
5569 ETH_IPV4_FIRST_FRAG,
5570 ETH_IPV4_NON_FIRST_FRAG,
5571 MAX_ETH_IPV4_FRAG_TYPE
5572};
5573
Tomer Tayara2e76992017-12-27 19:30:05 +02005574/* eth IPv4 Fragment Type */
Mintz, Yuvalbe086e72017-03-11 18:39:18 +02005575enum eth_ip_type {
5576 ETH_IPV4,
5577 ETH_IPV6,
5578 MAX_ETH_IP_TYPE
5579};
5580
Tomer Tayara2e76992017-12-27 19:30:05 +02005581/* Ethernet Ramrod Command IDs */
Yuval Mintzfc48b7a2016-02-15 13:22:35 -05005582enum eth_ramrod_cmd_id {
5583 ETH_RAMROD_UNUSED,
Yuval Mintz351a4ded2016-06-02 10:23:29 +03005584 ETH_RAMROD_VPORT_START,
5585 ETH_RAMROD_VPORT_UPDATE,
5586 ETH_RAMROD_VPORT_STOP,
5587 ETH_RAMROD_RX_QUEUE_START,
5588 ETH_RAMROD_RX_QUEUE_STOP,
5589 ETH_RAMROD_TX_QUEUE_START,
5590 ETH_RAMROD_TX_QUEUE_STOP,
5591 ETH_RAMROD_FILTERS_UPDATE,
5592 ETH_RAMROD_RX_QUEUE_UPDATE,
5593 ETH_RAMROD_RX_CREATE_OPENFLOW_ACTION,
5594 ETH_RAMROD_RX_ADD_OPENFLOW_FILTER,
5595 ETH_RAMROD_RX_DELETE_OPENFLOW_FILTER,
5596 ETH_RAMROD_RX_ADD_UDP_FILTER,
5597 ETH_RAMROD_RX_DELETE_UDP_FILTER,
5598 ETH_RAMROD_RX_CREATE_GFT_ACTION,
5599 ETH_RAMROD_GFT_UPDATE_FILTER,
Tomer Tayarda090912017-12-27 19:30:07 +02005600 ETH_RAMROD_TX_QUEUE_UPDATE,
Yuval Mintzfc48b7a2016-02-15 13:22:35 -05005601 MAX_ETH_RAMROD_CMD_ID
5602};
5603
Tomer Tayara2e76992017-12-27 19:30:05 +02005604/* Return code from eth sp ramrods */
Yuval Mintz351a4ded2016-06-02 10:23:29 +03005605struct eth_return_code {
5606 u8 value;
5607#define ETH_RETURN_CODE_ERR_CODE_MASK 0x1F
5608#define ETH_RETURN_CODE_ERR_CODE_SHIFT 0
5609#define ETH_RETURN_CODE_RESERVED_MASK 0x3
5610#define ETH_RETURN_CODE_RESERVED_SHIFT 5
5611#define ETH_RETURN_CODE_RX_TX_MASK 0x1
5612#define ETH_RETURN_CODE_RX_TX_SHIFT 7
5613};
5614
5615/* What to do in case an error occurs */
Yuval Mintzfc48b7a2016-02-15 13:22:35 -05005616enum eth_tx_err {
Yuval Mintz351a4ded2016-06-02 10:23:29 +03005617 ETH_TX_ERR_DROP,
Yuval Mintzfc48b7a2016-02-15 13:22:35 -05005618 ETH_TX_ERR_ASSERT_MALICIOUS,
5619 MAX_ETH_TX_ERR
5620};
5621
Yuval Mintz351a4ded2016-06-02 10:23:29 +03005622/* Array of the different error type behaviors */
Yuval Mintzfc48b7a2016-02-15 13:22:35 -05005623struct eth_tx_err_vals {
5624 __le16 values;
Yuval Mintz351a4ded2016-06-02 10:23:29 +03005625#define ETH_TX_ERR_VALS_ILLEGAL_VLAN_MODE_MASK 0x1
5626#define ETH_TX_ERR_VALS_ILLEGAL_VLAN_MODE_SHIFT 0
5627#define ETH_TX_ERR_VALS_PACKET_TOO_SMALL_MASK 0x1
5628#define ETH_TX_ERR_VALS_PACKET_TOO_SMALL_SHIFT 1
5629#define ETH_TX_ERR_VALS_ANTI_SPOOFING_ERR_MASK 0x1
5630#define ETH_TX_ERR_VALS_ANTI_SPOOFING_ERR_SHIFT 2
5631#define ETH_TX_ERR_VALS_ILLEGAL_INBAND_TAGS_MASK 0x1
5632#define ETH_TX_ERR_VALS_ILLEGAL_INBAND_TAGS_SHIFT 3
5633#define ETH_TX_ERR_VALS_VLAN_INSERTION_W_INBAND_TAG_MASK 0x1
5634#define ETH_TX_ERR_VALS_VLAN_INSERTION_W_INBAND_TAG_SHIFT 4
5635#define ETH_TX_ERR_VALS_MTU_VIOLATION_MASK 0x1
5636#define ETH_TX_ERR_VALS_MTU_VIOLATION_SHIFT 5
5637#define ETH_TX_ERR_VALS_ILLEGAL_CONTROL_FRAME_MASK 0x1
5638#define ETH_TX_ERR_VALS_ILLEGAL_CONTROL_FRAME_SHIFT 6
5639#define ETH_TX_ERR_VALS_RESERVED_MASK 0x1FF
5640#define ETH_TX_ERR_VALS_RESERVED_SHIFT 7
Yuval Mintzfc48b7a2016-02-15 13:22:35 -05005641};
5642
Yuval Mintz351a4ded2016-06-02 10:23:29 +03005643/* vport rss configuration data */
Yuval Mintzfc48b7a2016-02-15 13:22:35 -05005644struct eth_vport_rss_config {
5645 __le16 capabilities;
Yuval Mintz351a4ded2016-06-02 10:23:29 +03005646#define ETH_VPORT_RSS_CONFIG_IPV4_CAPABILITY_MASK 0x1
5647#define ETH_VPORT_RSS_CONFIG_IPV4_CAPABILITY_SHIFT 0
5648#define ETH_VPORT_RSS_CONFIG_IPV6_CAPABILITY_MASK 0x1
5649#define ETH_VPORT_RSS_CONFIG_IPV6_CAPABILITY_SHIFT 1
5650#define ETH_VPORT_RSS_CONFIG_IPV4_TCP_CAPABILITY_MASK 0x1
5651#define ETH_VPORT_RSS_CONFIG_IPV4_TCP_CAPABILITY_SHIFT 2
5652#define ETH_VPORT_RSS_CONFIG_IPV6_TCP_CAPABILITY_MASK 0x1
5653#define ETH_VPORT_RSS_CONFIG_IPV6_TCP_CAPABILITY_SHIFT 3
5654#define ETH_VPORT_RSS_CONFIG_IPV4_UDP_CAPABILITY_MASK 0x1
5655#define ETH_VPORT_RSS_CONFIG_IPV4_UDP_CAPABILITY_SHIFT 4
5656#define ETH_VPORT_RSS_CONFIG_IPV6_UDP_CAPABILITY_MASK 0x1
5657#define ETH_VPORT_RSS_CONFIG_IPV6_UDP_CAPABILITY_SHIFT 5
5658#define ETH_VPORT_RSS_CONFIG_EN_5_TUPLE_CAPABILITY_MASK 0x1
5659#define ETH_VPORT_RSS_CONFIG_EN_5_TUPLE_CAPABILITY_SHIFT 6
5660#define ETH_VPORT_RSS_CONFIG_RESERVED0_MASK 0x1FF
5661#define ETH_VPORT_RSS_CONFIG_RESERVED0_SHIFT 7
5662 u8 rss_id;
5663 u8 rss_mode;
5664 u8 update_rss_key;
5665 u8 update_rss_ind_table;
5666 u8 update_rss_capabilities;
5667 u8 tbl_size;
5668 __le32 reserved2[2];
5669 __le16 indirection_table[ETH_RSS_IND_TABLE_ENTRIES_NUM];
5670
5671 __le32 rss_key[ETH_RSS_KEY_SIZE_REGS];
5672 __le32 reserved3[2];
Yuval Mintzfc48b7a2016-02-15 13:22:35 -05005673};
5674
Yuval Mintz351a4ded2016-06-02 10:23:29 +03005675/* eth vport RSS mode */
Yuval Mintzfc48b7a2016-02-15 13:22:35 -05005676enum eth_vport_rss_mode {
5677 ETH_VPORT_RSS_MODE_DISABLED,
5678 ETH_VPORT_RSS_MODE_REGULAR,
5679 MAX_ETH_VPORT_RSS_MODE
5680};
5681
Yuval Mintz351a4ded2016-06-02 10:23:29 +03005682/* Command for setting classification flags for a vport $$KEEP_ENDIANNESS$$ */
Yuval Mintzfc48b7a2016-02-15 13:22:35 -05005683struct eth_vport_rx_mode {
5684 __le16 state;
Yuval Mintz351a4ded2016-06-02 10:23:29 +03005685#define ETH_VPORT_RX_MODE_UCAST_DROP_ALL_MASK 0x1
5686#define ETH_VPORT_RX_MODE_UCAST_DROP_ALL_SHIFT 0
5687#define ETH_VPORT_RX_MODE_UCAST_ACCEPT_ALL_MASK 0x1
5688#define ETH_VPORT_RX_MODE_UCAST_ACCEPT_ALL_SHIFT 1
5689#define ETH_VPORT_RX_MODE_UCAST_ACCEPT_UNMATCHED_MASK 0x1
5690#define ETH_VPORT_RX_MODE_UCAST_ACCEPT_UNMATCHED_SHIFT 2
5691#define ETH_VPORT_RX_MODE_MCAST_DROP_ALL_MASK 0x1
5692#define ETH_VPORT_RX_MODE_MCAST_DROP_ALL_SHIFT 3
5693#define ETH_VPORT_RX_MODE_MCAST_ACCEPT_ALL_MASK 0x1
5694#define ETH_VPORT_RX_MODE_MCAST_ACCEPT_ALL_SHIFT 4
5695#define ETH_VPORT_RX_MODE_BCAST_ACCEPT_ALL_MASK 0x1
5696#define ETH_VPORT_RX_MODE_BCAST_ACCEPT_ALL_SHIFT 5
5697#define ETH_VPORT_RX_MODE_RESERVED1_MASK 0x3FF
5698#define ETH_VPORT_RX_MODE_RESERVED1_SHIFT 6
Yuval Mintzfc48b7a2016-02-15 13:22:35 -05005699};
5700
Yuval Mintz351a4ded2016-06-02 10:23:29 +03005701/* Command for setting tpa parameters */
Yuval Mintzfc48b7a2016-02-15 13:22:35 -05005702struct eth_vport_tpa_param {
Yuval Mintz351a4ded2016-06-02 10:23:29 +03005703 u8 tpa_ipv4_en_flg;
5704 u8 tpa_ipv6_en_flg;
5705 u8 tpa_ipv4_tunn_en_flg;
5706 u8 tpa_ipv6_tunn_en_flg;
5707 u8 tpa_pkt_split_flg;
5708 u8 tpa_hdr_data_split_flg;
5709 u8 tpa_gro_consistent_flg;
5710
5711 u8 tpa_max_aggs_num;
5712
5713 __le16 tpa_max_size;
5714 __le16 tpa_min_size_to_start;
5715
5716 __le16 tpa_min_size_to_cont;
5717 u8 max_buff_num;
5718 u8 reserved;
Yuval Mintzfc48b7a2016-02-15 13:22:35 -05005719};
5720
Yuval Mintz351a4ded2016-06-02 10:23:29 +03005721/* Command for setting classification flags for a vport $$KEEP_ENDIANNESS$$ */
Yuval Mintzfc48b7a2016-02-15 13:22:35 -05005722struct eth_vport_tx_mode {
5723 __le16 state;
Yuval Mintz351a4ded2016-06-02 10:23:29 +03005724#define ETH_VPORT_TX_MODE_UCAST_DROP_ALL_MASK 0x1
5725#define ETH_VPORT_TX_MODE_UCAST_DROP_ALL_SHIFT 0
5726#define ETH_VPORT_TX_MODE_UCAST_ACCEPT_ALL_MASK 0x1
5727#define ETH_VPORT_TX_MODE_UCAST_ACCEPT_ALL_SHIFT 1
5728#define ETH_VPORT_TX_MODE_MCAST_DROP_ALL_MASK 0x1
5729#define ETH_VPORT_TX_MODE_MCAST_DROP_ALL_SHIFT 2
5730#define ETH_VPORT_TX_MODE_MCAST_ACCEPT_ALL_MASK 0x1
5731#define ETH_VPORT_TX_MODE_MCAST_ACCEPT_ALL_SHIFT 3
5732#define ETH_VPORT_TX_MODE_BCAST_ACCEPT_ALL_MASK 0x1
5733#define ETH_VPORT_TX_MODE_BCAST_ACCEPT_ALL_SHIFT 4
5734#define ETH_VPORT_TX_MODE_RESERVED1_MASK 0x7FF
5735#define ETH_VPORT_TX_MODE_RESERVED1_SHIFT 5
Yuval Mintzfc48b7a2016-02-15 13:22:35 -05005736};
5737
Tomer Tayara2e76992017-12-27 19:30:05 +02005738/* GFT filter update action type */
Chopra, Manishd51e4af2017-04-13 04:54:44 -07005739enum gft_filter_update_action {
5740 GFT_ADD_FILTER,
5741 GFT_DELETE_FILTER,
5742 MAX_GFT_FILTER_UPDATE_ACTION
5743};
5744
Tomer Tayara2e76992017-12-27 19:30:05 +02005745/* Ramrod data for rx add openflow filter */
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03005746struct rx_add_openflow_filter_data {
5747 __le16 action_icid;
5748 u8 priority;
5749 u8 reserved0;
5750 __le32 tenant_id;
5751 __le16 dst_mac_hi;
5752 __le16 dst_mac_mid;
5753 __le16 dst_mac_lo;
5754 __le16 src_mac_hi;
5755 __le16 src_mac_mid;
5756 __le16 src_mac_lo;
5757 __le16 vlan_id;
5758 __le16 l2_eth_type;
5759 u8 ipv4_dscp;
5760 u8 ipv4_frag_type;
5761 u8 ipv4_over_ip;
5762 u8 tenant_id_exists;
5763 __le32 ipv4_dst_addr;
5764 __le32 ipv4_src_addr;
5765 __le16 l4_dst_port;
5766 __le16 l4_src_port;
5767};
5768
Tomer Tayara2e76992017-12-27 19:30:05 +02005769/* Ramrod data for rx create gft action */
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03005770struct rx_create_gft_action_data {
5771 u8 vport_id;
5772 u8 reserved[7];
5773};
5774
Tomer Tayara2e76992017-12-27 19:30:05 +02005775/* Ramrod data for rx create openflow action */
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03005776struct rx_create_openflow_action_data {
5777 u8 vport_id;
5778 u8 reserved[7];
5779};
5780
Yuval Mintz351a4ded2016-06-02 10:23:29 +03005781/* Ramrod data for rx queue start ramrod */
Yuval Mintzfc48b7a2016-02-15 13:22:35 -05005782struct rx_queue_start_ramrod_data {
Yuval Mintz351a4ded2016-06-02 10:23:29 +03005783 __le16 rx_queue_id;
5784 __le16 num_of_pbl_pages;
5785 __le16 bd_max_bytes;
5786 __le16 sb_id;
5787 u8 sb_index;
5788 u8 vport_id;
5789 u8 default_rss_queue_flg;
5790 u8 complete_cqe_flg;
5791 u8 complete_event_flg;
5792 u8 stats_counter_id;
5793 u8 pin_context;
5794 u8 pxp_tph_valid_bd;
5795 u8 pxp_tph_valid_pkt;
5796 u8 pxp_st_hint;
5797
5798 __le16 pxp_st_index;
5799 u8 pmd_mode;
5800
5801 u8 notify_en;
5802 u8 toggle_val;
5803
5804 u8 vf_rx_prod_index;
Yuval Mintz05fafbf2016-08-19 09:33:31 +03005805 u8 vf_rx_prod_use_zone_a;
5806 u8 reserved[5];
Yuval Mintz351a4ded2016-06-02 10:23:29 +03005807 __le16 reserved1;
5808 struct regpair cqe_pbl_addr;
5809 struct regpair bd_base;
5810 struct regpair reserved2;
Yuval Mintzfc48b7a2016-02-15 13:22:35 -05005811};
5812
Tomer Tayara2e76992017-12-27 19:30:05 +02005813/* Ramrod data for rx queue stop ramrod */
Yuval Mintzfc48b7a2016-02-15 13:22:35 -05005814struct rx_queue_stop_ramrod_data {
Yuval Mintz351a4ded2016-06-02 10:23:29 +03005815 __le16 rx_queue_id;
5816 u8 complete_cqe_flg;
5817 u8 complete_event_flg;
5818 u8 vport_id;
5819 u8 reserved[3];
Yuval Mintzfc48b7a2016-02-15 13:22:35 -05005820};
5821
Yuval Mintz351a4ded2016-06-02 10:23:29 +03005822/* Ramrod data for rx queue update ramrod */
Yuval Mintzfc48b7a2016-02-15 13:22:35 -05005823struct rx_queue_update_ramrod_data {
Yuval Mintz351a4ded2016-06-02 10:23:29 +03005824 __le16 rx_queue_id;
5825 u8 complete_cqe_flg;
5826 u8 complete_event_flg;
5827 u8 vport_id;
Michal Kalderon50bc60c2018-03-28 11:42:16 +03005828 u8 set_default_rss_queue;
5829 u8 reserved[3];
Yuval Mintz351a4ded2016-06-02 10:23:29 +03005830 u8 reserved1;
5831 u8 reserved2;
5832 u8 reserved3;
5833 __le16 reserved4;
5834 __le16 reserved5;
Yuval Mintzfc48b7a2016-02-15 13:22:35 -05005835 struct regpair reserved6;
5836};
5837
Yuval Mintz351a4ded2016-06-02 10:23:29 +03005838/* Ramrod data for rx Add UDP Filter */
5839struct rx_udp_filter_data {
5840 __le16 action_icid;
5841 __le16 vlan_id;
5842 u8 ip_type;
5843 u8 tenant_id_exists;
5844 __le16 reserved1;
5845 __le32 ip_dst_addr[4];
5846 __le32 ip_src_addr[4];
5847 __le16 udp_dst_port;
5848 __le16 udp_src_port;
5849 __le32 tenant_id;
Yuval Mintzfc48b7a2016-02-15 13:22:35 -05005850};
5851
Tomer Tayara2e76992017-12-27 19:30:05 +02005852/* Add or delete GFT filter - filter is packet header of type of packet wished
5853 * to pass certain FW flow.
5854 */
Chopra, Manishd51e4af2017-04-13 04:54:44 -07005855struct rx_update_gft_filter_data {
5856 struct regpair pkt_hdr_addr;
5857 __le16 pkt_hdr_length;
Tomer Tayarda090912017-12-27 19:30:07 +02005858 __le16 action_icid;
5859 __le16 rx_qid;
5860 __le16 flow_id;
5861 __le16 vport_id;
5862 u8 action_icid_valid;
5863 u8 rx_qid_valid;
5864 u8 flow_id_valid;
Chopra, Manishd51e4af2017-04-13 04:54:44 -07005865 u8 filter_action;
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03005866 u8 assert_on_error;
Michal Kalderon50bc60c2018-03-28 11:42:16 +03005867 u8 inner_vlan_removal_en;
Chopra, Manishd51e4af2017-04-13 04:54:44 -07005868};
5869
Yuval Mintz351a4ded2016-06-02 10:23:29 +03005870/* Ramrod data for rx queue start ramrod */
5871struct tx_queue_start_ramrod_data {
5872 __le16 sb_id;
5873 u8 sb_index;
5874 u8 vport_id;
5875 u8 reserved0;
5876 u8 stats_counter_id;
5877 __le16 qm_pq_id;
5878 u8 flags;
5879#define TX_QUEUE_START_RAMROD_DATA_DISABLE_OPPORTUNISTIC_MASK 0x1
5880#define TX_QUEUE_START_RAMROD_DATA_DISABLE_OPPORTUNISTIC_SHIFT 0
5881#define TX_QUEUE_START_RAMROD_DATA_TEST_MODE_PKT_DUP_MASK 0x1
5882#define TX_QUEUE_START_RAMROD_DATA_TEST_MODE_PKT_DUP_SHIFT 1
5883#define TX_QUEUE_START_RAMROD_DATA_TEST_MODE_TX_DEST_MASK 0x1
5884#define TX_QUEUE_START_RAMROD_DATA_TEST_MODE_TX_DEST_SHIFT 2
5885#define TX_QUEUE_START_RAMROD_DATA_PMD_MODE_MASK 0x1
5886#define TX_QUEUE_START_RAMROD_DATA_PMD_MODE_SHIFT 3
5887#define TX_QUEUE_START_RAMROD_DATA_NOTIFY_EN_MASK 0x1
5888#define TX_QUEUE_START_RAMROD_DATA_NOTIFY_EN_SHIFT 4
5889#define TX_QUEUE_START_RAMROD_DATA_PIN_CONTEXT_MASK 0x1
5890#define TX_QUEUE_START_RAMROD_DATA_PIN_CONTEXT_SHIFT 5
5891#define TX_QUEUE_START_RAMROD_DATA_RESERVED1_MASK 0x3
5892#define TX_QUEUE_START_RAMROD_DATA_RESERVED1_SHIFT 6
5893 u8 pxp_st_hint;
5894 u8 pxp_tph_valid_bd;
5895 u8 pxp_tph_valid_pkt;
5896 __le16 pxp_st_index;
5897 __le16 comp_agg_size;
5898 __le16 queue_zone_id;
Yuval Mintz05fafbf2016-08-19 09:33:31 +03005899 __le16 reserved2;
Yuval Mintz351a4ded2016-06-02 10:23:29 +03005900 __le16 pbl_size;
5901 __le16 tx_queue_id;
Yuval Mintz05fafbf2016-08-19 09:33:31 +03005902 __le16 same_as_last_id;
5903 __le16 reserved[3];
Yuval Mintz351a4ded2016-06-02 10:23:29 +03005904 struct regpair pbl_base_addr;
5905 struct regpair bd_cons_address;
5906};
5907
5908/* Ramrod data for tx queue stop ramrod */
Yuval Mintzfc48b7a2016-02-15 13:22:35 -05005909struct tx_queue_stop_ramrod_data {
5910 __le16 reserved[4];
5911};
5912
Tomer Tayarda090912017-12-27 19:30:07 +02005913/* Ramrod data for tx queue update ramrod */
5914struct tx_queue_update_ramrod_data {
5915 __le16 update_qm_pq_id_flg;
5916 __le16 qm_pq_id;
5917 __le32 reserved0;
5918 struct regpair reserved1[5];
5919};
5920
Yuval Mintz351a4ded2016-06-02 10:23:29 +03005921/* Ramrod data for vport update ramrod */
Yuval Mintzfc48b7a2016-02-15 13:22:35 -05005922struct vport_filter_update_ramrod_data {
Yuval Mintz351a4ded2016-06-02 10:23:29 +03005923 struct eth_filter_cmd_header filter_cmd_hdr;
5924 struct eth_filter_cmd filter_cmds[ETH_FILTER_RULES_COUNT];
Yuval Mintzfc48b7a2016-02-15 13:22:35 -05005925};
5926
Yuval Mintz351a4ded2016-06-02 10:23:29 +03005927/* Ramrod data for vport start ramrod */
Yuval Mintzfc48b7a2016-02-15 13:22:35 -05005928struct vport_start_ramrod_data {
Yuval Mintz351a4ded2016-06-02 10:23:29 +03005929 u8 vport_id;
5930 u8 sw_fid;
5931 __le16 mtu;
5932 u8 drop_ttl0_en;
5933 u8 inner_vlan_removal_en;
5934 struct eth_vport_rx_mode rx_mode;
5935 struct eth_vport_tx_mode tx_mode;
5936 struct eth_vport_tpa_param tpa_param;
5937 __le16 default_vlan;
5938 u8 tx_switching_en;
5939 u8 anti_spoofing_en;
5940
5941 u8 default_vlan_en;
5942
5943 u8 handle_ptp_pkts;
5944 u8 silent_vlan_removal_en;
5945 u8 untagged;
5946 struct eth_tx_err_vals tx_err_behav;
5947
5948 u8 zero_placement_offset;
5949 u8 ctl_frame_mac_check_en;
5950 u8 ctl_frame_ethtype_check_en;
Michal Kalderon50bc60c2018-03-28 11:42:16 +03005951 u8 reserved[1];
Yuval Mintzfc48b7a2016-02-15 13:22:35 -05005952};
5953
Yuval Mintz351a4ded2016-06-02 10:23:29 +03005954/* Ramrod data for vport stop ramrod */
Yuval Mintzfc48b7a2016-02-15 13:22:35 -05005955struct vport_stop_ramrod_data {
Yuval Mintz351a4ded2016-06-02 10:23:29 +03005956 u8 vport_id;
5957 u8 reserved[7];
Yuval Mintzfc48b7a2016-02-15 13:22:35 -05005958};
5959
Yuval Mintz351a4ded2016-06-02 10:23:29 +03005960/* Ramrod data for vport update ramrod */
Yuval Mintzfc48b7a2016-02-15 13:22:35 -05005961struct vport_update_ramrod_data_cmn {
Yuval Mintz351a4ded2016-06-02 10:23:29 +03005962 u8 vport_id;
5963 u8 update_rx_active_flg;
5964 u8 rx_active_flg;
5965 u8 update_tx_active_flg;
5966 u8 tx_active_flg;
5967 u8 update_rx_mode_flg;
5968 u8 update_tx_mode_flg;
5969 u8 update_approx_mcast_flg;
5970
5971 u8 update_rss_flg;
5972 u8 update_inner_vlan_removal_en_flg;
5973
5974 u8 inner_vlan_removal_en;
5975 u8 update_tpa_param_flg;
5976 u8 update_tpa_en_flg;
5977 u8 update_tx_switching_en_flg;
5978
5979 u8 tx_switching_en;
5980 u8 update_anti_spoofing_en_flg;
5981
5982 u8 anti_spoofing_en;
5983 u8 update_handle_ptp_pkts;
5984
5985 u8 handle_ptp_pkts;
5986 u8 update_default_vlan_en_flg;
5987
5988 u8 default_vlan_en;
5989
5990 u8 update_default_vlan_flg;
5991
5992 __le16 default_vlan;
5993 u8 update_accept_any_vlan_flg;
5994
5995 u8 accept_any_vlan;
5996 u8 silent_vlan_removal_en;
5997 u8 update_mtu_flg;
5998
5999 __le16 mtu;
Mintz, Yuvalbe086e72017-03-11 18:39:18 +02006000 u8 update_ctl_frame_checks_en_flg;
6001 u8 ctl_frame_mac_check_en;
6002 u8 ctl_frame_ethtype_check_en;
6003 u8 reserved[15];
Yuval Mintzfc48b7a2016-02-15 13:22:35 -05006004};
6005
6006struct vport_update_ramrod_mcast {
6007 __le32 bins[ETH_MULTICAST_MAC_BINS_IN_REGS];
6008};
6009
Yuval Mintz351a4ded2016-06-02 10:23:29 +03006010/* Ramrod data for vport update ramrod */
Yuval Mintzfc48b7a2016-02-15 13:22:35 -05006011struct vport_update_ramrod_data {
Yuval Mintz351a4ded2016-06-02 10:23:29 +03006012 struct vport_update_ramrod_data_cmn common;
6013
6014 struct eth_vport_rx_mode rx_mode;
6015 struct eth_vport_tx_mode tx_mode;
Michal Kalderon50bc60c2018-03-28 11:42:16 +03006016 __le32 reserved[3];
Yuval Mintz351a4ded2016-06-02 10:23:29 +03006017 struct eth_vport_tpa_param tpa_param;
6018 struct vport_update_ramrod_mcast approx_mcast;
6019 struct eth_vport_rss_config rss_config;
Yuval Mintzfe56b9e2015-10-26 11:02:25 +02006020};
6021
Tomer Tayar21dd79e2017-12-27 19:30:06 +02006022struct e4_xstorm_eth_conn_ag_ctx_dq_ext_ldpart {
Mintz, Yuvalbe086e72017-03-11 18:39:18 +02006023 u8 reserved0;
Tomer Tayarda090912017-12-27 19:30:07 +02006024 u8 state;
Mintz, Yuvalbe086e72017-03-11 18:39:18 +02006025 u8 flags0;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02006026#define E4XSTORMETHCONNAGCTXDQEXTLDPART_EXIST_IN_QM0_MASK 0x1
6027#define E4XSTORMETHCONNAGCTXDQEXTLDPART_EXIST_IN_QM0_SHIFT 0
6028#define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED1_MASK 0x1
6029#define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED1_SHIFT 1
6030#define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED2_MASK 0x1
6031#define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED2_SHIFT 2
6032#define E4XSTORMETHCONNAGCTXDQEXTLDPART_EXIST_IN_QM3_MASK 0x1
6033#define E4XSTORMETHCONNAGCTXDQEXTLDPART_EXIST_IN_QM3_SHIFT 3
6034#define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED3_MASK 0x1
6035#define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED3_SHIFT 4
6036#define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED4_MASK 0x1
6037#define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED4_SHIFT 5
6038#define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED5_MASK 0x1
6039#define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED5_SHIFT 6
6040#define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED6_MASK 0x1
6041#define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED6_SHIFT 7
Mintz, Yuvalbe086e72017-03-11 18:39:18 +02006042 u8 flags1;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02006043#define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED7_MASK 0x1
6044#define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED7_SHIFT 0
6045#define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED8_MASK 0x1
6046#define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED8_SHIFT 1
6047#define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED9_MASK 0x1
6048#define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED9_SHIFT 2
6049#define E4XSTORMETHCONNAGCTXDQEXTLDPART_BIT11_MASK 0x1
6050#define E4XSTORMETHCONNAGCTXDQEXTLDPART_BIT11_SHIFT 3
Tomer Tayarda090912017-12-27 19:30:07 +02006051#define E4XSTORMETHCONNAGCTXDQEXTLDPART_E5_RESERVED2_MASK 0x1
6052#define E4XSTORMETHCONNAGCTXDQEXTLDPART_E5_RESERVED2_SHIFT 4
6053#define E4XSTORMETHCONNAGCTXDQEXTLDPART_E5_RESERVED3_MASK 0x1
6054#define E4XSTORMETHCONNAGCTXDQEXTLDPART_E5_RESERVED3_SHIFT 5
Tomer Tayar21dd79e2017-12-27 19:30:06 +02006055#define E4XSTORMETHCONNAGCTXDQEXTLDPART_TX_RULE_ACTIVE_MASK 0x1
6056#define E4XSTORMETHCONNAGCTXDQEXTLDPART_TX_RULE_ACTIVE_SHIFT 6
6057#define E4XSTORMETHCONNAGCTXDQEXTLDPART_DQ_CF_ACTIVE_MASK 0x1
6058#define E4XSTORMETHCONNAGCTXDQEXTLDPART_DQ_CF_ACTIVE_SHIFT 7
Mintz, Yuvalbe086e72017-03-11 18:39:18 +02006059 u8 flags2;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02006060#define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF0_MASK 0x3
6061#define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF0_SHIFT 0
6062#define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF1_MASK 0x3
6063#define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF1_SHIFT 2
6064#define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF2_MASK 0x3
6065#define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF2_SHIFT 4
6066#define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF3_MASK 0x3
6067#define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF3_SHIFT 6
Mintz, Yuvalbe086e72017-03-11 18:39:18 +02006068 u8 flags3;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02006069#define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF4_MASK 0x3
6070#define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF4_SHIFT 0
6071#define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF5_MASK 0x3
6072#define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF5_SHIFT 2
6073#define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF6_MASK 0x3
6074#define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF6_SHIFT 4
6075#define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF7_MASK 0x3
6076#define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF7_SHIFT 6
Mintz, Yuvalbe086e72017-03-11 18:39:18 +02006077 u8 flags4;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02006078#define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF8_MASK 0x3
6079#define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF8_SHIFT 0
6080#define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF9_MASK 0x3
6081#define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF9_SHIFT 2
6082#define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF10_MASK 0x3
6083#define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF10_SHIFT 4
6084#define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF11_MASK 0x3
6085#define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF11_SHIFT 6
Mintz, Yuvalbe086e72017-03-11 18:39:18 +02006086 u8 flags5;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02006087#define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF12_MASK 0x3
6088#define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF12_SHIFT 0
6089#define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF13_MASK 0x3
6090#define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF13_SHIFT 2
6091#define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF14_MASK 0x3
6092#define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF14_SHIFT 4
6093#define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF15_MASK 0x3
6094#define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF15_SHIFT 6
Mintz, Yuvalbe086e72017-03-11 18:39:18 +02006095 u8 flags6;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02006096#define E4XSTORMETHCONNAGCTXDQEXTLDPART_GO_TO_BD_CONS_CF_MASK 0x3
6097#define E4XSTORMETHCONNAGCTXDQEXTLDPART_GO_TO_BD_CONS_CF_SHIFT 0
6098#define E4XSTORMETHCONNAGCTXDQEXTLDPART_MULTI_UNICAST_CF_MASK 0x3
6099#define E4XSTORMETHCONNAGCTXDQEXTLDPART_MULTI_UNICAST_CF_SHIFT 2
6100#define E4XSTORMETHCONNAGCTXDQEXTLDPART_DQ_CF_MASK 0x3
6101#define E4XSTORMETHCONNAGCTXDQEXTLDPART_DQ_CF_SHIFT 4
6102#define E4XSTORMETHCONNAGCTXDQEXTLDPART_TERMINATE_CF_MASK 0x3
6103#define E4XSTORMETHCONNAGCTXDQEXTLDPART_TERMINATE_CF_SHIFT 6
Mintz, Yuvalbe086e72017-03-11 18:39:18 +02006104 u8 flags7;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02006105#define E4XSTORMETHCONNAGCTXDQEXTLDPART_FLUSH_Q0_MASK 0x3
6106#define E4XSTORMETHCONNAGCTXDQEXTLDPART_FLUSH_Q0_SHIFT 0
6107#define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED10_MASK 0x3
6108#define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED10_SHIFT 2
6109#define E4XSTORMETHCONNAGCTXDQEXTLDPART_SLOW_PATH_MASK 0x3
6110#define E4XSTORMETHCONNAGCTXDQEXTLDPART_SLOW_PATH_SHIFT 4
6111#define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF0EN_MASK 0x1
6112#define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF0EN_SHIFT 6
6113#define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF1EN_MASK 0x1
6114#define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF1EN_SHIFT 7
Mintz, Yuvalbe086e72017-03-11 18:39:18 +02006115 u8 flags8;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02006116#define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF2EN_MASK 0x1
6117#define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF2EN_SHIFT 0
6118#define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF3EN_MASK 0x1
6119#define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF3EN_SHIFT 1
6120#define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF4EN_MASK 0x1
6121#define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF4EN_SHIFT 2
6122#define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF5EN_MASK 0x1
6123#define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF5EN_SHIFT 3
6124#define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF6EN_MASK 0x1
6125#define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF6EN_SHIFT 4
6126#define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF7EN_MASK 0x1
6127#define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF7EN_SHIFT 5
6128#define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF8EN_MASK 0x1
6129#define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF8EN_SHIFT 6
6130#define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF9EN_MASK 0x1
6131#define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF9EN_SHIFT 7
Mintz, Yuvalbe086e72017-03-11 18:39:18 +02006132 u8 flags9;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02006133#define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF10EN_MASK 0x1
6134#define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF10EN_SHIFT 0
6135#define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF11EN_MASK 0x1
6136#define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF11EN_SHIFT 1
6137#define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF12EN_MASK 0x1
6138#define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF12EN_SHIFT 2
6139#define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF13EN_MASK 0x1
6140#define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF13EN_SHIFT 3
6141#define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF14EN_MASK 0x1
6142#define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF14EN_SHIFT 4
6143#define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF15EN_MASK 0x1
6144#define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF15EN_SHIFT 5
6145#define E4XSTORMETHCONNAGCTXDQEXTLDPART_GO_TO_BD_CONS_CF_EN_MASK 0x1
6146#define E4XSTORMETHCONNAGCTXDQEXTLDPART_GO_TO_BD_CONS_CF_EN_SHIFT 6
6147#define E4XSTORMETHCONNAGCTXDQEXTLDPART_MULTI_UNICAST_CF_EN_MASK 0x1
6148#define E4XSTORMETHCONNAGCTXDQEXTLDPART_MULTI_UNICAST_CF_EN_SHIFT 7
Mintz, Yuvalbe086e72017-03-11 18:39:18 +02006149 u8 flags10;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02006150#define E4XSTORMETHCONNAGCTXDQEXTLDPART_DQ_CF_EN_MASK 0x1
6151#define E4XSTORMETHCONNAGCTXDQEXTLDPART_DQ_CF_EN_SHIFT 0
6152#define E4XSTORMETHCONNAGCTXDQEXTLDPART_TERMINATE_CF_EN_MASK 0x1
6153#define E4XSTORMETHCONNAGCTXDQEXTLDPART_TERMINATE_CF_EN_SHIFT 1
6154#define E4XSTORMETHCONNAGCTXDQEXTLDPART_FLUSH_Q0_EN_MASK 0x1
6155#define E4XSTORMETHCONNAGCTXDQEXTLDPART_FLUSH_Q0_EN_SHIFT 2
6156#define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED11_MASK 0x1
6157#define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED11_SHIFT 3
6158#define E4XSTORMETHCONNAGCTXDQEXTLDPART_SLOW_PATH_EN_MASK 0x1
6159#define E4XSTORMETHCONNAGCTXDQEXTLDPART_SLOW_PATH_EN_SHIFT 4
6160#define E4XSTORMETHCONNAGCTXDQEXTLDPART_TPH_ENABLE_EN_RESERVED_MASK 0x1
6161#define E4XSTORMETHCONNAGCTXDQEXTLDPART_TPH_ENABLE_EN_RESERVED_SHIFT 5
6162#define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED12_MASK 0x1
6163#define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED12_SHIFT 6
6164#define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED13_MASK 0x1
6165#define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED13_SHIFT 7
Mintz, Yuvalbe086e72017-03-11 18:39:18 +02006166 u8 flags11;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02006167#define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED14_MASK 0x1
6168#define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED14_SHIFT 0
6169#define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED15_MASK 0x1
6170#define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED15_SHIFT 1
6171#define E4XSTORMETHCONNAGCTXDQEXTLDPART_TX_DEC_RULE_EN_MASK 0x1
6172#define E4XSTORMETHCONNAGCTXDQEXTLDPART_TX_DEC_RULE_EN_SHIFT 2
6173#define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE5EN_MASK 0x1
6174#define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE5EN_SHIFT 3
6175#define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE6EN_MASK 0x1
6176#define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE6EN_SHIFT 4
6177#define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE7EN_MASK 0x1
6178#define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE7EN_SHIFT 5
6179#define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED1_MASK 0x1
6180#define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED1_SHIFT 6
6181#define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE9EN_MASK 0x1
6182#define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE9EN_SHIFT 7
Mintz, Yuvalbe086e72017-03-11 18:39:18 +02006183 u8 flags12;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02006184#define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE10EN_MASK 0x1
6185#define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE10EN_SHIFT 0
6186#define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE11EN_MASK 0x1
6187#define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE11EN_SHIFT 1
6188#define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED2_MASK 0x1
6189#define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED2_SHIFT 2
6190#define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED3_MASK 0x1
6191#define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED3_SHIFT 3
6192#define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE14EN_MASK 0x1
6193#define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE14EN_SHIFT 4
6194#define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE15EN_MASK 0x1
6195#define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE15EN_SHIFT 5
6196#define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE16EN_MASK 0x1
6197#define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE16EN_SHIFT 6
6198#define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE17EN_MASK 0x1
6199#define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE17EN_SHIFT 7
Mintz, Yuvalbe086e72017-03-11 18:39:18 +02006200 u8 flags13;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02006201#define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE18EN_MASK 0x1
6202#define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE18EN_SHIFT 0
6203#define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE19EN_MASK 0x1
6204#define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE19EN_SHIFT 1
6205#define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED4_MASK 0x1
6206#define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED4_SHIFT 2
6207#define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED5_MASK 0x1
6208#define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED5_SHIFT 3
6209#define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED6_MASK 0x1
6210#define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED6_SHIFT 4
6211#define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED7_MASK 0x1
6212#define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED7_SHIFT 5
6213#define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED8_MASK 0x1
6214#define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED8_SHIFT 6
6215#define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED9_MASK 0x1
6216#define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED9_SHIFT 7
Mintz, Yuvalbe086e72017-03-11 18:39:18 +02006217 u8 flags14;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02006218#define E4XSTORMETHCONNAGCTXDQEXTLDPART_EDPM_USE_EXT_HDR_MASK 0x1
6219#define E4XSTORMETHCONNAGCTXDQEXTLDPART_EDPM_USE_EXT_HDR_SHIFT 0
6220#define E4XSTORMETHCONNAGCTXDQEXTLDPART_EDPM_SEND_RAW_L3L4_MASK 0x1
6221#define E4XSTORMETHCONNAGCTXDQEXTLDPART_EDPM_SEND_RAW_L3L4_SHIFT 1
6222#define E4XSTORMETHCONNAGCTXDQEXTLDPART_EDPM_INBAND_PROP_HDR_MASK 0x1
6223#define E4XSTORMETHCONNAGCTXDQEXTLDPART_EDPM_INBAND_PROP_HDR_SHIFT 2
6224#define E4XSTORMETHCONNAGCTXDQEXTLDPART_EDPM_SEND_EXT_TUNNEL_MASK 0x1
6225#define E4XSTORMETHCONNAGCTXDQEXTLDPART_EDPM_SEND_EXT_TUNNEL_SHIFT 3
6226#define E4XSTORMETHCONNAGCTXDQEXTLDPART_L2_EDPM_ENABLE_MASK 0x1
6227#define E4XSTORMETHCONNAGCTXDQEXTLDPART_L2_EDPM_ENABLE_SHIFT 4
6228#define E4XSTORMETHCONNAGCTXDQEXTLDPART_ROCE_EDPM_ENABLE_MASK 0x1
6229#define E4XSTORMETHCONNAGCTXDQEXTLDPART_ROCE_EDPM_ENABLE_SHIFT 5
6230#define E4XSTORMETHCONNAGCTXDQEXTLDPART_TPH_ENABLE_MASK 0x3
6231#define E4XSTORMETHCONNAGCTXDQEXTLDPART_TPH_ENABLE_SHIFT 6
Mintz, Yuvalbe086e72017-03-11 18:39:18 +02006232 u8 edpm_event_id;
6233 __le16 physical_q0;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02006234 __le16 e5_reserved1;
Mintz, Yuvalbe086e72017-03-11 18:39:18 +02006235 __le16 edpm_num_bds;
6236 __le16 tx_bd_cons;
6237 __le16 tx_bd_prod;
Michal Kalderon50bc60c2018-03-28 11:42:16 +03006238 __le16 updated_qm_pq_id;
Mintz, Yuvalbe086e72017-03-11 18:39:18 +02006239 __le16 conn_dpi;
6240 u8 byte3;
6241 u8 byte4;
6242 u8 byte5;
6243 u8 byte6;
6244 __le32 reg0;
6245 __le32 reg1;
6246 __le32 reg2;
6247 __le32 reg3;
6248 __le32 reg4;
6249};
6250
Tomer Tayar21dd79e2017-12-27 19:30:06 +02006251struct e4_mstorm_eth_conn_ag_ctx {
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03006252 u8 byte0;
6253 u8 byte1;
6254 u8 flags0;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02006255#define E4_MSTORM_ETH_CONN_AG_CTX_EXIST_IN_QM0_MASK 0x1
6256#define E4_MSTORM_ETH_CONN_AG_CTX_EXIST_IN_QM0_SHIFT 0
6257#define E4_MSTORM_ETH_CONN_AG_CTX_BIT1_MASK 0x1
6258#define E4_MSTORM_ETH_CONN_AG_CTX_BIT1_SHIFT 1
6259#define E4_MSTORM_ETH_CONN_AG_CTX_CF0_MASK 0x3
6260#define E4_MSTORM_ETH_CONN_AG_CTX_CF0_SHIFT 2
6261#define E4_MSTORM_ETH_CONN_AG_CTX_CF1_MASK 0x3
6262#define E4_MSTORM_ETH_CONN_AG_CTX_CF1_SHIFT 4
6263#define E4_MSTORM_ETH_CONN_AG_CTX_CF2_MASK 0x3
6264#define E4_MSTORM_ETH_CONN_AG_CTX_CF2_SHIFT 6
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03006265 u8 flags1;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02006266#define E4_MSTORM_ETH_CONN_AG_CTX_CF0EN_MASK 0x1
6267#define E4_MSTORM_ETH_CONN_AG_CTX_CF0EN_SHIFT 0
6268#define E4_MSTORM_ETH_CONN_AG_CTX_CF1EN_MASK 0x1
6269#define E4_MSTORM_ETH_CONN_AG_CTX_CF1EN_SHIFT 1
6270#define E4_MSTORM_ETH_CONN_AG_CTX_CF2EN_MASK 0x1
6271#define E4_MSTORM_ETH_CONN_AG_CTX_CF2EN_SHIFT 2
6272#define E4_MSTORM_ETH_CONN_AG_CTX_RULE0EN_MASK 0x1
6273#define E4_MSTORM_ETH_CONN_AG_CTX_RULE0EN_SHIFT 3
6274#define E4_MSTORM_ETH_CONN_AG_CTX_RULE1EN_MASK 0x1
6275#define E4_MSTORM_ETH_CONN_AG_CTX_RULE1EN_SHIFT 4
6276#define E4_MSTORM_ETH_CONN_AG_CTX_RULE2EN_MASK 0x1
6277#define E4_MSTORM_ETH_CONN_AG_CTX_RULE2EN_SHIFT 5
6278#define E4_MSTORM_ETH_CONN_AG_CTX_RULE3EN_MASK 0x1
6279#define E4_MSTORM_ETH_CONN_AG_CTX_RULE3EN_SHIFT 6
6280#define E4_MSTORM_ETH_CONN_AG_CTX_RULE4EN_MASK 0x1
6281#define E4_MSTORM_ETH_CONN_AG_CTX_RULE4EN_SHIFT 7
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03006282 __le16 word0;
6283 __le16 word1;
6284 __le32 reg0;
6285 __le32 reg1;
6286};
6287
Tomer Tayar21dd79e2017-12-27 19:30:06 +02006288struct e4_xstorm_eth_hw_conn_ag_ctx {
Mintz, Yuvalbe086e72017-03-11 18:39:18 +02006289 u8 reserved0;
Tomer Tayarda090912017-12-27 19:30:07 +02006290 u8 state;
Mintz, Yuvalbe086e72017-03-11 18:39:18 +02006291 u8 flags0;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02006292#define E4_XSTORM_ETH_HW_CONN_AG_CTX_EXIST_IN_QM0_MASK 0x1
6293#define E4_XSTORM_ETH_HW_CONN_AG_CTX_EXIST_IN_QM0_SHIFT 0
6294#define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED1_MASK 0x1
6295#define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED1_SHIFT 1
6296#define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED2_MASK 0x1
6297#define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED2_SHIFT 2
6298#define E4_XSTORM_ETH_HW_CONN_AG_CTX_EXIST_IN_QM3_MASK 0x1
6299#define E4_XSTORM_ETH_HW_CONN_AG_CTX_EXIST_IN_QM3_SHIFT 3
6300#define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED3_MASK 0x1
6301#define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED3_SHIFT 4
6302#define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED4_MASK 0x1
6303#define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED4_SHIFT 5
6304#define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED5_MASK 0x1
6305#define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED5_SHIFT 6
6306#define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED6_MASK 0x1
6307#define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED6_SHIFT 7
Mintz, Yuvalbe086e72017-03-11 18:39:18 +02006308 u8 flags1;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02006309#define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED7_MASK 0x1
6310#define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED7_SHIFT 0
6311#define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED8_MASK 0x1
6312#define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED8_SHIFT 1
6313#define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED9_MASK 0x1
6314#define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED9_SHIFT 2
6315#define E4_XSTORM_ETH_HW_CONN_AG_CTX_BIT11_MASK 0x1
6316#define E4_XSTORM_ETH_HW_CONN_AG_CTX_BIT11_SHIFT 3
Tomer Tayarda090912017-12-27 19:30:07 +02006317#define E4_XSTORM_ETH_HW_CONN_AG_CTX_E5_RESERVED2_MASK 0x1
6318#define E4_XSTORM_ETH_HW_CONN_AG_CTX_E5_RESERVED2_SHIFT 4
6319#define E4_XSTORM_ETH_HW_CONN_AG_CTX_E5_RESERVED3_MASK 0x1
6320#define E4_XSTORM_ETH_HW_CONN_AG_CTX_E5_RESERVED3_SHIFT 5
Tomer Tayar21dd79e2017-12-27 19:30:06 +02006321#define E4_XSTORM_ETH_HW_CONN_AG_CTX_TX_RULE_ACTIVE_MASK 0x1
6322#define E4_XSTORM_ETH_HW_CONN_AG_CTX_TX_RULE_ACTIVE_SHIFT 6
6323#define E4_XSTORM_ETH_HW_CONN_AG_CTX_DQ_CF_ACTIVE_MASK 0x1
6324#define E4_XSTORM_ETH_HW_CONN_AG_CTX_DQ_CF_ACTIVE_SHIFT 7
Mintz, Yuvalbe086e72017-03-11 18:39:18 +02006325 u8 flags2;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02006326#define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF0_MASK 0x3
6327#define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF0_SHIFT 0
6328#define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF1_MASK 0x3
6329#define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF1_SHIFT 2
6330#define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF2_MASK 0x3
6331#define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF2_SHIFT 4
6332#define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF3_MASK 0x3
6333#define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF3_SHIFT 6
Mintz, Yuvalbe086e72017-03-11 18:39:18 +02006334 u8 flags3;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02006335#define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF4_MASK 0x3
6336#define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF4_SHIFT 0
6337#define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF5_MASK 0x3
6338#define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF5_SHIFT 2
6339#define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF6_MASK 0x3
6340#define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF6_SHIFT 4
6341#define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF7_MASK 0x3
6342#define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF7_SHIFT 6
Mintz, Yuvalbe086e72017-03-11 18:39:18 +02006343 u8 flags4;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02006344#define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF8_MASK 0x3
6345#define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF8_SHIFT 0
6346#define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF9_MASK 0x3
6347#define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF9_SHIFT 2
6348#define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF10_MASK 0x3
6349#define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF10_SHIFT 4
6350#define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF11_MASK 0x3
6351#define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF11_SHIFT 6
Mintz, Yuvalbe086e72017-03-11 18:39:18 +02006352 u8 flags5;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02006353#define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF12_MASK 0x3
6354#define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF12_SHIFT 0
6355#define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF13_MASK 0x3
6356#define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF13_SHIFT 2
6357#define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF14_MASK 0x3
6358#define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF14_SHIFT 4
6359#define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF15_MASK 0x3
6360#define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF15_SHIFT 6
Mintz, Yuvalbe086e72017-03-11 18:39:18 +02006361 u8 flags6;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02006362#define E4_XSTORM_ETH_HW_CONN_AG_CTX_GO_TO_BD_CONS_CF_MASK 0x3
6363#define E4_XSTORM_ETH_HW_CONN_AG_CTX_GO_TO_BD_CONS_CF_SHIFT 0
6364#define E4_XSTORM_ETH_HW_CONN_AG_CTX_MULTI_UNICAST_CF_MASK 0x3
6365#define E4_XSTORM_ETH_HW_CONN_AG_CTX_MULTI_UNICAST_CF_SHIFT 2
6366#define E4_XSTORM_ETH_HW_CONN_AG_CTX_DQ_CF_MASK 0x3
6367#define E4_XSTORM_ETH_HW_CONN_AG_CTX_DQ_CF_SHIFT 4
6368#define E4_XSTORM_ETH_HW_CONN_AG_CTX_TERMINATE_CF_MASK 0x3
6369#define E4_XSTORM_ETH_HW_CONN_AG_CTX_TERMINATE_CF_SHIFT 6
Mintz, Yuvalbe086e72017-03-11 18:39:18 +02006370 u8 flags7;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02006371#define E4_XSTORM_ETH_HW_CONN_AG_CTX_FLUSH_Q0_MASK 0x3
6372#define E4_XSTORM_ETH_HW_CONN_AG_CTX_FLUSH_Q0_SHIFT 0
6373#define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED10_MASK 0x3
6374#define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED10_SHIFT 2
6375#define E4_XSTORM_ETH_HW_CONN_AG_CTX_SLOW_PATH_MASK 0x3
6376#define E4_XSTORM_ETH_HW_CONN_AG_CTX_SLOW_PATH_SHIFT 4
6377#define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF0EN_MASK 0x1
6378#define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF0EN_SHIFT 6
6379#define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF1EN_MASK 0x1
6380#define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF1EN_SHIFT 7
Mintz, Yuvalbe086e72017-03-11 18:39:18 +02006381 u8 flags8;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02006382#define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF2EN_MASK 0x1
6383#define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF2EN_SHIFT 0
6384#define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF3EN_MASK 0x1
6385#define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF3EN_SHIFT 1
6386#define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF4EN_MASK 0x1
6387#define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF4EN_SHIFT 2
6388#define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF5EN_MASK 0x1
6389#define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF5EN_SHIFT 3
6390#define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF6EN_MASK 0x1
6391#define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF6EN_SHIFT 4
6392#define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF7EN_MASK 0x1
6393#define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF7EN_SHIFT 5
6394#define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF8EN_MASK 0x1
6395#define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF8EN_SHIFT 6
6396#define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF9EN_MASK 0x1
6397#define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF9EN_SHIFT 7
Mintz, Yuvalbe086e72017-03-11 18:39:18 +02006398 u8 flags9;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02006399#define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF10EN_MASK 0x1
6400#define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF10EN_SHIFT 0
6401#define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF11EN_MASK 0x1
6402#define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF11EN_SHIFT 1
6403#define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF12EN_MASK 0x1
6404#define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF12EN_SHIFT 2
6405#define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF13EN_MASK 0x1
6406#define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF13EN_SHIFT 3
6407#define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF14EN_MASK 0x1
6408#define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF14EN_SHIFT 4
6409#define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF15EN_MASK 0x1
6410#define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF15EN_SHIFT 5
6411#define E4_XSTORM_ETH_HW_CONN_AG_CTX_GO_TO_BD_CONS_CF_EN_MASK 0x1
6412#define E4_XSTORM_ETH_HW_CONN_AG_CTX_GO_TO_BD_CONS_CF_EN_SHIFT 6
6413#define E4_XSTORM_ETH_HW_CONN_AG_CTX_MULTI_UNICAST_CF_EN_MASK 0x1
6414#define E4_XSTORM_ETH_HW_CONN_AG_CTX_MULTI_UNICAST_CF_EN_SHIFT 7
Mintz, Yuvalbe086e72017-03-11 18:39:18 +02006415 u8 flags10;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02006416#define E4_XSTORM_ETH_HW_CONN_AG_CTX_DQ_CF_EN_MASK 0x1
6417#define E4_XSTORM_ETH_HW_CONN_AG_CTX_DQ_CF_EN_SHIFT 0
6418#define E4_XSTORM_ETH_HW_CONN_AG_CTX_TERMINATE_CF_EN_MASK 0x1
6419#define E4_XSTORM_ETH_HW_CONN_AG_CTX_TERMINATE_CF_EN_SHIFT 1
6420#define E4_XSTORM_ETH_HW_CONN_AG_CTX_FLUSH_Q0_EN_MASK 0x1
6421#define E4_XSTORM_ETH_HW_CONN_AG_CTX_FLUSH_Q0_EN_SHIFT 2
6422#define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED11_MASK 0x1
6423#define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED11_SHIFT 3
6424#define E4_XSTORM_ETH_HW_CONN_AG_CTX_SLOW_PATH_EN_MASK 0x1
6425#define E4_XSTORM_ETH_HW_CONN_AG_CTX_SLOW_PATH_EN_SHIFT 4
6426#define E4_XSTORM_ETH_HW_CONN_AG_CTX_TPH_ENABLE_EN_RESERVED_MASK 0x1
6427#define E4_XSTORM_ETH_HW_CONN_AG_CTX_TPH_ENABLE_EN_RESERVED_SHIFT 5
6428#define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED12_MASK 0x1
6429#define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED12_SHIFT 6
6430#define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED13_MASK 0x1
6431#define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED13_SHIFT 7
Mintz, Yuvalbe086e72017-03-11 18:39:18 +02006432 u8 flags11;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02006433#define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED14_MASK 0x1
6434#define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED14_SHIFT 0
6435#define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED15_MASK 0x1
6436#define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED15_SHIFT 1
6437#define E4_XSTORM_ETH_HW_CONN_AG_CTX_TX_DEC_RULE_EN_MASK 0x1
6438#define E4_XSTORM_ETH_HW_CONN_AG_CTX_TX_DEC_RULE_EN_SHIFT 2
6439#define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE5EN_MASK 0x1
6440#define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE5EN_SHIFT 3
6441#define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE6EN_MASK 0x1
6442#define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE6EN_SHIFT 4
6443#define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE7EN_MASK 0x1
6444#define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE7EN_SHIFT 5
6445#define E4_XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED1_MASK 0x1
6446#define E4_XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED1_SHIFT 6
6447#define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE9EN_MASK 0x1
6448#define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE9EN_SHIFT 7
Mintz, Yuvalbe086e72017-03-11 18:39:18 +02006449 u8 flags12;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02006450#define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE10EN_MASK 0x1
6451#define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE10EN_SHIFT 0
6452#define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE11EN_MASK 0x1
6453#define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE11EN_SHIFT 1
6454#define E4_XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED2_MASK 0x1
6455#define E4_XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED2_SHIFT 2
6456#define E4_XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED3_MASK 0x1
6457#define E4_XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED3_SHIFT 3
6458#define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE14EN_MASK 0x1
6459#define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE14EN_SHIFT 4
6460#define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE15EN_MASK 0x1
6461#define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE15EN_SHIFT 5
6462#define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE16EN_MASK 0x1
6463#define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE16EN_SHIFT 6
6464#define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE17EN_MASK 0x1
6465#define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE17EN_SHIFT 7
Mintz, Yuvalbe086e72017-03-11 18:39:18 +02006466 u8 flags13;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02006467#define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE18EN_MASK 0x1
6468#define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE18EN_SHIFT 0
6469#define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE19EN_MASK 0x1
6470#define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE19EN_SHIFT 1
6471#define E4_XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED4_MASK 0x1
6472#define E4_XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED4_SHIFT 2
6473#define E4_XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED5_MASK 0x1
6474#define E4_XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED5_SHIFT 3
6475#define E4_XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED6_MASK 0x1
6476#define E4_XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED6_SHIFT 4
6477#define E4_XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED7_MASK 0x1
6478#define E4_XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED7_SHIFT 5
6479#define E4_XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED8_MASK 0x1
6480#define E4_XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED8_SHIFT 6
6481#define E4_XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED9_MASK 0x1
6482#define E4_XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED9_SHIFT 7
Mintz, Yuvalbe086e72017-03-11 18:39:18 +02006483 u8 flags14;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02006484#define E4_XSTORM_ETH_HW_CONN_AG_CTX_EDPM_USE_EXT_HDR_MASK 0x1
6485#define E4_XSTORM_ETH_HW_CONN_AG_CTX_EDPM_USE_EXT_HDR_SHIFT 0
6486#define E4_XSTORM_ETH_HW_CONN_AG_CTX_EDPM_SEND_RAW_L3L4_MASK 0x1
6487#define E4_XSTORM_ETH_HW_CONN_AG_CTX_EDPM_SEND_RAW_L3L4_SHIFT 1
6488#define E4_XSTORM_ETH_HW_CONN_AG_CTX_EDPM_INBAND_PROP_HDR_MASK 0x1
6489#define E4_XSTORM_ETH_HW_CONN_AG_CTX_EDPM_INBAND_PROP_HDR_SHIFT 2
6490#define E4_XSTORM_ETH_HW_CONN_AG_CTX_EDPM_SEND_EXT_TUNNEL_MASK 0x1
6491#define E4_XSTORM_ETH_HW_CONN_AG_CTX_EDPM_SEND_EXT_TUNNEL_SHIFT 3
6492#define E4_XSTORM_ETH_HW_CONN_AG_CTX_L2_EDPM_ENABLE_MASK 0x1
6493#define E4_XSTORM_ETH_HW_CONN_AG_CTX_L2_EDPM_ENABLE_SHIFT 4
6494#define E4_XSTORM_ETH_HW_CONN_AG_CTX_ROCE_EDPM_ENABLE_MASK 0x1
6495#define E4_XSTORM_ETH_HW_CONN_AG_CTX_ROCE_EDPM_ENABLE_SHIFT 5
6496#define E4_XSTORM_ETH_HW_CONN_AG_CTX_TPH_ENABLE_MASK 0x3
6497#define E4_XSTORM_ETH_HW_CONN_AG_CTX_TPH_ENABLE_SHIFT 6
Mintz, Yuvalbe086e72017-03-11 18:39:18 +02006498 u8 edpm_event_id;
6499 __le16 physical_q0;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02006500 __le16 e5_reserved1;
Mintz, Yuvalbe086e72017-03-11 18:39:18 +02006501 __le16 edpm_num_bds;
6502 __le16 tx_bd_cons;
6503 __le16 tx_bd_prod;
Michal Kalderon50bc60c2018-03-28 11:42:16 +03006504 __le16 updated_qm_pq_id;
Mintz, Yuvalbe086e72017-03-11 18:39:18 +02006505 __le16 conn_dpi;
6506};
6507
Tomer Tayara2e76992017-12-27 19:30:05 +02006508/* GFT CAM line struct */
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03006509struct gft_cam_line {
6510 __le32 camline;
6511#define GFT_CAM_LINE_VALID_MASK 0x1
6512#define GFT_CAM_LINE_VALID_SHIFT 0
6513#define GFT_CAM_LINE_DATA_MASK 0x3FFF
6514#define GFT_CAM_LINE_DATA_SHIFT 1
6515#define GFT_CAM_LINE_MASK_BITS_MASK 0x3FFF
6516#define GFT_CAM_LINE_MASK_BITS_SHIFT 15
6517#define GFT_CAM_LINE_RESERVED1_MASK 0x7
6518#define GFT_CAM_LINE_RESERVED1_SHIFT 29
6519};
6520
Tomer Tayara2e76992017-12-27 19:30:05 +02006521/* GFT CAM line struct with fields breakout */
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03006522struct gft_cam_line_mapped {
6523 __le32 camline;
6524#define GFT_CAM_LINE_MAPPED_VALID_MASK 0x1
6525#define GFT_CAM_LINE_MAPPED_VALID_SHIFT 0
6526#define GFT_CAM_LINE_MAPPED_IP_VERSION_MASK 0x1
6527#define GFT_CAM_LINE_MAPPED_IP_VERSION_SHIFT 1
6528#define GFT_CAM_LINE_MAPPED_TUNNEL_IP_VERSION_MASK 0x1
6529#define GFT_CAM_LINE_MAPPED_TUNNEL_IP_VERSION_SHIFT 2
6530#define GFT_CAM_LINE_MAPPED_UPPER_PROTOCOL_TYPE_MASK 0xF
6531#define GFT_CAM_LINE_MAPPED_UPPER_PROTOCOL_TYPE_SHIFT 3
6532#define GFT_CAM_LINE_MAPPED_TUNNEL_TYPE_MASK 0xF
6533#define GFT_CAM_LINE_MAPPED_TUNNEL_TYPE_SHIFT 7
6534#define GFT_CAM_LINE_MAPPED_PF_ID_MASK 0xF
6535#define GFT_CAM_LINE_MAPPED_PF_ID_SHIFT 11
6536#define GFT_CAM_LINE_MAPPED_IP_VERSION_MASK_MASK 0x1
6537#define GFT_CAM_LINE_MAPPED_IP_VERSION_MASK_SHIFT 15
6538#define GFT_CAM_LINE_MAPPED_TUNNEL_IP_VERSION_MASK_MASK 0x1
6539#define GFT_CAM_LINE_MAPPED_TUNNEL_IP_VERSION_MASK_SHIFT 16
6540#define GFT_CAM_LINE_MAPPED_UPPER_PROTOCOL_TYPE_MASK_MASK 0xF
6541#define GFT_CAM_LINE_MAPPED_UPPER_PROTOCOL_TYPE_MASK_SHIFT 17
6542#define GFT_CAM_LINE_MAPPED_TUNNEL_TYPE_MASK_MASK 0xF
6543#define GFT_CAM_LINE_MAPPED_TUNNEL_TYPE_MASK_SHIFT 21
6544#define GFT_CAM_LINE_MAPPED_PF_ID_MASK_MASK 0xF
6545#define GFT_CAM_LINE_MAPPED_PF_ID_MASK_SHIFT 25
6546#define GFT_CAM_LINE_MAPPED_RESERVED1_MASK 0x7
6547#define GFT_CAM_LINE_MAPPED_RESERVED1_SHIFT 29
6548};
6549
6550union gft_cam_line_union {
6551 struct gft_cam_line cam_line;
6552 struct gft_cam_line_mapped cam_line_mapped;
6553};
6554
Tomer Tayara2e76992017-12-27 19:30:05 +02006555/* Used in gft_profile_key: Indication for ip version */
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03006556enum gft_profile_ip_version {
6557 GFT_PROFILE_IPV4 = 0,
6558 GFT_PROFILE_IPV6 = 1,
6559 MAX_GFT_PROFILE_IP_VERSION
6560};
6561
Tomer Tayara2e76992017-12-27 19:30:05 +02006562/* Profile key stucr fot GFT logic in Prs */
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03006563struct gft_profile_key {
6564 __le16 profile_key;
Tomer Tayara2e76992017-12-27 19:30:05 +02006565#define GFT_PROFILE_KEY_IP_VERSION_MASK 0x1
6566#define GFT_PROFILE_KEY_IP_VERSION_SHIFT 0
6567#define GFT_PROFILE_KEY_TUNNEL_IP_VERSION_MASK 0x1
6568#define GFT_PROFILE_KEY_TUNNEL_IP_VERSION_SHIFT 1
6569#define GFT_PROFILE_KEY_UPPER_PROTOCOL_TYPE_MASK 0xF
6570#define GFT_PROFILE_KEY_UPPER_PROTOCOL_TYPE_SHIFT 2
6571#define GFT_PROFILE_KEY_TUNNEL_TYPE_MASK 0xF
6572#define GFT_PROFILE_KEY_TUNNEL_TYPE_SHIFT 6
6573#define GFT_PROFILE_KEY_PF_ID_MASK 0xF
6574#define GFT_PROFILE_KEY_PF_ID_SHIFT 10
6575#define GFT_PROFILE_KEY_RESERVED0_MASK 0x3
6576#define GFT_PROFILE_KEY_RESERVED0_SHIFT 14
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03006577};
6578
Tomer Tayara2e76992017-12-27 19:30:05 +02006579/* Used in gft_profile_key: Indication for tunnel type */
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03006580enum gft_profile_tunnel_type {
6581 GFT_PROFILE_NO_TUNNEL = 0,
6582 GFT_PROFILE_VXLAN_TUNNEL = 1,
6583 GFT_PROFILE_GRE_MAC_OR_NVGRE_TUNNEL = 2,
6584 GFT_PROFILE_GRE_IP_TUNNEL = 3,
6585 GFT_PROFILE_GENEVE_MAC_TUNNEL = 4,
6586 GFT_PROFILE_GENEVE_IP_TUNNEL = 5,
6587 MAX_GFT_PROFILE_TUNNEL_TYPE
6588};
6589
Tomer Tayara2e76992017-12-27 19:30:05 +02006590/* Used in gft_profile_key: Indication for protocol type */
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03006591enum gft_profile_upper_protocol_type {
6592 GFT_PROFILE_ROCE_PROTOCOL = 0,
6593 GFT_PROFILE_RROCE_PROTOCOL = 1,
6594 GFT_PROFILE_FCOE_PROTOCOL = 2,
6595 GFT_PROFILE_ICMP_PROTOCOL = 3,
6596 GFT_PROFILE_ARP_PROTOCOL = 4,
6597 GFT_PROFILE_USER_TCP_SRC_PORT_1_INNER = 5,
6598 GFT_PROFILE_USER_TCP_DST_PORT_1_INNER = 6,
6599 GFT_PROFILE_TCP_PROTOCOL = 7,
6600 GFT_PROFILE_USER_UDP_DST_PORT_1_INNER = 8,
6601 GFT_PROFILE_USER_UDP_DST_PORT_2_OUTER = 9,
6602 GFT_PROFILE_UDP_PROTOCOL = 10,
6603 GFT_PROFILE_USER_IP_1_INNER = 11,
6604 GFT_PROFILE_USER_IP_2_OUTER = 12,
6605 GFT_PROFILE_USER_ETH_1_INNER = 13,
6606 GFT_PROFILE_USER_ETH_2_OUTER = 14,
6607 GFT_PROFILE_RAW = 15,
6608 MAX_GFT_PROFILE_UPPER_PROTOCOL_TYPE
6609};
6610
Tomer Tayara2e76992017-12-27 19:30:05 +02006611/* GFT RAM line struct */
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03006612struct gft_ram_line {
6613 __le32 lo;
6614#define GFT_RAM_LINE_VLAN_SELECT_MASK 0x3
6615#define GFT_RAM_LINE_VLAN_SELECT_SHIFT 0
6616#define GFT_RAM_LINE_TUNNEL_ENTROPHY_MASK 0x1
6617#define GFT_RAM_LINE_TUNNEL_ENTROPHY_SHIFT 2
6618#define GFT_RAM_LINE_TUNNEL_TTL_EQUAL_ONE_MASK 0x1
6619#define GFT_RAM_LINE_TUNNEL_TTL_EQUAL_ONE_SHIFT 3
6620#define GFT_RAM_LINE_TUNNEL_TTL_MASK 0x1
6621#define GFT_RAM_LINE_TUNNEL_TTL_SHIFT 4
6622#define GFT_RAM_LINE_TUNNEL_ETHERTYPE_MASK 0x1
6623#define GFT_RAM_LINE_TUNNEL_ETHERTYPE_SHIFT 5
6624#define GFT_RAM_LINE_TUNNEL_DST_PORT_MASK 0x1
6625#define GFT_RAM_LINE_TUNNEL_DST_PORT_SHIFT 6
6626#define GFT_RAM_LINE_TUNNEL_SRC_PORT_MASK 0x1
6627#define GFT_RAM_LINE_TUNNEL_SRC_PORT_SHIFT 7
6628#define GFT_RAM_LINE_TUNNEL_DSCP_MASK 0x1
6629#define GFT_RAM_LINE_TUNNEL_DSCP_SHIFT 8
6630#define GFT_RAM_LINE_TUNNEL_OVER_IP_PROTOCOL_MASK 0x1
6631#define GFT_RAM_LINE_TUNNEL_OVER_IP_PROTOCOL_SHIFT 9
6632#define GFT_RAM_LINE_TUNNEL_DST_IP_MASK 0x1
6633#define GFT_RAM_LINE_TUNNEL_DST_IP_SHIFT 10
6634#define GFT_RAM_LINE_TUNNEL_SRC_IP_MASK 0x1
6635#define GFT_RAM_LINE_TUNNEL_SRC_IP_SHIFT 11
6636#define GFT_RAM_LINE_TUNNEL_PRIORITY_MASK 0x1
6637#define GFT_RAM_LINE_TUNNEL_PRIORITY_SHIFT 12
6638#define GFT_RAM_LINE_TUNNEL_PROVIDER_VLAN_MASK 0x1
6639#define GFT_RAM_LINE_TUNNEL_PROVIDER_VLAN_SHIFT 13
6640#define GFT_RAM_LINE_TUNNEL_VLAN_MASK 0x1
6641#define GFT_RAM_LINE_TUNNEL_VLAN_SHIFT 14
6642#define GFT_RAM_LINE_TUNNEL_DST_MAC_MASK 0x1
6643#define GFT_RAM_LINE_TUNNEL_DST_MAC_SHIFT 15
6644#define GFT_RAM_LINE_TUNNEL_SRC_MAC_MASK 0x1
6645#define GFT_RAM_LINE_TUNNEL_SRC_MAC_SHIFT 16
6646#define GFT_RAM_LINE_TTL_EQUAL_ONE_MASK 0x1
6647#define GFT_RAM_LINE_TTL_EQUAL_ONE_SHIFT 17
6648#define GFT_RAM_LINE_TTL_MASK 0x1
6649#define GFT_RAM_LINE_TTL_SHIFT 18
6650#define GFT_RAM_LINE_ETHERTYPE_MASK 0x1
6651#define GFT_RAM_LINE_ETHERTYPE_SHIFT 19
6652#define GFT_RAM_LINE_RESERVED0_MASK 0x1
6653#define GFT_RAM_LINE_RESERVED0_SHIFT 20
6654#define GFT_RAM_LINE_TCP_FLAG_FIN_MASK 0x1
6655#define GFT_RAM_LINE_TCP_FLAG_FIN_SHIFT 21
6656#define GFT_RAM_LINE_TCP_FLAG_SYN_MASK 0x1
6657#define GFT_RAM_LINE_TCP_FLAG_SYN_SHIFT 22
6658#define GFT_RAM_LINE_TCP_FLAG_RST_MASK 0x1
6659#define GFT_RAM_LINE_TCP_FLAG_RST_SHIFT 23
6660#define GFT_RAM_LINE_TCP_FLAG_PSH_MASK 0x1
6661#define GFT_RAM_LINE_TCP_FLAG_PSH_SHIFT 24
6662#define GFT_RAM_LINE_TCP_FLAG_ACK_MASK 0x1
6663#define GFT_RAM_LINE_TCP_FLAG_ACK_SHIFT 25
6664#define GFT_RAM_LINE_TCP_FLAG_URG_MASK 0x1
6665#define GFT_RAM_LINE_TCP_FLAG_URG_SHIFT 26
6666#define GFT_RAM_LINE_TCP_FLAG_ECE_MASK 0x1
6667#define GFT_RAM_LINE_TCP_FLAG_ECE_SHIFT 27
6668#define GFT_RAM_LINE_TCP_FLAG_CWR_MASK 0x1
6669#define GFT_RAM_LINE_TCP_FLAG_CWR_SHIFT 28
6670#define GFT_RAM_LINE_TCP_FLAG_NS_MASK 0x1
6671#define GFT_RAM_LINE_TCP_FLAG_NS_SHIFT 29
6672#define GFT_RAM_LINE_DST_PORT_MASK 0x1
6673#define GFT_RAM_LINE_DST_PORT_SHIFT 30
6674#define GFT_RAM_LINE_SRC_PORT_MASK 0x1
6675#define GFT_RAM_LINE_SRC_PORT_SHIFT 31
6676 __le32 hi;
6677#define GFT_RAM_LINE_DSCP_MASK 0x1
6678#define GFT_RAM_LINE_DSCP_SHIFT 0
6679#define GFT_RAM_LINE_OVER_IP_PROTOCOL_MASK 0x1
6680#define GFT_RAM_LINE_OVER_IP_PROTOCOL_SHIFT 1
6681#define GFT_RAM_LINE_DST_IP_MASK 0x1
6682#define GFT_RAM_LINE_DST_IP_SHIFT 2
6683#define GFT_RAM_LINE_SRC_IP_MASK 0x1
6684#define GFT_RAM_LINE_SRC_IP_SHIFT 3
6685#define GFT_RAM_LINE_PRIORITY_MASK 0x1
6686#define GFT_RAM_LINE_PRIORITY_SHIFT 4
6687#define GFT_RAM_LINE_PROVIDER_VLAN_MASK 0x1
6688#define GFT_RAM_LINE_PROVIDER_VLAN_SHIFT 5
6689#define GFT_RAM_LINE_VLAN_MASK 0x1
6690#define GFT_RAM_LINE_VLAN_SHIFT 6
6691#define GFT_RAM_LINE_DST_MAC_MASK 0x1
6692#define GFT_RAM_LINE_DST_MAC_SHIFT 7
6693#define GFT_RAM_LINE_SRC_MAC_MASK 0x1
6694#define GFT_RAM_LINE_SRC_MAC_SHIFT 8
6695#define GFT_RAM_LINE_TENANT_ID_MASK 0x1
6696#define GFT_RAM_LINE_TENANT_ID_SHIFT 9
6697#define GFT_RAM_LINE_RESERVED1_MASK 0x3FFFFF
6698#define GFT_RAM_LINE_RESERVED1_SHIFT 10
6699};
6700
Tomer Tayara2e76992017-12-27 19:30:05 +02006701/* Used in the first 2 bits for gft_ram_line: Indication for vlan mask */
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03006702enum gft_vlan_select {
6703 INNER_PROVIDER_VLAN = 0,
6704 INNER_VLAN = 1,
6705 OUTER_PROVIDER_VLAN = 2,
6706 OUTER_VLAN = 3,
6707 MAX_GFT_VLAN_SELECT
6708};
6709
Tomer Tayara2e76992017-12-27 19:30:05 +02006710/* The rdma task context of Mstorm */
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03006711struct ystorm_rdma_task_st_ctx {
6712 struct regpair temp[4];
6713};
6714
Tomer Tayar21dd79e2017-12-27 19:30:06 +02006715struct e4_ystorm_rdma_task_ag_ctx {
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03006716 u8 reserved;
6717 u8 byte1;
6718 __le16 msem_ctx_upd_seq;
6719 u8 flags0;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02006720#define E4_YSTORM_RDMA_TASK_AG_CTX_CONNECTION_TYPE_MASK 0xF
6721#define E4_YSTORM_RDMA_TASK_AG_CTX_CONNECTION_TYPE_SHIFT 0
6722#define E4_YSTORM_RDMA_TASK_AG_CTX_EXIST_IN_QM0_MASK 0x1
6723#define E4_YSTORM_RDMA_TASK_AG_CTX_EXIST_IN_QM0_SHIFT 4
6724#define E4_YSTORM_RDMA_TASK_AG_CTX_BIT1_MASK 0x1
6725#define E4_YSTORM_RDMA_TASK_AG_CTX_BIT1_SHIFT 5
6726#define E4_YSTORM_RDMA_TASK_AG_CTX_VALID_MASK 0x1
6727#define E4_YSTORM_RDMA_TASK_AG_CTX_VALID_SHIFT 6
Michal Kalderon50bc60c2018-03-28 11:42:16 +03006728#define E4_YSTORM_RDMA_TASK_AG_CTX_DIF_FIRST_IO_MASK 0x1
6729#define E4_YSTORM_RDMA_TASK_AG_CTX_DIF_FIRST_IO_SHIFT 7
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03006730 u8 flags1;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02006731#define E4_YSTORM_RDMA_TASK_AG_CTX_CF0_MASK 0x3
6732#define E4_YSTORM_RDMA_TASK_AG_CTX_CF0_SHIFT 0
6733#define E4_YSTORM_RDMA_TASK_AG_CTX_CF1_MASK 0x3
6734#define E4_YSTORM_RDMA_TASK_AG_CTX_CF1_SHIFT 2
6735#define E4_YSTORM_RDMA_TASK_AG_CTX_CF2SPECIAL_MASK 0x3
6736#define E4_YSTORM_RDMA_TASK_AG_CTX_CF2SPECIAL_SHIFT 4
6737#define E4_YSTORM_RDMA_TASK_AG_CTX_CF0EN_MASK 0x1
6738#define E4_YSTORM_RDMA_TASK_AG_CTX_CF0EN_SHIFT 6
6739#define E4_YSTORM_RDMA_TASK_AG_CTX_CF1EN_MASK 0x1
6740#define E4_YSTORM_RDMA_TASK_AG_CTX_CF1EN_SHIFT 7
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03006741 u8 flags2;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02006742#define E4_YSTORM_RDMA_TASK_AG_CTX_BIT4_MASK 0x1
6743#define E4_YSTORM_RDMA_TASK_AG_CTX_BIT4_SHIFT 0
6744#define E4_YSTORM_RDMA_TASK_AG_CTX_RULE0EN_MASK 0x1
6745#define E4_YSTORM_RDMA_TASK_AG_CTX_RULE0EN_SHIFT 1
6746#define E4_YSTORM_RDMA_TASK_AG_CTX_RULE1EN_MASK 0x1
6747#define E4_YSTORM_RDMA_TASK_AG_CTX_RULE1EN_SHIFT 2
6748#define E4_YSTORM_RDMA_TASK_AG_CTX_RULE2EN_MASK 0x1
6749#define E4_YSTORM_RDMA_TASK_AG_CTX_RULE2EN_SHIFT 3
6750#define E4_YSTORM_RDMA_TASK_AG_CTX_RULE3EN_MASK 0x1
6751#define E4_YSTORM_RDMA_TASK_AG_CTX_RULE3EN_SHIFT 4
6752#define E4_YSTORM_RDMA_TASK_AG_CTX_RULE4EN_MASK 0x1
6753#define E4_YSTORM_RDMA_TASK_AG_CTX_RULE4EN_SHIFT 5
6754#define E4_YSTORM_RDMA_TASK_AG_CTX_RULE5EN_MASK 0x1
6755#define E4_YSTORM_RDMA_TASK_AG_CTX_RULE5EN_SHIFT 6
6756#define E4_YSTORM_RDMA_TASK_AG_CTX_RULE6EN_MASK 0x1
6757#define E4_YSTORM_RDMA_TASK_AG_CTX_RULE6EN_SHIFT 7
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03006758 u8 key;
6759 __le32 mw_cnt;
6760 u8 ref_cnt_seq;
6761 u8 ctx_upd_seq;
6762 __le16 dif_flags;
6763 __le16 tx_ref_count;
6764 __le16 last_used_ltid;
6765 __le16 parent_mr_lo;
6766 __le16 parent_mr_hi;
6767 __le32 fbo_lo;
6768 __le32 fbo_hi;
6769};
6770
Tomer Tayar21dd79e2017-12-27 19:30:06 +02006771struct e4_mstorm_rdma_task_ag_ctx {
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03006772 u8 reserved;
6773 u8 byte1;
6774 __le16 icid;
6775 u8 flags0;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02006776#define E4_MSTORM_RDMA_TASK_AG_CTX_CONNECTION_TYPE_MASK 0xF
6777#define E4_MSTORM_RDMA_TASK_AG_CTX_CONNECTION_TYPE_SHIFT 0
6778#define E4_MSTORM_RDMA_TASK_AG_CTX_EXIST_IN_QM0_MASK 0x1
6779#define E4_MSTORM_RDMA_TASK_AG_CTX_EXIST_IN_QM0_SHIFT 4
6780#define E4_MSTORM_RDMA_TASK_AG_CTX_BIT1_MASK 0x1
6781#define E4_MSTORM_RDMA_TASK_AG_CTX_BIT1_SHIFT 5
6782#define E4_MSTORM_RDMA_TASK_AG_CTX_BIT2_MASK 0x1
6783#define E4_MSTORM_RDMA_TASK_AG_CTX_BIT2_SHIFT 6
Michal Kalderon50bc60c2018-03-28 11:42:16 +03006784#define E4_MSTORM_RDMA_TASK_AG_CTX_DIF_FIRST_IO_MASK 0x1
6785#define E4_MSTORM_RDMA_TASK_AG_CTX_DIF_FIRST_IO_SHIFT 7
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03006786 u8 flags1;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02006787#define E4_MSTORM_RDMA_TASK_AG_CTX_CF0_MASK 0x3
6788#define E4_MSTORM_RDMA_TASK_AG_CTX_CF0_SHIFT 0
6789#define E4_MSTORM_RDMA_TASK_AG_CTX_CF1_MASK 0x3
6790#define E4_MSTORM_RDMA_TASK_AG_CTX_CF1_SHIFT 2
6791#define E4_MSTORM_RDMA_TASK_AG_CTX_CF2_MASK 0x3
6792#define E4_MSTORM_RDMA_TASK_AG_CTX_CF2_SHIFT 4
6793#define E4_MSTORM_RDMA_TASK_AG_CTX_CF0EN_MASK 0x1
6794#define E4_MSTORM_RDMA_TASK_AG_CTX_CF0EN_SHIFT 6
6795#define E4_MSTORM_RDMA_TASK_AG_CTX_CF1EN_MASK 0x1
6796#define E4_MSTORM_RDMA_TASK_AG_CTX_CF1EN_SHIFT 7
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03006797 u8 flags2;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02006798#define E4_MSTORM_RDMA_TASK_AG_CTX_CF2EN_MASK 0x1
6799#define E4_MSTORM_RDMA_TASK_AG_CTX_CF2EN_SHIFT 0
6800#define E4_MSTORM_RDMA_TASK_AG_CTX_RULE0EN_MASK 0x1
6801#define E4_MSTORM_RDMA_TASK_AG_CTX_RULE0EN_SHIFT 1
6802#define E4_MSTORM_RDMA_TASK_AG_CTX_RULE1EN_MASK 0x1
6803#define E4_MSTORM_RDMA_TASK_AG_CTX_RULE1EN_SHIFT 2
6804#define E4_MSTORM_RDMA_TASK_AG_CTX_RULE2EN_MASK 0x1
6805#define E4_MSTORM_RDMA_TASK_AG_CTX_RULE2EN_SHIFT 3
6806#define E4_MSTORM_RDMA_TASK_AG_CTX_RULE3EN_MASK 0x1
6807#define E4_MSTORM_RDMA_TASK_AG_CTX_RULE3EN_SHIFT 4
6808#define E4_MSTORM_RDMA_TASK_AG_CTX_RULE4EN_MASK 0x1
6809#define E4_MSTORM_RDMA_TASK_AG_CTX_RULE4EN_SHIFT 5
6810#define E4_MSTORM_RDMA_TASK_AG_CTX_RULE5EN_MASK 0x1
6811#define E4_MSTORM_RDMA_TASK_AG_CTX_RULE5EN_SHIFT 6
6812#define E4_MSTORM_RDMA_TASK_AG_CTX_RULE6EN_MASK 0x1
6813#define E4_MSTORM_RDMA_TASK_AG_CTX_RULE6EN_SHIFT 7
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03006814 u8 key;
6815 __le32 mw_cnt;
6816 u8 ref_cnt_seq;
6817 u8 ctx_upd_seq;
6818 __le16 dif_flags;
6819 __le16 tx_ref_count;
6820 __le16 last_used_ltid;
6821 __le16 parent_mr_lo;
6822 __le16 parent_mr_hi;
6823 __le32 fbo_lo;
6824 __le32 fbo_hi;
6825};
6826
Tomer Tayara2e76992017-12-27 19:30:05 +02006827/* The roce task context of Mstorm */
6828struct mstorm_rdma_task_st_ctx {
6829 struct regpair temp[4];
6830};
6831
6832/* The roce task context of Ustorm */
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03006833struct ustorm_rdma_task_st_ctx {
6834 struct regpair temp[2];
6835};
6836
Tomer Tayar21dd79e2017-12-27 19:30:06 +02006837struct e4_ustorm_rdma_task_ag_ctx {
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03006838 u8 reserved;
Michal Kalderon50bc60c2018-03-28 11:42:16 +03006839 u8 state;
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03006840 __le16 icid;
6841 u8 flags0;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02006842#define E4_USTORM_RDMA_TASK_AG_CTX_CONNECTION_TYPE_MASK 0xF
6843#define E4_USTORM_RDMA_TASK_AG_CTX_CONNECTION_TYPE_SHIFT 0
6844#define E4_USTORM_RDMA_TASK_AG_CTX_EXIST_IN_QM0_MASK 0x1
6845#define E4_USTORM_RDMA_TASK_AG_CTX_EXIST_IN_QM0_SHIFT 4
6846#define E4_USTORM_RDMA_TASK_AG_CTX_DIF_RUNT_VALID_MASK 0x1
6847#define E4_USTORM_RDMA_TASK_AG_CTX_DIF_RUNT_VALID_SHIFT 5
6848#define E4_USTORM_RDMA_TASK_AG_CTX_DIF_WRITE_RESULT_CF_MASK 0x3
6849#define E4_USTORM_RDMA_TASK_AG_CTX_DIF_WRITE_RESULT_CF_SHIFT 6
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03006850 u8 flags1;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02006851#define E4_USTORM_RDMA_TASK_AG_CTX_DIF_RESULT_TOGGLE_BIT_MASK 0x3
6852#define E4_USTORM_RDMA_TASK_AG_CTX_DIF_RESULT_TOGGLE_BIT_SHIFT 0
6853#define E4_USTORM_RDMA_TASK_AG_CTX_DIF_TX_IO_FLG_MASK 0x3
6854#define E4_USTORM_RDMA_TASK_AG_CTX_DIF_TX_IO_FLG_SHIFT 2
Michal Kalderon50bc60c2018-03-28 11:42:16 +03006855#define E4_USTORM_RDMA_TASK_AG_CTX_DIF_BLOCK_SIZE_MASK 0x3
6856#define E4_USTORM_RDMA_TASK_AG_CTX_DIF_BLOCK_SIZE_SHIFT 4
Tomer Tayar21dd79e2017-12-27 19:30:06 +02006857#define E4_USTORM_RDMA_TASK_AG_CTX_DIF_ERROR_CF_MASK 0x3
6858#define E4_USTORM_RDMA_TASK_AG_CTX_DIF_ERROR_CF_SHIFT 6
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03006859 u8 flags2;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02006860#define E4_USTORM_RDMA_TASK_AG_CTX_DIF_WRITE_RESULT_CF_EN_MASK 0x1
6861#define E4_USTORM_RDMA_TASK_AG_CTX_DIF_WRITE_RESULT_CF_EN_SHIFT 0
6862#define E4_USTORM_RDMA_TASK_AG_CTX_RESERVED2_MASK 0x1
6863#define E4_USTORM_RDMA_TASK_AG_CTX_RESERVED2_SHIFT 1
6864#define E4_USTORM_RDMA_TASK_AG_CTX_RESERVED3_MASK 0x1
6865#define E4_USTORM_RDMA_TASK_AG_CTX_RESERVED3_SHIFT 2
Michal Kalderon50bc60c2018-03-28 11:42:16 +03006866#define E4_USTORM_RDMA_TASK_AG_CTX_RESERVED4_MASK 0x1
6867#define E4_USTORM_RDMA_TASK_AG_CTX_RESERVED4_SHIFT 3
Tomer Tayar21dd79e2017-12-27 19:30:06 +02006868#define E4_USTORM_RDMA_TASK_AG_CTX_DIF_ERROR_CF_EN_MASK 0x1
6869#define E4_USTORM_RDMA_TASK_AG_CTX_DIF_ERROR_CF_EN_SHIFT 4
6870#define E4_USTORM_RDMA_TASK_AG_CTX_RULE0EN_MASK 0x1
6871#define E4_USTORM_RDMA_TASK_AG_CTX_RULE0EN_SHIFT 5
6872#define E4_USTORM_RDMA_TASK_AG_CTX_RULE1EN_MASK 0x1
6873#define E4_USTORM_RDMA_TASK_AG_CTX_RULE1EN_SHIFT 6
6874#define E4_USTORM_RDMA_TASK_AG_CTX_RULE2EN_MASK 0x1
6875#define E4_USTORM_RDMA_TASK_AG_CTX_RULE2EN_SHIFT 7
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03006876 u8 flags3;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02006877#define E4_USTORM_RDMA_TASK_AG_CTX_RULE3EN_MASK 0x1
6878#define E4_USTORM_RDMA_TASK_AG_CTX_RULE3EN_SHIFT 0
6879#define E4_USTORM_RDMA_TASK_AG_CTX_RULE4EN_MASK 0x1
6880#define E4_USTORM_RDMA_TASK_AG_CTX_RULE4EN_SHIFT 1
6881#define E4_USTORM_RDMA_TASK_AG_CTX_RULE5EN_MASK 0x1
6882#define E4_USTORM_RDMA_TASK_AG_CTX_RULE5EN_SHIFT 2
6883#define E4_USTORM_RDMA_TASK_AG_CTX_RULE6EN_MASK 0x1
6884#define E4_USTORM_RDMA_TASK_AG_CTX_RULE6EN_SHIFT 3
6885#define E4_USTORM_RDMA_TASK_AG_CTX_DIF_ERROR_TYPE_MASK 0xF
6886#define E4_USTORM_RDMA_TASK_AG_CTX_DIF_ERROR_TYPE_SHIFT 4
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03006887 __le32 dif_err_intervals;
6888 __le32 dif_error_1st_interval;
Michal Kalderon50bc60c2018-03-28 11:42:16 +03006889 __le32 sq_cons;
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03006890 __le32 dif_runt_value;
Michal Kalderon50bc60c2018-03-28 11:42:16 +03006891 __le32 sge_index;
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03006892 __le32 reg5;
Michal Kalderon50bc60c2018-03-28 11:42:16 +03006893 u8 byte2;
6894 u8 byte3;
6895 __le16 word1;
6896 __le16 word2;
6897 __le16 word3;
6898 __le32 reg6;
6899 __le32 reg7;
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03006900};
6901
Tomer Tayara2e76992017-12-27 19:30:05 +02006902/* RDMA task context */
Tomer Tayar21dd79e2017-12-27 19:30:06 +02006903struct e4_rdma_task_context {
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03006904 struct ystorm_rdma_task_st_ctx ystorm_st_context;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02006905 struct e4_ystorm_rdma_task_ag_ctx ystorm_ag_context;
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03006906 struct tdif_task_context tdif_context;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02006907 struct e4_mstorm_rdma_task_ag_ctx mstorm_ag_context;
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03006908 struct mstorm_rdma_task_st_ctx mstorm_st_context;
6909 struct rdif_task_context rdif_context;
6910 struct ustorm_rdma_task_st_ctx ustorm_st_context;
6911 struct regpair ustorm_st_padding[2];
Tomer Tayar21dd79e2017-12-27 19:30:06 +02006912 struct e4_ustorm_rdma_task_ag_ctx ustorm_ag_context;
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03006913};
6914
Tomer Tayara2e76992017-12-27 19:30:05 +02006915/* rdma function init ramrod data */
6916struct rdma_close_func_ramrod_data {
6917 u8 cnq_start_offset;
6918 u8 num_cnqs;
6919 u8 vf_id;
6920 u8 vf_valid;
6921 u8 reserved[4];
6922};
6923
6924/* rdma function init CNQ parameters */
6925struct rdma_cnq_params {
6926 __le16 sb_num;
6927 u8 sb_index;
6928 u8 num_pbl_pages;
6929 __le32 reserved;
6930 struct regpair pbl_base_addr;
6931 __le16 queue_zone_num;
6932 u8 reserved1[6];
6933};
6934
6935/* rdma create cq ramrod data */
6936struct rdma_create_cq_ramrod_data {
6937 struct regpair cq_handle;
6938 struct regpair pbl_addr;
6939 __le32 max_cqes;
6940 __le16 pbl_num_pages;
6941 __le16 dpi;
6942 u8 is_two_level_pbl;
6943 u8 cnq_id;
6944 u8 pbl_log_page_size;
6945 u8 toggle_bit;
6946 __le16 int_timeout;
6947 __le16 reserved1;
6948};
6949
6950/* rdma deregister tid ramrod data */
6951struct rdma_deregister_tid_ramrod_data {
6952 __le32 itid;
6953 __le32 reserved;
6954};
6955
6956/* rdma destroy cq output params */
6957struct rdma_destroy_cq_output_params {
6958 __le16 cnq_num;
6959 __le16 reserved0;
6960 __le32 reserved1;
6961};
6962
6963/* rdma destroy cq ramrod data */
6964struct rdma_destroy_cq_ramrod_data {
6965 struct regpair output_params_addr;
6966};
6967
6968/* RDMA slow path EQ cmd IDs */
6969enum rdma_event_opcode {
6970 RDMA_EVENT_UNUSED,
6971 RDMA_EVENT_FUNC_INIT,
6972 RDMA_EVENT_FUNC_CLOSE,
6973 RDMA_EVENT_REGISTER_MR,
6974 RDMA_EVENT_DEREGISTER_MR,
6975 RDMA_EVENT_CREATE_CQ,
6976 RDMA_EVENT_RESIZE_CQ,
6977 RDMA_EVENT_DESTROY_CQ,
6978 RDMA_EVENT_CREATE_SRQ,
6979 RDMA_EVENT_MODIFY_SRQ,
6980 RDMA_EVENT_DESTROY_SRQ,
6981 MAX_RDMA_EVENT_OPCODE
6982};
6983
6984/* RDMA FW return code for slow path ramrods */
6985enum rdma_fw_return_code {
6986 RDMA_RETURN_OK = 0,
6987 RDMA_RETURN_REGISTER_MR_BAD_STATE_ERR,
6988 RDMA_RETURN_DEREGISTER_MR_BAD_STATE_ERR,
6989 RDMA_RETURN_RESIZE_CQ_ERR,
6990 RDMA_RETURN_NIG_DRAIN_REQ,
6991 MAX_RDMA_FW_RETURN_CODE
6992};
6993
6994/* rdma function init header */
6995struct rdma_init_func_hdr {
6996 u8 cnq_start_offset;
6997 u8 num_cnqs;
6998 u8 cq_ring_mode;
6999 u8 vf_id;
7000 u8 vf_valid;
Tomer Tayarda090912017-12-27 19:30:07 +02007001 u8 relaxed_ordering;
Michal Kalderon50bc60c2018-03-28 11:42:16 +03007002 __le16 first_reg_srq_id;
7003 __le32 reg_srq_base_addr;
7004 __le32 reserved;
Tomer Tayara2e76992017-12-27 19:30:05 +02007005};
7006
7007/* rdma function init ramrod data */
7008struct rdma_init_func_ramrod_data {
7009 struct rdma_init_func_hdr params_header;
7010 struct rdma_cnq_params cnq_params[NUM_OF_GLOBAL_QUEUES];
7011};
7012
7013/* RDMA ramrod command IDs */
7014enum rdma_ramrod_cmd_id {
7015 RDMA_RAMROD_UNUSED,
7016 RDMA_RAMROD_FUNC_INIT,
7017 RDMA_RAMROD_FUNC_CLOSE,
7018 RDMA_RAMROD_REGISTER_MR,
7019 RDMA_RAMROD_DEREGISTER_MR,
7020 RDMA_RAMROD_CREATE_CQ,
7021 RDMA_RAMROD_RESIZE_CQ,
7022 RDMA_RAMROD_DESTROY_CQ,
7023 RDMA_RAMROD_CREATE_SRQ,
7024 RDMA_RAMROD_MODIFY_SRQ,
7025 RDMA_RAMROD_DESTROY_SRQ,
7026 MAX_RDMA_RAMROD_CMD_ID
7027};
7028
7029/* rdma register tid ramrod data */
7030struct rdma_register_tid_ramrod_data {
7031 __le16 flags;
7032#define RDMA_REGISTER_TID_RAMROD_DATA_PAGE_SIZE_LOG_MASK 0x1F
7033#define RDMA_REGISTER_TID_RAMROD_DATA_PAGE_SIZE_LOG_SHIFT 0
7034#define RDMA_REGISTER_TID_RAMROD_DATA_TWO_LEVEL_PBL_MASK 0x1
7035#define RDMA_REGISTER_TID_RAMROD_DATA_TWO_LEVEL_PBL_SHIFT 5
7036#define RDMA_REGISTER_TID_RAMROD_DATA_ZERO_BASED_MASK 0x1
7037#define RDMA_REGISTER_TID_RAMROD_DATA_ZERO_BASED_SHIFT 6
7038#define RDMA_REGISTER_TID_RAMROD_DATA_PHY_MR_MASK 0x1
7039#define RDMA_REGISTER_TID_RAMROD_DATA_PHY_MR_SHIFT 7
7040#define RDMA_REGISTER_TID_RAMROD_DATA_REMOTE_READ_MASK 0x1
7041#define RDMA_REGISTER_TID_RAMROD_DATA_REMOTE_READ_SHIFT 8
7042#define RDMA_REGISTER_TID_RAMROD_DATA_REMOTE_WRITE_MASK 0x1
7043#define RDMA_REGISTER_TID_RAMROD_DATA_REMOTE_WRITE_SHIFT 9
7044#define RDMA_REGISTER_TID_RAMROD_DATA_REMOTE_ATOMIC_MASK 0x1
7045#define RDMA_REGISTER_TID_RAMROD_DATA_REMOTE_ATOMIC_SHIFT 10
7046#define RDMA_REGISTER_TID_RAMROD_DATA_LOCAL_WRITE_MASK 0x1
7047#define RDMA_REGISTER_TID_RAMROD_DATA_LOCAL_WRITE_SHIFT 11
7048#define RDMA_REGISTER_TID_RAMROD_DATA_LOCAL_READ_MASK 0x1
7049#define RDMA_REGISTER_TID_RAMROD_DATA_LOCAL_READ_SHIFT 12
7050#define RDMA_REGISTER_TID_RAMROD_DATA_ENABLE_MW_BIND_MASK 0x1
7051#define RDMA_REGISTER_TID_RAMROD_DATA_ENABLE_MW_BIND_SHIFT 13
7052#define RDMA_REGISTER_TID_RAMROD_DATA_RESERVED_MASK 0x3
7053#define RDMA_REGISTER_TID_RAMROD_DATA_RESERVED_SHIFT 14
7054 u8 flags1;
7055#define RDMA_REGISTER_TID_RAMROD_DATA_PBL_PAGE_SIZE_LOG_MASK 0x1F
7056#define RDMA_REGISTER_TID_RAMROD_DATA_PBL_PAGE_SIZE_LOG_SHIFT 0
7057#define RDMA_REGISTER_TID_RAMROD_DATA_TID_TYPE_MASK 0x7
7058#define RDMA_REGISTER_TID_RAMROD_DATA_TID_TYPE_SHIFT 5
7059 u8 flags2;
7060#define RDMA_REGISTER_TID_RAMROD_DATA_DMA_MR_MASK 0x1
7061#define RDMA_REGISTER_TID_RAMROD_DATA_DMA_MR_SHIFT 0
7062#define RDMA_REGISTER_TID_RAMROD_DATA_DIF_ON_HOST_FLG_MASK 0x1
7063#define RDMA_REGISTER_TID_RAMROD_DATA_DIF_ON_HOST_FLG_SHIFT 1
7064#define RDMA_REGISTER_TID_RAMROD_DATA_RESERVED1_MASK 0x3F
7065#define RDMA_REGISTER_TID_RAMROD_DATA_RESERVED1_SHIFT 2
7066 u8 key;
7067 u8 length_hi;
7068 u8 vf_id;
7069 u8 vf_valid;
7070 __le16 pd;
7071 __le16 reserved2;
7072 __le32 length_lo;
7073 __le32 itid;
7074 __le32 reserved3;
7075 struct regpair va;
7076 struct regpair pbl_base;
7077 struct regpair dif_error_addr;
7078 struct regpair dif_runt_addr;
7079 __le32 reserved4[2];
7080};
7081
7082/* rdma resize cq output params */
7083struct rdma_resize_cq_output_params {
7084 __le32 old_cq_cons;
7085 __le32 old_cq_prod;
7086};
7087
7088/* rdma resize cq ramrod data */
7089struct rdma_resize_cq_ramrod_data {
7090 u8 flags;
7091#define RDMA_RESIZE_CQ_RAMROD_DATA_TOGGLE_BIT_MASK 0x1
7092#define RDMA_RESIZE_CQ_RAMROD_DATA_TOGGLE_BIT_SHIFT 0
7093#define RDMA_RESIZE_CQ_RAMROD_DATA_IS_TWO_LEVEL_PBL_MASK 0x1
7094#define RDMA_RESIZE_CQ_RAMROD_DATA_IS_TWO_LEVEL_PBL_SHIFT 1
7095#define RDMA_RESIZE_CQ_RAMROD_DATA_RESERVED_MASK 0x3F
7096#define RDMA_RESIZE_CQ_RAMROD_DATA_RESERVED_SHIFT 2
7097 u8 pbl_log_page_size;
7098 __le16 pbl_num_pages;
7099 __le32 max_cqes;
7100 struct regpair pbl_addr;
7101 struct regpair output_params_addr;
7102};
7103
7104/* The rdma storm context of Mstorm */
7105struct rdma_srq_context {
7106 struct regpair temp[8];
7107};
7108
7109/* rdma create qp requester ramrod data */
7110struct rdma_srq_create_ramrod_data {
Michal Kalderon50bc60c2018-03-28 11:42:16 +03007111 u8 flags;
7112#define RDMA_SRQ_CREATE_RAMROD_DATA_XRC_FLAG_MASK 0x1
7113#define RDMA_SRQ_CREATE_RAMROD_DATA_XRC_FLAG_SHIFT 0
7114#define RDMA_SRQ_CREATE_RAMROD_DATA_RESERVED_KEY_EN_MASK 0x1
7115#define RDMA_SRQ_CREATE_RAMROD_DATA_RESERVED_KEY_EN_SHIFT 1
7116#define RDMA_SRQ_CREATE_RAMROD_DATA_RESERVED1_MASK 0x3F
7117#define RDMA_SRQ_CREATE_RAMROD_DATA_RESERVED1_SHIFT 2
7118 u8 reserved2;
7119 __le16 xrc_domain;
7120 __le32 xrc_srq_cq_cid;
Tomer Tayara2e76992017-12-27 19:30:05 +02007121 struct regpair pbl_base_addr;
7122 __le16 pages_in_srq_pbl;
7123 __le16 pd_id;
7124 struct rdma_srq_id srq_id;
7125 __le16 page_size;
Michal Kalderon50bc60c2018-03-28 11:42:16 +03007126 __le16 reserved3;
7127 __le32 reserved4;
Tomer Tayara2e76992017-12-27 19:30:05 +02007128 struct regpair producers_addr;
7129};
7130
7131/* rdma create qp requester ramrod data */
7132struct rdma_srq_destroy_ramrod_data {
7133 struct rdma_srq_id srq_id;
7134 __le32 reserved;
7135};
7136
7137/* rdma create qp requester ramrod data */
7138struct rdma_srq_modify_ramrod_data {
7139 struct rdma_srq_id srq_id;
7140 __le32 wqe_limit;
7141};
7142
7143/* RDMA Tid type enumeration (for register_tid ramrod) */
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03007144enum rdma_tid_type {
7145 RDMA_TID_REGISTERED_MR,
7146 RDMA_TID_FMR,
7147 RDMA_TID_MW_TYPE1,
7148 RDMA_TID_MW_TYPE2A,
7149 MAX_RDMA_TID_TYPE
7150};
7151
Michal Kalderon50bc60c2018-03-28 11:42:16 +03007152struct rdma_xrc_srq_context {
7153 struct regpair temp[9];
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03007154};
7155
Tomer Tayar21dd79e2017-12-27 19:30:06 +02007156struct e4_tstorm_rdma_task_ag_ctx {
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03007157 u8 byte0;
7158 u8 byte1;
7159 __le16 word0;
7160 u8 flags0;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02007161#define E4_TSTORM_RDMA_TASK_AG_CTX_NIBBLE0_MASK 0xF
7162#define E4_TSTORM_RDMA_TASK_AG_CTX_NIBBLE0_SHIFT 0
7163#define E4_TSTORM_RDMA_TASK_AG_CTX_BIT0_MASK 0x1
7164#define E4_TSTORM_RDMA_TASK_AG_CTX_BIT0_SHIFT 4
7165#define E4_TSTORM_RDMA_TASK_AG_CTX_BIT1_MASK 0x1
7166#define E4_TSTORM_RDMA_TASK_AG_CTX_BIT1_SHIFT 5
7167#define E4_TSTORM_RDMA_TASK_AG_CTX_BIT2_MASK 0x1
7168#define E4_TSTORM_RDMA_TASK_AG_CTX_BIT2_SHIFT 6
7169#define E4_TSTORM_RDMA_TASK_AG_CTX_BIT3_MASK 0x1
7170#define E4_TSTORM_RDMA_TASK_AG_CTX_BIT3_SHIFT 7
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03007171 u8 flags1;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02007172#define E4_TSTORM_RDMA_TASK_AG_CTX_BIT4_MASK 0x1
7173#define E4_TSTORM_RDMA_TASK_AG_CTX_BIT4_SHIFT 0
7174#define E4_TSTORM_RDMA_TASK_AG_CTX_BIT5_MASK 0x1
7175#define E4_TSTORM_RDMA_TASK_AG_CTX_BIT5_SHIFT 1
7176#define E4_TSTORM_RDMA_TASK_AG_CTX_CF0_MASK 0x3
7177#define E4_TSTORM_RDMA_TASK_AG_CTX_CF0_SHIFT 2
7178#define E4_TSTORM_RDMA_TASK_AG_CTX_CF1_MASK 0x3
7179#define E4_TSTORM_RDMA_TASK_AG_CTX_CF1_SHIFT 4
7180#define E4_TSTORM_RDMA_TASK_AG_CTX_CF2_MASK 0x3
7181#define E4_TSTORM_RDMA_TASK_AG_CTX_CF2_SHIFT 6
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03007182 u8 flags2;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02007183#define E4_TSTORM_RDMA_TASK_AG_CTX_CF3_MASK 0x3
7184#define E4_TSTORM_RDMA_TASK_AG_CTX_CF3_SHIFT 0
7185#define E4_TSTORM_RDMA_TASK_AG_CTX_CF4_MASK 0x3
7186#define E4_TSTORM_RDMA_TASK_AG_CTX_CF4_SHIFT 2
7187#define E4_TSTORM_RDMA_TASK_AG_CTX_CF5_MASK 0x3
7188#define E4_TSTORM_RDMA_TASK_AG_CTX_CF5_SHIFT 4
7189#define E4_TSTORM_RDMA_TASK_AG_CTX_CF6_MASK 0x3
7190#define E4_TSTORM_RDMA_TASK_AG_CTX_CF6_SHIFT 6
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03007191 u8 flags3;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02007192#define E4_TSTORM_RDMA_TASK_AG_CTX_CF7_MASK 0x3
7193#define E4_TSTORM_RDMA_TASK_AG_CTX_CF7_SHIFT 0
7194#define E4_TSTORM_RDMA_TASK_AG_CTX_CF0EN_MASK 0x1
7195#define E4_TSTORM_RDMA_TASK_AG_CTX_CF0EN_SHIFT 2
7196#define E4_TSTORM_RDMA_TASK_AG_CTX_CF1EN_MASK 0x1
7197#define E4_TSTORM_RDMA_TASK_AG_CTX_CF1EN_SHIFT 3
7198#define E4_TSTORM_RDMA_TASK_AG_CTX_CF2EN_MASK 0x1
7199#define E4_TSTORM_RDMA_TASK_AG_CTX_CF2EN_SHIFT 4
7200#define E4_TSTORM_RDMA_TASK_AG_CTX_CF3EN_MASK 0x1
7201#define E4_TSTORM_RDMA_TASK_AG_CTX_CF3EN_SHIFT 5
7202#define E4_TSTORM_RDMA_TASK_AG_CTX_CF4EN_MASK 0x1
7203#define E4_TSTORM_RDMA_TASK_AG_CTX_CF4EN_SHIFT 6
7204#define E4_TSTORM_RDMA_TASK_AG_CTX_CF5EN_MASK 0x1
7205#define E4_TSTORM_RDMA_TASK_AG_CTX_CF5EN_SHIFT 7
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03007206 u8 flags4;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02007207#define E4_TSTORM_RDMA_TASK_AG_CTX_CF6EN_MASK 0x1
7208#define E4_TSTORM_RDMA_TASK_AG_CTX_CF6EN_SHIFT 0
7209#define E4_TSTORM_RDMA_TASK_AG_CTX_CF7EN_MASK 0x1
7210#define E4_TSTORM_RDMA_TASK_AG_CTX_CF7EN_SHIFT 1
7211#define E4_TSTORM_RDMA_TASK_AG_CTX_RULE0EN_MASK 0x1
7212#define E4_TSTORM_RDMA_TASK_AG_CTX_RULE0EN_SHIFT 2
7213#define E4_TSTORM_RDMA_TASK_AG_CTX_RULE1EN_MASK 0x1
7214#define E4_TSTORM_RDMA_TASK_AG_CTX_RULE1EN_SHIFT 3
7215#define E4_TSTORM_RDMA_TASK_AG_CTX_RULE2EN_MASK 0x1
7216#define E4_TSTORM_RDMA_TASK_AG_CTX_RULE2EN_SHIFT 4
7217#define E4_TSTORM_RDMA_TASK_AG_CTX_RULE3EN_MASK 0x1
7218#define E4_TSTORM_RDMA_TASK_AG_CTX_RULE3EN_SHIFT 5
7219#define E4_TSTORM_RDMA_TASK_AG_CTX_RULE4EN_MASK 0x1
7220#define E4_TSTORM_RDMA_TASK_AG_CTX_RULE4EN_SHIFT 6
7221#define E4_TSTORM_RDMA_TASK_AG_CTX_RULE5EN_MASK 0x1
7222#define E4_TSTORM_RDMA_TASK_AG_CTX_RULE5EN_SHIFT 7
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03007223 u8 byte2;
7224 __le16 word1;
7225 __le32 reg0;
7226 u8 byte3;
7227 u8 byte4;
7228 __le16 word2;
7229 __le16 word3;
7230 __le16 word4;
7231 __le32 reg1;
7232 __le32 reg2;
7233};
7234
Tomer Tayar21dd79e2017-12-27 19:30:06 +02007235struct e4_ustorm_rdma_conn_ag_ctx {
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03007236 u8 reserved;
7237 u8 byte1;
7238 u8 flags0;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02007239#define E4_USTORM_RDMA_CONN_AG_CTX_EXIST_IN_QM0_MASK 0x1
7240#define E4_USTORM_RDMA_CONN_AG_CTX_EXIST_IN_QM0_SHIFT 0
Michal Kalderon50bc60c2018-03-28 11:42:16 +03007241#define E4_USTORM_RDMA_CONN_AG_CTX_DIF_ERROR_REPORTED_MASK 0x1
7242#define E4_USTORM_RDMA_CONN_AG_CTX_DIF_ERROR_REPORTED_SHIFT 1
Tomer Tayar21dd79e2017-12-27 19:30:06 +02007243#define E4_USTORM_RDMA_CONN_AG_CTX_FLUSH_Q0_CF_MASK 0x3
7244#define E4_USTORM_RDMA_CONN_AG_CTX_FLUSH_Q0_CF_SHIFT 2
7245#define E4_USTORM_RDMA_CONN_AG_CTX_CF1_MASK 0x3
7246#define E4_USTORM_RDMA_CONN_AG_CTX_CF1_SHIFT 4
7247#define E4_USTORM_RDMA_CONN_AG_CTX_CF2_MASK 0x3
7248#define E4_USTORM_RDMA_CONN_AG_CTX_CF2_SHIFT 6
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03007249 u8 flags1;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02007250#define E4_USTORM_RDMA_CONN_AG_CTX_CF3_MASK 0x3
7251#define E4_USTORM_RDMA_CONN_AG_CTX_CF3_SHIFT 0
7252#define E4_USTORM_RDMA_CONN_AG_CTX_CQ_ARM_SE_CF_MASK 0x3
7253#define E4_USTORM_RDMA_CONN_AG_CTX_CQ_ARM_SE_CF_SHIFT 2
7254#define E4_USTORM_RDMA_CONN_AG_CTX_CQ_ARM_CF_MASK 0x3
7255#define E4_USTORM_RDMA_CONN_AG_CTX_CQ_ARM_CF_SHIFT 4
7256#define E4_USTORM_RDMA_CONN_AG_CTX_CF6_MASK 0x3
7257#define E4_USTORM_RDMA_CONN_AG_CTX_CF6_SHIFT 6
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03007258 u8 flags2;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02007259#define E4_USTORM_RDMA_CONN_AG_CTX_FLUSH_Q0_CF_EN_MASK 0x1
7260#define E4_USTORM_RDMA_CONN_AG_CTX_FLUSH_Q0_CF_EN_SHIFT 0
7261#define E4_USTORM_RDMA_CONN_AG_CTX_CF1EN_MASK 0x1
7262#define E4_USTORM_RDMA_CONN_AG_CTX_CF1EN_SHIFT 1
7263#define E4_USTORM_RDMA_CONN_AG_CTX_CF2EN_MASK 0x1
7264#define E4_USTORM_RDMA_CONN_AG_CTX_CF2EN_SHIFT 2
7265#define E4_USTORM_RDMA_CONN_AG_CTX_CF3EN_MASK 0x1
7266#define E4_USTORM_RDMA_CONN_AG_CTX_CF3EN_SHIFT 3
7267#define E4_USTORM_RDMA_CONN_AG_CTX_CQ_ARM_SE_CF_EN_MASK 0x1
7268#define E4_USTORM_RDMA_CONN_AG_CTX_CQ_ARM_SE_CF_EN_SHIFT 4
7269#define E4_USTORM_RDMA_CONN_AG_CTX_CQ_ARM_CF_EN_MASK 0x1
7270#define E4_USTORM_RDMA_CONN_AG_CTX_CQ_ARM_CF_EN_SHIFT 5
7271#define E4_USTORM_RDMA_CONN_AG_CTX_CF6EN_MASK 0x1
7272#define E4_USTORM_RDMA_CONN_AG_CTX_CF6EN_SHIFT 6
7273#define E4_USTORM_RDMA_CONN_AG_CTX_CQ_SE_EN_MASK 0x1
7274#define E4_USTORM_RDMA_CONN_AG_CTX_CQ_SE_EN_SHIFT 7
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03007275 u8 flags3;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02007276#define E4_USTORM_RDMA_CONN_AG_CTX_CQ_EN_MASK 0x1
7277#define E4_USTORM_RDMA_CONN_AG_CTX_CQ_EN_SHIFT 0
7278#define E4_USTORM_RDMA_CONN_AG_CTX_RULE2EN_MASK 0x1
7279#define E4_USTORM_RDMA_CONN_AG_CTX_RULE2EN_SHIFT 1
7280#define E4_USTORM_RDMA_CONN_AG_CTX_RULE3EN_MASK 0x1
7281#define E4_USTORM_RDMA_CONN_AG_CTX_RULE3EN_SHIFT 2
7282#define E4_USTORM_RDMA_CONN_AG_CTX_RULE4EN_MASK 0x1
7283#define E4_USTORM_RDMA_CONN_AG_CTX_RULE4EN_SHIFT 3
7284#define E4_USTORM_RDMA_CONN_AG_CTX_RULE5EN_MASK 0x1
7285#define E4_USTORM_RDMA_CONN_AG_CTX_RULE5EN_SHIFT 4
7286#define E4_USTORM_RDMA_CONN_AG_CTX_RULE6EN_MASK 0x1
7287#define E4_USTORM_RDMA_CONN_AG_CTX_RULE6EN_SHIFT 5
7288#define E4_USTORM_RDMA_CONN_AG_CTX_RULE7EN_MASK 0x1
7289#define E4_USTORM_RDMA_CONN_AG_CTX_RULE7EN_SHIFT 6
7290#define E4_USTORM_RDMA_CONN_AG_CTX_RULE8EN_MASK 0x1
7291#define E4_USTORM_RDMA_CONN_AG_CTX_RULE8EN_SHIFT 7
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03007292 u8 byte2;
7293 u8 byte3;
7294 __le16 conn_dpi;
7295 __le16 word1;
7296 __le32 cq_cons;
7297 __le32 cq_se_prod;
7298 __le32 cq_prod;
7299 __le32 reg3;
7300 __le16 int_timeout;
7301 __le16 word3;
7302};
7303
Michal Kalderon50bc60c2018-03-28 11:42:16 +03007304struct e4_xstorm_roce_conn_ag_ctx {
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03007305 u8 reserved0;
7306 u8 state;
7307 u8 flags0;
Michal Kalderon50bc60c2018-03-28 11:42:16 +03007308#define E4_XSTORM_ROCE_CONN_AG_CTX_EXIST_IN_QM0_MASK 0x1
7309#define E4_XSTORM_ROCE_CONN_AG_CTX_EXIST_IN_QM0_SHIFT 0
7310#define E4_XSTORM_ROCE_CONN_AG_CTX_BIT1_MASK 0x1
7311#define E4_XSTORM_ROCE_CONN_AG_CTX_BIT1_SHIFT 1
7312#define E4_XSTORM_ROCE_CONN_AG_CTX_BIT2_MASK 0x1
7313#define E4_XSTORM_ROCE_CONN_AG_CTX_BIT2_SHIFT 2
7314#define E4_XSTORM_ROCE_CONN_AG_CTX_EXIST_IN_QM3_MASK 0x1
7315#define E4_XSTORM_ROCE_CONN_AG_CTX_EXIST_IN_QM3_SHIFT 3
7316#define E4_XSTORM_ROCE_CONN_AG_CTX_BIT4_MASK 0x1
7317#define E4_XSTORM_ROCE_CONN_AG_CTX_BIT4_SHIFT 4
7318#define E4_XSTORM_ROCE_CONN_AG_CTX_BIT5_MASK 0x1
7319#define E4_XSTORM_ROCE_CONN_AG_CTX_BIT5_SHIFT 5
7320#define E4_XSTORM_ROCE_CONN_AG_CTX_BIT6_MASK 0x1
7321#define E4_XSTORM_ROCE_CONN_AG_CTX_BIT6_SHIFT 6
7322#define E4_XSTORM_ROCE_CONN_AG_CTX_BIT7_MASK 0x1
7323#define E4_XSTORM_ROCE_CONN_AG_CTX_BIT7_SHIFT 7
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03007324 u8 flags1;
Michal Kalderon50bc60c2018-03-28 11:42:16 +03007325#define E4_XSTORM_ROCE_CONN_AG_CTX_BIT8_MASK 0x1
7326#define E4_XSTORM_ROCE_CONN_AG_CTX_BIT8_SHIFT 0
7327#define E4_XSTORM_ROCE_CONN_AG_CTX_BIT9_MASK 0x1
7328#define E4_XSTORM_ROCE_CONN_AG_CTX_BIT9_SHIFT 1
7329#define E4_XSTORM_ROCE_CONN_AG_CTX_BIT10_MASK 0x1
7330#define E4_XSTORM_ROCE_CONN_AG_CTX_BIT10_SHIFT 2
7331#define E4_XSTORM_ROCE_CONN_AG_CTX_BIT11_MASK 0x1
7332#define E4_XSTORM_ROCE_CONN_AG_CTX_BIT11_SHIFT 3
7333#define E4_XSTORM_ROCE_CONN_AG_CTX_BIT12_MASK 0x1
7334#define E4_XSTORM_ROCE_CONN_AG_CTX_BIT12_SHIFT 4
7335#define E4_XSTORM_ROCE_CONN_AG_CTX_MSEM_FLUSH_MASK 0x1
7336#define E4_XSTORM_ROCE_CONN_AG_CTX_MSEM_FLUSH_SHIFT 5
7337#define E4_XSTORM_ROCE_CONN_AG_CTX_MSDM_FLUSH_MASK 0x1
7338#define E4_XSTORM_ROCE_CONN_AG_CTX_MSDM_FLUSH_SHIFT 6
7339#define E4_XSTORM_ROCE_CONN_AG_CTX_YSTORM_FLUSH_MASK 0x1
7340#define E4_XSTORM_ROCE_CONN_AG_CTX_YSTORM_FLUSH_SHIFT 7
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03007341 u8 flags2;
Michal Kalderon50bc60c2018-03-28 11:42:16 +03007342#define E4_XSTORM_ROCE_CONN_AG_CTX_CF0_MASK 0x3
7343#define E4_XSTORM_ROCE_CONN_AG_CTX_CF0_SHIFT 0
7344#define E4_XSTORM_ROCE_CONN_AG_CTX_CF1_MASK 0x3
7345#define E4_XSTORM_ROCE_CONN_AG_CTX_CF1_SHIFT 2
7346#define E4_XSTORM_ROCE_CONN_AG_CTX_CF2_MASK 0x3
7347#define E4_XSTORM_ROCE_CONN_AG_CTX_CF2_SHIFT 4
7348#define E4_XSTORM_ROCE_CONN_AG_CTX_CF3_MASK 0x3
7349#define E4_XSTORM_ROCE_CONN_AG_CTX_CF3_SHIFT 6
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03007350 u8 flags3;
Michal Kalderon50bc60c2018-03-28 11:42:16 +03007351#define E4_XSTORM_ROCE_CONN_AG_CTX_CF4_MASK 0x3
7352#define E4_XSTORM_ROCE_CONN_AG_CTX_CF4_SHIFT 0
7353#define E4_XSTORM_ROCE_CONN_AG_CTX_CF5_MASK 0x3
7354#define E4_XSTORM_ROCE_CONN_AG_CTX_CF5_SHIFT 2
7355#define E4_XSTORM_ROCE_CONN_AG_CTX_CF6_MASK 0x3
7356#define E4_XSTORM_ROCE_CONN_AG_CTX_CF6_SHIFT 4
7357#define E4_XSTORM_ROCE_CONN_AG_CTX_FLUSH_Q0_CF_MASK 0x3
7358#define E4_XSTORM_ROCE_CONN_AG_CTX_FLUSH_Q0_CF_SHIFT 6
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03007359 u8 flags4;
Michal Kalderon50bc60c2018-03-28 11:42:16 +03007360#define E4_XSTORM_ROCE_CONN_AG_CTX_CF8_MASK 0x3
7361#define E4_XSTORM_ROCE_CONN_AG_CTX_CF8_SHIFT 0
7362#define E4_XSTORM_ROCE_CONN_AG_CTX_CF9_MASK 0x3
7363#define E4_XSTORM_ROCE_CONN_AG_CTX_CF9_SHIFT 2
7364#define E4_XSTORM_ROCE_CONN_AG_CTX_CF10_MASK 0x3
7365#define E4_XSTORM_ROCE_CONN_AG_CTX_CF10_SHIFT 4
7366#define E4_XSTORM_ROCE_CONN_AG_CTX_CF11_MASK 0x3
7367#define E4_XSTORM_ROCE_CONN_AG_CTX_CF11_SHIFT 6
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03007368 u8 flags5;
Michal Kalderon50bc60c2018-03-28 11:42:16 +03007369#define E4_XSTORM_ROCE_CONN_AG_CTX_CF12_MASK 0x3
7370#define E4_XSTORM_ROCE_CONN_AG_CTX_CF12_SHIFT 0
7371#define E4_XSTORM_ROCE_CONN_AG_CTX_CF13_MASK 0x3
7372#define E4_XSTORM_ROCE_CONN_AG_CTX_CF13_SHIFT 2
7373#define E4_XSTORM_ROCE_CONN_AG_CTX_CF14_MASK 0x3
7374#define E4_XSTORM_ROCE_CONN_AG_CTX_CF14_SHIFT 4
7375#define E4_XSTORM_ROCE_CONN_AG_CTX_CF15_MASK 0x3
7376#define E4_XSTORM_ROCE_CONN_AG_CTX_CF15_SHIFT 6
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03007377 u8 flags6;
Michal Kalderon50bc60c2018-03-28 11:42:16 +03007378#define E4_XSTORM_ROCE_CONN_AG_CTX_CF16_MASK 0x3
7379#define E4_XSTORM_ROCE_CONN_AG_CTX_CF16_SHIFT 0
7380#define E4_XSTORM_ROCE_CONN_AG_CTX_CF17_MASK 0x3
7381#define E4_XSTORM_ROCE_CONN_AG_CTX_CF17_SHIFT 2
7382#define E4_XSTORM_ROCE_CONN_AG_CTX_CF18_MASK 0x3
7383#define E4_XSTORM_ROCE_CONN_AG_CTX_CF18_SHIFT 4
7384#define E4_XSTORM_ROCE_CONN_AG_CTX_CF19_MASK 0x3
7385#define E4_XSTORM_ROCE_CONN_AG_CTX_CF19_SHIFT 6
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03007386 u8 flags7;
Michal Kalderon50bc60c2018-03-28 11:42:16 +03007387#define E4_XSTORM_ROCE_CONN_AG_CTX_CF20_MASK 0x3
7388#define E4_XSTORM_ROCE_CONN_AG_CTX_CF20_SHIFT 0
7389#define E4_XSTORM_ROCE_CONN_AG_CTX_CF21_MASK 0x3
7390#define E4_XSTORM_ROCE_CONN_AG_CTX_CF21_SHIFT 2
7391#define E4_XSTORM_ROCE_CONN_AG_CTX_SLOW_PATH_MASK 0x3
7392#define E4_XSTORM_ROCE_CONN_AG_CTX_SLOW_PATH_SHIFT 4
7393#define E4_XSTORM_ROCE_CONN_AG_CTX_CF0EN_MASK 0x1
7394#define E4_XSTORM_ROCE_CONN_AG_CTX_CF0EN_SHIFT 6
7395#define E4_XSTORM_ROCE_CONN_AG_CTX_CF1EN_MASK 0x1
7396#define E4_XSTORM_ROCE_CONN_AG_CTX_CF1EN_SHIFT 7
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03007397 u8 flags8;
Michal Kalderon50bc60c2018-03-28 11:42:16 +03007398#define E4_XSTORM_ROCE_CONN_AG_CTX_CF2EN_MASK 0x1
7399#define E4_XSTORM_ROCE_CONN_AG_CTX_CF2EN_SHIFT 0
7400#define E4_XSTORM_ROCE_CONN_AG_CTX_CF3EN_MASK 0x1
7401#define E4_XSTORM_ROCE_CONN_AG_CTX_CF3EN_SHIFT 1
7402#define E4_XSTORM_ROCE_CONN_AG_CTX_CF4EN_MASK 0x1
7403#define E4_XSTORM_ROCE_CONN_AG_CTX_CF4EN_SHIFT 2
7404#define E4_XSTORM_ROCE_CONN_AG_CTX_CF5EN_MASK 0x1
7405#define E4_XSTORM_ROCE_CONN_AG_CTX_CF5EN_SHIFT 3
7406#define E4_XSTORM_ROCE_CONN_AG_CTX_CF6EN_MASK 0x1
7407#define E4_XSTORM_ROCE_CONN_AG_CTX_CF6EN_SHIFT 4
7408#define E4_XSTORM_ROCE_CONN_AG_CTX_FLUSH_Q0_CF_EN_MASK 0x1
7409#define E4_XSTORM_ROCE_CONN_AG_CTX_FLUSH_Q0_CF_EN_SHIFT 5
7410#define E4_XSTORM_ROCE_CONN_AG_CTX_CF8EN_MASK 0x1
7411#define E4_XSTORM_ROCE_CONN_AG_CTX_CF8EN_SHIFT 6
7412#define E4_XSTORM_ROCE_CONN_AG_CTX_CF9EN_MASK 0x1
7413#define E4_XSTORM_ROCE_CONN_AG_CTX_CF9EN_SHIFT 7
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03007414 u8 flags9;
Michal Kalderon50bc60c2018-03-28 11:42:16 +03007415#define E4_XSTORM_ROCE_CONN_AG_CTX_CF10EN_MASK 0x1
7416#define E4_XSTORM_ROCE_CONN_AG_CTX_CF10EN_SHIFT 0
7417#define E4_XSTORM_ROCE_CONN_AG_CTX_CF11EN_MASK 0x1
7418#define E4_XSTORM_ROCE_CONN_AG_CTX_CF11EN_SHIFT 1
7419#define E4_XSTORM_ROCE_CONN_AG_CTX_CF12EN_MASK 0x1
7420#define E4_XSTORM_ROCE_CONN_AG_CTX_CF12EN_SHIFT 2
7421#define E4_XSTORM_ROCE_CONN_AG_CTX_CF13EN_MASK 0x1
7422#define E4_XSTORM_ROCE_CONN_AG_CTX_CF13EN_SHIFT 3
7423#define E4_XSTORM_ROCE_CONN_AG_CTX_CF14EN_MASK 0x1
7424#define E4_XSTORM_ROCE_CONN_AG_CTX_CF14EN_SHIFT 4
7425#define E4_XSTORM_ROCE_CONN_AG_CTX_CF15EN_MASK 0x1
7426#define E4_XSTORM_ROCE_CONN_AG_CTX_CF15EN_SHIFT 5
7427#define E4_XSTORM_ROCE_CONN_AG_CTX_CF16EN_MASK 0x1
7428#define E4_XSTORM_ROCE_CONN_AG_CTX_CF16EN_SHIFT 6
7429#define E4_XSTORM_ROCE_CONN_AG_CTX_CF17EN_MASK 0x1
7430#define E4_XSTORM_ROCE_CONN_AG_CTX_CF17EN_SHIFT 7
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03007431 u8 flags10;
Michal Kalderon50bc60c2018-03-28 11:42:16 +03007432#define E4_XSTORM_ROCE_CONN_AG_CTX_CF18EN_MASK 0x1
7433#define E4_XSTORM_ROCE_CONN_AG_CTX_CF18EN_SHIFT 0
7434#define E4_XSTORM_ROCE_CONN_AG_CTX_CF19EN_MASK 0x1
7435#define E4_XSTORM_ROCE_CONN_AG_CTX_CF19EN_SHIFT 1
7436#define E4_XSTORM_ROCE_CONN_AG_CTX_CF20EN_MASK 0x1
7437#define E4_XSTORM_ROCE_CONN_AG_CTX_CF20EN_SHIFT 2
7438#define E4_XSTORM_ROCE_CONN_AG_CTX_CF21EN_MASK 0x1
7439#define E4_XSTORM_ROCE_CONN_AG_CTX_CF21EN_SHIFT 3
7440#define E4_XSTORM_ROCE_CONN_AG_CTX_SLOW_PATH_EN_MASK 0x1
7441#define E4_XSTORM_ROCE_CONN_AG_CTX_SLOW_PATH_EN_SHIFT 4
7442#define E4_XSTORM_ROCE_CONN_AG_CTX_CF23EN_MASK 0x1
7443#define E4_XSTORM_ROCE_CONN_AG_CTX_CF23EN_SHIFT 5
7444#define E4_XSTORM_ROCE_CONN_AG_CTX_RULE0EN_MASK 0x1
7445#define E4_XSTORM_ROCE_CONN_AG_CTX_RULE0EN_SHIFT 6
7446#define E4_XSTORM_ROCE_CONN_AG_CTX_RULE1EN_MASK 0x1
7447#define E4_XSTORM_ROCE_CONN_AG_CTX_RULE1EN_SHIFT 7
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03007448 u8 flags11;
Michal Kalderon50bc60c2018-03-28 11:42:16 +03007449#define E4_XSTORM_ROCE_CONN_AG_CTX_RULE2EN_MASK 0x1
7450#define E4_XSTORM_ROCE_CONN_AG_CTX_RULE2EN_SHIFT 0
7451#define E4_XSTORM_ROCE_CONN_AG_CTX_RULE3EN_MASK 0x1
7452#define E4_XSTORM_ROCE_CONN_AG_CTX_RULE3EN_SHIFT 1
7453#define E4_XSTORM_ROCE_CONN_AG_CTX_RULE4EN_MASK 0x1
7454#define E4_XSTORM_ROCE_CONN_AG_CTX_RULE4EN_SHIFT 2
7455#define E4_XSTORM_ROCE_CONN_AG_CTX_RULE5EN_MASK 0x1
7456#define E4_XSTORM_ROCE_CONN_AG_CTX_RULE5EN_SHIFT 3
7457#define E4_XSTORM_ROCE_CONN_AG_CTX_RULE6EN_MASK 0x1
7458#define E4_XSTORM_ROCE_CONN_AG_CTX_RULE6EN_SHIFT 4
7459#define E4_XSTORM_ROCE_CONN_AG_CTX_RULE7EN_MASK 0x1
7460#define E4_XSTORM_ROCE_CONN_AG_CTX_RULE7EN_SHIFT 5
7461#define E4_XSTORM_ROCE_CONN_AG_CTX_A0_RESERVED1_MASK 0x1
7462#define E4_XSTORM_ROCE_CONN_AG_CTX_A0_RESERVED1_SHIFT 6
7463#define E4_XSTORM_ROCE_CONN_AG_CTX_RULE9EN_MASK 0x1
7464#define E4_XSTORM_ROCE_CONN_AG_CTX_RULE9EN_SHIFT 7
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03007465 u8 flags12;
Michal Kalderon50bc60c2018-03-28 11:42:16 +03007466#define E4_XSTORM_ROCE_CONN_AG_CTX_RULE10EN_MASK 0x1
7467#define E4_XSTORM_ROCE_CONN_AG_CTX_RULE10EN_SHIFT 0
7468#define E4_XSTORM_ROCE_CONN_AG_CTX_RULE11EN_MASK 0x1
7469#define E4_XSTORM_ROCE_CONN_AG_CTX_RULE11EN_SHIFT 1
7470#define E4_XSTORM_ROCE_CONN_AG_CTX_A0_RESERVED2_MASK 0x1
7471#define E4_XSTORM_ROCE_CONN_AG_CTX_A0_RESERVED2_SHIFT 2
7472#define E4_XSTORM_ROCE_CONN_AG_CTX_A0_RESERVED3_MASK 0x1
7473#define E4_XSTORM_ROCE_CONN_AG_CTX_A0_RESERVED3_SHIFT 3
7474#define E4_XSTORM_ROCE_CONN_AG_CTX_RULE14EN_MASK 0x1
7475#define E4_XSTORM_ROCE_CONN_AG_CTX_RULE14EN_SHIFT 4
7476#define E4_XSTORM_ROCE_CONN_AG_CTX_RULE15EN_MASK 0x1
7477#define E4_XSTORM_ROCE_CONN_AG_CTX_RULE15EN_SHIFT 5
7478#define E4_XSTORM_ROCE_CONN_AG_CTX_RULE16EN_MASK 0x1
7479#define E4_XSTORM_ROCE_CONN_AG_CTX_RULE16EN_SHIFT 6
7480#define E4_XSTORM_ROCE_CONN_AG_CTX_RULE17EN_MASK 0x1
7481#define E4_XSTORM_ROCE_CONN_AG_CTX_RULE17EN_SHIFT 7
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03007482 u8 flags13;
Michal Kalderon50bc60c2018-03-28 11:42:16 +03007483#define E4_XSTORM_ROCE_CONN_AG_CTX_RULE18EN_MASK 0x1
7484#define E4_XSTORM_ROCE_CONN_AG_CTX_RULE18EN_SHIFT 0
7485#define E4_XSTORM_ROCE_CONN_AG_CTX_RULE19EN_MASK 0x1
7486#define E4_XSTORM_ROCE_CONN_AG_CTX_RULE19EN_SHIFT 1
7487#define E4_XSTORM_ROCE_CONN_AG_CTX_A0_RESERVED4_MASK 0x1
7488#define E4_XSTORM_ROCE_CONN_AG_CTX_A0_RESERVED4_SHIFT 2
7489#define E4_XSTORM_ROCE_CONN_AG_CTX_A0_RESERVED5_MASK 0x1
7490#define E4_XSTORM_ROCE_CONN_AG_CTX_A0_RESERVED5_SHIFT 3
7491#define E4_XSTORM_ROCE_CONN_AG_CTX_A0_RESERVED6_MASK 0x1
7492#define E4_XSTORM_ROCE_CONN_AG_CTX_A0_RESERVED6_SHIFT 4
7493#define E4_XSTORM_ROCE_CONN_AG_CTX_A0_RESERVED7_MASK 0x1
7494#define E4_XSTORM_ROCE_CONN_AG_CTX_A0_RESERVED7_SHIFT 5
7495#define E4_XSTORM_ROCE_CONN_AG_CTX_A0_RESERVED8_MASK 0x1
7496#define E4_XSTORM_ROCE_CONN_AG_CTX_A0_RESERVED8_SHIFT 6
7497#define E4_XSTORM_ROCE_CONN_AG_CTX_A0_RESERVED9_MASK 0x1
7498#define E4_XSTORM_ROCE_CONN_AG_CTX_A0_RESERVED9_SHIFT 7
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03007499 u8 flags14;
Michal Kalderon50bc60c2018-03-28 11:42:16 +03007500#define E4_XSTORM_ROCE_CONN_AG_CTX_MIGRATION_MASK 0x1
7501#define E4_XSTORM_ROCE_CONN_AG_CTX_MIGRATION_SHIFT 0
7502#define E4_XSTORM_ROCE_CONN_AG_CTX_BIT17_MASK 0x1
7503#define E4_XSTORM_ROCE_CONN_AG_CTX_BIT17_SHIFT 1
7504#define E4_XSTORM_ROCE_CONN_AG_CTX_DPM_PORT_NUM_MASK 0x3
7505#define E4_XSTORM_ROCE_CONN_AG_CTX_DPM_PORT_NUM_SHIFT 2
7506#define E4_XSTORM_ROCE_CONN_AG_CTX_RESERVED_MASK 0x1
7507#define E4_XSTORM_ROCE_CONN_AG_CTX_RESERVED_SHIFT 4
7508#define E4_XSTORM_ROCE_CONN_AG_CTX_ROCE_EDPM_ENABLE_MASK 0x1
7509#define E4_XSTORM_ROCE_CONN_AG_CTX_ROCE_EDPM_ENABLE_SHIFT 5
7510#define E4_XSTORM_ROCE_CONN_AG_CTX_CF23_MASK 0x3
7511#define E4_XSTORM_ROCE_CONN_AG_CTX_CF23_SHIFT 6
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03007512 u8 byte2;
7513 __le16 physical_q0;
7514 __le16 word1;
7515 __le16 word2;
7516 __le16 word3;
7517 __le16 word4;
7518 __le16 word5;
7519 __le16 conn_dpi;
7520 u8 byte3;
7521 u8 byte4;
7522 u8 byte5;
7523 u8 byte6;
7524 __le32 reg0;
7525 __le32 reg1;
7526 __le32 reg2;
7527 __le32 snd_nxt_psn;
7528 __le32 reg4;
7529 __le32 reg5;
7530 __le32 reg6;
7531};
7532
Michal Kalderon50bc60c2018-03-28 11:42:16 +03007533struct e4_tstorm_roce_conn_ag_ctx {
7534 u8 reserved0;
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03007535 u8 byte1;
7536 u8 flags0;
Michal Kalderon50bc60c2018-03-28 11:42:16 +03007537#define E4_TSTORM_ROCE_CONN_AG_CTX_EXIST_IN_QM0_MASK 0x1
7538#define E4_TSTORM_ROCE_CONN_AG_CTX_EXIST_IN_QM0_SHIFT 0
7539#define E4_TSTORM_ROCE_CONN_AG_CTX_BIT1_MASK 0x1
7540#define E4_TSTORM_ROCE_CONN_AG_CTX_BIT1_SHIFT 1
7541#define E4_TSTORM_ROCE_CONN_AG_CTX_BIT2_MASK 0x1
7542#define E4_TSTORM_ROCE_CONN_AG_CTX_BIT2_SHIFT 2
7543#define E4_TSTORM_ROCE_CONN_AG_CTX_BIT3_MASK 0x1
7544#define E4_TSTORM_ROCE_CONN_AG_CTX_BIT3_SHIFT 3
7545#define E4_TSTORM_ROCE_CONN_AG_CTX_BIT4_MASK 0x1
7546#define E4_TSTORM_ROCE_CONN_AG_CTX_BIT4_SHIFT 4
7547#define E4_TSTORM_ROCE_CONN_AG_CTX_BIT5_MASK 0x1
7548#define E4_TSTORM_ROCE_CONN_AG_CTX_BIT5_SHIFT 5
7549#define E4_TSTORM_ROCE_CONN_AG_CTX_CF0_MASK 0x3
7550#define E4_TSTORM_ROCE_CONN_AG_CTX_CF0_SHIFT 6
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03007551 u8 flags1;
Michal Kalderon50bc60c2018-03-28 11:42:16 +03007552#define E4_TSTORM_ROCE_CONN_AG_CTX_MSTORM_FLUSH_CF_MASK 0x3
7553#define E4_TSTORM_ROCE_CONN_AG_CTX_MSTORM_FLUSH_CF_SHIFT 0
7554#define E4_TSTORM_ROCE_CONN_AG_CTX_CF2_MASK 0x3
7555#define E4_TSTORM_ROCE_CONN_AG_CTX_CF2_SHIFT 2
7556#define E4_TSTORM_ROCE_CONN_AG_CTX_TIMER_STOP_ALL_CF_MASK 0x3
7557#define E4_TSTORM_ROCE_CONN_AG_CTX_TIMER_STOP_ALL_CF_SHIFT 4
7558#define E4_TSTORM_ROCE_CONN_AG_CTX_FLUSH_Q0_CF_MASK 0x3
7559#define E4_TSTORM_ROCE_CONN_AG_CTX_FLUSH_Q0_CF_SHIFT 6
7560 u8 flags2;
7561#define E4_TSTORM_ROCE_CONN_AG_CTX_CF5_MASK 0x3
7562#define E4_TSTORM_ROCE_CONN_AG_CTX_CF5_SHIFT 0
7563#define E4_TSTORM_ROCE_CONN_AG_CTX_CF6_MASK 0x3
7564#define E4_TSTORM_ROCE_CONN_AG_CTX_CF6_SHIFT 2
7565#define E4_TSTORM_ROCE_CONN_AG_CTX_CF7_MASK 0x3
7566#define E4_TSTORM_ROCE_CONN_AG_CTX_CF7_SHIFT 4
7567#define E4_TSTORM_ROCE_CONN_AG_CTX_CF8_MASK 0x3
7568#define E4_TSTORM_ROCE_CONN_AG_CTX_CF8_SHIFT 6
7569 u8 flags3;
7570#define E4_TSTORM_ROCE_CONN_AG_CTX_CF9_MASK 0x3
7571#define E4_TSTORM_ROCE_CONN_AG_CTX_CF9_SHIFT 0
7572#define E4_TSTORM_ROCE_CONN_AG_CTX_CF10_MASK 0x3
7573#define E4_TSTORM_ROCE_CONN_AG_CTX_CF10_SHIFT 2
7574#define E4_TSTORM_ROCE_CONN_AG_CTX_CF0EN_MASK 0x1
7575#define E4_TSTORM_ROCE_CONN_AG_CTX_CF0EN_SHIFT 4
7576#define E4_TSTORM_ROCE_CONN_AG_CTX_MSTORM_FLUSH_CF_EN_MASK 0x1
7577#define E4_TSTORM_ROCE_CONN_AG_CTX_MSTORM_FLUSH_CF_EN_SHIFT 5
7578#define E4_TSTORM_ROCE_CONN_AG_CTX_CF2EN_MASK 0x1
7579#define E4_TSTORM_ROCE_CONN_AG_CTX_CF2EN_SHIFT 6
7580#define E4_TSTORM_ROCE_CONN_AG_CTX_TIMER_STOP_ALL_CF_EN_MASK 0x1
7581#define E4_TSTORM_ROCE_CONN_AG_CTX_TIMER_STOP_ALL_CF_EN_SHIFT 7
7582 u8 flags4;
7583#define E4_TSTORM_ROCE_CONN_AG_CTX_FLUSH_Q0_CF_EN_MASK 0x1
7584#define E4_TSTORM_ROCE_CONN_AG_CTX_FLUSH_Q0_CF_EN_SHIFT 0
7585#define E4_TSTORM_ROCE_CONN_AG_CTX_CF5EN_MASK 0x1
7586#define E4_TSTORM_ROCE_CONN_AG_CTX_CF5EN_SHIFT 1
7587#define E4_TSTORM_ROCE_CONN_AG_CTX_CF6EN_MASK 0x1
7588#define E4_TSTORM_ROCE_CONN_AG_CTX_CF6EN_SHIFT 2
7589#define E4_TSTORM_ROCE_CONN_AG_CTX_CF7EN_MASK 0x1
7590#define E4_TSTORM_ROCE_CONN_AG_CTX_CF7EN_SHIFT 3
7591#define E4_TSTORM_ROCE_CONN_AG_CTX_CF8EN_MASK 0x1
7592#define E4_TSTORM_ROCE_CONN_AG_CTX_CF8EN_SHIFT 4
7593#define E4_TSTORM_ROCE_CONN_AG_CTX_CF9EN_MASK 0x1
7594#define E4_TSTORM_ROCE_CONN_AG_CTX_CF9EN_SHIFT 5
7595#define E4_TSTORM_ROCE_CONN_AG_CTX_CF10EN_MASK 0x1
7596#define E4_TSTORM_ROCE_CONN_AG_CTX_CF10EN_SHIFT 6
7597#define E4_TSTORM_ROCE_CONN_AG_CTX_RULE0EN_MASK 0x1
7598#define E4_TSTORM_ROCE_CONN_AG_CTX_RULE0EN_SHIFT 7
7599 u8 flags5;
7600#define E4_TSTORM_ROCE_CONN_AG_CTX_RULE1EN_MASK 0x1
7601#define E4_TSTORM_ROCE_CONN_AG_CTX_RULE1EN_SHIFT 0
7602#define E4_TSTORM_ROCE_CONN_AG_CTX_RULE2EN_MASK 0x1
7603#define E4_TSTORM_ROCE_CONN_AG_CTX_RULE2EN_SHIFT 1
7604#define E4_TSTORM_ROCE_CONN_AG_CTX_RULE3EN_MASK 0x1
7605#define E4_TSTORM_ROCE_CONN_AG_CTX_RULE3EN_SHIFT 2
7606#define E4_TSTORM_ROCE_CONN_AG_CTX_RULE4EN_MASK 0x1
7607#define E4_TSTORM_ROCE_CONN_AG_CTX_RULE4EN_SHIFT 3
7608#define E4_TSTORM_ROCE_CONN_AG_CTX_RULE5EN_MASK 0x1
7609#define E4_TSTORM_ROCE_CONN_AG_CTX_RULE5EN_SHIFT 4
7610#define E4_TSTORM_ROCE_CONN_AG_CTX_RULE6EN_MASK 0x1
7611#define E4_TSTORM_ROCE_CONN_AG_CTX_RULE6EN_SHIFT 5
7612#define E4_TSTORM_ROCE_CONN_AG_CTX_RULE7EN_MASK 0x1
7613#define E4_TSTORM_ROCE_CONN_AG_CTX_RULE7EN_SHIFT 6
7614#define E4_TSTORM_ROCE_CONN_AG_CTX_RULE8EN_MASK 0x1
7615#define E4_TSTORM_ROCE_CONN_AG_CTX_RULE8EN_SHIFT 7
7616 __le32 reg0;
7617 __le32 reg1;
7618 __le32 reg2;
7619 __le32 reg3;
7620 __le32 reg4;
7621 __le32 reg5;
7622 __le32 reg6;
7623 __le32 reg7;
7624 __le32 reg8;
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03007625 u8 byte2;
7626 u8 byte3;
7627 __le16 word0;
Michal Kalderon50bc60c2018-03-28 11:42:16 +03007628 u8 byte4;
7629 u8 byte5;
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03007630 __le16 word1;
7631 __le16 word2;
7632 __le16 word3;
Michal Kalderon50bc60c2018-03-28 11:42:16 +03007633 __le32 reg9;
7634 __le32 reg10;
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03007635};
7636
Tomer Tayara2e76992017-12-27 19:30:05 +02007637/* The roce storm context of Ystorm */
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03007638struct ystorm_roce_conn_st_ctx {
7639 struct regpair temp[2];
7640};
7641
Tomer Tayara2e76992017-12-27 19:30:05 +02007642/* The roce storm context of Mstorm */
7643struct pstorm_roce_conn_st_ctx {
7644 struct regpair temp[16];
7645};
7646
7647/* The roce storm context of Xstorm */
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03007648struct xstorm_roce_conn_st_ctx {
Mintz, Yuvalbe086e72017-03-11 18:39:18 +02007649 struct regpair temp[24];
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03007650};
7651
Tomer Tayara2e76992017-12-27 19:30:05 +02007652/* The roce storm context of Tstorm */
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03007653struct tstorm_roce_conn_st_ctx {
7654 struct regpair temp[30];
7655};
7656
Tomer Tayara2e76992017-12-27 19:30:05 +02007657/* The roce storm context of Mstorm */
7658struct mstorm_roce_conn_st_ctx {
7659 struct regpair temp[6];
7660};
7661
7662/* The roce storm context of Ystorm */
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03007663struct ustorm_roce_conn_st_ctx {
7664 struct regpair temp[12];
7665};
7666
Tomer Tayara2e76992017-12-27 19:30:05 +02007667/* roce connection context */
Tomer Tayar21dd79e2017-12-27 19:30:06 +02007668struct e4_roce_conn_context {
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03007669 struct ystorm_roce_conn_st_ctx ystorm_st_context;
7670 struct regpair ystorm_st_padding[2];
7671 struct pstorm_roce_conn_st_ctx pstorm_st_context;
7672 struct xstorm_roce_conn_st_ctx xstorm_st_context;
Michal Kalderon50bc60c2018-03-28 11:42:16 +03007673 struct e4_xstorm_roce_conn_ag_ctx xstorm_ag_context;
7674 struct e4_tstorm_roce_conn_ag_ctx tstorm_ag_context;
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03007675 struct timers_context timer_context;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02007676 struct e4_ustorm_rdma_conn_ag_ctx ustorm_ag_context;
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03007677 struct tstorm_roce_conn_st_ctx tstorm_st_context;
Michal Kalderon50bc60c2018-03-28 11:42:16 +03007678 struct regpair tstorm_st_padding[2];
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03007679 struct mstorm_roce_conn_st_ctx mstorm_st_context;
Michal Kalderon50bc60c2018-03-28 11:42:16 +03007680 struct regpair mstorm_st_padding[2];
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03007681 struct ustorm_roce_conn_st_ctx ustorm_st_context;
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03007682};
7683
Tomer Tayara2e76992017-12-27 19:30:05 +02007684/* roce create qp requester ramrod data */
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03007685struct roce_create_qp_req_ramrod_data {
7686 __le16 flags;
Tomer Tayara2e76992017-12-27 19:30:05 +02007687#define ROCE_CREATE_QP_REQ_RAMROD_DATA_ROCE_FLAVOR_MASK 0x3
7688#define ROCE_CREATE_QP_REQ_RAMROD_DATA_ROCE_FLAVOR_SHIFT 0
7689#define ROCE_CREATE_QP_REQ_RAMROD_DATA_FMR_AND_RESERVED_EN_MASK 0x1
7690#define ROCE_CREATE_QP_REQ_RAMROD_DATA_FMR_AND_RESERVED_EN_SHIFT 2
7691#define ROCE_CREATE_QP_REQ_RAMROD_DATA_SIGNALED_COMP_MASK 0x1
7692#define ROCE_CREATE_QP_REQ_RAMROD_DATA_SIGNALED_COMP_SHIFT 3
7693#define ROCE_CREATE_QP_REQ_RAMROD_DATA_PRI_MASK 0x7
7694#define ROCE_CREATE_QP_REQ_RAMROD_DATA_PRI_SHIFT 4
Michal Kalderon50bc60c2018-03-28 11:42:16 +03007695#define ROCE_CREATE_QP_REQ_RAMROD_DATA_XRC_FLAG_MASK 0x1
7696#define ROCE_CREATE_QP_REQ_RAMROD_DATA_XRC_FLAG_SHIFT 7
Tomer Tayara2e76992017-12-27 19:30:05 +02007697#define ROCE_CREATE_QP_REQ_RAMROD_DATA_ERR_RETRY_CNT_MASK 0xF
7698#define ROCE_CREATE_QP_REQ_RAMROD_DATA_ERR_RETRY_CNT_SHIFT 8
7699#define ROCE_CREATE_QP_REQ_RAMROD_DATA_RNR_NAK_CNT_MASK 0xF
7700#define ROCE_CREATE_QP_REQ_RAMROD_DATA_RNR_NAK_CNT_SHIFT 12
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03007701 u8 max_ord;
7702 u8 traffic_class;
7703 u8 hop_limit;
7704 u8 orq_num_pages;
7705 __le16 p_key;
7706 __le32 flow_label;
7707 __le32 dst_qp_id;
7708 __le32 ack_timeout_val;
7709 __le32 initial_psn;
7710 __le16 mtu;
7711 __le16 pd;
7712 __le16 sq_num_pages;
Mintz, Yuvalbe086e72017-03-11 18:39:18 +02007713 __le16 low_latency_phy_queue;
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03007714 struct regpair sq_pbl_addr;
7715 struct regpair orq_pbl_addr;
7716 __le16 local_mac_addr[3];
7717 __le16 remote_mac_addr[3];
7718 __le16 vlan_id;
7719 __le16 udp_src_port;
7720 __le32 src_gid[4];
7721 __le32 dst_gid[4];
Michal Kalderon50bc60c2018-03-28 11:42:16 +03007722 __le32 cq_cid;
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03007723 struct regpair qp_handle_for_cqe;
7724 struct regpair qp_handle_for_async;
7725 u8 stats_counter_id;
7726 u8 reserved3[7];
Mintz, Yuvalbe086e72017-03-11 18:39:18 +02007727 __le16 regular_latency_phy_queue;
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03007728 __le16 dpi;
7729};
7730
Tomer Tayara2e76992017-12-27 19:30:05 +02007731/* roce create qp responder ramrod data */
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03007732struct roce_create_qp_resp_ramrod_data {
Michal Kalderon50bc60c2018-03-28 11:42:16 +03007733 __le32 flags;
Tomer Tayara2e76992017-12-27 19:30:05 +02007734#define ROCE_CREATE_QP_RESP_RAMROD_DATA_ROCE_FLAVOR_MASK 0x3
7735#define ROCE_CREATE_QP_RESP_RAMROD_DATA_ROCE_FLAVOR_SHIFT 0
7736#define ROCE_CREATE_QP_RESP_RAMROD_DATA_RDMA_RD_EN_MASK 0x1
7737#define ROCE_CREATE_QP_RESP_RAMROD_DATA_RDMA_RD_EN_SHIFT 2
7738#define ROCE_CREATE_QP_RESP_RAMROD_DATA_RDMA_WR_EN_MASK 0x1
7739#define ROCE_CREATE_QP_RESP_RAMROD_DATA_RDMA_WR_EN_SHIFT 3
7740#define ROCE_CREATE_QP_RESP_RAMROD_DATA_ATOMIC_EN_MASK 0x1
7741#define ROCE_CREATE_QP_RESP_RAMROD_DATA_ATOMIC_EN_SHIFT 4
7742#define ROCE_CREATE_QP_RESP_RAMROD_DATA_SRQ_FLG_MASK 0x1
7743#define ROCE_CREATE_QP_RESP_RAMROD_DATA_SRQ_FLG_SHIFT 5
7744#define ROCE_CREATE_QP_RESP_RAMROD_DATA_E2E_FLOW_CONTROL_EN_MASK 0x1
7745#define ROCE_CREATE_QP_RESP_RAMROD_DATA_E2E_FLOW_CONTROL_EN_SHIFT 6
7746#define ROCE_CREATE_QP_RESP_RAMROD_DATA_RESERVED_KEY_EN_MASK 0x1
7747#define ROCE_CREATE_QP_RESP_RAMROD_DATA_RESERVED_KEY_EN_SHIFT 7
7748#define ROCE_CREATE_QP_RESP_RAMROD_DATA_PRI_MASK 0x7
7749#define ROCE_CREATE_QP_RESP_RAMROD_DATA_PRI_SHIFT 8
7750#define ROCE_CREATE_QP_RESP_RAMROD_DATA_MIN_RNR_NAK_TIMER_MASK 0x1F
7751#define ROCE_CREATE_QP_RESP_RAMROD_DATA_MIN_RNR_NAK_TIMER_SHIFT 11
Michal Kalderon50bc60c2018-03-28 11:42:16 +03007752#define ROCE_CREATE_QP_RESP_RAMROD_DATA_XRC_FLAG_MASK 0x1
7753#define ROCE_CREATE_QP_RESP_RAMROD_DATA_XRC_FLAG_SHIFT 16
7754#define ROCE_CREATE_QP_RESP_RAMROD_DATA_RESERVED_MASK 0x7FFF
7755#define ROCE_CREATE_QP_RESP_RAMROD_DATA_RESERVED_SHIFT 17
7756 __le16 xrc_domain;
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03007757 u8 max_ird;
7758 u8 traffic_class;
7759 u8 hop_limit;
7760 u8 irq_num_pages;
7761 __le16 p_key;
7762 __le32 flow_label;
7763 __le32 dst_qp_id;
7764 u8 stats_counter_id;
7765 u8 reserved1;
7766 __le16 mtu;
7767 __le32 initial_psn;
7768 __le16 pd;
7769 __le16 rq_num_pages;
7770 struct rdma_srq_id srq_id;
7771 struct regpair rq_pbl_addr;
7772 struct regpair irq_pbl_addr;
7773 __le16 local_mac_addr[3];
7774 __le16 remote_mac_addr[3];
7775 __le16 vlan_id;
7776 __le16 udp_src_port;
7777 __le32 src_gid[4];
7778 __le32 dst_gid[4];
7779 struct regpair qp_handle_for_cqe;
7780 struct regpair qp_handle_for_async;
Mintz, Yuvalbe086e72017-03-11 18:39:18 +02007781 __le16 low_latency_phy_queue;
Michal Kalderon50bc60c2018-03-28 11:42:16 +03007782 u8 reserved2[2];
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03007783 __le32 cq_cid;
Mintz, Yuvalbe086e72017-03-11 18:39:18 +02007784 __le16 regular_latency_phy_queue;
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03007785 __le16 dpi;
7786};
7787
Tomer Tayarda090912017-12-27 19:30:07 +02007788/* roce DCQCN received statistics */
7789struct roce_dcqcn_received_stats {
7790 struct regpair ecn_pkt_rcv;
7791 struct regpair cnp_pkt_rcv;
7792};
7793
7794/* roce DCQCN sent statistics */
7795struct roce_dcqcn_sent_stats {
7796 struct regpair cnp_pkt_sent;
7797};
7798
Tomer Tayara2e76992017-12-27 19:30:05 +02007799/* RoCE destroy qp requester output params */
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03007800struct roce_destroy_qp_req_output_params {
7801 __le32 num_bound_mw;
Mintz, Yuvalbe086e72017-03-11 18:39:18 +02007802 __le32 cq_prod;
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03007803};
7804
Tomer Tayara2e76992017-12-27 19:30:05 +02007805/* RoCE destroy qp requester ramrod data */
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03007806struct roce_destroy_qp_req_ramrod_data {
7807 struct regpair output_params_addr;
7808};
7809
Tomer Tayara2e76992017-12-27 19:30:05 +02007810/* RoCE destroy qp responder output params */
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03007811struct roce_destroy_qp_resp_output_params {
7812 __le32 num_invalidated_mw;
Mintz, Yuvalbe086e72017-03-11 18:39:18 +02007813 __le32 cq_prod;
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03007814};
7815
Tomer Tayara2e76992017-12-27 19:30:05 +02007816/* RoCE destroy qp responder ramrod data */
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03007817struct roce_destroy_qp_resp_ramrod_data {
7818 struct regpair output_params_addr;
7819};
7820
Tomer Tayara2e76992017-12-27 19:30:05 +02007821/* roce special events statistics */
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03007822struct roce_events_stats {
7823 __le16 silent_drops;
7824 __le16 rnr_naks_sent;
7825 __le32 retransmit_count;
7826 __le32 icrc_error_count;
7827 __le32 reserved;
7828};
7829
Tomer Tayara2e76992017-12-27 19:30:05 +02007830/* ROCE slow path EQ cmd IDs */
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03007831enum roce_event_opcode {
7832 ROCE_EVENT_CREATE_QP = 11,
7833 ROCE_EVENT_MODIFY_QP,
7834 ROCE_EVENT_QUERY_QP,
7835 ROCE_EVENT_DESTROY_QP,
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03007836 ROCE_EVENT_CREATE_UD_QP,
7837 ROCE_EVENT_DESTROY_UD_QP,
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03007838 MAX_ROCE_EVENT_OPCODE
7839};
7840
Tomer Tayara2e76992017-12-27 19:30:05 +02007841/* roce func init ramrod data */
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03007842struct roce_init_func_params {
7843 u8 ll2_queue_id;
7844 u8 cnp_vlan_priority;
7845 u8 cnp_dscp;
7846 u8 reserved;
7847 __le32 cnp_send_timeout;
7848};
7849
Tomer Tayara2e76992017-12-27 19:30:05 +02007850/* roce func init ramrod data */
Yuval Mintz05fafbf2016-08-19 09:33:31 +03007851struct roce_init_func_ramrod_data {
7852 struct rdma_init_func_ramrod_data rdma;
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03007853 struct roce_init_func_params roce;
Yuval Mintz05fafbf2016-08-19 09:33:31 +03007854};
7855
Tomer Tayara2e76992017-12-27 19:30:05 +02007856/* roce modify qp requester ramrod data */
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03007857struct roce_modify_qp_req_ramrod_data {
7858 __le16 flags;
Tomer Tayara2e76992017-12-27 19:30:05 +02007859#define ROCE_MODIFY_QP_REQ_RAMROD_DATA_MOVE_TO_ERR_FLG_MASK 0x1
7860#define ROCE_MODIFY_QP_REQ_RAMROD_DATA_MOVE_TO_ERR_FLG_SHIFT 0
7861#define ROCE_MODIFY_QP_REQ_RAMROD_DATA_MOVE_TO_SQD_FLG_MASK 0x1
7862#define ROCE_MODIFY_QP_REQ_RAMROD_DATA_MOVE_TO_SQD_FLG_SHIFT 1
7863#define ROCE_MODIFY_QP_REQ_RAMROD_DATA_EN_SQD_ASYNC_NOTIFY_MASK 0x1
7864#define ROCE_MODIFY_QP_REQ_RAMROD_DATA_EN_SQD_ASYNC_NOTIFY_SHIFT 2
7865#define ROCE_MODIFY_QP_REQ_RAMROD_DATA_P_KEY_FLG_MASK 0x1
7866#define ROCE_MODIFY_QP_REQ_RAMROD_DATA_P_KEY_FLG_SHIFT 3
7867#define ROCE_MODIFY_QP_REQ_RAMROD_DATA_ADDRESS_VECTOR_FLG_MASK 0x1
7868#define ROCE_MODIFY_QP_REQ_RAMROD_DATA_ADDRESS_VECTOR_FLG_SHIFT 4
7869#define ROCE_MODIFY_QP_REQ_RAMROD_DATA_MAX_ORD_FLG_MASK 0x1
7870#define ROCE_MODIFY_QP_REQ_RAMROD_DATA_MAX_ORD_FLG_SHIFT 5
7871#define ROCE_MODIFY_QP_REQ_RAMROD_DATA_RNR_NAK_CNT_FLG_MASK 0x1
7872#define ROCE_MODIFY_QP_REQ_RAMROD_DATA_RNR_NAK_CNT_FLG_SHIFT 6
7873#define ROCE_MODIFY_QP_REQ_RAMROD_DATA_ERR_RETRY_CNT_FLG_MASK 0x1
7874#define ROCE_MODIFY_QP_REQ_RAMROD_DATA_ERR_RETRY_CNT_FLG_SHIFT 7
7875#define ROCE_MODIFY_QP_REQ_RAMROD_DATA_ACK_TIMEOUT_FLG_MASK 0x1
7876#define ROCE_MODIFY_QP_REQ_RAMROD_DATA_ACK_TIMEOUT_FLG_SHIFT 8
7877#define ROCE_MODIFY_QP_REQ_RAMROD_DATA_PRI_FLG_MASK 0x1
7878#define ROCE_MODIFY_QP_REQ_RAMROD_DATA_PRI_FLG_SHIFT 9
7879#define ROCE_MODIFY_QP_REQ_RAMROD_DATA_PRI_MASK 0x7
7880#define ROCE_MODIFY_QP_REQ_RAMROD_DATA_PRI_SHIFT 10
Tomer Tayarda090912017-12-27 19:30:07 +02007881#define ROCE_MODIFY_QP_REQ_RAMROD_DATA_PHYSICAL_QUEUES_FLG_MASK 0x1
7882#define ROCE_MODIFY_QP_REQ_RAMROD_DATA_PHYSICAL_QUEUES_FLG_SHIFT 13
7883#define ROCE_MODIFY_QP_REQ_RAMROD_DATA_RESERVED1_MASK 0x3
7884#define ROCE_MODIFY_QP_REQ_RAMROD_DATA_RESERVED1_SHIFT 14
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03007885 u8 fields;
Tomer Tayara2e76992017-12-27 19:30:05 +02007886#define ROCE_MODIFY_QP_REQ_RAMROD_DATA_ERR_RETRY_CNT_MASK 0xF
7887#define ROCE_MODIFY_QP_REQ_RAMROD_DATA_ERR_RETRY_CNT_SHIFT 0
7888#define ROCE_MODIFY_QP_REQ_RAMROD_DATA_RNR_NAK_CNT_MASK 0xF
7889#define ROCE_MODIFY_QP_REQ_RAMROD_DATA_RNR_NAK_CNT_SHIFT 4
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03007890 u8 max_ord;
7891 u8 traffic_class;
7892 u8 hop_limit;
7893 __le16 p_key;
7894 __le32 flow_label;
7895 __le32 ack_timeout_val;
7896 __le16 mtu;
7897 __le16 reserved2;
Tomer Tayarda090912017-12-27 19:30:07 +02007898 __le32 reserved3[2];
7899 __le16 low_latency_phy_queue;
7900 __le16 regular_latency_phy_queue;
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03007901 __le32 src_gid[4];
7902 __le32 dst_gid[4];
7903};
7904
Tomer Tayara2e76992017-12-27 19:30:05 +02007905/* roce modify qp responder ramrod data */
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03007906struct roce_modify_qp_resp_ramrod_data {
7907 __le16 flags;
Tomer Tayara2e76992017-12-27 19:30:05 +02007908#define ROCE_MODIFY_QP_RESP_RAMROD_DATA_MOVE_TO_ERR_FLG_MASK 0x1
7909#define ROCE_MODIFY_QP_RESP_RAMROD_DATA_MOVE_TO_ERR_FLG_SHIFT 0
7910#define ROCE_MODIFY_QP_RESP_RAMROD_DATA_RDMA_RD_EN_MASK 0x1
7911#define ROCE_MODIFY_QP_RESP_RAMROD_DATA_RDMA_RD_EN_SHIFT 1
7912#define ROCE_MODIFY_QP_RESP_RAMROD_DATA_RDMA_WR_EN_MASK 0x1
7913#define ROCE_MODIFY_QP_RESP_RAMROD_DATA_RDMA_WR_EN_SHIFT 2
7914#define ROCE_MODIFY_QP_RESP_RAMROD_DATA_ATOMIC_EN_MASK 0x1
7915#define ROCE_MODIFY_QP_RESP_RAMROD_DATA_ATOMIC_EN_SHIFT 3
7916#define ROCE_MODIFY_QP_RESP_RAMROD_DATA_P_KEY_FLG_MASK 0x1
7917#define ROCE_MODIFY_QP_RESP_RAMROD_DATA_P_KEY_FLG_SHIFT 4
7918#define ROCE_MODIFY_QP_RESP_RAMROD_DATA_ADDRESS_VECTOR_FLG_MASK 0x1
7919#define ROCE_MODIFY_QP_RESP_RAMROD_DATA_ADDRESS_VECTOR_FLG_SHIFT 5
7920#define ROCE_MODIFY_QP_RESP_RAMROD_DATA_MAX_IRD_FLG_MASK 0x1
7921#define ROCE_MODIFY_QP_RESP_RAMROD_DATA_MAX_IRD_FLG_SHIFT 6
7922#define ROCE_MODIFY_QP_RESP_RAMROD_DATA_PRI_FLG_MASK 0x1
7923#define ROCE_MODIFY_QP_RESP_RAMROD_DATA_PRI_FLG_SHIFT 7
7924#define ROCE_MODIFY_QP_RESP_RAMROD_DATA_MIN_RNR_NAK_TIMER_FLG_MASK 0x1
7925#define ROCE_MODIFY_QP_RESP_RAMROD_DATA_MIN_RNR_NAK_TIMER_FLG_SHIFT 8
7926#define ROCE_MODIFY_QP_RESP_RAMROD_DATA_RDMA_OPS_EN_FLG_MASK 0x1
7927#define ROCE_MODIFY_QP_RESP_RAMROD_DATA_RDMA_OPS_EN_FLG_SHIFT 9
Tomer Tayarda090912017-12-27 19:30:07 +02007928#define ROCE_MODIFY_QP_RESP_RAMROD_DATA_PHYSICAL_QUEUES_FLG_MASK 0x1
7929#define ROCE_MODIFY_QP_RESP_RAMROD_DATA_PHYSICAL_QUEUES_FLG_SHIFT 10
7930#define ROCE_MODIFY_QP_RESP_RAMROD_DATA_RESERVED1_MASK 0x1F
7931#define ROCE_MODIFY_QP_RESP_RAMROD_DATA_RESERVED1_SHIFT 11
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03007932 u8 fields;
Tomer Tayara2e76992017-12-27 19:30:05 +02007933#define ROCE_MODIFY_QP_RESP_RAMROD_DATA_PRI_MASK 0x7
7934#define ROCE_MODIFY_QP_RESP_RAMROD_DATA_PRI_SHIFT 0
7935#define ROCE_MODIFY_QP_RESP_RAMROD_DATA_MIN_RNR_NAK_TIMER_MASK 0x1F
7936#define ROCE_MODIFY_QP_RESP_RAMROD_DATA_MIN_RNR_NAK_TIMER_SHIFT 3
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03007937 u8 max_ird;
7938 u8 traffic_class;
7939 u8 hop_limit;
7940 __le16 p_key;
7941 __le32 flow_label;
7942 __le16 mtu;
Tomer Tayarda090912017-12-27 19:30:07 +02007943 __le16 low_latency_phy_queue;
7944 __le16 regular_latency_phy_queue;
7945 u8 reserved2[6];
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03007946 __le32 src_gid[4];
7947 __le32 dst_gid[4];
7948};
7949
Tomer Tayara2e76992017-12-27 19:30:05 +02007950/* RoCE query qp requester output params */
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03007951struct roce_query_qp_req_output_params {
7952 __le32 psn;
7953 __le32 flags;
Tomer Tayara2e76992017-12-27 19:30:05 +02007954#define ROCE_QUERY_QP_REQ_OUTPUT_PARAMS_ERR_FLG_MASK 0x1
7955#define ROCE_QUERY_QP_REQ_OUTPUT_PARAMS_ERR_FLG_SHIFT 0
7956#define ROCE_QUERY_QP_REQ_OUTPUT_PARAMS_SQ_DRAINING_FLG_MASK 0x1
7957#define ROCE_QUERY_QP_REQ_OUTPUT_PARAMS_SQ_DRAINING_FLG_SHIFT 1
7958#define ROCE_QUERY_QP_REQ_OUTPUT_PARAMS_RESERVED0_MASK 0x3FFFFFFF
7959#define ROCE_QUERY_QP_REQ_OUTPUT_PARAMS_RESERVED0_SHIFT 2
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03007960};
7961
Tomer Tayara2e76992017-12-27 19:30:05 +02007962/* RoCE query qp requester ramrod data */
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03007963struct roce_query_qp_req_ramrod_data {
7964 struct regpair output_params_addr;
7965};
7966
Tomer Tayara2e76992017-12-27 19:30:05 +02007967/* RoCE query qp responder output params */
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03007968struct roce_query_qp_resp_output_params {
7969 __le32 psn;
7970 __le32 err_flag;
7971#define ROCE_QUERY_QP_RESP_OUTPUT_PARAMS_ERROR_FLG_MASK 0x1
7972#define ROCE_QUERY_QP_RESP_OUTPUT_PARAMS_ERROR_FLG_SHIFT 0
7973#define ROCE_QUERY_QP_RESP_OUTPUT_PARAMS_RESERVED0_MASK 0x7FFFFFFF
7974#define ROCE_QUERY_QP_RESP_OUTPUT_PARAMS_RESERVED0_SHIFT 1
7975};
7976
Tomer Tayara2e76992017-12-27 19:30:05 +02007977/* RoCE query qp responder ramrod data */
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03007978struct roce_query_qp_resp_ramrod_data {
7979 struct regpair output_params_addr;
7980};
7981
Tomer Tayara2e76992017-12-27 19:30:05 +02007982/* ROCE ramrod command IDs */
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03007983enum roce_ramrod_cmd_id {
7984 ROCE_RAMROD_CREATE_QP = 11,
7985 ROCE_RAMROD_MODIFY_QP,
7986 ROCE_RAMROD_QUERY_QP,
7987 ROCE_RAMROD_DESTROY_QP,
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03007988 ROCE_RAMROD_CREATE_UD_QP,
7989 ROCE_RAMROD_DESTROY_UD_QP,
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03007990 MAX_ROCE_RAMROD_CMD_ID
7991};
7992
Michal Kalderon50bc60c2018-03-28 11:42:16 +03007993struct e4_xstorm_roce_conn_ag_ctx_dq_ext_ld_part {
7994 u8 reserved0;
7995 u8 state;
7996 u8 flags0;
7997#define E4XSTORMROCECONNAGCTXDQEXTLDPART_EXIST_IN_QM0_MASK 0x1
7998#define E4XSTORMROCECONNAGCTXDQEXTLDPART_EXIST_IN_QM0_SHIFT 0
7999#define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT1_MASK 0x1
8000#define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT1_SHIFT 1
8001#define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT2_MASK 0x1
8002#define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT2_SHIFT 2
8003#define E4XSTORMROCECONNAGCTXDQEXTLDPART_EXIST_IN_QM3_MASK 0x1
8004#define E4XSTORMROCECONNAGCTXDQEXTLDPART_EXIST_IN_QM3_SHIFT 3
8005#define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT4_MASK 0x1
8006#define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT4_SHIFT 4
8007#define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT5_MASK 0x1
8008#define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT5_SHIFT 5
8009#define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT6_MASK 0x1
8010#define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT6_SHIFT 6
8011#define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT7_MASK 0x1
8012#define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT7_SHIFT 7
8013 u8 flags1;
8014#define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT8_MASK 0x1
8015#define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT8_SHIFT 0
8016#define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT9_MASK 0x1
8017#define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT9_SHIFT 1
8018#define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT10_MASK 0x1
8019#define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT10_SHIFT 2
8020#define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT11_MASK 0x1
8021#define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT11_SHIFT 3
8022#define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT12_MASK 0x1
8023#define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT12_SHIFT 4
8024#define E4XSTORMROCECONNAGCTXDQEXTLDPART_MSEM_FLUSH_MASK 0x1
8025#define E4XSTORMROCECONNAGCTXDQEXTLDPART_MSEM_FLUSH_SHIFT 5
8026#define E4XSTORMROCECONNAGCTXDQEXTLDPART_MSDM_FLUSH_MASK 0x1
8027#define E4XSTORMROCECONNAGCTXDQEXTLDPART_MSDM_FLUSH_SHIFT 6
8028#define E4XSTORMROCECONNAGCTXDQEXTLDPART_YSTORM_FLUSH_MASK 0x1
8029#define E4XSTORMROCECONNAGCTXDQEXTLDPART_YSTORM_FLUSH_SHIFT 7
8030 u8 flags2;
8031#define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF0_MASK 0x3
8032#define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF0_SHIFT 0
8033#define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF1_MASK 0x3
8034#define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF1_SHIFT 2
8035#define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF2_MASK 0x3
8036#define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF2_SHIFT 4
8037#define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF3_MASK 0x3
8038#define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF3_SHIFT 6
8039 u8 flags3;
8040#define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF4_MASK 0x3
8041#define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF4_SHIFT 0
8042#define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF5_MASK 0x3
8043#define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF5_SHIFT 2
8044#define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF6_MASK 0x3
8045#define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF6_SHIFT 4
8046#define E4XSTORMROCECONNAGCTXDQEXTLDPART_FLUSH_Q0_CF_MASK 0x3
8047#define E4XSTORMROCECONNAGCTXDQEXTLDPART_FLUSH_Q0_CF_SHIFT 6
8048 u8 flags4;
8049#define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF8_MASK 0x3
8050#define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF8_SHIFT 0
8051#define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF9_MASK 0x3
8052#define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF9_SHIFT 2
8053#define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF10_MASK 0x3
8054#define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF10_SHIFT 4
8055#define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF11_MASK 0x3
8056#define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF11_SHIFT 6
8057 u8 flags5;
8058#define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF12_MASK 0x3
8059#define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF12_SHIFT 0
8060#define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF13_MASK 0x3
8061#define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF13_SHIFT 2
8062#define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF14_MASK 0x3
8063#define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF14_SHIFT 4
8064#define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF15_MASK 0x3
8065#define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF15_SHIFT 6
8066 u8 flags6;
8067#define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF16_MASK 0x3
8068#define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF16_SHIFT 0
8069#define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF17_MASK 0x3
8070#define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF17_SHIFT 2
8071#define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF18_MASK 0x3
8072#define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF18_SHIFT 4
8073#define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF19_MASK 0x3
8074#define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF19_SHIFT 6
8075 u8 flags7;
8076#define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF20_MASK 0x3
8077#define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF20_SHIFT 0
8078#define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF21_MASK 0x3
8079#define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF21_SHIFT 2
8080#define E4XSTORMROCECONNAGCTXDQEXTLDPART_SLOW_PATH_MASK 0x3
8081#define E4XSTORMROCECONNAGCTXDQEXTLDPART_SLOW_PATH_SHIFT 4
8082#define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF0EN_MASK 0x1
8083#define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF0EN_SHIFT 6
8084#define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF1EN_MASK 0x1
8085#define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF1EN_SHIFT 7
8086 u8 flags8;
8087#define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF2EN_MASK 0x1
8088#define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF2EN_SHIFT 0
8089#define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF3EN_MASK 0x1
8090#define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF3EN_SHIFT 1
8091#define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF4EN_MASK 0x1
8092#define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF4EN_SHIFT 2
8093#define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF5EN_MASK 0x1
8094#define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF5EN_SHIFT 3
8095#define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF6EN_MASK 0x1
8096#define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF6EN_SHIFT 4
8097#define E4XSTORMROCECONNAGCTXDQEXTLDPART_FLUSH_Q0_CF_EN_MASK 0x1
8098#define E4XSTORMROCECONNAGCTXDQEXTLDPART_FLUSH_Q0_CF_EN_SHIFT 5
8099#define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF8EN_MASK 0x1
8100#define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF8EN_SHIFT 6
8101#define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF9EN_MASK 0x1
8102#define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF9EN_SHIFT 7
8103 u8 flags9;
8104#define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF10EN_MASK 0x1
8105#define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF10EN_SHIFT 0
8106#define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF11EN_MASK 0x1
8107#define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF11EN_SHIFT 1
8108#define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF12EN_MASK 0x1
8109#define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF12EN_SHIFT 2
8110#define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF13EN_MASK 0x1
8111#define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF13EN_SHIFT 3
8112#define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF14EN_MASK 0x1
8113#define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF14EN_SHIFT 4
8114#define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF15EN_MASK 0x1
8115#define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF15EN_SHIFT 5
8116#define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF16EN_MASK 0x1
8117#define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF16EN_SHIFT 6
8118#define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF17EN_MASK 0x1
8119#define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF17EN_SHIFT 7
8120 u8 flags10;
8121#define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF18EN_MASK 0x1
8122#define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF18EN_SHIFT 0
8123#define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF19EN_MASK 0x1
8124#define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF19EN_SHIFT 1
8125#define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF20EN_MASK 0x1
8126#define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF20EN_SHIFT 2
8127#define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF21EN_MASK 0x1
8128#define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF21EN_SHIFT 3
8129#define E4XSTORMROCECONNAGCTXDQEXTLDPART_SLOW_PATH_EN_MASK 0x1
8130#define E4XSTORMROCECONNAGCTXDQEXTLDPART_SLOW_PATH_EN_SHIFT 4
8131#define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF23EN_MASK 0x1
8132#define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF23EN_SHIFT 5
8133#define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE0EN_MASK 0x1
8134#define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE0EN_SHIFT 6
8135#define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE1EN_MASK 0x1
8136#define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE1EN_SHIFT 7
8137 u8 flags11;
8138#define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE2EN_MASK 0x1
8139#define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE2EN_SHIFT 0
8140#define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE3EN_MASK 0x1
8141#define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE3EN_SHIFT 1
8142#define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE4EN_MASK 0x1
8143#define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE4EN_SHIFT 2
8144#define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE5EN_MASK 0x1
8145#define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE5EN_SHIFT 3
8146#define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE6EN_MASK 0x1
8147#define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE6EN_SHIFT 4
8148#define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE7EN_MASK 0x1
8149#define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE7EN_SHIFT 5
8150#define E4XSTORMROCECONNAGCTXDQEXTLDPART_A0_RESERVED1_MASK 0x1
8151#define E4XSTORMROCECONNAGCTXDQEXTLDPART_A0_RESERVED1_SHIFT 6
8152#define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE9EN_MASK 0x1
8153#define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE9EN_SHIFT 7
8154 u8 flags12;
8155#define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE10EN_MASK 0x1
8156#define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE10EN_SHIFT 0
8157#define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE11EN_MASK 0x1
8158#define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE11EN_SHIFT 1
8159#define E4XSTORMROCECONNAGCTXDQEXTLDPART_A0_RESERVED2_MASK 0x1
8160#define E4XSTORMROCECONNAGCTXDQEXTLDPART_A0_RESERVED2_SHIFT 2
8161#define E4XSTORMROCECONNAGCTXDQEXTLDPART_A0_RESERVED3_MASK 0x1
8162#define E4XSTORMROCECONNAGCTXDQEXTLDPART_A0_RESERVED3_SHIFT 3
8163#define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE14EN_MASK 0x1
8164#define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE14EN_SHIFT 4
8165#define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE15EN_MASK 0x1
8166#define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE15EN_SHIFT 5
8167#define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE16EN_MASK 0x1
8168#define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE16EN_SHIFT 6
8169#define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE17EN_MASK 0x1
8170#define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE17EN_SHIFT 7
8171 u8 flags13;
8172#define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE18EN_MASK 0x1
8173#define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE18EN_SHIFT 0
8174#define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE19EN_MASK 0x1
8175#define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE19EN_SHIFT 1
8176#define E4XSTORMROCECONNAGCTXDQEXTLDPART_A0_RESERVED4_MASK 0x1
8177#define E4XSTORMROCECONNAGCTXDQEXTLDPART_A0_RESERVED4_SHIFT 2
8178#define E4XSTORMROCECONNAGCTXDQEXTLDPART_A0_RESERVED5_MASK 0x1
8179#define E4XSTORMROCECONNAGCTXDQEXTLDPART_A0_RESERVED5_SHIFT 3
8180#define E4XSTORMROCECONNAGCTXDQEXTLDPART_A0_RESERVED6_MASK 0x1
8181#define E4XSTORMROCECONNAGCTXDQEXTLDPART_A0_RESERVED6_SHIFT 4
8182#define E4XSTORMROCECONNAGCTXDQEXTLDPART_A0_RESERVED7_MASK 0x1
8183#define E4XSTORMROCECONNAGCTXDQEXTLDPART_A0_RESERVED7_SHIFT 5
8184#define E4XSTORMROCECONNAGCTXDQEXTLDPART_A0_RESERVED8_MASK 0x1
8185#define E4XSTORMROCECONNAGCTXDQEXTLDPART_A0_RESERVED8_SHIFT 6
8186#define E4XSTORMROCECONNAGCTXDQEXTLDPART_A0_RESERVED9_MASK 0x1
8187#define E4XSTORMROCECONNAGCTXDQEXTLDPART_A0_RESERVED9_SHIFT 7
8188 u8 flags14;
8189#define E4XSTORMROCECONNAGCTXDQEXTLDPART_MIGRATION_MASK 0x1
8190#define E4XSTORMROCECONNAGCTXDQEXTLDPART_MIGRATION_SHIFT 0
8191#define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT17_MASK 0x1
8192#define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT17_SHIFT 1
8193#define E4XSTORMROCECONNAGCTXDQEXTLDPART_DPM_PORT_NUM_MASK 0x3
8194#define E4XSTORMROCECONNAGCTXDQEXTLDPART_DPM_PORT_NUM_SHIFT 2
8195#define E4XSTORMROCECONNAGCTXDQEXTLDPART_RESERVED_MASK 0x1
8196#define E4XSTORMROCECONNAGCTXDQEXTLDPART_RESERVED_SHIFT 4
8197#define E4XSTORMROCECONNAGCTXDQEXTLDPART_ROCE_EDPM_ENABLE_MASK 0x1
8198#define E4XSTORMROCECONNAGCTXDQEXTLDPART_ROCE_EDPM_ENABLE_SHIFT 5
8199#define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF23_MASK 0x3
8200#define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF23_SHIFT 6
8201 u8 byte2;
8202 __le16 physical_q0;
8203 __le16 word1;
8204 __le16 word2;
8205 __le16 word3;
8206 __le16 word4;
8207 __le16 word5;
8208 __le16 conn_dpi;
8209 u8 byte3;
8210 u8 byte4;
8211 u8 byte5;
8212 u8 byte6;
8213 __le32 reg0;
8214 __le32 reg1;
8215 __le32 reg2;
8216 __le32 snd_nxt_psn;
8217 __le32 reg4;
8218};
8219
8220struct e4_mstorm_roce_conn_ag_ctx {
8221 u8 byte0;
8222 u8 byte1;
8223 u8 flags0;
8224#define E4_MSTORM_ROCE_CONN_AG_CTX_BIT0_MASK 0x1
8225#define E4_MSTORM_ROCE_CONN_AG_CTX_BIT0_SHIFT 0
8226#define E4_MSTORM_ROCE_CONN_AG_CTX_BIT1_MASK 0x1
8227#define E4_MSTORM_ROCE_CONN_AG_CTX_BIT1_SHIFT 1
8228#define E4_MSTORM_ROCE_CONN_AG_CTX_CF0_MASK 0x3
8229#define E4_MSTORM_ROCE_CONN_AG_CTX_CF0_SHIFT 2
8230#define E4_MSTORM_ROCE_CONN_AG_CTX_CF1_MASK 0x3
8231#define E4_MSTORM_ROCE_CONN_AG_CTX_CF1_SHIFT 4
8232#define E4_MSTORM_ROCE_CONN_AG_CTX_CF2_MASK 0x3
8233#define E4_MSTORM_ROCE_CONN_AG_CTX_CF2_SHIFT 6
8234 u8 flags1;
8235#define E4_MSTORM_ROCE_CONN_AG_CTX_CF0EN_MASK 0x1
8236#define E4_MSTORM_ROCE_CONN_AG_CTX_CF0EN_SHIFT 0
8237#define E4_MSTORM_ROCE_CONN_AG_CTX_CF1EN_MASK 0x1
8238#define E4_MSTORM_ROCE_CONN_AG_CTX_CF1EN_SHIFT 1
8239#define E4_MSTORM_ROCE_CONN_AG_CTX_CF2EN_MASK 0x1
8240#define E4_MSTORM_ROCE_CONN_AG_CTX_CF2EN_SHIFT 2
8241#define E4_MSTORM_ROCE_CONN_AG_CTX_RULE0EN_MASK 0x1
8242#define E4_MSTORM_ROCE_CONN_AG_CTX_RULE0EN_SHIFT 3
8243#define E4_MSTORM_ROCE_CONN_AG_CTX_RULE1EN_MASK 0x1
8244#define E4_MSTORM_ROCE_CONN_AG_CTX_RULE1EN_SHIFT 4
8245#define E4_MSTORM_ROCE_CONN_AG_CTX_RULE2EN_MASK 0x1
8246#define E4_MSTORM_ROCE_CONN_AG_CTX_RULE2EN_SHIFT 5
8247#define E4_MSTORM_ROCE_CONN_AG_CTX_RULE3EN_MASK 0x1
8248#define E4_MSTORM_ROCE_CONN_AG_CTX_RULE3EN_SHIFT 6
8249#define E4_MSTORM_ROCE_CONN_AG_CTX_RULE4EN_MASK 0x1
8250#define E4_MSTORM_ROCE_CONN_AG_CTX_RULE4EN_SHIFT 7
8251 __le16 word0;
8252 __le16 word1;
8253 __le32 reg0;
8254 __le32 reg1;
8255};
8256
Tomer Tayar21dd79e2017-12-27 19:30:06 +02008257struct e4_mstorm_roce_req_conn_ag_ctx {
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03008258 u8 byte0;
8259 u8 byte1;
8260 u8 flags0;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02008261#define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_BIT0_MASK 0x1
8262#define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_BIT0_SHIFT 0
8263#define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_BIT1_MASK 0x1
8264#define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_BIT1_SHIFT 1
8265#define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_CF0_MASK 0x3
8266#define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_CF0_SHIFT 2
8267#define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_CF1_MASK 0x3
8268#define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_CF1_SHIFT 4
8269#define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_CF2_MASK 0x3
8270#define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_CF2_SHIFT 6
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03008271 u8 flags1;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02008272#define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_CF0EN_MASK 0x1
8273#define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_CF0EN_SHIFT 0
8274#define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_CF1EN_MASK 0x1
8275#define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_CF1EN_SHIFT 1
8276#define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_CF2EN_MASK 0x1
8277#define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_CF2EN_SHIFT 2
8278#define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_RULE0EN_MASK 0x1
8279#define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_RULE0EN_SHIFT 3
8280#define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_RULE1EN_MASK 0x1
8281#define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_RULE1EN_SHIFT 4
8282#define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_RULE2EN_MASK 0x1
8283#define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_RULE2EN_SHIFT 5
8284#define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_RULE3EN_MASK 0x1
8285#define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_RULE3EN_SHIFT 6
8286#define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_RULE4EN_MASK 0x1
8287#define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_RULE4EN_SHIFT 7
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03008288 __le16 word0;
8289 __le16 word1;
8290 __le32 reg0;
8291 __le32 reg1;
8292};
8293
Tomer Tayar21dd79e2017-12-27 19:30:06 +02008294struct e4_mstorm_roce_resp_conn_ag_ctx {
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03008295 u8 byte0;
8296 u8 byte1;
8297 u8 flags0;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02008298#define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_BIT0_MASK 0x1
8299#define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_BIT0_SHIFT 0
8300#define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_BIT1_MASK 0x1
8301#define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_BIT1_SHIFT 1
8302#define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_CF0_MASK 0x3
8303#define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_CF0_SHIFT 2
8304#define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_CF1_MASK 0x3
8305#define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_CF1_SHIFT 4
8306#define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_CF2_MASK 0x3
8307#define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_CF2_SHIFT 6
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03008308 u8 flags1;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02008309#define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_CF0EN_MASK 0x1
8310#define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_CF0EN_SHIFT 0
8311#define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_CF1EN_MASK 0x1
8312#define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_CF1EN_SHIFT 1
8313#define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_CF2EN_MASK 0x1
8314#define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_CF2EN_SHIFT 2
8315#define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_RULE0EN_MASK 0x1
8316#define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_RULE0EN_SHIFT 3
8317#define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_RULE1EN_MASK 0x1
8318#define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_RULE1EN_SHIFT 4
8319#define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_RULE2EN_MASK 0x1
8320#define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_RULE2EN_SHIFT 5
8321#define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_RULE3EN_MASK 0x1
8322#define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_RULE3EN_SHIFT 6
8323#define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_RULE4EN_MASK 0x1
8324#define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_RULE4EN_SHIFT 7
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03008325 __le16 word0;
8326 __le16 word1;
8327 __le32 reg0;
8328 __le32 reg1;
8329};
8330
Tomer Tayar21dd79e2017-12-27 19:30:06 +02008331struct e4_tstorm_roce_req_conn_ag_ctx {
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03008332 u8 reserved0;
8333 u8 state;
8334 u8 flags0;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02008335#define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_EXIST_IN_QM0_MASK 0x1
8336#define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_EXIST_IN_QM0_SHIFT 0
8337#define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_RX_ERROR_OCCURRED_MASK 0x1
8338#define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_RX_ERROR_OCCURRED_SHIFT 1
8339#define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_TX_CQE_ERROR_OCCURRED_MASK 0x1
8340#define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_TX_CQE_ERROR_OCCURRED_SHIFT 2
8341#define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_BIT3_MASK 0x1
8342#define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_BIT3_SHIFT 3
8343#define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_MSTORM_FLUSH_MASK 0x1
8344#define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_MSTORM_FLUSH_SHIFT 4
8345#define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_CACHED_ORQ_MASK 0x1
8346#define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_CACHED_ORQ_SHIFT 5
8347#define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_TIMER_CF_MASK 0x3
8348#define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_TIMER_CF_SHIFT 6
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03008349 u8 flags1;
Michal Kalderon50bc60c2018-03-28 11:42:16 +03008350#define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_MSTORM_FLUSH_CF_MASK 0x3
8351#define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_MSTORM_FLUSH_CF_SHIFT 0
Tomer Tayar21dd79e2017-12-27 19:30:06 +02008352#define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_FLUSH_SQ_CF_MASK 0x3
8353#define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_FLUSH_SQ_CF_SHIFT 2
8354#define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_TIMER_STOP_ALL_CF_MASK 0x3
8355#define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_TIMER_STOP_ALL_CF_SHIFT 4
8356#define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_FLUSH_Q0_CF_MASK 0x3
8357#define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_FLUSH_Q0_CF_SHIFT 6
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03008358 u8 flags2;
Michal Kalderon50bc60c2018-03-28 11:42:16 +03008359#define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_FORCE_COMP_CF_MASK 0x3
8360#define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_FORCE_COMP_CF_SHIFT 0
Tomer Tayar21dd79e2017-12-27 19:30:06 +02008361#define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_SET_TIMER_CF_MASK 0x3
8362#define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_SET_TIMER_CF_SHIFT 2
8363#define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_TX_ASYNC_ERROR_CF_MASK 0x3
8364#define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_TX_ASYNC_ERROR_CF_SHIFT 4
8365#define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_RXMIT_DONE_CF_MASK 0x3
8366#define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_RXMIT_DONE_CF_SHIFT 6
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03008367 u8 flags3;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02008368#define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_ERROR_SCAN_COMPLETED_CF_MASK 0x3
8369#define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_ERROR_SCAN_COMPLETED_CF_SHIFT 0
8370#define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_SQ_DRAIN_COMPLETED_CF_MASK 0x3
8371#define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_SQ_DRAIN_COMPLETED_CF_SHIFT 2
8372#define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_TIMER_CF_EN_MASK 0x1
8373#define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_TIMER_CF_EN_SHIFT 4
Michal Kalderon50bc60c2018-03-28 11:42:16 +03008374#define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_MSTORM_FLUSH_CF_EN_MASK 0x1
8375#define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_MSTORM_FLUSH_CF_EN_SHIFT 5
Tomer Tayar21dd79e2017-12-27 19:30:06 +02008376#define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_FLUSH_SQ_CF_EN_MASK 0x1
8377#define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_FLUSH_SQ_CF_EN_SHIFT 6
8378#define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_TIMER_STOP_ALL_CF_EN_MASK 0x1
8379#define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_TIMER_STOP_ALL_CF_EN_SHIFT 7
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03008380 u8 flags4;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02008381#define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_FLUSH_Q0_CF_EN_MASK 0x1
8382#define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_FLUSH_Q0_CF_EN_SHIFT 0
Michal Kalderon50bc60c2018-03-28 11:42:16 +03008383#define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_FORCE_COMP_CF_EN_MASK 0x1
8384#define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_FORCE_COMP_CF_EN_SHIFT 1
Tomer Tayar21dd79e2017-12-27 19:30:06 +02008385#define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_SET_TIMER_CF_EN_MASK 0x1
8386#define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_SET_TIMER_CF_EN_SHIFT 2
8387#define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_TX_ASYNC_ERROR_CF_EN_MASK 0x1
8388#define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_TX_ASYNC_ERROR_CF_EN_SHIFT 3
8389#define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_RXMIT_DONE_CF_EN_MASK 0x1
8390#define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_RXMIT_DONE_CF_EN_SHIFT 4
8391#define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_ERROR_SCAN_COMPLETED_CF_EN_MASK 0x1
8392#define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_ERROR_SCAN_COMPLETED_CF_EN_SHIFT 5
8393#define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_SQ_DRAIN_COMPLETED_CF_EN_MASK 0x1
8394#define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_SQ_DRAIN_COMPLETED_CF_EN_SHIFT 6
8395#define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_RULE0EN_MASK 0x1
8396#define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_RULE0EN_SHIFT 7
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03008397 u8 flags5;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02008398#define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_RULE1EN_MASK 0x1
8399#define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_RULE1EN_SHIFT 0
8400#define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_RULE2EN_MASK 0x1
8401#define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_RULE2EN_SHIFT 1
8402#define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_RULE3EN_MASK 0x1
8403#define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_RULE3EN_SHIFT 2
8404#define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_RULE4EN_MASK 0x1
8405#define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_RULE4EN_SHIFT 3
8406#define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_RULE5EN_MASK 0x1
8407#define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_RULE5EN_SHIFT 4
8408#define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_SND_SQ_CONS_EN_MASK 0x1
8409#define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_SND_SQ_CONS_EN_SHIFT 5
8410#define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_RULE7EN_MASK 0x1
8411#define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_RULE7EN_SHIFT 6
8412#define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_RULE8EN_MASK 0x1
8413#define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_RULE8EN_SHIFT 7
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03008414 __le32 reg0;
8415 __le32 snd_nxt_psn;
8416 __le32 snd_max_psn;
8417 __le32 orq_prod;
8418 __le32 reg4;
8419 __le32 reg5;
8420 __le32 reg6;
8421 __le32 reg7;
8422 __le32 reg8;
8423 u8 tx_cqe_error_type;
8424 u8 orq_cache_idx;
8425 __le16 snd_sq_cons_th;
8426 u8 byte4;
8427 u8 byte5;
8428 __le16 snd_sq_cons;
Tomer Tayarda090912017-12-27 19:30:07 +02008429 __le16 conn_dpi;
Michal Kalderon50bc60c2018-03-28 11:42:16 +03008430 __le16 force_comp_cons;
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03008431 __le32 reg9;
8432 __le32 reg10;
8433};
8434
Tomer Tayar21dd79e2017-12-27 19:30:06 +02008435struct e4_tstorm_roce_resp_conn_ag_ctx {
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03008436 u8 byte0;
8437 u8 state;
8438 u8 flags0;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02008439#define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_EXIST_IN_QM0_MASK 0x1
8440#define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_EXIST_IN_QM0_SHIFT 0
8441#define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RX_ERROR_NOTIFY_REQUESTER_MASK 0x1
8442#define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RX_ERROR_NOTIFY_REQUESTER_SHIFT 1
8443#define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_BIT2_MASK 0x1
8444#define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_BIT2_SHIFT 2
8445#define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_BIT3_MASK 0x1
8446#define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_BIT3_SHIFT 3
8447#define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_MSTORM_FLUSH_MASK 0x1
8448#define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_MSTORM_FLUSH_SHIFT 4
8449#define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_BIT5_MASK 0x1
8450#define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_BIT5_SHIFT 5
8451#define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF0_MASK 0x3
8452#define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF0_SHIFT 6
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03008453 u8 flags1;
Michal Kalderon50bc60c2018-03-28 11:42:16 +03008454#define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_MSTORM_FLUSH_CF_MASK 0x3
8455#define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_MSTORM_FLUSH_CF_SHIFT 0
Tomer Tayar21dd79e2017-12-27 19:30:06 +02008456#define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_TX_ERROR_CF_MASK 0x3
8457#define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_TX_ERROR_CF_SHIFT 2
8458#define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF3_MASK 0x3
8459#define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF3_SHIFT 4
8460#define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_FLUSH_Q0_CF_MASK 0x3
8461#define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_FLUSH_Q0_CF_SHIFT 6
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03008462 u8 flags2;
Michal Kalderon50bc60c2018-03-28 11:42:16 +03008463#define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RX_ERROR_CF_MASK 0x3
8464#define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RX_ERROR_CF_SHIFT 0
Tomer Tayar21dd79e2017-12-27 19:30:06 +02008465#define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF6_MASK 0x3
8466#define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF6_SHIFT 2
8467#define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF7_MASK 0x3
8468#define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF7_SHIFT 4
8469#define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF8_MASK 0x3
8470#define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF8_SHIFT 6
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03008471 u8 flags3;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02008472#define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF9_MASK 0x3
8473#define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF9_SHIFT 0
8474#define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF10_MASK 0x3
8475#define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF10_SHIFT 2
8476#define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF0EN_MASK 0x1
8477#define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF0EN_SHIFT 4
Michal Kalderon50bc60c2018-03-28 11:42:16 +03008478#define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_MSTORM_FLUSH_CF_EN_MASK 0x1
8479#define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_MSTORM_FLUSH_CF_EN_SHIFT 5
Tomer Tayar21dd79e2017-12-27 19:30:06 +02008480#define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_TX_ERROR_CF_EN_MASK 0x1
8481#define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_TX_ERROR_CF_EN_SHIFT 6
8482#define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF3EN_MASK 0x1
8483#define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF3EN_SHIFT 7
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03008484 u8 flags4;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02008485#define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_FLUSH_Q0_CF_EN_MASK 0x1
8486#define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_FLUSH_Q0_CF_EN_SHIFT 0
Michal Kalderon50bc60c2018-03-28 11:42:16 +03008487#define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RX_ERROR_CF_EN_MASK 0x1
8488#define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RX_ERROR_CF_EN_SHIFT 1
Tomer Tayar21dd79e2017-12-27 19:30:06 +02008489#define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF6EN_MASK 0x1
8490#define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF6EN_SHIFT 2
8491#define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF7EN_MASK 0x1
8492#define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF7EN_SHIFT 3
8493#define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF8EN_MASK 0x1
8494#define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF8EN_SHIFT 4
8495#define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF9EN_MASK 0x1
8496#define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF9EN_SHIFT 5
8497#define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF10EN_MASK 0x1
8498#define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF10EN_SHIFT 6
8499#define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RULE0EN_MASK 0x1
8500#define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RULE0EN_SHIFT 7
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03008501 u8 flags5;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02008502#define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RULE1EN_MASK 0x1
8503#define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RULE1EN_SHIFT 0
8504#define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RULE2EN_MASK 0x1
8505#define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RULE2EN_SHIFT 1
8506#define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RULE3EN_MASK 0x1
8507#define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RULE3EN_SHIFT 2
8508#define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RULE4EN_MASK 0x1
8509#define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RULE4EN_SHIFT 3
8510#define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RULE5EN_MASK 0x1
8511#define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RULE5EN_SHIFT 4
8512#define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RQ_RULE_EN_MASK 0x1
8513#define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RQ_RULE_EN_SHIFT 5
8514#define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RULE7EN_MASK 0x1
8515#define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RULE7EN_SHIFT 6
8516#define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RULE8EN_MASK 0x1
8517#define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RULE8EN_SHIFT 7
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03008518 __le32 psn_and_rxmit_id_echo;
8519 __le32 reg1;
8520 __le32 reg2;
8521 __le32 reg3;
8522 __le32 reg4;
8523 __le32 reg5;
8524 __le32 reg6;
8525 __le32 reg7;
8526 __le32 reg8;
8527 u8 tx_async_error_type;
8528 u8 byte3;
8529 __le16 rq_cons;
8530 u8 byte4;
8531 u8 byte5;
8532 __le16 rq_prod;
8533 __le16 conn_dpi;
8534 __le16 irq_cons;
8535 __le32 num_invlidated_mw;
8536 __le32 reg10;
8537};
8538
Tomer Tayar21dd79e2017-12-27 19:30:06 +02008539struct e4_ustorm_roce_req_conn_ag_ctx {
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03008540 u8 byte0;
8541 u8 byte1;
8542 u8 flags0;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02008543#define E4_USTORM_ROCE_REQ_CONN_AG_CTX_BIT0_MASK 0x1
8544#define E4_USTORM_ROCE_REQ_CONN_AG_CTX_BIT0_SHIFT 0
8545#define E4_USTORM_ROCE_REQ_CONN_AG_CTX_BIT1_MASK 0x1
8546#define E4_USTORM_ROCE_REQ_CONN_AG_CTX_BIT1_SHIFT 1
8547#define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF0_MASK 0x3
8548#define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF0_SHIFT 2
8549#define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF1_MASK 0x3
8550#define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF1_SHIFT 4
8551#define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF2_MASK 0x3
8552#define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF2_SHIFT 6
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03008553 u8 flags1;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02008554#define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF3_MASK 0x3
8555#define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF3_SHIFT 0
8556#define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF4_MASK 0x3
8557#define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF4_SHIFT 2
8558#define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF5_MASK 0x3
8559#define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF5_SHIFT 4
8560#define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF6_MASK 0x3
8561#define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF6_SHIFT 6
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03008562 u8 flags2;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02008563#define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF0EN_MASK 0x1
8564#define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF0EN_SHIFT 0
8565#define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF1EN_MASK 0x1
8566#define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF1EN_SHIFT 1
8567#define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF2EN_MASK 0x1
8568#define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF2EN_SHIFT 2
8569#define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF3EN_MASK 0x1
8570#define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF3EN_SHIFT 3
8571#define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF4EN_MASK 0x1
8572#define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF4EN_SHIFT 4
8573#define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF5EN_MASK 0x1
8574#define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF5EN_SHIFT 5
8575#define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF6EN_MASK 0x1
8576#define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF6EN_SHIFT 6
8577#define E4_USTORM_ROCE_REQ_CONN_AG_CTX_RULE0EN_MASK 0x1
8578#define E4_USTORM_ROCE_REQ_CONN_AG_CTX_RULE0EN_SHIFT 7
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03008579 u8 flags3;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02008580#define E4_USTORM_ROCE_REQ_CONN_AG_CTX_RULE1EN_MASK 0x1
8581#define E4_USTORM_ROCE_REQ_CONN_AG_CTX_RULE1EN_SHIFT 0
8582#define E4_USTORM_ROCE_REQ_CONN_AG_CTX_RULE2EN_MASK 0x1
8583#define E4_USTORM_ROCE_REQ_CONN_AG_CTX_RULE2EN_SHIFT 1
8584#define E4_USTORM_ROCE_REQ_CONN_AG_CTX_RULE3EN_MASK 0x1
8585#define E4_USTORM_ROCE_REQ_CONN_AG_CTX_RULE3EN_SHIFT 2
8586#define E4_USTORM_ROCE_REQ_CONN_AG_CTX_RULE4EN_MASK 0x1
8587#define E4_USTORM_ROCE_REQ_CONN_AG_CTX_RULE4EN_SHIFT 3
8588#define E4_USTORM_ROCE_REQ_CONN_AG_CTX_RULE5EN_MASK 0x1
8589#define E4_USTORM_ROCE_REQ_CONN_AG_CTX_RULE5EN_SHIFT 4
8590#define E4_USTORM_ROCE_REQ_CONN_AG_CTX_RULE6EN_MASK 0x1
8591#define E4_USTORM_ROCE_REQ_CONN_AG_CTX_RULE6EN_SHIFT 5
8592#define E4_USTORM_ROCE_REQ_CONN_AG_CTX_RULE7EN_MASK 0x1
8593#define E4_USTORM_ROCE_REQ_CONN_AG_CTX_RULE7EN_SHIFT 6
8594#define E4_USTORM_ROCE_REQ_CONN_AG_CTX_RULE8EN_MASK 0x1
8595#define E4_USTORM_ROCE_REQ_CONN_AG_CTX_RULE8EN_SHIFT 7
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03008596 u8 byte2;
8597 u8 byte3;
8598 __le16 word0;
8599 __le16 word1;
8600 __le32 reg0;
8601 __le32 reg1;
8602 __le32 reg2;
8603 __le32 reg3;
8604 __le16 word2;
8605 __le16 word3;
8606};
8607
Tomer Tayar21dd79e2017-12-27 19:30:06 +02008608struct e4_ustorm_roce_resp_conn_ag_ctx {
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03008609 u8 byte0;
8610 u8 byte1;
8611 u8 flags0;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02008612#define E4_USTORM_ROCE_RESP_CONN_AG_CTX_BIT0_MASK 0x1
8613#define E4_USTORM_ROCE_RESP_CONN_AG_CTX_BIT0_SHIFT 0
8614#define E4_USTORM_ROCE_RESP_CONN_AG_CTX_BIT1_MASK 0x1
8615#define E4_USTORM_ROCE_RESP_CONN_AG_CTX_BIT1_SHIFT 1
8616#define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF0_MASK 0x3
8617#define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF0_SHIFT 2
8618#define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF1_MASK 0x3
8619#define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF1_SHIFT 4
8620#define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF2_MASK 0x3
8621#define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF2_SHIFT 6
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03008622 u8 flags1;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02008623#define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF3_MASK 0x3
8624#define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF3_SHIFT 0
8625#define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF4_MASK 0x3
8626#define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF4_SHIFT 2
8627#define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF5_MASK 0x3
8628#define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF5_SHIFT 4
8629#define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF6_MASK 0x3
8630#define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF6_SHIFT 6
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03008631 u8 flags2;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02008632#define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF0EN_MASK 0x1
8633#define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF0EN_SHIFT 0
8634#define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF1EN_MASK 0x1
8635#define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF1EN_SHIFT 1
8636#define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF2EN_MASK 0x1
8637#define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF2EN_SHIFT 2
8638#define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF3EN_MASK 0x1
8639#define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF3EN_SHIFT 3
8640#define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF4EN_MASK 0x1
8641#define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF4EN_SHIFT 4
8642#define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF5EN_MASK 0x1
8643#define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF5EN_SHIFT 5
8644#define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF6EN_MASK 0x1
8645#define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF6EN_SHIFT 6
8646#define E4_USTORM_ROCE_RESP_CONN_AG_CTX_RULE0EN_MASK 0x1
8647#define E4_USTORM_ROCE_RESP_CONN_AG_CTX_RULE0EN_SHIFT 7
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03008648 u8 flags3;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02008649#define E4_USTORM_ROCE_RESP_CONN_AG_CTX_RULE1EN_MASK 0x1
8650#define E4_USTORM_ROCE_RESP_CONN_AG_CTX_RULE1EN_SHIFT 0
8651#define E4_USTORM_ROCE_RESP_CONN_AG_CTX_RULE2EN_MASK 0x1
8652#define E4_USTORM_ROCE_RESP_CONN_AG_CTX_RULE2EN_SHIFT 1
8653#define E4_USTORM_ROCE_RESP_CONN_AG_CTX_RULE3EN_MASK 0x1
8654#define E4_USTORM_ROCE_RESP_CONN_AG_CTX_RULE3EN_SHIFT 2
8655#define E4_USTORM_ROCE_RESP_CONN_AG_CTX_RULE4EN_MASK 0x1
8656#define E4_USTORM_ROCE_RESP_CONN_AG_CTX_RULE4EN_SHIFT 3
8657#define E4_USTORM_ROCE_RESP_CONN_AG_CTX_RULE5EN_MASK 0x1
8658#define E4_USTORM_ROCE_RESP_CONN_AG_CTX_RULE5EN_SHIFT 4
8659#define E4_USTORM_ROCE_RESP_CONN_AG_CTX_RULE6EN_MASK 0x1
8660#define E4_USTORM_ROCE_RESP_CONN_AG_CTX_RULE6EN_SHIFT 5
8661#define E4_USTORM_ROCE_RESP_CONN_AG_CTX_RULE7EN_MASK 0x1
8662#define E4_USTORM_ROCE_RESP_CONN_AG_CTX_RULE7EN_SHIFT 6
8663#define E4_USTORM_ROCE_RESP_CONN_AG_CTX_RULE8EN_MASK 0x1
8664#define E4_USTORM_ROCE_RESP_CONN_AG_CTX_RULE8EN_SHIFT 7
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03008665 u8 byte2;
8666 u8 byte3;
8667 __le16 word0;
8668 __le16 word1;
8669 __le32 reg0;
8670 __le32 reg1;
8671 __le32 reg2;
8672 __le32 reg3;
8673 __le16 word2;
8674 __le16 word3;
8675};
8676
Tomer Tayar21dd79e2017-12-27 19:30:06 +02008677struct e4_xstorm_roce_req_conn_ag_ctx {
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03008678 u8 reserved0;
8679 u8 state;
8680 u8 flags0;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02008681#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_EXIST_IN_QM0_MASK 0x1
8682#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_EXIST_IN_QM0_SHIFT 0
8683#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RESERVED1_MASK 0x1
8684#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RESERVED1_SHIFT 1
8685#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RESERVED2_MASK 0x1
8686#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RESERVED2_SHIFT 2
8687#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_EXIST_IN_QM3_MASK 0x1
8688#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_EXIST_IN_QM3_SHIFT 3
8689#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RESERVED3_MASK 0x1
8690#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RESERVED3_SHIFT 4
8691#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RESERVED4_MASK 0x1
8692#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RESERVED4_SHIFT 5
8693#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RESERVED5_MASK 0x1
8694#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RESERVED5_SHIFT 6
8695#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RESERVED6_MASK 0x1
8696#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RESERVED6_SHIFT 7
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03008697 u8 flags1;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02008698#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RESERVED7_MASK 0x1
8699#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RESERVED7_SHIFT 0
8700#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RESERVED8_MASK 0x1
8701#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RESERVED8_SHIFT 1
8702#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_BIT10_MASK 0x1
8703#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_BIT10_SHIFT 2
8704#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_BIT11_MASK 0x1
8705#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_BIT11_SHIFT 3
8706#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_BIT12_MASK 0x1
8707#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_BIT12_SHIFT 4
8708#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_BIT13_MASK 0x1
8709#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_BIT13_SHIFT 5
8710#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_ERROR_STATE_MASK 0x1
8711#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_ERROR_STATE_SHIFT 6
8712#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_YSTORM_FLUSH_MASK 0x1
8713#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_YSTORM_FLUSH_SHIFT 7
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03008714 u8 flags2;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02008715#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF0_MASK 0x3
8716#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF0_SHIFT 0
8717#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF1_MASK 0x3
8718#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF1_SHIFT 2
8719#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF2_MASK 0x3
8720#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF2_SHIFT 4
8721#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF3_MASK 0x3
8722#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF3_SHIFT 6
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03008723 u8 flags3;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02008724#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_SQ_FLUSH_CF_MASK 0x3
8725#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_SQ_FLUSH_CF_SHIFT 0
8726#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RX_ERROR_CF_MASK 0x3
8727#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RX_ERROR_CF_SHIFT 2
8728#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_SND_RXMIT_CF_MASK 0x3
8729#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_SND_RXMIT_CF_SHIFT 4
8730#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_FLUSH_Q0_CF_MASK 0x3
8731#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_FLUSH_Q0_CF_SHIFT 6
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03008732 u8 flags4;
Michal Kalderon50bc60c2018-03-28 11:42:16 +03008733#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_DIF_ERROR_CF_MASK 0x3
8734#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_DIF_ERROR_CF_SHIFT 0
8735#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_SCAN_SQ_FOR_COMP_CF_MASK 0x3
8736#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_SCAN_SQ_FOR_COMP_CF_SHIFT 2
Tomer Tayar21dd79e2017-12-27 19:30:06 +02008737#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF10_MASK 0x3
8738#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF10_SHIFT 4
8739#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF11_MASK 0x3
8740#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF11_SHIFT 6
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03008741 u8 flags5;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02008742#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF12_MASK 0x3
8743#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF12_SHIFT 0
8744#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF13_MASK 0x3
8745#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF13_SHIFT 2
8746#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_FMR_ENDED_CF_MASK 0x3
8747#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_FMR_ENDED_CF_SHIFT 4
8748#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF15_MASK 0x3
8749#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF15_SHIFT 6
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03008750 u8 flags6;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02008751#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF16_MASK 0x3
8752#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF16_SHIFT 0
8753#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF17_MASK 0x3
8754#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF17_SHIFT 2
8755#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF18_MASK 0x3
8756#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF18_SHIFT 4
8757#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF19_MASK 0x3
8758#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF19_SHIFT 6
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03008759 u8 flags7;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02008760#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF20_MASK 0x3
8761#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF20_SHIFT 0
8762#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF21_MASK 0x3
8763#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF21_SHIFT 2
8764#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_SLOW_PATH_MASK 0x3
8765#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_SLOW_PATH_SHIFT 4
8766#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF0EN_MASK 0x1
8767#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF0EN_SHIFT 6
8768#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF1EN_MASK 0x1
8769#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF1EN_SHIFT 7
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03008770 u8 flags8;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02008771#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF2EN_MASK 0x1
8772#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF2EN_SHIFT 0
8773#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF3EN_MASK 0x1
8774#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF3EN_SHIFT 1
8775#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_SQ_FLUSH_CF_EN_MASK 0x1
8776#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_SQ_FLUSH_CF_EN_SHIFT 2
8777#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RX_ERROR_CF_EN_MASK 0x1
8778#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RX_ERROR_CF_EN_SHIFT 3
8779#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_SND_RXMIT_CF_EN_MASK 0x1
8780#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_SND_RXMIT_CF_EN_SHIFT 4
8781#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_FLUSH_Q0_CF_EN_MASK 0x1
8782#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_FLUSH_Q0_CF_EN_SHIFT 5
Michal Kalderon50bc60c2018-03-28 11:42:16 +03008783#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_DIF_ERROR_CF_EN_MASK 0x1
8784#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_DIF_ERROR_CF_EN_SHIFT 6
8785#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_SCAN_SQ_FOR_COMP_CF_EN_MASK 0x1
8786#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_SCAN_SQ_FOR_COMP_CF_EN_SHIFT 7
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03008787 u8 flags9;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02008788#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF10EN_MASK 0x1
8789#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF10EN_SHIFT 0
8790#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF11EN_MASK 0x1
8791#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF11EN_SHIFT 1
8792#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF12EN_MASK 0x1
8793#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF12EN_SHIFT 2
8794#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF13EN_MASK 0x1
8795#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF13EN_SHIFT 3
8796#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_FME_ENDED_CF_EN_MASK 0x1
8797#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_FME_ENDED_CF_EN_SHIFT 4
8798#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF15EN_MASK 0x1
8799#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF15EN_SHIFT 5
8800#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF16EN_MASK 0x1
8801#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF16EN_SHIFT 6
8802#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF17EN_MASK 0x1
8803#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF17EN_SHIFT 7
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03008804 u8 flags10;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02008805#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF18EN_MASK 0x1
8806#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF18EN_SHIFT 0
8807#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF19EN_MASK 0x1
8808#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF19EN_SHIFT 1
8809#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF20EN_MASK 0x1
8810#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF20EN_SHIFT 2
8811#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF21EN_MASK 0x1
8812#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF21EN_SHIFT 3
8813#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_SLOW_PATH_EN_MASK 0x1
8814#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_SLOW_PATH_EN_SHIFT 4
8815#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF23EN_MASK 0x1
8816#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF23EN_SHIFT 5
8817#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE0EN_MASK 0x1
8818#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE0EN_SHIFT 6
8819#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE1EN_MASK 0x1
8820#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE1EN_SHIFT 7
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03008821 u8 flags11;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02008822#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE2EN_MASK 0x1
8823#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE2EN_SHIFT 0
8824#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE3EN_MASK 0x1
8825#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE3EN_SHIFT 1
8826#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE4EN_MASK 0x1
8827#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE4EN_SHIFT 2
8828#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE5EN_MASK 0x1
8829#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE5EN_SHIFT 3
8830#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE6EN_MASK 0x1
8831#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE6EN_SHIFT 4
8832#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_E2E_CREDIT_RULE_EN_MASK 0x1
8833#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_E2E_CREDIT_RULE_EN_SHIFT 5
8834#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_A0_RESERVED1_MASK 0x1
8835#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_A0_RESERVED1_SHIFT 6
8836#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE9EN_MASK 0x1
8837#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE9EN_SHIFT 7
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03008838 u8 flags12;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02008839#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_SQ_PROD_EN_MASK 0x1
8840#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_SQ_PROD_EN_SHIFT 0
8841#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE11EN_MASK 0x1
8842#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE11EN_SHIFT 1
8843#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_A0_RESERVED2_MASK 0x1
8844#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_A0_RESERVED2_SHIFT 2
8845#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_A0_RESERVED3_MASK 0x1
8846#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_A0_RESERVED3_SHIFT 3
8847#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_INV_FENCE_RULE_EN_MASK 0x1
8848#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_INV_FENCE_RULE_EN_SHIFT 4
8849#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE15EN_MASK 0x1
8850#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE15EN_SHIFT 5
8851#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_ORQ_FENCE_RULE_EN_MASK 0x1
8852#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_ORQ_FENCE_RULE_EN_SHIFT 6
8853#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_MAX_ORD_RULE_EN_MASK 0x1
8854#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_MAX_ORD_RULE_EN_SHIFT 7
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03008855 u8 flags13;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02008856#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE18EN_MASK 0x1
8857#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE18EN_SHIFT 0
8858#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE19EN_MASK 0x1
8859#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE19EN_SHIFT 1
8860#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_A0_RESERVED4_MASK 0x1
8861#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_A0_RESERVED4_SHIFT 2
8862#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_A0_RESERVED5_MASK 0x1
8863#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_A0_RESERVED5_SHIFT 3
8864#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_A0_RESERVED6_MASK 0x1
8865#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_A0_RESERVED6_SHIFT 4
8866#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_A0_RESERVED7_MASK 0x1
8867#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_A0_RESERVED7_SHIFT 5
8868#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_A0_RESERVED8_MASK 0x1
8869#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_A0_RESERVED8_SHIFT 6
8870#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_A0_RESERVED9_MASK 0x1
8871#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_A0_RESERVED9_SHIFT 7
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03008872 u8 flags14;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02008873#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_MIGRATION_FLAG_MASK 0x1
8874#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_MIGRATION_FLAG_SHIFT 0
8875#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_BIT17_MASK 0x1
8876#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_BIT17_SHIFT 1
8877#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_DPM_PORT_NUM_MASK 0x3
8878#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_DPM_PORT_NUM_SHIFT 2
8879#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RESERVED_MASK 0x1
8880#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RESERVED_SHIFT 4
8881#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_ROCE_EDPM_ENABLE_MASK 0x1
8882#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_ROCE_EDPM_ENABLE_SHIFT 5
8883#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF23_MASK 0x3
8884#define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF23_SHIFT 6
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03008885 u8 byte2;
8886 __le16 physical_q0;
8887 __le16 word1;
8888 __le16 sq_cmp_cons;
8889 __le16 sq_cons;
8890 __le16 sq_prod;
Michal Kalderon50bc60c2018-03-28 11:42:16 +03008891 __le16 dif_error_first_sq_cons;
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03008892 __le16 conn_dpi;
Michal Kalderon50bc60c2018-03-28 11:42:16 +03008893 u8 dif_error_sge_index;
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03008894 u8 byte4;
8895 u8 byte5;
8896 u8 byte6;
8897 __le32 lsn;
8898 __le32 ssn;
8899 __le32 snd_una_psn;
8900 __le32 snd_nxt_psn;
Michal Kalderon50bc60c2018-03-28 11:42:16 +03008901 __le32 dif_error_offset;
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03008902 __le32 orq_cons_th;
8903 __le32 orq_cons;
8904};
8905
Tomer Tayar21dd79e2017-12-27 19:30:06 +02008906struct e4_xstorm_roce_resp_conn_ag_ctx {
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03008907 u8 reserved0;
8908 u8 state;
8909 u8 flags0;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02008910#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_EXIST_IN_QM0_MASK 0x1
8911#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_EXIST_IN_QM0_SHIFT 0
8912#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RESERVED1_MASK 0x1
8913#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RESERVED1_SHIFT 1
8914#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RESERVED2_MASK 0x1
8915#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RESERVED2_SHIFT 2
8916#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_EXIST_IN_QM3_MASK 0x1
8917#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_EXIST_IN_QM3_SHIFT 3
8918#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RESERVED3_MASK 0x1
8919#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RESERVED3_SHIFT 4
8920#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RESERVED4_MASK 0x1
8921#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RESERVED4_SHIFT 5
8922#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RESERVED5_MASK 0x1
8923#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RESERVED5_SHIFT 6
8924#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RESERVED6_MASK 0x1
8925#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RESERVED6_SHIFT 7
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03008926 u8 flags1;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02008927#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RESERVED7_MASK 0x1
8928#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RESERVED7_SHIFT 0
8929#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RESERVED8_MASK 0x1
8930#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RESERVED8_SHIFT 1
8931#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_BIT10_MASK 0x1
8932#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_BIT10_SHIFT 2
8933#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_BIT11_MASK 0x1
8934#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_BIT11_SHIFT 3
8935#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_BIT12_MASK 0x1
8936#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_BIT12_SHIFT 4
8937#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_BIT13_MASK 0x1
8938#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_BIT13_SHIFT 5
8939#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_ERROR_STATE_MASK 0x1
8940#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_ERROR_STATE_SHIFT 6
8941#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_YSTORM_FLUSH_MASK 0x1
8942#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_YSTORM_FLUSH_SHIFT 7
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03008943 u8 flags2;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02008944#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF0_MASK 0x3
8945#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF0_SHIFT 0
8946#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF1_MASK 0x3
8947#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF1_SHIFT 2
8948#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF2_MASK 0x3
8949#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF2_SHIFT 4
8950#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF3_MASK 0x3
8951#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF3_SHIFT 6
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03008952 u8 flags3;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02008953#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RXMIT_CF_MASK 0x3
8954#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RXMIT_CF_SHIFT 0
8955#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RX_ERROR_CF_MASK 0x3
8956#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RX_ERROR_CF_SHIFT 2
8957#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_FORCE_ACK_CF_MASK 0x3
8958#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_FORCE_ACK_CF_SHIFT 4
8959#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_FLUSH_Q0_CF_MASK 0x3
8960#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_FLUSH_Q0_CF_SHIFT 6
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03008961 u8 flags4;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02008962#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF8_MASK 0x3
8963#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF8_SHIFT 0
8964#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF9_MASK 0x3
8965#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF9_SHIFT 2
8966#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF10_MASK 0x3
8967#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF10_SHIFT 4
8968#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF11_MASK 0x3
8969#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF11_SHIFT 6
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03008970 u8 flags5;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02008971#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF12_MASK 0x3
8972#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF12_SHIFT 0
8973#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF13_MASK 0x3
8974#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF13_SHIFT 2
8975#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF14_MASK 0x3
8976#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF14_SHIFT 4
8977#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF15_MASK 0x3
8978#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF15_SHIFT 6
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03008979 u8 flags6;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02008980#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF16_MASK 0x3
8981#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF16_SHIFT 0
8982#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF17_MASK 0x3
8983#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF17_SHIFT 2
8984#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF18_MASK 0x3
8985#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF18_SHIFT 4
8986#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF19_MASK 0x3
8987#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF19_SHIFT 6
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03008988 u8 flags7;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02008989#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF20_MASK 0x3
8990#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF20_SHIFT 0
8991#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF21_MASK 0x3
8992#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF21_SHIFT 2
8993#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_SLOW_PATH_MASK 0x3
8994#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_SLOW_PATH_SHIFT 4
8995#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF0EN_MASK 0x1
8996#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF0EN_SHIFT 6
8997#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF1EN_MASK 0x1
8998#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF1EN_SHIFT 7
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03008999 u8 flags8;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02009000#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF2EN_MASK 0x1
9001#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF2EN_SHIFT 0
9002#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF3EN_MASK 0x1
9003#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF3EN_SHIFT 1
9004#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RXMIT_CF_EN_MASK 0x1
9005#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RXMIT_CF_EN_SHIFT 2
9006#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RX_ERROR_CF_EN_MASK 0x1
9007#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RX_ERROR_CF_EN_SHIFT 3
9008#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_FORCE_ACK_CF_EN_MASK 0x1
9009#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_FORCE_ACK_CF_EN_SHIFT 4
9010#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_FLUSH_Q0_CF_EN_MASK 0x1
9011#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_FLUSH_Q0_CF_EN_SHIFT 5
9012#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF8EN_MASK 0x1
9013#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF8EN_SHIFT 6
9014#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF9EN_MASK 0x1
9015#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF9EN_SHIFT 7
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03009016 u8 flags9;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02009017#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF10EN_MASK 0x1
9018#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF10EN_SHIFT 0
9019#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF11EN_MASK 0x1
9020#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF11EN_SHIFT 1
9021#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF12EN_MASK 0x1
9022#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF12EN_SHIFT 2
9023#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF13EN_MASK 0x1
9024#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF13EN_SHIFT 3
9025#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF14EN_MASK 0x1
9026#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF14EN_SHIFT 4
9027#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF15EN_MASK 0x1
9028#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF15EN_SHIFT 5
9029#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF16EN_MASK 0x1
9030#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF16EN_SHIFT 6
9031#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF17EN_MASK 0x1
9032#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF17EN_SHIFT 7
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03009033 u8 flags10;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02009034#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF18EN_MASK 0x1
9035#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF18EN_SHIFT 0
9036#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF19EN_MASK 0x1
9037#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF19EN_SHIFT 1
9038#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF20EN_MASK 0x1
9039#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF20EN_SHIFT 2
9040#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF21EN_MASK 0x1
9041#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF21EN_SHIFT 3
9042#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_SLOW_PATH_EN_MASK 0x1
9043#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_SLOW_PATH_EN_SHIFT 4
9044#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF23EN_MASK 0x1
9045#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF23EN_SHIFT 5
9046#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE0EN_MASK 0x1
9047#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE0EN_SHIFT 6
9048#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE1EN_MASK 0x1
9049#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE1EN_SHIFT 7
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03009050 u8 flags11;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02009051#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE2EN_MASK 0x1
9052#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE2EN_SHIFT 0
9053#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE3EN_MASK 0x1
9054#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE3EN_SHIFT 1
9055#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE4EN_MASK 0x1
9056#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE4EN_SHIFT 2
9057#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE5EN_MASK 0x1
9058#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE5EN_SHIFT 3
9059#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE6EN_MASK 0x1
9060#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE6EN_SHIFT 4
9061#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE7EN_MASK 0x1
9062#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE7EN_SHIFT 5
9063#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_A0_RESERVED1_MASK 0x1
9064#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_A0_RESERVED1_SHIFT 6
9065#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE9EN_MASK 0x1
9066#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE9EN_SHIFT 7
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03009067 u8 flags12;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02009068#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_IRQ_PROD_RULE_EN_MASK 0x1
9069#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_IRQ_PROD_RULE_EN_SHIFT 0
9070#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE11EN_MASK 0x1
9071#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE11EN_SHIFT 1
9072#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_A0_RESERVED2_MASK 0x1
9073#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_A0_RESERVED2_SHIFT 2
9074#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_A0_RESERVED3_MASK 0x1
9075#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_A0_RESERVED3_SHIFT 3
9076#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE14EN_MASK 0x1
9077#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE14EN_SHIFT 4
9078#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE15EN_MASK 0x1
9079#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE15EN_SHIFT 5
9080#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE16EN_MASK 0x1
9081#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE16EN_SHIFT 6
9082#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE17EN_MASK 0x1
9083#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE17EN_SHIFT 7
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03009084 u8 flags13;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02009085#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE18EN_MASK 0x1
9086#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE18EN_SHIFT 0
9087#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE19EN_MASK 0x1
9088#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE19EN_SHIFT 1
9089#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_A0_RESERVED4_MASK 0x1
9090#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_A0_RESERVED4_SHIFT 2
9091#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_A0_RESERVED5_MASK 0x1
9092#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_A0_RESERVED5_SHIFT 3
9093#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_A0_RESERVED6_MASK 0x1
9094#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_A0_RESERVED6_SHIFT 4
9095#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_A0_RESERVED7_MASK 0x1
9096#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_A0_RESERVED7_SHIFT 5
9097#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_A0_RESERVED8_MASK 0x1
9098#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_A0_RESERVED8_SHIFT 6
9099#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_A0_RESERVED9_MASK 0x1
9100#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_A0_RESERVED9_SHIFT 7
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03009101 u8 flags14;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02009102#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_BIT16_MASK 0x1
9103#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_BIT16_SHIFT 0
9104#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_BIT17_MASK 0x1
9105#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_BIT17_SHIFT 1
9106#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_BIT18_MASK 0x1
9107#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_BIT18_SHIFT 2
9108#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_BIT19_MASK 0x1
9109#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_BIT19_SHIFT 3
9110#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_BIT20_MASK 0x1
9111#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_BIT20_SHIFT 4
9112#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_BIT21_MASK 0x1
9113#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_BIT21_SHIFT 5
9114#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF23_MASK 0x3
9115#define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF23_SHIFT 6
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03009116 u8 byte2;
9117 __le16 physical_q0;
Tomer Tayarda090912017-12-27 19:30:07 +02009118 __le16 irq_prod_shadow;
9119 __le16 word2;
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03009120 __le16 irq_cons;
Tomer Tayarda090912017-12-27 19:30:07 +02009121 __le16 irq_prod;
9122 __le16 e5_reserved1;
9123 __le16 conn_dpi;
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03009124 u8 rxmit_opcode;
9125 u8 byte4;
9126 u8 byte5;
9127 u8 byte6;
9128 __le32 rxmit_psn_and_id;
9129 __le32 rxmit_bytes_length;
9130 __le32 psn;
9131 __le32 reg3;
9132 __le32 reg4;
9133 __le32 reg5;
9134 __le32 msn_and_syndrome;
9135};
9136
Michal Kalderon50bc60c2018-03-28 11:42:16 +03009137struct e4_ystorm_roce_conn_ag_ctx {
9138 u8 byte0;
9139 u8 byte1;
9140 u8 flags0;
9141#define E4_YSTORM_ROCE_CONN_AG_CTX_BIT0_MASK 0x1
9142#define E4_YSTORM_ROCE_CONN_AG_CTX_BIT0_SHIFT 0
9143#define E4_YSTORM_ROCE_CONN_AG_CTX_BIT1_MASK 0x1
9144#define E4_YSTORM_ROCE_CONN_AG_CTX_BIT1_SHIFT 1
9145#define E4_YSTORM_ROCE_CONN_AG_CTX_CF0_MASK 0x3
9146#define E4_YSTORM_ROCE_CONN_AG_CTX_CF0_SHIFT 2
9147#define E4_YSTORM_ROCE_CONN_AG_CTX_CF1_MASK 0x3
9148#define E4_YSTORM_ROCE_CONN_AG_CTX_CF1_SHIFT 4
9149#define E4_YSTORM_ROCE_CONN_AG_CTX_CF2_MASK 0x3
9150#define E4_YSTORM_ROCE_CONN_AG_CTX_CF2_SHIFT 6
9151 u8 flags1;
9152#define E4_YSTORM_ROCE_CONN_AG_CTX_CF0EN_MASK 0x1
9153#define E4_YSTORM_ROCE_CONN_AG_CTX_CF0EN_SHIFT 0
9154#define E4_YSTORM_ROCE_CONN_AG_CTX_CF1EN_MASK 0x1
9155#define E4_YSTORM_ROCE_CONN_AG_CTX_CF1EN_SHIFT 1
9156#define E4_YSTORM_ROCE_CONN_AG_CTX_CF2EN_MASK 0x1
9157#define E4_YSTORM_ROCE_CONN_AG_CTX_CF2EN_SHIFT 2
9158#define E4_YSTORM_ROCE_CONN_AG_CTX_RULE0EN_MASK 0x1
9159#define E4_YSTORM_ROCE_CONN_AG_CTX_RULE0EN_SHIFT 3
9160#define E4_YSTORM_ROCE_CONN_AG_CTX_RULE1EN_MASK 0x1
9161#define E4_YSTORM_ROCE_CONN_AG_CTX_RULE1EN_SHIFT 4
9162#define E4_YSTORM_ROCE_CONN_AG_CTX_RULE2EN_MASK 0x1
9163#define E4_YSTORM_ROCE_CONN_AG_CTX_RULE2EN_SHIFT 5
9164#define E4_YSTORM_ROCE_CONN_AG_CTX_RULE3EN_MASK 0x1
9165#define E4_YSTORM_ROCE_CONN_AG_CTX_RULE3EN_SHIFT 6
9166#define E4_YSTORM_ROCE_CONN_AG_CTX_RULE4EN_MASK 0x1
9167#define E4_YSTORM_ROCE_CONN_AG_CTX_RULE4EN_SHIFT 7
9168 u8 byte2;
9169 u8 byte3;
9170 __le16 word0;
9171 __le32 reg0;
9172 __le32 reg1;
9173 __le16 word1;
9174 __le16 word2;
9175 __le16 word3;
9176 __le16 word4;
9177 __le32 reg2;
9178 __le32 reg3;
9179};
9180
Tomer Tayar21dd79e2017-12-27 19:30:06 +02009181struct e4_ystorm_roce_req_conn_ag_ctx {
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03009182 u8 byte0;
9183 u8 byte1;
9184 u8 flags0;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02009185#define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_BIT0_MASK 0x1
9186#define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_BIT0_SHIFT 0
9187#define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_BIT1_MASK 0x1
9188#define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_BIT1_SHIFT 1
9189#define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_CF0_MASK 0x3
9190#define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_CF0_SHIFT 2
9191#define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_CF1_MASK 0x3
9192#define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_CF1_SHIFT 4
9193#define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_CF2_MASK 0x3
9194#define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_CF2_SHIFT 6
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03009195 u8 flags1;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02009196#define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_CF0EN_MASK 0x1
9197#define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_CF0EN_SHIFT 0
9198#define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_CF1EN_MASK 0x1
9199#define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_CF1EN_SHIFT 1
9200#define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_CF2EN_MASK 0x1
9201#define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_CF2EN_SHIFT 2
9202#define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_RULE0EN_MASK 0x1
9203#define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_RULE0EN_SHIFT 3
9204#define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_RULE1EN_MASK 0x1
9205#define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_RULE1EN_SHIFT 4
9206#define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_RULE2EN_MASK 0x1
9207#define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_RULE2EN_SHIFT 5
9208#define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_RULE3EN_MASK 0x1
9209#define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_RULE3EN_SHIFT 6
9210#define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_RULE4EN_MASK 0x1
9211#define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_RULE4EN_SHIFT 7
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03009212 u8 byte2;
9213 u8 byte3;
9214 __le16 word0;
9215 __le32 reg0;
9216 __le32 reg1;
9217 __le16 word1;
9218 __le16 word2;
9219 __le16 word3;
9220 __le16 word4;
9221 __le32 reg2;
9222 __le32 reg3;
9223};
9224
Tomer Tayar21dd79e2017-12-27 19:30:06 +02009225struct e4_ystorm_roce_resp_conn_ag_ctx {
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03009226 u8 byte0;
9227 u8 byte1;
9228 u8 flags0;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02009229#define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_BIT0_MASK 0x1
9230#define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_BIT0_SHIFT 0
9231#define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_BIT1_MASK 0x1
9232#define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_BIT1_SHIFT 1
9233#define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_CF0_MASK 0x3
9234#define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_CF0_SHIFT 2
9235#define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_CF1_MASK 0x3
9236#define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_CF1_SHIFT 4
9237#define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_CF2_MASK 0x3
9238#define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_CF2_SHIFT 6
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03009239 u8 flags1;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02009240#define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_CF0EN_MASK 0x1
9241#define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_CF0EN_SHIFT 0
9242#define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_CF1EN_MASK 0x1
9243#define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_CF1EN_SHIFT 1
9244#define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_CF2EN_MASK 0x1
9245#define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_CF2EN_SHIFT 2
9246#define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_RULE0EN_MASK 0x1
9247#define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_RULE0EN_SHIFT 3
9248#define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_RULE1EN_MASK 0x1
9249#define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_RULE1EN_SHIFT 4
9250#define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_RULE2EN_MASK 0x1
9251#define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_RULE2EN_SHIFT 5
9252#define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_RULE3EN_MASK 0x1
9253#define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_RULE3EN_SHIFT 6
9254#define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_RULE4EN_MASK 0x1
9255#define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_RULE4EN_SHIFT 7
Yuval Mintz7a9b6b82016-06-03 14:35:33 +03009256 u8 byte2;
9257 u8 byte3;
9258 __le16 word0;
9259 __le32 reg0;
9260 __le32 reg1;
9261 __le16 word1;
9262 __le16 word2;
9263 __le16 word3;
9264 __le16 word4;
9265 __le32 reg2;
9266 __le32 reg3;
9267};
9268
Tomer Tayara2e76992017-12-27 19:30:05 +02009269/* Roce doorbell data */
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03009270enum roce_flavor {
9271 PLAIN_ROCE,
9272 RROCE_IPV4,
9273 RROCE_IPV6,
9274 MAX_ROCE_FLAVOR
9275};
9276
Tomer Tayara2e76992017-12-27 19:30:05 +02009277/* The iwarp storm context of Ystorm */
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03009278struct ystorm_iwarp_conn_st_ctx {
9279 __le32 reserved[4];
9280};
9281
Tomer Tayara2e76992017-12-27 19:30:05 +02009282/* The iwarp storm context of Pstorm */
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03009283struct pstorm_iwarp_conn_st_ctx {
9284 __le32 reserved[36];
9285};
9286
Tomer Tayara2e76992017-12-27 19:30:05 +02009287/* The iwarp storm context of Xstorm */
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03009288struct xstorm_iwarp_conn_st_ctx {
Michal Kalderon50bc60c2018-03-28 11:42:16 +03009289 __le32 reserved[48];
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03009290};
9291
Tomer Tayar21dd79e2017-12-27 19:30:06 +02009292struct e4_xstorm_iwarp_conn_ag_ctx {
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03009293 u8 reserved0;
9294 u8 state;
9295 u8 flags0;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02009296#define E4_XSTORM_IWARP_CONN_AG_CTX_EXIST_IN_QM0_MASK 0x1
9297#define E4_XSTORM_IWARP_CONN_AG_CTX_EXIST_IN_QM0_SHIFT 0
9298#define E4_XSTORM_IWARP_CONN_AG_CTX_EXIST_IN_QM1_MASK 0x1
9299#define E4_XSTORM_IWARP_CONN_AG_CTX_EXIST_IN_QM1_SHIFT 1
9300#define E4_XSTORM_IWARP_CONN_AG_CTX_EXIST_IN_QM2_MASK 0x1
9301#define E4_XSTORM_IWARP_CONN_AG_CTX_EXIST_IN_QM2_SHIFT 2
9302#define E4_XSTORM_IWARP_CONN_AG_CTX_EXIST_IN_QM3_MASK 0x1
9303#define E4_XSTORM_IWARP_CONN_AG_CTX_EXIST_IN_QM3_SHIFT 3
9304#define E4_XSTORM_IWARP_CONN_AG_CTX_BIT4_MASK 0x1
9305#define E4_XSTORM_IWARP_CONN_AG_CTX_BIT4_SHIFT 4
9306#define E4_XSTORM_IWARP_CONN_AG_CTX_RESERVED2_MASK 0x1
9307#define E4_XSTORM_IWARP_CONN_AG_CTX_RESERVED2_SHIFT 5
9308#define E4_XSTORM_IWARP_CONN_AG_CTX_BIT6_MASK 0x1
9309#define E4_XSTORM_IWARP_CONN_AG_CTX_BIT6_SHIFT 6
9310#define E4_XSTORM_IWARP_CONN_AG_CTX_BIT7_MASK 0x1
9311#define E4_XSTORM_IWARP_CONN_AG_CTX_BIT7_SHIFT 7
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03009312 u8 flags1;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02009313#define E4_XSTORM_IWARP_CONN_AG_CTX_BIT8_MASK 0x1
9314#define E4_XSTORM_IWARP_CONN_AG_CTX_BIT8_SHIFT 0
9315#define E4_XSTORM_IWARP_CONN_AG_CTX_BIT9_MASK 0x1
9316#define E4_XSTORM_IWARP_CONN_AG_CTX_BIT9_SHIFT 1
9317#define E4_XSTORM_IWARP_CONN_AG_CTX_BIT10_MASK 0x1
9318#define E4_XSTORM_IWARP_CONN_AG_CTX_BIT10_SHIFT 2
9319#define E4_XSTORM_IWARP_CONN_AG_CTX_BIT11_MASK 0x1
9320#define E4_XSTORM_IWARP_CONN_AG_CTX_BIT11_SHIFT 3
9321#define E4_XSTORM_IWARP_CONN_AG_CTX_BIT12_MASK 0x1
9322#define E4_XSTORM_IWARP_CONN_AG_CTX_BIT12_SHIFT 4
9323#define E4_XSTORM_IWARP_CONN_AG_CTX_BIT13_MASK 0x1
9324#define E4_XSTORM_IWARP_CONN_AG_CTX_BIT13_SHIFT 5
9325#define E4_XSTORM_IWARP_CONN_AG_CTX_BIT14_MASK 0x1
9326#define E4_XSTORM_IWARP_CONN_AG_CTX_BIT14_SHIFT 6
9327#define E4_XSTORM_IWARP_CONN_AG_CTX_YSTORM_FLUSH_OR_REWIND_SND_MAX_MASK 0x1
9328#define E4_XSTORM_IWARP_CONN_AG_CTX_YSTORM_FLUSH_OR_REWIND_SND_MAX_SHIFT 7
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03009329 u8 flags2;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02009330#define E4_XSTORM_IWARP_CONN_AG_CTX_CF0_MASK 0x3
9331#define E4_XSTORM_IWARP_CONN_AG_CTX_CF0_SHIFT 0
9332#define E4_XSTORM_IWARP_CONN_AG_CTX_CF1_MASK 0x3
9333#define E4_XSTORM_IWARP_CONN_AG_CTX_CF1_SHIFT 2
9334#define E4_XSTORM_IWARP_CONN_AG_CTX_CF2_MASK 0x3
9335#define E4_XSTORM_IWARP_CONN_AG_CTX_CF2_SHIFT 4
9336#define E4_XSTORM_IWARP_CONN_AG_CTX_TIMER_STOP_ALL_MASK 0x3
9337#define E4_XSTORM_IWARP_CONN_AG_CTX_TIMER_STOP_ALL_SHIFT 6
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03009338 u8 flags3;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02009339#define E4_XSTORM_IWARP_CONN_AG_CTX_CF4_MASK 0x3
9340#define E4_XSTORM_IWARP_CONN_AG_CTX_CF4_SHIFT 0
9341#define E4_XSTORM_IWARP_CONN_AG_CTX_CF5_MASK 0x3
9342#define E4_XSTORM_IWARP_CONN_AG_CTX_CF5_SHIFT 2
9343#define E4_XSTORM_IWARP_CONN_AG_CTX_CF6_MASK 0x3
9344#define E4_XSTORM_IWARP_CONN_AG_CTX_CF6_SHIFT 4
9345#define E4_XSTORM_IWARP_CONN_AG_CTX_CF7_MASK 0x3
9346#define E4_XSTORM_IWARP_CONN_AG_CTX_CF7_SHIFT 6
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03009347 u8 flags4;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02009348#define E4_XSTORM_IWARP_CONN_AG_CTX_CF8_MASK 0x3
9349#define E4_XSTORM_IWARP_CONN_AG_CTX_CF8_SHIFT 0
9350#define E4_XSTORM_IWARP_CONN_AG_CTX_CF9_MASK 0x3
9351#define E4_XSTORM_IWARP_CONN_AG_CTX_CF9_SHIFT 2
9352#define E4_XSTORM_IWARP_CONN_AG_CTX_CF10_MASK 0x3
9353#define E4_XSTORM_IWARP_CONN_AG_CTX_CF10_SHIFT 4
9354#define E4_XSTORM_IWARP_CONN_AG_CTX_CF11_MASK 0x3
9355#define E4_XSTORM_IWARP_CONN_AG_CTX_CF11_SHIFT 6
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03009356 u8 flags5;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02009357#define E4_XSTORM_IWARP_CONN_AG_CTX_CF12_MASK 0x3
9358#define E4_XSTORM_IWARP_CONN_AG_CTX_CF12_SHIFT 0
9359#define E4_XSTORM_IWARP_CONN_AG_CTX_CF13_MASK 0x3
9360#define E4_XSTORM_IWARP_CONN_AG_CTX_CF13_SHIFT 2
9361#define E4_XSTORM_IWARP_CONN_AG_CTX_SQ_FLUSH_CF_MASK 0x3
9362#define E4_XSTORM_IWARP_CONN_AG_CTX_SQ_FLUSH_CF_SHIFT 4
9363#define E4_XSTORM_IWARP_CONN_AG_CTX_CF15_MASK 0x3
9364#define E4_XSTORM_IWARP_CONN_AG_CTX_CF15_SHIFT 6
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03009365 u8 flags6;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02009366#define E4_XSTORM_IWARP_CONN_AG_CTX_MPA_OR_ERROR_WAKEUP_TRIGGER_CF_MASK 0x3
9367#define E4_XSTORM_IWARP_CONN_AG_CTX_MPA_OR_ERROR_WAKEUP_TRIGGER_CF_SHIFT 0
9368#define E4_XSTORM_IWARP_CONN_AG_CTX_CF17_MASK 0x3
9369#define E4_XSTORM_IWARP_CONN_AG_CTX_CF17_SHIFT 2
9370#define E4_XSTORM_IWARP_CONN_AG_CTX_CF18_MASK 0x3
9371#define E4_XSTORM_IWARP_CONN_AG_CTX_CF18_SHIFT 4
9372#define E4_XSTORM_IWARP_CONN_AG_CTX_DQ_FLUSH_MASK 0x3
9373#define E4_XSTORM_IWARP_CONN_AG_CTX_DQ_FLUSH_SHIFT 6
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03009374 u8 flags7;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02009375#define E4_XSTORM_IWARP_CONN_AG_CTX_FLUSH_Q0_MASK 0x3
9376#define E4_XSTORM_IWARP_CONN_AG_CTX_FLUSH_Q0_SHIFT 0
9377#define E4_XSTORM_IWARP_CONN_AG_CTX_FLUSH_Q1_MASK 0x3
9378#define E4_XSTORM_IWARP_CONN_AG_CTX_FLUSH_Q1_SHIFT 2
9379#define E4_XSTORM_IWARP_CONN_AG_CTX_SLOW_PATH_MASK 0x3
9380#define E4_XSTORM_IWARP_CONN_AG_CTX_SLOW_PATH_SHIFT 4
9381#define E4_XSTORM_IWARP_CONN_AG_CTX_CF0EN_MASK 0x1
9382#define E4_XSTORM_IWARP_CONN_AG_CTX_CF0EN_SHIFT 6
9383#define E4_XSTORM_IWARP_CONN_AG_CTX_CF1EN_MASK 0x1
9384#define E4_XSTORM_IWARP_CONN_AG_CTX_CF1EN_SHIFT 7
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03009385 u8 flags8;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02009386#define E4_XSTORM_IWARP_CONN_AG_CTX_CF2EN_MASK 0x1
9387#define E4_XSTORM_IWARP_CONN_AG_CTX_CF2EN_SHIFT 0
9388#define E4_XSTORM_IWARP_CONN_AG_CTX_TIMER_STOP_ALL_EN_MASK 0x1
9389#define E4_XSTORM_IWARP_CONN_AG_CTX_TIMER_STOP_ALL_EN_SHIFT 1
9390#define E4_XSTORM_IWARP_CONN_AG_CTX_CF4EN_MASK 0x1
9391#define E4_XSTORM_IWARP_CONN_AG_CTX_CF4EN_SHIFT 2
9392#define E4_XSTORM_IWARP_CONN_AG_CTX_CF5EN_MASK 0x1
9393#define E4_XSTORM_IWARP_CONN_AG_CTX_CF5EN_SHIFT 3
9394#define E4_XSTORM_IWARP_CONN_AG_CTX_CF6EN_MASK 0x1
9395#define E4_XSTORM_IWARP_CONN_AG_CTX_CF6EN_SHIFT 4
9396#define E4_XSTORM_IWARP_CONN_AG_CTX_CF7EN_MASK 0x1
9397#define E4_XSTORM_IWARP_CONN_AG_CTX_CF7EN_SHIFT 5
9398#define E4_XSTORM_IWARP_CONN_AG_CTX_CF8EN_MASK 0x1
9399#define E4_XSTORM_IWARP_CONN_AG_CTX_CF8EN_SHIFT 6
9400#define E4_XSTORM_IWARP_CONN_AG_CTX_CF9EN_MASK 0x1
9401#define E4_XSTORM_IWARP_CONN_AG_CTX_CF9EN_SHIFT 7
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03009402 u8 flags9;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02009403#define E4_XSTORM_IWARP_CONN_AG_CTX_CF10EN_MASK 0x1
9404#define E4_XSTORM_IWARP_CONN_AG_CTX_CF10EN_SHIFT 0
9405#define E4_XSTORM_IWARP_CONN_AG_CTX_CF11EN_MASK 0x1
9406#define E4_XSTORM_IWARP_CONN_AG_CTX_CF11EN_SHIFT 1
9407#define E4_XSTORM_IWARP_CONN_AG_CTX_CF12EN_MASK 0x1
9408#define E4_XSTORM_IWARP_CONN_AG_CTX_CF12EN_SHIFT 2
9409#define E4_XSTORM_IWARP_CONN_AG_CTX_CF13EN_MASK 0x1
9410#define E4_XSTORM_IWARP_CONN_AG_CTX_CF13EN_SHIFT 3
9411#define E4_XSTORM_IWARP_CONN_AG_CTX_SQ_FLUSH_CF_EN_MASK 0x1
9412#define E4_XSTORM_IWARP_CONN_AG_CTX_SQ_FLUSH_CF_EN_SHIFT 4
9413#define E4_XSTORM_IWARP_CONN_AG_CTX_CF15EN_MASK 0x1
9414#define E4_XSTORM_IWARP_CONN_AG_CTX_CF15EN_SHIFT 5
9415#define E4_XSTORM_IWARP_CONN_AG_CTX_MPA_OR_ERROR_WAKEUP_TRIGGER_CF_EN_MASK 0x1
9416#define E4_XSTORM_IWARP_CONN_AG_CTX_MPA_OR_ERROR_WAKEUP_TRIGGER_CF_EN_SHIFT 6
9417#define E4_XSTORM_IWARP_CONN_AG_CTX_CF17EN_MASK 0x1
9418#define E4_XSTORM_IWARP_CONN_AG_CTX_CF17EN_SHIFT 7
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03009419 u8 flags10;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02009420#define E4_XSTORM_IWARP_CONN_AG_CTX_CF18EN_MASK 0x1
9421#define E4_XSTORM_IWARP_CONN_AG_CTX_CF18EN_SHIFT 0
9422#define E4_XSTORM_IWARP_CONN_AG_CTX_DQ_FLUSH_EN_MASK 0x1
9423#define E4_XSTORM_IWARP_CONN_AG_CTX_DQ_FLUSH_EN_SHIFT 1
9424#define E4_XSTORM_IWARP_CONN_AG_CTX_FLUSH_Q0_EN_MASK 0x1
9425#define E4_XSTORM_IWARP_CONN_AG_CTX_FLUSH_Q0_EN_SHIFT 2
9426#define E4_XSTORM_IWARP_CONN_AG_CTX_FLUSH_Q1_EN_MASK 0x1
9427#define E4_XSTORM_IWARP_CONN_AG_CTX_FLUSH_Q1_EN_SHIFT 3
9428#define E4_XSTORM_IWARP_CONN_AG_CTX_SLOW_PATH_EN_MASK 0x1
9429#define E4_XSTORM_IWARP_CONN_AG_CTX_SLOW_PATH_EN_SHIFT 4
Michal Kalderon50bc60c2018-03-28 11:42:16 +03009430#define E4_XSTORM_IWARP_CONN_AG_CTX_SEND_TERMINATE_CF_EN_MASK 0x1
9431#define E4_XSTORM_IWARP_CONN_AG_CTX_SEND_TERMINATE_CF_EN_SHIFT 5
Tomer Tayar21dd79e2017-12-27 19:30:06 +02009432#define E4_XSTORM_IWARP_CONN_AG_CTX_RULE0EN_MASK 0x1
9433#define E4_XSTORM_IWARP_CONN_AG_CTX_RULE0EN_SHIFT 6
9434#define E4_XSTORM_IWARP_CONN_AG_CTX_MORE_TO_SEND_RULE_EN_MASK 0x1
9435#define E4_XSTORM_IWARP_CONN_AG_CTX_MORE_TO_SEND_RULE_EN_SHIFT 7
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03009436 u8 flags11;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02009437#define E4_XSTORM_IWARP_CONN_AG_CTX_TX_BLOCKED_EN_MASK 0x1
9438#define E4_XSTORM_IWARP_CONN_AG_CTX_TX_BLOCKED_EN_SHIFT 0
9439#define E4_XSTORM_IWARP_CONN_AG_CTX_RULE3EN_MASK 0x1
9440#define E4_XSTORM_IWARP_CONN_AG_CTX_RULE3EN_SHIFT 1
9441#define E4_XSTORM_IWARP_CONN_AG_CTX_RESERVED3_MASK 0x1
9442#define E4_XSTORM_IWARP_CONN_AG_CTX_RESERVED3_SHIFT 2
9443#define E4_XSTORM_IWARP_CONN_AG_CTX_RULE5EN_MASK 0x1
9444#define E4_XSTORM_IWARP_CONN_AG_CTX_RULE5EN_SHIFT 3
9445#define E4_XSTORM_IWARP_CONN_AG_CTX_RULE6EN_MASK 0x1
9446#define E4_XSTORM_IWARP_CONN_AG_CTX_RULE6EN_SHIFT 4
9447#define E4_XSTORM_IWARP_CONN_AG_CTX_RULE7EN_MASK 0x1
9448#define E4_XSTORM_IWARP_CONN_AG_CTX_RULE7EN_SHIFT 5
9449#define E4_XSTORM_IWARP_CONN_AG_CTX_A0_RESERVED1_MASK 0x1
9450#define E4_XSTORM_IWARP_CONN_AG_CTX_A0_RESERVED1_SHIFT 6
9451#define E4_XSTORM_IWARP_CONN_AG_CTX_RULE9EN_MASK 0x1
9452#define E4_XSTORM_IWARP_CONN_AG_CTX_RULE9EN_SHIFT 7
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03009453 u8 flags12;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02009454#define E4_XSTORM_IWARP_CONN_AG_CTX_SQ_NOT_EMPTY_RULE_EN_MASK 0x1
9455#define E4_XSTORM_IWARP_CONN_AG_CTX_SQ_NOT_EMPTY_RULE_EN_SHIFT 0
9456#define E4_XSTORM_IWARP_CONN_AG_CTX_RULE11EN_MASK 0x1
9457#define E4_XSTORM_IWARP_CONN_AG_CTX_RULE11EN_SHIFT 1
9458#define E4_XSTORM_IWARP_CONN_AG_CTX_A0_RESERVED2_MASK 0x1
9459#define E4_XSTORM_IWARP_CONN_AG_CTX_A0_RESERVED2_SHIFT 2
9460#define E4_XSTORM_IWARP_CONN_AG_CTX_A0_RESERVED3_MASK 0x1
9461#define E4_XSTORM_IWARP_CONN_AG_CTX_A0_RESERVED3_SHIFT 3
9462#define E4_XSTORM_IWARP_CONN_AG_CTX_SQ_FENCE_RULE_EN_MASK 0x1
9463#define E4_XSTORM_IWARP_CONN_AG_CTX_SQ_FENCE_RULE_EN_SHIFT 4
9464#define E4_XSTORM_IWARP_CONN_AG_CTX_RULE15EN_MASK 0x1
9465#define E4_XSTORM_IWARP_CONN_AG_CTX_RULE15EN_SHIFT 5
9466#define E4_XSTORM_IWARP_CONN_AG_CTX_RULE16EN_MASK 0x1
9467#define E4_XSTORM_IWARP_CONN_AG_CTX_RULE16EN_SHIFT 6
9468#define E4_XSTORM_IWARP_CONN_AG_CTX_RULE17EN_MASK 0x1
9469#define E4_XSTORM_IWARP_CONN_AG_CTX_RULE17EN_SHIFT 7
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03009470 u8 flags13;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02009471#define E4_XSTORM_IWARP_CONN_AG_CTX_IRQ_NOT_EMPTY_RULE_EN_MASK 0x1
9472#define E4_XSTORM_IWARP_CONN_AG_CTX_IRQ_NOT_EMPTY_RULE_EN_SHIFT 0
9473#define E4_XSTORM_IWARP_CONN_AG_CTX_HQ_NOT_FULL_RULE_EN_MASK 0x1
9474#define E4_XSTORM_IWARP_CONN_AG_CTX_HQ_NOT_FULL_RULE_EN_SHIFT 1
9475#define E4_XSTORM_IWARP_CONN_AG_CTX_ORQ_RD_FENCE_RULE_EN_MASK 0x1
9476#define E4_XSTORM_IWARP_CONN_AG_CTX_ORQ_RD_FENCE_RULE_EN_SHIFT 2
9477#define E4_XSTORM_IWARP_CONN_AG_CTX_RULE21EN_MASK 0x1
9478#define E4_XSTORM_IWARP_CONN_AG_CTX_RULE21EN_SHIFT 3
9479#define E4_XSTORM_IWARP_CONN_AG_CTX_A0_RESERVED6_MASK 0x1
9480#define E4_XSTORM_IWARP_CONN_AG_CTX_A0_RESERVED6_SHIFT 4
9481#define E4_XSTORM_IWARP_CONN_AG_CTX_ORQ_NOT_FULL_RULE_EN_MASK 0x1
9482#define E4_XSTORM_IWARP_CONN_AG_CTX_ORQ_NOT_FULL_RULE_EN_SHIFT 5
9483#define E4_XSTORM_IWARP_CONN_AG_CTX_A0_RESERVED8_MASK 0x1
9484#define E4_XSTORM_IWARP_CONN_AG_CTX_A0_RESERVED8_SHIFT 6
9485#define E4_XSTORM_IWARP_CONN_AG_CTX_A0_RESERVED9_MASK 0x1
9486#define E4_XSTORM_IWARP_CONN_AG_CTX_A0_RESERVED9_SHIFT 7
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03009487 u8 flags14;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02009488#define E4_XSTORM_IWARP_CONN_AG_CTX_BIT16_MASK 0x1
9489#define E4_XSTORM_IWARP_CONN_AG_CTX_BIT16_SHIFT 0
9490#define E4_XSTORM_IWARP_CONN_AG_CTX_BIT17_MASK 0x1
9491#define E4_XSTORM_IWARP_CONN_AG_CTX_BIT17_SHIFT 1
9492#define E4_XSTORM_IWARP_CONN_AG_CTX_BIT18_MASK 0x1
9493#define E4_XSTORM_IWARP_CONN_AG_CTX_BIT18_SHIFT 2
9494#define E4_XSTORM_IWARP_CONN_AG_CTX_E5_RESERVED1_MASK 0x1
9495#define E4_XSTORM_IWARP_CONN_AG_CTX_E5_RESERVED1_SHIFT 3
9496#define E4_XSTORM_IWARP_CONN_AG_CTX_E5_RESERVED2_MASK 0x1
9497#define E4_XSTORM_IWARP_CONN_AG_CTX_E5_RESERVED2_SHIFT 4
9498#define E4_XSTORM_IWARP_CONN_AG_CTX_E5_RESERVED3_MASK 0x1
9499#define E4_XSTORM_IWARP_CONN_AG_CTX_E5_RESERVED3_SHIFT 5
Michal Kalderon50bc60c2018-03-28 11:42:16 +03009500#define E4_XSTORM_IWARP_CONN_AG_CTX_SEND_TERMINATE_CF_MASK 0x3
9501#define E4_XSTORM_IWARP_CONN_AG_CTX_SEND_TERMINATE_CF_SHIFT 6
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03009502 u8 byte2;
9503 __le16 physical_q0;
9504 __le16 physical_q1;
9505 __le16 sq_comp_cons;
9506 __le16 sq_tx_cons;
9507 __le16 sq_prod;
9508 __le16 word5;
9509 __le16 conn_dpi;
9510 u8 byte3;
9511 u8 byte4;
9512 u8 byte5;
9513 u8 byte6;
9514 __le32 reg0;
9515 __le32 reg1;
9516 __le32 reg2;
9517 __le32 more_to_send_seq;
9518 __le32 reg4;
Michal Kalderon50bc60c2018-03-28 11:42:16 +03009519 __le32 rewinded_snd_max_or_term_opcode;
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03009520 __le32 rd_msn;
9521 __le16 irq_prod_via_msdm;
9522 __le16 irq_cons;
9523 __le16 hq_cons_th_or_mpa_data;
9524 __le16 hq_cons;
9525 __le32 atom_msn;
9526 __le32 orq_cons;
9527 __le32 orq_cons_th;
9528 u8 byte7;
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03009529 u8 wqe_data_pad_bytes;
Michal Kalderon50bc60c2018-03-28 11:42:16 +03009530 u8 max_ord;
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03009531 u8 former_hq_prod;
9532 u8 irq_prod_via_msem;
9533 u8 byte12;
9534 u8 max_pkt_pdu_size_lo;
9535 u8 max_pkt_pdu_size_hi;
9536 u8 byte15;
9537 u8 e5_reserved;
9538 __le16 e5_reserved4;
9539 __le32 reg10;
9540 __le32 reg11;
9541 __le32 shared_queue_page_addr_lo;
9542 __le32 shared_queue_page_addr_hi;
9543 __le32 reg14;
9544 __le32 reg15;
9545 __le32 reg16;
9546 __le32 reg17;
9547};
9548
Tomer Tayar21dd79e2017-12-27 19:30:06 +02009549struct e4_tstorm_iwarp_conn_ag_ctx {
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03009550 u8 reserved0;
9551 u8 state;
9552 u8 flags0;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02009553#define E4_TSTORM_IWARP_CONN_AG_CTX_EXIST_IN_QM0_MASK 0x1
9554#define E4_TSTORM_IWARP_CONN_AG_CTX_EXIST_IN_QM0_SHIFT 0
9555#define E4_TSTORM_IWARP_CONN_AG_CTX_BIT1_MASK 0x1
9556#define E4_TSTORM_IWARP_CONN_AG_CTX_BIT1_SHIFT 1
9557#define E4_TSTORM_IWARP_CONN_AG_CTX_BIT2_MASK 0x1
9558#define E4_TSTORM_IWARP_CONN_AG_CTX_BIT2_SHIFT 2
Michal Kalderon50bc60c2018-03-28 11:42:16 +03009559#define E4_TSTORM_IWARP_CONN_AG_CTX_MSTORM_FLUSH_OR_TERMINATE_SENT_MASK 0x1
9560#define E4_TSTORM_IWARP_CONN_AG_CTX_MSTORM_FLUSH_OR_TERMINATE_SENT_SHIFT 3
Tomer Tayar21dd79e2017-12-27 19:30:06 +02009561#define E4_TSTORM_IWARP_CONN_AG_CTX_BIT4_MASK 0x1
9562#define E4_TSTORM_IWARP_CONN_AG_CTX_BIT4_SHIFT 4
9563#define E4_TSTORM_IWARP_CONN_AG_CTX_CACHED_ORQ_MASK 0x1
9564#define E4_TSTORM_IWARP_CONN_AG_CTX_CACHED_ORQ_SHIFT 5
9565#define E4_TSTORM_IWARP_CONN_AG_CTX_CF0_MASK 0x3
9566#define E4_TSTORM_IWARP_CONN_AG_CTX_CF0_SHIFT 6
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03009567 u8 flags1;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02009568#define E4_TSTORM_IWARP_CONN_AG_CTX_RQ_POST_CF_MASK 0x3
9569#define E4_TSTORM_IWARP_CONN_AG_CTX_RQ_POST_CF_SHIFT 0
9570#define E4_TSTORM_IWARP_CONN_AG_CTX_MPA_TIMEOUT_CF_MASK 0x3
9571#define E4_TSTORM_IWARP_CONN_AG_CTX_MPA_TIMEOUT_CF_SHIFT 2
9572#define E4_TSTORM_IWARP_CONN_AG_CTX_TIMER_STOP_ALL_MASK 0x3
9573#define E4_TSTORM_IWARP_CONN_AG_CTX_TIMER_STOP_ALL_SHIFT 4
9574#define E4_TSTORM_IWARP_CONN_AG_CTX_CF4_MASK 0x3
9575#define E4_TSTORM_IWARP_CONN_AG_CTX_CF4_SHIFT 6
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03009576 u8 flags2;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02009577#define E4_TSTORM_IWARP_CONN_AG_CTX_CF5_MASK 0x3
9578#define E4_TSTORM_IWARP_CONN_AG_CTX_CF5_SHIFT 0
9579#define E4_TSTORM_IWARP_CONN_AG_CTX_CF6_MASK 0x3
9580#define E4_TSTORM_IWARP_CONN_AG_CTX_CF6_SHIFT 2
9581#define E4_TSTORM_IWARP_CONN_AG_CTX_CF7_MASK 0x3
9582#define E4_TSTORM_IWARP_CONN_AG_CTX_CF7_SHIFT 4
9583#define E4_TSTORM_IWARP_CONN_AG_CTX_CF8_MASK 0x3
9584#define E4_TSTORM_IWARP_CONN_AG_CTX_CF8_SHIFT 6
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03009585 u8 flags3;
Tomer Tayarda090912017-12-27 19:30:07 +02009586#define E4_TSTORM_IWARP_CONN_AG_CTX_FLUSH_Q0_AND_TCP_HANDSHAKE_COMPLETE_MASK 0x3
9587#define E4_TSTORM_IWARP_CONN_AG_CTX_FLUSH_Q0_AND_TCP_HANDSHAKE_COMPLETE_SHIFT 0
Tomer Tayar21dd79e2017-12-27 19:30:06 +02009588#define E4_TSTORM_IWARP_CONN_AG_CTX_FLUSH_OR_ERROR_DETECTED_MASK 0x3
9589#define E4_TSTORM_IWARP_CONN_AG_CTX_FLUSH_OR_ERROR_DETECTED_SHIFT 2
9590#define E4_TSTORM_IWARP_CONN_AG_CTX_CF0EN_MASK 0x1
9591#define E4_TSTORM_IWARP_CONN_AG_CTX_CF0EN_SHIFT 4
9592#define E4_TSTORM_IWARP_CONN_AG_CTX_RQ_POST_CF_EN_MASK 0x1
9593#define E4_TSTORM_IWARP_CONN_AG_CTX_RQ_POST_CF_EN_SHIFT 5
9594#define E4_TSTORM_IWARP_CONN_AG_CTX_MPA_TIMEOUT_CF_EN_MASK 0x1
9595#define E4_TSTORM_IWARP_CONN_AG_CTX_MPA_TIMEOUT_CF_EN_SHIFT 6
9596#define E4_TSTORM_IWARP_CONN_AG_CTX_TIMER_STOP_ALL_EN_MASK 0x1
9597#define E4_TSTORM_IWARP_CONN_AG_CTX_TIMER_STOP_ALL_EN_SHIFT 7
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03009598 u8 flags4;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02009599#define E4_TSTORM_IWARP_CONN_AG_CTX_CF4EN_MASK 0x1
9600#define E4_TSTORM_IWARP_CONN_AG_CTX_CF4EN_SHIFT 0
9601#define E4_TSTORM_IWARP_CONN_AG_CTX_CF5EN_MASK 0x1
9602#define E4_TSTORM_IWARP_CONN_AG_CTX_CF5EN_SHIFT 1
9603#define E4_TSTORM_IWARP_CONN_AG_CTX_CF6EN_MASK 0x1
9604#define E4_TSTORM_IWARP_CONN_AG_CTX_CF6EN_SHIFT 2
9605#define E4_TSTORM_IWARP_CONN_AG_CTX_CF7EN_MASK 0x1
9606#define E4_TSTORM_IWARP_CONN_AG_CTX_CF7EN_SHIFT 3
9607#define E4_TSTORM_IWARP_CONN_AG_CTX_CF8EN_MASK 0x1
9608#define E4_TSTORM_IWARP_CONN_AG_CTX_CF8EN_SHIFT 4
Tomer Tayarda090912017-12-27 19:30:07 +02009609#define E4_TSTORM_IWARP_CONN_AG_CTX_FLUSH_Q0_AND_TCP_HANDSHAKE_COMPL_EN_MASK 0x1
9610#define E4_TSTORM_IWARP_CONN_AG_CTX_FLUSH_Q0_AND_TCP_HANDSHAKE_COMPL_EN_SHIFT 5
Tomer Tayar21dd79e2017-12-27 19:30:06 +02009611#define E4_TSTORM_IWARP_CONN_AG_CTX_FLUSH_OR_ERROR_DETECTED_EN_MASK 0x1
9612#define E4_TSTORM_IWARP_CONN_AG_CTX_FLUSH_OR_ERROR_DETECTED_EN_SHIFT 6
9613#define E4_TSTORM_IWARP_CONN_AG_CTX_RULE0EN_MASK 0x1
9614#define E4_TSTORM_IWARP_CONN_AG_CTX_RULE0EN_SHIFT 7
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03009615 u8 flags5;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02009616#define E4_TSTORM_IWARP_CONN_AG_CTX_RULE1EN_MASK 0x1
9617#define E4_TSTORM_IWARP_CONN_AG_CTX_RULE1EN_SHIFT 0
9618#define E4_TSTORM_IWARP_CONN_AG_CTX_RULE2EN_MASK 0x1
9619#define E4_TSTORM_IWARP_CONN_AG_CTX_RULE2EN_SHIFT 1
9620#define E4_TSTORM_IWARP_CONN_AG_CTX_RULE3EN_MASK 0x1
9621#define E4_TSTORM_IWARP_CONN_AG_CTX_RULE3EN_SHIFT 2
9622#define E4_TSTORM_IWARP_CONN_AG_CTX_RULE4EN_MASK 0x1
9623#define E4_TSTORM_IWARP_CONN_AG_CTX_RULE4EN_SHIFT 3
9624#define E4_TSTORM_IWARP_CONN_AG_CTX_RULE5EN_MASK 0x1
9625#define E4_TSTORM_IWARP_CONN_AG_CTX_RULE5EN_SHIFT 4
9626#define E4_TSTORM_IWARP_CONN_AG_CTX_SND_SQ_CONS_RULE_MASK 0x1
9627#define E4_TSTORM_IWARP_CONN_AG_CTX_SND_SQ_CONS_RULE_SHIFT 5
9628#define E4_TSTORM_IWARP_CONN_AG_CTX_RULE7EN_MASK 0x1
9629#define E4_TSTORM_IWARP_CONN_AG_CTX_RULE7EN_SHIFT 6
9630#define E4_TSTORM_IWARP_CONN_AG_CTX_RULE8EN_MASK 0x1
9631#define E4_TSTORM_IWARP_CONN_AG_CTX_RULE8EN_SHIFT 7
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03009632 __le32 reg0;
9633 __le32 reg1;
9634 __le32 unaligned_nxt_seq;
9635 __le32 reg3;
9636 __le32 reg4;
9637 __le32 reg5;
9638 __le32 reg6;
9639 __le32 reg7;
9640 __le32 reg8;
9641 u8 orq_cache_idx;
9642 u8 hq_prod;
9643 __le16 sq_tx_cons_th;
9644 u8 orq_prod;
9645 u8 irq_cons;
9646 __le16 sq_tx_cons;
9647 __le16 conn_dpi;
9648 __le16 rq_prod;
9649 __le32 snd_seq;
9650 __le32 last_hq_sequence;
9651};
9652
Tomer Tayara2e76992017-12-27 19:30:05 +02009653/* The iwarp storm context of Tstorm */
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03009654struct tstorm_iwarp_conn_st_ctx {
9655 __le32 reserved[60];
9656};
9657
Tomer Tayara2e76992017-12-27 19:30:05 +02009658/* The iwarp storm context of Mstorm */
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03009659struct mstorm_iwarp_conn_st_ctx {
9660 __le32 reserved[32];
9661};
9662
Tomer Tayara2e76992017-12-27 19:30:05 +02009663/* The iwarp storm context of Ustorm */
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03009664struct ustorm_iwarp_conn_st_ctx {
9665 __le32 reserved[24];
9666};
9667
Tomer Tayara2e76992017-12-27 19:30:05 +02009668/* iwarp connection context */
Tomer Tayar21dd79e2017-12-27 19:30:06 +02009669struct e4_iwarp_conn_context {
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03009670 struct ystorm_iwarp_conn_st_ctx ystorm_st_context;
9671 struct regpair ystorm_st_padding[2];
9672 struct pstorm_iwarp_conn_st_ctx pstorm_st_context;
9673 struct regpair pstorm_st_padding[2];
9674 struct xstorm_iwarp_conn_st_ctx xstorm_st_context;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02009675 struct e4_xstorm_iwarp_conn_ag_ctx xstorm_ag_context;
9676 struct e4_tstorm_iwarp_conn_ag_ctx tstorm_ag_context;
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03009677 struct timers_context timer_context;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02009678 struct e4_ustorm_rdma_conn_ag_ctx ustorm_ag_context;
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03009679 struct tstorm_iwarp_conn_st_ctx tstorm_st_context;
9680 struct regpair tstorm_st_padding[2];
9681 struct mstorm_iwarp_conn_st_ctx mstorm_st_context;
9682 struct ustorm_iwarp_conn_st_ctx ustorm_st_context;
9683};
9684
Tomer Tayara2e76992017-12-27 19:30:05 +02009685/* iWARP create QP params passed by driver to FW in CreateQP Request Ramrod */
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03009686struct iwarp_create_qp_ramrod_data {
9687 u8 flags;
9688#define IWARP_CREATE_QP_RAMROD_DATA_FMR_AND_RESERVED_EN_MASK 0x1
Tomer Tayara2e76992017-12-27 19:30:05 +02009689#define IWARP_CREATE_QP_RAMROD_DATA_FMR_AND_RESERVED_EN_SHIFT 0
9690#define IWARP_CREATE_QP_RAMROD_DATA_SIGNALED_COMP_MASK 0x1
9691#define IWARP_CREATE_QP_RAMROD_DATA_SIGNALED_COMP_SHIFT 1
9692#define IWARP_CREATE_QP_RAMROD_DATA_RDMA_RD_EN_MASK 0x1
9693#define IWARP_CREATE_QP_RAMROD_DATA_RDMA_RD_EN_SHIFT 2
9694#define IWARP_CREATE_QP_RAMROD_DATA_RDMA_WR_EN_MASK 0x1
9695#define IWARP_CREATE_QP_RAMROD_DATA_RDMA_WR_EN_SHIFT 3
9696#define IWARP_CREATE_QP_RAMROD_DATA_ATOMIC_EN_MASK 0x1
9697#define IWARP_CREATE_QP_RAMROD_DATA_ATOMIC_EN_SHIFT 4
9698#define IWARP_CREATE_QP_RAMROD_DATA_SRQ_FLG_MASK 0x1
9699#define IWARP_CREATE_QP_RAMROD_DATA_SRQ_FLG_SHIFT 5
Michal Kalderon50bc60c2018-03-28 11:42:16 +03009700#define IWARP_CREATE_QP_RAMROD_DATA_LOW_LATENCY_QUEUE_EN_MASK 0x1
9701#define IWARP_CREATE_QP_RAMROD_DATA_LOW_LATENCY_QUEUE_EN_SHIFT 6
9702#define IWARP_CREATE_QP_RAMROD_DATA_RESERVED0_MASK 0x1
9703#define IWARP_CREATE_QP_RAMROD_DATA_RESERVED0_SHIFT 7
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03009704 u8 reserved1;
9705 __le16 pd;
9706 __le16 sq_num_pages;
9707 __le16 rq_num_pages;
9708 __le32 reserved3[2];
9709 struct regpair qp_handle_for_cqe;
9710 struct rdma_srq_id srq_id;
9711 __le32 cq_cid_for_sq;
9712 __le32 cq_cid_for_rq;
9713 __le16 dpi;
9714 __le16 physical_q0;
9715 __le16 physical_q1;
9716 u8 reserved2[6];
9717};
9718
Tomer Tayara2e76992017-12-27 19:30:05 +02009719/* iWARP completion queue types */
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03009720enum iwarp_eqe_async_opcode {
9721 IWARP_EVENT_TYPE_ASYNC_CONNECT_COMPLETE,
9722 IWARP_EVENT_TYPE_ASYNC_ENHANCED_MPA_REPLY_ARRIVED,
9723 IWARP_EVENT_TYPE_ASYNC_MPA_HANDSHAKE_COMPLETE,
9724 IWARP_EVENT_TYPE_ASYNC_CID_CLEANED,
9725 IWARP_EVENT_TYPE_ASYNC_EXCEPTION_DETECTED,
9726 IWARP_EVENT_TYPE_ASYNC_QP_IN_ERROR_STATE,
9727 IWARP_EVENT_TYPE_ASYNC_CQ_OVERFLOW,
9728 MAX_IWARP_EQE_ASYNC_OPCODE
9729};
9730
9731struct iwarp_eqe_data_mpa_async_completion {
9732 __le16 ulp_data_len;
9733 u8 reserved[6];
9734};
9735
9736struct iwarp_eqe_data_tcp_async_completion {
9737 __le16 ulp_data_len;
9738 u8 mpa_handshake_mode;
9739 u8 reserved[5];
9740};
9741
Tomer Tayara2e76992017-12-27 19:30:05 +02009742/* iWARP completion queue types */
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03009743enum iwarp_eqe_sync_opcode {
9744 IWARP_EVENT_TYPE_TCP_OFFLOAD =
9745 11,
9746 IWARP_EVENT_TYPE_MPA_OFFLOAD,
9747 IWARP_EVENT_TYPE_MPA_OFFLOAD_SEND_RTR,
9748 IWARP_EVENT_TYPE_CREATE_QP,
9749 IWARP_EVENT_TYPE_QUERY_QP,
9750 IWARP_EVENT_TYPE_MODIFY_QP,
9751 IWARP_EVENT_TYPE_DESTROY_QP,
Michal Kalderon50bc60c2018-03-28 11:42:16 +03009752 IWARP_EVENT_TYPE_ABORT_TCP_OFFLOAD,
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03009753 MAX_IWARP_EQE_SYNC_OPCODE
9754};
9755
Tomer Tayara2e76992017-12-27 19:30:05 +02009756/* iWARP EQE completion status */
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03009757enum iwarp_fw_return_code {
9758 IWARP_CONN_ERROR_TCP_CONNECT_INVALID_PACKET = 5,
9759 IWARP_CONN_ERROR_TCP_CONNECTION_RST,
9760 IWARP_CONN_ERROR_TCP_CONNECT_TIMEOUT,
9761 IWARP_CONN_ERROR_MPA_ERROR_REJECT,
9762 IWARP_CONN_ERROR_MPA_NOT_SUPPORTED_VER,
9763 IWARP_CONN_ERROR_MPA_RST,
9764 IWARP_CONN_ERROR_MPA_FIN,
9765 IWARP_CONN_ERROR_MPA_RTR_MISMATCH,
9766 IWARP_CONN_ERROR_MPA_INSUF_IRD,
9767 IWARP_CONN_ERROR_MPA_INVALID_PACKET,
9768 IWARP_CONN_ERROR_MPA_LOCAL_ERROR,
9769 IWARP_CONN_ERROR_MPA_TIMEOUT,
9770 IWARP_CONN_ERROR_MPA_TERMINATE,
9771 IWARP_QP_IN_ERROR_GOOD_CLOSE,
9772 IWARP_QP_IN_ERROR_BAD_CLOSE,
9773 IWARP_EXCEPTION_DETECTED_LLP_CLOSED,
9774 IWARP_EXCEPTION_DETECTED_LLP_RESET,
9775 IWARP_EXCEPTION_DETECTED_IRQ_FULL,
9776 IWARP_EXCEPTION_DETECTED_RQ_EMPTY,
Michal Kalderon50bc60c2018-03-28 11:42:16 +03009777 IWARP_EXCEPTION_DETECTED_SRQ_EMPTY,
9778 IWARP_EXCEPTION_DETECTED_SRQ_LIMIT,
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03009779 IWARP_EXCEPTION_DETECTED_LLP_TIMEOUT,
9780 IWARP_EXCEPTION_DETECTED_REMOTE_PROTECTION_ERROR,
9781 IWARP_EXCEPTION_DETECTED_CQ_OVERFLOW,
9782 IWARP_EXCEPTION_DETECTED_LOCAL_CATASTROPHIC,
9783 IWARP_EXCEPTION_DETECTED_LOCAL_ACCESS_ERROR,
9784 IWARP_EXCEPTION_DETECTED_REMOTE_OPERATION_ERROR,
9785 IWARP_EXCEPTION_DETECTED_TERMINATE_RECEIVED,
9786 MAX_IWARP_FW_RETURN_CODE
9787};
9788
Tomer Tayara2e76992017-12-27 19:30:05 +02009789/* unaligned opaque data received from LL2 */
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03009790struct iwarp_init_func_params {
9791 u8 ll2_ooo_q_index;
9792 u8 reserved1[7];
9793};
9794
Tomer Tayara2e76992017-12-27 19:30:05 +02009795/* iwarp func init ramrod data */
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03009796struct iwarp_init_func_ramrod_data {
9797 struct rdma_init_func_ramrod_data rdma;
9798 struct tcp_init_params tcp;
9799 struct iwarp_init_func_params iwarp;
9800};
9801
Tomer Tayara2e76992017-12-27 19:30:05 +02009802/* iWARP QP - possible states to transition to */
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03009803enum iwarp_modify_qp_new_state_type {
9804 IWARP_MODIFY_QP_STATE_CLOSING = 1,
Tomer Tayara2e76992017-12-27 19:30:05 +02009805 IWARP_MODIFY_QP_STATE_ERROR = 2,
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03009806 MAX_IWARP_MODIFY_QP_NEW_STATE_TYPE
9807};
9808
Tomer Tayara2e76992017-12-27 19:30:05 +02009809/* iwarp modify qp responder ramrod data */
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03009810struct iwarp_modify_qp_ramrod_data {
9811 __le16 transition_to_state;
9812 __le16 flags;
Tomer Tayara2e76992017-12-27 19:30:05 +02009813#define IWARP_MODIFY_QP_RAMROD_DATA_RDMA_RD_EN_MASK 0x1
9814#define IWARP_MODIFY_QP_RAMROD_DATA_RDMA_RD_EN_SHIFT 0
9815#define IWARP_MODIFY_QP_RAMROD_DATA_RDMA_WR_EN_MASK 0x1
9816#define IWARP_MODIFY_QP_RAMROD_DATA_RDMA_WR_EN_SHIFT 1
9817#define IWARP_MODIFY_QP_RAMROD_DATA_ATOMIC_EN_MASK 0x1
9818#define IWARP_MODIFY_QP_RAMROD_DATA_ATOMIC_EN_SHIFT 2
9819#define IWARP_MODIFY_QP_RAMROD_DATA_STATE_TRANS_EN_MASK 0x1
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03009820#define IWARP_MODIFY_QP_RAMROD_DATA_STATE_TRANS_EN_SHIFT 3
9821#define IWARP_MODIFY_QP_RAMROD_DATA_RDMA_OPS_EN_FLG_MASK 0x1
Tomer Tayara2e76992017-12-27 19:30:05 +02009822#define IWARP_MODIFY_QP_RAMROD_DATA_RDMA_OPS_EN_FLG_SHIFT 4
Michal Kalderon50bc60c2018-03-28 11:42:16 +03009823#define IWARP_MODIFY_QP_RAMROD_DATA_PHYSICAL_QUEUE_FLG_MASK 0x1
9824#define IWARP_MODIFY_QP_RAMROD_DATA_PHYSICAL_QUEUE_FLG_SHIFT 5
9825#define IWARP_MODIFY_QP_RAMROD_DATA_RESERVED_MASK 0x3FF
9826#define IWARP_MODIFY_QP_RAMROD_DATA_RESERVED_SHIFT 6
9827 __le16 physical_q0;
9828 __le16 physical_q1;
9829 __le32 reserved1[10];
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03009830};
9831
Tomer Tayara2e76992017-12-27 19:30:05 +02009832/* MPA params for Enhanced mode */
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03009833struct mpa_rq_params {
9834 __le32 ird;
9835 __le32 ord;
9836};
9837
Tomer Tayara2e76992017-12-27 19:30:05 +02009838/* MPA host Address-Len for private data */
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03009839struct mpa_ulp_buffer {
9840 struct regpair addr;
9841 __le16 len;
9842 __le16 reserved[3];
9843};
9844
Tomer Tayara2e76992017-12-27 19:30:05 +02009845/* iWARP MPA offload params common to Basic and Enhanced modes */
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03009846struct mpa_outgoing_params {
9847 u8 crc_needed;
9848 u8 reject;
9849 u8 reserved[6];
9850 struct mpa_rq_params out_rq;
9851 struct mpa_ulp_buffer outgoing_ulp_buffer;
9852};
9853
Tomer Tayara2e76992017-12-27 19:30:05 +02009854/* iWARP MPA offload params passed by driver to FW in MPA Offload Request
9855 * Ramrod.
9856 */
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03009857struct iwarp_mpa_offload_ramrod_data {
9858 struct mpa_outgoing_params common;
9859 __le32 tcp_cid;
9860 u8 mode;
9861 u8 tcp_connect_side;
9862 u8 rtr_pref;
9863#define IWARP_MPA_OFFLOAD_RAMROD_DATA_RTR_SUPPORTED_MASK 0x7
Tomer Tayara2e76992017-12-27 19:30:05 +02009864#define IWARP_MPA_OFFLOAD_RAMROD_DATA_RTR_SUPPORTED_SHIFT 0
9865#define IWARP_MPA_OFFLOAD_RAMROD_DATA_RESERVED1_MASK 0x1F
9866#define IWARP_MPA_OFFLOAD_RAMROD_DATA_RESERVED1_SHIFT 3
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03009867 u8 reserved2;
9868 struct mpa_ulp_buffer incoming_ulp_buffer;
9869 struct regpair async_eqe_output_buf;
9870 struct regpair handle_for_async;
9871 struct regpair shared_queue_addr;
Tomer Tayarda090912017-12-27 19:30:07 +02009872 __le16 rcv_wnd;
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03009873 u8 stats_counter_id;
Tomer Tayarda090912017-12-27 19:30:07 +02009874 u8 reserved3[13];
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03009875};
9876
Tomer Tayara2e76992017-12-27 19:30:05 +02009877/* iWARP TCP connection offload params passed by driver to FW */
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03009878struct iwarp_offload_params {
9879 struct mpa_ulp_buffer incoming_ulp_buffer;
9880 struct regpair async_eqe_output_buf;
9881 struct regpair handle_for_async;
9882 __le16 physical_q0;
9883 __le16 physical_q1;
9884 u8 stats_counter_id;
9885 u8 mpa_mode;
9886 u8 reserved[10];
9887};
9888
Tomer Tayara2e76992017-12-27 19:30:05 +02009889/* iWARP query QP output params */
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03009890struct iwarp_query_qp_output_params {
9891 __le32 flags;
9892#define IWARP_QUERY_QP_OUTPUT_PARAMS_ERROR_FLG_MASK 0x1
Tomer Tayara2e76992017-12-27 19:30:05 +02009893#define IWARP_QUERY_QP_OUTPUT_PARAMS_ERROR_FLG_SHIFT 0
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03009894#define IWARP_QUERY_QP_OUTPUT_PARAMS_RESERVED0_MASK 0x7FFFFFFF
Tomer Tayara2e76992017-12-27 19:30:05 +02009895#define IWARP_QUERY_QP_OUTPUT_PARAMS_RESERVED0_SHIFT 1
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03009896 u8 reserved1[4];
9897};
9898
Tomer Tayara2e76992017-12-27 19:30:05 +02009899/* iWARP query QP ramrod data */
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03009900struct iwarp_query_qp_ramrod_data {
9901 struct regpair output_params_addr;
9902};
9903
Tomer Tayara2e76992017-12-27 19:30:05 +02009904/* iWARP Ramrod Command IDs */
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03009905enum iwarp_ramrod_cmd_id {
Tomer Tayara2e76992017-12-27 19:30:05 +02009906 IWARP_RAMROD_CMD_ID_TCP_OFFLOAD = 11,
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03009907 IWARP_RAMROD_CMD_ID_MPA_OFFLOAD,
9908 IWARP_RAMROD_CMD_ID_MPA_OFFLOAD_SEND_RTR,
9909 IWARP_RAMROD_CMD_ID_CREATE_QP,
9910 IWARP_RAMROD_CMD_ID_QUERY_QP,
9911 IWARP_RAMROD_CMD_ID_MODIFY_QP,
9912 IWARP_RAMROD_CMD_ID_DESTROY_QP,
Michal Kalderon50bc60c2018-03-28 11:42:16 +03009913 IWARP_RAMROD_CMD_ID_ABORT_TCP_OFFLOAD,
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03009914 MAX_IWARP_RAMROD_CMD_ID
9915};
9916
Tomer Tayara2e76992017-12-27 19:30:05 +02009917/* Per PF iWARP retransmit path statistics */
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03009918struct iwarp_rxmit_stats_drv {
9919 struct regpair tx_go_to_slow_start_event_cnt;
9920 struct regpair tx_fast_retransmit_event_cnt;
9921};
9922
Tomer Tayara2e76992017-12-27 19:30:05 +02009923/* iWARP and TCP connection offload params passed by driver to FW in iWARP
9924 * offload ramrod.
9925 */
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03009926struct iwarp_tcp_offload_ramrod_data {
9927 struct iwarp_offload_params iwarp;
9928 struct tcp_offload_params_opt2 tcp;
9929};
9930
Tomer Tayara2e76992017-12-27 19:30:05 +02009931/* iWARP MPA negotiation types */
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03009932enum mpa_negotiation_mode {
9933 MPA_NEGOTIATION_TYPE_BASIC = 1,
9934 MPA_NEGOTIATION_TYPE_ENHANCED = 2,
9935 MAX_MPA_NEGOTIATION_MODE
9936};
9937
Tomer Tayara2e76992017-12-27 19:30:05 +02009938/* iWARP MPA Enhanced mode RTR types */
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03009939enum mpa_rtr_type {
9940 MPA_RTR_TYPE_NONE = 0,
9941 MPA_RTR_TYPE_ZERO_SEND = 1,
9942 MPA_RTR_TYPE_ZERO_WRITE = 2,
9943 MPA_RTR_TYPE_ZERO_SEND_AND_WRITE = 3,
9944 MPA_RTR_TYPE_ZERO_READ = 4,
9945 MPA_RTR_TYPE_ZERO_SEND_AND_READ = 5,
9946 MPA_RTR_TYPE_ZERO_WRITE_AND_READ = 6,
9947 MPA_RTR_TYPE_ZERO_SEND_AND_WRITE_AND_READ = 7,
9948 MAX_MPA_RTR_TYPE
9949};
9950
Tomer Tayara2e76992017-12-27 19:30:05 +02009951/* unaligned opaque data received from LL2 */
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03009952struct unaligned_opaque_data {
9953 __le16 first_mpa_offset;
9954 u8 tcp_payload_offset;
9955 u8 flags;
9956#define UNALIGNED_OPAQUE_DATA_PKT_REACHED_WIN_RIGHT_EDGE_MASK 0x1
Tomer Tayara2e76992017-12-27 19:30:05 +02009957#define UNALIGNED_OPAQUE_DATA_PKT_REACHED_WIN_RIGHT_EDGE_SHIFT 0
9958#define UNALIGNED_OPAQUE_DATA_CONNECTION_CLOSED_MASK 0x1
9959#define UNALIGNED_OPAQUE_DATA_CONNECTION_CLOSED_SHIFT 1
9960#define UNALIGNED_OPAQUE_DATA_RESERVED_MASK 0x3F
9961#define UNALIGNED_OPAQUE_DATA_RESERVED_SHIFT 2
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03009962 __le32 cid;
9963};
9964
Tomer Tayar21dd79e2017-12-27 19:30:06 +02009965struct e4_mstorm_iwarp_conn_ag_ctx {
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03009966 u8 reserved;
9967 u8 state;
9968 u8 flags0;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02009969#define E4_MSTORM_IWARP_CONN_AG_CTX_EXIST_IN_QM0_MASK 0x1
9970#define E4_MSTORM_IWARP_CONN_AG_CTX_EXIST_IN_QM0_SHIFT 0
9971#define E4_MSTORM_IWARP_CONN_AG_CTX_BIT1_MASK 0x1
9972#define E4_MSTORM_IWARP_CONN_AG_CTX_BIT1_SHIFT 1
9973#define E4_MSTORM_IWARP_CONN_AG_CTX_INV_STAG_DONE_CF_MASK 0x3
9974#define E4_MSTORM_IWARP_CONN_AG_CTX_INV_STAG_DONE_CF_SHIFT 2
9975#define E4_MSTORM_IWARP_CONN_AG_CTX_CF1_MASK 0x3
9976#define E4_MSTORM_IWARP_CONN_AG_CTX_CF1_SHIFT 4
9977#define E4_MSTORM_IWARP_CONN_AG_CTX_CF2_MASK 0x3
9978#define E4_MSTORM_IWARP_CONN_AG_CTX_CF2_SHIFT 6
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03009979 u8 flags1;
Tomer Tayar21dd79e2017-12-27 19:30:06 +02009980#define E4_MSTORM_IWARP_CONN_AG_CTX_INV_STAG_DONE_CF_EN_MASK 0x1
9981#define E4_MSTORM_IWARP_CONN_AG_CTX_INV_STAG_DONE_CF_EN_SHIFT 0
9982#define E4_MSTORM_IWARP_CONN_AG_CTX_CF1EN_MASK 0x1
9983#define E4_MSTORM_IWARP_CONN_AG_CTX_CF1EN_SHIFT 1
9984#define E4_MSTORM_IWARP_CONN_AG_CTX_CF2EN_MASK 0x1
9985#define E4_MSTORM_IWARP_CONN_AG_CTX_CF2EN_SHIFT 2
9986#define E4_MSTORM_IWARP_CONN_AG_CTX_RULE0EN_MASK 0x1
9987#define E4_MSTORM_IWARP_CONN_AG_CTX_RULE0EN_SHIFT 3
9988#define E4_MSTORM_IWARP_CONN_AG_CTX_RULE1EN_MASK 0x1
9989#define E4_MSTORM_IWARP_CONN_AG_CTX_RULE1EN_SHIFT 4
9990#define E4_MSTORM_IWARP_CONN_AG_CTX_RULE2EN_MASK 0x1
9991#define E4_MSTORM_IWARP_CONN_AG_CTX_RULE2EN_SHIFT 5
9992#define E4_MSTORM_IWARP_CONN_AG_CTX_RCQ_CONS_EN_MASK 0x1
9993#define E4_MSTORM_IWARP_CONN_AG_CTX_RCQ_CONS_EN_SHIFT 6
9994#define E4_MSTORM_IWARP_CONN_AG_CTX_RULE4EN_MASK 0x1
9995#define E4_MSTORM_IWARP_CONN_AG_CTX_RULE4EN_SHIFT 7
Mintz, Yuval7b6859f2017-05-18 19:41:04 +03009996 __le16 rcq_cons;
9997 __le16 rcq_cons_th;
9998 __le32 reg0;
9999 __le32 reg1;
10000};
10001
Tomer Tayar21dd79e2017-12-27 19:30:06 +020010002struct e4_ustorm_iwarp_conn_ag_ctx {
Mintz, Yuval7b6859f2017-05-18 19:41:04 +030010003 u8 reserved;
10004 u8 byte1;
10005 u8 flags0;
Tomer Tayar21dd79e2017-12-27 19:30:06 +020010006#define E4_USTORM_IWARP_CONN_AG_CTX_EXIST_IN_QM0_MASK 0x1
10007#define E4_USTORM_IWARP_CONN_AG_CTX_EXIST_IN_QM0_SHIFT 0
10008#define E4_USTORM_IWARP_CONN_AG_CTX_BIT1_MASK 0x1
10009#define E4_USTORM_IWARP_CONN_AG_CTX_BIT1_SHIFT 1
10010#define E4_USTORM_IWARP_CONN_AG_CTX_CF0_MASK 0x3
10011#define E4_USTORM_IWARP_CONN_AG_CTX_CF0_SHIFT 2
10012#define E4_USTORM_IWARP_CONN_AG_CTX_CF1_MASK 0x3
10013#define E4_USTORM_IWARP_CONN_AG_CTX_CF1_SHIFT 4
10014#define E4_USTORM_IWARP_CONN_AG_CTX_CF2_MASK 0x3
10015#define E4_USTORM_IWARP_CONN_AG_CTX_CF2_SHIFT 6
Mintz, Yuval7b6859f2017-05-18 19:41:04 +030010016 u8 flags1;
Tomer Tayar21dd79e2017-12-27 19:30:06 +020010017#define E4_USTORM_IWARP_CONN_AG_CTX_CF3_MASK 0x3
10018#define E4_USTORM_IWARP_CONN_AG_CTX_CF3_SHIFT 0
10019#define E4_USTORM_IWARP_CONN_AG_CTX_CQ_ARM_SE_CF_MASK 0x3
10020#define E4_USTORM_IWARP_CONN_AG_CTX_CQ_ARM_SE_CF_SHIFT 2
10021#define E4_USTORM_IWARP_CONN_AG_CTX_CQ_ARM_CF_MASK 0x3
10022#define E4_USTORM_IWARP_CONN_AG_CTX_CQ_ARM_CF_SHIFT 4
10023#define E4_USTORM_IWARP_CONN_AG_CTX_CF6_MASK 0x3
10024#define E4_USTORM_IWARP_CONN_AG_CTX_CF6_SHIFT 6
Mintz, Yuval7b6859f2017-05-18 19:41:04 +030010025 u8 flags2;
Tomer Tayar21dd79e2017-12-27 19:30:06 +020010026#define E4_USTORM_IWARP_CONN_AG_CTX_CF0EN_MASK 0x1
10027#define E4_USTORM_IWARP_CONN_AG_CTX_CF0EN_SHIFT 0
10028#define E4_USTORM_IWARP_CONN_AG_CTX_CF1EN_MASK 0x1
10029#define E4_USTORM_IWARP_CONN_AG_CTX_CF1EN_SHIFT 1
10030#define E4_USTORM_IWARP_CONN_AG_CTX_CF2EN_MASK 0x1
10031#define E4_USTORM_IWARP_CONN_AG_CTX_CF2EN_SHIFT 2
10032#define E4_USTORM_IWARP_CONN_AG_CTX_CF3EN_MASK 0x1
10033#define E4_USTORM_IWARP_CONN_AG_CTX_CF3EN_SHIFT 3
10034#define E4_USTORM_IWARP_CONN_AG_CTX_CQ_ARM_SE_CF_EN_MASK 0x1
10035#define E4_USTORM_IWARP_CONN_AG_CTX_CQ_ARM_SE_CF_EN_SHIFT 4
10036#define E4_USTORM_IWARP_CONN_AG_CTX_CQ_ARM_CF_EN_MASK 0x1
10037#define E4_USTORM_IWARP_CONN_AG_CTX_CQ_ARM_CF_EN_SHIFT 5
10038#define E4_USTORM_IWARP_CONN_AG_CTX_CF6EN_MASK 0x1
10039#define E4_USTORM_IWARP_CONN_AG_CTX_CF6EN_SHIFT 6
10040#define E4_USTORM_IWARP_CONN_AG_CTX_CQ_SE_EN_MASK 0x1
10041#define E4_USTORM_IWARP_CONN_AG_CTX_CQ_SE_EN_SHIFT 7
Mintz, Yuval7b6859f2017-05-18 19:41:04 +030010042 u8 flags3;
Tomer Tayar21dd79e2017-12-27 19:30:06 +020010043#define E4_USTORM_IWARP_CONN_AG_CTX_CQ_EN_MASK 0x1
10044#define E4_USTORM_IWARP_CONN_AG_CTX_CQ_EN_SHIFT 0
10045#define E4_USTORM_IWARP_CONN_AG_CTX_RULE2EN_MASK 0x1
10046#define E4_USTORM_IWARP_CONN_AG_CTX_RULE2EN_SHIFT 1
10047#define E4_USTORM_IWARP_CONN_AG_CTX_RULE3EN_MASK 0x1
10048#define E4_USTORM_IWARP_CONN_AG_CTX_RULE3EN_SHIFT 2
10049#define E4_USTORM_IWARP_CONN_AG_CTX_RULE4EN_MASK 0x1
10050#define E4_USTORM_IWARP_CONN_AG_CTX_RULE4EN_SHIFT 3
10051#define E4_USTORM_IWARP_CONN_AG_CTX_RULE5EN_MASK 0x1
10052#define E4_USTORM_IWARP_CONN_AG_CTX_RULE5EN_SHIFT 4
10053#define E4_USTORM_IWARP_CONN_AG_CTX_RULE6EN_MASK 0x1
10054#define E4_USTORM_IWARP_CONN_AG_CTX_RULE6EN_SHIFT 5
10055#define E4_USTORM_IWARP_CONN_AG_CTX_RULE7EN_MASK 0x1
10056#define E4_USTORM_IWARP_CONN_AG_CTX_RULE7EN_SHIFT 6
10057#define E4_USTORM_IWARP_CONN_AG_CTX_RULE8EN_MASK 0x1
10058#define E4_USTORM_IWARP_CONN_AG_CTX_RULE8EN_SHIFT 7
Mintz, Yuval7b6859f2017-05-18 19:41:04 +030010059 u8 byte2;
10060 u8 byte3;
10061 __le16 word0;
10062 __le16 word1;
10063 __le32 cq_cons;
10064 __le32 cq_se_prod;
10065 __le32 cq_prod;
10066 __le32 reg3;
10067 __le16 word2;
10068 __le16 word3;
10069};
10070
Tomer Tayar21dd79e2017-12-27 19:30:06 +020010071struct e4_ystorm_iwarp_conn_ag_ctx {
Mintz, Yuval7b6859f2017-05-18 19:41:04 +030010072 u8 byte0;
10073 u8 byte1;
10074 u8 flags0;
Tomer Tayar21dd79e2017-12-27 19:30:06 +020010075#define E4_YSTORM_IWARP_CONN_AG_CTX_BIT0_MASK 0x1
10076#define E4_YSTORM_IWARP_CONN_AG_CTX_BIT0_SHIFT 0
10077#define E4_YSTORM_IWARP_CONN_AG_CTX_BIT1_MASK 0x1
10078#define E4_YSTORM_IWARP_CONN_AG_CTX_BIT1_SHIFT 1
10079#define E4_YSTORM_IWARP_CONN_AG_CTX_CF0_MASK 0x3
10080#define E4_YSTORM_IWARP_CONN_AG_CTX_CF0_SHIFT 2
10081#define E4_YSTORM_IWARP_CONN_AG_CTX_CF1_MASK 0x3
10082#define E4_YSTORM_IWARP_CONN_AG_CTX_CF1_SHIFT 4
10083#define E4_YSTORM_IWARP_CONN_AG_CTX_CF2_MASK 0x3
10084#define E4_YSTORM_IWARP_CONN_AG_CTX_CF2_SHIFT 6
Mintz, Yuval7b6859f2017-05-18 19:41:04 +030010085 u8 flags1;
Tomer Tayar21dd79e2017-12-27 19:30:06 +020010086#define E4_YSTORM_IWARP_CONN_AG_CTX_CF0EN_MASK 0x1
10087#define E4_YSTORM_IWARP_CONN_AG_CTX_CF0EN_SHIFT 0
10088#define E4_YSTORM_IWARP_CONN_AG_CTX_CF1EN_MASK 0x1
10089#define E4_YSTORM_IWARP_CONN_AG_CTX_CF1EN_SHIFT 1
10090#define E4_YSTORM_IWARP_CONN_AG_CTX_CF2EN_MASK 0x1
10091#define E4_YSTORM_IWARP_CONN_AG_CTX_CF2EN_SHIFT 2
10092#define E4_YSTORM_IWARP_CONN_AG_CTX_RULE0EN_MASK 0x1
10093#define E4_YSTORM_IWARP_CONN_AG_CTX_RULE0EN_SHIFT 3
10094#define E4_YSTORM_IWARP_CONN_AG_CTX_RULE1EN_MASK 0x1
10095#define E4_YSTORM_IWARP_CONN_AG_CTX_RULE1EN_SHIFT 4
10096#define E4_YSTORM_IWARP_CONN_AG_CTX_RULE2EN_MASK 0x1
10097#define E4_YSTORM_IWARP_CONN_AG_CTX_RULE2EN_SHIFT 5
10098#define E4_YSTORM_IWARP_CONN_AG_CTX_RULE3EN_MASK 0x1
10099#define E4_YSTORM_IWARP_CONN_AG_CTX_RULE3EN_SHIFT 6
10100#define E4_YSTORM_IWARP_CONN_AG_CTX_RULE4EN_MASK 0x1
10101#define E4_YSTORM_IWARP_CONN_AG_CTX_RULE4EN_SHIFT 7
Mintz, Yuval7b6859f2017-05-18 19:41:04 +030010102 u8 byte2;
10103 u8 byte3;
10104 __le16 word0;
10105 __le32 reg0;
10106 __le32 reg1;
10107 __le16 word1;
10108 __le16 word2;
10109 __le16 word3;
10110 __le16 word4;
10111 __le32 reg2;
10112 __le32 reg3;
10113};
10114
Tomer Tayara2e76992017-12-27 19:30:05 +020010115/* The fcoe storm context of Ystorm */
Arun Easi1e128c82017-02-15 06:28:22 -080010116struct ystorm_fcoe_conn_st_ctx {
10117 u8 func_mode;
10118 u8 cos;
10119 u8 conf_version;
10120 u8 eth_hdr_size;
10121 __le16 stat_ram_addr;
10122 __le16 mtu;
10123 __le16 max_fc_payload_len;
10124 __le16 tx_max_fc_pay_len;
10125 u8 fcp_cmd_size;
10126 u8 fcp_rsp_size;
10127 __le16 mss;
10128 struct regpair reserved;
Mintz, Yuvalbe086e72017-03-11 18:39:18 +020010129 __le16 min_frame_size;
Arun Easi1e128c82017-02-15 06:28:22 -080010130 u8 protection_info_flags;
Tomer Tayara2e76992017-12-27 19:30:05 +020010131#define YSTORM_FCOE_CONN_ST_CTX_SUPPORT_PROTECTION_MASK 0x1
10132#define YSTORM_FCOE_CONN_ST_CTX_SUPPORT_PROTECTION_SHIFT 0
10133#define YSTORM_FCOE_CONN_ST_CTX_VALID_MASK 0x1
10134#define YSTORM_FCOE_CONN_ST_CTX_VALID_SHIFT 1
10135#define YSTORM_FCOE_CONN_ST_CTX_RESERVED1_MASK 0x3F
10136#define YSTORM_FCOE_CONN_ST_CTX_RESERVED1_SHIFT 2
Arun Easi1e128c82017-02-15 06:28:22 -080010137 u8 dst_protection_per_mss;
10138 u8 src_protection_per_mss;
10139 u8 ptu_log_page_size;
10140 u8 flags;
Tomer Tayara2e76992017-12-27 19:30:05 +020010141#define YSTORM_FCOE_CONN_ST_CTX_INNER_VLAN_FLAG_MASK 0x1
10142#define YSTORM_FCOE_CONN_ST_CTX_INNER_VLAN_FLAG_SHIFT 0
10143#define YSTORM_FCOE_CONN_ST_CTX_OUTER_VLAN_FLAG_MASK 0x1
10144#define YSTORM_FCOE_CONN_ST_CTX_OUTER_VLAN_FLAG_SHIFT 1
10145#define YSTORM_FCOE_CONN_ST_CTX_RSRV_MASK 0x3F
10146#define YSTORM_FCOE_CONN_ST_CTX_RSRV_SHIFT 2
Arun Easi1e128c82017-02-15 06:28:22 -080010147 u8 fcp_xfer_size;
Arun Easi1e128c82017-02-15 06:28:22 -080010148};
10149
Tomer Tayara2e76992017-12-27 19:30:05 +020010150/* FCoE 16-bits vlan structure */
Arun Easi1e128c82017-02-15 06:28:22 -080010151struct fcoe_vlan_fields {
10152 __le16 fields;
Tomer Tayara2e76992017-12-27 19:30:05 +020010153#define FCOE_VLAN_FIELDS_VID_MASK 0xFFF
10154#define FCOE_VLAN_FIELDS_VID_SHIFT 0
10155#define FCOE_VLAN_FIELDS_CLI_MASK 0x1
10156#define FCOE_VLAN_FIELDS_CLI_SHIFT 12
10157#define FCOE_VLAN_FIELDS_PRI_MASK 0x7
10158#define FCOE_VLAN_FIELDS_PRI_SHIFT 13
Arun Easi1e128c82017-02-15 06:28:22 -080010159};
10160
Tomer Tayara2e76992017-12-27 19:30:05 +020010161/* FCoE 16-bits vlan union */
Arun Easi1e128c82017-02-15 06:28:22 -080010162union fcoe_vlan_field_union {
10163 struct fcoe_vlan_fields fields;
10164 __le16 val;
10165};
10166
Tomer Tayara2e76992017-12-27 19:30:05 +020010167/* FCoE 16-bits vlan, vif union */
Arun Easi1e128c82017-02-15 06:28:22 -080010168union fcoe_vlan_vif_field_union {
10169 union fcoe_vlan_field_union vlan;
10170 __le16 vif;
10171};
10172
Tomer Tayara2e76992017-12-27 19:30:05 +020010173/* Ethernet context section */
Arun Easi1e128c82017-02-15 06:28:22 -080010174struct pstorm_fcoe_eth_context_section {
10175 u8 remote_addr_3;
10176 u8 remote_addr_2;
10177 u8 remote_addr_1;
10178 u8 remote_addr_0;
10179 u8 local_addr_1;
10180 u8 local_addr_0;
10181 u8 remote_addr_5;
10182 u8 remote_addr_4;
10183 u8 local_addr_5;
10184 u8 local_addr_4;
10185 u8 local_addr_3;
10186 u8 local_addr_2;
10187 union fcoe_vlan_vif_field_union vif_outer_vlan;
10188 __le16 vif_outer_eth_type;
10189 union fcoe_vlan_vif_field_union inner_vlan;
10190 __le16 inner_eth_type;
10191};
10192
Tomer Tayara2e76992017-12-27 19:30:05 +020010193/* The fcoe storm context of Pstorm */
Arun Easi1e128c82017-02-15 06:28:22 -080010194struct pstorm_fcoe_conn_st_ctx {
10195 u8 func_mode;
10196 u8 cos;
10197 u8 conf_version;
10198 u8 rsrv;
10199 __le16 stat_ram_addr;
10200 __le16 mss;
10201 struct regpair abts_cleanup_addr;
10202 struct pstorm_fcoe_eth_context_section eth;
10203 u8 sid_2;
10204 u8 sid_1;
10205 u8 sid_0;
10206 u8 flags;
Tomer Tayara2e76992017-12-27 19:30:05 +020010207#define PSTORM_FCOE_CONN_ST_CTX_VNTAG_VLAN_MASK 0x1
10208#define PSTORM_FCOE_CONN_ST_CTX_VNTAG_VLAN_SHIFT 0
10209#define PSTORM_FCOE_CONN_ST_CTX_SUPPORT_REC_RR_TOV_MASK 0x1
10210#define PSTORM_FCOE_CONN_ST_CTX_SUPPORT_REC_RR_TOV_SHIFT 1
10211#define PSTORM_FCOE_CONN_ST_CTX_INNER_VLAN_FLAG_MASK 0x1
10212#define PSTORM_FCOE_CONN_ST_CTX_INNER_VLAN_FLAG_SHIFT 2
10213#define PSTORM_FCOE_CONN_ST_CTX_OUTER_VLAN_FLAG_MASK 0x1
10214#define PSTORM_FCOE_CONN_ST_CTX_OUTER_VLAN_FLAG_SHIFT 3
Tomer Tayarda090912017-12-27 19:30:07 +020010215#define PSTORM_FCOE_CONN_ST_CTX_SINGLE_VLAN_FLAG_MASK 0x1
10216#define PSTORM_FCOE_CONN_ST_CTX_SINGLE_VLAN_FLAG_SHIFT 4
10217#define PSTORM_FCOE_CONN_ST_CTX_RESERVED_MASK 0x7
10218#define PSTORM_FCOE_CONN_ST_CTX_RESERVED_SHIFT 5
Arun Easi1e128c82017-02-15 06:28:22 -080010219 u8 did_2;
10220 u8 did_1;
10221 u8 did_0;
10222 u8 src_mac_index;
10223 __le16 rec_rr_tov_val;
10224 u8 q_relative_offset;
10225 u8 reserved1;
10226};
10227
Tomer Tayara2e76992017-12-27 19:30:05 +020010228/* The fcoe storm context of Xstorm */
Arun Easi1e128c82017-02-15 06:28:22 -080010229struct xstorm_fcoe_conn_st_ctx {
10230 u8 func_mode;
10231 u8 src_mac_index;
10232 u8 conf_version;
10233 u8 cached_wqes_avail;
10234 __le16 stat_ram_addr;
10235 u8 flags;
Tomer Tayara2e76992017-12-27 19:30:05 +020010236#define XSTORM_FCOE_CONN_ST_CTX_SQ_DEFERRED_MASK 0x1
10237#define XSTORM_FCOE_CONN_ST_CTX_SQ_DEFERRED_SHIFT 0
10238#define XSTORM_FCOE_CONN_ST_CTX_INNER_VLAN_FLAG_MASK 0x1
10239#define XSTORM_FCOE_CONN_ST_CTX_INNER_VLAN_FLAG_SHIFT 1
10240#define XSTORM_FCOE_CONN_ST_CTX_INNER_VLAN_FLAG_ORIG_MASK 0x1
10241#define XSTORM_FCOE_CONN_ST_CTX_INNER_VLAN_FLAG_ORIG_SHIFT 2
10242#define XSTORM_FCOE_CONN_ST_CTX_LAST_QUEUE_HANDLED_MASK 0x3
10243#define XSTORM_FCOE_CONN_ST_CTX_LAST_QUEUE_HANDLED_SHIFT 3
10244#define XSTORM_FCOE_CONN_ST_CTX_RSRV_MASK 0x7
10245#define XSTORM_FCOE_CONN_ST_CTX_RSRV_SHIFT 5
Arun Easi1e128c82017-02-15 06:28:22 -080010246 u8 cached_wqes_offset;
10247 u8 reserved2;
10248 u8 eth_hdr_size;
10249 u8 seq_id;
10250 u8 max_conc_seqs;
10251 __le16 num_pages_in_pbl;
10252 __le16 reserved;
10253 struct regpair sq_pbl_addr;
10254 struct regpair sq_curr_page_addr;
10255 struct regpair sq_next_page_addr;
10256 struct regpair xferq_pbl_addr;
10257 struct regpair xferq_curr_page_addr;
10258 struct regpair xferq_next_page_addr;
10259 struct regpair respq_pbl_addr;
10260 struct regpair respq_curr_page_addr;
10261 struct regpair respq_next_page_addr;
10262 __le16 mtu;
10263 __le16 tx_max_fc_pay_len;
10264 __le16 max_fc_payload_len;
10265 __le16 min_frame_size;
10266 __le16 sq_pbl_next_index;
10267 __le16 respq_pbl_next_index;
10268 u8 fcp_cmd_byte_credit;
10269 u8 fcp_rsp_byte_credit;
10270 __le16 protection_info;
Tomer Tayara2e76992017-12-27 19:30:05 +020010271#define XSTORM_FCOE_CONN_ST_CTX_PROTECTION_PERF_MASK 0x1
10272#define XSTORM_FCOE_CONN_ST_CTX_PROTECTION_PERF_SHIFT 0
10273#define XSTORM_FCOE_CONN_ST_CTX_SUPPORT_PROTECTION_MASK 0x1
10274#define XSTORM_FCOE_CONN_ST_CTX_SUPPORT_PROTECTION_SHIFT 1
10275#define XSTORM_FCOE_CONN_ST_CTX_VALID_MASK 0x1
10276#define XSTORM_FCOE_CONN_ST_CTX_VALID_SHIFT 2
10277#define XSTORM_FCOE_CONN_ST_CTX_FRAME_PROT_ALIGNED_MASK 0x1
10278#define XSTORM_FCOE_CONN_ST_CTX_FRAME_PROT_ALIGNED_SHIFT 3
10279#define XSTORM_FCOE_CONN_ST_CTX_RESERVED3_MASK 0xF
10280#define XSTORM_FCOE_CONN_ST_CTX_RESERVED3_SHIFT 4
10281#define XSTORM_FCOE_CONN_ST_CTX_DST_PROTECTION_PER_MSS_MASK 0xFF
10282#define XSTORM_FCOE_CONN_ST_CTX_DST_PROTECTION_PER_MSS_SHIFT 8
Arun Easi1e128c82017-02-15 06:28:22 -080010283 __le16 xferq_pbl_next_index;
10284 __le16 page_size;
10285 u8 mid_seq;
10286 u8 fcp_xfer_byte_credit;
10287 u8 reserved1[2];
10288 struct fcoe_wqe cached_wqes[16];
10289};
10290
Tomer Tayar21dd79e2017-12-27 19:30:06 +020010291struct e4_xstorm_fcoe_conn_ag_ctx {
Arun Easi1e128c82017-02-15 06:28:22 -080010292 u8 reserved0;
Tomer Tayarda090912017-12-27 19:30:07 +020010293 u8 state;
Arun Easi1e128c82017-02-15 06:28:22 -080010294 u8 flags0;
Tomer Tayar21dd79e2017-12-27 19:30:06 +020010295#define E4_XSTORM_FCOE_CONN_AG_CTX_EXIST_IN_QM0_MASK 0x1
10296#define E4_XSTORM_FCOE_CONN_AG_CTX_EXIST_IN_QM0_SHIFT 0
10297#define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED1_MASK 0x1
10298#define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED1_SHIFT 1
10299#define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED2_MASK 0x1
10300#define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED2_SHIFT 2
10301#define E4_XSTORM_FCOE_CONN_AG_CTX_EXIST_IN_QM3_MASK 0x1
10302#define E4_XSTORM_FCOE_CONN_AG_CTX_EXIST_IN_QM3_SHIFT 3
10303#define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED3_MASK 0x1
10304#define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED3_SHIFT 4
10305#define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED4_MASK 0x1
10306#define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED4_SHIFT 5
10307#define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED5_MASK 0x1
10308#define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED5_SHIFT 6
10309#define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED6_MASK 0x1
10310#define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED6_SHIFT 7
Arun Easi1e128c82017-02-15 06:28:22 -080010311 u8 flags1;
Tomer Tayar21dd79e2017-12-27 19:30:06 +020010312#define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED7_MASK 0x1
10313#define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED7_SHIFT 0
10314#define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED8_MASK 0x1
10315#define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED8_SHIFT 1
10316#define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED9_MASK 0x1
10317#define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED9_SHIFT 2
10318#define E4_XSTORM_FCOE_CONN_AG_CTX_BIT11_MASK 0x1
10319#define E4_XSTORM_FCOE_CONN_AG_CTX_BIT11_SHIFT 3
10320#define E4_XSTORM_FCOE_CONN_AG_CTX_BIT12_MASK 0x1
10321#define E4_XSTORM_FCOE_CONN_AG_CTX_BIT12_SHIFT 4
10322#define E4_XSTORM_FCOE_CONN_AG_CTX_BIT13_MASK 0x1
10323#define E4_XSTORM_FCOE_CONN_AG_CTX_BIT13_SHIFT 5
10324#define E4_XSTORM_FCOE_CONN_AG_CTX_BIT14_MASK 0x1
10325#define E4_XSTORM_FCOE_CONN_AG_CTX_BIT14_SHIFT 6
10326#define E4_XSTORM_FCOE_CONN_AG_CTX_BIT15_MASK 0x1
10327#define E4_XSTORM_FCOE_CONN_AG_CTX_BIT15_SHIFT 7
Arun Easi1e128c82017-02-15 06:28:22 -080010328 u8 flags2;
Tomer Tayar21dd79e2017-12-27 19:30:06 +020010329#define E4_XSTORM_FCOE_CONN_AG_CTX_CF0_MASK 0x3
10330#define E4_XSTORM_FCOE_CONN_AG_CTX_CF0_SHIFT 0
10331#define E4_XSTORM_FCOE_CONN_AG_CTX_CF1_MASK 0x3
10332#define E4_XSTORM_FCOE_CONN_AG_CTX_CF1_SHIFT 2
10333#define E4_XSTORM_FCOE_CONN_AG_CTX_CF2_MASK 0x3
10334#define E4_XSTORM_FCOE_CONN_AG_CTX_CF2_SHIFT 4
10335#define E4_XSTORM_FCOE_CONN_AG_CTX_CF3_MASK 0x3
10336#define E4_XSTORM_FCOE_CONN_AG_CTX_CF3_SHIFT 6
Arun Easi1e128c82017-02-15 06:28:22 -080010337 u8 flags3;
Tomer Tayar21dd79e2017-12-27 19:30:06 +020010338#define E4_XSTORM_FCOE_CONN_AG_CTX_CF4_MASK 0x3
10339#define E4_XSTORM_FCOE_CONN_AG_CTX_CF4_SHIFT 0
10340#define E4_XSTORM_FCOE_CONN_AG_CTX_CF5_MASK 0x3
10341#define E4_XSTORM_FCOE_CONN_AG_CTX_CF5_SHIFT 2
10342#define E4_XSTORM_FCOE_CONN_AG_CTX_CF6_MASK 0x3
10343#define E4_XSTORM_FCOE_CONN_AG_CTX_CF6_SHIFT 4
10344#define E4_XSTORM_FCOE_CONN_AG_CTX_CF7_MASK 0x3
10345#define E4_XSTORM_FCOE_CONN_AG_CTX_CF7_SHIFT 6
Arun Easi1e128c82017-02-15 06:28:22 -080010346 u8 flags4;
Tomer Tayar21dd79e2017-12-27 19:30:06 +020010347#define E4_XSTORM_FCOE_CONN_AG_CTX_CF8_MASK 0x3
10348#define E4_XSTORM_FCOE_CONN_AG_CTX_CF8_SHIFT 0
10349#define E4_XSTORM_FCOE_CONN_AG_CTX_CF9_MASK 0x3
10350#define E4_XSTORM_FCOE_CONN_AG_CTX_CF9_SHIFT 2
10351#define E4_XSTORM_FCOE_CONN_AG_CTX_CF10_MASK 0x3
10352#define E4_XSTORM_FCOE_CONN_AG_CTX_CF10_SHIFT 4
10353#define E4_XSTORM_FCOE_CONN_AG_CTX_CF11_MASK 0x3
10354#define E4_XSTORM_FCOE_CONN_AG_CTX_CF11_SHIFT 6
Arun Easi1e128c82017-02-15 06:28:22 -080010355 u8 flags5;
Tomer Tayar21dd79e2017-12-27 19:30:06 +020010356#define E4_XSTORM_FCOE_CONN_AG_CTX_CF12_MASK 0x3
10357#define E4_XSTORM_FCOE_CONN_AG_CTX_CF12_SHIFT 0
10358#define E4_XSTORM_FCOE_CONN_AG_CTX_CF13_MASK 0x3
10359#define E4_XSTORM_FCOE_CONN_AG_CTX_CF13_SHIFT 2
10360#define E4_XSTORM_FCOE_CONN_AG_CTX_CF14_MASK 0x3
10361#define E4_XSTORM_FCOE_CONN_AG_CTX_CF14_SHIFT 4
10362#define E4_XSTORM_FCOE_CONN_AG_CTX_CF15_MASK 0x3
10363#define E4_XSTORM_FCOE_CONN_AG_CTX_CF15_SHIFT 6
Arun Easi1e128c82017-02-15 06:28:22 -080010364 u8 flags6;
Tomer Tayar21dd79e2017-12-27 19:30:06 +020010365#define E4_XSTORM_FCOE_CONN_AG_CTX_CF16_MASK 0x3
10366#define E4_XSTORM_FCOE_CONN_AG_CTX_CF16_SHIFT 0
10367#define E4_XSTORM_FCOE_CONN_AG_CTX_CF17_MASK 0x3
10368#define E4_XSTORM_FCOE_CONN_AG_CTX_CF17_SHIFT 2
10369#define E4_XSTORM_FCOE_CONN_AG_CTX_CF18_MASK 0x3
10370#define E4_XSTORM_FCOE_CONN_AG_CTX_CF18_SHIFT 4
10371#define E4_XSTORM_FCOE_CONN_AG_CTX_DQ_CF_MASK 0x3
10372#define E4_XSTORM_FCOE_CONN_AG_CTX_DQ_CF_SHIFT 6
Arun Easi1e128c82017-02-15 06:28:22 -080010373 u8 flags7;
Tomer Tayar21dd79e2017-12-27 19:30:06 +020010374#define E4_XSTORM_FCOE_CONN_AG_CTX_FLUSH_Q0_MASK 0x3
10375#define E4_XSTORM_FCOE_CONN_AG_CTX_FLUSH_Q0_SHIFT 0
10376#define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED10_MASK 0x3
10377#define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED10_SHIFT 2
10378#define E4_XSTORM_FCOE_CONN_AG_CTX_SLOW_PATH_MASK 0x3
10379#define E4_XSTORM_FCOE_CONN_AG_CTX_SLOW_PATH_SHIFT 4
10380#define E4_XSTORM_FCOE_CONN_AG_CTX_CF0EN_MASK 0x1
10381#define E4_XSTORM_FCOE_CONN_AG_CTX_CF0EN_SHIFT 6
10382#define E4_XSTORM_FCOE_CONN_AG_CTX_CF1EN_MASK 0x1
10383#define E4_XSTORM_FCOE_CONN_AG_CTX_CF1EN_SHIFT 7
Arun Easi1e128c82017-02-15 06:28:22 -080010384 u8 flags8;
Tomer Tayar21dd79e2017-12-27 19:30:06 +020010385#define E4_XSTORM_FCOE_CONN_AG_CTX_CF2EN_MASK 0x1
10386#define E4_XSTORM_FCOE_CONN_AG_CTX_CF2EN_SHIFT 0
10387#define E4_XSTORM_FCOE_CONN_AG_CTX_CF3EN_MASK 0x1
10388#define E4_XSTORM_FCOE_CONN_AG_CTX_CF3EN_SHIFT 1
10389#define E4_XSTORM_FCOE_CONN_AG_CTX_CF4EN_MASK 0x1
10390#define E4_XSTORM_FCOE_CONN_AG_CTX_CF4EN_SHIFT 2
10391#define E4_XSTORM_FCOE_CONN_AG_CTX_CF5EN_MASK 0x1
10392#define E4_XSTORM_FCOE_CONN_AG_CTX_CF5EN_SHIFT 3
10393#define E4_XSTORM_FCOE_CONN_AG_CTX_CF6EN_MASK 0x1
10394#define E4_XSTORM_FCOE_CONN_AG_CTX_CF6EN_SHIFT 4
10395#define E4_XSTORM_FCOE_CONN_AG_CTX_CF7EN_MASK 0x1
10396#define E4_XSTORM_FCOE_CONN_AG_CTX_CF7EN_SHIFT 5
10397#define E4_XSTORM_FCOE_CONN_AG_CTX_CF8EN_MASK 0x1
10398#define E4_XSTORM_FCOE_CONN_AG_CTX_CF8EN_SHIFT 6
10399#define E4_XSTORM_FCOE_CONN_AG_CTX_CF9EN_MASK 0x1
10400#define E4_XSTORM_FCOE_CONN_AG_CTX_CF9EN_SHIFT 7
Arun Easi1e128c82017-02-15 06:28:22 -080010401 u8 flags9;
Tomer Tayar21dd79e2017-12-27 19:30:06 +020010402#define E4_XSTORM_FCOE_CONN_AG_CTX_CF10EN_MASK 0x1
10403#define E4_XSTORM_FCOE_CONN_AG_CTX_CF10EN_SHIFT 0
10404#define E4_XSTORM_FCOE_CONN_AG_CTX_CF11EN_MASK 0x1
10405#define E4_XSTORM_FCOE_CONN_AG_CTX_CF11EN_SHIFT 1
10406#define E4_XSTORM_FCOE_CONN_AG_CTX_CF12EN_MASK 0x1
10407#define E4_XSTORM_FCOE_CONN_AG_CTX_CF12EN_SHIFT 2
10408#define E4_XSTORM_FCOE_CONN_AG_CTX_CF13EN_MASK 0x1
10409#define E4_XSTORM_FCOE_CONN_AG_CTX_CF13EN_SHIFT 3
10410#define E4_XSTORM_FCOE_CONN_AG_CTX_CF14EN_MASK 0x1
10411#define E4_XSTORM_FCOE_CONN_AG_CTX_CF14EN_SHIFT 4
10412#define E4_XSTORM_FCOE_CONN_AG_CTX_CF15EN_MASK 0x1
10413#define E4_XSTORM_FCOE_CONN_AG_CTX_CF15EN_SHIFT 5
10414#define E4_XSTORM_FCOE_CONN_AG_CTX_CF16EN_MASK 0x1
10415#define E4_XSTORM_FCOE_CONN_AG_CTX_CF16EN_SHIFT 6
10416#define E4_XSTORM_FCOE_CONN_AG_CTX_CF17EN_MASK 0x1
10417#define E4_XSTORM_FCOE_CONN_AG_CTX_CF17EN_SHIFT 7
Arun Easi1e128c82017-02-15 06:28:22 -080010418 u8 flags10;
Tomer Tayar21dd79e2017-12-27 19:30:06 +020010419#define E4_XSTORM_FCOE_CONN_AG_CTX_CF18EN_MASK 0x1
10420#define E4_XSTORM_FCOE_CONN_AG_CTX_CF18EN_SHIFT 0
10421#define E4_XSTORM_FCOE_CONN_AG_CTX_DQ_CF_EN_MASK 0x1
10422#define E4_XSTORM_FCOE_CONN_AG_CTX_DQ_CF_EN_SHIFT 1
10423#define E4_XSTORM_FCOE_CONN_AG_CTX_FLUSH_Q0_EN_MASK 0x1
10424#define E4_XSTORM_FCOE_CONN_AG_CTX_FLUSH_Q0_EN_SHIFT 2
10425#define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED11_MASK 0x1
10426#define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED11_SHIFT 3
10427#define E4_XSTORM_FCOE_CONN_AG_CTX_SLOW_PATH_EN_MASK 0x1
10428#define E4_XSTORM_FCOE_CONN_AG_CTX_SLOW_PATH_EN_SHIFT 4
10429#define E4_XSTORM_FCOE_CONN_AG_CTX_CF23EN_MASK 0x1
10430#define E4_XSTORM_FCOE_CONN_AG_CTX_CF23EN_SHIFT 5
10431#define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED12_MASK 0x1
10432#define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED12_SHIFT 6
10433#define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED13_MASK 0x1
10434#define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED13_SHIFT 7
Arun Easi1e128c82017-02-15 06:28:22 -080010435 u8 flags11;
Tomer Tayar21dd79e2017-12-27 19:30:06 +020010436#define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED14_MASK 0x1
10437#define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED14_SHIFT 0
10438#define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED15_MASK 0x1
10439#define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED15_SHIFT 1
10440#define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED16_MASK 0x1
10441#define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED16_SHIFT 2
10442#define E4_XSTORM_FCOE_CONN_AG_CTX_RULE5EN_MASK 0x1
10443#define E4_XSTORM_FCOE_CONN_AG_CTX_RULE5EN_SHIFT 3
10444#define E4_XSTORM_FCOE_CONN_AG_CTX_RULE6EN_MASK 0x1
10445#define E4_XSTORM_FCOE_CONN_AG_CTX_RULE6EN_SHIFT 4
10446#define E4_XSTORM_FCOE_CONN_AG_CTX_RULE7EN_MASK 0x1
10447#define E4_XSTORM_FCOE_CONN_AG_CTX_RULE7EN_SHIFT 5
10448#define E4_XSTORM_FCOE_CONN_AG_CTX_A0_RESERVED1_MASK 0x1
10449#define E4_XSTORM_FCOE_CONN_AG_CTX_A0_RESERVED1_SHIFT 6
10450#define E4_XSTORM_FCOE_CONN_AG_CTX_XFERQ_DECISION_EN_MASK 0x1
10451#define E4_XSTORM_FCOE_CONN_AG_CTX_XFERQ_DECISION_EN_SHIFT 7
Arun Easi1e128c82017-02-15 06:28:22 -080010452 u8 flags12;
Tomer Tayar21dd79e2017-12-27 19:30:06 +020010453#define E4_XSTORM_FCOE_CONN_AG_CTX_SQ_DECISION_EN_MASK 0x1
10454#define E4_XSTORM_FCOE_CONN_AG_CTX_SQ_DECISION_EN_SHIFT 0
10455#define E4_XSTORM_FCOE_CONN_AG_CTX_RULE11EN_MASK 0x1
10456#define E4_XSTORM_FCOE_CONN_AG_CTX_RULE11EN_SHIFT 1
10457#define E4_XSTORM_FCOE_CONN_AG_CTX_A0_RESERVED2_MASK 0x1
10458#define E4_XSTORM_FCOE_CONN_AG_CTX_A0_RESERVED2_SHIFT 2
10459#define E4_XSTORM_FCOE_CONN_AG_CTX_A0_RESERVED3_MASK 0x1
10460#define E4_XSTORM_FCOE_CONN_AG_CTX_A0_RESERVED3_SHIFT 3
10461#define E4_XSTORM_FCOE_CONN_AG_CTX_RULE14EN_MASK 0x1
10462#define E4_XSTORM_FCOE_CONN_AG_CTX_RULE14EN_SHIFT 4
10463#define E4_XSTORM_FCOE_CONN_AG_CTX_RULE15EN_MASK 0x1
10464#define E4_XSTORM_FCOE_CONN_AG_CTX_RULE15EN_SHIFT 5
10465#define E4_XSTORM_FCOE_CONN_AG_CTX_RULE16EN_MASK 0x1
10466#define E4_XSTORM_FCOE_CONN_AG_CTX_RULE16EN_SHIFT 6
10467#define E4_XSTORM_FCOE_CONN_AG_CTX_RULE17EN_MASK 0x1
10468#define E4_XSTORM_FCOE_CONN_AG_CTX_RULE17EN_SHIFT 7
Arun Easi1e128c82017-02-15 06:28:22 -080010469 u8 flags13;
Tomer Tayar21dd79e2017-12-27 19:30:06 +020010470#define E4_XSTORM_FCOE_CONN_AG_CTX_RESPQ_DECISION_EN_MASK 0x1
10471#define E4_XSTORM_FCOE_CONN_AG_CTX_RESPQ_DECISION_EN_SHIFT 0
10472#define E4_XSTORM_FCOE_CONN_AG_CTX_RULE19EN_MASK 0x1
10473#define E4_XSTORM_FCOE_CONN_AG_CTX_RULE19EN_SHIFT 1
10474#define E4_XSTORM_FCOE_CONN_AG_CTX_A0_RESERVED4_MASK 0x1
10475#define E4_XSTORM_FCOE_CONN_AG_CTX_A0_RESERVED4_SHIFT 2
10476#define E4_XSTORM_FCOE_CONN_AG_CTX_A0_RESERVED5_MASK 0x1
10477#define E4_XSTORM_FCOE_CONN_AG_CTX_A0_RESERVED5_SHIFT 3
10478#define E4_XSTORM_FCOE_CONN_AG_CTX_A0_RESERVED6_MASK 0x1
10479#define E4_XSTORM_FCOE_CONN_AG_CTX_A0_RESERVED6_SHIFT 4
10480#define E4_XSTORM_FCOE_CONN_AG_CTX_A0_RESERVED7_MASK 0x1
10481#define E4_XSTORM_FCOE_CONN_AG_CTX_A0_RESERVED7_SHIFT 5
10482#define E4_XSTORM_FCOE_CONN_AG_CTX_A0_RESERVED8_MASK 0x1
10483#define E4_XSTORM_FCOE_CONN_AG_CTX_A0_RESERVED8_SHIFT 6
10484#define E4_XSTORM_FCOE_CONN_AG_CTX_A0_RESERVED9_MASK 0x1
10485#define E4_XSTORM_FCOE_CONN_AG_CTX_A0_RESERVED9_SHIFT 7
Arun Easi1e128c82017-02-15 06:28:22 -080010486 u8 flags14;
Tomer Tayar21dd79e2017-12-27 19:30:06 +020010487#define E4_XSTORM_FCOE_CONN_AG_CTX_BIT16_MASK 0x1
10488#define E4_XSTORM_FCOE_CONN_AG_CTX_BIT16_SHIFT 0
10489#define E4_XSTORM_FCOE_CONN_AG_CTX_BIT17_MASK 0x1
10490#define E4_XSTORM_FCOE_CONN_AG_CTX_BIT17_SHIFT 1
10491#define E4_XSTORM_FCOE_CONN_AG_CTX_BIT18_MASK 0x1
10492#define E4_XSTORM_FCOE_CONN_AG_CTX_BIT18_SHIFT 2
10493#define E4_XSTORM_FCOE_CONN_AG_CTX_BIT19_MASK 0x1
10494#define E4_XSTORM_FCOE_CONN_AG_CTX_BIT19_SHIFT 3
10495#define E4_XSTORM_FCOE_CONN_AG_CTX_BIT20_MASK 0x1
10496#define E4_XSTORM_FCOE_CONN_AG_CTX_BIT20_SHIFT 4
10497#define E4_XSTORM_FCOE_CONN_AG_CTX_BIT21_MASK 0x1
10498#define E4_XSTORM_FCOE_CONN_AG_CTX_BIT21_SHIFT 5
10499#define E4_XSTORM_FCOE_CONN_AG_CTX_CF23_MASK 0x3
10500#define E4_XSTORM_FCOE_CONN_AG_CTX_CF23_SHIFT 6
Arun Easi1e128c82017-02-15 06:28:22 -080010501 u8 byte2;
10502 __le16 physical_q0;
10503 __le16 word1;
10504 __le16 word2;
10505 __le16 sq_cons;
10506 __le16 sq_prod;
10507 __le16 xferq_prod;
10508 __le16 xferq_cons;
10509 u8 byte3;
10510 u8 byte4;
10511 u8 byte5;
10512 u8 byte6;
10513 __le32 remain_io;
10514 __le32 reg1;
10515 __le32 reg2;
10516 __le32 reg3;
10517 __le32 reg4;
10518 __le32 reg5;
10519 __le32 reg6;
10520 __le16 respq_prod;
10521 __le16 respq_cons;
10522 __le16 word9;
10523 __le16 word10;
10524 __le32 reg7;
10525 __le32 reg8;
10526};
10527
Tomer Tayara2e76992017-12-27 19:30:05 +020010528/* The fcoe storm context of Ustorm */
Arun Easi1e128c82017-02-15 06:28:22 -080010529struct ustorm_fcoe_conn_st_ctx {
10530 struct regpair respq_pbl_addr;
10531 __le16 num_pages_in_pbl;
10532 u8 ptu_log_page_size;
10533 u8 log_page_size;
10534 __le16 respq_prod;
10535 u8 reserved[2];
10536};
10537
Tomer Tayar21dd79e2017-12-27 19:30:06 +020010538struct e4_tstorm_fcoe_conn_ag_ctx {
Arun Easi1e128c82017-02-15 06:28:22 -080010539 u8 reserved0;
Tomer Tayarda090912017-12-27 19:30:07 +020010540 u8 state;
Arun Easi1e128c82017-02-15 06:28:22 -080010541 u8 flags0;
Tomer Tayar21dd79e2017-12-27 19:30:06 +020010542#define E4_TSTORM_FCOE_CONN_AG_CTX_EXIST_IN_QM0_MASK 0x1
10543#define E4_TSTORM_FCOE_CONN_AG_CTX_EXIST_IN_QM0_SHIFT 0
10544#define E4_TSTORM_FCOE_CONN_AG_CTX_BIT1_MASK 0x1
10545#define E4_TSTORM_FCOE_CONN_AG_CTX_BIT1_SHIFT 1
10546#define E4_TSTORM_FCOE_CONN_AG_CTX_BIT2_MASK 0x1
10547#define E4_TSTORM_FCOE_CONN_AG_CTX_BIT2_SHIFT 2
10548#define E4_TSTORM_FCOE_CONN_AG_CTX_BIT3_MASK 0x1
10549#define E4_TSTORM_FCOE_CONN_AG_CTX_BIT3_SHIFT 3
10550#define E4_TSTORM_FCOE_CONN_AG_CTX_BIT4_MASK 0x1
10551#define E4_TSTORM_FCOE_CONN_AG_CTX_BIT4_SHIFT 4
10552#define E4_TSTORM_FCOE_CONN_AG_CTX_BIT5_MASK 0x1
10553#define E4_TSTORM_FCOE_CONN_AG_CTX_BIT5_SHIFT 5
10554#define E4_TSTORM_FCOE_CONN_AG_CTX_DUMMY_TIMER_CF_MASK 0x3
10555#define E4_TSTORM_FCOE_CONN_AG_CTX_DUMMY_TIMER_CF_SHIFT 6
Arun Easi1e128c82017-02-15 06:28:22 -080010556 u8 flags1;
Tomer Tayar21dd79e2017-12-27 19:30:06 +020010557#define E4_TSTORM_FCOE_CONN_AG_CTX_FLUSH_Q0_CF_MASK 0x3
10558#define E4_TSTORM_FCOE_CONN_AG_CTX_FLUSH_Q0_CF_SHIFT 0
10559#define E4_TSTORM_FCOE_CONN_AG_CTX_CF2_MASK 0x3
10560#define E4_TSTORM_FCOE_CONN_AG_CTX_CF2_SHIFT 2
10561#define E4_TSTORM_FCOE_CONN_AG_CTX_TIMER_STOP_ALL_CF_MASK 0x3
10562#define E4_TSTORM_FCOE_CONN_AG_CTX_TIMER_STOP_ALL_CF_SHIFT 4
10563#define E4_TSTORM_FCOE_CONN_AG_CTX_CF4_MASK 0x3
10564#define E4_TSTORM_FCOE_CONN_AG_CTX_CF4_SHIFT 6
Arun Easi1e128c82017-02-15 06:28:22 -080010565 u8 flags2;
Tomer Tayar21dd79e2017-12-27 19:30:06 +020010566#define E4_TSTORM_FCOE_CONN_AG_CTX_CF5_MASK 0x3
10567#define E4_TSTORM_FCOE_CONN_AG_CTX_CF5_SHIFT 0
10568#define E4_TSTORM_FCOE_CONN_AG_CTX_CF6_MASK 0x3
10569#define E4_TSTORM_FCOE_CONN_AG_CTX_CF6_SHIFT 2
10570#define E4_TSTORM_FCOE_CONN_AG_CTX_CF7_MASK 0x3
10571#define E4_TSTORM_FCOE_CONN_AG_CTX_CF7_SHIFT 4
10572#define E4_TSTORM_FCOE_CONN_AG_CTX_CF8_MASK 0x3
10573#define E4_TSTORM_FCOE_CONN_AG_CTX_CF8_SHIFT 6
Arun Easi1e128c82017-02-15 06:28:22 -080010574 u8 flags3;
Tomer Tayar21dd79e2017-12-27 19:30:06 +020010575#define E4_TSTORM_FCOE_CONN_AG_CTX_CF9_MASK 0x3
10576#define E4_TSTORM_FCOE_CONN_AG_CTX_CF9_SHIFT 0
10577#define E4_TSTORM_FCOE_CONN_AG_CTX_CF10_MASK 0x3
10578#define E4_TSTORM_FCOE_CONN_AG_CTX_CF10_SHIFT 2
10579#define E4_TSTORM_FCOE_CONN_AG_CTX_DUMMY_TIMER_CF_EN_MASK 0x1
10580#define E4_TSTORM_FCOE_CONN_AG_CTX_DUMMY_TIMER_CF_EN_SHIFT 4
10581#define E4_TSTORM_FCOE_CONN_AG_CTX_FLUSH_Q0_CF_EN_MASK 0x1
10582#define E4_TSTORM_FCOE_CONN_AG_CTX_FLUSH_Q0_CF_EN_SHIFT 5
10583#define E4_TSTORM_FCOE_CONN_AG_CTX_CF2EN_MASK 0x1
10584#define E4_TSTORM_FCOE_CONN_AG_CTX_CF2EN_SHIFT 6
10585#define E4_TSTORM_FCOE_CONN_AG_CTX_TIMER_STOP_ALL_CF_EN_MASK 0x1
10586#define E4_TSTORM_FCOE_CONN_AG_CTX_TIMER_STOP_ALL_CF_EN_SHIFT 7
Arun Easi1e128c82017-02-15 06:28:22 -080010587 u8 flags4;
Tomer Tayar21dd79e2017-12-27 19:30:06 +020010588#define E4_TSTORM_FCOE_CONN_AG_CTX_CF4EN_MASK 0x1
10589#define E4_TSTORM_FCOE_CONN_AG_CTX_CF4EN_SHIFT 0
10590#define E4_TSTORM_FCOE_CONN_AG_CTX_CF5EN_MASK 0x1
10591#define E4_TSTORM_FCOE_CONN_AG_CTX_CF5EN_SHIFT 1
10592#define E4_TSTORM_FCOE_CONN_AG_CTX_CF6EN_MASK 0x1
10593#define E4_TSTORM_FCOE_CONN_AG_CTX_CF6EN_SHIFT 2
10594#define E4_TSTORM_FCOE_CONN_AG_CTX_CF7EN_MASK 0x1
10595#define E4_TSTORM_FCOE_CONN_AG_CTX_CF7EN_SHIFT 3
10596#define E4_TSTORM_FCOE_CONN_AG_CTX_CF8EN_MASK 0x1
10597#define E4_TSTORM_FCOE_CONN_AG_CTX_CF8EN_SHIFT 4
10598#define E4_TSTORM_FCOE_CONN_AG_CTX_CF9EN_MASK 0x1
10599#define E4_TSTORM_FCOE_CONN_AG_CTX_CF9EN_SHIFT 5
10600#define E4_TSTORM_FCOE_CONN_AG_CTX_CF10EN_MASK 0x1
10601#define E4_TSTORM_FCOE_CONN_AG_CTX_CF10EN_SHIFT 6
10602#define E4_TSTORM_FCOE_CONN_AG_CTX_RULE0EN_MASK 0x1
10603#define E4_TSTORM_FCOE_CONN_AG_CTX_RULE0EN_SHIFT 7
Arun Easi1e128c82017-02-15 06:28:22 -080010604 u8 flags5;
Tomer Tayar21dd79e2017-12-27 19:30:06 +020010605#define E4_TSTORM_FCOE_CONN_AG_CTX_RULE1EN_MASK 0x1
10606#define E4_TSTORM_FCOE_CONN_AG_CTX_RULE1EN_SHIFT 0
10607#define E4_TSTORM_FCOE_CONN_AG_CTX_RULE2EN_MASK 0x1
10608#define E4_TSTORM_FCOE_CONN_AG_CTX_RULE2EN_SHIFT 1
10609#define E4_TSTORM_FCOE_CONN_AG_CTX_RULE3EN_MASK 0x1
10610#define E4_TSTORM_FCOE_CONN_AG_CTX_RULE3EN_SHIFT 2
10611#define E4_TSTORM_FCOE_CONN_AG_CTX_RULE4EN_MASK 0x1
10612#define E4_TSTORM_FCOE_CONN_AG_CTX_RULE4EN_SHIFT 3
10613#define E4_TSTORM_FCOE_CONN_AG_CTX_RULE5EN_MASK 0x1
10614#define E4_TSTORM_FCOE_CONN_AG_CTX_RULE5EN_SHIFT 4
10615#define E4_TSTORM_FCOE_CONN_AG_CTX_RULE6EN_MASK 0x1
10616#define E4_TSTORM_FCOE_CONN_AG_CTX_RULE6EN_SHIFT 5
10617#define E4_TSTORM_FCOE_CONN_AG_CTX_RULE7EN_MASK 0x1
10618#define E4_TSTORM_FCOE_CONN_AG_CTX_RULE7EN_SHIFT 6
10619#define E4_TSTORM_FCOE_CONN_AG_CTX_RULE8EN_MASK 0x1
10620#define E4_TSTORM_FCOE_CONN_AG_CTX_RULE8EN_SHIFT 7
Arun Easi1e128c82017-02-15 06:28:22 -080010621 __le32 reg0;
10622 __le32 reg1;
10623};
10624
Tomer Tayar21dd79e2017-12-27 19:30:06 +020010625struct e4_ustorm_fcoe_conn_ag_ctx {
Arun Easi1e128c82017-02-15 06:28:22 -080010626 u8 byte0;
10627 u8 byte1;
10628 u8 flags0;
Tomer Tayar21dd79e2017-12-27 19:30:06 +020010629#define E4_USTORM_FCOE_CONN_AG_CTX_BIT0_MASK 0x1
10630#define E4_USTORM_FCOE_CONN_AG_CTX_BIT0_SHIFT 0
10631#define E4_USTORM_FCOE_CONN_AG_CTX_BIT1_MASK 0x1
10632#define E4_USTORM_FCOE_CONN_AG_CTX_BIT1_SHIFT 1
10633#define E4_USTORM_FCOE_CONN_AG_CTX_CF0_MASK 0x3
10634#define E4_USTORM_FCOE_CONN_AG_CTX_CF0_SHIFT 2
10635#define E4_USTORM_FCOE_CONN_AG_CTX_CF1_MASK 0x3
10636#define E4_USTORM_FCOE_CONN_AG_CTX_CF1_SHIFT 4
10637#define E4_USTORM_FCOE_CONN_AG_CTX_CF2_MASK 0x3
10638#define E4_USTORM_FCOE_CONN_AG_CTX_CF2_SHIFT 6
Arun Easi1e128c82017-02-15 06:28:22 -080010639 u8 flags1;
Tomer Tayar21dd79e2017-12-27 19:30:06 +020010640#define E4_USTORM_FCOE_CONN_AG_CTX_CF3_MASK 0x3
10641#define E4_USTORM_FCOE_CONN_AG_CTX_CF3_SHIFT 0
10642#define E4_USTORM_FCOE_CONN_AG_CTX_CF4_MASK 0x3
10643#define E4_USTORM_FCOE_CONN_AG_CTX_CF4_SHIFT 2
10644#define E4_USTORM_FCOE_CONN_AG_CTX_CF5_MASK 0x3
10645#define E4_USTORM_FCOE_CONN_AG_CTX_CF5_SHIFT 4
10646#define E4_USTORM_FCOE_CONN_AG_CTX_CF6_MASK 0x3
10647#define E4_USTORM_FCOE_CONN_AG_CTX_CF6_SHIFT 6
Arun Easi1e128c82017-02-15 06:28:22 -080010648 u8 flags2;
Tomer Tayar21dd79e2017-12-27 19:30:06 +020010649#define E4_USTORM_FCOE_CONN_AG_CTX_CF0EN_MASK 0x1
10650#define E4_USTORM_FCOE_CONN_AG_CTX_CF0EN_SHIFT 0
10651#define E4_USTORM_FCOE_CONN_AG_CTX_CF1EN_MASK 0x1
10652#define E4_USTORM_FCOE_CONN_AG_CTX_CF1EN_SHIFT 1
10653#define E4_USTORM_FCOE_CONN_AG_CTX_CF2EN_MASK 0x1
10654#define E4_USTORM_FCOE_CONN_AG_CTX_CF2EN_SHIFT 2
10655#define E4_USTORM_FCOE_CONN_AG_CTX_CF3EN_MASK 0x1
10656#define E4_USTORM_FCOE_CONN_AG_CTX_CF3EN_SHIFT 3
10657#define E4_USTORM_FCOE_CONN_AG_CTX_CF4EN_MASK 0x1
10658#define E4_USTORM_FCOE_CONN_AG_CTX_CF4EN_SHIFT 4
10659#define E4_USTORM_FCOE_CONN_AG_CTX_CF5EN_MASK 0x1
10660#define E4_USTORM_FCOE_CONN_AG_CTX_CF5EN_SHIFT 5
10661#define E4_USTORM_FCOE_CONN_AG_CTX_CF6EN_MASK 0x1
10662#define E4_USTORM_FCOE_CONN_AG_CTX_CF6EN_SHIFT 6
10663#define E4_USTORM_FCOE_CONN_AG_CTX_RULE0EN_MASK 0x1
10664#define E4_USTORM_FCOE_CONN_AG_CTX_RULE0EN_SHIFT 7
Arun Easi1e128c82017-02-15 06:28:22 -080010665 u8 flags3;
Tomer Tayar21dd79e2017-12-27 19:30:06 +020010666#define E4_USTORM_FCOE_CONN_AG_CTX_RULE1EN_MASK 0x1
10667#define E4_USTORM_FCOE_CONN_AG_CTX_RULE1EN_SHIFT 0
10668#define E4_USTORM_FCOE_CONN_AG_CTX_RULE2EN_MASK 0x1
10669#define E4_USTORM_FCOE_CONN_AG_CTX_RULE2EN_SHIFT 1
10670#define E4_USTORM_FCOE_CONN_AG_CTX_RULE3EN_MASK 0x1
10671#define E4_USTORM_FCOE_CONN_AG_CTX_RULE3EN_SHIFT 2
10672#define E4_USTORM_FCOE_CONN_AG_CTX_RULE4EN_MASK 0x1
10673#define E4_USTORM_FCOE_CONN_AG_CTX_RULE4EN_SHIFT 3
10674#define E4_USTORM_FCOE_CONN_AG_CTX_RULE5EN_MASK 0x1
10675#define E4_USTORM_FCOE_CONN_AG_CTX_RULE5EN_SHIFT 4
10676#define E4_USTORM_FCOE_CONN_AG_CTX_RULE6EN_MASK 0x1
10677#define E4_USTORM_FCOE_CONN_AG_CTX_RULE6EN_SHIFT 5
10678#define E4_USTORM_FCOE_CONN_AG_CTX_RULE7EN_MASK 0x1
10679#define E4_USTORM_FCOE_CONN_AG_CTX_RULE7EN_SHIFT 6
10680#define E4_USTORM_FCOE_CONN_AG_CTX_RULE8EN_MASK 0x1
10681#define E4_USTORM_FCOE_CONN_AG_CTX_RULE8EN_SHIFT 7
Arun Easi1e128c82017-02-15 06:28:22 -080010682 u8 byte2;
10683 u8 byte3;
10684 __le16 word0;
10685 __le16 word1;
10686 __le32 reg0;
10687 __le32 reg1;
10688 __le32 reg2;
10689 __le32 reg3;
10690 __le16 word2;
10691 __le16 word3;
10692};
10693
Tomer Tayara2e76992017-12-27 19:30:05 +020010694/* The fcoe storm context of Tstorm */
Arun Easi1e128c82017-02-15 06:28:22 -080010695struct tstorm_fcoe_conn_st_ctx {
10696 __le16 stat_ram_addr;
10697 __le16 rx_max_fc_payload_len;
10698 __le16 e_d_tov_val;
10699 u8 flags;
Tomer Tayara2e76992017-12-27 19:30:05 +020010700#define TSTORM_FCOE_CONN_ST_CTX_INC_SEQ_CNT_MASK 0x1
10701#define TSTORM_FCOE_CONN_ST_CTX_INC_SEQ_CNT_SHIFT 0
10702#define TSTORM_FCOE_CONN_ST_CTX_SUPPORT_CONF_MASK 0x1
10703#define TSTORM_FCOE_CONN_ST_CTX_SUPPORT_CONF_SHIFT 1
10704#define TSTORM_FCOE_CONN_ST_CTX_DEF_Q_IDX_MASK 0x3F
10705#define TSTORM_FCOE_CONN_ST_CTX_DEF_Q_IDX_SHIFT 2
Arun Easi1e128c82017-02-15 06:28:22 -080010706 u8 timers_cleanup_invocation_cnt;
10707 __le32 reserved1[2];
Tomer Tayara2e76992017-12-27 19:30:05 +020010708 __le32 dst_mac_address_bytes_0_to_3;
10709 __le16 dst_mac_address_bytes_4_to_5;
Arun Easi1e128c82017-02-15 06:28:22 -080010710 __le16 ramrod_echo;
10711 u8 flags1;
Tomer Tayara2e76992017-12-27 19:30:05 +020010712#define TSTORM_FCOE_CONN_ST_CTX_MODE_MASK 0x3
10713#define TSTORM_FCOE_CONN_ST_CTX_MODE_SHIFT 0
10714#define TSTORM_FCOE_CONN_ST_CTX_RESERVED_MASK 0x3F
10715#define TSTORM_FCOE_CONN_ST_CTX_RESERVED_SHIFT 2
10716 u8 cq_relative_offset;
Tomer Tayarda090912017-12-27 19:30:07 +020010717 u8 cmdq_relative_offset;
Arun Easi1e128c82017-02-15 06:28:22 -080010718 u8 bdq_resource_id;
Tomer Tayarda090912017-12-27 19:30:07 +020010719 u8 reserved0[4];
Arun Easi1e128c82017-02-15 06:28:22 -080010720};
10721
Tomer Tayar21dd79e2017-12-27 19:30:06 +020010722struct e4_mstorm_fcoe_conn_ag_ctx {
Arun Easi1e128c82017-02-15 06:28:22 -080010723 u8 byte0;
10724 u8 byte1;
10725 u8 flags0;
Tomer Tayar21dd79e2017-12-27 19:30:06 +020010726#define E4_MSTORM_FCOE_CONN_AG_CTX_BIT0_MASK 0x1
10727#define E4_MSTORM_FCOE_CONN_AG_CTX_BIT0_SHIFT 0
10728#define E4_MSTORM_FCOE_CONN_AG_CTX_BIT1_MASK 0x1
10729#define E4_MSTORM_FCOE_CONN_AG_CTX_BIT1_SHIFT 1
10730#define E4_MSTORM_FCOE_CONN_AG_CTX_CF0_MASK 0x3
10731#define E4_MSTORM_FCOE_CONN_AG_CTX_CF0_SHIFT 2
10732#define E4_MSTORM_FCOE_CONN_AG_CTX_CF1_MASK 0x3
10733#define E4_MSTORM_FCOE_CONN_AG_CTX_CF1_SHIFT 4
10734#define E4_MSTORM_FCOE_CONN_AG_CTX_CF2_MASK 0x3
10735#define E4_MSTORM_FCOE_CONN_AG_CTX_CF2_SHIFT 6
Arun Easi1e128c82017-02-15 06:28:22 -080010736 u8 flags1;
Tomer Tayar21dd79e2017-12-27 19:30:06 +020010737#define E4_MSTORM_FCOE_CONN_AG_CTX_CF0EN_MASK 0x1
10738#define E4_MSTORM_FCOE_CONN_AG_CTX_CF0EN_SHIFT 0
10739#define E4_MSTORM_FCOE_CONN_AG_CTX_CF1EN_MASK 0x1
10740#define E4_MSTORM_FCOE_CONN_AG_CTX_CF1EN_SHIFT 1
10741#define E4_MSTORM_FCOE_CONN_AG_CTX_CF2EN_MASK 0x1
10742#define E4_MSTORM_FCOE_CONN_AG_CTX_CF2EN_SHIFT 2
10743#define E4_MSTORM_FCOE_CONN_AG_CTX_RULE0EN_MASK 0x1
10744#define E4_MSTORM_FCOE_CONN_AG_CTX_RULE0EN_SHIFT 3
10745#define E4_MSTORM_FCOE_CONN_AG_CTX_RULE1EN_MASK 0x1
10746#define E4_MSTORM_FCOE_CONN_AG_CTX_RULE1EN_SHIFT 4
10747#define E4_MSTORM_FCOE_CONN_AG_CTX_RULE2EN_MASK 0x1
10748#define E4_MSTORM_FCOE_CONN_AG_CTX_RULE2EN_SHIFT 5
10749#define E4_MSTORM_FCOE_CONN_AG_CTX_RULE3EN_MASK 0x1
10750#define E4_MSTORM_FCOE_CONN_AG_CTX_RULE3EN_SHIFT 6
10751#define E4_MSTORM_FCOE_CONN_AG_CTX_RULE4EN_MASK 0x1
10752#define E4_MSTORM_FCOE_CONN_AG_CTX_RULE4EN_SHIFT 7
Arun Easi1e128c82017-02-15 06:28:22 -080010753 __le16 word0;
10754 __le16 word1;
10755 __le32 reg0;
10756 __le32 reg1;
10757};
10758
Tomer Tayara2e76992017-12-27 19:30:05 +020010759/* Fast path part of the fcoe storm context of Mstorm */
Arun Easi1e128c82017-02-15 06:28:22 -080010760struct fcoe_mstorm_fcoe_conn_st_ctx_fp {
10761 __le16 xfer_prod;
Tomer Tayarda090912017-12-27 19:30:07 +020010762 u8 num_cqs;
10763 u8 reserved1;
Arun Easi1e128c82017-02-15 06:28:22 -080010764 u8 protection_info;
10765#define FCOE_MSTORM_FCOE_CONN_ST_CTX_FP_SUPPORT_PROTECTION_MASK 0x1
10766#define FCOE_MSTORM_FCOE_CONN_ST_CTX_FP_SUPPORT_PROTECTION_SHIFT 0
10767#define FCOE_MSTORM_FCOE_CONN_ST_CTX_FP_VALID_MASK 0x1
10768#define FCOE_MSTORM_FCOE_CONN_ST_CTX_FP_VALID_SHIFT 1
10769#define FCOE_MSTORM_FCOE_CONN_ST_CTX_FP_RESERVED0_MASK 0x3F
10770#define FCOE_MSTORM_FCOE_CONN_ST_CTX_FP_RESERVED0_SHIFT 2
10771 u8 q_relative_offset;
10772 u8 reserved2[2];
10773};
10774
Tomer Tayara2e76992017-12-27 19:30:05 +020010775/* Non fast path part of the fcoe storm context of Mstorm */
Arun Easi1e128c82017-02-15 06:28:22 -080010776struct fcoe_mstorm_fcoe_conn_st_ctx_non_fp {
10777 __le16 conn_id;
10778 __le16 stat_ram_addr;
10779 __le16 num_pages_in_pbl;
10780 u8 ptu_log_page_size;
10781 u8 log_page_size;
10782 __le16 unsolicited_cq_count;
10783 __le16 cmdq_count;
10784 u8 bdq_resource_id;
10785 u8 reserved0[3];
10786 struct regpair xferq_pbl_addr;
10787 struct regpair reserved1;
10788 struct regpair reserved2[3];
10789};
10790
Tomer Tayara2e76992017-12-27 19:30:05 +020010791/* The fcoe storm context of Mstorm */
Arun Easi1e128c82017-02-15 06:28:22 -080010792struct mstorm_fcoe_conn_st_ctx {
10793 struct fcoe_mstorm_fcoe_conn_st_ctx_fp fp;
10794 struct fcoe_mstorm_fcoe_conn_st_ctx_non_fp non_fp;
10795};
10796
Tomer Tayara2e76992017-12-27 19:30:05 +020010797/* fcoe connection context */
Tomer Tayar21dd79e2017-12-27 19:30:06 +020010798struct e4_fcoe_conn_context {
Arun Easi1e128c82017-02-15 06:28:22 -080010799 struct ystorm_fcoe_conn_st_ctx ystorm_st_context;
10800 struct pstorm_fcoe_conn_st_ctx pstorm_st_context;
10801 struct regpair pstorm_st_padding[2];
10802 struct xstorm_fcoe_conn_st_ctx xstorm_st_context;
Tomer Tayar21dd79e2017-12-27 19:30:06 +020010803 struct e4_xstorm_fcoe_conn_ag_ctx xstorm_ag_context;
Arun Easi1e128c82017-02-15 06:28:22 -080010804 struct regpair xstorm_ag_padding[6];
10805 struct ustorm_fcoe_conn_st_ctx ustorm_st_context;
10806 struct regpair ustorm_st_padding[2];
Tomer Tayar21dd79e2017-12-27 19:30:06 +020010807 struct e4_tstorm_fcoe_conn_ag_ctx tstorm_ag_context;
Arun Easi1e128c82017-02-15 06:28:22 -080010808 struct regpair tstorm_ag_padding[2];
10809 struct timers_context timer_context;
Tomer Tayar21dd79e2017-12-27 19:30:06 +020010810 struct e4_ustorm_fcoe_conn_ag_ctx ustorm_ag_context;
Arun Easi1e128c82017-02-15 06:28:22 -080010811 struct tstorm_fcoe_conn_st_ctx tstorm_st_context;
Tomer Tayar21dd79e2017-12-27 19:30:06 +020010812 struct e4_mstorm_fcoe_conn_ag_ctx mstorm_ag_context;
Arun Easi1e128c82017-02-15 06:28:22 -080010813 struct mstorm_fcoe_conn_st_ctx mstorm_st_context;
10814};
10815
Tomer Tayara2e76992017-12-27 19:30:05 +020010816/* FCoE connection offload params passed by driver to FW in FCoE offload
10817 * ramrod.
10818 */
Arun Easi1e128c82017-02-15 06:28:22 -080010819struct fcoe_conn_offload_ramrod_params {
10820 struct fcoe_conn_offload_ramrod_data offload_ramrod_data;
10821};
10822
Tomer Tayara2e76992017-12-27 19:30:05 +020010823/* FCoE connection terminate params passed by driver to FW in FCoE terminate
10824 * conn ramrod.
10825 */
Arun Easi1e128c82017-02-15 06:28:22 -080010826struct fcoe_conn_terminate_ramrod_params {
10827 struct fcoe_conn_terminate_ramrod_data terminate_ramrod_data;
10828};
10829
Tomer Tayara2e76992017-12-27 19:30:05 +020010830/* FCoE event type */
Arun Easi1e128c82017-02-15 06:28:22 -080010831enum fcoe_event_type {
10832 FCOE_EVENT_INIT_FUNC,
10833 FCOE_EVENT_DESTROY_FUNC,
10834 FCOE_EVENT_STAT_FUNC,
10835 FCOE_EVENT_OFFLOAD_CONN,
10836 FCOE_EVENT_TERMINATE_CONN,
10837 FCOE_EVENT_ERROR,
10838 MAX_FCOE_EVENT_TYPE
10839};
10840
Tomer Tayara2e76992017-12-27 19:30:05 +020010841/* FCoE init params passed by driver to FW in FCoE init ramrod */
Arun Easi1e128c82017-02-15 06:28:22 -080010842struct fcoe_init_ramrod_params {
10843 struct fcoe_init_func_ramrod_data init_ramrod_data;
10844};
10845
Tomer Tayara2e76992017-12-27 19:30:05 +020010846/* FCoE ramrod Command IDs */
Arun Easi1e128c82017-02-15 06:28:22 -080010847enum fcoe_ramrod_cmd_id {
10848 FCOE_RAMROD_CMD_ID_INIT_FUNC,
10849 FCOE_RAMROD_CMD_ID_DESTROY_FUNC,
10850 FCOE_RAMROD_CMD_ID_STAT_FUNC,
10851 FCOE_RAMROD_CMD_ID_OFFLOAD_CONN,
10852 FCOE_RAMROD_CMD_ID_TERMINATE_CONN,
10853 MAX_FCOE_RAMROD_CMD_ID
10854};
10855
Tomer Tayara2e76992017-12-27 19:30:05 +020010856/* FCoE statistics params buffer passed by driver to FW in FCoE statistics
10857 * ramrod.
10858 */
Arun Easi1e128c82017-02-15 06:28:22 -080010859struct fcoe_stat_ramrod_params {
10860 struct fcoe_stat_ramrod_data stat_ramrod_data;
10861};
10862
Tomer Tayar21dd79e2017-12-27 19:30:06 +020010863struct e4_ystorm_fcoe_conn_ag_ctx {
Arun Easi1e128c82017-02-15 06:28:22 -080010864 u8 byte0;
10865 u8 byte1;
10866 u8 flags0;
Tomer Tayar21dd79e2017-12-27 19:30:06 +020010867#define E4_YSTORM_FCOE_CONN_AG_CTX_BIT0_MASK 0x1
10868#define E4_YSTORM_FCOE_CONN_AG_CTX_BIT0_SHIFT 0
10869#define E4_YSTORM_FCOE_CONN_AG_CTX_BIT1_MASK 0x1
10870#define E4_YSTORM_FCOE_CONN_AG_CTX_BIT1_SHIFT 1
10871#define E4_YSTORM_FCOE_CONN_AG_CTX_CF0_MASK 0x3
10872#define E4_YSTORM_FCOE_CONN_AG_CTX_CF0_SHIFT 2
10873#define E4_YSTORM_FCOE_CONN_AG_CTX_CF1_MASK 0x3
10874#define E4_YSTORM_FCOE_CONN_AG_CTX_CF1_SHIFT 4
10875#define E4_YSTORM_FCOE_CONN_AG_CTX_CF2_MASK 0x3
10876#define E4_YSTORM_FCOE_CONN_AG_CTX_CF2_SHIFT 6
Arun Easi1e128c82017-02-15 06:28:22 -080010877 u8 flags1;
Tomer Tayar21dd79e2017-12-27 19:30:06 +020010878#define E4_YSTORM_FCOE_CONN_AG_CTX_CF0EN_MASK 0x1
10879#define E4_YSTORM_FCOE_CONN_AG_CTX_CF0EN_SHIFT 0
10880#define E4_YSTORM_FCOE_CONN_AG_CTX_CF1EN_MASK 0x1
10881#define E4_YSTORM_FCOE_CONN_AG_CTX_CF1EN_SHIFT 1
10882#define E4_YSTORM_FCOE_CONN_AG_CTX_CF2EN_MASK 0x1
10883#define E4_YSTORM_FCOE_CONN_AG_CTX_CF2EN_SHIFT 2
10884#define E4_YSTORM_FCOE_CONN_AG_CTX_RULE0EN_MASK 0x1
10885#define E4_YSTORM_FCOE_CONN_AG_CTX_RULE0EN_SHIFT 3
10886#define E4_YSTORM_FCOE_CONN_AG_CTX_RULE1EN_MASK 0x1
10887#define E4_YSTORM_FCOE_CONN_AG_CTX_RULE1EN_SHIFT 4
10888#define E4_YSTORM_FCOE_CONN_AG_CTX_RULE2EN_MASK 0x1
10889#define E4_YSTORM_FCOE_CONN_AG_CTX_RULE2EN_SHIFT 5
10890#define E4_YSTORM_FCOE_CONN_AG_CTX_RULE3EN_MASK 0x1
10891#define E4_YSTORM_FCOE_CONN_AG_CTX_RULE3EN_SHIFT 6
10892#define E4_YSTORM_FCOE_CONN_AG_CTX_RULE4EN_MASK 0x1
10893#define E4_YSTORM_FCOE_CONN_AG_CTX_RULE4EN_SHIFT 7
Arun Easi1e128c82017-02-15 06:28:22 -080010894 u8 byte2;
10895 u8 byte3;
10896 __le16 word0;
10897 __le32 reg0;
10898 __le32 reg1;
10899 __le16 word1;
10900 __le16 word2;
10901 __le16 word3;
10902 __le16 word4;
10903 __le32 reg2;
10904 __le32 reg3;
10905};
10906
Tomer Tayara2e76992017-12-27 19:30:05 +020010907/* The iscsi storm connection context of Ystorm */
Yuval Mintz7a9b6b82016-06-03 14:35:33 +030010908struct ystorm_iscsi_conn_st_ctx {
Tomer Tayarda090912017-12-27 19:30:07 +020010909 __le32 reserved[8];
Yuval Mintz7a9b6b82016-06-03 14:35:33 +030010910};
10911
Tomer Tayara2e76992017-12-27 19:30:05 +020010912/* Combined iSCSI and TCP storm connection of Pstorm */
Yuval Mintz7a9b6b82016-06-03 14:35:33 +030010913struct pstorm_iscsi_tcp_conn_st_ctx {
10914 __le32 tcp[32];
10915 __le32 iscsi[4];
10916};
10917
Tomer Tayara2e76992017-12-27 19:30:05 +020010918/* The combined tcp and iscsi storm context of Xstorm */
Yuval Mintz7a9b6b82016-06-03 14:35:33 +030010919struct xstorm_iscsi_tcp_conn_st_ctx {
Yuval Mintz7a9b6b82016-06-03 14:35:33 +030010920 __le32 reserved_tcp[4];
Tomer Tayarda090912017-12-27 19:30:07 +020010921 __le32 reserved_iscsi[44];
Yuval Mintz7a9b6b82016-06-03 14:35:33 +030010922};
10923
Tomer Tayar21dd79e2017-12-27 19:30:06 +020010924struct e4_xstorm_iscsi_conn_ag_ctx {
Yuval Mintz7a9b6b82016-06-03 14:35:33 +030010925 u8 cdu_validation;
10926 u8 state;
10927 u8 flags0;
Tomer Tayar21dd79e2017-12-27 19:30:06 +020010928#define E4_XSTORM_ISCSI_CONN_AG_CTX_EXIST_IN_QM0_MASK 0x1
10929#define E4_XSTORM_ISCSI_CONN_AG_CTX_EXIST_IN_QM0_SHIFT 0
10930#define E4_XSTORM_ISCSI_CONN_AG_CTX_EXIST_IN_QM1_MASK 0x1
10931#define E4_XSTORM_ISCSI_CONN_AG_CTX_EXIST_IN_QM1_SHIFT 1
10932#define E4_XSTORM_ISCSI_CONN_AG_CTX_RESERVED1_MASK 0x1
10933#define E4_XSTORM_ISCSI_CONN_AG_CTX_RESERVED1_SHIFT 2
10934#define E4_XSTORM_ISCSI_CONN_AG_CTX_EXIST_IN_QM3_MASK 0x1
10935#define E4_XSTORM_ISCSI_CONN_AG_CTX_EXIST_IN_QM3_SHIFT 3
10936#define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT4_MASK 0x1
10937#define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT4_SHIFT 4
10938#define E4_XSTORM_ISCSI_CONN_AG_CTX_RESERVED2_MASK 0x1
10939#define E4_XSTORM_ISCSI_CONN_AG_CTX_RESERVED2_SHIFT 5
10940#define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT6_MASK 0x1
10941#define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT6_SHIFT 6
10942#define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT7_MASK 0x1
10943#define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT7_SHIFT 7
Yuval Mintz7a9b6b82016-06-03 14:35:33 +030010944 u8 flags1;
Tomer Tayar21dd79e2017-12-27 19:30:06 +020010945#define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT8_MASK 0x1
10946#define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT8_SHIFT 0
10947#define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT9_MASK 0x1
10948#define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT9_SHIFT 1
10949#define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT10_MASK 0x1
10950#define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT10_SHIFT 2
10951#define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT11_MASK 0x1
10952#define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT11_SHIFT 3
10953#define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT12_MASK 0x1
10954#define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT12_SHIFT 4
10955#define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT13_MASK 0x1
10956#define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT13_SHIFT 5
10957#define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT14_MASK 0x1
10958#define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT14_SHIFT 6
10959#define E4_XSTORM_ISCSI_CONN_AG_CTX_TX_TRUNCATE_MASK 0x1
10960#define E4_XSTORM_ISCSI_CONN_AG_CTX_TX_TRUNCATE_SHIFT 7
Yuval Mintz7a9b6b82016-06-03 14:35:33 +030010961 u8 flags2;
Tomer Tayar21dd79e2017-12-27 19:30:06 +020010962#define E4_XSTORM_ISCSI_CONN_AG_CTX_CF0_MASK 0x3
10963#define E4_XSTORM_ISCSI_CONN_AG_CTX_CF0_SHIFT 0
10964#define E4_XSTORM_ISCSI_CONN_AG_CTX_CF1_MASK 0x3
10965#define E4_XSTORM_ISCSI_CONN_AG_CTX_CF1_SHIFT 2
10966#define E4_XSTORM_ISCSI_CONN_AG_CTX_CF2_MASK 0x3
10967#define E4_XSTORM_ISCSI_CONN_AG_CTX_CF2_SHIFT 4
10968#define E4_XSTORM_ISCSI_CONN_AG_CTX_TIMER_STOP_ALL_MASK 0x3
10969#define E4_XSTORM_ISCSI_CONN_AG_CTX_TIMER_STOP_ALL_SHIFT 6
Yuval Mintz7a9b6b82016-06-03 14:35:33 +030010970 u8 flags3;
Tomer Tayar21dd79e2017-12-27 19:30:06 +020010971#define E4_XSTORM_ISCSI_CONN_AG_CTX_CF4_MASK 0x3
10972#define E4_XSTORM_ISCSI_CONN_AG_CTX_CF4_SHIFT 0
10973#define E4_XSTORM_ISCSI_CONN_AG_CTX_CF5_MASK 0x3
10974#define E4_XSTORM_ISCSI_CONN_AG_CTX_CF5_SHIFT 2
10975#define E4_XSTORM_ISCSI_CONN_AG_CTX_CF6_MASK 0x3
10976#define E4_XSTORM_ISCSI_CONN_AG_CTX_CF6_SHIFT 4
10977#define E4_XSTORM_ISCSI_CONN_AG_CTX_CF7_MASK 0x3
10978#define E4_XSTORM_ISCSI_CONN_AG_CTX_CF7_SHIFT 6
Yuval Mintz7a9b6b82016-06-03 14:35:33 +030010979 u8 flags4;
Tomer Tayar21dd79e2017-12-27 19:30:06 +020010980#define E4_XSTORM_ISCSI_CONN_AG_CTX_CF8_MASK 0x3
10981#define E4_XSTORM_ISCSI_CONN_AG_CTX_CF8_SHIFT 0
10982#define E4_XSTORM_ISCSI_CONN_AG_CTX_CF9_MASK 0x3
10983#define E4_XSTORM_ISCSI_CONN_AG_CTX_CF9_SHIFT 2
10984#define E4_XSTORM_ISCSI_CONN_AG_CTX_CF10_MASK 0x3
10985#define E4_XSTORM_ISCSI_CONN_AG_CTX_CF10_SHIFT 4
10986#define E4_XSTORM_ISCSI_CONN_AG_CTX_CF11_MASK 0x3
10987#define E4_XSTORM_ISCSI_CONN_AG_CTX_CF11_SHIFT 6
Yuval Mintz7a9b6b82016-06-03 14:35:33 +030010988 u8 flags5;
Tomer Tayar21dd79e2017-12-27 19:30:06 +020010989#define E4_XSTORM_ISCSI_CONN_AG_CTX_CF12_MASK 0x3
10990#define E4_XSTORM_ISCSI_CONN_AG_CTX_CF12_SHIFT 0
10991#define E4_XSTORM_ISCSI_CONN_AG_CTX_CF13_MASK 0x3
10992#define E4_XSTORM_ISCSI_CONN_AG_CTX_CF13_SHIFT 2
10993#define E4_XSTORM_ISCSI_CONN_AG_CTX_CF14_MASK 0x3
10994#define E4_XSTORM_ISCSI_CONN_AG_CTX_CF14_SHIFT 4
10995#define E4_XSTORM_ISCSI_CONN_AG_CTX_UPDATE_STATE_TO_BASE_CF_MASK 0x3
10996#define E4_XSTORM_ISCSI_CONN_AG_CTX_UPDATE_STATE_TO_BASE_CF_SHIFT 6
Yuval Mintz7a9b6b82016-06-03 14:35:33 +030010997 u8 flags6;
Tomer Tayar21dd79e2017-12-27 19:30:06 +020010998#define E4_XSTORM_ISCSI_CONN_AG_CTX_CF16_MASK 0x3
10999#define E4_XSTORM_ISCSI_CONN_AG_CTX_CF16_SHIFT 0
11000#define E4_XSTORM_ISCSI_CONN_AG_CTX_CF17_MASK 0x3
11001#define E4_XSTORM_ISCSI_CONN_AG_CTX_CF17_SHIFT 2
11002#define E4_XSTORM_ISCSI_CONN_AG_CTX_CF18_MASK 0x3
11003#define E4_XSTORM_ISCSI_CONN_AG_CTX_CF18_SHIFT 4
11004#define E4_XSTORM_ISCSI_CONN_AG_CTX_DQ_FLUSH_MASK 0x3
11005#define E4_XSTORM_ISCSI_CONN_AG_CTX_DQ_FLUSH_SHIFT 6
Yuval Mintz7a9b6b82016-06-03 14:35:33 +030011006 u8 flags7;
Tomer Tayar21dd79e2017-12-27 19:30:06 +020011007#define E4_XSTORM_ISCSI_CONN_AG_CTX_MST_XCM_Q0_FLUSH_CF_MASK 0x3
11008#define E4_XSTORM_ISCSI_CONN_AG_CTX_MST_XCM_Q0_FLUSH_CF_SHIFT 0
11009#define E4_XSTORM_ISCSI_CONN_AG_CTX_UST_XCM_Q1_FLUSH_CF_MASK 0x3
11010#define E4_XSTORM_ISCSI_CONN_AG_CTX_UST_XCM_Q1_FLUSH_CF_SHIFT 2
11011#define E4_XSTORM_ISCSI_CONN_AG_CTX_SLOW_PATH_MASK 0x3
11012#define E4_XSTORM_ISCSI_CONN_AG_CTX_SLOW_PATH_SHIFT 4
11013#define E4_XSTORM_ISCSI_CONN_AG_CTX_CF0EN_MASK 0x1
11014#define E4_XSTORM_ISCSI_CONN_AG_CTX_CF0EN_SHIFT 6
11015#define E4_XSTORM_ISCSI_CONN_AG_CTX_CF1EN_MASK 0x1
11016#define E4_XSTORM_ISCSI_CONN_AG_CTX_CF1EN_SHIFT 7
Yuval Mintz7a9b6b82016-06-03 14:35:33 +030011017 u8 flags8;
Tomer Tayar21dd79e2017-12-27 19:30:06 +020011018#define E4_XSTORM_ISCSI_CONN_AG_CTX_CF2EN_MASK 0x1
11019#define E4_XSTORM_ISCSI_CONN_AG_CTX_CF2EN_SHIFT 0
11020#define E4_XSTORM_ISCSI_CONN_AG_CTX_TIMER_STOP_ALL_EN_MASK 0x1
11021#define E4_XSTORM_ISCSI_CONN_AG_CTX_TIMER_STOP_ALL_EN_SHIFT 1
11022#define E4_XSTORM_ISCSI_CONN_AG_CTX_CF4EN_MASK 0x1
11023#define E4_XSTORM_ISCSI_CONN_AG_CTX_CF4EN_SHIFT 2
11024#define E4_XSTORM_ISCSI_CONN_AG_CTX_CF5EN_MASK 0x1
11025#define E4_XSTORM_ISCSI_CONN_AG_CTX_CF5EN_SHIFT 3
11026#define E4_XSTORM_ISCSI_CONN_AG_CTX_CF6EN_MASK 0x1
11027#define E4_XSTORM_ISCSI_CONN_AG_CTX_CF6EN_SHIFT 4
11028#define E4_XSTORM_ISCSI_CONN_AG_CTX_CF7EN_MASK 0x1
11029#define E4_XSTORM_ISCSI_CONN_AG_CTX_CF7EN_SHIFT 5
11030#define E4_XSTORM_ISCSI_CONN_AG_CTX_CF8EN_MASK 0x1
11031#define E4_XSTORM_ISCSI_CONN_AG_CTX_CF8EN_SHIFT 6
11032#define E4_XSTORM_ISCSI_CONN_AG_CTX_CF9EN_MASK 0x1
11033#define E4_XSTORM_ISCSI_CONN_AG_CTX_CF9EN_SHIFT 7
Yuval Mintz7a9b6b82016-06-03 14:35:33 +030011034 u8 flags9;
Tomer Tayar21dd79e2017-12-27 19:30:06 +020011035#define E4_XSTORM_ISCSI_CONN_AG_CTX_CF10EN_MASK 0x1
11036#define E4_XSTORM_ISCSI_CONN_AG_CTX_CF10EN_SHIFT 0
11037#define E4_XSTORM_ISCSI_CONN_AG_CTX_CF11EN_MASK 0x1
11038#define E4_XSTORM_ISCSI_CONN_AG_CTX_CF11EN_SHIFT 1
11039#define E4_XSTORM_ISCSI_CONN_AG_CTX_CF12EN_MASK 0x1
11040#define E4_XSTORM_ISCSI_CONN_AG_CTX_CF12EN_SHIFT 2
11041#define E4_XSTORM_ISCSI_CONN_AG_CTX_CF13EN_MASK 0x1
11042#define E4_XSTORM_ISCSI_CONN_AG_CTX_CF13EN_SHIFT 3
11043#define E4_XSTORM_ISCSI_CONN_AG_CTX_CF14EN_MASK 0x1
11044#define E4_XSTORM_ISCSI_CONN_AG_CTX_CF14EN_SHIFT 4
11045#define E4_XSTORM_ISCSI_CONN_AG_CTX_UPDATE_STATE_TO_BASE_CF_EN_MASK 0x1
11046#define E4_XSTORM_ISCSI_CONN_AG_CTX_UPDATE_STATE_TO_BASE_CF_EN_SHIFT 5
11047#define E4_XSTORM_ISCSI_CONN_AG_CTX_CF16EN_MASK 0x1
11048#define E4_XSTORM_ISCSI_CONN_AG_CTX_CF16EN_SHIFT 6
11049#define E4_XSTORM_ISCSI_CONN_AG_CTX_CF17EN_MASK 0x1
11050#define E4_XSTORM_ISCSI_CONN_AG_CTX_CF17EN_SHIFT 7
Yuval Mintz7a9b6b82016-06-03 14:35:33 +030011051 u8 flags10;
Tomer Tayar21dd79e2017-12-27 19:30:06 +020011052#define E4_XSTORM_ISCSI_CONN_AG_CTX_CF18EN_MASK 0x1
11053#define E4_XSTORM_ISCSI_CONN_AG_CTX_CF18EN_SHIFT 0
11054#define E4_XSTORM_ISCSI_CONN_AG_CTX_DQ_FLUSH_EN_MASK 0x1
11055#define E4_XSTORM_ISCSI_CONN_AG_CTX_DQ_FLUSH_EN_SHIFT 1
11056#define E4_XSTORM_ISCSI_CONN_AG_CTX_MST_XCM_Q0_FLUSH_CF_EN_MASK 0x1
11057#define E4_XSTORM_ISCSI_CONN_AG_CTX_MST_XCM_Q0_FLUSH_CF_EN_SHIFT 2
11058#define E4_XSTORM_ISCSI_CONN_AG_CTX_UST_XCM_Q1_FLUSH_CF_EN_MASK 0x1
11059#define E4_XSTORM_ISCSI_CONN_AG_CTX_UST_XCM_Q1_FLUSH_CF_EN_SHIFT 3
11060#define E4_XSTORM_ISCSI_CONN_AG_CTX_SLOW_PATH_EN_MASK 0x1
11061#define E4_XSTORM_ISCSI_CONN_AG_CTX_SLOW_PATH_EN_SHIFT 4
11062#define E4_XSTORM_ISCSI_CONN_AG_CTX_PROC_ONLY_CLEANUP_EN_MASK 0x1
11063#define E4_XSTORM_ISCSI_CONN_AG_CTX_PROC_ONLY_CLEANUP_EN_SHIFT 5
11064#define E4_XSTORM_ISCSI_CONN_AG_CTX_RULE0EN_MASK 0x1
11065#define E4_XSTORM_ISCSI_CONN_AG_CTX_RULE0EN_SHIFT 6
11066#define E4_XSTORM_ISCSI_CONN_AG_CTX_MORE_TO_SEND_DEC_RULE_EN_MASK 0x1
11067#define E4_XSTORM_ISCSI_CONN_AG_CTX_MORE_TO_SEND_DEC_RULE_EN_SHIFT 7
Yuval Mintz7a9b6b82016-06-03 14:35:33 +030011068 u8 flags11;
Tomer Tayar21dd79e2017-12-27 19:30:06 +020011069#define E4_XSTORM_ISCSI_CONN_AG_CTX_TX_BLOCKED_EN_MASK 0x1
11070#define E4_XSTORM_ISCSI_CONN_AG_CTX_TX_BLOCKED_EN_SHIFT 0
11071#define E4_XSTORM_ISCSI_CONN_AG_CTX_RULE3EN_MASK 0x1
11072#define E4_XSTORM_ISCSI_CONN_AG_CTX_RULE3EN_SHIFT 1
11073#define E4_XSTORM_ISCSI_CONN_AG_CTX_RESERVED3_MASK 0x1
11074#define E4_XSTORM_ISCSI_CONN_AG_CTX_RESERVED3_SHIFT 2
11075#define E4_XSTORM_ISCSI_CONN_AG_CTX_RULE5EN_MASK 0x1
11076#define E4_XSTORM_ISCSI_CONN_AG_CTX_RULE5EN_SHIFT 3
11077#define E4_XSTORM_ISCSI_CONN_AG_CTX_RULE6EN_MASK 0x1
11078#define E4_XSTORM_ISCSI_CONN_AG_CTX_RULE6EN_SHIFT 4
11079#define E4_XSTORM_ISCSI_CONN_AG_CTX_RULE7EN_MASK 0x1
11080#define E4_XSTORM_ISCSI_CONN_AG_CTX_RULE7EN_SHIFT 5
11081#define E4_XSTORM_ISCSI_CONN_AG_CTX_A0_RESERVED1_MASK 0x1
11082#define E4_XSTORM_ISCSI_CONN_AG_CTX_A0_RESERVED1_SHIFT 6
11083#define E4_XSTORM_ISCSI_CONN_AG_CTX_RULE9EN_MASK 0x1
11084#define E4_XSTORM_ISCSI_CONN_AG_CTX_RULE9EN_SHIFT 7
Yuval Mintz7a9b6b82016-06-03 14:35:33 +030011085 u8 flags12;
Tomer Tayar21dd79e2017-12-27 19:30:06 +020011086#define E4_XSTORM_ISCSI_CONN_AG_CTX_SQ_DEC_RULE_EN_MASK 0x1
11087#define E4_XSTORM_ISCSI_CONN_AG_CTX_SQ_DEC_RULE_EN_SHIFT 0
11088#define E4_XSTORM_ISCSI_CONN_AG_CTX_RULE11EN_MASK 0x1
11089#define E4_XSTORM_ISCSI_CONN_AG_CTX_RULE11EN_SHIFT 1
11090#define E4_XSTORM_ISCSI_CONN_AG_CTX_A0_RESERVED2_MASK 0x1
11091#define E4_XSTORM_ISCSI_CONN_AG_CTX_A0_RESERVED2_SHIFT 2
11092#define E4_XSTORM_ISCSI_CONN_AG_CTX_A0_RESERVED3_MASK 0x1
11093#define E4_XSTORM_ISCSI_CONN_AG_CTX_A0_RESERVED3_SHIFT 3
11094#define E4_XSTORM_ISCSI_CONN_AG_CTX_RULE14EN_MASK 0x1
11095#define E4_XSTORM_ISCSI_CONN_AG_CTX_RULE14EN_SHIFT 4
11096#define E4_XSTORM_ISCSI_CONN_AG_CTX_RULE15EN_MASK 0x1
11097#define E4_XSTORM_ISCSI_CONN_AG_CTX_RULE15EN_SHIFT 5
11098#define E4_XSTORM_ISCSI_CONN_AG_CTX_RULE16EN_MASK 0x1
11099#define E4_XSTORM_ISCSI_CONN_AG_CTX_RULE16EN_SHIFT 6
11100#define E4_XSTORM_ISCSI_CONN_AG_CTX_RULE17EN_MASK 0x1
11101#define E4_XSTORM_ISCSI_CONN_AG_CTX_RULE17EN_SHIFT 7
Yuval Mintz7a9b6b82016-06-03 14:35:33 +030011102 u8 flags13;
Tomer Tayar21dd79e2017-12-27 19:30:06 +020011103#define E4_XSTORM_ISCSI_CONN_AG_CTX_R2TQ_DEC_RULE_EN_MASK 0x1
11104#define E4_XSTORM_ISCSI_CONN_AG_CTX_R2TQ_DEC_RULE_EN_SHIFT 0
11105#define E4_XSTORM_ISCSI_CONN_AG_CTX_HQ_DEC_RULE_EN_MASK 0x1
11106#define E4_XSTORM_ISCSI_CONN_AG_CTX_HQ_DEC_RULE_EN_SHIFT 1
11107#define E4_XSTORM_ISCSI_CONN_AG_CTX_A0_RESERVED4_MASK 0x1
11108#define E4_XSTORM_ISCSI_CONN_AG_CTX_A0_RESERVED4_SHIFT 2
11109#define E4_XSTORM_ISCSI_CONN_AG_CTX_A0_RESERVED5_MASK 0x1
11110#define E4_XSTORM_ISCSI_CONN_AG_CTX_A0_RESERVED5_SHIFT 3
11111#define E4_XSTORM_ISCSI_CONN_AG_CTX_A0_RESERVED6_MASK 0x1
11112#define E4_XSTORM_ISCSI_CONN_AG_CTX_A0_RESERVED6_SHIFT 4
11113#define E4_XSTORM_ISCSI_CONN_AG_CTX_A0_RESERVED7_MASK 0x1
11114#define E4_XSTORM_ISCSI_CONN_AG_CTX_A0_RESERVED7_SHIFT 5
11115#define E4_XSTORM_ISCSI_CONN_AG_CTX_A0_RESERVED8_MASK 0x1
11116#define E4_XSTORM_ISCSI_CONN_AG_CTX_A0_RESERVED8_SHIFT 6
11117#define E4_XSTORM_ISCSI_CONN_AG_CTX_A0_RESERVED9_MASK 0x1
11118#define E4_XSTORM_ISCSI_CONN_AG_CTX_A0_RESERVED9_SHIFT 7
Yuval Mintz7a9b6b82016-06-03 14:35:33 +030011119 u8 flags14;
Tomer Tayar21dd79e2017-12-27 19:30:06 +020011120#define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT16_MASK 0x1
11121#define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT16_SHIFT 0
11122#define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT17_MASK 0x1
11123#define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT17_SHIFT 1
11124#define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT18_MASK 0x1
11125#define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT18_SHIFT 2
11126#define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT19_MASK 0x1
11127#define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT19_SHIFT 3
11128#define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT20_MASK 0x1
11129#define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT20_SHIFT 4
11130#define E4_XSTORM_ISCSI_CONN_AG_CTX_DUMMY_READ_DONE_MASK 0x1
11131#define E4_XSTORM_ISCSI_CONN_AG_CTX_DUMMY_READ_DONE_SHIFT 5
11132#define E4_XSTORM_ISCSI_CONN_AG_CTX_PROC_ONLY_CLEANUP_MASK 0x3
11133#define E4_XSTORM_ISCSI_CONN_AG_CTX_PROC_ONLY_CLEANUP_SHIFT 6
Yuval Mintz7a9b6b82016-06-03 14:35:33 +030011134 u8 byte2;
11135 __le16 physical_q0;
11136 __le16 physical_q1;
11137 __le16 dummy_dorq_var;
11138 __le16 sq_cons;
11139 __le16 sq_prod;
11140 __le16 word5;
11141 __le16 slow_io_total_data_tx_update;
11142 u8 byte3;
11143 u8 byte4;
11144 u8 byte5;
11145 u8 byte6;
11146 __le32 reg0;
11147 __le32 reg1;
11148 __le32 reg2;
11149 __le32 more_to_send_seq;
11150 __le32 reg4;
11151 __le32 reg5;
11152 __le32 hq_scan_next_relevant_ack;
11153 __le16 r2tq_prod;
11154 __le16 r2tq_cons;
11155 __le16 hq_prod;
11156 __le16 hq_cons;
11157 __le32 remain_seq;
11158 __le32 bytes_to_next_pdu;
11159 __le32 hq_tcp_seq;
11160 u8 byte7;
11161 u8 byte8;
11162 u8 byte9;
11163 u8 byte10;
11164 u8 byte11;
11165 u8 byte12;
11166 u8 byte13;
11167 u8 byte14;
11168 u8 byte15;
Tomer Tayar21dd79e2017-12-27 19:30:06 +020011169 u8 e5_reserved;
Yuval Mintz7a9b6b82016-06-03 14:35:33 +030011170 __le16 word11;
11171 __le32 reg10;
11172 __le32 reg11;
11173 __le32 exp_stat_sn;
Mintz, Yuvalbe086e72017-03-11 18:39:18 +020011174 __le32 ongoing_fast_rxmit_seq;
Yuval Mintz7a9b6b82016-06-03 14:35:33 +030011175 __le32 reg14;
11176 __le32 reg15;
11177 __le32 reg16;
11178 __le32 reg17;
11179};
11180
Tomer Tayar21dd79e2017-12-27 19:30:06 +020011181struct e4_tstorm_iscsi_conn_ag_ctx {
Yuval Mintz7a9b6b82016-06-03 14:35:33 +030011182 u8 reserved0;
11183 u8 state;
11184 u8 flags0;
Tomer Tayar21dd79e2017-12-27 19:30:06 +020011185#define E4_TSTORM_ISCSI_CONN_AG_CTX_EXIST_IN_QM0_MASK 0x1
11186#define E4_TSTORM_ISCSI_CONN_AG_CTX_EXIST_IN_QM0_SHIFT 0
11187#define E4_TSTORM_ISCSI_CONN_AG_CTX_BIT1_MASK 0x1
11188#define E4_TSTORM_ISCSI_CONN_AG_CTX_BIT1_SHIFT 1
11189#define E4_TSTORM_ISCSI_CONN_AG_CTX_BIT2_MASK 0x1
11190#define E4_TSTORM_ISCSI_CONN_AG_CTX_BIT2_SHIFT 2
11191#define E4_TSTORM_ISCSI_CONN_AG_CTX_BIT3_MASK 0x1
11192#define E4_TSTORM_ISCSI_CONN_AG_CTX_BIT3_SHIFT 3
11193#define E4_TSTORM_ISCSI_CONN_AG_CTX_BIT4_MASK 0x1
11194#define E4_TSTORM_ISCSI_CONN_AG_CTX_BIT4_SHIFT 4
11195#define E4_TSTORM_ISCSI_CONN_AG_CTX_BIT5_MASK 0x1
11196#define E4_TSTORM_ISCSI_CONN_AG_CTX_BIT5_SHIFT 5
11197#define E4_TSTORM_ISCSI_CONN_AG_CTX_CF0_MASK 0x3
11198#define E4_TSTORM_ISCSI_CONN_AG_CTX_CF0_SHIFT 6
Yuval Mintz7a9b6b82016-06-03 14:35:33 +030011199 u8 flags1;
Tomer Tayar21dd79e2017-12-27 19:30:06 +020011200#define E4_TSTORM_ISCSI_CONN_AG_CTX_P2T_FLUSH_CF_MASK 0x3
11201#define E4_TSTORM_ISCSI_CONN_AG_CTX_P2T_FLUSH_CF_SHIFT 0
11202#define E4_TSTORM_ISCSI_CONN_AG_CTX_M2T_FLUSH_CF_MASK 0x3
11203#define E4_TSTORM_ISCSI_CONN_AG_CTX_M2T_FLUSH_CF_SHIFT 2
11204#define E4_TSTORM_ISCSI_CONN_AG_CTX_TIMER_STOP_ALL_MASK 0x3
11205#define E4_TSTORM_ISCSI_CONN_AG_CTX_TIMER_STOP_ALL_SHIFT 4
11206#define E4_TSTORM_ISCSI_CONN_AG_CTX_CF4_MASK 0x3
11207#define E4_TSTORM_ISCSI_CONN_AG_CTX_CF4_SHIFT 6
Yuval Mintz7a9b6b82016-06-03 14:35:33 +030011208 u8 flags2;
Tomer Tayar21dd79e2017-12-27 19:30:06 +020011209#define E4_TSTORM_ISCSI_CONN_AG_CTX_CF5_MASK 0x3
11210#define E4_TSTORM_ISCSI_CONN_AG_CTX_CF5_SHIFT 0
11211#define E4_TSTORM_ISCSI_CONN_AG_CTX_CF6_MASK 0x3
11212#define E4_TSTORM_ISCSI_CONN_AG_CTX_CF6_SHIFT 2
11213#define E4_TSTORM_ISCSI_CONN_AG_CTX_CF7_MASK 0x3
11214#define E4_TSTORM_ISCSI_CONN_AG_CTX_CF7_SHIFT 4
11215#define E4_TSTORM_ISCSI_CONN_AG_CTX_CF8_MASK 0x3
11216#define E4_TSTORM_ISCSI_CONN_AG_CTX_CF8_SHIFT 6
Yuval Mintz7a9b6b82016-06-03 14:35:33 +030011217 u8 flags3;
Tomer Tayar21dd79e2017-12-27 19:30:06 +020011218#define E4_TSTORM_ISCSI_CONN_AG_CTX_FLUSH_Q0_MASK 0x3
11219#define E4_TSTORM_ISCSI_CONN_AG_CTX_FLUSH_Q0_SHIFT 0
11220#define E4_TSTORM_ISCSI_CONN_AG_CTX_CF10_MASK 0x3
11221#define E4_TSTORM_ISCSI_CONN_AG_CTX_CF10_SHIFT 2
11222#define E4_TSTORM_ISCSI_CONN_AG_CTX_CF0EN_MASK 0x1
11223#define E4_TSTORM_ISCSI_CONN_AG_CTX_CF0EN_SHIFT 4
11224#define E4_TSTORM_ISCSI_CONN_AG_CTX_P2T_FLUSH_CF_EN_MASK 0x1
11225#define E4_TSTORM_ISCSI_CONN_AG_CTX_P2T_FLUSH_CF_EN_SHIFT 5
11226#define E4_TSTORM_ISCSI_CONN_AG_CTX_M2T_FLUSH_CF_EN_MASK 0x1
11227#define E4_TSTORM_ISCSI_CONN_AG_CTX_M2T_FLUSH_CF_EN_SHIFT 6
11228#define E4_TSTORM_ISCSI_CONN_AG_CTX_TIMER_STOP_ALL_EN_MASK 0x1
11229#define E4_TSTORM_ISCSI_CONN_AG_CTX_TIMER_STOP_ALL_EN_SHIFT 7
Yuval Mintz7a9b6b82016-06-03 14:35:33 +030011230 u8 flags4;
Tomer Tayar21dd79e2017-12-27 19:30:06 +020011231#define E4_TSTORM_ISCSI_CONN_AG_CTX_CF4EN_MASK 0x1
11232#define E4_TSTORM_ISCSI_CONN_AG_CTX_CF4EN_SHIFT 0
11233#define E4_TSTORM_ISCSI_CONN_AG_CTX_CF5EN_MASK 0x1
11234#define E4_TSTORM_ISCSI_CONN_AG_CTX_CF5EN_SHIFT 1
11235#define E4_TSTORM_ISCSI_CONN_AG_CTX_CF6EN_MASK 0x1
11236#define E4_TSTORM_ISCSI_CONN_AG_CTX_CF6EN_SHIFT 2
11237#define E4_TSTORM_ISCSI_CONN_AG_CTX_CF7EN_MASK 0x1
11238#define E4_TSTORM_ISCSI_CONN_AG_CTX_CF7EN_SHIFT 3
11239#define E4_TSTORM_ISCSI_CONN_AG_CTX_CF8EN_MASK 0x1
11240#define E4_TSTORM_ISCSI_CONN_AG_CTX_CF8EN_SHIFT 4
11241#define E4_TSTORM_ISCSI_CONN_AG_CTX_FLUSH_Q0_EN_MASK 0x1
11242#define E4_TSTORM_ISCSI_CONN_AG_CTX_FLUSH_Q0_EN_SHIFT 5
11243#define E4_TSTORM_ISCSI_CONN_AG_CTX_CF10EN_MASK 0x1
11244#define E4_TSTORM_ISCSI_CONN_AG_CTX_CF10EN_SHIFT 6
11245#define E4_TSTORM_ISCSI_CONN_AG_CTX_RULE0EN_MASK 0x1
11246#define E4_TSTORM_ISCSI_CONN_AG_CTX_RULE0EN_SHIFT 7
Yuval Mintz7a9b6b82016-06-03 14:35:33 +030011247 u8 flags5;
Tomer Tayar21dd79e2017-12-27 19:30:06 +020011248#define E4_TSTORM_ISCSI_CONN_AG_CTX_RULE1EN_MASK 0x1
11249#define E4_TSTORM_ISCSI_CONN_AG_CTX_RULE1EN_SHIFT 0
11250#define E4_TSTORM_ISCSI_CONN_AG_CTX_RULE2EN_MASK 0x1
11251#define E4_TSTORM_ISCSI_CONN_AG_CTX_RULE2EN_SHIFT 1
11252#define E4_TSTORM_ISCSI_CONN_AG_CTX_RULE3EN_MASK 0x1
11253#define E4_TSTORM_ISCSI_CONN_AG_CTX_RULE3EN_SHIFT 2
11254#define E4_TSTORM_ISCSI_CONN_AG_CTX_RULE4EN_MASK 0x1
11255#define E4_TSTORM_ISCSI_CONN_AG_CTX_RULE4EN_SHIFT 3
11256#define E4_TSTORM_ISCSI_CONN_AG_CTX_RULE5EN_MASK 0x1
11257#define E4_TSTORM_ISCSI_CONN_AG_CTX_RULE5EN_SHIFT 4
11258#define E4_TSTORM_ISCSI_CONN_AG_CTX_RULE6EN_MASK 0x1
11259#define E4_TSTORM_ISCSI_CONN_AG_CTX_RULE6EN_SHIFT 5
11260#define E4_TSTORM_ISCSI_CONN_AG_CTX_RULE7EN_MASK 0x1
11261#define E4_TSTORM_ISCSI_CONN_AG_CTX_RULE7EN_SHIFT 6
11262#define E4_TSTORM_ISCSI_CONN_AG_CTX_RULE8EN_MASK 0x1
11263#define E4_TSTORM_ISCSI_CONN_AG_CTX_RULE8EN_SHIFT 7
Yuval Mintz7a9b6b82016-06-03 14:35:33 +030011264 __le32 reg0;
11265 __le32 reg1;
Michal Kalderon50bc60c2018-03-28 11:42:16 +030011266 __le32 rx_tcp_checksum_err_cnt;
Yuval Mintz7a9b6b82016-06-03 14:35:33 +030011267 __le32 reg3;
11268 __le32 reg4;
11269 __le32 reg5;
11270 __le32 reg6;
11271 __le32 reg7;
11272 __le32 reg8;
Mintz, Yuvalbe086e72017-03-11 18:39:18 +020011273 u8 cid_offload_cnt;
Yuval Mintz7a9b6b82016-06-03 14:35:33 +030011274 u8 byte3;
11275 __le16 word0;
11276};
11277
Tomer Tayar21dd79e2017-12-27 19:30:06 +020011278struct e4_ustorm_iscsi_conn_ag_ctx {
Yuval Mintz7a9b6b82016-06-03 14:35:33 +030011279 u8 byte0;
11280 u8 byte1;
11281 u8 flags0;
Tomer Tayar21dd79e2017-12-27 19:30:06 +020011282#define E4_USTORM_ISCSI_CONN_AG_CTX_BIT0_MASK 0x1
11283#define E4_USTORM_ISCSI_CONN_AG_CTX_BIT0_SHIFT 0
11284#define E4_USTORM_ISCSI_CONN_AG_CTX_BIT1_MASK 0x1
11285#define E4_USTORM_ISCSI_CONN_AG_CTX_BIT1_SHIFT 1
11286#define E4_USTORM_ISCSI_CONN_AG_CTX_CF0_MASK 0x3
11287#define E4_USTORM_ISCSI_CONN_AG_CTX_CF0_SHIFT 2
11288#define E4_USTORM_ISCSI_CONN_AG_CTX_CF1_MASK 0x3
11289#define E4_USTORM_ISCSI_CONN_AG_CTX_CF1_SHIFT 4
11290#define E4_USTORM_ISCSI_CONN_AG_CTX_CF2_MASK 0x3
11291#define E4_USTORM_ISCSI_CONN_AG_CTX_CF2_SHIFT 6
Yuval Mintz7a9b6b82016-06-03 14:35:33 +030011292 u8 flags1;
Tomer Tayar21dd79e2017-12-27 19:30:06 +020011293#define E4_USTORM_ISCSI_CONN_AG_CTX_CF3_MASK 0x3
11294#define E4_USTORM_ISCSI_CONN_AG_CTX_CF3_SHIFT 0
11295#define E4_USTORM_ISCSI_CONN_AG_CTX_CF4_MASK 0x3
11296#define E4_USTORM_ISCSI_CONN_AG_CTX_CF4_SHIFT 2
11297#define E4_USTORM_ISCSI_CONN_AG_CTX_CF5_MASK 0x3
11298#define E4_USTORM_ISCSI_CONN_AG_CTX_CF5_SHIFT 4
11299#define E4_USTORM_ISCSI_CONN_AG_CTX_CF6_MASK 0x3
11300#define E4_USTORM_ISCSI_CONN_AG_CTX_CF6_SHIFT 6
Yuval Mintz7a9b6b82016-06-03 14:35:33 +030011301 u8 flags2;
Tomer Tayar21dd79e2017-12-27 19:30:06 +020011302#define E4_USTORM_ISCSI_CONN_AG_CTX_CF0EN_MASK 0x1
11303#define E4_USTORM_ISCSI_CONN_AG_CTX_CF0EN_SHIFT 0
11304#define E4_USTORM_ISCSI_CONN_AG_CTX_CF1EN_MASK 0x1
11305#define E4_USTORM_ISCSI_CONN_AG_CTX_CF1EN_SHIFT 1
11306#define E4_USTORM_ISCSI_CONN_AG_CTX_CF2EN_MASK 0x1
11307#define E4_USTORM_ISCSI_CONN_AG_CTX_CF2EN_SHIFT 2
11308#define E4_USTORM_ISCSI_CONN_AG_CTX_CF3EN_MASK 0x1
11309#define E4_USTORM_ISCSI_CONN_AG_CTX_CF3EN_SHIFT 3
11310#define E4_USTORM_ISCSI_CONN_AG_CTX_CF4EN_MASK 0x1
11311#define E4_USTORM_ISCSI_CONN_AG_CTX_CF4EN_SHIFT 4
11312#define E4_USTORM_ISCSI_CONN_AG_CTX_CF5EN_MASK 0x1
11313#define E4_USTORM_ISCSI_CONN_AG_CTX_CF5EN_SHIFT 5
11314#define E4_USTORM_ISCSI_CONN_AG_CTX_CF6EN_MASK 0x1
11315#define E4_USTORM_ISCSI_CONN_AG_CTX_CF6EN_SHIFT 6
11316#define E4_USTORM_ISCSI_CONN_AG_CTX_RULE0EN_MASK 0x1
11317#define E4_USTORM_ISCSI_CONN_AG_CTX_RULE0EN_SHIFT 7
Yuval Mintz7a9b6b82016-06-03 14:35:33 +030011318 u8 flags3;
Tomer Tayar21dd79e2017-12-27 19:30:06 +020011319#define E4_USTORM_ISCSI_CONN_AG_CTX_RULE1EN_MASK 0x1
11320#define E4_USTORM_ISCSI_CONN_AG_CTX_RULE1EN_SHIFT 0
11321#define E4_USTORM_ISCSI_CONN_AG_CTX_RULE2EN_MASK 0x1
11322#define E4_USTORM_ISCSI_CONN_AG_CTX_RULE2EN_SHIFT 1
11323#define E4_USTORM_ISCSI_CONN_AG_CTX_RULE3EN_MASK 0x1
11324#define E4_USTORM_ISCSI_CONN_AG_CTX_RULE3EN_SHIFT 2
11325#define E4_USTORM_ISCSI_CONN_AG_CTX_RULE4EN_MASK 0x1
11326#define E4_USTORM_ISCSI_CONN_AG_CTX_RULE4EN_SHIFT 3
11327#define E4_USTORM_ISCSI_CONN_AG_CTX_RULE5EN_MASK 0x1
11328#define E4_USTORM_ISCSI_CONN_AG_CTX_RULE5EN_SHIFT 4
11329#define E4_USTORM_ISCSI_CONN_AG_CTX_RULE6EN_MASK 0x1
11330#define E4_USTORM_ISCSI_CONN_AG_CTX_RULE6EN_SHIFT 5
11331#define E4_USTORM_ISCSI_CONN_AG_CTX_RULE7EN_MASK 0x1
11332#define E4_USTORM_ISCSI_CONN_AG_CTX_RULE7EN_SHIFT 6
11333#define E4_USTORM_ISCSI_CONN_AG_CTX_RULE8EN_MASK 0x1
11334#define E4_USTORM_ISCSI_CONN_AG_CTX_RULE8EN_SHIFT 7
Yuval Mintz7a9b6b82016-06-03 14:35:33 +030011335 u8 byte2;
11336 u8 byte3;
11337 __le16 word0;
11338 __le16 word1;
11339 __le32 reg0;
11340 __le32 reg1;
11341 __le32 reg2;
11342 __le32 reg3;
11343 __le16 word2;
11344 __le16 word3;
11345};
11346
Tomer Tayara2e76992017-12-27 19:30:05 +020011347/* The iscsi storm connection context of Tstorm */
Yuval Mintz7a9b6b82016-06-03 14:35:33 +030011348struct tstorm_iscsi_conn_st_ctx {
Tomer Tayarda090912017-12-27 19:30:07 +020011349 __le32 reserved[44];
Yuval Mintz7a9b6b82016-06-03 14:35:33 +030011350};
11351
Tomer Tayar21dd79e2017-12-27 19:30:06 +020011352struct e4_mstorm_iscsi_conn_ag_ctx {
Yuval Mintz7a9b6b82016-06-03 14:35:33 +030011353 u8 reserved;
11354 u8 state;
11355 u8 flags0;
Tomer Tayar21dd79e2017-12-27 19:30:06 +020011356#define E4_MSTORM_ISCSI_CONN_AG_CTX_BIT0_MASK 0x1
11357#define E4_MSTORM_ISCSI_CONN_AG_CTX_BIT0_SHIFT 0
11358#define E4_MSTORM_ISCSI_CONN_AG_CTX_BIT1_MASK 0x1
11359#define E4_MSTORM_ISCSI_CONN_AG_CTX_BIT1_SHIFT 1
11360#define E4_MSTORM_ISCSI_CONN_AG_CTX_CF0_MASK 0x3
11361#define E4_MSTORM_ISCSI_CONN_AG_CTX_CF0_SHIFT 2
11362#define E4_MSTORM_ISCSI_CONN_AG_CTX_CF1_MASK 0x3
11363#define E4_MSTORM_ISCSI_CONN_AG_CTX_CF1_SHIFT 4
11364#define E4_MSTORM_ISCSI_CONN_AG_CTX_CF2_MASK 0x3
11365#define E4_MSTORM_ISCSI_CONN_AG_CTX_CF2_SHIFT 6
Yuval Mintz7a9b6b82016-06-03 14:35:33 +030011366 u8 flags1;
Tomer Tayar21dd79e2017-12-27 19:30:06 +020011367#define E4_MSTORM_ISCSI_CONN_AG_CTX_CF0EN_MASK 0x1
11368#define E4_MSTORM_ISCSI_CONN_AG_CTX_CF0EN_SHIFT 0
11369#define E4_MSTORM_ISCSI_CONN_AG_CTX_CF1EN_MASK 0x1
11370#define E4_MSTORM_ISCSI_CONN_AG_CTX_CF1EN_SHIFT 1
11371#define E4_MSTORM_ISCSI_CONN_AG_CTX_CF2EN_MASK 0x1
11372#define E4_MSTORM_ISCSI_CONN_AG_CTX_CF2EN_SHIFT 2
11373#define E4_MSTORM_ISCSI_CONN_AG_CTX_RULE0EN_MASK 0x1
11374#define E4_MSTORM_ISCSI_CONN_AG_CTX_RULE0EN_SHIFT 3
11375#define E4_MSTORM_ISCSI_CONN_AG_CTX_RULE1EN_MASK 0x1
11376#define E4_MSTORM_ISCSI_CONN_AG_CTX_RULE1EN_SHIFT 4
11377#define E4_MSTORM_ISCSI_CONN_AG_CTX_RULE2EN_MASK 0x1
11378#define E4_MSTORM_ISCSI_CONN_AG_CTX_RULE2EN_SHIFT 5
11379#define E4_MSTORM_ISCSI_CONN_AG_CTX_RULE3EN_MASK 0x1
11380#define E4_MSTORM_ISCSI_CONN_AG_CTX_RULE3EN_SHIFT 6
11381#define E4_MSTORM_ISCSI_CONN_AG_CTX_RULE4EN_MASK 0x1
11382#define E4_MSTORM_ISCSI_CONN_AG_CTX_RULE4EN_SHIFT 7
Yuval Mintz7a9b6b82016-06-03 14:35:33 +030011383 __le16 word0;
11384 __le16 word1;
11385 __le32 reg0;
11386 __le32 reg1;
11387};
11388
Tomer Tayara2e76992017-12-27 19:30:05 +020011389/* Combined iSCSI and TCP storm connection of Mstorm */
Yuval Mintz7a9b6b82016-06-03 14:35:33 +030011390struct mstorm_iscsi_tcp_conn_st_ctx {
11391 __le32 reserved_tcp[20];
Tomer Tayarda090912017-12-27 19:30:07 +020011392 __le32 reserved_iscsi[12];
Yuval Mintz7a9b6b82016-06-03 14:35:33 +030011393};
11394
Tomer Tayara2e76992017-12-27 19:30:05 +020011395/* The iscsi storm context of Ustorm */
Yuval Mintz7a9b6b82016-06-03 14:35:33 +030011396struct ustorm_iscsi_conn_st_ctx {
11397 __le32 reserved[52];
11398};
11399
Tomer Tayara2e76992017-12-27 19:30:05 +020011400/* iscsi connection context */
Tomer Tayar21dd79e2017-12-27 19:30:06 +020011401struct e4_iscsi_conn_context {
Yuval Mintz7a9b6b82016-06-03 14:35:33 +030011402 struct ystorm_iscsi_conn_st_ctx ystorm_st_context;
Yuval Mintz7a9b6b82016-06-03 14:35:33 +030011403 struct pstorm_iscsi_tcp_conn_st_ctx pstorm_st_context;
11404 struct regpair pstorm_st_padding[2];
11405 struct pb_context xpb2_context;
11406 struct xstorm_iscsi_tcp_conn_st_ctx xstorm_st_context;
11407 struct regpair xstorm_st_padding[2];
Tomer Tayar21dd79e2017-12-27 19:30:06 +020011408 struct e4_xstorm_iscsi_conn_ag_ctx xstorm_ag_context;
11409 struct e4_tstorm_iscsi_conn_ag_ctx tstorm_ag_context;
Yuval Mintz7a9b6b82016-06-03 14:35:33 +030011410 struct regpair tstorm_ag_padding[2];
11411 struct timers_context timer_context;
Tomer Tayar21dd79e2017-12-27 19:30:06 +020011412 struct e4_ustorm_iscsi_conn_ag_ctx ustorm_ag_context;
Yuval Mintz7a9b6b82016-06-03 14:35:33 +030011413 struct pb_context upb_context;
11414 struct tstorm_iscsi_conn_st_ctx tstorm_st_context;
11415 struct regpair tstorm_st_padding[2];
Tomer Tayar21dd79e2017-12-27 19:30:06 +020011416 struct e4_mstorm_iscsi_conn_ag_ctx mstorm_ag_context;
Yuval Mintz7a9b6b82016-06-03 14:35:33 +030011417 struct mstorm_iscsi_tcp_conn_st_ctx mstorm_st_context;
11418 struct ustorm_iscsi_conn_st_ctx ustorm_st_context;
11419};
11420
Tomer Tayara2e76992017-12-27 19:30:05 +020011421/* iSCSI init params passed by driver to FW in iSCSI init ramrod */
Yuval Mintz7a9b6b82016-06-03 14:35:33 +030011422struct iscsi_init_ramrod_params {
11423 struct iscsi_spe_func_init iscsi_init_spe;
11424 struct tcp_init_params tcp_init;
11425};
11426
Tomer Tayar21dd79e2017-12-27 19:30:06 +020011427struct e4_ystorm_iscsi_conn_ag_ctx {
Yuval Mintz7a9b6b82016-06-03 14:35:33 +030011428 u8 byte0;
11429 u8 byte1;
11430 u8 flags0;
Tomer Tayar21dd79e2017-12-27 19:30:06 +020011431#define E4_YSTORM_ISCSI_CONN_AG_CTX_BIT0_MASK 0x1
11432#define E4_YSTORM_ISCSI_CONN_AG_CTX_BIT0_SHIFT 0
11433#define E4_YSTORM_ISCSI_CONN_AG_CTX_BIT1_MASK 0x1
11434#define E4_YSTORM_ISCSI_CONN_AG_CTX_BIT1_SHIFT 1
11435#define E4_YSTORM_ISCSI_CONN_AG_CTX_CF0_MASK 0x3
11436#define E4_YSTORM_ISCSI_CONN_AG_CTX_CF0_SHIFT 2
11437#define E4_YSTORM_ISCSI_CONN_AG_CTX_CF1_MASK 0x3
11438#define E4_YSTORM_ISCSI_CONN_AG_CTX_CF1_SHIFT 4
11439#define E4_YSTORM_ISCSI_CONN_AG_CTX_CF2_MASK 0x3
11440#define E4_YSTORM_ISCSI_CONN_AG_CTX_CF2_SHIFT 6
Yuval Mintz7a9b6b82016-06-03 14:35:33 +030011441 u8 flags1;
Tomer Tayar21dd79e2017-12-27 19:30:06 +020011442#define E4_YSTORM_ISCSI_CONN_AG_CTX_CF0EN_MASK 0x1
11443#define E4_YSTORM_ISCSI_CONN_AG_CTX_CF0EN_SHIFT 0
11444#define E4_YSTORM_ISCSI_CONN_AG_CTX_CF1EN_MASK 0x1
11445#define E4_YSTORM_ISCSI_CONN_AG_CTX_CF1EN_SHIFT 1
11446#define E4_YSTORM_ISCSI_CONN_AG_CTX_CF2EN_MASK 0x1
11447#define E4_YSTORM_ISCSI_CONN_AG_CTX_CF2EN_SHIFT 2
11448#define E4_YSTORM_ISCSI_CONN_AG_CTX_RULE0EN_MASK 0x1
11449#define E4_YSTORM_ISCSI_CONN_AG_CTX_RULE0EN_SHIFT 3
11450#define E4_YSTORM_ISCSI_CONN_AG_CTX_RULE1EN_MASK 0x1
11451#define E4_YSTORM_ISCSI_CONN_AG_CTX_RULE1EN_SHIFT 4
11452#define E4_YSTORM_ISCSI_CONN_AG_CTX_RULE2EN_MASK 0x1
11453#define E4_YSTORM_ISCSI_CONN_AG_CTX_RULE2EN_SHIFT 5
11454#define E4_YSTORM_ISCSI_CONN_AG_CTX_RULE3EN_MASK 0x1
11455#define E4_YSTORM_ISCSI_CONN_AG_CTX_RULE3EN_SHIFT 6
11456#define E4_YSTORM_ISCSI_CONN_AG_CTX_RULE4EN_MASK 0x1
11457#define E4_YSTORM_ISCSI_CONN_AG_CTX_RULE4EN_SHIFT 7
Yuval Mintz7a9b6b82016-06-03 14:35:33 +030011458 u8 byte2;
11459 u8 byte3;
11460 __le16 word0;
11461 __le32 reg0;
11462 __le32 reg1;
11463 __le16 word1;
11464 __le16 word2;
11465 __le16 word3;
11466 __le16 word4;
11467 __le32 reg2;
11468 __le32 reg3;
11469};
Tomer Tayarc965db42016-09-07 16:36:24 +030011470
11471#define MFW_TRACE_SIGNATURE 0x25071946
11472
11473/* The trace in the buffer */
11474#define MFW_TRACE_EVENTID_MASK 0x00ffff
11475#define MFW_TRACE_PRM_SIZE_MASK 0x0f0000
11476#define MFW_TRACE_PRM_SIZE_SHIFT 16
11477#define MFW_TRACE_ENTRY_SIZE 3
11478
11479struct mcp_trace {
11480 u32 signature; /* Help to identify that the trace is valid */
11481 u32 size; /* the size of the trace buffer in bytes */
11482 u32 curr_level; /* 2 - all will be written to the buffer
11483 * 1 - debug trace will not be written
11484 * 0 - just errors will be written to the buffer
11485 */
11486 u32 modules_mask[2]; /* a bit per module, 1 means write it, 0 means
11487 * mask it.
11488 */
11489
11490 /* Warning: the following pointers are assumed to be 32bits as they are
11491 * used only in the MFW.
11492 */
11493 u32 trace_prod; /* The next trace will be written to this offset */
11494 u32 trace_oldest; /* The oldest valid trace starts at this offset
11495 * (usually very close after the current producer).
11496 */
11497};
11498
Yuval Mintz351a4ded2016-06-02 10:23:29 +030011499#define VF_MAX_STATIC 192
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020011500
Yuval Mintz351a4ded2016-06-02 10:23:29 +030011501#define MCP_GLOB_PATH_MAX 2
11502#define MCP_PORT_MAX 2
11503#define MCP_GLOB_PORT_MAX 4
11504#define MCP_GLOB_FUNC_MAX 16
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020011505
Tomer Tayarc965db42016-09-07 16:36:24 +030011506typedef u32 offsize_t; /* In DWORDS !!! */
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020011507/* Offset from the beginning of the MCP scratchpad */
Yuval Mintz351a4ded2016-06-02 10:23:29 +030011508#define OFFSIZE_OFFSET_SHIFT 0
11509#define OFFSIZE_OFFSET_MASK 0x0000ffff
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020011510/* Size of specific element (not the whole array if any) */
Yuval Mintz351a4ded2016-06-02 10:23:29 +030011511#define OFFSIZE_SIZE_SHIFT 16
11512#define OFFSIZE_SIZE_MASK 0xffff0000
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020011513
Yuval Mintz351a4ded2016-06-02 10:23:29 +030011514#define SECTION_OFFSET(_offsize) ((((_offsize & \
11515 OFFSIZE_OFFSET_MASK) >> \
11516 OFFSIZE_OFFSET_SHIFT) << 2))
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020011517
Yuval Mintz351a4ded2016-06-02 10:23:29 +030011518#define QED_SECTION_SIZE(_offsize) (((_offsize & \
11519 OFFSIZE_SIZE_MASK) >> \
11520 OFFSIZE_SIZE_SHIFT) << 2)
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020011521
Yuval Mintz351a4ded2016-06-02 10:23:29 +030011522#define SECTION_ADDR(_offsize, idx) (MCP_REG_SCRATCH + \
11523 SECTION_OFFSET(_offsize) + \
11524 (QED_SECTION_SIZE(_offsize) * idx))
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020011525
Yuval Mintz351a4ded2016-06-02 10:23:29 +030011526#define SECTION_OFFSIZE_ADDR(_pub_base, _section) \
11527 (_pub_base + offsetof(struct mcp_public_data, sections[_section]))
11528
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020011529/* PHY configuration */
Yuval Mintz351a4ded2016-06-02 10:23:29 +030011530struct eth_phy_cfg {
11531 u32 speed;
11532#define ETH_SPEED_AUTONEG 0
11533#define ETH_SPEED_SMARTLINQ 0x8
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020011534
Yuval Mintz351a4ded2016-06-02 10:23:29 +030011535 u32 pause;
11536#define ETH_PAUSE_NONE 0x0
11537#define ETH_PAUSE_AUTONEG 0x1
11538#define ETH_PAUSE_RX 0x2
11539#define ETH_PAUSE_TX 0x4
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020011540
Yuval Mintz351a4ded2016-06-02 10:23:29 +030011541 u32 adv_speed;
11542 u32 loopback_mode;
11543#define ETH_LOOPBACK_NONE (0)
11544#define ETH_LOOPBACK_INT_PHY (1)
11545#define ETH_LOOPBACK_EXT_PHY (2)
11546#define ETH_LOOPBACK_EXT (3)
11547#define ETH_LOOPBACK_MAC (4)
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020011548
Sudarsana Reddy Kalluru645874e2017-07-26 06:07:11 -070011549 u32 eee_cfg;
11550#define EEE_CFG_EEE_ENABLED BIT(0)
11551#define EEE_CFG_TX_LPI BIT(1)
11552#define EEE_CFG_ADV_SPEED_1G BIT(2)
11553#define EEE_CFG_ADV_SPEED_10G BIT(3)
11554#define EEE_TX_TIMER_USEC_MASK (0xfffffff0)
11555#define EEE_TX_TIMER_USEC_OFFSET 4
11556#define EEE_TX_TIMER_USEC_BALANCED_TIME (0xa00)
11557#define EEE_TX_TIMER_USEC_AGGRESSIVE_TIME (0x100)
11558#define EEE_TX_TIMER_USEC_LATENCY_TIME (0x6000)
11559
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020011560 u32 feature_config_flags;
Yuval Mintz351a4ded2016-06-02 10:23:29 +030011561#define ETH_EEE_MODE_ADV_LPI (1 << 0)
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020011562};
11563
11564struct port_mf_cfg {
Yuval Mintz351a4ded2016-06-02 10:23:29 +030011565 u32 dynamic_cfg;
11566#define PORT_MF_CFG_OV_TAG_MASK 0x0000ffff
11567#define PORT_MF_CFG_OV_TAG_SHIFT 0
11568#define PORT_MF_CFG_OV_TAG_DEFAULT PORT_MF_CFG_OV_TAG_MASK
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020011569
Yuval Mintz351a4ded2016-06-02 10:23:29 +030011570 u32 reserved[1];
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020011571};
11572
Yuval Mintz351a4ded2016-06-02 10:23:29 +030011573struct eth_stats {
11574 u64 r64;
11575 u64 r127;
11576 u64 r255;
11577 u64 r511;
11578 u64 r1023;
11579 u64 r1518;
Mintz, Yuval9c79dda2017-03-14 16:23:54 +020011580
11581 union {
11582 struct {
11583 u64 r1522;
11584 u64 r2047;
11585 u64 r4095;
11586 u64 r9216;
11587 u64 r16383;
11588 } bb0;
11589 struct {
11590 u64 unused1;
11591 u64 r1519_to_max;
11592 u64 unused2;
11593 u64 unused3;
11594 u64 unused4;
11595 } ah0;
11596 } u0;
11597
Yuval Mintz351a4ded2016-06-02 10:23:29 +030011598 u64 rfcs;
11599 u64 rxcf;
11600 u64 rxpf;
11601 u64 rxpp;
11602 u64 raln;
11603 u64 rfcr;
11604 u64 rovr;
11605 u64 rjbr;
11606 u64 rund;
11607 u64 rfrg;
11608 u64 t64;
11609 u64 t127;
11610 u64 t255;
11611 u64 t511;
11612 u64 t1023;
11613 u64 t1518;
Mintz, Yuval9c79dda2017-03-14 16:23:54 +020011614
11615 union {
11616 struct {
11617 u64 t2047;
11618 u64 t4095;
11619 u64 t9216;
11620 u64 t16383;
11621 } bb1;
11622 struct {
11623 u64 t1519_to_max;
11624 u64 unused6;
11625 u64 unused7;
11626 u64 unused8;
11627 } ah1;
11628 } u1;
11629
Yuval Mintz351a4ded2016-06-02 10:23:29 +030011630 u64 txpf;
11631 u64 txpp;
Mintz, Yuval9c79dda2017-03-14 16:23:54 +020011632
11633 union {
11634 struct {
11635 u64 tlpiec;
11636 u64 tncl;
11637 } bb2;
11638 struct {
11639 u64 unused9;
11640 u64 unused10;
11641 } ah2;
11642 } u2;
11643
Yuval Mintz351a4ded2016-06-02 10:23:29 +030011644 u64 rbyte;
11645 u64 rxuca;
11646 u64 rxmca;
11647 u64 rxbca;
11648 u64 rxpok;
11649 u64 tbyte;
11650 u64 txuca;
11651 u64 txmca;
11652 u64 txbca;
11653 u64 txcf;
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020011654};
11655
11656struct brb_stats {
Yuval Mintz351a4ded2016-06-02 10:23:29 +030011657 u64 brb_truncate[8];
11658 u64 brb_discard[8];
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020011659};
11660
11661struct port_stats {
Yuval Mintz351a4ded2016-06-02 10:23:29 +030011662 struct brb_stats brb;
11663 struct eth_stats eth;
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020011664};
11665
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020011666struct couple_mode_teaming {
11667 u8 port_cmt[MCP_GLOB_PORT_MAX];
Yuval Mintz351a4ded2016-06-02 10:23:29 +030011668#define PORT_CMT_IN_TEAM (1 << 0)
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020011669
Yuval Mintz351a4ded2016-06-02 10:23:29 +030011670#define PORT_CMT_PORT_ROLE (1 << 1)
11671#define PORT_CMT_PORT_INACTIVE (0 << 1)
11672#define PORT_CMT_PORT_ACTIVE (1 << 1)
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020011673
Yuval Mintz351a4ded2016-06-02 10:23:29 +030011674#define PORT_CMT_TEAM_MASK (1 << 2)
11675#define PORT_CMT_TEAM0 (0 << 2)
11676#define PORT_CMT_TEAM1 (1 << 2)
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020011677};
11678
Yuval Mintz351a4ded2016-06-02 10:23:29 +030011679#define LLDP_CHASSIS_ID_STAT_LEN 4
11680#define LLDP_PORT_ID_STAT_LEN 4
11681#define DCBX_MAX_APP_PROTOCOL 32
11682#define MAX_SYSTEM_LLDP_TLV_DATA 32
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020011683
Yuval Mintz351a4ded2016-06-02 10:23:29 +030011684enum _lldp_agent {
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020011685 LLDP_NEAREST_BRIDGE = 0,
11686 LLDP_NEAREST_NON_TPMR_BRIDGE,
11687 LLDP_NEAREST_CUSTOMER_BRIDGE,
11688 LLDP_MAX_LLDP_AGENTS
11689};
11690
11691struct lldp_config_params_s {
11692 u32 config;
Yuval Mintz351a4ded2016-06-02 10:23:29 +030011693#define LLDP_CONFIG_TX_INTERVAL_MASK 0x000000ff
11694#define LLDP_CONFIG_TX_INTERVAL_SHIFT 0
11695#define LLDP_CONFIG_HOLD_MASK 0x00000f00
11696#define LLDP_CONFIG_HOLD_SHIFT 8
11697#define LLDP_CONFIG_MAX_CREDIT_MASK 0x0000f000
11698#define LLDP_CONFIG_MAX_CREDIT_SHIFT 12
11699#define LLDP_CONFIG_ENABLE_RX_MASK 0x40000000
11700#define LLDP_CONFIG_ENABLE_RX_SHIFT 30
11701#define LLDP_CONFIG_ENABLE_TX_MASK 0x80000000
11702#define LLDP_CONFIG_ENABLE_TX_SHIFT 31
11703 u32 local_chassis_id[LLDP_CHASSIS_ID_STAT_LEN];
11704 u32 local_port_id[LLDP_PORT_ID_STAT_LEN];
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020011705};
11706
11707struct lldp_status_params_s {
Yuval Mintz351a4ded2016-06-02 10:23:29 +030011708 u32 prefix_seq_num;
11709 u32 status;
11710 u32 peer_chassis_id[LLDP_CHASSIS_ID_STAT_LEN];
11711 u32 peer_port_id[LLDP_PORT_ID_STAT_LEN];
11712 u32 suffix_seq_num;
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020011713};
11714
11715struct dcbx_ets_feature {
11716 u32 flags;
Yuval Mintz351a4ded2016-06-02 10:23:29 +030011717#define DCBX_ETS_ENABLED_MASK 0x00000001
11718#define DCBX_ETS_ENABLED_SHIFT 0
11719#define DCBX_ETS_WILLING_MASK 0x00000002
11720#define DCBX_ETS_WILLING_SHIFT 1
11721#define DCBX_ETS_ERROR_MASK 0x00000004
11722#define DCBX_ETS_ERROR_SHIFT 2
11723#define DCBX_ETS_CBS_MASK 0x00000008
11724#define DCBX_ETS_CBS_SHIFT 3
11725#define DCBX_ETS_MAX_TCS_MASK 0x000000f0
11726#define DCBX_ETS_MAX_TCS_SHIFT 4
Ariel Eliorb5a9ee72017-04-03 12:21:09 +030011727#define DCBX_OOO_TC_MASK 0x00000f00
11728#define DCBX_OOO_TC_SHIFT 8
Yuval Mintz351a4ded2016-06-02 10:23:29 +030011729 u32 pri_tc_tbl[1];
Ariel Eliorb5a9ee72017-04-03 12:21:09 +030011730#define DCBX_TCP_OOO_TC (4)
Yuval Mintz351a4ded2016-06-02 10:23:29 +030011731
Ariel Eliorb5a9ee72017-04-03 12:21:09 +030011732#define NIG_ETS_ISCSI_OOO_CLIENT_OFFSET (DCBX_TCP_OOO_TC + 1)
Yuval Mintz351a4ded2016-06-02 10:23:29 +030011733#define DCBX_CEE_STRICT_PRIORITY 0xf
11734 u32 tc_bw_tbl[2];
11735 u32 tc_tsa_tbl[2];
11736#define DCBX_ETS_TSA_STRICT 0
11737#define DCBX_ETS_TSA_CBS 1
11738#define DCBX_ETS_TSA_ETS 2
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020011739};
11740
Ariel Eliorb5a9ee72017-04-03 12:21:09 +030011741#define DCBX_TCP_OOO_TC (4)
11742#define DCBX_TCP_OOO_K2_4PORT_TC (3)
11743
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020011744struct dcbx_app_priority_entry {
11745 u32 entry;
Yuval Mintz351a4ded2016-06-02 10:23:29 +030011746#define DCBX_APP_PRI_MAP_MASK 0x000000ff
11747#define DCBX_APP_PRI_MAP_SHIFT 0
11748#define DCBX_APP_PRI_0 0x01
11749#define DCBX_APP_PRI_1 0x02
11750#define DCBX_APP_PRI_2 0x04
11751#define DCBX_APP_PRI_3 0x08
11752#define DCBX_APP_PRI_4 0x10
11753#define DCBX_APP_PRI_5 0x20
11754#define DCBX_APP_PRI_6 0x40
11755#define DCBX_APP_PRI_7 0x80
11756#define DCBX_APP_SF_MASK 0x00000300
11757#define DCBX_APP_SF_SHIFT 8
11758#define DCBX_APP_SF_ETHTYPE 0
11759#define DCBX_APP_SF_PORT 1
Sudarsana Reddy Kallurufb9ea8a2016-08-08 21:57:41 -040011760#define DCBX_APP_SF_IEEE_MASK 0x0000f000
11761#define DCBX_APP_SF_IEEE_SHIFT 12
11762#define DCBX_APP_SF_IEEE_RESERVED 0
11763#define DCBX_APP_SF_IEEE_ETHTYPE 1
11764#define DCBX_APP_SF_IEEE_TCP_PORT 2
11765#define DCBX_APP_SF_IEEE_UDP_PORT 3
11766#define DCBX_APP_SF_IEEE_TCP_UDP_PORT 4
11767
Yuval Mintz351a4ded2016-06-02 10:23:29 +030011768#define DCBX_APP_PROTOCOL_ID_MASK 0xffff0000
11769#define DCBX_APP_PROTOCOL_ID_SHIFT 16
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020011770};
11771
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020011772struct dcbx_app_priority_feature {
11773 u32 flags;
Yuval Mintz351a4ded2016-06-02 10:23:29 +030011774#define DCBX_APP_ENABLED_MASK 0x00000001
11775#define DCBX_APP_ENABLED_SHIFT 0
11776#define DCBX_APP_WILLING_MASK 0x00000002
11777#define DCBX_APP_WILLING_SHIFT 1
11778#define DCBX_APP_ERROR_MASK 0x00000004
11779#define DCBX_APP_ERROR_SHIFT 2
11780#define DCBX_APP_MAX_TCS_MASK 0x0000f000
11781#define DCBX_APP_MAX_TCS_SHIFT 12
11782#define DCBX_APP_NUM_ENTRIES_MASK 0x00ff0000
11783#define DCBX_APP_NUM_ENTRIES_SHIFT 16
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020011784 struct dcbx_app_priority_entry app_pri_tbl[DCBX_MAX_APP_PROTOCOL];
11785};
11786
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020011787struct dcbx_features {
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020011788 struct dcbx_ets_feature ets;
Yuval Mintz351a4ded2016-06-02 10:23:29 +030011789 u32 pfc;
11790#define DCBX_PFC_PRI_EN_BITMAP_MASK 0x000000ff
11791#define DCBX_PFC_PRI_EN_BITMAP_SHIFT 0
11792#define DCBX_PFC_PRI_EN_BITMAP_PRI_0 0x01
11793#define DCBX_PFC_PRI_EN_BITMAP_PRI_1 0x02
11794#define DCBX_PFC_PRI_EN_BITMAP_PRI_2 0x04
11795#define DCBX_PFC_PRI_EN_BITMAP_PRI_3 0x08
11796#define DCBX_PFC_PRI_EN_BITMAP_PRI_4 0x10
11797#define DCBX_PFC_PRI_EN_BITMAP_PRI_5 0x20
11798#define DCBX_PFC_PRI_EN_BITMAP_PRI_6 0x40
11799#define DCBX_PFC_PRI_EN_BITMAP_PRI_7 0x80
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020011800
Yuval Mintz351a4ded2016-06-02 10:23:29 +030011801#define DCBX_PFC_FLAGS_MASK 0x0000ff00
11802#define DCBX_PFC_FLAGS_SHIFT 8
11803#define DCBX_PFC_CAPS_MASK 0x00000f00
11804#define DCBX_PFC_CAPS_SHIFT 8
11805#define DCBX_PFC_MBC_MASK 0x00004000
11806#define DCBX_PFC_MBC_SHIFT 14
11807#define DCBX_PFC_WILLING_MASK 0x00008000
11808#define DCBX_PFC_WILLING_SHIFT 15
11809#define DCBX_PFC_ENABLED_MASK 0x00010000
11810#define DCBX_PFC_ENABLED_SHIFT 16
11811#define DCBX_PFC_ERROR_MASK 0x00020000
11812#define DCBX_PFC_ERROR_SHIFT 17
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020011813
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020011814 struct dcbx_app_priority_feature app;
11815};
11816
11817struct dcbx_local_params {
11818 u32 config;
Yuval Mintz351a4ded2016-06-02 10:23:29 +030011819#define DCBX_CONFIG_VERSION_MASK 0x00000007
11820#define DCBX_CONFIG_VERSION_SHIFT 0
11821#define DCBX_CONFIG_VERSION_DISABLED 0
11822#define DCBX_CONFIG_VERSION_IEEE 1
11823#define DCBX_CONFIG_VERSION_CEE 2
11824#define DCBX_CONFIG_VERSION_STATIC 4
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020011825
Yuval Mintz351a4ded2016-06-02 10:23:29 +030011826 u32 flags;
11827 struct dcbx_features features;
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020011828};
11829
11830struct dcbx_mib {
Yuval Mintz351a4ded2016-06-02 10:23:29 +030011831 u32 prefix_seq_num;
11832 u32 flags;
11833 struct dcbx_features features;
11834 u32 suffix_seq_num;
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020011835};
11836
11837struct lldp_system_tlvs_buffer_s {
Yuval Mintz351a4ded2016-06-02 10:23:29 +030011838 u16 valid;
11839 u16 length;
11840 u32 data[MAX_SYSTEM_LLDP_TLV_DATA];
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020011841};
11842
Yuval Mintz351a4ded2016-06-02 10:23:29 +030011843struct dcb_dscp_map {
11844 u32 flags;
11845#define DCB_DSCP_ENABLE_MASK 0x1
11846#define DCB_DSCP_ENABLE_SHIFT 0
11847#define DCB_DSCP_ENABLE 1
11848 u32 dscp_pri_map[8];
11849};
11850
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020011851struct public_global {
Yuval Mintz351a4ded2016-06-02 10:23:29 +030011852 u32 max_path;
11853 u32 max_ports;
Mintz, Yuvalbe086e72017-03-11 18:39:18 +020011854#define MODE_1P 1
11855#define MODE_2P 2
11856#define MODE_3P 3
11857#define MODE_4P 4
Yuval Mintz351a4ded2016-06-02 10:23:29 +030011858 u32 debug_mb_offset;
11859 u32 phymod_dbg_mb_offset;
11860 struct couple_mode_teaming cmt;
11861 s32 internal_temperature;
11862 u32 mfw_ver;
11863 u32 running_bundle_id;
11864 s32 external_temperature;
11865 u32 mdump_reason;
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020011866};
11867
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020011868struct fw_flr_mb {
Yuval Mintz351a4ded2016-06-02 10:23:29 +030011869 u32 aggint;
11870 u32 opgen_addr;
11871 u32 accum_ack;
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020011872};
11873
11874struct public_path {
Yuval Mintz351a4ded2016-06-02 10:23:29 +030011875 struct fw_flr_mb flr_mb;
11876 u32 mcp_vf_disabled[VF_MAX_STATIC / 32];
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020011877
Yuval Mintz351a4ded2016-06-02 10:23:29 +030011878 u32 process_kill;
11879#define PROCESS_KILL_COUNTER_MASK 0x0000ffff
11880#define PROCESS_KILL_COUNTER_SHIFT 0
11881#define PROCESS_KILL_GLOB_AEU_BIT_MASK 0xffff0000
11882#define PROCESS_KILL_GLOB_AEU_BIT_SHIFT 16
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020011883#define GLOBAL_AEU_BIT(aeu_reg_id, aeu_bit) (aeu_reg_id * 32 + aeu_bit)
11884};
11885
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020011886struct public_port {
Yuval Mintz351a4ded2016-06-02 10:23:29 +030011887 u32 validity_map;
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020011888
11889 u32 link_status;
Yuval Mintz351a4ded2016-06-02 10:23:29 +030011890#define LINK_STATUS_LINK_UP 0x00000001
11891#define LINK_STATUS_SPEED_AND_DUPLEX_MASK 0x0000001e
11892#define LINK_STATUS_SPEED_AND_DUPLEX_1000THD (1 << 1)
11893#define LINK_STATUS_SPEED_AND_DUPLEX_1000TFD (2 << 1)
11894#define LINK_STATUS_SPEED_AND_DUPLEX_10G (3 << 1)
11895#define LINK_STATUS_SPEED_AND_DUPLEX_20G (4 << 1)
11896#define LINK_STATUS_SPEED_AND_DUPLEX_40G (5 << 1)
11897#define LINK_STATUS_SPEED_AND_DUPLEX_50G (6 << 1)
11898#define LINK_STATUS_SPEED_AND_DUPLEX_100G (7 << 1)
11899#define LINK_STATUS_SPEED_AND_DUPLEX_25G (8 << 1)
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020011900
Yuval Mintz351a4ded2016-06-02 10:23:29 +030011901#define LINK_STATUS_AUTO_NEGOTIATE_ENABLED 0x00000020
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020011902
Yuval Mintz351a4ded2016-06-02 10:23:29 +030011903#define LINK_STATUS_AUTO_NEGOTIATE_COMPLETE 0x00000040
11904#define LINK_STATUS_PARALLEL_DETECTION_USED 0x00000080
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020011905
Yuval Mintz351a4ded2016-06-02 10:23:29 +030011906#define LINK_STATUS_PFC_ENABLED 0x00000100
11907#define LINK_STATUS_LINK_PARTNER_1000TFD_CAPABLE 0x00000200
11908#define LINK_STATUS_LINK_PARTNER_1000THD_CAPABLE 0x00000400
11909#define LINK_STATUS_LINK_PARTNER_10G_CAPABLE 0x00000800
11910#define LINK_STATUS_LINK_PARTNER_20G_CAPABLE 0x00001000
11911#define LINK_STATUS_LINK_PARTNER_40G_CAPABLE 0x00002000
11912#define LINK_STATUS_LINK_PARTNER_50G_CAPABLE 0x00004000
11913#define LINK_STATUS_LINK_PARTNER_100G_CAPABLE 0x00008000
11914#define LINK_STATUS_LINK_PARTNER_25G_CAPABLE 0x00010000
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020011915
Yuval Mintz351a4ded2016-06-02 10:23:29 +030011916#define LINK_STATUS_LINK_PARTNER_FLOW_CONTROL_MASK 0x000C0000
11917#define LINK_STATUS_LINK_PARTNER_NOT_PAUSE_CAPABLE (0 << 18)
11918#define LINK_STATUS_LINK_PARTNER_SYMMETRIC_PAUSE (1 << 18)
11919#define LINK_STATUS_LINK_PARTNER_ASYMMETRIC_PAUSE (2 << 18)
11920#define LINK_STATUS_LINK_PARTNER_BOTH_PAUSE (3 << 18)
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020011921
Yuval Mintz351a4ded2016-06-02 10:23:29 +030011922#define LINK_STATUS_SFP_TX_FAULT 0x00100000
11923#define LINK_STATUS_TX_FLOW_CONTROL_ENABLED 0x00200000
11924#define LINK_STATUS_RX_FLOW_CONTROL_ENABLED 0x00400000
11925#define LINK_STATUS_RX_SIGNAL_PRESENT 0x00800000
11926#define LINK_STATUS_MAC_LOCAL_FAULT 0x01000000
11927#define LINK_STATUS_MAC_REMOTE_FAULT 0x02000000
11928#define LINK_STATUS_UNSUPPORTED_SPD_REQ 0x04000000
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020011929
Yuval Mintz351a4ded2016-06-02 10:23:29 +030011930 u32 link_status1;
11931 u32 ext_phy_fw_version;
11932 u32 drv_phy_cfg_addr;
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020011933
Yuval Mintz351a4ded2016-06-02 10:23:29 +030011934 u32 port_stx;
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020011935
Yuval Mintz351a4ded2016-06-02 10:23:29 +030011936 u32 stat_nig_timer;
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020011937
Yuval Mintz351a4ded2016-06-02 10:23:29 +030011938 struct port_mf_cfg port_mf_config;
11939 struct port_stats stats;
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020011940
Yuval Mintz351a4ded2016-06-02 10:23:29 +030011941 u32 media_type;
11942#define MEDIA_UNSPECIFIED 0x0
11943#define MEDIA_SFPP_10G_FIBER 0x1
11944#define MEDIA_XFP_FIBER 0x2
11945#define MEDIA_DA_TWINAX 0x3
11946#define MEDIA_BASE_T 0x4
11947#define MEDIA_SFP_1G_FIBER 0x5
11948#define MEDIA_MODULE_FIBER 0x6
11949#define MEDIA_KR 0xf0
11950#define MEDIA_NOT_PRESENT 0xff
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020011951
11952 u32 lfa_status;
Yuval Mintz351a4ded2016-06-02 10:23:29 +030011953 u32 link_change_count;
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020011954
Yuval Mintz351a4ded2016-06-02 10:23:29 +030011955 struct lldp_config_params_s lldp_config_params[LLDP_MAX_LLDP_AGENTS];
11956 struct lldp_status_params_s lldp_status_params[LLDP_MAX_LLDP_AGENTS];
11957 struct lldp_system_tlvs_buffer_s system_lldp_tlvs_buf;
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020011958
11959 /* DCBX related MIB */
Yuval Mintz351a4ded2016-06-02 10:23:29 +030011960 struct dcbx_local_params local_admin_dcbx_mib;
11961 struct dcbx_mib remote_dcbx_mib;
11962 struct dcbx_mib operational_dcbx_mib;
Yuval Mintzfc48b7a2016-02-15 13:22:35 -050011963
Yuval Mintz351a4ded2016-06-02 10:23:29 +030011964 u32 reserved[2];
11965 u32 transceiver_data;
11966#define ETH_TRANSCEIVER_STATE_MASK 0x000000FF
11967#define ETH_TRANSCEIVER_STATE_SHIFT 0x00000000
11968#define ETH_TRANSCEIVER_STATE_UNPLUGGED 0x00000000
11969#define ETH_TRANSCEIVER_STATE_PRESENT 0x00000001
11970#define ETH_TRANSCEIVER_STATE_VALID 0x00000003
11971#define ETH_TRANSCEIVER_STATE_UPDATING 0x00000008
11972
11973 u32 wol_info;
11974 u32 wol_pkt_len;
11975 u32 wol_pkt_details;
11976 struct dcb_dscp_map dcb_dscp_map;
Sudarsana Reddy Kalluru645874e2017-07-26 06:07:11 -070011977
11978 u32 eee_status;
11979#define EEE_ACTIVE_BIT BIT(0)
11980#define EEE_LD_ADV_STATUS_MASK 0x000000f0
11981#define EEE_LD_ADV_STATUS_OFFSET 4
11982#define EEE_1G_ADV BIT(1)
11983#define EEE_10G_ADV BIT(2)
11984#define EEE_LP_ADV_STATUS_MASK 0x00000f00
11985#define EEE_LP_ADV_STATUS_OFFSET 8
11986#define EEE_SUPPORTED_SPEED_MASK 0x0000f000
11987#define EEE_SUPPORTED_SPEED_OFFSET 12
11988#define EEE_1G_SUPPORTED BIT(1)
11989#define EEE_10G_SUPPORTED BIT(2)
11990
11991 u32 eee_remote;
11992#define EEE_REMOTE_TW_TX_MASK 0x0000ffff
11993#define EEE_REMOTE_TW_TX_OFFSET 0
11994#define EEE_REMOTE_TW_RX_MASK 0xffff0000
11995#define EEE_REMOTE_TW_RX_OFFSET 16
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020011996};
11997
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020011998struct public_func {
Yuval Mintz351a4ded2016-06-02 10:23:29 +030011999 u32 reserved0[2];
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020012000
Yuval Mintz351a4ded2016-06-02 10:23:29 +030012001 u32 mtu_size;
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020012002
Yuval Mintz351a4ded2016-06-02 10:23:29 +030012003 u32 reserved[7];
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020012004
Yuval Mintz351a4ded2016-06-02 10:23:29 +030012005 u32 config;
12006#define FUNC_MF_CFG_FUNC_HIDE 0x00000001
12007#define FUNC_MF_CFG_PAUSE_ON_HOST_RING 0x00000002
12008#define FUNC_MF_CFG_PAUSE_ON_HOST_RING_SHIFT 0x00000001
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020012009
Yuval Mintz351a4ded2016-06-02 10:23:29 +030012010#define FUNC_MF_CFG_PROTOCOL_MASK 0x000000f0
12011#define FUNC_MF_CFG_PROTOCOL_SHIFT 4
12012#define FUNC_MF_CFG_PROTOCOL_ETHERNET 0x00000000
Yuval Mintzc5ac9312016-06-03 14:35:34 +030012013#define FUNC_MF_CFG_PROTOCOL_ISCSI 0x00000010
Arun Easi1e128c82017-02-15 06:28:22 -080012014#define FUNC_MF_CFG_PROTOCOL_FCOE 0x00000020
Yuval Mintzc5ac9312016-06-03 14:35:34 +030012015#define FUNC_MF_CFG_PROTOCOL_ROCE 0x00000030
Yuval Mintz351a4ded2016-06-02 10:23:29 +030012016#define FUNC_MF_CFG_PROTOCOL_MAX 0x00000030
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020012017
Yuval Mintz351a4ded2016-06-02 10:23:29 +030012018#define FUNC_MF_CFG_MIN_BW_MASK 0x0000ff00
12019#define FUNC_MF_CFG_MIN_BW_SHIFT 8
12020#define FUNC_MF_CFG_MIN_BW_DEFAULT 0x00000000
12021#define FUNC_MF_CFG_MAX_BW_MASK 0x00ff0000
12022#define FUNC_MF_CFG_MAX_BW_SHIFT 16
12023#define FUNC_MF_CFG_MAX_BW_DEFAULT 0x00640000
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020012024
Yuval Mintz351a4ded2016-06-02 10:23:29 +030012025 u32 status;
12026#define FUNC_STATUS_VLINK_DOWN 0x00000001
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020012027
Yuval Mintz351a4ded2016-06-02 10:23:29 +030012028 u32 mac_upper;
12029#define FUNC_MF_CFG_UPPERMAC_MASK 0x0000ffff
12030#define FUNC_MF_CFG_UPPERMAC_SHIFT 0
12031#define FUNC_MF_CFG_UPPERMAC_DEFAULT FUNC_MF_CFG_UPPERMAC_MASK
12032 u32 mac_lower;
12033#define FUNC_MF_CFG_LOWERMAC_DEFAULT 0xffffffff
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020012034
Yuval Mintz351a4ded2016-06-02 10:23:29 +030012035 u32 fcoe_wwn_port_name_upper;
12036 u32 fcoe_wwn_port_name_lower;
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020012037
Yuval Mintz351a4ded2016-06-02 10:23:29 +030012038 u32 fcoe_wwn_node_name_upper;
12039 u32 fcoe_wwn_node_name_lower;
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020012040
Yuval Mintz351a4ded2016-06-02 10:23:29 +030012041 u32 ovlan_stag;
12042#define FUNC_MF_CFG_OV_STAG_MASK 0x0000ffff
12043#define FUNC_MF_CFG_OV_STAG_SHIFT 0
12044#define FUNC_MF_CFG_OV_STAG_DEFAULT FUNC_MF_CFG_OV_STAG_MASK
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020012045
Yuval Mintz351a4ded2016-06-02 10:23:29 +030012046 u32 pf_allocation;
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020012047
Yuval Mintz351a4ded2016-06-02 10:23:29 +030012048 u32 preserve_data;
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020012049
Yuval Mintz351a4ded2016-06-02 10:23:29 +030012050 u32 driver_last_activity_ts;
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020012051
Yuval Mintz351a4ded2016-06-02 10:23:29 +030012052 u32 drv_ack_vf_disabled[VF_MAX_STATIC / 32];
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020012053
Yuval Mintz351a4ded2016-06-02 10:23:29 +030012054 u32 drv_id;
12055#define DRV_ID_PDA_COMP_VER_MASK 0x0000ffff
12056#define DRV_ID_PDA_COMP_VER_SHIFT 0
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020012057
Tomer Tayar5d24bcf2017-03-28 15:12:52 +030012058#define LOAD_REQ_HSI_VERSION 2
Yuval Mintz351a4ded2016-06-02 10:23:29 +030012059#define DRV_ID_MCP_HSI_VER_MASK 0x00ff0000
12060#define DRV_ID_MCP_HSI_VER_SHIFT 16
Tomer Tayar5d24bcf2017-03-28 15:12:52 +030012061#define DRV_ID_MCP_HSI_VER_CURRENT (LOAD_REQ_HSI_VERSION << \
12062 DRV_ID_MCP_HSI_VER_SHIFT)
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020012063
Yuval Mintz351a4ded2016-06-02 10:23:29 +030012064#define DRV_ID_DRV_TYPE_MASK 0x7f000000
12065#define DRV_ID_DRV_TYPE_SHIFT 24
12066#define DRV_ID_DRV_TYPE_UNKNOWN (0 << DRV_ID_DRV_TYPE_SHIFT)
12067#define DRV_ID_DRV_TYPE_LINUX (1 << DRV_ID_DRV_TYPE_SHIFT)
Yuval Mintzfc48b7a2016-02-15 13:22:35 -050012068
Yuval Mintz351a4ded2016-06-02 10:23:29 +030012069#define DRV_ID_DRV_INIT_HW_MASK 0x80000000
12070#define DRV_ID_DRV_INIT_HW_SHIFT 31
12071#define DRV_ID_DRV_INIT_HW_FLAG (1 << DRV_ID_DRV_INIT_HW_SHIFT)
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020012072};
12073
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020012074struct mcp_mac {
Yuval Mintz351a4ded2016-06-02 10:23:29 +030012075 u32 mac_upper;
12076 u32 mac_lower;
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020012077};
12078
12079struct mcp_val64 {
Yuval Mintz351a4ded2016-06-02 10:23:29 +030012080 u32 lo;
12081 u32 hi;
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020012082};
12083
12084struct mcp_file_att {
Yuval Mintz351a4ded2016-06-02 10:23:29 +030012085 u32 nvm_start_addr;
12086 u32 len;
12087};
12088
12089struct bist_nvm_image_att {
12090 u32 return_code;
12091 u32 image_type;
12092 u32 nvm_start_addr;
12093 u32 len;
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020012094};
12095
12096#define MCP_DRV_VER_STR_SIZE 16
12097#define MCP_DRV_VER_STR_SIZE_DWORD (MCP_DRV_VER_STR_SIZE / sizeof(u32))
12098#define MCP_DRV_NVM_BUF_LEN 32
12099struct drv_version_stc {
Yuval Mintz351a4ded2016-06-02 10:23:29 +030012100 u32 version;
12101 u8 name[MCP_DRV_VER_STR_SIZE - 4];
12102};
12103
12104struct lan_stats_stc {
12105 u64 ucast_rx_pkts;
12106 u64 ucast_tx_pkts;
12107 u32 fcs_err;
12108 u32 rserved;
12109};
12110
Arun Easi1e128c82017-02-15 06:28:22 -080012111struct fcoe_stats_stc {
12112 u64 rx_pkts;
12113 u64 tx_pkts;
12114 u32 fcs_err;
12115 u32 login_failure;
12116};
12117
Yuval Mintz351a4ded2016-06-02 10:23:29 +030012118struct ocbb_data_stc {
12119 u32 ocbb_host_addr;
12120 u32 ocsd_host_addr;
12121 u32 ocsd_req_update_interval;
12122};
12123
12124#define MAX_NUM_OF_SENSORS 7
12125struct temperature_status_stc {
12126 u32 num_of_sensors;
12127 u32 sensor[MAX_NUM_OF_SENSORS];
12128};
12129
12130/* crash dump configuration header */
12131struct mdump_config_stc {
12132 u32 version;
12133 u32 config;
12134 u32 epoc;
12135 u32 num_of_logs;
12136 u32 valid_logs;
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020012137};
12138
Tomer Tayar2edbff82016-10-31 07:14:27 +020012139enum resource_id_enum {
12140 RESOURCE_NUM_SB_E = 0,
12141 RESOURCE_NUM_L2_QUEUE_E = 1,
12142 RESOURCE_NUM_VPORT_E = 2,
12143 RESOURCE_NUM_VMQ_E = 3,
12144 RESOURCE_FACTOR_NUM_RSS_PF_E = 4,
12145 RESOURCE_FACTOR_RSS_PER_VF_E = 5,
12146 RESOURCE_NUM_RL_E = 6,
12147 RESOURCE_NUM_PQ_E = 7,
12148 RESOURCE_NUM_VF_E = 8,
12149 RESOURCE_VFC_FILTER_E = 9,
12150 RESOURCE_ILT_E = 10,
12151 RESOURCE_CQS_E = 11,
12152 RESOURCE_GFT_PROFILES_E = 12,
12153 RESOURCE_NUM_TC_E = 13,
12154 RESOURCE_NUM_RSS_ENGINES_E = 14,
12155 RESOURCE_LL2_QUEUE_E = 15,
12156 RESOURCE_RDMA_STATS_QUEUE_E = 16,
Tomer Tayar9c8517c2017-03-28 15:12:55 +030012157 RESOURCE_BDQ_E = 17,
Tomer Tayar2edbff82016-10-31 07:14:27 +020012158 RESOURCE_MAX_NUM,
12159 RESOURCE_NUM_INVALID = 0xFFFFFFFF
12160};
12161
12162/* Resource ID is to be filled by the driver in the MB request
12163 * Size, offset & flags to be filled by the MFW in the MB response
12164 */
12165struct resource_info {
12166 enum resource_id_enum res_id;
12167 u32 size; /* number of allocated resources */
12168 u32 offset; /* Offset of the 1st resource */
12169 u32 vf_size;
12170 u32 vf_offset;
12171 u32 flags;
12172#define RESOURCE_ELEMENT_STRICT (1 << 0)
12173};
12174
Tomer Tayar5d24bcf2017-03-28 15:12:52 +030012175#define DRV_ROLE_NONE 0
12176#define DRV_ROLE_PREBOOT 1
12177#define DRV_ROLE_OS 2
12178#define DRV_ROLE_KDUMP 3
12179
12180struct load_req_stc {
12181 u32 drv_ver_0;
12182 u32 drv_ver_1;
12183 u32 fw_ver;
12184 u32 misc0;
12185#define LOAD_REQ_ROLE_MASK 0x000000FF
12186#define LOAD_REQ_ROLE_SHIFT 0
12187#define LOAD_REQ_LOCK_TO_MASK 0x0000FF00
12188#define LOAD_REQ_LOCK_TO_SHIFT 8
12189#define LOAD_REQ_LOCK_TO_DEFAULT 0
12190#define LOAD_REQ_LOCK_TO_NONE 255
12191#define LOAD_REQ_FORCE_MASK 0x000F0000
12192#define LOAD_REQ_FORCE_SHIFT 16
12193#define LOAD_REQ_FORCE_NONE 0
12194#define LOAD_REQ_FORCE_PF 1
12195#define LOAD_REQ_FORCE_ALL 2
12196#define LOAD_REQ_FLAGS0_MASK 0x00F00000
12197#define LOAD_REQ_FLAGS0_SHIFT 20
12198#define LOAD_REQ_FLAGS0_AVOID_RESET (0x1 << 0)
12199};
12200
12201struct load_rsp_stc {
12202 u32 drv_ver_0;
12203 u32 drv_ver_1;
12204 u32 fw_ver;
12205 u32 misc0;
12206#define LOAD_RSP_ROLE_MASK 0x000000FF
12207#define LOAD_RSP_ROLE_SHIFT 0
12208#define LOAD_RSP_HSI_MASK 0x0000FF00
12209#define LOAD_RSP_HSI_SHIFT 8
12210#define LOAD_RSP_FLAGS0_MASK 0x000F0000
12211#define LOAD_RSP_FLAGS0_SHIFT 16
12212#define LOAD_RSP_FLAGS0_DRV_EXISTS (0x1 << 0)
12213};
12214
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020012215union drv_union_data {
Yuval Mintz351a4ded2016-06-02 10:23:29 +030012216 u32 ver_str[MCP_DRV_VER_STR_SIZE_DWORD];
12217 struct mcp_mac wol_mac;
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020012218
Yuval Mintz351a4ded2016-06-02 10:23:29 +030012219 struct eth_phy_cfg drv_phy_cfg;
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020012220
Yuval Mintz351a4ded2016-06-02 10:23:29 +030012221 struct mcp_val64 val64;
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020012222
Yuval Mintz351a4ded2016-06-02 10:23:29 +030012223 u8 raw_data[MCP_DRV_NVM_BUF_LEN];
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020012224
Yuval Mintz351a4ded2016-06-02 10:23:29 +030012225 struct mcp_file_att file_att;
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020012226
Yuval Mintz351a4ded2016-06-02 10:23:29 +030012227 u32 ack_vf_disabled[VF_MAX_STATIC / 32];
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020012228
Yuval Mintz351a4ded2016-06-02 10:23:29 +030012229 struct drv_version_stc drv_version;
12230
12231 struct lan_stats_stc lan_stats;
Arun Easi1e128c82017-02-15 06:28:22 -080012232 struct fcoe_stats_stc fcoe_stats;
Yuval Mintz351a4ded2016-06-02 10:23:29 +030012233 struct ocbb_data_stc ocbb_info;
12234 struct temperature_status_stc temp_info;
Tomer Tayar2edbff82016-10-31 07:14:27 +020012235 struct resource_info resource;
Yuval Mintz351a4ded2016-06-02 10:23:29 +030012236 struct bist_nvm_image_att nvm_image_att;
12237 struct mdump_config_stc mdump_config;
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020012238};
12239
12240struct public_drv_mb {
12241 u32 drv_mb_header;
Yuval Mintz351a4ded2016-06-02 10:23:29 +030012242#define DRV_MSG_CODE_MASK 0xffff0000
12243#define DRV_MSG_CODE_LOAD_REQ 0x10000000
12244#define DRV_MSG_CODE_LOAD_DONE 0x11000000
12245#define DRV_MSG_CODE_INIT_HW 0x12000000
Tomer Tayar5d24bcf2017-03-28 15:12:52 +030012246#define DRV_MSG_CODE_CANCEL_LOAD_REQ 0x13000000
Yuval Mintz351a4ded2016-06-02 10:23:29 +030012247#define DRV_MSG_CODE_UNLOAD_REQ 0x20000000
12248#define DRV_MSG_CODE_UNLOAD_DONE 0x21000000
12249#define DRV_MSG_CODE_INIT_PHY 0x22000000
12250#define DRV_MSG_CODE_LINK_RESET 0x23000000
12251#define DRV_MSG_CODE_SET_DCBX 0x25000000
Sudarsana Kalluru0fefbfb2016-10-31 07:14:21 +020012252#define DRV_MSG_CODE_OV_UPDATE_CURR_CFG 0x26000000
12253#define DRV_MSG_CODE_OV_UPDATE_BUS_NUM 0x27000000
12254#define DRV_MSG_CODE_OV_UPDATE_BOOT_PROGRESS 0x28000000
12255#define DRV_MSG_CODE_OV_UPDATE_STORM_FW_VER 0x29000000
12256#define DRV_MSG_CODE_OV_UPDATE_DRIVER_STATE 0x31000000
12257#define DRV_MSG_CODE_BW_UPDATE_ACK 0x32000000
12258#define DRV_MSG_CODE_OV_UPDATE_MTU 0x33000000
Tomer Tayar9c8517c2017-03-28 15:12:55 +030012259#define DRV_MSG_GET_RESOURCE_ALLOC_MSG 0x34000000
12260#define DRV_MSG_SET_RESOURCE_VALUE_MSG 0x35000000
Sudarsana Kalluru0fefbfb2016-10-31 07:14:21 +020012261#define DRV_MSG_CODE_OV_UPDATE_WOL 0x38000000
12262#define DRV_MSG_CODE_OV_UPDATE_ESWITCH_MODE 0x39000000
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020012263
Manish Chopra4b01e512016-04-26 10:56:09 -040012264#define DRV_MSG_CODE_BW_UPDATE_ACK 0x32000000
Yuval Mintz351a4ded2016-06-02 10:23:29 +030012265#define DRV_MSG_CODE_NIG_DRAIN 0x30000000
Mintz, Yuval2a351fd92017-05-29 09:53:09 +030012266#define DRV_MSG_CODE_S_TAG_UPDATE_ACK 0x3b000000
Mintz, Yuval18a69e32017-03-28 15:12:53 +030012267#define DRV_MSG_CODE_INITIATE_PF_FLR 0x02010000
Yuval Mintz351a4ded2016-06-02 10:23:29 +030012268#define DRV_MSG_CODE_VF_DISABLED_DONE 0xc0000000
12269#define DRV_MSG_CODE_CFG_VF_MSIX 0xc0010000
Mintz, Yuval88072fd2017-05-29 09:53:08 +030012270#define DRV_MSG_CODE_CFG_PF_VFS_MSIX 0xc0020000
Sudarsana Reddy Kalluru62e4d432018-03-28 05:14:21 -070012271#define DRV_MSG_CODE_NVM_PUT_FILE_BEGIN 0x00010000
12272#define DRV_MSG_CODE_NVM_PUT_FILE_DATA 0x00020000
Tomer Tayarc965db42016-09-07 16:36:24 +030012273#define DRV_MSG_CODE_NVM_GET_FILE_ATT 0x00030000
12274#define DRV_MSG_CODE_NVM_READ_NVRAM 0x00050000
Sudarsana Reddy Kalluru62e4d432018-03-28 05:14:21 -070012275#define DRV_MSG_CODE_NVM_WRITE_NVRAM 0x00060000
Yuval Mintz351a4ded2016-06-02 10:23:29 +030012276#define DRV_MSG_CODE_MCP_RESET 0x00090000
12277#define DRV_MSG_CODE_SET_VERSION 0x000f0000
Tomer Tayar41024262016-09-05 14:35:10 +030012278#define DRV_MSG_CODE_MCP_HALT 0x00100000
Sudarsana Kalluru0fefbfb2016-10-31 07:14:21 +020012279#define DRV_MSG_CODE_SET_VMAC 0x00110000
12280#define DRV_MSG_CODE_GET_VMAC 0x00120000
12281#define DRV_MSG_CODE_VMAC_TYPE_SHIFT 4
12282#define DRV_MSG_CODE_VMAC_TYPE_MASK 0x30
12283#define DRV_MSG_CODE_VMAC_TYPE_MAC 1
12284#define DRV_MSG_CODE_VMAC_TYPE_WWNN 2
12285#define DRV_MSG_CODE_VMAC_TYPE_WWPN 3
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020012286
Sudarsana Reddy Kalluru6c754242016-08-16 10:51:03 -040012287#define DRV_MSG_CODE_GET_STATS 0x00130000
12288#define DRV_MSG_CODE_STATS_TYPE_LAN 1
12289#define DRV_MSG_CODE_STATS_TYPE_FCOE 2
12290#define DRV_MSG_CODE_STATS_TYPE_ISCSI 3
12291#define DRV_MSG_CODE_STATS_TYPE_RDMA 4
12292
Tomer Tayar41024262016-09-05 14:35:10 +030012293#define DRV_MSG_CODE_MASK_PARITIES 0x001a0000
12294
Yuval Mintz351a4ded2016-06-02 10:23:29 +030012295#define DRV_MSG_CODE_BIST_TEST 0x001e0000
12296#define DRV_MSG_CODE_SET_LED_MODE 0x00200000
Tomer Tayar95691c92017-03-28 15:12:54 +030012297#define DRV_MSG_CODE_RESOURCE_CMD 0x00230000
12298
12299#define RESOURCE_CMD_REQ_RESC_MASK 0x0000001F
12300#define RESOURCE_CMD_REQ_RESC_SHIFT 0
12301#define RESOURCE_CMD_REQ_OPCODE_MASK 0x000000E0
12302#define RESOURCE_CMD_REQ_OPCODE_SHIFT 5
12303#define RESOURCE_OPCODE_REQ 1
12304#define RESOURCE_OPCODE_REQ_WO_AGING 2
12305#define RESOURCE_OPCODE_REQ_W_AGING 3
12306#define RESOURCE_OPCODE_RELEASE 4
12307#define RESOURCE_OPCODE_FORCE_RELEASE 5
12308#define RESOURCE_CMD_REQ_AGE_MASK 0x0000FF00
12309#define RESOURCE_CMD_REQ_AGE_SHIFT 8
12310
12311#define RESOURCE_CMD_RSP_OWNER_MASK 0x000000FF
12312#define RESOURCE_CMD_RSP_OWNER_SHIFT 0
12313#define RESOURCE_CMD_RSP_OPCODE_MASK 0x00000700
12314#define RESOURCE_CMD_RSP_OPCODE_SHIFT 8
12315#define RESOURCE_OPCODE_GNT 1
12316#define RESOURCE_OPCODE_BUSY 2
12317#define RESOURCE_OPCODE_RELEASED 3
12318#define RESOURCE_OPCODE_RELEASED_PREVIOUS 4
12319#define RESOURCE_OPCODE_WRONG_OWNER 5
12320#define RESOURCE_OPCODE_UNKNOWN_CMD 255
12321
12322#define RESOURCE_DUMP 0
12323
Mintz, Yuval6927e822016-10-31 07:14:25 +020012324#define DRV_MSG_CODE_GET_PF_RDMA_PROTOCOL 0x002b0000
Mintz, Yuval14d39642016-10-31 07:14:23 +020012325#define DRV_MSG_CODE_OS_WOL 0x002e0000
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020012326
Sudarsana Reddy Kalluru645874e2017-07-26 06:07:11 -070012327#define DRV_MSG_CODE_FEATURE_SUPPORT 0x00300000
12328#define DRV_MSG_CODE_GET_MFW_FEATURE_SUPPORT 0x00310000
Yuval Mintz351a4ded2016-06-02 10:23:29 +030012329#define DRV_MSG_SEQ_NUMBER_MASK 0x0000ffff
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020012330
12331 u32 drv_mb_param;
Sudarsana Kalluru0fefbfb2016-10-31 07:14:21 +020012332#define DRV_MB_PARAM_UNLOAD_WOL_UNKNOWN 0x00000000
12333#define DRV_MB_PARAM_UNLOAD_WOL_MCP 0x00000001
12334#define DRV_MB_PARAM_UNLOAD_WOL_DISABLED 0x00000002
12335#define DRV_MB_PARAM_UNLOAD_WOL_ENABLED 0x00000003
Yuval Mintz351a4ded2016-06-02 10:23:29 +030012336#define DRV_MB_PARAM_DCBX_NOTIFY_MASK 0x000000FF
12337#define DRV_MB_PARAM_DCBX_NOTIFY_SHIFT 3
Tomer Tayarc965db42016-09-07 16:36:24 +030012338
Tomer Tayarda090912017-12-27 19:30:07 +020012339#define DRV_MB_PARAM_NVM_LEN_OFFSET 24
Tomer Tayarc965db42016-09-07 16:36:24 +030012340
Yuval Mintz351a4ded2016-06-02 10:23:29 +030012341#define DRV_MB_PARAM_CFG_VF_MSIX_VF_ID_SHIFT 0
12342#define DRV_MB_PARAM_CFG_VF_MSIX_VF_ID_MASK 0x000000FF
12343#define DRV_MB_PARAM_CFG_VF_MSIX_SB_NUM_SHIFT 8
12344#define DRV_MB_PARAM_CFG_VF_MSIX_SB_NUM_MASK 0x0000FF00
Sudarsana Reddy Kalluru6ad8c632016-06-08 06:22:10 -040012345#define DRV_MB_PARAM_LLDP_SEND_MASK 0x00000001
12346#define DRV_MB_PARAM_LLDP_SEND_SHIFT 0
12347
Sudarsana Kalluru0fefbfb2016-10-31 07:14:21 +020012348#define DRV_MB_PARAM_OV_CURR_CFG_SHIFT 0
12349#define DRV_MB_PARAM_OV_CURR_CFG_MASK 0x0000000F
12350#define DRV_MB_PARAM_OV_CURR_CFG_NONE 0
12351#define DRV_MB_PARAM_OV_CURR_CFG_OS 1
12352#define DRV_MB_PARAM_OV_CURR_CFG_VENDOR_SPEC 2
12353#define DRV_MB_PARAM_OV_CURR_CFG_OTHER 3
12354
12355#define DRV_MB_PARAM_OV_STORM_FW_VER_SHIFT 0
12356#define DRV_MB_PARAM_OV_STORM_FW_VER_MASK 0xFFFFFFFF
12357#define DRV_MB_PARAM_OV_STORM_FW_VER_MAJOR_MASK 0xFF000000
12358#define DRV_MB_PARAM_OV_STORM_FW_VER_MINOR_MASK 0x00FF0000
12359#define DRV_MB_PARAM_OV_STORM_FW_VER_BUILD_MASK 0x0000FF00
12360#define DRV_MB_PARAM_OV_STORM_FW_VER_DROP_MASK 0x000000FF
12361
12362#define DRV_MSG_CODE_OV_UPDATE_DRIVER_STATE_SHIFT 0
12363#define DRV_MSG_CODE_OV_UPDATE_DRIVER_STATE_MASK 0xF
12364#define DRV_MSG_CODE_OV_UPDATE_DRIVER_STATE_UNKNOWN 0x1
12365#define DRV_MSG_CODE_OV_UPDATE_DRIVER_STATE_NOT_LOADED 0x2
12366#define DRV_MSG_CODE_OV_UPDATE_DRIVER_STATE_LOADING 0x3
12367#define DRV_MSG_CODE_OV_UPDATE_DRIVER_STATE_DISABLED 0x4
12368#define DRV_MSG_CODE_OV_UPDATE_DRIVER_STATE_ACTIVE 0x5
12369
12370#define DRV_MB_PARAM_OV_MTU_SIZE_SHIFT 0
12371#define DRV_MB_PARAM_OV_MTU_SIZE_MASK 0xFFFFFFFF
12372
12373#define DRV_MB_PARAM_WOL_MASK (DRV_MB_PARAM_WOL_DEFAULT | \
12374 DRV_MB_PARAM_WOL_DISABLED | \
12375 DRV_MB_PARAM_WOL_ENABLED)
12376#define DRV_MB_PARAM_WOL_DEFAULT DRV_MB_PARAM_UNLOAD_WOL_MCP
12377#define DRV_MB_PARAM_WOL_DISABLED DRV_MB_PARAM_UNLOAD_WOL_DISABLED
12378#define DRV_MB_PARAM_WOL_ENABLED DRV_MB_PARAM_UNLOAD_WOL_ENABLED
12379
12380#define DRV_MB_PARAM_ESWITCH_MODE_MASK (DRV_MB_PARAM_ESWITCH_MODE_NONE | \
12381 DRV_MB_PARAM_ESWITCH_MODE_VEB | \
12382 DRV_MB_PARAM_ESWITCH_MODE_VEPA)
12383#define DRV_MB_PARAM_ESWITCH_MODE_NONE 0x0
12384#define DRV_MB_PARAM_ESWITCH_MODE_VEB 0x1
12385#define DRV_MB_PARAM_ESWITCH_MODE_VEPA 0x2
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020012386
Yuval Mintz351a4ded2016-06-02 10:23:29 +030012387#define DRV_MB_PARAM_SET_LED_MODE_OPER 0x0
12388#define DRV_MB_PARAM_SET_LED_MODE_ON 0x1
12389#define DRV_MB_PARAM_SET_LED_MODE_OFF 0x2
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020012390
Tomer Tayar2edbff82016-10-31 07:14:27 +020012391 /* Resource Allocation params - Driver version support */
12392#define DRV_MB_PARAM_RESOURCE_ALLOC_VERSION_MAJOR_MASK 0xFFFF0000
12393#define DRV_MB_PARAM_RESOURCE_ALLOC_VERSION_MAJOR_SHIFT 16
12394#define DRV_MB_PARAM_RESOURCE_ALLOC_VERSION_MINOR_MASK 0x0000FFFF
12395#define DRV_MB_PARAM_RESOURCE_ALLOC_VERSION_MINOR_SHIFT 0
12396
Yuval Mintz351a4ded2016-06-02 10:23:29 +030012397#define DRV_MB_PARAM_BIST_REGISTER_TEST 1
12398#define DRV_MB_PARAM_BIST_CLOCK_TEST 2
Mintz, Yuval7a4b21b2016-10-31 07:14:22 +020012399#define DRV_MB_PARAM_BIST_NVM_TEST_NUM_IMAGES 3
12400#define DRV_MB_PARAM_BIST_NVM_TEST_IMAGE_BY_INDEX 4
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020012401
Yuval Mintz351a4ded2016-06-02 10:23:29 +030012402#define DRV_MB_PARAM_BIST_RC_UNKNOWN 0
12403#define DRV_MB_PARAM_BIST_RC_PASSED 1
12404#define DRV_MB_PARAM_BIST_RC_FAILED 2
12405#define DRV_MB_PARAM_BIST_RC_INVALID_PARAMETER 3
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020012406
Yuval Mintz351a4ded2016-06-02 10:23:29 +030012407#define DRV_MB_PARAM_BIST_TEST_INDEX_SHIFT 0
12408#define DRV_MB_PARAM_BIST_TEST_INDEX_MASK 0x000000FF
Mintz, Yuval7a4b21b2016-10-31 07:14:22 +020012409#define DRV_MB_PARAM_BIST_TEST_IMAGE_INDEX_SHIFT 8
12410#define DRV_MB_PARAM_BIST_TEST_IMAGE_INDEX_MASK 0x0000FF00
Sudarsana Reddy Kalluru03dc76c2016-04-28 20:20:52 -040012411
Sudarsana Reddy Kalluru645874e2017-07-26 06:07:11 -070012412#define DRV_MB_PARAM_FEATURE_SUPPORT_PORT_MASK 0x0000FFFF
12413#define DRV_MB_PARAM_FEATURE_SUPPORT_PORT_OFFSET 0
12414#define DRV_MB_PARAM_FEATURE_SUPPORT_PORT_EEE 0x00000002
12415
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020012416 u32 fw_mb_header;
Yuval Mintz351a4ded2016-06-02 10:23:29 +030012417#define FW_MSG_CODE_MASK 0xffff0000
Tomer Tayar95691c92017-03-28 15:12:54 +030012418#define FW_MSG_CODE_UNSUPPORTED 0x00000000
Yuval Mintz351a4ded2016-06-02 10:23:29 +030012419#define FW_MSG_CODE_DRV_LOAD_ENGINE 0x10100000
12420#define FW_MSG_CODE_DRV_LOAD_PORT 0x10110000
12421#define FW_MSG_CODE_DRV_LOAD_FUNCTION 0x10120000
12422#define FW_MSG_CODE_DRV_LOAD_REFUSED_PDA 0x10200000
Tomer Tayar5d24bcf2017-03-28 15:12:52 +030012423#define FW_MSG_CODE_DRV_LOAD_REFUSED_HSI_1 0x10210000
Yuval Mintz351a4ded2016-06-02 10:23:29 +030012424#define FW_MSG_CODE_DRV_LOAD_REFUSED_DIAG 0x10220000
Tomer Tayar5d24bcf2017-03-28 15:12:52 +030012425#define FW_MSG_CODE_DRV_LOAD_REFUSED_HSI 0x10230000
12426#define FW_MSG_CODE_DRV_LOAD_REFUSED_REQUIRES_FORCE 0x10300000
12427#define FW_MSG_CODE_DRV_LOAD_REFUSED_REJECT 0x10310000
Yuval Mintz351a4ded2016-06-02 10:23:29 +030012428#define FW_MSG_CODE_DRV_LOAD_DONE 0x11100000
12429#define FW_MSG_CODE_DRV_UNLOAD_ENGINE 0x20110000
12430#define FW_MSG_CODE_DRV_UNLOAD_PORT 0x20120000
12431#define FW_MSG_CODE_DRV_UNLOAD_FUNCTION 0x20130000
12432#define FW_MSG_CODE_DRV_UNLOAD_DONE 0x21100000
Tomer Tayar2edbff82016-10-31 07:14:27 +020012433#define FW_MSG_CODE_RESOURCE_ALLOC_OK 0x34000000
12434#define FW_MSG_CODE_RESOURCE_ALLOC_UNKNOWN 0x35000000
12435#define FW_MSG_CODE_RESOURCE_ALLOC_DEPRECATED 0x36000000
Mintz, Yuval2a351fd92017-05-29 09:53:09 +030012436#define FW_MSG_CODE_S_TAG_UPDATE_ACK_DONE 0x3b000000
Yuval Mintz351a4ded2016-06-02 10:23:29 +030012437#define FW_MSG_CODE_DRV_CFG_VF_MSIX_DONE 0xb0010000
Tomer Tayarc965db42016-09-07 16:36:24 +030012438
12439#define FW_MSG_CODE_NVM_OK 0x00010000
Sudarsana Reddy Kalluru62e4d432018-03-28 05:14:21 -070012440#define FW_MSG_CODE_NVM_PUT_FILE_FINISH_OK 0x00400000
12441#define FW_MSG_CODE_PHY_OK 0x00110000
Yuval Mintz351a4ded2016-06-02 10:23:29 +030012442#define FW_MSG_CODE_OK 0x00160000
Sudarsana Reddy Kalluru62e4d432018-03-28 05:14:21 -070012443#define FW_MSG_CODE_ERROR 0x00170000
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020012444
Mintz, Yuval14d39642016-10-31 07:14:23 +020012445#define FW_MSG_CODE_OS_WOL_SUPPORTED 0x00800000
12446#define FW_MSG_CODE_OS_WOL_NOT_SUPPORTED 0x00810000
Mintz, Yuval88072fd2017-05-29 09:53:08 +030012447#define FW_MSG_CODE_DRV_CFG_PF_VFS_MSIX_DONE 0x00870000
Yuval Mintz351a4ded2016-06-02 10:23:29 +030012448#define FW_MSG_SEQ_NUMBER_MASK 0x0000ffff
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020012449
Yuval Mintz351a4ded2016-06-02 10:23:29 +030012450 u32 fw_mb_param;
Tomer Tayar9c8517c2017-03-28 15:12:55 +030012451#define FW_MB_PARAM_RESOURCE_ALLOC_VERSION_MAJOR_MASK 0xFFFF0000
12452#define FW_MB_PARAM_RESOURCE_ALLOC_VERSION_MAJOR_SHIFT 16
12453#define FW_MB_PARAM_RESOURCE_ALLOC_VERSION_MINOR_MASK 0x0000FFFF
12454#define FW_MB_PARAM_RESOURCE_ALLOC_VERSION_MINOR_SHIFT 0
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020012455
Mintz, Yuval6927e822016-10-31 07:14:25 +020012456 /* get pf rdma protocol command responce */
12457#define FW_MB_PARAM_GET_PF_RDMA_NONE 0x0
12458#define FW_MB_PARAM_GET_PF_RDMA_ROCE 0x1
12459#define FW_MB_PARAM_GET_PF_RDMA_IWARP 0x2
12460#define FW_MB_PARAM_GET_PF_RDMA_BOTH 0x3
12461
Sudarsana Reddy Kalluru645874e2017-07-26 06:07:11 -070012462/* get MFW feature support response */
12463#define FW_MB_PARAM_FEATURE_SUPPORT_EEE 0x00000002
12464
Tomer Tayarfc561c82017-05-23 09:41:21 +030012465#define FW_MB_PARAM_LOAD_DONE_DID_EFUSE_ERROR (1 << 0)
12466
Yuval Mintz351a4ded2016-06-02 10:23:29 +030012467 u32 drv_pulse_mb;
12468#define DRV_PULSE_SEQ_MASK 0x00007fff
12469#define DRV_PULSE_SYSTEM_TIME_MASK 0xffff0000
12470#define DRV_PULSE_ALWAYS_ALIVE 0x00008000
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020012471
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020012472 u32 mcp_pulse_mb;
Yuval Mintz351a4ded2016-06-02 10:23:29 +030012473#define MCP_PULSE_SEQ_MASK 0x00007fff
12474#define MCP_PULSE_ALWAYS_ALIVE 0x00008000
12475#define MCP_EVENT_MASK 0xffff0000
12476#define MCP_EVENT_OTHER_DRIVER_RESET_REQ 0x00010000
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020012477
12478 union drv_union_data union_data;
12479};
12480
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020012481enum MFW_DRV_MSG_TYPE {
12482 MFW_DRV_MSG_LINK_CHANGE,
12483 MFW_DRV_MSG_FLR_FW_ACK_FAILED,
12484 MFW_DRV_MSG_VF_DISABLED,
12485 MFW_DRV_MSG_LLDP_DATA_UPDATED,
12486 MFW_DRV_MSG_DCBX_REMOTE_MIB_UPDATED,
12487 MFW_DRV_MSG_DCBX_OPERATIONAL_MIB_UPDATED,
Yuval Mintz351a4ded2016-06-02 10:23:29 +030012488 MFW_DRV_MSG_RESERVED4,
Zvi Nachmani334c03b2016-03-09 09:16:25 +020012489 MFW_DRV_MSG_BW_UPDATE,
Mintz, Yuval2a351fd92017-05-29 09:53:09 +030012490 MFW_DRV_MSG_S_TAG_UPDATE,
Sudarsana Reddy Kalluru6c754242016-08-16 10:51:03 -040012491 MFW_DRV_MSG_GET_LAN_STATS,
12492 MFW_DRV_MSG_GET_FCOE_STATS,
12493 MFW_DRV_MSG_GET_ISCSI_STATS,
12494 MFW_DRV_MSG_GET_RDMA_STATS,
Yuval Mintz351a4ded2016-06-02 10:23:29 +030012495 MFW_DRV_MSG_BW_UPDATE10,
Zvi Nachmani334c03b2016-03-09 09:16:25 +020012496 MFW_DRV_MSG_TRANSCEIVER_STATE_CHANGE,
Yuval Mintz351a4ded2016-06-02 10:23:29 +030012497 MFW_DRV_MSG_BW_UPDATE11,
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020012498 MFW_DRV_MSG_MAX
12499};
12500
Yuval Mintz351a4ded2016-06-02 10:23:29 +030012501#define MFW_DRV_MSG_MAX_DWORDS(msgs) (((msgs - 1) >> 2) + 1)
12502#define MFW_DRV_MSG_DWORD(msg_id) (msg_id >> 2)
12503#define MFW_DRV_MSG_OFFSET(msg_id) ((msg_id & 0x3) << 3)
12504#define MFW_DRV_MSG_MASK(msg_id) (0xff << MFW_DRV_MSG_OFFSET(msg_id))
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020012505
12506struct public_mfw_mb {
Yuval Mintz351a4ded2016-06-02 10:23:29 +030012507 u32 sup_msgs;
12508 u32 msg[MFW_DRV_MSG_MAX_DWORDS(MFW_DRV_MSG_MAX)];
12509 u32 ack[MFW_DRV_MSG_MAX_DWORDS(MFW_DRV_MSG_MAX)];
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020012510};
12511
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020012512enum public_sections {
Yuval Mintz351a4ded2016-06-02 10:23:29 +030012513 PUBLIC_DRV_MB,
12514 PUBLIC_MFW_MB,
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020012515 PUBLIC_GLOBAL,
12516 PUBLIC_PATH,
12517 PUBLIC_PORT,
12518 PUBLIC_FUNC,
12519 PUBLIC_MAX_SECTIONS
12520};
12521
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020012522struct mcp_public_data {
Yuval Mintz351a4ded2016-06-02 10:23:29 +030012523 u32 num_sections;
12524 u32 sections[PUBLIC_MAX_SECTIONS];
12525 struct public_drv_mb drv_mb[MCP_GLOB_FUNC_MAX];
12526 struct public_mfw_mb mfw_mb[MCP_GLOB_FUNC_MAX];
12527 struct public_global global;
12528 struct public_path path[MCP_GLOB_PATH_MAX];
12529 struct public_port port[MCP_GLOB_PORT_MAX];
12530 struct public_func func[MCP_GLOB_FUNC_MAX];
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020012531};
12532
12533struct nvm_cfg_mac_address {
Yuval Mintz351a4ded2016-06-02 10:23:29 +030012534 u32 mac_addr_hi;
12535#define NVM_CFG_MAC_ADDRESS_HI_MASK 0x0000FFFF
12536#define NVM_CFG_MAC_ADDRESS_HI_OFFSET 0
12537 u32 mac_addr_lo;
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020012538};
12539
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020012540struct nvm_cfg1_glob {
Yuval Mintz351a4ded2016-06-02 10:23:29 +030012541 u32 generic_cont0;
12542#define NVM_CFG1_GLOB_MF_MODE_MASK 0x00000FF0
12543#define NVM_CFG1_GLOB_MF_MODE_OFFSET 4
12544#define NVM_CFG1_GLOB_MF_MODE_MF_ALLOWED 0x0
12545#define NVM_CFG1_GLOB_MF_MODE_DEFAULT 0x1
12546#define NVM_CFG1_GLOB_MF_MODE_SPIO4 0x2
12547#define NVM_CFG1_GLOB_MF_MODE_NPAR1_0 0x3
12548#define NVM_CFG1_GLOB_MF_MODE_NPAR1_5 0x4
12549#define NVM_CFG1_GLOB_MF_MODE_NPAR2_0 0x5
12550#define NVM_CFG1_GLOB_MF_MODE_BD 0x6
12551#define NVM_CFG1_GLOB_MF_MODE_UFP 0x7
12552 u32 engineering_change[3];
12553 u32 manufacturing_id;
12554 u32 serial_number[4];
12555 u32 pcie_cfg;
12556 u32 mgmt_traffic;
12557 u32 core_cfg;
12558#define NVM_CFG1_GLOB_NETWORK_PORT_MODE_MASK 0x000000FF
12559#define NVM_CFG1_GLOB_NETWORK_PORT_MODE_OFFSET 0
12560#define NVM_CFG1_GLOB_NETWORK_PORT_MODE_BB_2X40G 0x0
12561#define NVM_CFG1_GLOB_NETWORK_PORT_MODE_2X50G 0x1
12562#define NVM_CFG1_GLOB_NETWORK_PORT_MODE_BB_1X100G 0x2
12563#define NVM_CFG1_GLOB_NETWORK_PORT_MODE_4X10G_F 0x3
12564#define NVM_CFG1_GLOB_NETWORK_PORT_MODE_BB_4X10G_E 0x4
12565#define NVM_CFG1_GLOB_NETWORK_PORT_MODE_BB_4X20G 0x5
12566#define NVM_CFG1_GLOB_NETWORK_PORT_MODE_1X40G 0xB
12567#define NVM_CFG1_GLOB_NETWORK_PORT_MODE_2X25G 0xC
12568#define NVM_CFG1_GLOB_NETWORK_PORT_MODE_1X25G 0xD
12569#define NVM_CFG1_GLOB_NETWORK_PORT_MODE_4X25G 0xE
Mintz, Yuval9c79dda2017-03-14 16:23:54 +020012570#define NVM_CFG1_GLOB_NETWORK_PORT_MODE_2X10G 0xF
12571
Yuval Mintz351a4ded2016-06-02 10:23:29 +030012572 u32 e_lane_cfg1;
12573 u32 e_lane_cfg2;
12574 u32 f_lane_cfg1;
12575 u32 f_lane_cfg2;
12576 u32 mps10_preemphasis;
12577 u32 mps10_driver_current;
12578 u32 mps25_preemphasis;
12579 u32 mps25_driver_current;
12580 u32 pci_id;
12581 u32 pci_subsys_id;
12582 u32 bar;
12583 u32 mps10_txfir_main;
12584 u32 mps10_txfir_post;
12585 u32 mps25_txfir_main;
12586 u32 mps25_txfir_post;
12587 u32 manufacture_ver;
12588 u32 manufacture_time;
12589 u32 led_global_settings;
12590 u32 generic_cont1;
12591 u32 mbi_version;
Tomer Tayarae336662017-05-23 09:41:26 +030012592#define NVM_CFG1_GLOB_MBI_VERSION_0_MASK 0x000000FF
12593#define NVM_CFG1_GLOB_MBI_VERSION_0_OFFSET 0
12594#define NVM_CFG1_GLOB_MBI_VERSION_1_MASK 0x0000FF00
12595#define NVM_CFG1_GLOB_MBI_VERSION_1_OFFSET 8
12596#define NVM_CFG1_GLOB_MBI_VERSION_2_MASK 0x00FF0000
12597#define NVM_CFG1_GLOB_MBI_VERSION_2_OFFSET 16
Yuval Mintz351a4ded2016-06-02 10:23:29 +030012598 u32 mbi_date;
12599 u32 misc_sig;
12600 u32 device_capabilities;
12601#define NVM_CFG1_GLOB_DEVICE_CAPABILITIES_ETHERNET 0x1
Arun Easi1e128c82017-02-15 06:28:22 -080012602#define NVM_CFG1_GLOB_DEVICE_CAPABILITIES_FCOE 0x2
Yuval Mintzc5ac9312016-06-03 14:35:34 +030012603#define NVM_CFG1_GLOB_DEVICE_CAPABILITIES_ISCSI 0x4
12604#define NVM_CFG1_GLOB_DEVICE_CAPABILITIES_ROCE 0x8
Yuval Mintz351a4ded2016-06-02 10:23:29 +030012605 u32 power_dissipated;
12606 u32 power_consumed;
12607 u32 efi_version;
12608 u32 multi_network_modes_capability;
12609 u32 reserved[41];
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020012610};
12611
12612struct nvm_cfg1_path {
Yuval Mintz351a4ded2016-06-02 10:23:29 +030012613 u32 reserved[30];
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020012614};
12615
12616struct nvm_cfg1_port {
Yuval Mintz351a4ded2016-06-02 10:23:29 +030012617 u32 reserved__m_relocated_to_option_123;
12618 u32 reserved__m_relocated_to_option_124;
12619 u32 generic_cont0;
12620#define NVM_CFG1_PORT_DCBX_MODE_MASK 0x000F0000
12621#define NVM_CFG1_PORT_DCBX_MODE_OFFSET 16
12622#define NVM_CFG1_PORT_DCBX_MODE_DISABLED 0x0
12623#define NVM_CFG1_PORT_DCBX_MODE_IEEE 0x1
12624#define NVM_CFG1_PORT_DCBX_MODE_CEE 0x2
12625#define NVM_CFG1_PORT_DCBX_MODE_DYNAMIC 0x3
12626#define NVM_CFG1_PORT_DEFAULT_ENABLED_PROTOCOLS_MASK 0x00F00000
12627#define NVM_CFG1_PORT_DEFAULT_ENABLED_PROTOCOLS_OFFSET 20
12628#define NVM_CFG1_PORT_DEFAULT_ENABLED_PROTOCOLS_ETHERNET 0x1
12629#define NVM_CFG1_PORT_DEFAULT_ENABLED_PROTOCOLS_FCOE 0x2
12630#define NVM_CFG1_PORT_DEFAULT_ENABLED_PROTOCOLS_ISCSI 0x4
12631 u32 pcie_cfg;
12632 u32 features;
12633 u32 speed_cap_mask;
12634#define NVM_CFG1_PORT_DRV_SPEED_CAPABILITY_MASK_MASK 0x0000FFFF
12635#define NVM_CFG1_PORT_DRV_SPEED_CAPABILITY_MASK_OFFSET 0
12636#define NVM_CFG1_PORT_DRV_SPEED_CAPABILITY_MASK_1G 0x1
12637#define NVM_CFG1_PORT_DRV_SPEED_CAPABILITY_MASK_10G 0x2
12638#define NVM_CFG1_PORT_DRV_SPEED_CAPABILITY_MASK_25G 0x8
12639#define NVM_CFG1_PORT_DRV_SPEED_CAPABILITY_MASK_40G 0x10
12640#define NVM_CFG1_PORT_DRV_SPEED_CAPABILITY_MASK_50G 0x20
12641#define NVM_CFG1_PORT_DRV_SPEED_CAPABILITY_MASK_BB_100G 0x40
12642 u32 link_settings;
12643#define NVM_CFG1_PORT_DRV_LINK_SPEED_MASK 0x0000000F
12644#define NVM_CFG1_PORT_DRV_LINK_SPEED_OFFSET 0
12645#define NVM_CFG1_PORT_DRV_LINK_SPEED_AUTONEG 0x0
12646#define NVM_CFG1_PORT_DRV_LINK_SPEED_1G 0x1
12647#define NVM_CFG1_PORT_DRV_LINK_SPEED_10G 0x2
12648#define NVM_CFG1_PORT_DRV_LINK_SPEED_25G 0x4
12649#define NVM_CFG1_PORT_DRV_LINK_SPEED_40G 0x5
12650#define NVM_CFG1_PORT_DRV_LINK_SPEED_50G 0x6
12651#define NVM_CFG1_PORT_DRV_LINK_SPEED_BB_100G 0x7
12652#define NVM_CFG1_PORT_DRV_LINK_SPEED_SMARTLINQ 0x8
12653#define NVM_CFG1_PORT_DRV_FLOW_CONTROL_MASK 0x00000070
12654#define NVM_CFG1_PORT_DRV_FLOW_CONTROL_OFFSET 4
12655#define NVM_CFG1_PORT_DRV_FLOW_CONTROL_AUTONEG 0x1
12656#define NVM_CFG1_PORT_DRV_FLOW_CONTROL_RX 0x2
12657#define NVM_CFG1_PORT_DRV_FLOW_CONTROL_TX 0x4
12658 u32 phy_cfg;
12659 u32 mgmt_traffic;
Sudarsana Reddy Kalluru645874e2017-07-26 06:07:11 -070012660
Yuval Mintz351a4ded2016-06-02 10:23:29 +030012661 u32 ext_phy;
Sudarsana Reddy Kalluru645874e2017-07-26 06:07:11 -070012662 /* EEE power saving mode */
12663#define NVM_CFG1_PORT_EEE_POWER_SAVING_MODE_MASK 0x00FF0000
12664#define NVM_CFG1_PORT_EEE_POWER_SAVING_MODE_OFFSET 16
12665#define NVM_CFG1_PORT_EEE_POWER_SAVING_MODE_DISABLED 0x0
12666#define NVM_CFG1_PORT_EEE_POWER_SAVING_MODE_BALANCED 0x1
12667#define NVM_CFG1_PORT_EEE_POWER_SAVING_MODE_AGGRESSIVE 0x2
12668#define NVM_CFG1_PORT_EEE_POWER_SAVING_MODE_LOW_LATENCY 0x3
12669
Yuval Mintz351a4ded2016-06-02 10:23:29 +030012670 u32 mba_cfg1;
12671 u32 mba_cfg2;
12672 u32 vf_cfg;
12673 struct nvm_cfg_mac_address lldp_mac_address;
12674 u32 led_port_settings;
12675 u32 transceiver_00;
12676 u32 device_ids;
12677 u32 board_cfg;
12678 u32 mnm_10g_cap;
12679 u32 mnm_10g_ctrl;
12680 u32 mnm_10g_misc;
12681 u32 mnm_25g_cap;
12682 u32 mnm_25g_ctrl;
12683 u32 mnm_25g_misc;
12684 u32 mnm_40g_cap;
12685 u32 mnm_40g_ctrl;
12686 u32 mnm_40g_misc;
12687 u32 mnm_50g_cap;
12688 u32 mnm_50g_ctrl;
12689 u32 mnm_50g_misc;
12690 u32 mnm_100g_cap;
12691 u32 mnm_100g_ctrl;
12692 u32 mnm_100g_misc;
12693 u32 reserved[116];
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020012694};
12695
12696struct nvm_cfg1_func {
Yuval Mintz351a4ded2016-06-02 10:23:29 +030012697 struct nvm_cfg_mac_address mac_address;
12698 u32 rsrv1;
12699 u32 rsrv2;
12700 u32 device_id;
12701 u32 cmn_cfg;
12702 u32 pci_cfg;
12703 struct nvm_cfg_mac_address fcoe_node_wwn_mac_addr;
12704 struct nvm_cfg_mac_address fcoe_port_wwn_mac_addr;
12705 u32 preboot_generic_cfg;
12706 u32 reserved[8];
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020012707};
12708
12709struct nvm_cfg1 {
Yuval Mintz351a4ded2016-06-02 10:23:29 +030012710 struct nvm_cfg1_glob glob;
12711 struct nvm_cfg1_path path[MCP_GLOB_PATH_MAX];
12712 struct nvm_cfg1_port port[MCP_GLOB_PORT_MAX];
12713 struct nvm_cfg1_func func[MCP_GLOB_FUNC_MAX];
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020012714};
Tomer Tayarc965db42016-09-07 16:36:24 +030012715
12716enum spad_sections {
12717 SPAD_SECTION_TRACE,
12718 SPAD_SECTION_NVM_CFG,
12719 SPAD_SECTION_PUBLIC,
12720 SPAD_SECTION_PRIVATE,
12721 SPAD_SECTION_MAX
12722};
12723
12724#define MCP_TRACE_SIZE 2048 /* 2kb */
12725
12726/* This section is located at a fixed location in the beginning of the
12727 * scratchpad, to ensure that the MCP trace is not run over during MFW upgrade.
12728 * All the rest of data has a floating location which differs from version to
12729 * version, and is pointed by the mcp_meta_data below.
12730 * Moreover, the spad_layout section is part of the MFW firmware, and is loaded
12731 * with it from nvram in order to clear this portion.
12732 */
12733struct static_init {
12734 u32 num_sections;
12735 offsize_t sections[SPAD_SECTION_MAX];
12736#define SECTION(_sec_) (*((offsize_t *)(STRUCT_OFFSET(sections[_sec_]))))
12737
12738 struct mcp_trace trace;
12739#define MCP_TRACE_P ((struct mcp_trace *)(STRUCT_OFFSET(trace)))
12740 u8 trace_buffer[MCP_TRACE_SIZE];
12741#define MCP_TRACE_BUF ((u8 *)(STRUCT_OFFSET(trace_buffer)))
12742 /* running_mfw has the same definition as in nvm_map.h.
12743 * This bit indicate both the running dir, and the running bundle.
12744 * It is set once when the LIM is loaded.
12745 */
12746 u32 running_mfw;
12747#define RUNNING_MFW (*((u32 *)(STRUCT_OFFSET(running_mfw))))
12748 u32 build_time;
12749#define MFW_BUILD_TIME (*((u32 *)(STRUCT_OFFSET(build_time))))
12750 u32 reset_type;
12751#define RESET_TYPE (*((u32 *)(STRUCT_OFFSET(reset_type))))
12752 u32 mfw_secure_mode;
12753#define MFW_SECURE_MODE (*((u32 *)(STRUCT_OFFSET(mfw_secure_mode))))
12754 u16 pme_status_pf_bitmap;
12755#define PME_STATUS_PF_BITMAP (*((u16 *)(STRUCT_OFFSET(pme_status_pf_bitmap))))
12756 u16 pme_enable_pf_bitmap;
12757#define PME_ENABLE_PF_BITMAP (*((u16 *)(STRUCT_OFFSET(pme_enable_pf_bitmap))))
12758 u32 mim_nvm_addr;
12759 u32 mim_start_addr;
12760 u32 ah_pcie_link_params;
12761#define AH_PCIE_LINK_PARAMS_LINK_SPEED_MASK (0x000000ff)
12762#define AH_PCIE_LINK_PARAMS_LINK_SPEED_SHIFT (0)
12763#define AH_PCIE_LINK_PARAMS_LINK_WIDTH_MASK (0x0000ff00)
12764#define AH_PCIE_LINK_PARAMS_LINK_WIDTH_SHIFT (8)
12765#define AH_PCIE_LINK_PARAMS_ASPM_MODE_MASK (0x00ff0000)
12766#define AH_PCIE_LINK_PARAMS_ASPM_MODE_SHIFT (16)
12767#define AH_PCIE_LINK_PARAMS_ASPM_CAP_MASK (0xff000000)
12768#define AH_PCIE_LINK_PARAMS_ASPM_CAP_SHIFT (24)
12769#define AH_PCIE_LINK_PARAMS (*((u32 *)(STRUCT_OFFSET(ah_pcie_link_params))))
12770
12771 u32 rsrv_persist[5]; /* Persist reserved for MFW upgrades */
12772};
12773
Mintz, Yuval7b6859f2017-05-18 19:41:04 +030012774#define NVM_MAGIC_VALUE 0x669955aa
12775
Tomer Tayarc965db42016-09-07 16:36:24 +030012776enum nvm_image_type {
12777 NVM_TYPE_TIM1 = 0x01,
12778 NVM_TYPE_TIM2 = 0x02,
12779 NVM_TYPE_MIM1 = 0x03,
12780 NVM_TYPE_MIM2 = 0x04,
12781 NVM_TYPE_MBA = 0x05,
12782 NVM_TYPE_MODULES_PN = 0x06,
12783 NVM_TYPE_VPD = 0x07,
12784 NVM_TYPE_MFW_TRACE1 = 0x08,
12785 NVM_TYPE_MFW_TRACE2 = 0x09,
12786 NVM_TYPE_NVM_CFG1 = 0x0a,
12787 NVM_TYPE_L2B = 0x0b,
12788 NVM_TYPE_DIR1 = 0x0c,
12789 NVM_TYPE_EAGLE_FW1 = 0x0d,
12790 NVM_TYPE_FALCON_FW1 = 0x0e,
12791 NVM_TYPE_PCIE_FW1 = 0x0f,
12792 NVM_TYPE_HW_SET = 0x10,
12793 NVM_TYPE_LIM = 0x11,
12794 NVM_TYPE_AVS_FW1 = 0x12,
12795 NVM_TYPE_DIR2 = 0x13,
12796 NVM_TYPE_CCM = 0x14,
12797 NVM_TYPE_EAGLE_FW2 = 0x15,
12798 NVM_TYPE_FALCON_FW2 = 0x16,
12799 NVM_TYPE_PCIE_FW2 = 0x17,
12800 NVM_TYPE_AVS_FW2 = 0x18,
12801 NVM_TYPE_INIT_HW = 0x19,
12802 NVM_TYPE_DEFAULT_CFG = 0x1a,
12803 NVM_TYPE_MDUMP = 0x1b,
12804 NVM_TYPE_META = 0x1c,
12805 NVM_TYPE_ISCSI_CFG = 0x1d,
12806 NVM_TYPE_FCOE_CFG = 0x1f,
12807 NVM_TYPE_ETH_PHY_FW1 = 0x20,
12808 NVM_TYPE_ETH_PHY_FW2 = 0x21,
12809 NVM_TYPE_MAX,
12810};
12811
12812#define DIR_ID_1 (0)
12813
Yuval Mintzfe56b9e2015-10-26 11:02:25 +020012814#endif