Merge branch 'rtnetlink-add-IFA_TARGET_NETNSID-for-RTM_GETADDR'
[linux-block.git] / include / linux / qed / iscsi_common.h
CommitLineData
7a9b6b8f 1/* QLogic qed NIC Driver
e8f1cb50 2 * Copyright (c) 2015-2017 QLogic Corporation
7a9b6b8f 3 *
e8f1cb50
MY
4 * This software is available to you under a choice of one of two
5 * licenses. You may choose to be licensed under the terms of the GNU
6 * General Public License (GPL) Version 2, available from the file
7 * COPYING in the main directory of this source tree, or the
8 * OpenIB.org BSD license below:
9 *
10 * Redistribution and use in source and binary forms, with or
11 * without modification, are permitted provided that the following
12 * conditions are met:
13 *
14 * - Redistributions of source code must retain the above
15 * copyright notice, this list of conditions and the following
16 * disclaimer.
17 *
18 * - Redistributions in binary form must reproduce the above
19 * copyright notice, this list of conditions and the following
20 * disclaimer in the documentation and /or other materials
21 * provided with the distribution.
22 *
23 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
24 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
25 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
26 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
27 * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
28 * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
29 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
30 * SOFTWARE.
7a9b6b8f
YM
31 */
32
33#ifndef __ISCSI_COMMON__
34#define __ISCSI_COMMON__
a2e7699e 35
7a9b6b8f
YM
36/**********************/
37/* ISCSI FW CONSTANTS */
38/**********************/
39
40/* iSCSI HSI constants */
a2e7699e 41#define ISCSI_DEFAULT_MTU (1500)
7a9b6b8f 42
7a9b6b8f 43/* KWQ (kernel work queue) layer codes */
a2e7699e 44#define ISCSI_SLOW_PATH_LAYER_CODE (6)
7a9b6b8f 45
7a9b6b8f 46/* iSCSI parameter defaults */
a2e7699e
TT
47#define ISCSI_DEFAULT_HEADER_DIGEST (0)
48#define ISCSI_DEFAULT_DATA_DIGEST (0)
49#define ISCSI_DEFAULT_INITIAL_R2T (1)
50#define ISCSI_DEFAULT_IMMEDIATE_DATA (1)
51#define ISCSI_DEFAULT_MAX_PDU_LENGTH (0x2000)
52#define ISCSI_DEFAULT_FIRST_BURST_LENGTH (0x10000)
53#define ISCSI_DEFAULT_MAX_BURST_LENGTH (0x40000)
54#define ISCSI_DEFAULT_MAX_OUTSTANDING_R2T (1)
7a9b6b8f
YM
55
56/* iSCSI parameter limits */
a2e7699e
TT
57#define ISCSI_MIN_VAL_MAX_PDU_LENGTH (0x200)
58#define ISCSI_MAX_VAL_MAX_PDU_LENGTH (0xffffff)
59#define ISCSI_MIN_VAL_BURST_LENGTH (0x200)
60#define ISCSI_MAX_VAL_BURST_LENGTH (0xffffff)
61#define ISCSI_MIN_VAL_MAX_OUTSTANDING_R2T (1)
62#define ISCSI_MAX_VAL_MAX_OUTSTANDING_R2T (0xff)
7a9b6b8f 63
a2e7699e 64#define ISCSI_AHS_CNTL_SIZE 4
be086e7c 65
a2e7699e 66#define ISCSI_WQE_NUM_SGES_SLOWIO (0xf)
be086e7c 67
7a9b6b8f
YM
68/* iSCSI reserved params */
69#define ISCSI_ITT_ALL_ONES (0xffffffff)
70#define ISCSI_TTT_ALL_ONES (0xffffffff)
71
a2e7699e
TT
72#define ISCSI_OPTION_1_OFF_CHIP_TCP 1
73#define ISCSI_OPTION_2_ON_CHIP_TCP 2
7a9b6b8f 74
a2e7699e
TT
75#define ISCSI_INITIATOR_MODE 0
76#define ISCSI_TARGET_MODE 1
7a9b6b8f
YM
77
78/* iSCSI request op codes */
7b6859fb
MY
79#define ISCSI_OPCODE_NOP_OUT (0)
80#define ISCSI_OPCODE_SCSI_CMD (1)
81#define ISCSI_OPCODE_TMF_REQUEST (2)
82#define ISCSI_OPCODE_LOGIN_REQUEST (3)
83#define ISCSI_OPCODE_TEXT_REQUEST (4)
84#define ISCSI_OPCODE_DATA_OUT (5)
85#define ISCSI_OPCODE_LOGOUT_REQUEST (6)
7a9b6b8f
YM
86
87/* iSCSI response/messages op codes */
a2e7699e
TT
88#define ISCSI_OPCODE_NOP_IN (0x20)
89#define ISCSI_OPCODE_SCSI_RESPONSE (0x21)
90#define ISCSI_OPCODE_TMF_RESPONSE (0x22)
91#define ISCSI_OPCODE_LOGIN_RESPONSE (0x23)
92#define ISCSI_OPCODE_TEXT_RESPONSE (0x24)
93#define ISCSI_OPCODE_DATA_IN (0x25)
94#define ISCSI_OPCODE_LOGOUT_RESPONSE (0x26)
95#define ISCSI_OPCODE_R2T (0x31)
96#define ISCSI_OPCODE_ASYNC_MSG (0x32)
97#define ISCSI_OPCODE_REJECT (0x3f)
7a9b6b8f
YM
98
99/* iSCSI stages */
a2e7699e
TT
100#define ISCSI_STAGE_SECURITY_NEGOTIATION (0)
101#define ISCSI_STAGE_LOGIN_OPERATIONAL_NEGOTIATION (1)
102#define ISCSI_STAGE_FULL_FEATURE_PHASE (3)
7a9b6b8f
YM
103
104/* iSCSI CQE errors */
a2e7699e
TT
105#define CQE_ERROR_BITMAP_DATA_DIGEST (0x08)
106#define CQE_ERROR_BITMAP_RCV_ON_INVALID_CONN (0x10)
107#define CQE_ERROR_BITMAP_DATA_TRUNCATED (0x20)
7a9b6b8f 108
da090917
TT
109/* Union of data bd_opaque/ tq_tid */
110union bd_opaque_tq_union {
111 __le16 bd_opaque;
112 __le16 tq_tid;
113};
114
a2e7699e 115/* ISCSI SGL entry */
7a9b6b8f
YM
116struct cqe_error_bitmap {
117 u8 cqe_error_status_bits;
a2e7699e
TT
118#define CQE_ERROR_BITMAP_DIF_ERR_BITS_MASK 0x7
119#define CQE_ERROR_BITMAP_DIF_ERR_BITS_SHIFT 0
120#define CQE_ERROR_BITMAP_DATA_DIGEST_ERR_MASK 0x1
121#define CQE_ERROR_BITMAP_DATA_DIGEST_ERR_SHIFT 3
122#define CQE_ERROR_BITMAP_RCV_ON_INVALID_CONN_MASK 0x1
123#define CQE_ERROR_BITMAP_RCV_ON_INVALID_CONN_SHIFT 4
124#define CQE_ERROR_BITMAP_DATA_TRUNCATED_ERR_MASK 0x1
125#define CQE_ERROR_BITMAP_DATA_TRUNCATED_ERR_SHIFT 5
126#define CQE_ERROR_BITMAP_UNDER_RUN_ERR_MASK 0x1
127#define CQE_ERROR_BITMAP_UNDER_RUN_ERR_SHIFT 6
128#define CQE_ERROR_BITMAP_RESERVED2_MASK 0x1
129#define CQE_ERROR_BITMAP_RESERVED2_SHIFT 7
7a9b6b8f
YM
130};
131
132union cqe_error_status {
133 u8 error_status;
134 struct cqe_error_bitmap error_bits;
135};
136
a2e7699e 137/* iSCSI Login Response PDU header */
7a9b6b8f
YM
138struct data_hdr {
139 __le32 data[12];
140};
141
da090917
TT
142struct lun_mapper_addr_reserved {
143 struct regpair lun_mapper_addr;
144 u8 reserved0[8];
145};
146
147/* rdif conetxt for dif on immediate */
148struct dif_on_immediate_params {
149 __le32 initial_ref_tag;
150 __le16 application_tag;
151 __le16 application_tag_mask;
152 __le16 flags1;
153#define DIF_ON_IMMEDIATE_PARAMS_VALIDATE_GUARD_MASK 0x1
154#define DIF_ON_IMMEDIATE_PARAMS_VALIDATE_GUARD_SHIFT 0
155#define DIF_ON_IMMEDIATE_PARAMS_VALIDATE_APP_TAG_MASK 0x1
156#define DIF_ON_IMMEDIATE_PARAMS_VALIDATE_APP_TAG_SHIFT 1
157#define DIF_ON_IMMEDIATE_PARAMS_VALIDATE_REF_TAG_MASK 0x1
158#define DIF_ON_IMMEDIATE_PARAMS_VALIDATE_REF_TAG_SHIFT 2
159#define DIF_ON_IMMEDIATE_PARAMS_FORWARD_GUARD_MASK 0x1
160#define DIF_ON_IMMEDIATE_PARAMS_FORWARD_GUARD_SHIFT 3
161#define DIF_ON_IMMEDIATE_PARAMS_FORWARD_APP_TAG_MASK 0x1
162#define DIF_ON_IMMEDIATE_PARAMS_FORWARD_APP_TAG_SHIFT 4
163#define DIF_ON_IMMEDIATE_PARAMS_FORWARD_REF_TAG_MASK 0x1
164#define DIF_ON_IMMEDIATE_PARAMS_FORWARD_REF_TAG_SHIFT 5
165#define DIF_ON_IMMEDIATE_PARAMS_INTERVAL_SIZE_MASK 0x1
166#define DIF_ON_IMMEDIATE_PARAMS_INTERVAL_SIZE_SHIFT 6
167#define DIF_ON_IMMEDIATE_PARAMS_NETWORK_INTERFACE_MASK 0x1
168#define DIF_ON_IMMEDIATE_PARAMS_NETWORK_INTERFACE_SHIFT 7
169#define DIF_ON_IMMEDIATE_PARAMS_HOST_INTERFACE_MASK 0x3
170#define DIF_ON_IMMEDIATE_PARAMS_HOST_INTERFACE_SHIFT 8
171#define DIF_ON_IMMEDIATE_PARAMS_REF_TAG_MASK_MASK 0xF
172#define DIF_ON_IMMEDIATE_PARAMS_REF_TAG_MASK_SHIFT 10
173#define DIF_ON_IMMEDIATE_PARAMS_FORWARD_APP_TAG_WITH_MASK_MASK 0x1
174#define DIF_ON_IMMEDIATE_PARAMS_FORWARD_APP_TAG_WITH_MASK_SHIFT 14
175#define DIF_ON_IMMEDIATE_PARAMS_FORWARD_REF_TAG_WITH_MASK_MASK 0x1
176#define DIF_ON_IMMEDIATE_PARAMS_FORWARD_REF_TAG_WITH_MASK_SHIFT 15
177 u8 flags0;
178#define DIF_ON_IMMEDIATE_PARAMS_RESERVED_MASK 0x1
179#define DIF_ON_IMMEDIATE_PARAMS_RESERVED_SHIFT 0
180#define DIF_ON_IMMEDIATE_PARAMS_IGNORE_APP_TAG_MASK 0x1
181#define DIF_ON_IMMEDIATE_PARAMS_IGNORE_APP_TAG_SHIFT 1
182#define DIF_ON_IMMEDIATE_PARAMS_INITIAL_REF_TAG_IS_VALID_MASK 0x1
183#define DIF_ON_IMMEDIATE_PARAMS_INITIAL_REF_TAG_IS_VALID_SHIFT 2
184#define DIF_ON_IMMEDIATE_PARAMS_HOST_GUARD_TYPE_MASK 0x1
185#define DIF_ON_IMMEDIATE_PARAMS_HOST_GUARD_TYPE_SHIFT 3
186#define DIF_ON_IMMEDIATE_PARAMS_PROTECTION_TYPE_MASK 0x3
187#define DIF_ON_IMMEDIATE_PARAMS_PROTECTION_TYPE_SHIFT 4
188#define DIF_ON_IMMEDIATE_PARAMS_CRC_SEED_MASK 0x1
189#define DIF_ON_IMMEDIATE_PARAMS_CRC_SEED_SHIFT 6
190#define DIF_ON_IMMEDIATE_PARAMS_KEEP_REF_TAG_CONST_MASK 0x1
191#define DIF_ON_IMMEDIATE_PARAMS_KEEP_REF_TAG_CONST_SHIFT 7
192 u8 reserved_zero[5];
193};
194
195/* iSCSI dif on immediate mode attributes union */
196union dif_configuration_params {
197 struct lun_mapper_addr_reserved lun_mapper_address;
198 struct dif_on_immediate_params def_dif_conf;
199};
200
a2e7699e
TT
201/* Union of data/r2t sequence number */
202union iscsi_seq_num {
203 __le16 data_sn;
204 __le16 r2t_sn;
7a9b6b8f
YM
205};
206
a2e7699e
TT
207/* iSCSI DIF flags */
208struct iscsi_dif_flags {
209 u8 flags;
210#define ISCSI_DIF_FLAGS_PROT_INTERVAL_SIZE_LOG_MASK 0xF
211#define ISCSI_DIF_FLAGS_PROT_INTERVAL_SIZE_LOG_SHIFT 0
212#define ISCSI_DIF_FLAGS_DIF_TO_PEER_MASK 0x1
213#define ISCSI_DIF_FLAGS_DIF_TO_PEER_SHIFT 4
214#define ISCSI_DIF_FLAGS_HOST_INTERFACE_MASK 0x7
215#define ISCSI_DIF_FLAGS_HOST_INTERFACE_SHIFT 5
7a9b6b8f
YM
216};
217
a2e7699e
TT
218/* The iscsi storm task context of Ystorm */
219struct ystorm_iscsi_task_state {
220 struct scsi_cached_sges data_desc;
221 struct scsi_sgl_params sgl_params;
222 __le32 exp_r2t_sn;
223 __le32 buffer_offset;
224 union iscsi_seq_num seq_num;
225 struct iscsi_dif_flags dif_flags;
226 u8 flags;
227#define YSTORM_ISCSI_TASK_STATE_LOCAL_COMP_MASK 0x1
228#define YSTORM_ISCSI_TASK_STATE_LOCAL_COMP_SHIFT 0
229#define YSTORM_ISCSI_TASK_STATE_SLOW_IO_MASK 0x1
230#define YSTORM_ISCSI_TASK_STATE_SLOW_IO_SHIFT 1
da090917
TT
231#define YSTORM_ISCSI_TASK_STATE_SET_DIF_OFFSET_MASK 0x1
232#define YSTORM_ISCSI_TASK_STATE_SET_DIF_OFFSET_SHIFT 2
233#define YSTORM_ISCSI_TASK_STATE_RESERVED0_MASK 0x1F
234#define YSTORM_ISCSI_TASK_STATE_RESERVED0_SHIFT 3
a2e7699e
TT
235};
236
237/* The iscsi storm task context of Ystorm */
238struct ystorm_iscsi_task_rxmit_opt {
239 __le32 fast_rxmit_sge_offset;
240 __le32 scan_start_buffer_offset;
241 __le32 fast_rxmit_buffer_offset;
242 u8 scan_start_sgl_index;
243 u8 fast_rxmit_sgl_index;
244 __le16 reserved;
245};
246
247/* iSCSI Common PDU header */
7a9b6b8f
YM
248struct iscsi_common_hdr {
249 u8 hdr_status;
250 u8 hdr_response;
251 u8 hdr_flags;
252 u8 hdr_first_byte;
a2e7699e
TT
253#define ISCSI_COMMON_HDR_OPCODE_MASK 0x3F
254#define ISCSI_COMMON_HDR_OPCODE_SHIFT 0
255#define ISCSI_COMMON_HDR_IMM_MASK 0x1
256#define ISCSI_COMMON_HDR_IMM_SHIFT 6
257#define ISCSI_COMMON_HDR_RSRV_MASK 0x1
258#define ISCSI_COMMON_HDR_RSRV_SHIFT 7
7a9b6b8f 259 __le32 hdr_second_dword;
a2e7699e
TT
260#define ISCSI_COMMON_HDR_DATA_SEG_LEN_MASK 0xFFFFFF
261#define ISCSI_COMMON_HDR_DATA_SEG_LEN_SHIFT 0
262#define ISCSI_COMMON_HDR_TOTAL_AHS_LEN_MASK 0xFF
263#define ISCSI_COMMON_HDR_TOTAL_AHS_LEN_SHIFT 24
be086e7c
MY
264 struct regpair lun_reserved;
265 __le32 itt;
266 __le32 ttt;
267 __le32 cmdstat_sn;
268 __le32 exp_statcmd_sn;
269 __le32 max_cmd_sn;
270 __le32 data[3];
7a9b6b8f
YM
271};
272
a2e7699e
TT
273/* iSCSI Command PDU header */
274struct iscsi_cmd_hdr {
275 __le16 reserved1;
276 u8 flags_attr;
277#define ISCSI_CMD_HDR_ATTR_MASK 0x7
278#define ISCSI_CMD_HDR_ATTR_SHIFT 0
279#define ISCSI_CMD_HDR_RSRV_MASK 0x3
280#define ISCSI_CMD_HDR_RSRV_SHIFT 3
281#define ISCSI_CMD_HDR_WRITE_MASK 0x1
282#define ISCSI_CMD_HDR_WRITE_SHIFT 5
283#define ISCSI_CMD_HDR_READ_MASK 0x1
284#define ISCSI_CMD_HDR_READ_SHIFT 6
285#define ISCSI_CMD_HDR_FINAL_MASK 0x1
286#define ISCSI_CMD_HDR_FINAL_SHIFT 7
287 u8 hdr_first_byte;
288#define ISCSI_CMD_HDR_OPCODE_MASK 0x3F
289#define ISCSI_CMD_HDR_OPCODE_SHIFT 0
290#define ISCSI_CMD_HDR_IMM_MASK 0x1
291#define ISCSI_CMD_HDR_IMM_SHIFT 6
292#define ISCSI_CMD_HDR_RSRV1_MASK 0x1
293#define ISCSI_CMD_HDR_RSRV1_SHIFT 7
294 __le32 hdr_second_dword;
295#define ISCSI_CMD_HDR_DATA_SEG_LEN_MASK 0xFFFFFF
296#define ISCSI_CMD_HDR_DATA_SEG_LEN_SHIFT 0
297#define ISCSI_CMD_HDR_TOTAL_AHS_LEN_MASK 0xFF
298#define ISCSI_CMD_HDR_TOTAL_AHS_LEN_SHIFT 24
299 struct regpair lun;
300 __le32 itt;
301 __le32 expected_transfer_length;
302 __le32 cmd_sn;
7a9b6b8f 303 __le32 exp_stat_sn;
a2e7699e 304 __le32 cdb[4];
7a9b6b8f
YM
305};
306
a2e7699e 307/* iSCSI Command PDU header with Extended CDB (Initiator Mode) */
7a9b6b8f
YM
308struct iscsi_ext_cdb_cmd_hdr {
309 __le16 reserved1;
310 u8 flags_attr;
a2e7699e
TT
311#define ISCSI_EXT_CDB_CMD_HDR_ATTR_MASK 0x7
312#define ISCSI_EXT_CDB_CMD_HDR_ATTR_SHIFT 0
313#define ISCSI_EXT_CDB_CMD_HDR_RSRV_MASK 0x3
314#define ISCSI_EXT_CDB_CMD_HDR_RSRV_SHIFT 3
315#define ISCSI_EXT_CDB_CMD_HDR_WRITE_MASK 0x1
316#define ISCSI_EXT_CDB_CMD_HDR_WRITE_SHIFT 5
317#define ISCSI_EXT_CDB_CMD_HDR_READ_MASK 0x1
318#define ISCSI_EXT_CDB_CMD_HDR_READ_SHIFT 6
319#define ISCSI_EXT_CDB_CMD_HDR_FINAL_MASK 0x1
320#define ISCSI_EXT_CDB_CMD_HDR_FINAL_SHIFT 7
7a9b6b8f
YM
321 u8 opcode;
322 __le32 hdr_second_dword;
a2e7699e
TT
323#define ISCSI_EXT_CDB_CMD_HDR_DATA_SEG_LEN_MASK 0xFFFFFF
324#define ISCSI_EXT_CDB_CMD_HDR_DATA_SEG_LEN_SHIFT 0
325#define ISCSI_EXT_CDB_CMD_HDR_CDB_SIZE_MASK 0xFF
326#define ISCSI_EXT_CDB_CMD_HDR_CDB_SIZE_SHIFT 24
7a9b6b8f
YM
327 struct regpair lun;
328 __le32 itt;
329 __le32 expected_transfer_length;
330 __le32 cmd_sn;
331 __le32 exp_stat_sn;
be086e7c 332 struct scsi_sge cdb_sge;
7a9b6b8f
YM
333};
334
a2e7699e 335/* iSCSI login request PDU header */
7a9b6b8f
YM
336struct iscsi_login_req_hdr {
337 u8 version_min;
338 u8 version_max;
339 u8 flags_attr;
a2e7699e
TT
340#define ISCSI_LOGIN_REQ_HDR_NSG_MASK 0x3
341#define ISCSI_LOGIN_REQ_HDR_NSG_SHIFT 0
342#define ISCSI_LOGIN_REQ_HDR_CSG_MASK 0x3
343#define ISCSI_LOGIN_REQ_HDR_CSG_SHIFT 2
344#define ISCSI_LOGIN_REQ_HDR_RSRV_MASK 0x3
345#define ISCSI_LOGIN_REQ_HDR_RSRV_SHIFT 4
346#define ISCSI_LOGIN_REQ_HDR_C_MASK 0x1
347#define ISCSI_LOGIN_REQ_HDR_C_SHIFT 6
348#define ISCSI_LOGIN_REQ_HDR_T_MASK 0x1
349#define ISCSI_LOGIN_REQ_HDR_T_SHIFT 7
7a9b6b8f
YM
350 u8 opcode;
351 __le32 hdr_second_dword;
a2e7699e
TT
352#define ISCSI_LOGIN_REQ_HDR_DATA_SEG_LEN_MASK 0xFFFFFF
353#define ISCSI_LOGIN_REQ_HDR_DATA_SEG_LEN_SHIFT 0
354#define ISCSI_LOGIN_REQ_HDR_TOTAL_AHS_LEN_MASK 0xFF
355#define ISCSI_LOGIN_REQ_HDR_TOTAL_AHS_LEN_SHIFT 24
05fafbfb 356 __le32 isid_tabc;
7a9b6b8f
YM
357 __le16 tsih;
358 __le16 isid_d;
359 __le32 itt;
360 __le16 reserved1;
361 __le16 cid;
362 __le32 cmd_sn;
363 __le32 exp_stat_sn;
364 __le32 reserved2[4];
365};
366
a2e7699e 367/* iSCSI logout request PDU header */
7a9b6b8f
YM
368struct iscsi_logout_req_hdr {
369 __le16 reserved0;
370 u8 reason_code;
371 u8 opcode;
372 __le32 reserved1;
373 __le32 reserved2[2];
374 __le32 itt;
375 __le16 reserved3;
376 __le16 cid;
377 __le32 cmd_sn;
378 __le32 exp_stat_sn;
379 __le32 reserved4[4];
380};
381
a2e7699e 382/* iSCSI Data-out PDU header */
7a9b6b8f
YM
383struct iscsi_data_out_hdr {
384 __le16 reserved1;
385 u8 flags_attr;
a2e7699e
TT
386#define ISCSI_DATA_OUT_HDR_RSRV_MASK 0x7F
387#define ISCSI_DATA_OUT_HDR_RSRV_SHIFT 0
388#define ISCSI_DATA_OUT_HDR_FINAL_MASK 0x1
389#define ISCSI_DATA_OUT_HDR_FINAL_SHIFT 7
7a9b6b8f
YM
390 u8 opcode;
391 __le32 reserved2;
392 struct regpair lun;
393 __le32 itt;
394 __le32 ttt;
395 __le32 reserved3;
396 __le32 exp_stat_sn;
397 __le32 reserved4;
398 __le32 data_sn;
399 __le32 buffer_offset;
400 __le32 reserved5;
401};
402
a2e7699e 403/* iSCSI Data-in PDU header */
7a9b6b8f
YM
404struct iscsi_data_in_hdr {
405 u8 status_rsvd;
406 u8 reserved1;
407 u8 flags;
a2e7699e
TT
408#define ISCSI_DATA_IN_HDR_STATUS_MASK 0x1
409#define ISCSI_DATA_IN_HDR_STATUS_SHIFT 0
410#define ISCSI_DATA_IN_HDR_UNDERFLOW_MASK 0x1
411#define ISCSI_DATA_IN_HDR_UNDERFLOW_SHIFT 1
412#define ISCSI_DATA_IN_HDR_OVERFLOW_MASK 0x1
413#define ISCSI_DATA_IN_HDR_OVERFLOW_SHIFT 2
414#define ISCSI_DATA_IN_HDR_RSRV_MASK 0x7
415#define ISCSI_DATA_IN_HDR_RSRV_SHIFT 3
416#define ISCSI_DATA_IN_HDR_ACK_MASK 0x1
417#define ISCSI_DATA_IN_HDR_ACK_SHIFT 6
418#define ISCSI_DATA_IN_HDR_FINAL_MASK 0x1
419#define ISCSI_DATA_IN_HDR_FINAL_SHIFT 7
7a9b6b8f
YM
420 u8 opcode;
421 __le32 reserved2;
422 struct regpair lun;
423 __le32 itt;
424 __le32 ttt;
425 __le32 stat_sn;
426 __le32 exp_cmd_sn;
427 __le32 max_cmd_sn;
428 __le32 data_sn;
429 __le32 buffer_offset;
430 __le32 residual_count;
431};
432
a2e7699e 433/* iSCSI R2T PDU header */
7a9b6b8f
YM
434struct iscsi_r2t_hdr {
435 u8 reserved0[3];
436 u8 opcode;
437 __le32 reserved2;
438 struct regpair lun;
439 __le32 itt;
440 __le32 ttt;
441 __le32 stat_sn;
442 __le32 exp_cmd_sn;
443 __le32 max_cmd_sn;
444 __le32 r2t_sn;
445 __le32 buffer_offset;
446 __le32 desired_data_trns_len;
447};
448
a2e7699e 449/* iSCSI NOP-out PDU header */
7a9b6b8f
YM
450struct iscsi_nop_out_hdr {
451 __le16 reserved1;
452 u8 flags_attr;
a2e7699e
TT
453#define ISCSI_NOP_OUT_HDR_RSRV_MASK 0x7F
454#define ISCSI_NOP_OUT_HDR_RSRV_SHIFT 0
455#define ISCSI_NOP_OUT_HDR_CONST1_MASK 0x1
456#define ISCSI_NOP_OUT_HDR_CONST1_SHIFT 7
7a9b6b8f
YM
457 u8 opcode;
458 __le32 reserved2;
459 struct regpair lun;
460 __le32 itt;
461 __le32 ttt;
462 __le32 cmd_sn;
463 __le32 exp_stat_sn;
464 __le32 reserved3;
465 __le32 reserved4;
466 __le32 reserved5;
467 __le32 reserved6;
468};
469
a2e7699e 470/* iSCSI NOP-in PDU header */
7a9b6b8f
YM
471struct iscsi_nop_in_hdr {
472 __le16 reserved0;
473 u8 flags_attr;
a2e7699e
TT
474#define ISCSI_NOP_IN_HDR_RSRV_MASK 0x7F
475#define ISCSI_NOP_IN_HDR_RSRV_SHIFT 0
476#define ISCSI_NOP_IN_HDR_CONST1_MASK 0x1
477#define ISCSI_NOP_IN_HDR_CONST1_SHIFT 7
7a9b6b8f
YM
478 u8 opcode;
479 __le32 hdr_second_dword;
a2e7699e
TT
480#define ISCSI_NOP_IN_HDR_DATA_SEG_LEN_MASK 0xFFFFFF
481#define ISCSI_NOP_IN_HDR_DATA_SEG_LEN_SHIFT 0
482#define ISCSI_NOP_IN_HDR_TOTAL_AHS_LEN_MASK 0xFF
483#define ISCSI_NOP_IN_HDR_TOTAL_AHS_LEN_SHIFT 24
7a9b6b8f
YM
484 struct regpair lun;
485 __le32 itt;
486 __le32 ttt;
487 __le32 stat_sn;
488 __le32 exp_cmd_sn;
489 __le32 max_cmd_sn;
490 __le32 reserved5;
491 __le32 reserved6;
492 __le32 reserved7;
493};
494
a2e7699e 495/* iSCSI Login Response PDU header */
7a9b6b8f
YM
496struct iscsi_login_response_hdr {
497 u8 version_active;
498 u8 version_max;
499 u8 flags_attr;
a2e7699e
TT
500#define ISCSI_LOGIN_RESPONSE_HDR_NSG_MASK 0x3
501#define ISCSI_LOGIN_RESPONSE_HDR_NSG_SHIFT 0
502#define ISCSI_LOGIN_RESPONSE_HDR_CSG_MASK 0x3
503#define ISCSI_LOGIN_RESPONSE_HDR_CSG_SHIFT 2
504#define ISCSI_LOGIN_RESPONSE_HDR_RSRV_MASK 0x3
505#define ISCSI_LOGIN_RESPONSE_HDR_RSRV_SHIFT 4
506#define ISCSI_LOGIN_RESPONSE_HDR_C_MASK 0x1
507#define ISCSI_LOGIN_RESPONSE_HDR_C_SHIFT 6
508#define ISCSI_LOGIN_RESPONSE_HDR_T_MASK 0x1
509#define ISCSI_LOGIN_RESPONSE_HDR_T_SHIFT 7
7a9b6b8f
YM
510 u8 opcode;
511 __le32 hdr_second_dword;
a2e7699e
TT
512#define ISCSI_LOGIN_RESPONSE_HDR_DATA_SEG_LEN_MASK 0xFFFFFF
513#define ISCSI_LOGIN_RESPONSE_HDR_DATA_SEG_LEN_SHIFT 0
514#define ISCSI_LOGIN_RESPONSE_HDR_TOTAL_AHS_LEN_MASK 0xFF
515#define ISCSI_LOGIN_RESPONSE_HDR_TOTAL_AHS_LEN_SHIFT 24
05fafbfb 516 __le32 isid_tabc;
7a9b6b8f
YM
517 __le16 tsih;
518 __le16 isid_d;
519 __le32 itt;
520 __le32 reserved1;
521 __le32 stat_sn;
522 __le32 exp_cmd_sn;
523 __le32 max_cmd_sn;
524 __le16 reserved2;
525 u8 status_detail;
526 u8 status_class;
527 __le32 reserved4[2];
528};
529
a2e7699e 530/* iSCSI Logout Response PDU header */
7a9b6b8f
YM
531struct iscsi_logout_response_hdr {
532 u8 reserved1;
533 u8 response;
534 u8 flags;
535 u8 opcode;
536 __le32 hdr_second_dword;
a2e7699e
TT
537#define ISCSI_LOGOUT_RESPONSE_HDR_DATA_SEG_LEN_MASK 0xFFFFFF
538#define ISCSI_LOGOUT_RESPONSE_HDR_DATA_SEG_LEN_SHIFT 0
539#define ISCSI_LOGOUT_RESPONSE_HDR_TOTAL_AHS_LEN_MASK 0xFF
540#define ISCSI_LOGOUT_RESPONSE_HDR_TOTAL_AHS_LEN_SHIFT 24
7a9b6b8f
YM
541 __le32 reserved2[2];
542 __le32 itt;
543 __le32 reserved3;
544 __le32 stat_sn;
545 __le32 exp_cmd_sn;
546 __le32 max_cmd_sn;
547 __le32 reserved4;
be086e7c
MY
548 __le16 time_2_retain;
549 __le16 time_2_wait;
7a9b6b8f
YM
550 __le32 reserved5[1];
551};
552
a2e7699e 553/* iSCSI Text Request PDU header */
7a9b6b8f
YM
554struct iscsi_text_request_hdr {
555 __le16 reserved0;
556 u8 flags_attr;
a2e7699e
TT
557#define ISCSI_TEXT_REQUEST_HDR_RSRV_MASK 0x3F
558#define ISCSI_TEXT_REQUEST_HDR_RSRV_SHIFT 0
559#define ISCSI_TEXT_REQUEST_HDR_C_MASK 0x1
560#define ISCSI_TEXT_REQUEST_HDR_C_SHIFT 6
561#define ISCSI_TEXT_REQUEST_HDR_F_MASK 0x1
562#define ISCSI_TEXT_REQUEST_HDR_F_SHIFT 7
7a9b6b8f
YM
563 u8 opcode;
564 __le32 hdr_second_dword;
a2e7699e
TT
565#define ISCSI_TEXT_REQUEST_HDR_DATA_SEG_LEN_MASK 0xFFFFFF
566#define ISCSI_TEXT_REQUEST_HDR_DATA_SEG_LEN_SHIFT 0
567#define ISCSI_TEXT_REQUEST_HDR_TOTAL_AHS_LEN_MASK 0xFF
568#define ISCSI_TEXT_REQUEST_HDR_TOTAL_AHS_LEN_SHIFT 24
7a9b6b8f
YM
569 struct regpair lun;
570 __le32 itt;
571 __le32 ttt;
572 __le32 cmd_sn;
573 __le32 exp_stat_sn;
574 __le32 reserved4[4];
575};
576
a2e7699e 577/* iSCSI Text Response PDU header */
7a9b6b8f
YM
578struct iscsi_text_response_hdr {
579 __le16 reserved1;
580 u8 flags;
a2e7699e
TT
581#define ISCSI_TEXT_RESPONSE_HDR_RSRV_MASK 0x3F
582#define ISCSI_TEXT_RESPONSE_HDR_RSRV_SHIFT 0
583#define ISCSI_TEXT_RESPONSE_HDR_C_MASK 0x1
584#define ISCSI_TEXT_RESPONSE_HDR_C_SHIFT 6
585#define ISCSI_TEXT_RESPONSE_HDR_F_MASK 0x1
586#define ISCSI_TEXT_RESPONSE_HDR_F_SHIFT 7
7a9b6b8f
YM
587 u8 opcode;
588 __le32 hdr_second_dword;
a2e7699e
TT
589#define ISCSI_TEXT_RESPONSE_HDR_DATA_SEG_LEN_MASK 0xFFFFFF
590#define ISCSI_TEXT_RESPONSE_HDR_DATA_SEG_LEN_SHIFT 0
591#define ISCSI_TEXT_RESPONSE_HDR_TOTAL_AHS_LEN_MASK 0xFF
592#define ISCSI_TEXT_RESPONSE_HDR_TOTAL_AHS_LEN_SHIFT 24
7a9b6b8f
YM
593 struct regpair lun;
594 __le32 itt;
595 __le32 ttt;
596 __le32 stat_sn;
597 __le32 exp_cmd_sn;
598 __le32 max_cmd_sn;
599 __le32 reserved4[3];
600};
601
a2e7699e 602/* iSCSI TMF Request PDU header */
7a9b6b8f
YM
603struct iscsi_tmf_request_hdr {
604 __le16 reserved0;
605 u8 function;
606 u8 opcode;
607 __le32 hdr_second_dword;
a2e7699e
TT
608#define ISCSI_TMF_REQUEST_HDR_DATA_SEG_LEN_MASK 0xFFFFFF
609#define ISCSI_TMF_REQUEST_HDR_DATA_SEG_LEN_SHIFT 0
610#define ISCSI_TMF_REQUEST_HDR_TOTAL_AHS_LEN_MASK 0xFF
611#define ISCSI_TMF_REQUEST_HDR_TOTAL_AHS_LEN_SHIFT 24
7a9b6b8f
YM
612 struct regpair lun;
613 __le32 itt;
614 __le32 rtt;
615 __le32 cmd_sn;
616 __le32 exp_stat_sn;
617 __le32 ref_cmd_sn;
618 __le32 exp_data_sn;
619 __le32 reserved4[2];
620};
621
622struct iscsi_tmf_response_hdr {
623 u8 reserved2;
624 u8 hdr_response;
625 u8 hdr_flags;
626 u8 opcode;
627 __le32 hdr_second_dword;
a2e7699e
TT
628#define ISCSI_TMF_RESPONSE_HDR_DATA_SEG_LEN_MASK 0xFFFFFF
629#define ISCSI_TMF_RESPONSE_HDR_DATA_SEG_LEN_SHIFT 0
630#define ISCSI_TMF_RESPONSE_HDR_TOTAL_AHS_LEN_MASK 0xFF
631#define ISCSI_TMF_RESPONSE_HDR_TOTAL_AHS_LEN_SHIFT 24
7a9b6b8f
YM
632 struct regpair reserved0;
633 __le32 itt;
be086e7c 634 __le32 reserved1;
7a9b6b8f
YM
635 __le32 stat_sn;
636 __le32 exp_cmd_sn;
637 __le32 max_cmd_sn;
638 __le32 reserved4[3];
639};
640
a2e7699e 641/* iSCSI Response PDU header */
7a9b6b8f
YM
642struct iscsi_response_hdr {
643 u8 hdr_status;
644 u8 hdr_response;
645 u8 hdr_flags;
646 u8 opcode;
647 __le32 hdr_second_dword;
a2e7699e
TT
648#define ISCSI_RESPONSE_HDR_DATA_SEG_LEN_MASK 0xFFFFFF
649#define ISCSI_RESPONSE_HDR_DATA_SEG_LEN_SHIFT 0
650#define ISCSI_RESPONSE_HDR_TOTAL_AHS_LEN_MASK 0xFF
651#define ISCSI_RESPONSE_HDR_TOTAL_AHS_LEN_SHIFT 24
7a9b6b8f
YM
652 struct regpair lun;
653 __le32 itt;
654 __le32 snack_tag;
655 __le32 stat_sn;
656 __le32 exp_cmd_sn;
657 __le32 max_cmd_sn;
658 __le32 exp_data_sn;
659 __le32 bi_residual_count;
660 __le32 residual_count;
661};
662
a2e7699e 663/* iSCSI Reject PDU header */
7a9b6b8f
YM
664struct iscsi_reject_hdr {
665 u8 reserved4;
666 u8 hdr_reason;
667 u8 hdr_flags;
668 u8 opcode;
669 __le32 hdr_second_dword;
a2e7699e
TT
670#define ISCSI_REJECT_HDR_DATA_SEG_LEN_MASK 0xFFFFFF
671#define ISCSI_REJECT_HDR_DATA_SEG_LEN_SHIFT 0
672#define ISCSI_REJECT_HDR_TOTAL_AHS_LEN_MASK 0xFF
673#define ISCSI_REJECT_HDR_TOTAL_AHS_LEN_SHIFT 24
7a9b6b8f 674 struct regpair reserved0;
be086e7c 675 __le32 all_ones;
7a9b6b8f
YM
676 __le32 reserved2;
677 __le32 stat_sn;
678 __le32 exp_cmd_sn;
679 __le32 max_cmd_sn;
680 __le32 data_sn;
681 __le32 reserved3[2];
682};
683
a2e7699e
TT
684/* iSCSI Asynchronous Message PDU header */
685struct iscsi_async_msg_hdr {
686 __le16 reserved0;
687 u8 flags_attr;
688#define ISCSI_ASYNC_MSG_HDR_RSRV_MASK 0x7F
689#define ISCSI_ASYNC_MSG_HDR_RSRV_SHIFT 0
690#define ISCSI_ASYNC_MSG_HDR_CONST1_MASK 0x1
691#define ISCSI_ASYNC_MSG_HDR_CONST1_SHIFT 7
692 u8 opcode;
693 __le32 hdr_second_dword;
694#define ISCSI_ASYNC_MSG_HDR_DATA_SEG_LEN_MASK 0xFFFFFF
695#define ISCSI_ASYNC_MSG_HDR_DATA_SEG_LEN_SHIFT 0
696#define ISCSI_ASYNC_MSG_HDR_TOTAL_AHS_LEN_MASK 0xFF
697#define ISCSI_ASYNC_MSG_HDR_TOTAL_AHS_LEN_SHIFT 24
698 struct regpair lun;
699 __le32 all_ones;
700 __le32 reserved1;
701 __le32 stat_sn;
702 __le32 exp_cmd_sn;
703 __le32 max_cmd_sn;
704 __le16 param1_rsrv;
705 u8 async_vcode;
706 u8 async_event;
707 __le16 param3_rsrv;
708 __le16 param2_rsrv;
709 __le32 reserved7;
710};
711
712/* PDU header part of Ystorm task context */
7a9b6b8f
YM
713union iscsi_task_hdr {
714 struct iscsi_common_hdr common;
715 struct data_hdr data;
716 struct iscsi_cmd_hdr cmd;
717 struct iscsi_ext_cdb_cmd_hdr ext_cdb_cmd;
718 struct iscsi_login_req_hdr login_req;
719 struct iscsi_logout_req_hdr logout_req;
720 struct iscsi_data_out_hdr data_out;
721 struct iscsi_data_in_hdr data_in;
722 struct iscsi_r2t_hdr r2t;
723 struct iscsi_nop_out_hdr nop_out;
724 struct iscsi_nop_in_hdr nop_in;
725 struct iscsi_login_response_hdr login_response;
726 struct iscsi_logout_response_hdr logout_response;
727 struct iscsi_text_request_hdr text_request;
728 struct iscsi_text_response_hdr text_response;
729 struct iscsi_tmf_request_hdr tmf_request;
730 struct iscsi_tmf_response_hdr tmf_response;
731 struct iscsi_response_hdr response;
732 struct iscsi_reject_hdr reject;
733 struct iscsi_async_msg_hdr async_msg;
734};
735
a2e7699e
TT
736/* The iscsi storm task context of Ystorm */
737struct ystorm_iscsi_task_st_ctx {
738 struct ystorm_iscsi_task_state state;
739 struct ystorm_iscsi_task_rxmit_opt rxmit_opt;
740 union iscsi_task_hdr pdu_hdr;
741};
742
21dd79e8 743struct e4_ystorm_iscsi_task_ag_ctx {
a2e7699e
TT
744 u8 reserved;
745 u8 byte1;
746 __le16 word0;
747 u8 flags0;
21dd79e8
TT
748#define E4_YSTORM_ISCSI_TASK_AG_CTX_NIBBLE0_MASK 0xF
749#define E4_YSTORM_ISCSI_TASK_AG_CTX_NIBBLE0_SHIFT 0
750#define E4_YSTORM_ISCSI_TASK_AG_CTX_BIT0_MASK 0x1
751#define E4_YSTORM_ISCSI_TASK_AG_CTX_BIT0_SHIFT 4
752#define E4_YSTORM_ISCSI_TASK_AG_CTX_BIT1_MASK 0x1
753#define E4_YSTORM_ISCSI_TASK_AG_CTX_BIT1_SHIFT 5
754#define E4_YSTORM_ISCSI_TASK_AG_CTX_VALID_MASK 0x1
755#define E4_YSTORM_ISCSI_TASK_AG_CTX_VALID_SHIFT 6
50bc60cb
MK
756#define E4_YSTORM_ISCSI_TASK_AG_CTX_TTT_VALID_MASK 0x1 /* bit3 */
757#define E4_YSTORM_ISCSI_TASK_AG_CTX_TTT_VALID_SHIFT 7
a2e7699e 758 u8 flags1;
21dd79e8
TT
759#define E4_YSTORM_ISCSI_TASK_AG_CTX_CF0_MASK 0x3
760#define E4_YSTORM_ISCSI_TASK_AG_CTX_CF0_SHIFT 0
761#define E4_YSTORM_ISCSI_TASK_AG_CTX_CF1_MASK 0x3
762#define E4_YSTORM_ISCSI_TASK_AG_CTX_CF1_SHIFT 2
763#define E4_YSTORM_ISCSI_TASK_AG_CTX_CF2SPECIAL_MASK 0x3
764#define E4_YSTORM_ISCSI_TASK_AG_CTX_CF2SPECIAL_SHIFT 4
765#define E4_YSTORM_ISCSI_TASK_AG_CTX_CF0EN_MASK 0x1
766#define E4_YSTORM_ISCSI_TASK_AG_CTX_CF0EN_SHIFT 6
767#define E4_YSTORM_ISCSI_TASK_AG_CTX_CF1EN_MASK 0x1
768#define E4_YSTORM_ISCSI_TASK_AG_CTX_CF1EN_SHIFT 7
a2e7699e 769 u8 flags2;
21dd79e8
TT
770#define E4_YSTORM_ISCSI_TASK_AG_CTX_BIT4_MASK 0x1
771#define E4_YSTORM_ISCSI_TASK_AG_CTX_BIT4_SHIFT 0
772#define E4_YSTORM_ISCSI_TASK_AG_CTX_RULE0EN_MASK 0x1
773#define E4_YSTORM_ISCSI_TASK_AG_CTX_RULE0EN_SHIFT 1
774#define E4_YSTORM_ISCSI_TASK_AG_CTX_RULE1EN_MASK 0x1
775#define E4_YSTORM_ISCSI_TASK_AG_CTX_RULE1EN_SHIFT 2
776#define E4_YSTORM_ISCSI_TASK_AG_CTX_RULE2EN_MASK 0x1
777#define E4_YSTORM_ISCSI_TASK_AG_CTX_RULE2EN_SHIFT 3
778#define E4_YSTORM_ISCSI_TASK_AG_CTX_RULE3EN_MASK 0x1
779#define E4_YSTORM_ISCSI_TASK_AG_CTX_RULE3EN_SHIFT 4
780#define E4_YSTORM_ISCSI_TASK_AG_CTX_RULE4EN_MASK 0x1
781#define E4_YSTORM_ISCSI_TASK_AG_CTX_RULE4EN_SHIFT 5
782#define E4_YSTORM_ISCSI_TASK_AG_CTX_RULE5EN_MASK 0x1
783#define E4_YSTORM_ISCSI_TASK_AG_CTX_RULE5EN_SHIFT 6
784#define E4_YSTORM_ISCSI_TASK_AG_CTX_RULE6EN_MASK 0x1
785#define E4_YSTORM_ISCSI_TASK_AG_CTX_RULE6EN_SHIFT 7
a2e7699e
TT
786 u8 byte2;
787 __le32 TTT;
788 u8 byte3;
789 u8 byte4;
790 __le16 word1;
791};
792
21dd79e8 793struct e4_mstorm_iscsi_task_ag_ctx {
a2e7699e
TT
794 u8 cdu_validation;
795 u8 byte1;
796 __le16 task_cid;
797 u8 flags0;
21dd79e8
TT
798#define E4_MSTORM_ISCSI_TASK_AG_CTX_CONNECTION_TYPE_MASK 0xF
799#define E4_MSTORM_ISCSI_TASK_AG_CTX_CONNECTION_TYPE_SHIFT 0
800#define E4_MSTORM_ISCSI_TASK_AG_CTX_EXIST_IN_QM0_MASK 0x1
801#define E4_MSTORM_ISCSI_TASK_AG_CTX_EXIST_IN_QM0_SHIFT 4
d52c89f1
MK
802#define E4_MSTORM_ISCSI_TASK_AG_CTX_CONN_CLEAR_SQ_FLAG_MASK 0x1
803#define E4_MSTORM_ISCSI_TASK_AG_CTX_CONN_CLEAR_SQ_FLAG_SHIFT 5
21dd79e8
TT
804#define E4_MSTORM_ISCSI_TASK_AG_CTX_VALID_MASK 0x1
805#define E4_MSTORM_ISCSI_TASK_AG_CTX_VALID_SHIFT 6
806#define E4_MSTORM_ISCSI_TASK_AG_CTX_TASK_CLEANUP_FLAG_MASK 0x1
807#define E4_MSTORM_ISCSI_TASK_AG_CTX_TASK_CLEANUP_FLAG_SHIFT 7
a2e7699e 808 u8 flags1;
21dd79e8
TT
809#define E4_MSTORM_ISCSI_TASK_AG_CTX_TASK_CLEANUP_CF_MASK 0x3
810#define E4_MSTORM_ISCSI_TASK_AG_CTX_TASK_CLEANUP_CF_SHIFT 0
811#define E4_MSTORM_ISCSI_TASK_AG_CTX_CF1_MASK 0x3
812#define E4_MSTORM_ISCSI_TASK_AG_CTX_CF1_SHIFT 2
813#define E4_MSTORM_ISCSI_TASK_AG_CTX_CF2_MASK 0x3
814#define E4_MSTORM_ISCSI_TASK_AG_CTX_CF2_SHIFT 4
815#define E4_MSTORM_ISCSI_TASK_AG_CTX_TASK_CLEANUP_CF_EN_MASK 0x1
816#define E4_MSTORM_ISCSI_TASK_AG_CTX_TASK_CLEANUP_CF_EN_SHIFT 6
817#define E4_MSTORM_ISCSI_TASK_AG_CTX_CF1EN_MASK 0x1
818#define E4_MSTORM_ISCSI_TASK_AG_CTX_CF1EN_SHIFT 7
a2e7699e 819 u8 flags2;
21dd79e8
TT
820#define E4_MSTORM_ISCSI_TASK_AG_CTX_CF2EN_MASK 0x1
821#define E4_MSTORM_ISCSI_TASK_AG_CTX_CF2EN_SHIFT 0
822#define E4_MSTORM_ISCSI_TASK_AG_CTX_RULE0EN_MASK 0x1
823#define E4_MSTORM_ISCSI_TASK_AG_CTX_RULE0EN_SHIFT 1
824#define E4_MSTORM_ISCSI_TASK_AG_CTX_RULE1EN_MASK 0x1
825#define E4_MSTORM_ISCSI_TASK_AG_CTX_RULE1EN_SHIFT 2
826#define E4_MSTORM_ISCSI_TASK_AG_CTX_RULE2EN_MASK 0x1
827#define E4_MSTORM_ISCSI_TASK_AG_CTX_RULE2EN_SHIFT 3
828#define E4_MSTORM_ISCSI_TASK_AG_CTX_RULE3EN_MASK 0x1
829#define E4_MSTORM_ISCSI_TASK_AG_CTX_RULE3EN_SHIFT 4
830#define E4_MSTORM_ISCSI_TASK_AG_CTX_RULE4EN_MASK 0x1
831#define E4_MSTORM_ISCSI_TASK_AG_CTX_RULE4EN_SHIFT 5
832#define E4_MSTORM_ISCSI_TASK_AG_CTX_RULE5EN_MASK 0x1
833#define E4_MSTORM_ISCSI_TASK_AG_CTX_RULE5EN_SHIFT 6
834#define E4_MSTORM_ISCSI_TASK_AG_CTX_RULE6EN_MASK 0x1
835#define E4_MSTORM_ISCSI_TASK_AG_CTX_RULE6EN_SHIFT 7
a2e7699e
TT
836 u8 byte2;
837 __le32 reg0;
838 u8 byte3;
839 u8 byte4;
840 __le16 word1;
841};
842
21dd79e8 843struct e4_ustorm_iscsi_task_ag_ctx {
a2e7699e
TT
844 u8 reserved;
845 u8 state;
846 __le16 icid;
847 u8 flags0;
21dd79e8
TT
848#define E4_USTORM_ISCSI_TASK_AG_CTX_CONNECTION_TYPE_MASK 0xF
849#define E4_USTORM_ISCSI_TASK_AG_CTX_CONNECTION_TYPE_SHIFT 0
850#define E4_USTORM_ISCSI_TASK_AG_CTX_EXIST_IN_QM0_MASK 0x1
851#define E4_USTORM_ISCSI_TASK_AG_CTX_EXIST_IN_QM0_SHIFT 4
d52c89f1
MK
852#define E4_USTORM_ISCSI_TASK_AG_CTX_CONN_CLEAR_SQ_FLAG_MASK 0x1
853#define E4_USTORM_ISCSI_TASK_AG_CTX_CONN_CLEAR_SQ_FLAG_SHIFT 5
21dd79e8
TT
854#define E4_USTORM_ISCSI_TASK_AG_CTX_HQ_SCANNED_CF_MASK 0x3
855#define E4_USTORM_ISCSI_TASK_AG_CTX_HQ_SCANNED_CF_SHIFT 6
a2e7699e 856 u8 flags1;
21dd79e8
TT
857#define E4_USTORM_ISCSI_TASK_AG_CTX_RESERVED1_MASK 0x3
858#define E4_USTORM_ISCSI_TASK_AG_CTX_RESERVED1_SHIFT 0
859#define E4_USTORM_ISCSI_TASK_AG_CTX_R2T2RECV_MASK 0x3
860#define E4_USTORM_ISCSI_TASK_AG_CTX_R2T2RECV_SHIFT 2
861#define E4_USTORM_ISCSI_TASK_AG_CTX_CF3_MASK 0x3
862#define E4_USTORM_ISCSI_TASK_AG_CTX_CF3_SHIFT 4
863#define E4_USTORM_ISCSI_TASK_AG_CTX_DIF_ERROR_CF_MASK 0x3
864#define E4_USTORM_ISCSI_TASK_AG_CTX_DIF_ERROR_CF_SHIFT 6
a2e7699e 865 u8 flags2;
21dd79e8
TT
866#define E4_USTORM_ISCSI_TASK_AG_CTX_HQ_SCANNED_CF_EN_MASK 0x1
867#define E4_USTORM_ISCSI_TASK_AG_CTX_HQ_SCANNED_CF_EN_SHIFT 0
868#define E4_USTORM_ISCSI_TASK_AG_CTX_DISABLE_DATA_ACKED_MASK 0x1
869#define E4_USTORM_ISCSI_TASK_AG_CTX_DISABLE_DATA_ACKED_SHIFT 1
870#define E4_USTORM_ISCSI_TASK_AG_CTX_R2T2RECV_EN_MASK 0x1
871#define E4_USTORM_ISCSI_TASK_AG_CTX_R2T2RECV_EN_SHIFT 2
872#define E4_USTORM_ISCSI_TASK_AG_CTX_CF3EN_MASK 0x1
873#define E4_USTORM_ISCSI_TASK_AG_CTX_CF3EN_SHIFT 3
874#define E4_USTORM_ISCSI_TASK_AG_CTX_DIF_ERROR_CF_EN_MASK 0x1
875#define E4_USTORM_ISCSI_TASK_AG_CTX_DIF_ERROR_CF_EN_SHIFT 4
876#define E4_USTORM_ISCSI_TASK_AG_CTX_CMP_DATA_TOTAL_EXP_EN_MASK 0x1
877#define E4_USTORM_ISCSI_TASK_AG_CTX_CMP_DATA_TOTAL_EXP_EN_SHIFT 5
878#define E4_USTORM_ISCSI_TASK_AG_CTX_RULE1EN_MASK 0x1
879#define E4_USTORM_ISCSI_TASK_AG_CTX_RULE1EN_SHIFT 6
880#define E4_USTORM_ISCSI_TASK_AG_CTX_CMP_CONT_RCV_EXP_EN_MASK 0x1
881#define E4_USTORM_ISCSI_TASK_AG_CTX_CMP_CONT_RCV_EXP_EN_SHIFT 7
a2e7699e 882 u8 flags3;
21dd79e8
TT
883#define E4_USTORM_ISCSI_TASK_AG_CTX_RULE3EN_MASK 0x1
884#define E4_USTORM_ISCSI_TASK_AG_CTX_RULE3EN_SHIFT 0
885#define E4_USTORM_ISCSI_TASK_AG_CTX_RULE4EN_MASK 0x1
886#define E4_USTORM_ISCSI_TASK_AG_CTX_RULE4EN_SHIFT 1
887#define E4_USTORM_ISCSI_TASK_AG_CTX_RULE5EN_MASK 0x1
888#define E4_USTORM_ISCSI_TASK_AG_CTX_RULE5EN_SHIFT 2
889#define E4_USTORM_ISCSI_TASK_AG_CTX_RULE6EN_MASK 0x1
890#define E4_USTORM_ISCSI_TASK_AG_CTX_RULE6EN_SHIFT 3
891#define E4_USTORM_ISCSI_TASK_AG_CTX_DIF_ERROR_TYPE_MASK 0xF
892#define E4_USTORM_ISCSI_TASK_AG_CTX_DIF_ERROR_TYPE_SHIFT 4
a2e7699e
TT
893 __le32 dif_err_intervals;
894 __le32 dif_error_1st_interval;
895 __le32 rcv_cont_len;
896 __le32 exp_cont_len;
897 __le32 total_data_acked;
898 __le32 exp_data_acked;
899 u8 next_tid_valid;
900 u8 byte3;
901 __le16 word1;
902 __le16 next_tid;
903 __le16 word3;
904 __le32 hdr_residual_count;
905 __le32 exp_r2t_sn;
906};
907
908/* The iscsi storm task context of Mstorm */
909struct mstorm_iscsi_task_st_ctx {
910 struct scsi_cached_sges data_desc;
911 struct scsi_sgl_params sgl_params;
912 __le32 rem_task_size;
913 __le32 data_buffer_offset;
914 u8 task_type;
915 struct iscsi_dif_flags dif_flags;
da090917 916 __le16 dif_task_icid;
a2e7699e
TT
917 struct regpair sense_db;
918 __le32 expected_itt;
919 __le32 reserved1;
920};
921
922struct iscsi_reg1 {
923 __le32 reg1_map;
924#define ISCSI_REG1_NUM_SGES_MASK 0xF
925#define ISCSI_REG1_NUM_SGES_SHIFT 0
926#define ISCSI_REG1_RESERVED1_MASK 0xFFFFFFF
927#define ISCSI_REG1_RESERVED1_SHIFT 4
928};
929
da090917
TT
930struct tqe_opaque {
931 __le16 opaque[2];
932};
933
a2e7699e
TT
934/* The iscsi storm task context of Ustorm */
935struct ustorm_iscsi_task_st_ctx {
936 __le32 rem_rcv_len;
937 __le32 exp_data_transfer_len;
938 __le32 exp_data_sn;
939 struct regpair lun;
940 struct iscsi_reg1 reg1;
941 u8 flags2;
942#define USTORM_ISCSI_TASK_ST_CTX_AHS_EXIST_MASK 0x1
943#define USTORM_ISCSI_TASK_ST_CTX_AHS_EXIST_SHIFT 0
944#define USTORM_ISCSI_TASK_ST_CTX_RESERVED1_MASK 0x7F
945#define USTORM_ISCSI_TASK_ST_CTX_RESERVED1_SHIFT 1
946 struct iscsi_dif_flags dif_flags;
947 __le16 reserved3;
da090917 948 struct tqe_opaque tqe_opaque_list;
a2e7699e
TT
949 __le32 reserved5;
950 __le32 reserved6;
951 __le32 reserved7;
952 u8 task_type;
953 u8 error_flags;
954#define USTORM_ISCSI_TASK_ST_CTX_DATA_DIGEST_ERROR_MASK 0x1
955#define USTORM_ISCSI_TASK_ST_CTX_DATA_DIGEST_ERROR_SHIFT 0
956#define USTORM_ISCSI_TASK_ST_CTX_DATA_TRUNCATED_ERROR_MASK 0x1
957#define USTORM_ISCSI_TASK_ST_CTX_DATA_TRUNCATED_ERROR_SHIFT 1
958#define USTORM_ISCSI_TASK_ST_CTX_UNDER_RUN_ERROR_MASK 0x1
959#define USTORM_ISCSI_TASK_ST_CTX_UNDER_RUN_ERROR_SHIFT 2
960#define USTORM_ISCSI_TASK_ST_CTX_RESERVED8_MASK 0x1F
961#define USTORM_ISCSI_TASK_ST_CTX_RESERVED8_SHIFT 3
962 u8 flags;
963#define USTORM_ISCSI_TASK_ST_CTX_CQE_WRITE_MASK 0x3
964#define USTORM_ISCSI_TASK_ST_CTX_CQE_WRITE_SHIFT 0
965#define USTORM_ISCSI_TASK_ST_CTX_LOCAL_COMP_MASK 0x1
966#define USTORM_ISCSI_TASK_ST_CTX_LOCAL_COMP_SHIFT 2
967#define USTORM_ISCSI_TASK_ST_CTX_Q0_R2TQE_WRITE_MASK 0x1
968#define USTORM_ISCSI_TASK_ST_CTX_Q0_R2TQE_WRITE_SHIFT 3
969#define USTORM_ISCSI_TASK_ST_CTX_TOTAL_DATA_ACKED_DONE_MASK 0x1
970#define USTORM_ISCSI_TASK_ST_CTX_TOTAL_DATA_ACKED_DONE_SHIFT 4
971#define USTORM_ISCSI_TASK_ST_CTX_HQ_SCANNED_DONE_MASK 0x1
972#define USTORM_ISCSI_TASK_ST_CTX_HQ_SCANNED_DONE_SHIFT 5
973#define USTORM_ISCSI_TASK_ST_CTX_R2T2RECV_DONE_MASK 0x1
974#define USTORM_ISCSI_TASK_ST_CTX_R2T2RECV_DONE_SHIFT 6
975#define USTORM_ISCSI_TASK_ST_CTX_RESERVED0_MASK 0x1
976#define USTORM_ISCSI_TASK_ST_CTX_RESERVED0_SHIFT 7
977 u8 cq_rss_number;
978};
979
980/* iscsi task context */
21dd79e8 981struct e4_iscsi_task_context {
a2e7699e 982 struct ystorm_iscsi_task_st_ctx ystorm_st_context;
21dd79e8 983 struct e4_ystorm_iscsi_task_ag_ctx ystorm_ag_context;
a2e7699e
TT
984 struct regpair ystorm_ag_padding[2];
985 struct tdif_task_context tdif_context;
21dd79e8 986 struct e4_mstorm_iscsi_task_ag_ctx mstorm_ag_context;
a2e7699e 987 struct regpair mstorm_ag_padding[2];
21dd79e8 988 struct e4_ustorm_iscsi_task_ag_ctx ustorm_ag_context;
a2e7699e
TT
989 struct mstorm_iscsi_task_st_ctx mstorm_st_context;
990 struct ustorm_iscsi_task_st_ctx ustorm_st_context;
991 struct rdif_task_context rdif_context;
992};
993
994/* iSCSI connection offload params passed by driver to FW in ISCSI offload
995 * ramrod.
996 */
997struct iscsi_conn_offload_params {
998 struct regpair sq_pbl_addr;
999 struct regpair r2tq_pbl_addr;
1000 struct regpair xhq_pbl_addr;
1001 struct regpair uhq_pbl_addr;
1002 __le32 initial_ack;
1003 __le16 physical_q0;
1004 __le16 physical_q1;
1005 u8 flags;
1006#define ISCSI_CONN_OFFLOAD_PARAMS_TCP_ON_CHIP_1B_MASK 0x1
1007#define ISCSI_CONN_OFFLOAD_PARAMS_TCP_ON_CHIP_1B_SHIFT 0
1008#define ISCSI_CONN_OFFLOAD_PARAMS_TARGET_MODE_MASK 0x1
1009#define ISCSI_CONN_OFFLOAD_PARAMS_TARGET_MODE_SHIFT 1
1010#define ISCSI_CONN_OFFLOAD_PARAMS_RESTRICTED_MODE_MASK 0x1
1011#define ISCSI_CONN_OFFLOAD_PARAMS_RESTRICTED_MODE_SHIFT 2
1012#define ISCSI_CONN_OFFLOAD_PARAMS_RESERVED1_MASK 0x1F
1013#define ISCSI_CONN_OFFLOAD_PARAMS_RESERVED1_SHIFT 3
1014 u8 pbl_page_size_log;
1015 u8 pbe_page_size_log;
1016 u8 default_cq;
1017 __le32 stat_sn;
1018};
1019
da090917
TT
1020/* iSCSI connection statistics */
1021struct iscsi_conn_stats_params {
1022 struct regpair iscsi_tcp_tx_packets_cnt;
1023 struct regpair iscsi_tcp_tx_bytes_cnt;
1024 struct regpair iscsi_tcp_tx_rxmit_cnt;
1025 struct regpair iscsi_tcp_rx_packets_cnt;
1026 struct regpair iscsi_tcp_rx_bytes_cnt;
1027 struct regpair iscsi_tcp_rx_dup_ack_cnt;
1028 __le32 iscsi_tcp_rx_chksum_err_cnt;
1029 __le32 reserved;
1030};
1031
a2e7699e
TT
1032/* spe message header */
1033struct iscsi_slow_path_hdr {
1034 u8 op_code;
1035 u8 flags;
1036#define ISCSI_SLOW_PATH_HDR_RESERVED0_MASK 0xF
1037#define ISCSI_SLOW_PATH_HDR_RESERVED0_SHIFT 0
1038#define ISCSI_SLOW_PATH_HDR_LAYER_CODE_MASK 0x7
1039#define ISCSI_SLOW_PATH_HDR_LAYER_CODE_SHIFT 4
1040#define ISCSI_SLOW_PATH_HDR_RESERVED1_MASK 0x1
1041#define ISCSI_SLOW_PATH_HDR_RESERVED1_SHIFT 7
1042};
1043
1044/* iSCSI connection update params passed by driver to FW in ISCSI update
1045 *ramrod.
1046 */
1047struct iscsi_conn_update_ramrod_params {
1048 struct iscsi_slow_path_hdr hdr;
1049 __le16 conn_id;
1050 __le32 fw_cid;
1051 u8 flags;
1052#define ISCSI_CONN_UPDATE_RAMROD_PARAMS_HD_EN_MASK 0x1
1053#define ISCSI_CONN_UPDATE_RAMROD_PARAMS_HD_EN_SHIFT 0
1054#define ISCSI_CONN_UPDATE_RAMROD_PARAMS_DD_EN_MASK 0x1
1055#define ISCSI_CONN_UPDATE_RAMROD_PARAMS_DD_EN_SHIFT 1
1056#define ISCSI_CONN_UPDATE_RAMROD_PARAMS_INITIAL_R2T_MASK 0x1
1057#define ISCSI_CONN_UPDATE_RAMROD_PARAMS_INITIAL_R2T_SHIFT 2
1058#define ISCSI_CONN_UPDATE_RAMROD_PARAMS_IMMEDIATE_DATA_MASK 0x1
1059#define ISCSI_CONN_UPDATE_RAMROD_PARAMS_IMMEDIATE_DATA_SHIFT 3
1060#define ISCSI_CONN_UPDATE_RAMROD_PARAMS_DIF_BLOCK_SIZE_MASK 0x1
1061#define ISCSI_CONN_UPDATE_RAMROD_PARAMS_DIF_BLOCK_SIZE_SHIFT 4
1062#define ISCSI_CONN_UPDATE_RAMROD_PARAMS_DIF_ON_HOST_EN_MASK 0x1
1063#define ISCSI_CONN_UPDATE_RAMROD_PARAMS_DIF_ON_HOST_EN_SHIFT 5
da090917
TT
1064#define ISCSI_CONN_UPDATE_RAMROD_PARAMS_DIF_ON_IMM_EN_MASK 0x1
1065#define ISCSI_CONN_UPDATE_RAMROD_PARAMS_DIF_ON_IMM_EN_SHIFT 6
1066#define ISCSI_CONN_UPDATE_RAMROD_PARAMS_LUN_MAPPER_EN_MASK 0x1
1067#define ISCSI_CONN_UPDATE_RAMROD_PARAMS_LUN_MAPPER_EN_SHIFT 7
a2e7699e
TT
1068 u8 reserved0[3];
1069 __le32 max_seq_size;
1070 __le32 max_send_pdu_length;
1071 __le32 max_recv_pdu_length;
1072 __le32 first_seq_length;
1073 __le32 exp_stat_sn;
da090917 1074 union dif_configuration_params dif_on_imme_params;
a2e7699e
TT
1075};
1076
1077/* iSCSI CQ element */
7a9b6b8f
YM
1078struct iscsi_cqe_common {
1079 __le16 conn_id;
1080 u8 cqe_type;
1081 union cqe_error_status error_bitmap;
1082 __le32 reserved[3];
1083 union iscsi_task_hdr iscsi_hdr;
1084};
1085
a2e7699e 1086/* iSCSI CQ element */
7a9b6b8f
YM
1087struct iscsi_cqe_solicited {
1088 __le16 conn_id;
1089 u8 cqe_type;
1090 union cqe_error_status error_bitmap;
1091 __le16 itid;
1092 u8 task_type;
1093 u8 fw_dbg_field;
be086e7c
MY
1094 u8 caused_conn_err;
1095 u8 reserved0[3];
da090917 1096 __le32 data_truncated_bytes;
7a9b6b8f
YM
1097 union iscsi_task_hdr iscsi_hdr;
1098};
1099
a2e7699e 1100/* iSCSI CQ element */
7a9b6b8f
YM
1101struct iscsi_cqe_unsolicited {
1102 __le16 conn_id;
1103 u8 cqe_type;
1104 union cqe_error_status error_bitmap;
1105 __le16 reserved0;
1106 u8 reserved1;
1107 u8 unsol_cqe_type;
da090917
TT
1108 __le16 rqe_opaque;
1109 __le16 reserved2[3];
7a9b6b8f
YM
1110 union iscsi_task_hdr iscsi_hdr;
1111};
1112
a2e7699e 1113/* iSCSI CQ element */
7a9b6b8f
YM
1114union iscsi_cqe {
1115 struct iscsi_cqe_common cqe_common;
1116 struct iscsi_cqe_solicited cqe_solicited;
1117 struct iscsi_cqe_unsolicited cqe_unsolicited;
1118};
1119
a2e7699e 1120/* iSCSI CQE type */
7a9b6b8f
YM
1121enum iscsi_cqes_type {
1122 ISCSI_CQE_TYPE_SOLICITED = 1,
1123 ISCSI_CQE_TYPE_UNSOLICITED,
05fafbfb 1124 ISCSI_CQE_TYPE_SOLICITED_WITH_SENSE,
7a9b6b8f
YM
1125 ISCSI_CQE_TYPE_TASK_CLEANUP,
1126 ISCSI_CQE_TYPE_DUMMY,
1127 MAX_ISCSI_CQES_TYPE
1128};
1129
a2e7699e 1130/* iSCSI CQE type */
7a9b6b8f
YM
1131enum iscsi_cqe_unsolicited_type {
1132 ISCSI_CQE_UNSOLICITED_NONE,
1133 ISCSI_CQE_UNSOLICITED_SINGLE,
1134 ISCSI_CQE_UNSOLICITED_FIRST,
1135 ISCSI_CQE_UNSOLICITED_MIDDLE,
1136 ISCSI_CQE_UNSOLICITED_LAST,
1137 MAX_ISCSI_CQE_UNSOLICITED_TYPE
1138};
1139
a2e7699e 1140/* iscsi debug modes */
7a9b6b8f
YM
1141struct iscsi_debug_modes {
1142 u8 flags;
da090917
TT
1143#define ISCSI_DEBUG_MODES_ASSERT_IF_RX_CONN_ERROR_MASK 0x1
1144#define ISCSI_DEBUG_MODES_ASSERT_IF_RX_CONN_ERROR_SHIFT 0
1145#define ISCSI_DEBUG_MODES_ASSERT_IF_RECV_RESET_MASK 0x1
1146#define ISCSI_DEBUG_MODES_ASSERT_IF_RECV_RESET_SHIFT 1
1147#define ISCSI_DEBUG_MODES_ASSERT_IF_RECV_FIN_MASK 0x1
1148#define ISCSI_DEBUG_MODES_ASSERT_IF_RECV_FIN_SHIFT 2
1149#define ISCSI_DEBUG_MODES_ASSERT_IF_RECV_CLEANUP_MASK 0x1
1150#define ISCSI_DEBUG_MODES_ASSERT_IF_RECV_CLEANUP_SHIFT 3
1151#define ISCSI_DEBUG_MODES_ASSERT_IF_RECV_REJECT_OR_ASYNC_MASK 0x1
1152#define ISCSI_DEBUG_MODES_ASSERT_IF_RECV_REJECT_OR_ASYNC_SHIFT 4
1153#define ISCSI_DEBUG_MODES_ASSERT_IF_RECV_NOP_MASK 0x1
1154#define ISCSI_DEBUG_MODES_ASSERT_IF_RECV_NOP_SHIFT 5
1155#define ISCSI_DEBUG_MODES_ASSERT_IF_DIF_OR_DATA_DIGEST_ERROR_MASK 0x1
1156#define ISCSI_DEBUG_MODES_ASSERT_IF_DIF_OR_DATA_DIGEST_ERROR_SHIFT 6
1157#define ISCSI_DEBUG_MODES_ASSERT_IF_HQ_CORRUPT_MASK 0x1
1158#define ISCSI_DEBUG_MODES_ASSERT_IF_HQ_CORRUPT_SHIFT 7
a2e7699e
TT
1159};
1160
1161/* iSCSI kernel completion queue IDs */
7a9b6b8f
YM
1162enum iscsi_eqe_opcode {
1163 ISCSI_EVENT_TYPE_INIT_FUNC = 0,
1164 ISCSI_EVENT_TYPE_DESTROY_FUNC,
1165 ISCSI_EVENT_TYPE_OFFLOAD_CONN,
1166 ISCSI_EVENT_TYPE_UPDATE_CONN,
1167 ISCSI_EVENT_TYPE_CLEAR_SQ,
1168 ISCSI_EVENT_TYPE_TERMINATE_CONN,
05fafbfb 1169 ISCSI_EVENT_TYPE_MAC_UPDATE_CONN,
da090917 1170 ISCSI_EVENT_TYPE_COLLECT_STATS_CONN,
7a9b6b8f
YM
1171 ISCSI_EVENT_TYPE_ASYN_CONNECT_COMPLETE,
1172 ISCSI_EVENT_TYPE_ASYN_TERMINATE_DONE,
7a9b6b8f
YM
1173 ISCSI_EVENT_TYPE_START_OF_ERROR_TYPES = 10,
1174 ISCSI_EVENT_TYPE_ASYN_ABORT_RCVD,
1175 ISCSI_EVENT_TYPE_ASYN_CLOSE_RCVD,
1176 ISCSI_EVENT_TYPE_ASYN_SYN_RCVD,
1177 ISCSI_EVENT_TYPE_ASYN_MAX_RT_TIME,
1178 ISCSI_EVENT_TYPE_ASYN_MAX_RT_CNT,
1179 ISCSI_EVENT_TYPE_ASYN_MAX_KA_PROBES_CNT,
1180 ISCSI_EVENT_TYPE_ASYN_FIN_WAIT2,
1181 ISCSI_EVENT_TYPE_ISCSI_CONN_ERROR,
1182 ISCSI_EVENT_TYPE_TCP_CONN_ERROR,
7a9b6b8f
YM
1183 MAX_ISCSI_EQE_OPCODE
1184};
1185
a2e7699e 1186/* iSCSI EQE and CQE completion status */
7a9b6b8f
YM
1187enum iscsi_error_types {
1188 ISCSI_STATUS_NONE = 0,
1189 ISCSI_CQE_ERROR_UNSOLICITED_RCV_ON_INVALID_CONN = 1,
1190 ISCSI_CONN_ERROR_TASK_CID_MISMATCH,
1191 ISCSI_CONN_ERROR_TASK_NOT_VALID,
1192 ISCSI_CONN_ERROR_RQ_RING_IS_FULL,
1193 ISCSI_CONN_ERROR_CMDQ_RING_IS_FULL,
1194 ISCSI_CONN_ERROR_HQE_CACHING_FAILED,
1195 ISCSI_CONN_ERROR_HEADER_DIGEST_ERROR,
1196 ISCSI_CONN_ERROR_LOCAL_COMPLETION_ERROR,
1197 ISCSI_CONN_ERROR_DATA_OVERRUN,
1198 ISCSI_CONN_ERROR_OUT_OF_SGES_ERROR,
7b6859fb
MY
1199 ISCSI_CONN_ERROR_IP_OPTIONS_ERROR,
1200 ISCSI_CONN_ERROR_PRS_ERRORS,
1201 ISCSI_CONN_ERROR_CONNECT_INVALID_TCP_OPTION,
7a9b6b8f
YM
1202 ISCSI_CONN_ERROR_TCP_IP_FRAGMENT_ERROR,
1203 ISCSI_CONN_ERROR_PROTOCOL_ERR_AHS_LEN,
1204 ISCSI_CONN_ERROR_PROTOCOL_ERR_AHS_TYPE,
1205 ISCSI_CONN_ERROR_PROTOCOL_ERR_ITT_OUT_OF_RANGE,
1206 ISCSI_CONN_ERROR_PROTOCOL_ERR_TTT_OUT_OF_RANGE,
1207 ISCSI_CONN_ERROR_PROTOCOL_ERR_DATA_SEG_LEN_EXCEEDS_PDU_SIZE,
1208 ISCSI_CONN_ERROR_PROTOCOL_ERR_INVALID_OPCODE,
1209 ISCSI_CONN_ERROR_PROTOCOL_ERR_INVALID_OPCODE_BEFORE_UPDATE,
1210 ISCSI_CONN_ERROR_UNVALID_NOPIN_DSL,
1211 ISCSI_CONN_ERROR_PROTOCOL_ERR_R2T_CARRIES_NO_DATA,
1212 ISCSI_CONN_ERROR_PROTOCOL_ERR_DATA_SN,
1213 ISCSI_CONN_ERROR_PROTOCOL_ERR_DATA_IN_TTT,
1214 ISCSI_CONN_ERROR_PROTOCOL_ERR_DATA_OUT_ITT,
1215 ISCSI_CONN_ERROR_PROTOCOL_ERR_R2T_TTT,
1216 ISCSI_CONN_ERROR_PROTOCOL_ERR_R2T_BUFFER_OFFSET,
1217 ISCSI_CONN_ERROR_PROTOCOL_ERR_BUFFER_OFFSET_OOO,
1218 ISCSI_CONN_ERROR_PROTOCOL_ERR_R2T_SN,
1219 ISCSI_CONN_ERROR_PROTOCOL_ERR_DESIRED_DATA_TRNS_LEN_0,
1220 ISCSI_CONN_ERROR_PROTOCOL_ERR_DESIRED_DATA_TRNS_LEN_1,
1221 ISCSI_CONN_ERROR_PROTOCOL_ERR_DESIRED_DATA_TRNS_LEN_2,
1222 ISCSI_CONN_ERROR_PROTOCOL_ERR_LUN,
1223 ISCSI_CONN_ERROR_PROTOCOL_ERR_F_BIT_ZERO,
1224 ISCSI_CONN_ERROR_PROTOCOL_ERR_F_BIT_ZERO_S_BIT_ONE,
1225 ISCSI_CONN_ERROR_PROTOCOL_ERR_EXP_STAT_SN,
1226 ISCSI_CONN_ERROR_PROTOCOL_ERR_DSL_NOT_ZERO,
1227 ISCSI_CONN_ERROR_PROTOCOL_ERR_INVALID_DSL,
1228 ISCSI_CONN_ERROR_PROTOCOL_ERR_DATA_SEG_LEN_TOO_BIG,
1229 ISCSI_CONN_ERROR_PROTOCOL_ERR_OUTSTANDING_R2T_COUNT,
1230 ISCSI_CONN_ERROR_PROTOCOL_ERR_DIF_TX,
1231 ISCSI_CONN_ERROR_SENSE_DATA_LENGTH,
1232 ISCSI_CONN_ERROR_DATA_PLACEMENT_ERROR,
be086e7c 1233 ISCSI_CONN_ERROR_INVALID_ITT,
7a9b6b8f
YM
1234 ISCSI_ERROR_UNKNOWN,
1235 MAX_ISCSI_ERROR_TYPES
1236};
1237
a2e7699e 1238/* iSCSI Ramrod Command IDs */
7a9b6b8f
YM
1239enum iscsi_ramrod_cmd_id {
1240 ISCSI_RAMROD_CMD_ID_UNUSED = 0,
1241 ISCSI_RAMROD_CMD_ID_INIT_FUNC = 1,
1242 ISCSI_RAMROD_CMD_ID_DESTROY_FUNC = 2,
1243 ISCSI_RAMROD_CMD_ID_OFFLOAD_CONN = 3,
1244 ISCSI_RAMROD_CMD_ID_UPDATE_CONN = 4,
1245 ISCSI_RAMROD_CMD_ID_TERMINATION_CONN = 5,
1246 ISCSI_RAMROD_CMD_ID_CLEAR_SQ = 6,
05fafbfb 1247 ISCSI_RAMROD_CMD_ID_MAC_UPDATE = 7,
da090917 1248 ISCSI_RAMROD_CMD_ID_CONN_STATS = 8,
7a9b6b8f
YM
1249 MAX_ISCSI_RAMROD_CMD_ID
1250};
1251
a2e7699e 1252/* iSCSI connection termination request */
05fafbfb
YM
1253struct iscsi_spe_conn_mac_update {
1254 struct iscsi_slow_path_hdr hdr;
1255 __le16 conn_id;
1256 __le32 fw_cid;
1257 __le16 remote_mac_addr_lo;
1258 __le16 remote_mac_addr_mid;
1259 __le16 remote_mac_addr_hi;
1260 u8 reserved0[2];
1261};
1262
a2e7699e
TT
1263/* iSCSI and TCP connection (Option 1) offload params passed by driver to FW in
1264 * iSCSI offload ramrod.
1265 */
7a9b6b8f
YM
1266struct iscsi_spe_conn_offload {
1267 struct iscsi_slow_path_hdr hdr;
1268 __le16 conn_id;
1269 __le32 fw_cid;
1270 struct iscsi_conn_offload_params iscsi;
1271 struct tcp_offload_params tcp;
1272};
1273
a2e7699e
TT
1274/* iSCSI and TCP connection(Option 2) offload params passed by driver to FW in
1275 * iSCSI offload ramrod.
1276 */
7a9b6b8f
YM
1277struct iscsi_spe_conn_offload_option2 {
1278 struct iscsi_slow_path_hdr hdr;
1279 __le16 conn_id;
1280 __le32 fw_cid;
1281 struct iscsi_conn_offload_params iscsi;
1282 struct tcp_offload_params_opt2 tcp;
1283};
1284
da090917
TT
1285/* iSCSI collect connection statistics request */
1286struct iscsi_spe_conn_statistics {
1287 struct iscsi_slow_path_hdr hdr;
1288 __le16 conn_id;
1289 __le32 fw_cid;
1290 u8 reset_stats;
1291 u8 reserved0[7];
1292 struct regpair stats_cnts_addr;
1293};
1294
a2e7699e 1295/* iSCSI connection termination request */
7a9b6b8f
YM
1296struct iscsi_spe_conn_termination {
1297 struct iscsi_slow_path_hdr hdr;
1298 __le16 conn_id;
1299 __le32 fw_cid;
1300 u8 abortive;
1301 u8 reserved0[7];
1302 struct regpair queue_cnts_addr;
1303 struct regpair query_params_addr;
1304};
1305
a2e7699e 1306/* iSCSI firmware function destroy parameters */
7a9b6b8f
YM
1307struct iscsi_spe_func_dstry {
1308 struct iscsi_slow_path_hdr hdr;
1309 __le16 reserved0;
1310 __le32 reserved1;
1311};
1312
a2e7699e 1313/* iSCSI firmware function init parameters */
7a9b6b8f
YM
1314struct iscsi_spe_func_init {
1315 struct iscsi_slow_path_hdr hdr;
1316 __le16 half_way_close_timeout;
1317 u8 num_sq_pages_in_ring;
1318 u8 num_r2tq_pages_in_ring;
1319 u8 num_uhq_pages_in_ring;
1320 u8 ll2_rx_queue_id;
da090917
TT
1321 u8 flags;
1322#define ISCSI_SPE_FUNC_INIT_COUNTERS_EN_MASK 0x1
1323#define ISCSI_SPE_FUNC_INIT_COUNTERS_EN_SHIFT 0
1324#define ISCSI_SPE_FUNC_INIT_RESERVED0_MASK 0x7F
1325#define ISCSI_SPE_FUNC_INIT_RESERVED0_SHIFT 1
7a9b6b8f
YM
1326 struct iscsi_debug_modes debug_mode;
1327 __le16 reserved1;
1328 __le32 reserved2;
7a9b6b8f
YM
1329 struct scsi_init_func_params func_params;
1330 struct scsi_init_func_queues q_params;
1331};
1332
a2e7699e 1333/* iSCSI task type */
7a9b6b8f
YM
1334enum iscsi_task_type {
1335 ISCSI_TASK_TYPE_INITIATOR_WRITE,
1336 ISCSI_TASK_TYPE_INITIATOR_READ,
1337 ISCSI_TASK_TYPE_MIDPATH,
1338 ISCSI_TASK_TYPE_UNSOLIC,
1339 ISCSI_TASK_TYPE_EXCHCLEANUP,
1340 ISCSI_TASK_TYPE_IRRELEVANT,
1341 ISCSI_TASK_TYPE_TARGET_WRITE,
1342 ISCSI_TASK_TYPE_TARGET_READ,
1343 ISCSI_TASK_TYPE_TARGET_RESPONSE,
1344 ISCSI_TASK_TYPE_LOGIN_RESPONSE,
da090917 1345 ISCSI_TASK_TYPE_TARGET_IMM_W_DIF,
7a9b6b8f
YM
1346 MAX_ISCSI_TASK_TYPE
1347};
1348
a2e7699e 1349/* iSCSI DesiredDataTransferLength/ttt union */
7a9b6b8f
YM
1350union iscsi_ttt_txlen_union {
1351 __le32 desired_tx_len;
1352 __le32 ttt;
1353};
1354
a2e7699e 1355/* iSCSI uHQ element */
7a9b6b8f
YM
1356struct iscsi_uhqe {
1357 __le32 reg1;
a2e7699e
TT
1358#define ISCSI_UHQE_PDU_PAYLOAD_LEN_MASK 0xFFFFF
1359#define ISCSI_UHQE_PDU_PAYLOAD_LEN_SHIFT 0
1360#define ISCSI_UHQE_LOCAL_COMP_MASK 0x1
1361#define ISCSI_UHQE_LOCAL_COMP_SHIFT 20
1362#define ISCSI_UHQE_TOGGLE_BIT_MASK 0x1
1363#define ISCSI_UHQE_TOGGLE_BIT_SHIFT 21
1364#define ISCSI_UHQE_PURE_PAYLOAD_MASK 0x1
1365#define ISCSI_UHQE_PURE_PAYLOAD_SHIFT 22
1366#define ISCSI_UHQE_LOGIN_RESPONSE_PDU_MASK 0x1
1367#define ISCSI_UHQE_LOGIN_RESPONSE_PDU_SHIFT 23
1368#define ISCSI_UHQE_TASK_ID_HI_MASK 0xFF
1369#define ISCSI_UHQE_TASK_ID_HI_SHIFT 24
7a9b6b8f 1370 __le32 reg2;
a2e7699e
TT
1371#define ISCSI_UHQE_BUFFER_OFFSET_MASK 0xFFFFFF
1372#define ISCSI_UHQE_BUFFER_OFFSET_SHIFT 0
1373#define ISCSI_UHQE_TASK_ID_LO_MASK 0xFF
1374#define ISCSI_UHQE_TASK_ID_LO_SHIFT 24
7a9b6b8f
YM
1375};
1376
a2e7699e 1377/* iSCSI WQ element */
7a9b6b8f
YM
1378struct iscsi_wqe {
1379 __le16 task_id;
1380 u8 flags;
a2e7699e
TT
1381#define ISCSI_WQE_WQE_TYPE_MASK 0x7
1382#define ISCSI_WQE_WQE_TYPE_SHIFT 0
1383#define ISCSI_WQE_NUM_SGES_MASK 0xF
1384#define ISCSI_WQE_NUM_SGES_SHIFT 3
1385#define ISCSI_WQE_RESPONSE_MASK 0x1
1386#define ISCSI_WQE_RESPONSE_SHIFT 7
7a9b6b8f 1387 struct iscsi_dif_flags prot_flags;
be086e7c 1388 __le32 contlen_cdbsize;
a2e7699e
TT
1389#define ISCSI_WQE_CONT_LEN_MASK 0xFFFFFF
1390#define ISCSI_WQE_CONT_LEN_SHIFT 0
1391#define ISCSI_WQE_CDB_SIZE_MASK 0xFF
1392#define ISCSI_WQE_CDB_SIZE_SHIFT 24
7a9b6b8f
YM
1393};
1394
a2e7699e 1395/* iSCSI wqe type */
7a9b6b8f
YM
1396enum iscsi_wqe_type {
1397 ISCSI_WQE_TYPE_NORMAL,
1398 ISCSI_WQE_TYPE_TASK_CLEANUP,
1399 ISCSI_WQE_TYPE_MIDDLE_PATH,
1400 ISCSI_WQE_TYPE_LOGIN,
1401 ISCSI_WQE_TYPE_FIRST_R2T_CONT,
1402 ISCSI_WQE_TYPE_NONFIRST_R2T_CONT,
1403 ISCSI_WQE_TYPE_RESPONSE,
1404 MAX_ISCSI_WQE_TYPE
1405};
1406
a2e7699e 1407/* iSCSI xHQ element */
7a9b6b8f
YM
1408struct iscsi_xhqe {
1409 union iscsi_ttt_txlen_union ttt_or_txlen;
1410 __le32 exp_stat_sn;
1411 struct iscsi_dif_flags prot_flags;
1412 u8 total_ahs_length;
1413 u8 opcode;
1414 u8 flags;
a2e7699e
TT
1415#define ISCSI_XHQE_FINAL_MASK 0x1
1416#define ISCSI_XHQE_FINAL_SHIFT 0
1417#define ISCSI_XHQE_STATUS_BIT_MASK 0x1
1418#define ISCSI_XHQE_STATUS_BIT_SHIFT 1
1419#define ISCSI_XHQE_NUM_SGES_MASK 0xF
1420#define ISCSI_XHQE_NUM_SGES_SHIFT 2
1421#define ISCSI_XHQE_RESERVED0_MASK 0x3
1422#define ISCSI_XHQE_RESERVED0_SHIFT 6
be086e7c 1423 union iscsi_seq_num seq_num;
7a9b6b8f
YM
1424 __le16 reserved1;
1425};
1426
a2e7699e 1427/* Per PF iSCSI receive path statistics - mStorm RAM structure */
7a9b6b8f
YM
1428struct mstorm_iscsi_stats_drv {
1429 struct regpair iscsi_rx_dropped_pdus_task_not_valid;
da090917 1430 struct regpair iscsi_rx_dup_ack_cnt;
7a9b6b8f
YM
1431};
1432
a2e7699e 1433/* Per PF iSCSI transmit path statistics - pStorm RAM structure */
7a9b6b8f
YM
1434struct pstorm_iscsi_stats_drv {
1435 struct regpair iscsi_tx_bytes_cnt;
1436 struct regpair iscsi_tx_packet_cnt;
1437};
1438
a2e7699e 1439/* Per PF iSCSI receive path statistics - tStorm RAM structure */
7a9b6b8f
YM
1440struct tstorm_iscsi_stats_drv {
1441 struct regpair iscsi_rx_bytes_cnt;
1442 struct regpair iscsi_rx_packet_cnt;
1443 struct regpair iscsi_rx_new_ooo_isle_events_cnt;
da090917
TT
1444 struct regpair iscsi_rx_tcp_payload_bytes_cnt;
1445 struct regpair iscsi_rx_tcp_pkt_cnt;
1446 struct regpair iscsi_rx_pure_ack_cnt;
7a9b6b8f
YM
1447 __le32 iscsi_cmdq_threshold_cnt;
1448 __le32 iscsi_rq_threshold_cnt;
1449 __le32 iscsi_immq_threshold_cnt;
1450};
1451
a2e7699e 1452/* Per PF iSCSI receive path statistics - uStorm RAM structure */
7a9b6b8f
YM
1453struct ustorm_iscsi_stats_drv {
1454 struct regpair iscsi_rx_data_pdu_cnt;
1455 struct regpair iscsi_rx_r2t_pdu_cnt;
1456 struct regpair iscsi_rx_total_pdu_cnt;
1457};
1458
a2e7699e 1459/* Per PF iSCSI transmit path statistics - xStorm RAM structure */
7a9b6b8f
YM
1460struct xstorm_iscsi_stats_drv {
1461 struct regpair iscsi_tx_go_to_slow_start_event_cnt;
1462 struct regpair iscsi_tx_fast_retransmit_event_cnt;
da090917
TT
1463 struct regpair iscsi_tx_pure_ack_cnt;
1464 struct regpair iscsi_tx_delayed_ack_cnt;
7a9b6b8f
YM
1465};
1466
a2e7699e 1467/* Per PF iSCSI transmit path statistics - yStorm RAM structure */
7a9b6b8f
YM
1468struct ystorm_iscsi_stats_drv {
1469 struct regpair iscsi_tx_data_pdu_cnt;
1470 struct regpair iscsi_tx_r2t_pdu_cnt;
1471 struct regpair iscsi_tx_total_pdu_cnt;
da090917
TT
1472 struct regpair iscsi_tx_tcp_payload_bytes_cnt;
1473 struct regpair iscsi_tx_tcp_pkt_cnt;
7a9b6b8f
YM
1474};
1475
21dd79e8 1476struct e4_tstorm_iscsi_task_ag_ctx {
7a9b6b8f
YM
1477 u8 byte0;
1478 u8 byte1;
1479 __le16 word0;
1480 u8 flags0;
21dd79e8
TT
1481#define E4_TSTORM_ISCSI_TASK_AG_CTX_NIBBLE0_MASK 0xF
1482#define E4_TSTORM_ISCSI_TASK_AG_CTX_NIBBLE0_SHIFT 0
1483#define E4_TSTORM_ISCSI_TASK_AG_CTX_BIT0_MASK 0x1
1484#define E4_TSTORM_ISCSI_TASK_AG_CTX_BIT0_SHIFT 4
1485#define E4_TSTORM_ISCSI_TASK_AG_CTX_BIT1_MASK 0x1
1486#define E4_TSTORM_ISCSI_TASK_AG_CTX_BIT1_SHIFT 5
1487#define E4_TSTORM_ISCSI_TASK_AG_CTX_BIT2_MASK 0x1
1488#define E4_TSTORM_ISCSI_TASK_AG_CTX_BIT2_SHIFT 6
1489#define E4_TSTORM_ISCSI_TASK_AG_CTX_BIT3_MASK 0x1
1490#define E4_TSTORM_ISCSI_TASK_AG_CTX_BIT3_SHIFT 7
7a9b6b8f 1491 u8 flags1;
21dd79e8
TT
1492#define E4_TSTORM_ISCSI_TASK_AG_CTX_BIT4_MASK 0x1
1493#define E4_TSTORM_ISCSI_TASK_AG_CTX_BIT4_SHIFT 0
1494#define E4_TSTORM_ISCSI_TASK_AG_CTX_BIT5_MASK 0x1
1495#define E4_TSTORM_ISCSI_TASK_AG_CTX_BIT5_SHIFT 1
1496#define E4_TSTORM_ISCSI_TASK_AG_CTX_CF0_MASK 0x3
1497#define E4_TSTORM_ISCSI_TASK_AG_CTX_CF0_SHIFT 2
1498#define E4_TSTORM_ISCSI_TASK_AG_CTX_CF1_MASK 0x3
1499#define E4_TSTORM_ISCSI_TASK_AG_CTX_CF1_SHIFT 4
1500#define E4_TSTORM_ISCSI_TASK_AG_CTX_CF2_MASK 0x3
1501#define E4_TSTORM_ISCSI_TASK_AG_CTX_CF2_SHIFT 6
7a9b6b8f 1502 u8 flags2;
21dd79e8
TT
1503#define E4_TSTORM_ISCSI_TASK_AG_CTX_CF3_MASK 0x3
1504#define E4_TSTORM_ISCSI_TASK_AG_CTX_CF3_SHIFT 0
1505#define E4_TSTORM_ISCSI_TASK_AG_CTX_CF4_MASK 0x3
1506#define E4_TSTORM_ISCSI_TASK_AG_CTX_CF4_SHIFT 2
1507#define E4_TSTORM_ISCSI_TASK_AG_CTX_CF5_MASK 0x3
1508#define E4_TSTORM_ISCSI_TASK_AG_CTX_CF5_SHIFT 4
1509#define E4_TSTORM_ISCSI_TASK_AG_CTX_CF6_MASK 0x3
1510#define E4_TSTORM_ISCSI_TASK_AG_CTX_CF6_SHIFT 6
7a9b6b8f 1511 u8 flags3;
21dd79e8
TT
1512#define E4_TSTORM_ISCSI_TASK_AG_CTX_CF7_MASK 0x3
1513#define E4_TSTORM_ISCSI_TASK_AG_CTX_CF7_SHIFT 0
1514#define E4_TSTORM_ISCSI_TASK_AG_CTX_CF0EN_MASK 0x1
1515#define E4_TSTORM_ISCSI_TASK_AG_CTX_CF0EN_SHIFT 2
1516#define E4_TSTORM_ISCSI_TASK_AG_CTX_CF1EN_MASK 0x1
1517#define E4_TSTORM_ISCSI_TASK_AG_CTX_CF1EN_SHIFT 3
1518#define E4_TSTORM_ISCSI_TASK_AG_CTX_CF2EN_MASK 0x1
1519#define E4_TSTORM_ISCSI_TASK_AG_CTX_CF2EN_SHIFT 4
1520#define E4_TSTORM_ISCSI_TASK_AG_CTX_CF3EN_MASK 0x1
1521#define E4_TSTORM_ISCSI_TASK_AG_CTX_CF3EN_SHIFT 5
1522#define E4_TSTORM_ISCSI_TASK_AG_CTX_CF4EN_MASK 0x1
1523#define E4_TSTORM_ISCSI_TASK_AG_CTX_CF4EN_SHIFT 6
1524#define E4_TSTORM_ISCSI_TASK_AG_CTX_CF5EN_MASK 0x1
1525#define E4_TSTORM_ISCSI_TASK_AG_CTX_CF5EN_SHIFT 7
7a9b6b8f 1526 u8 flags4;
21dd79e8
TT
1527#define E4_TSTORM_ISCSI_TASK_AG_CTX_CF6EN_MASK 0x1
1528#define E4_TSTORM_ISCSI_TASK_AG_CTX_CF6EN_SHIFT 0
1529#define E4_TSTORM_ISCSI_TASK_AG_CTX_CF7EN_MASK 0x1
1530#define E4_TSTORM_ISCSI_TASK_AG_CTX_CF7EN_SHIFT 1
1531#define E4_TSTORM_ISCSI_TASK_AG_CTX_RULE0EN_MASK 0x1
1532#define E4_TSTORM_ISCSI_TASK_AG_CTX_RULE0EN_SHIFT 2
1533#define E4_TSTORM_ISCSI_TASK_AG_CTX_RULE1EN_MASK 0x1
1534#define E4_TSTORM_ISCSI_TASK_AG_CTX_RULE1EN_SHIFT 3
1535#define E4_TSTORM_ISCSI_TASK_AG_CTX_RULE2EN_MASK 0x1
1536#define E4_TSTORM_ISCSI_TASK_AG_CTX_RULE2EN_SHIFT 4
1537#define E4_TSTORM_ISCSI_TASK_AG_CTX_RULE3EN_MASK 0x1
1538#define E4_TSTORM_ISCSI_TASK_AG_CTX_RULE3EN_SHIFT 5
1539#define E4_TSTORM_ISCSI_TASK_AG_CTX_RULE4EN_MASK 0x1
1540#define E4_TSTORM_ISCSI_TASK_AG_CTX_RULE4EN_SHIFT 6
1541#define E4_TSTORM_ISCSI_TASK_AG_CTX_RULE5EN_MASK 0x1
1542#define E4_TSTORM_ISCSI_TASK_AG_CTX_RULE5EN_SHIFT 7
7a9b6b8f
YM
1543 u8 byte2;
1544 __le16 word1;
1545 __le32 reg0;
1546 u8 byte3;
1547 u8 byte4;
1548 __le16 word2;
1549 __le16 word3;
1550 __le16 word4;
1551 __le32 reg1;
1552 __le32 reg2;
1553};
a2e7699e
TT
1554
1555/* iSCSI doorbell data */
7b6859fb
MY
1556struct iscsi_db_data {
1557 u8 params;
a2e7699e
TT
1558#define ISCSI_DB_DATA_DEST_MASK 0x3
1559#define ISCSI_DB_DATA_DEST_SHIFT 0
1560#define ISCSI_DB_DATA_AGG_CMD_MASK 0x3
1561#define ISCSI_DB_DATA_AGG_CMD_SHIFT 2
1562#define ISCSI_DB_DATA_BYPASS_EN_MASK 0x1
1563#define ISCSI_DB_DATA_BYPASS_EN_SHIFT 4
1564#define ISCSI_DB_DATA_RESERVED_MASK 0x1
1565#define ISCSI_DB_DATA_RESERVED_SHIFT 5
1566#define ISCSI_DB_DATA_AGG_VAL_SEL_MASK 0x3
1567#define ISCSI_DB_DATA_AGG_VAL_SEL_SHIFT 6
7b6859fb
MY
1568 u8 agg_flags;
1569 __le16 sq_prod;
1570};
7a9b6b8f
YM
1571
1572#endif /* __ISCSI_COMMON__ */