aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/qed/iscsi_common.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux/qed/iscsi_common.h')
-rw-r--r--include/linux/qed/iscsi_common.h1585
1 files changed, 881 insertions, 704 deletions
diff --git a/include/linux/qed/iscsi_common.h b/include/linux/qed/iscsi_common.h
index 85e086cba639..4cc9b37b8d95 100644
--- a/include/linux/qed/iscsi_common.h
+++ b/include/linux/qed/iscsi_common.h
@@ -32,47 +32,48 @@
32 32
33#ifndef __ISCSI_COMMON__ 33#ifndef __ISCSI_COMMON__
34#define __ISCSI_COMMON__ 34#define __ISCSI_COMMON__
35
35/**********************/ 36/**********************/
36/* ISCSI FW CONSTANTS */ 37/* ISCSI FW CONSTANTS */
37/**********************/ 38/**********************/
38 39
39/* iSCSI HSI constants */ 40/* iSCSI HSI constants */
40#define ISCSI_DEFAULT_MTU (1500) 41#define ISCSI_DEFAULT_MTU (1500)
41 42
42/* KWQ (kernel work queue) layer codes */ 43/* KWQ (kernel work queue) layer codes */
43#define ISCSI_SLOW_PATH_LAYER_CODE (6) 44#define ISCSI_SLOW_PATH_LAYER_CODE (6)
44 45
45/* iSCSI parameter defaults */ 46/* iSCSI parameter defaults */
46#define ISCSI_DEFAULT_HEADER_DIGEST (0) 47#define ISCSI_DEFAULT_HEADER_DIGEST (0)
47#define ISCSI_DEFAULT_DATA_DIGEST (0) 48#define ISCSI_DEFAULT_DATA_DIGEST (0)
48#define ISCSI_DEFAULT_INITIAL_R2T (1) 49#define ISCSI_DEFAULT_INITIAL_R2T (1)
49#define ISCSI_DEFAULT_IMMEDIATE_DATA (1) 50#define ISCSI_DEFAULT_IMMEDIATE_DATA (1)
50#define ISCSI_DEFAULT_MAX_PDU_LENGTH (0x2000) 51#define ISCSI_DEFAULT_MAX_PDU_LENGTH (0x2000)
51#define ISCSI_DEFAULT_FIRST_BURST_LENGTH (0x10000) 52#define ISCSI_DEFAULT_FIRST_BURST_LENGTH (0x10000)
52#define ISCSI_DEFAULT_MAX_BURST_LENGTH (0x40000) 53#define ISCSI_DEFAULT_MAX_BURST_LENGTH (0x40000)
53#define ISCSI_DEFAULT_MAX_OUTSTANDING_R2T (1) 54#define ISCSI_DEFAULT_MAX_OUTSTANDING_R2T (1)
54 55
55/* iSCSI parameter limits */ 56/* iSCSI parameter limits */
56#define ISCSI_MIN_VAL_MAX_PDU_LENGTH (0x200) 57#define ISCSI_MIN_VAL_MAX_PDU_LENGTH (0x200)
57#define ISCSI_MAX_VAL_MAX_PDU_LENGTH (0xffffff) 58#define ISCSI_MAX_VAL_MAX_PDU_LENGTH (0xffffff)
58#define ISCSI_MIN_VAL_BURST_LENGTH (0x200) 59#define ISCSI_MIN_VAL_BURST_LENGTH (0x200)
59#define ISCSI_MAX_VAL_BURST_LENGTH (0xffffff) 60#define ISCSI_MAX_VAL_BURST_LENGTH (0xffffff)
60#define ISCSI_MIN_VAL_MAX_OUTSTANDING_R2T (1) 61#define ISCSI_MIN_VAL_MAX_OUTSTANDING_R2T (1)
61#define ISCSI_MAX_VAL_MAX_OUTSTANDING_R2T (0xff) 62#define ISCSI_MAX_VAL_MAX_OUTSTANDING_R2T (0xff)
62 63
63#define ISCSI_AHS_CNTL_SIZE 4 64#define ISCSI_AHS_CNTL_SIZE 4
64 65
65#define ISCSI_WQE_NUM_SGES_SLOWIO (0xf) 66#define ISCSI_WQE_NUM_SGES_SLOWIO (0xf)
66 67
67/* iSCSI reserved params */ 68/* iSCSI reserved params */
68#define ISCSI_ITT_ALL_ONES (0xffffffff) 69#define ISCSI_ITT_ALL_ONES (0xffffffff)
69#define ISCSI_TTT_ALL_ONES (0xffffffff) 70#define ISCSI_TTT_ALL_ONES (0xffffffff)
70 71
71#define ISCSI_OPTION_1_OFF_CHIP_TCP 1 72#define ISCSI_OPTION_1_OFF_CHIP_TCP 1
72#define ISCSI_OPTION_2_ON_CHIP_TCP 2 73#define ISCSI_OPTION_2_ON_CHIP_TCP 2
73 74
74#define ISCSI_INITIATOR_MODE 0 75#define ISCSI_INITIATOR_MODE 0
75#define ISCSI_TARGET_MODE 1 76#define ISCSI_TARGET_MODE 1
76 77
77/* iSCSI request op codes */ 78/* iSCSI request op codes */
78#define ISCSI_OPCODE_NOP_OUT (0) 79#define ISCSI_OPCODE_NOP_OUT (0)
@@ -84,41 +85,48 @@
84#define ISCSI_OPCODE_LOGOUT_REQUEST (6) 85#define ISCSI_OPCODE_LOGOUT_REQUEST (6)
85 86
86/* iSCSI response/messages op codes */ 87/* iSCSI response/messages op codes */
87#define ISCSI_OPCODE_NOP_IN (0x20) 88#define ISCSI_OPCODE_NOP_IN (0x20)
88#define ISCSI_OPCODE_SCSI_RESPONSE (0x21) 89#define ISCSI_OPCODE_SCSI_RESPONSE (0x21)
89#define ISCSI_OPCODE_TMF_RESPONSE (0x22) 90#define ISCSI_OPCODE_TMF_RESPONSE (0x22)
90#define ISCSI_OPCODE_LOGIN_RESPONSE (0x23) 91#define ISCSI_OPCODE_LOGIN_RESPONSE (0x23)
91#define ISCSI_OPCODE_TEXT_RESPONSE (0x24) 92#define ISCSI_OPCODE_TEXT_RESPONSE (0x24)
92#define ISCSI_OPCODE_DATA_IN (0x25) 93#define ISCSI_OPCODE_DATA_IN (0x25)
93#define ISCSI_OPCODE_LOGOUT_RESPONSE (0x26) 94#define ISCSI_OPCODE_LOGOUT_RESPONSE (0x26)
94#define ISCSI_OPCODE_R2T (0x31) 95#define ISCSI_OPCODE_R2T (0x31)
95#define ISCSI_OPCODE_ASYNC_MSG (0x32) 96#define ISCSI_OPCODE_ASYNC_MSG (0x32)
96#define ISCSI_OPCODE_REJECT (0x3f) 97#define ISCSI_OPCODE_REJECT (0x3f)
97 98
98/* iSCSI stages */ 99/* iSCSI stages */
99#define ISCSI_STAGE_SECURITY_NEGOTIATION (0) 100#define ISCSI_STAGE_SECURITY_NEGOTIATION (0)
100#define ISCSI_STAGE_LOGIN_OPERATIONAL_NEGOTIATION (1) 101#define ISCSI_STAGE_LOGIN_OPERATIONAL_NEGOTIATION (1)
101#define ISCSI_STAGE_FULL_FEATURE_PHASE (3) 102#define ISCSI_STAGE_FULL_FEATURE_PHASE (3)
102 103
103/* iSCSI CQE errors */ 104/* iSCSI CQE errors */
104#define CQE_ERROR_BITMAP_DATA_DIGEST (0x08) 105#define CQE_ERROR_BITMAP_DATA_DIGEST (0x08)
105#define CQE_ERROR_BITMAP_RCV_ON_INVALID_CONN (0x10) 106#define CQE_ERROR_BITMAP_RCV_ON_INVALID_CONN (0x10)
106#define CQE_ERROR_BITMAP_DATA_TRUNCATED (0x20) 107#define CQE_ERROR_BITMAP_DATA_TRUNCATED (0x20)
108
109/* Union of data bd_opaque/ tq_tid */
110union bd_opaque_tq_union {
111 __le16 bd_opaque;
112 __le16 tq_tid;
113};
107 114
115/* ISCSI SGL entry */
108struct cqe_error_bitmap { 116struct cqe_error_bitmap {
109 u8 cqe_error_status_bits; 117 u8 cqe_error_status_bits;
110#define CQE_ERROR_BITMAP_DIF_ERR_BITS_MASK 0x7 118#define CQE_ERROR_BITMAP_DIF_ERR_BITS_MASK 0x7
111#define CQE_ERROR_BITMAP_DIF_ERR_BITS_SHIFT 0 119#define CQE_ERROR_BITMAP_DIF_ERR_BITS_SHIFT 0
112#define CQE_ERROR_BITMAP_DATA_DIGEST_ERR_MASK 0x1 120#define CQE_ERROR_BITMAP_DATA_DIGEST_ERR_MASK 0x1
113#define CQE_ERROR_BITMAP_DATA_DIGEST_ERR_SHIFT 3 121#define CQE_ERROR_BITMAP_DATA_DIGEST_ERR_SHIFT 3
114#define CQE_ERROR_BITMAP_RCV_ON_INVALID_CONN_MASK 0x1 122#define CQE_ERROR_BITMAP_RCV_ON_INVALID_CONN_MASK 0x1
115#define CQE_ERROR_BITMAP_RCV_ON_INVALID_CONN_SHIFT 4 123#define CQE_ERROR_BITMAP_RCV_ON_INVALID_CONN_SHIFT 4
116#define CQE_ERROR_BITMAP_DATA_TRUNCATED_ERR_MASK 0x1 124#define CQE_ERROR_BITMAP_DATA_TRUNCATED_ERR_MASK 0x1
117#define CQE_ERROR_BITMAP_DATA_TRUNCATED_ERR_SHIFT 5 125#define CQE_ERROR_BITMAP_DATA_TRUNCATED_ERR_SHIFT 5
118#define CQE_ERROR_BITMAP_UNDER_RUN_ERR_MASK 0x1 126#define CQE_ERROR_BITMAP_UNDER_RUN_ERR_MASK 0x1
119#define CQE_ERROR_BITMAP_UNDER_RUN_ERR_SHIFT 6 127#define CQE_ERROR_BITMAP_UNDER_RUN_ERR_SHIFT 6
120#define CQE_ERROR_BITMAP_RESERVED2_MASK 0x1 128#define CQE_ERROR_BITMAP_RESERVED2_MASK 0x1
121#define CQE_ERROR_BITMAP_RESERVED2_SHIFT 7 129#define CQE_ERROR_BITMAP_RESERVED2_SHIFT 7
122}; 130};
123 131
124union cqe_error_status { 132union cqe_error_status {
@@ -126,86 +134,133 @@ union cqe_error_status {
126 struct cqe_error_bitmap error_bits; 134 struct cqe_error_bitmap error_bits;
127}; 135};
128 136
137/* iSCSI Login Response PDU header */
129struct data_hdr { 138struct data_hdr {
130 __le32 data[12]; 139 __le32 data[12];
131}; 140};
132 141
133struct iscsi_async_msg_hdr { 142struct lun_mapper_addr_reserved {
134 __le16 reserved0; 143 struct regpair lun_mapper_addr;
135 u8 flags_attr; 144 u8 reserved0[8];
136#define ISCSI_ASYNC_MSG_HDR_RSRV_MASK 0x7F 145};
137#define ISCSI_ASYNC_MSG_HDR_RSRV_SHIFT 0 146
138#define ISCSI_ASYNC_MSG_HDR_CONST1_MASK 0x1 147/* rdif conetxt for dif on immediate */
139#define ISCSI_ASYNC_MSG_HDR_CONST1_SHIFT 7 148struct dif_on_immediate_params {
140 u8 opcode; 149 __le32 initial_ref_tag;
141 __le32 hdr_second_dword; 150 __le16 application_tag;
142#define ISCSI_ASYNC_MSG_HDR_DATA_SEG_LEN_MASK 0xFFFFFF 151 __le16 application_tag_mask;
143#define ISCSI_ASYNC_MSG_HDR_DATA_SEG_LEN_SHIFT 0 152 __le16 flags1;
144#define ISCSI_ASYNC_MSG_HDR_TOTAL_AHS_LEN_MASK 0xFF 153#define DIF_ON_IMMEDIATE_PARAMS_VALIDATE_GUARD_MASK 0x1
145#define ISCSI_ASYNC_MSG_HDR_TOTAL_AHS_LEN_SHIFT 24 154#define DIF_ON_IMMEDIATE_PARAMS_VALIDATE_GUARD_SHIFT 0
146 struct regpair lun; 155#define DIF_ON_IMMEDIATE_PARAMS_VALIDATE_APP_TAG_MASK 0x1
147 __le32 all_ones; 156#define DIF_ON_IMMEDIATE_PARAMS_VALIDATE_APP_TAG_SHIFT 1
148 __le32 reserved1; 157#define DIF_ON_IMMEDIATE_PARAMS_VALIDATE_REF_TAG_MASK 0x1
149 __le32 stat_sn; 158#define DIF_ON_IMMEDIATE_PARAMS_VALIDATE_REF_TAG_SHIFT 2
150 __le32 exp_cmd_sn; 159#define DIF_ON_IMMEDIATE_PARAMS_FORWARD_GUARD_MASK 0x1
151 __le32 max_cmd_sn; 160#define DIF_ON_IMMEDIATE_PARAMS_FORWARD_GUARD_SHIFT 3
152 __le16 param1_rsrv; 161#define DIF_ON_IMMEDIATE_PARAMS_FORWARD_APP_TAG_MASK 0x1
153 u8 async_vcode; 162#define DIF_ON_IMMEDIATE_PARAMS_FORWARD_APP_TAG_SHIFT 4
154 u8 async_event; 163#define DIF_ON_IMMEDIATE_PARAMS_FORWARD_REF_TAG_MASK 0x1
155 __le16 param3_rsrv; 164#define DIF_ON_IMMEDIATE_PARAMS_FORWARD_REF_TAG_SHIFT 5
156 __le16 param2_rsrv; 165#define DIF_ON_IMMEDIATE_PARAMS_INTERVAL_SIZE_MASK 0x1
157 __le32 reserved7; 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
201/* Union of data/r2t sequence number */
202union iscsi_seq_num {
203 __le16 data_sn;
204 __le16 r2t_sn;
158}; 205};
159 206
160struct iscsi_cmd_hdr { 207/* iSCSI DIF flags */
161 __le16 reserved1; 208struct iscsi_dif_flags {
162 u8 flags_attr; 209 u8 flags;
163#define ISCSI_CMD_HDR_ATTR_MASK 0x7 210#define ISCSI_DIF_FLAGS_PROT_INTERVAL_SIZE_LOG_MASK 0xF
164#define ISCSI_CMD_HDR_ATTR_SHIFT 0 211#define ISCSI_DIF_FLAGS_PROT_INTERVAL_SIZE_LOG_SHIFT 0
165#define ISCSI_CMD_HDR_RSRV_MASK 0x3 212#define ISCSI_DIF_FLAGS_DIF_TO_PEER_MASK 0x1
166#define ISCSI_CMD_HDR_RSRV_SHIFT 3 213#define ISCSI_DIF_FLAGS_DIF_TO_PEER_SHIFT 4
167#define ISCSI_CMD_HDR_WRITE_MASK 0x1 214#define ISCSI_DIF_FLAGS_HOST_INTERFACE_MASK 0x7
168#define ISCSI_CMD_HDR_WRITE_SHIFT 5 215#define ISCSI_DIF_FLAGS_HOST_INTERFACE_SHIFT 5
169#define ISCSI_CMD_HDR_READ_MASK 0x1
170#define ISCSI_CMD_HDR_READ_SHIFT 6
171#define ISCSI_CMD_HDR_FINAL_MASK 0x1
172#define ISCSI_CMD_HDR_FINAL_SHIFT 7
173 u8 hdr_first_byte;
174#define ISCSI_CMD_HDR_OPCODE_MASK 0x3F
175#define ISCSI_CMD_HDR_OPCODE_SHIFT 0
176#define ISCSI_CMD_HDR_IMM_MASK 0x1
177#define ISCSI_CMD_HDR_IMM_SHIFT 6
178#define ISCSI_CMD_HDR_RSRV1_MASK 0x1
179#define ISCSI_CMD_HDR_RSRV1_SHIFT 7
180 __le32 hdr_second_dword;
181#define ISCSI_CMD_HDR_DATA_SEG_LEN_MASK 0xFFFFFF
182#define ISCSI_CMD_HDR_DATA_SEG_LEN_SHIFT 0
183#define ISCSI_CMD_HDR_TOTAL_AHS_LEN_MASK 0xFF
184#define ISCSI_CMD_HDR_TOTAL_AHS_LEN_SHIFT 24
185 struct regpair lun;
186 __le32 itt;
187 __le32 expected_transfer_length;
188 __le32 cmd_sn;
189 __le32 exp_stat_sn;
190 __le32 cdb[4];
191}; 216};
192 217
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
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
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 */
193struct iscsi_common_hdr { 248struct iscsi_common_hdr {
194 u8 hdr_status; 249 u8 hdr_status;
195 u8 hdr_response; 250 u8 hdr_response;
196 u8 hdr_flags; 251 u8 hdr_flags;
197 u8 hdr_first_byte; 252 u8 hdr_first_byte;
198#define ISCSI_COMMON_HDR_OPCODE_MASK 0x3F 253#define ISCSI_COMMON_HDR_OPCODE_MASK 0x3F
199#define ISCSI_COMMON_HDR_OPCODE_SHIFT 0 254#define ISCSI_COMMON_HDR_OPCODE_SHIFT 0
200#define ISCSI_COMMON_HDR_IMM_MASK 0x1 255#define ISCSI_COMMON_HDR_IMM_MASK 0x1
201#define ISCSI_COMMON_HDR_IMM_SHIFT 6 256#define ISCSI_COMMON_HDR_IMM_SHIFT 6
202#define ISCSI_COMMON_HDR_RSRV_MASK 0x1 257#define ISCSI_COMMON_HDR_RSRV_MASK 0x1
203#define ISCSI_COMMON_HDR_RSRV_SHIFT 7 258#define ISCSI_COMMON_HDR_RSRV_SHIFT 7
204 __le32 hdr_second_dword; 259 __le32 hdr_second_dword;
205#define ISCSI_COMMON_HDR_DATA_SEG_LEN_MASK 0xFFFFFF 260#define ISCSI_COMMON_HDR_DATA_SEG_LEN_MASK 0xFFFFFF
206#define ISCSI_COMMON_HDR_DATA_SEG_LEN_SHIFT 0 261#define ISCSI_COMMON_HDR_DATA_SEG_LEN_SHIFT 0
207#define ISCSI_COMMON_HDR_TOTAL_AHS_LEN_MASK 0xFF 262#define ISCSI_COMMON_HDR_TOTAL_AHS_LEN_MASK 0xFF
208#define ISCSI_COMMON_HDR_TOTAL_AHS_LEN_SHIFT 24 263#define ISCSI_COMMON_HDR_TOTAL_AHS_LEN_SHIFT 24
209 struct regpair lun_reserved; 264 struct regpair lun_reserved;
210 __le32 itt; 265 __le32 itt;
211 __le32 ttt; 266 __le32 ttt;
@@ -215,86 +270,60 @@ struct iscsi_common_hdr {
215 __le32 data[3]; 270 __le32 data[3];
216}; 271};
217 272
218struct iscsi_conn_offload_params { 273/* iSCSI Command PDU header */
219 struct regpair sq_pbl_addr; 274struct iscsi_cmd_hdr {
220 struct regpair r2tq_pbl_addr; 275 __le16 reserved1;
221 struct regpair xhq_pbl_addr; 276 u8 flags_attr;
222 struct regpair uhq_pbl_addr; 277#define ISCSI_CMD_HDR_ATTR_MASK 0x7
223 __le32 initial_ack; 278#define ISCSI_CMD_HDR_ATTR_SHIFT 0
224 __le16 physical_q0; 279#define ISCSI_CMD_HDR_RSRV_MASK 0x3
225 __le16 physical_q1; 280#define ISCSI_CMD_HDR_RSRV_SHIFT 3
226 u8 flags; 281#define ISCSI_CMD_HDR_WRITE_MASK 0x1
227#define ISCSI_CONN_OFFLOAD_PARAMS_TCP_ON_CHIP_1B_MASK 0x1 282#define ISCSI_CMD_HDR_WRITE_SHIFT 5
228#define ISCSI_CONN_OFFLOAD_PARAMS_TCP_ON_CHIP_1B_SHIFT 0 283#define ISCSI_CMD_HDR_READ_MASK 0x1
229#define ISCSI_CONN_OFFLOAD_PARAMS_TARGET_MODE_MASK 0x1 284#define ISCSI_CMD_HDR_READ_SHIFT 6
230#define ISCSI_CONN_OFFLOAD_PARAMS_TARGET_MODE_SHIFT 1 285#define ISCSI_CMD_HDR_FINAL_MASK 0x1
231#define ISCSI_CONN_OFFLOAD_PARAMS_RESTRICTED_MODE_MASK 0x1 286#define ISCSI_CMD_HDR_FINAL_SHIFT 7
232#define ISCSI_CONN_OFFLOAD_PARAMS_RESTRICTED_MODE_SHIFT 2 287 u8 hdr_first_byte;
233#define ISCSI_CONN_OFFLOAD_PARAMS_RESERVED1_MASK 0x1F 288#define ISCSI_CMD_HDR_OPCODE_MASK 0x3F
234#define ISCSI_CONN_OFFLOAD_PARAMS_RESERVED1_SHIFT 3 289#define ISCSI_CMD_HDR_OPCODE_SHIFT 0
235 u8 pbl_page_size_log; 290#define ISCSI_CMD_HDR_IMM_MASK 0x1
236 u8 pbe_page_size_log; 291#define ISCSI_CMD_HDR_IMM_SHIFT 6
237 u8 default_cq; 292#define ISCSI_CMD_HDR_RSRV1_MASK 0x1
238 __le32 stat_sn; 293#define ISCSI_CMD_HDR_RSRV1_SHIFT 7
239}; 294 __le32 hdr_second_dword;
240 295#define ISCSI_CMD_HDR_DATA_SEG_LEN_MASK 0xFFFFFF
241struct iscsi_slow_path_hdr { 296#define ISCSI_CMD_HDR_DATA_SEG_LEN_SHIFT 0
242 u8 op_code; 297#define ISCSI_CMD_HDR_TOTAL_AHS_LEN_MASK 0xFF
243 u8 flags; 298#define ISCSI_CMD_HDR_TOTAL_AHS_LEN_SHIFT 24
244#define ISCSI_SLOW_PATH_HDR_RESERVED0_MASK 0xF 299 struct regpair lun;
245#define ISCSI_SLOW_PATH_HDR_RESERVED0_SHIFT 0 300 __le32 itt;
246#define ISCSI_SLOW_PATH_HDR_LAYER_CODE_MASK 0x7 301 __le32 expected_transfer_length;
247#define ISCSI_SLOW_PATH_HDR_LAYER_CODE_SHIFT 4 302 __le32 cmd_sn;
248#define ISCSI_SLOW_PATH_HDR_RESERVED1_MASK 0x1
249#define ISCSI_SLOW_PATH_HDR_RESERVED1_SHIFT 7
250};
251
252struct iscsi_conn_update_ramrod_params {
253 struct iscsi_slow_path_hdr hdr;
254 __le16 conn_id;
255 __le32 fw_cid;
256 u8 flags;
257#define ISCSI_CONN_UPDATE_RAMROD_PARAMS_HD_EN_MASK 0x1
258#define ISCSI_CONN_UPDATE_RAMROD_PARAMS_HD_EN_SHIFT 0
259#define ISCSI_CONN_UPDATE_RAMROD_PARAMS_DD_EN_MASK 0x1
260#define ISCSI_CONN_UPDATE_RAMROD_PARAMS_DD_EN_SHIFT 1
261#define ISCSI_CONN_UPDATE_RAMROD_PARAMS_INITIAL_R2T_MASK 0x1
262#define ISCSI_CONN_UPDATE_RAMROD_PARAMS_INITIAL_R2T_SHIFT 2
263#define ISCSI_CONN_UPDATE_RAMROD_PARAMS_IMMEDIATE_DATA_MASK 0x1
264#define ISCSI_CONN_UPDATE_RAMROD_PARAMS_IMMEDIATE_DATA_SHIFT 3
265#define ISCSI_CONN_UPDATE_RAMROD_PARAMS_DIF_BLOCK_SIZE_MASK 0x1
266#define ISCSI_CONN_UPDATE_RAMROD_PARAMS_DIF_BLOCK_SIZE_SHIFT 4
267#define ISCSI_CONN_UPDATE_RAMROD_PARAMS_DIF_ON_HOST_EN_MASK 0x1
268#define ISCSI_CONN_UPDATE_RAMROD_PARAMS_DIF_ON_HOST_EN_SHIFT 5
269#define ISCSI_CONN_UPDATE_RAMROD_PARAMS_RESERVED1_MASK 0x3
270#define ISCSI_CONN_UPDATE_RAMROD_PARAMS_RESERVED1_SHIFT 6
271 u8 reserved0[3];
272 __le32 max_seq_size;
273 __le32 max_send_pdu_length;
274 __le32 max_recv_pdu_length;
275 __le32 first_seq_length;
276 __le32 exp_stat_sn; 303 __le32 exp_stat_sn;
304 __le32 cdb[4];
277}; 305};
278 306
307/* iSCSI Command PDU header with Extended CDB (Initiator Mode) */
279struct iscsi_ext_cdb_cmd_hdr { 308struct iscsi_ext_cdb_cmd_hdr {
280 __le16 reserved1; 309 __le16 reserved1;
281 u8 flags_attr; 310 u8 flags_attr;
282#define ISCSI_EXT_CDB_CMD_HDR_ATTR_MASK 0x7 311#define ISCSI_EXT_CDB_CMD_HDR_ATTR_MASK 0x7
283#define ISCSI_EXT_CDB_CMD_HDR_ATTR_SHIFT 0 312#define ISCSI_EXT_CDB_CMD_HDR_ATTR_SHIFT 0
284#define ISCSI_EXT_CDB_CMD_HDR_RSRV_MASK 0x3 313#define ISCSI_EXT_CDB_CMD_HDR_RSRV_MASK 0x3
285#define ISCSI_EXT_CDB_CMD_HDR_RSRV_SHIFT 3 314#define ISCSI_EXT_CDB_CMD_HDR_RSRV_SHIFT 3
286#define ISCSI_EXT_CDB_CMD_HDR_WRITE_MASK 0x1 315#define ISCSI_EXT_CDB_CMD_HDR_WRITE_MASK 0x1
287#define ISCSI_EXT_CDB_CMD_HDR_WRITE_SHIFT 5 316#define ISCSI_EXT_CDB_CMD_HDR_WRITE_SHIFT 5
288#define ISCSI_EXT_CDB_CMD_HDR_READ_MASK 0x1 317#define ISCSI_EXT_CDB_CMD_HDR_READ_MASK 0x1
289#define ISCSI_EXT_CDB_CMD_HDR_READ_SHIFT 6 318#define ISCSI_EXT_CDB_CMD_HDR_READ_SHIFT 6
290#define ISCSI_EXT_CDB_CMD_HDR_FINAL_MASK 0x1 319#define ISCSI_EXT_CDB_CMD_HDR_FINAL_MASK 0x1
291#define ISCSI_EXT_CDB_CMD_HDR_FINAL_SHIFT 7 320#define ISCSI_EXT_CDB_CMD_HDR_FINAL_SHIFT 7
292 u8 opcode; 321 u8 opcode;
293 __le32 hdr_second_dword; 322 __le32 hdr_second_dword;
294#define ISCSI_EXT_CDB_CMD_HDR_DATA_SEG_LEN_MASK 0xFFFFFF 323#define ISCSI_EXT_CDB_CMD_HDR_DATA_SEG_LEN_MASK 0xFFFFFF
295#define ISCSI_EXT_CDB_CMD_HDR_DATA_SEG_LEN_SHIFT 0 324#define ISCSI_EXT_CDB_CMD_HDR_DATA_SEG_LEN_SHIFT 0
296#define ISCSI_EXT_CDB_CMD_HDR_CDB_SIZE_MASK 0xFF 325#define ISCSI_EXT_CDB_CMD_HDR_CDB_SIZE_MASK 0xFF
297#define ISCSI_EXT_CDB_CMD_HDR_CDB_SIZE_SHIFT 24 326#define ISCSI_EXT_CDB_CMD_HDR_CDB_SIZE_SHIFT 24
298 struct regpair lun; 327 struct regpair lun;
299 __le32 itt; 328 __le32 itt;
300 __le32 expected_transfer_length; 329 __le32 expected_transfer_length;
@@ -303,26 +332,27 @@ struct iscsi_ext_cdb_cmd_hdr {
303 struct scsi_sge cdb_sge; 332 struct scsi_sge cdb_sge;
304}; 333};
305 334
335/* iSCSI login request PDU header */
306struct iscsi_login_req_hdr { 336struct iscsi_login_req_hdr {
307 u8 version_min; 337 u8 version_min;
308 u8 version_max; 338 u8 version_max;
309 u8 flags_attr; 339 u8 flags_attr;
310#define ISCSI_LOGIN_REQ_HDR_NSG_MASK 0x3 340#define ISCSI_LOGIN_REQ_HDR_NSG_MASK 0x3
311#define ISCSI_LOGIN_REQ_HDR_NSG_SHIFT 0 341#define ISCSI_LOGIN_REQ_HDR_NSG_SHIFT 0
312#define ISCSI_LOGIN_REQ_HDR_CSG_MASK 0x3 342#define ISCSI_LOGIN_REQ_HDR_CSG_MASK 0x3
313#define ISCSI_LOGIN_REQ_HDR_CSG_SHIFT 2 343#define ISCSI_LOGIN_REQ_HDR_CSG_SHIFT 2
314#define ISCSI_LOGIN_REQ_HDR_RSRV_MASK 0x3 344#define ISCSI_LOGIN_REQ_HDR_RSRV_MASK 0x3
315#define ISCSI_LOGIN_REQ_HDR_RSRV_SHIFT 4 345#define ISCSI_LOGIN_REQ_HDR_RSRV_SHIFT 4
316#define ISCSI_LOGIN_REQ_HDR_C_MASK 0x1 346#define ISCSI_LOGIN_REQ_HDR_C_MASK 0x1
317#define ISCSI_LOGIN_REQ_HDR_C_SHIFT 6 347#define ISCSI_LOGIN_REQ_HDR_C_SHIFT 6
318#define ISCSI_LOGIN_REQ_HDR_T_MASK 0x1 348#define ISCSI_LOGIN_REQ_HDR_T_MASK 0x1
319#define ISCSI_LOGIN_REQ_HDR_T_SHIFT 7 349#define ISCSI_LOGIN_REQ_HDR_T_SHIFT 7
320 u8 opcode; 350 u8 opcode;
321 __le32 hdr_second_dword; 351 __le32 hdr_second_dword;
322#define ISCSI_LOGIN_REQ_HDR_DATA_SEG_LEN_MASK 0xFFFFFF 352#define ISCSI_LOGIN_REQ_HDR_DATA_SEG_LEN_MASK 0xFFFFFF
323#define ISCSI_LOGIN_REQ_HDR_DATA_SEG_LEN_SHIFT 0 353#define ISCSI_LOGIN_REQ_HDR_DATA_SEG_LEN_SHIFT 0
324#define ISCSI_LOGIN_REQ_HDR_TOTAL_AHS_LEN_MASK 0xFF 354#define ISCSI_LOGIN_REQ_HDR_TOTAL_AHS_LEN_MASK 0xFF
325#define ISCSI_LOGIN_REQ_HDR_TOTAL_AHS_LEN_SHIFT 24 355#define ISCSI_LOGIN_REQ_HDR_TOTAL_AHS_LEN_SHIFT 24
326 __le32 isid_tabc; 356 __le32 isid_tabc;
327 __le16 tsih; 357 __le16 tsih;
328 __le16 isid_d; 358 __le16 isid_d;
@@ -334,6 +364,7 @@ struct iscsi_login_req_hdr {
334 __le32 reserved2[4]; 364 __le32 reserved2[4];
335}; 365};
336 366
367/* iSCSI logout request PDU header */
337struct iscsi_logout_req_hdr { 368struct iscsi_logout_req_hdr {
338 __le16 reserved0; 369 __le16 reserved0;
339 u8 reason_code; 370 u8 reason_code;
@@ -348,13 +379,14 @@ struct iscsi_logout_req_hdr {
348 __le32 reserved4[4]; 379 __le32 reserved4[4];
349}; 380};
350 381
382/* iSCSI Data-out PDU header */
351struct iscsi_data_out_hdr { 383struct iscsi_data_out_hdr {
352 __le16 reserved1; 384 __le16 reserved1;
353 u8 flags_attr; 385 u8 flags_attr;
354#define ISCSI_DATA_OUT_HDR_RSRV_MASK 0x7F 386#define ISCSI_DATA_OUT_HDR_RSRV_MASK 0x7F
355#define ISCSI_DATA_OUT_HDR_RSRV_SHIFT 0 387#define ISCSI_DATA_OUT_HDR_RSRV_SHIFT 0
356#define ISCSI_DATA_OUT_HDR_FINAL_MASK 0x1 388#define ISCSI_DATA_OUT_HDR_FINAL_MASK 0x1
357#define ISCSI_DATA_OUT_HDR_FINAL_SHIFT 7 389#define ISCSI_DATA_OUT_HDR_FINAL_SHIFT 7
358 u8 opcode; 390 u8 opcode;
359 __le32 reserved2; 391 __le32 reserved2;
360 struct regpair lun; 392 struct regpair lun;
@@ -368,22 +400,23 @@ struct iscsi_data_out_hdr {
368 __le32 reserved5; 400 __le32 reserved5;
369}; 401};
370 402
403/* iSCSI Data-in PDU header */
371struct iscsi_data_in_hdr { 404struct iscsi_data_in_hdr {
372 u8 status_rsvd; 405 u8 status_rsvd;
373 u8 reserved1; 406 u8 reserved1;
374 u8 flags; 407 u8 flags;
375#define ISCSI_DATA_IN_HDR_STATUS_MASK 0x1 408#define ISCSI_DATA_IN_HDR_STATUS_MASK 0x1
376#define ISCSI_DATA_IN_HDR_STATUS_SHIFT 0 409#define ISCSI_DATA_IN_HDR_STATUS_SHIFT 0
377#define ISCSI_DATA_IN_HDR_UNDERFLOW_MASK 0x1 410#define ISCSI_DATA_IN_HDR_UNDERFLOW_MASK 0x1
378#define ISCSI_DATA_IN_HDR_UNDERFLOW_SHIFT 1 411#define ISCSI_DATA_IN_HDR_UNDERFLOW_SHIFT 1
379#define ISCSI_DATA_IN_HDR_OVERFLOW_MASK 0x1 412#define ISCSI_DATA_IN_HDR_OVERFLOW_MASK 0x1
380#define ISCSI_DATA_IN_HDR_OVERFLOW_SHIFT 2 413#define ISCSI_DATA_IN_HDR_OVERFLOW_SHIFT 2
381#define ISCSI_DATA_IN_HDR_RSRV_MASK 0x7 414#define ISCSI_DATA_IN_HDR_RSRV_MASK 0x7
382#define ISCSI_DATA_IN_HDR_RSRV_SHIFT 3 415#define ISCSI_DATA_IN_HDR_RSRV_SHIFT 3
383#define ISCSI_DATA_IN_HDR_ACK_MASK 0x1 416#define ISCSI_DATA_IN_HDR_ACK_MASK 0x1
384#define ISCSI_DATA_IN_HDR_ACK_SHIFT 6 417#define ISCSI_DATA_IN_HDR_ACK_SHIFT 6
385#define ISCSI_DATA_IN_HDR_FINAL_MASK 0x1 418#define ISCSI_DATA_IN_HDR_FINAL_MASK 0x1
386#define ISCSI_DATA_IN_HDR_FINAL_SHIFT 7 419#define ISCSI_DATA_IN_HDR_FINAL_SHIFT 7
387 u8 opcode; 420 u8 opcode;
388 __le32 reserved2; 421 __le32 reserved2;
389 struct regpair lun; 422 struct regpair lun;
@@ -397,6 +430,7 @@ struct iscsi_data_in_hdr {
397 __le32 residual_count; 430 __le32 residual_count;
398}; 431};
399 432
433/* iSCSI R2T PDU header */
400struct iscsi_r2t_hdr { 434struct iscsi_r2t_hdr {
401 u8 reserved0[3]; 435 u8 reserved0[3];
402 u8 opcode; 436 u8 opcode;
@@ -412,13 +446,14 @@ struct iscsi_r2t_hdr {
412 __le32 desired_data_trns_len; 446 __le32 desired_data_trns_len;
413}; 447};
414 448
449/* iSCSI NOP-out PDU header */
415struct iscsi_nop_out_hdr { 450struct iscsi_nop_out_hdr {
416 __le16 reserved1; 451 __le16 reserved1;
417 u8 flags_attr; 452 u8 flags_attr;
418#define ISCSI_NOP_OUT_HDR_RSRV_MASK 0x7F 453#define ISCSI_NOP_OUT_HDR_RSRV_MASK 0x7F
419#define ISCSI_NOP_OUT_HDR_RSRV_SHIFT 0 454#define ISCSI_NOP_OUT_HDR_RSRV_SHIFT 0
420#define ISCSI_NOP_OUT_HDR_CONST1_MASK 0x1 455#define ISCSI_NOP_OUT_HDR_CONST1_MASK 0x1
421#define ISCSI_NOP_OUT_HDR_CONST1_SHIFT 7 456#define ISCSI_NOP_OUT_HDR_CONST1_SHIFT 7
422 u8 opcode; 457 u8 opcode;
423 __le32 reserved2; 458 __le32 reserved2;
424 struct regpair lun; 459 struct regpair lun;
@@ -432,19 +467,20 @@ struct iscsi_nop_out_hdr {
432 __le32 reserved6; 467 __le32 reserved6;
433}; 468};
434 469
470/* iSCSI NOP-in PDU header */
435struct iscsi_nop_in_hdr { 471struct iscsi_nop_in_hdr {
436 __le16 reserved0; 472 __le16 reserved0;
437 u8 flags_attr; 473 u8 flags_attr;
438#define ISCSI_NOP_IN_HDR_RSRV_MASK 0x7F 474#define ISCSI_NOP_IN_HDR_RSRV_MASK 0x7F
439#define ISCSI_NOP_IN_HDR_RSRV_SHIFT 0 475#define ISCSI_NOP_IN_HDR_RSRV_SHIFT 0
440#define ISCSI_NOP_IN_HDR_CONST1_MASK 0x1 476#define ISCSI_NOP_IN_HDR_CONST1_MASK 0x1
441#define ISCSI_NOP_IN_HDR_CONST1_SHIFT 7 477#define ISCSI_NOP_IN_HDR_CONST1_SHIFT 7
442 u8 opcode; 478 u8 opcode;
443 __le32 hdr_second_dword; 479 __le32 hdr_second_dword;
444#define ISCSI_NOP_IN_HDR_DATA_SEG_LEN_MASK 0xFFFFFF 480#define ISCSI_NOP_IN_HDR_DATA_SEG_LEN_MASK 0xFFFFFF
445#define ISCSI_NOP_IN_HDR_DATA_SEG_LEN_SHIFT 0 481#define ISCSI_NOP_IN_HDR_DATA_SEG_LEN_SHIFT 0
446#define ISCSI_NOP_IN_HDR_TOTAL_AHS_LEN_MASK 0xFF 482#define ISCSI_NOP_IN_HDR_TOTAL_AHS_LEN_MASK 0xFF
447#define ISCSI_NOP_IN_HDR_TOTAL_AHS_LEN_SHIFT 24 483#define ISCSI_NOP_IN_HDR_TOTAL_AHS_LEN_SHIFT 24
448 struct regpair lun; 484 struct regpair lun;
449 __le32 itt; 485 __le32 itt;
450 __le32 ttt; 486 __le32 ttt;
@@ -456,26 +492,27 @@ struct iscsi_nop_in_hdr {
456 __le32 reserved7; 492 __le32 reserved7;
457}; 493};
458 494
495/* iSCSI Login Response PDU header */
459struct iscsi_login_response_hdr { 496struct iscsi_login_response_hdr {
460 u8 version_active; 497 u8 version_active;
461 u8 version_max; 498 u8 version_max;
462 u8 flags_attr; 499 u8 flags_attr;
463#define ISCSI_LOGIN_RESPONSE_HDR_NSG_MASK 0x3 500#define ISCSI_LOGIN_RESPONSE_HDR_NSG_MASK 0x3
464#define ISCSI_LOGIN_RESPONSE_HDR_NSG_SHIFT 0 501#define ISCSI_LOGIN_RESPONSE_HDR_NSG_SHIFT 0
465#define ISCSI_LOGIN_RESPONSE_HDR_CSG_MASK 0x3 502#define ISCSI_LOGIN_RESPONSE_HDR_CSG_MASK 0x3
466#define ISCSI_LOGIN_RESPONSE_HDR_CSG_SHIFT 2 503#define ISCSI_LOGIN_RESPONSE_HDR_CSG_SHIFT 2
467#define ISCSI_LOGIN_RESPONSE_HDR_RSRV_MASK 0x3 504#define ISCSI_LOGIN_RESPONSE_HDR_RSRV_MASK 0x3
468#define ISCSI_LOGIN_RESPONSE_HDR_RSRV_SHIFT 4 505#define ISCSI_LOGIN_RESPONSE_HDR_RSRV_SHIFT 4
469#define ISCSI_LOGIN_RESPONSE_HDR_C_MASK 0x1 506#define ISCSI_LOGIN_RESPONSE_HDR_C_MASK 0x1
470#define ISCSI_LOGIN_RESPONSE_HDR_C_SHIFT 6 507#define ISCSI_LOGIN_RESPONSE_HDR_C_SHIFT 6
471#define ISCSI_LOGIN_RESPONSE_HDR_T_MASK 0x1 508#define ISCSI_LOGIN_RESPONSE_HDR_T_MASK 0x1
472#define ISCSI_LOGIN_RESPONSE_HDR_T_SHIFT 7 509#define ISCSI_LOGIN_RESPONSE_HDR_T_SHIFT 7
473 u8 opcode; 510 u8 opcode;
474 __le32 hdr_second_dword; 511 __le32 hdr_second_dword;
475#define ISCSI_LOGIN_RESPONSE_HDR_DATA_SEG_LEN_MASK 0xFFFFFF 512#define ISCSI_LOGIN_RESPONSE_HDR_DATA_SEG_LEN_MASK 0xFFFFFF
476#define ISCSI_LOGIN_RESPONSE_HDR_DATA_SEG_LEN_SHIFT 0 513#define ISCSI_LOGIN_RESPONSE_HDR_DATA_SEG_LEN_SHIFT 0
477#define ISCSI_LOGIN_RESPONSE_HDR_TOTAL_AHS_LEN_MASK 0xFF 514#define ISCSI_LOGIN_RESPONSE_HDR_TOTAL_AHS_LEN_MASK 0xFF
478#define ISCSI_LOGIN_RESPONSE_HDR_TOTAL_AHS_LEN_SHIFT 24 515#define ISCSI_LOGIN_RESPONSE_HDR_TOTAL_AHS_LEN_SHIFT 24
479 __le32 isid_tabc; 516 __le32 isid_tabc;
480 __le16 tsih; 517 __le16 tsih;
481 __le16 isid_d; 518 __le16 isid_d;
@@ -490,16 +527,17 @@ struct iscsi_login_response_hdr {
490 __le32 reserved4[2]; 527 __le32 reserved4[2];
491}; 528};
492 529
530/* iSCSI Logout Response PDU header */
493struct iscsi_logout_response_hdr { 531struct iscsi_logout_response_hdr {
494 u8 reserved1; 532 u8 reserved1;
495 u8 response; 533 u8 response;
496 u8 flags; 534 u8 flags;
497 u8 opcode; 535 u8 opcode;
498 __le32 hdr_second_dword; 536 __le32 hdr_second_dword;
499#define ISCSI_LOGOUT_RESPONSE_HDR_DATA_SEG_LEN_MASK 0xFFFFFF 537#define ISCSI_LOGOUT_RESPONSE_HDR_DATA_SEG_LEN_MASK 0xFFFFFF
500#define ISCSI_LOGOUT_RESPONSE_HDR_DATA_SEG_LEN_SHIFT 0 538#define ISCSI_LOGOUT_RESPONSE_HDR_DATA_SEG_LEN_SHIFT 0
501#define ISCSI_LOGOUT_RESPONSE_HDR_TOTAL_AHS_LEN_MASK 0xFF 539#define ISCSI_LOGOUT_RESPONSE_HDR_TOTAL_AHS_LEN_MASK 0xFF
502#define ISCSI_LOGOUT_RESPONSE_HDR_TOTAL_AHS_LEN_SHIFT 24 540#define ISCSI_LOGOUT_RESPONSE_HDR_TOTAL_AHS_LEN_SHIFT 24
503 __le32 reserved2[2]; 541 __le32 reserved2[2];
504 __le32 itt; 542 __le32 itt;
505 __le32 reserved3; 543 __le32 reserved3;
@@ -512,21 +550,22 @@ struct iscsi_logout_response_hdr {
512 __le32 reserved5[1]; 550 __le32 reserved5[1];
513}; 551};
514 552
553/* iSCSI Text Request PDU header */
515struct iscsi_text_request_hdr { 554struct iscsi_text_request_hdr {
516 __le16 reserved0; 555 __le16 reserved0;
517 u8 flags_attr; 556 u8 flags_attr;
518#define ISCSI_TEXT_REQUEST_HDR_RSRV_MASK 0x3F 557#define ISCSI_TEXT_REQUEST_HDR_RSRV_MASK 0x3F
519#define ISCSI_TEXT_REQUEST_HDR_RSRV_SHIFT 0 558#define ISCSI_TEXT_REQUEST_HDR_RSRV_SHIFT 0
520#define ISCSI_TEXT_REQUEST_HDR_C_MASK 0x1 559#define ISCSI_TEXT_REQUEST_HDR_C_MASK 0x1
521#define ISCSI_TEXT_REQUEST_HDR_C_SHIFT 6 560#define ISCSI_TEXT_REQUEST_HDR_C_SHIFT 6
522#define ISCSI_TEXT_REQUEST_HDR_F_MASK 0x1 561#define ISCSI_TEXT_REQUEST_HDR_F_MASK 0x1
523#define ISCSI_TEXT_REQUEST_HDR_F_SHIFT 7 562#define ISCSI_TEXT_REQUEST_HDR_F_SHIFT 7
524 u8 opcode; 563 u8 opcode;
525 __le32 hdr_second_dword; 564 __le32 hdr_second_dword;
526#define ISCSI_TEXT_REQUEST_HDR_DATA_SEG_LEN_MASK 0xFFFFFF 565#define ISCSI_TEXT_REQUEST_HDR_DATA_SEG_LEN_MASK 0xFFFFFF
527#define ISCSI_TEXT_REQUEST_HDR_DATA_SEG_LEN_SHIFT 0 566#define ISCSI_TEXT_REQUEST_HDR_DATA_SEG_LEN_SHIFT 0
528#define ISCSI_TEXT_REQUEST_HDR_TOTAL_AHS_LEN_MASK 0xFF 567#define ISCSI_TEXT_REQUEST_HDR_TOTAL_AHS_LEN_MASK 0xFF
529#define ISCSI_TEXT_REQUEST_HDR_TOTAL_AHS_LEN_SHIFT 24 568#define ISCSI_TEXT_REQUEST_HDR_TOTAL_AHS_LEN_SHIFT 24
530 struct regpair lun; 569 struct regpair lun;
531 __le32 itt; 570 __le32 itt;
532 __le32 ttt; 571 __le32 ttt;
@@ -535,21 +574,22 @@ struct iscsi_text_request_hdr {
535 __le32 reserved4[4]; 574 __le32 reserved4[4];
536}; 575};
537 576
577/* iSCSI Text Response PDU header */
538struct iscsi_text_response_hdr { 578struct iscsi_text_response_hdr {
539 __le16 reserved1; 579 __le16 reserved1;
540 u8 flags; 580 u8 flags;
541#define ISCSI_TEXT_RESPONSE_HDR_RSRV_MASK 0x3F 581#define ISCSI_TEXT_RESPONSE_HDR_RSRV_MASK 0x3F
542#define ISCSI_TEXT_RESPONSE_HDR_RSRV_SHIFT 0 582#define ISCSI_TEXT_RESPONSE_HDR_RSRV_SHIFT 0
543#define ISCSI_TEXT_RESPONSE_HDR_C_MASK 0x1 583#define ISCSI_TEXT_RESPONSE_HDR_C_MASK 0x1
544#define ISCSI_TEXT_RESPONSE_HDR_C_SHIFT 6 584#define ISCSI_TEXT_RESPONSE_HDR_C_SHIFT 6
545#define ISCSI_TEXT_RESPONSE_HDR_F_MASK 0x1 585#define ISCSI_TEXT_RESPONSE_HDR_F_MASK 0x1
546#define ISCSI_TEXT_RESPONSE_HDR_F_SHIFT 7 586#define ISCSI_TEXT_RESPONSE_HDR_F_SHIFT 7
547 u8 opcode; 587 u8 opcode;
548 __le32 hdr_second_dword; 588 __le32 hdr_second_dword;
549#define ISCSI_TEXT_RESPONSE_HDR_DATA_SEG_LEN_MASK 0xFFFFFF 589#define ISCSI_TEXT_RESPONSE_HDR_DATA_SEG_LEN_MASK 0xFFFFFF
550#define ISCSI_TEXT_RESPONSE_HDR_DATA_SEG_LEN_SHIFT 0 590#define ISCSI_TEXT_RESPONSE_HDR_DATA_SEG_LEN_SHIFT 0
551#define ISCSI_TEXT_RESPONSE_HDR_TOTAL_AHS_LEN_MASK 0xFF 591#define ISCSI_TEXT_RESPONSE_HDR_TOTAL_AHS_LEN_MASK 0xFF
552#define ISCSI_TEXT_RESPONSE_HDR_TOTAL_AHS_LEN_SHIFT 24 592#define ISCSI_TEXT_RESPONSE_HDR_TOTAL_AHS_LEN_SHIFT 24
553 struct regpair lun; 593 struct regpair lun;
554 __le32 itt; 594 __le32 itt;
555 __le32 ttt; 595 __le32 ttt;
@@ -559,15 +599,16 @@ struct iscsi_text_response_hdr {
559 __le32 reserved4[3]; 599 __le32 reserved4[3];
560}; 600};
561 601
602/* iSCSI TMF Request PDU header */
562struct iscsi_tmf_request_hdr { 603struct iscsi_tmf_request_hdr {
563 __le16 reserved0; 604 __le16 reserved0;
564 u8 function; 605 u8 function;
565 u8 opcode; 606 u8 opcode;
566 __le32 hdr_second_dword; 607 __le32 hdr_second_dword;
567#define ISCSI_TMF_REQUEST_HDR_DATA_SEG_LEN_MASK 0xFFFFFF 608#define ISCSI_TMF_REQUEST_HDR_DATA_SEG_LEN_MASK 0xFFFFFF
568#define ISCSI_TMF_REQUEST_HDR_DATA_SEG_LEN_SHIFT 0 609#define ISCSI_TMF_REQUEST_HDR_DATA_SEG_LEN_SHIFT 0
569#define ISCSI_TMF_REQUEST_HDR_TOTAL_AHS_LEN_MASK 0xFF 610#define ISCSI_TMF_REQUEST_HDR_TOTAL_AHS_LEN_MASK 0xFF
570#define ISCSI_TMF_REQUEST_HDR_TOTAL_AHS_LEN_SHIFT 24 611#define ISCSI_TMF_REQUEST_HDR_TOTAL_AHS_LEN_SHIFT 24
571 struct regpair lun; 612 struct regpair lun;
572 __le32 itt; 613 __le32 itt;
573 __le32 rtt; 614 __le32 rtt;
@@ -584,10 +625,10 @@ struct iscsi_tmf_response_hdr {
584 u8 hdr_flags; 625 u8 hdr_flags;
585 u8 opcode; 626 u8 opcode;
586 __le32 hdr_second_dword; 627 __le32 hdr_second_dword;
587#define ISCSI_TMF_RESPONSE_HDR_DATA_SEG_LEN_MASK 0xFFFFFF 628#define ISCSI_TMF_RESPONSE_HDR_DATA_SEG_LEN_MASK 0xFFFFFF
588#define ISCSI_TMF_RESPONSE_HDR_DATA_SEG_LEN_SHIFT 0 629#define ISCSI_TMF_RESPONSE_HDR_DATA_SEG_LEN_SHIFT 0
589#define ISCSI_TMF_RESPONSE_HDR_TOTAL_AHS_LEN_MASK 0xFF 630#define ISCSI_TMF_RESPONSE_HDR_TOTAL_AHS_LEN_MASK 0xFF
590#define ISCSI_TMF_RESPONSE_HDR_TOTAL_AHS_LEN_SHIFT 24 631#define ISCSI_TMF_RESPONSE_HDR_TOTAL_AHS_LEN_SHIFT 24
591 struct regpair reserved0; 632 struct regpair reserved0;
592 __le32 itt; 633 __le32 itt;
593 __le32 reserved1; 634 __le32 reserved1;
@@ -597,16 +638,17 @@ struct iscsi_tmf_response_hdr {
597 __le32 reserved4[3]; 638 __le32 reserved4[3];
598}; 639};
599 640
641/* iSCSI Response PDU header */
600struct iscsi_response_hdr { 642struct iscsi_response_hdr {
601 u8 hdr_status; 643 u8 hdr_status;
602 u8 hdr_response; 644 u8 hdr_response;
603 u8 hdr_flags; 645 u8 hdr_flags;
604 u8 opcode; 646 u8 opcode;
605 __le32 hdr_second_dword; 647 __le32 hdr_second_dword;
606#define ISCSI_RESPONSE_HDR_DATA_SEG_LEN_MASK 0xFFFFFF 648#define ISCSI_RESPONSE_HDR_DATA_SEG_LEN_MASK 0xFFFFFF
607#define ISCSI_RESPONSE_HDR_DATA_SEG_LEN_SHIFT 0 649#define ISCSI_RESPONSE_HDR_DATA_SEG_LEN_SHIFT 0
608#define ISCSI_RESPONSE_HDR_TOTAL_AHS_LEN_MASK 0xFF 650#define ISCSI_RESPONSE_HDR_TOTAL_AHS_LEN_MASK 0xFF
609#define ISCSI_RESPONSE_HDR_TOTAL_AHS_LEN_SHIFT 24 651#define ISCSI_RESPONSE_HDR_TOTAL_AHS_LEN_SHIFT 24
610 struct regpair lun; 652 struct regpair lun;
611 __le32 itt; 653 __le32 itt;
612 __le32 snack_tag; 654 __le32 snack_tag;
@@ -618,16 +660,17 @@ struct iscsi_response_hdr {
618 __le32 residual_count; 660 __le32 residual_count;
619}; 661};
620 662
663/* iSCSI Reject PDU header */
621struct iscsi_reject_hdr { 664struct iscsi_reject_hdr {
622 u8 reserved4; 665 u8 reserved4;
623 u8 hdr_reason; 666 u8 hdr_reason;
624 u8 hdr_flags; 667 u8 hdr_flags;
625 u8 opcode; 668 u8 opcode;
626 __le32 hdr_second_dword; 669 __le32 hdr_second_dword;
627#define ISCSI_REJECT_HDR_DATA_SEG_LEN_MASK 0xFFFFFF 670#define ISCSI_REJECT_HDR_DATA_SEG_LEN_MASK 0xFFFFFF
628#define ISCSI_REJECT_HDR_DATA_SEG_LEN_SHIFT 0 671#define ISCSI_REJECT_HDR_DATA_SEG_LEN_SHIFT 0
629#define ISCSI_REJECT_HDR_TOTAL_AHS_LEN_MASK 0xFF 672#define ISCSI_REJECT_HDR_TOTAL_AHS_LEN_MASK 0xFF
630#define ISCSI_REJECT_HDR_TOTAL_AHS_LEN_SHIFT 24 673#define ISCSI_REJECT_HDR_TOTAL_AHS_LEN_SHIFT 24
631 struct regpair reserved0; 674 struct regpair reserved0;
632 __le32 all_ones; 675 __le32 all_ones;
633 __le32 reserved2; 676 __le32 reserved2;
@@ -638,6 +681,35 @@ struct iscsi_reject_hdr {
638 __le32 reserved3[2]; 681 __le32 reserved3[2];
639}; 682};
640 683
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 */
641union iscsi_task_hdr { 713union iscsi_task_hdr {
642 struct iscsi_common_hdr common; 714 struct iscsi_common_hdr common;
643 struct data_hdr data; 715 struct data_hdr data;
@@ -661,6 +733,348 @@ union iscsi_task_hdr {
661 struct iscsi_async_msg_hdr async_msg; 733 struct iscsi_async_msg_hdr async_msg;
662}; 734};
663 735
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
743struct e4_ystorm_iscsi_task_ag_ctx {
744 u8 reserved;
745 u8 byte1;
746 __le16 word0;
747 u8 flags0;
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
756#define E4_YSTORM_ISCSI_TASK_AG_CTX_BIT3_MASK 0x1
757#define E4_YSTORM_ISCSI_TASK_AG_CTX_BIT3_SHIFT 7
758 u8 flags1;
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
769 u8 flags2;
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
786 u8 byte2;
787 __le32 TTT;
788 u8 byte3;
789 u8 byte4;
790 __le16 word1;
791};
792
793struct e4_mstorm_iscsi_task_ag_ctx {
794 u8 cdu_validation;
795 u8 byte1;
796 __le16 task_cid;
797 u8 flags0;
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
802#define E4_MSTORM_ISCSI_TASK_AG_CTX_BIT1_MASK 0x1
803#define E4_MSTORM_ISCSI_TASK_AG_CTX_BIT1_SHIFT 5
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
808 u8 flags1;
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
819 u8 flags2;
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
836 u8 byte2;
837 __le32 reg0;
838 u8 byte3;
839 u8 byte4;
840 __le16 word1;
841};
842
843struct e4_ustorm_iscsi_task_ag_ctx {
844 u8 reserved;
845 u8 state;
846 __le16 icid;
847 u8 flags0;
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
852#define E4_USTORM_ISCSI_TASK_AG_CTX_BIT1_MASK 0x1
853#define E4_USTORM_ISCSI_TASK_AG_CTX_BIT1_SHIFT 5
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
856 u8 flags1;
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
865 u8 flags2;
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
882 u8 flags3;
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
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;
916 __le16 dif_task_icid;
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
930struct tqe_opaque {
931 __le16 opaque[2];
932};
933
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;
948 struct tqe_opaque tqe_opaque_list;
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 */
981struct e4_iscsi_task_context {
982 struct ystorm_iscsi_task_st_ctx ystorm_st_context;
983 struct e4_ystorm_iscsi_task_ag_ctx ystorm_ag_context;
984 struct regpair ystorm_ag_padding[2];
985 struct tdif_task_context tdif_context;
986 struct e4_mstorm_iscsi_task_ag_ctx mstorm_ag_context;
987 struct regpair mstorm_ag_padding[2];
988 struct e4_ustorm_iscsi_task_ag_ctx ustorm_ag_context;
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
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
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
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
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;
1074 union dif_configuration_params dif_on_imme_params;
1075};
1076
1077/* iSCSI CQ element */
664struct iscsi_cqe_common { 1078struct iscsi_cqe_common {
665 __le16 conn_id; 1079 __le16 conn_id;
666 u8 cqe_type; 1080 u8 cqe_type;
@@ -669,6 +1083,7 @@ struct iscsi_cqe_common {
669 union iscsi_task_hdr iscsi_hdr; 1083 union iscsi_task_hdr iscsi_hdr;
670}; 1084};
671 1085
1086/* iSCSI CQ element */
672struct iscsi_cqe_solicited { 1087struct iscsi_cqe_solicited {
673 __le16 conn_id; 1088 __le16 conn_id;
674 u8 cqe_type; 1089 u8 cqe_type;
@@ -678,10 +1093,11 @@ struct iscsi_cqe_solicited {
678 u8 fw_dbg_field; 1093 u8 fw_dbg_field;
679 u8 caused_conn_err; 1094 u8 caused_conn_err;
680 u8 reserved0[3]; 1095 u8 reserved0[3];
681 __le32 reserved1[1]; 1096 __le32 data_truncated_bytes;
682 union iscsi_task_hdr iscsi_hdr; 1097 union iscsi_task_hdr iscsi_hdr;
683}; 1098};
684 1099
1100/* iSCSI CQ element */
685struct iscsi_cqe_unsolicited { 1101struct iscsi_cqe_unsolicited {
686 __le16 conn_id; 1102 __le16 conn_id;
687 u8 cqe_type; 1103 u8 cqe_type;
@@ -689,16 +1105,19 @@ struct iscsi_cqe_unsolicited {
689 __le16 reserved0; 1105 __le16 reserved0;
690 u8 reserved1; 1106 u8 reserved1;
691 u8 unsol_cqe_type; 1107 u8 unsol_cqe_type;
692 struct regpair rqe_opaque; 1108 __le16 rqe_opaque;
1109 __le16 reserved2[3];
693 union iscsi_task_hdr iscsi_hdr; 1110 union iscsi_task_hdr iscsi_hdr;
694}; 1111};
695 1112
1113/* iSCSI CQ element */
696union iscsi_cqe { 1114union iscsi_cqe {
697 struct iscsi_cqe_common cqe_common; 1115 struct iscsi_cqe_common cqe_common;
698 struct iscsi_cqe_solicited cqe_solicited; 1116 struct iscsi_cqe_solicited cqe_solicited;
699 struct iscsi_cqe_unsolicited cqe_unsolicited; 1117 struct iscsi_cqe_unsolicited cqe_unsolicited;
700}; 1118};
701 1119
1120/* iSCSI CQE type */
702enum iscsi_cqes_type { 1121enum iscsi_cqes_type {
703 ISCSI_CQE_TYPE_SOLICITED = 1, 1122 ISCSI_CQE_TYPE_SOLICITED = 1,
704 ISCSI_CQE_TYPE_UNSOLICITED, 1123 ISCSI_CQE_TYPE_UNSOLICITED,
@@ -708,6 +1127,7 @@ enum iscsi_cqes_type {
708 MAX_ISCSI_CQES_TYPE 1127 MAX_ISCSI_CQES_TYPE
709}; 1128};
710 1129
1130/* iSCSI CQE type */
711enum iscsi_cqe_unsolicited_type { 1131enum iscsi_cqe_unsolicited_type {
712 ISCSI_CQE_UNSOLICITED_NONE, 1132 ISCSI_CQE_UNSOLICITED_NONE,
713 ISCSI_CQE_UNSOLICITED_SINGLE, 1133 ISCSI_CQE_UNSOLICITED_SINGLE,
@@ -717,37 +1137,28 @@ enum iscsi_cqe_unsolicited_type {
717 MAX_ISCSI_CQE_UNSOLICITED_TYPE 1137 MAX_ISCSI_CQE_UNSOLICITED_TYPE
718}; 1138};
719 1139
720 1140/* iscsi debug modes */
721struct iscsi_debug_modes { 1141struct iscsi_debug_modes {
722 u8 flags; 1142 u8 flags;
723#define ISCSI_DEBUG_MODES_ASSERT_IF_RX_CONN_ERROR_MASK 0x1 1143#define ISCSI_DEBUG_MODES_ASSERT_IF_RX_CONN_ERROR_MASK 0x1
724#define ISCSI_DEBUG_MODES_ASSERT_IF_RX_CONN_ERROR_SHIFT 0 1144#define ISCSI_DEBUG_MODES_ASSERT_IF_RX_CONN_ERROR_SHIFT 0
725#define ISCSI_DEBUG_MODES_ASSERT_IF_RECV_RESET_MASK 0x1 1145#define ISCSI_DEBUG_MODES_ASSERT_IF_RECV_RESET_MASK 0x1
726#define ISCSI_DEBUG_MODES_ASSERT_IF_RECV_RESET_SHIFT 1 1146#define ISCSI_DEBUG_MODES_ASSERT_IF_RECV_RESET_SHIFT 1
727#define ISCSI_DEBUG_MODES_ASSERT_IF_RECV_FIN_MASK 0x1 1147#define ISCSI_DEBUG_MODES_ASSERT_IF_RECV_FIN_MASK 0x1
728#define ISCSI_DEBUG_MODES_ASSERT_IF_RECV_FIN_SHIFT 2 1148#define ISCSI_DEBUG_MODES_ASSERT_IF_RECV_FIN_SHIFT 2
729#define ISCSI_DEBUG_MODES_ASSERT_IF_RECV_CLEANUP_MASK 0x1 1149#define ISCSI_DEBUG_MODES_ASSERT_IF_RECV_CLEANUP_MASK 0x1
730#define ISCSI_DEBUG_MODES_ASSERT_IF_RECV_CLEANUP_SHIFT 3 1150#define ISCSI_DEBUG_MODES_ASSERT_IF_RECV_CLEANUP_SHIFT 3
731#define ISCSI_DEBUG_MODES_ASSERT_IF_RECV_REJECT_OR_ASYNC_MASK 0x1 1151#define ISCSI_DEBUG_MODES_ASSERT_IF_RECV_REJECT_OR_ASYNC_MASK 0x1
732#define ISCSI_DEBUG_MODES_ASSERT_IF_RECV_REJECT_OR_ASYNC_SHIFT 4 1152#define ISCSI_DEBUG_MODES_ASSERT_IF_RECV_REJECT_OR_ASYNC_SHIFT 4
733#define ISCSI_DEBUG_MODES_ASSERT_IF_RECV_NOP_MASK 0x1 1153#define ISCSI_DEBUG_MODES_ASSERT_IF_RECV_NOP_MASK 0x1
734#define ISCSI_DEBUG_MODES_ASSERT_IF_RECV_NOP_SHIFT 5 1154#define ISCSI_DEBUG_MODES_ASSERT_IF_RECV_NOP_SHIFT 5
735#define ISCSI_DEBUG_MODES_ASSERT_IF_DATA_DIGEST_ERROR_MASK 0x1 1155#define ISCSI_DEBUG_MODES_ASSERT_IF_DIF_OR_DATA_DIGEST_ERROR_MASK 0x1
736#define ISCSI_DEBUG_MODES_ASSERT_IF_DATA_DIGEST_ERROR_SHIFT 6 1156#define ISCSI_DEBUG_MODES_ASSERT_IF_DIF_OR_DATA_DIGEST_ERROR_SHIFT 6
737#define ISCSI_DEBUG_MODES_ASSERT_IF_DIF_ERROR_MASK 0x1 1157#define ISCSI_DEBUG_MODES_ASSERT_IF_HQ_CORRUPT_MASK 0x1
738#define ISCSI_DEBUG_MODES_ASSERT_IF_DIF_ERROR_SHIFT 7 1158#define ISCSI_DEBUG_MODES_ASSERT_IF_HQ_CORRUPT_SHIFT 7
739}; 1159};
740 1160
741struct iscsi_dif_flags { 1161/* iSCSI kernel completion queue IDs */
742 u8 flags;
743#define ISCSI_DIF_FLAGS_PROT_INTERVAL_SIZE_LOG_MASK 0xF
744#define ISCSI_DIF_FLAGS_PROT_INTERVAL_SIZE_LOG_SHIFT 0
745#define ISCSI_DIF_FLAGS_DIF_TO_PEER_MASK 0x1
746#define ISCSI_DIF_FLAGS_DIF_TO_PEER_SHIFT 4
747#define ISCSI_DIF_FLAGS_HOST_INTERFACE_MASK 0x7
748#define ISCSI_DIF_FLAGS_HOST_INTERFACE_SHIFT 5
749};
750
751enum iscsi_eqe_opcode { 1162enum iscsi_eqe_opcode {
752 ISCSI_EVENT_TYPE_INIT_FUNC = 0, 1163 ISCSI_EVENT_TYPE_INIT_FUNC = 0,
753 ISCSI_EVENT_TYPE_DESTROY_FUNC, 1164 ISCSI_EVENT_TYPE_DESTROY_FUNC,
@@ -756,9 +1167,9 @@ enum iscsi_eqe_opcode {
756 ISCSI_EVENT_TYPE_CLEAR_SQ, 1167 ISCSI_EVENT_TYPE_CLEAR_SQ,
757 ISCSI_EVENT_TYPE_TERMINATE_CONN, 1168 ISCSI_EVENT_TYPE_TERMINATE_CONN,
758 ISCSI_EVENT_TYPE_MAC_UPDATE_CONN, 1169 ISCSI_EVENT_TYPE_MAC_UPDATE_CONN,
1170 ISCSI_EVENT_TYPE_COLLECT_STATS_CONN,
759 ISCSI_EVENT_TYPE_ASYN_CONNECT_COMPLETE, 1171 ISCSI_EVENT_TYPE_ASYN_CONNECT_COMPLETE,
760 ISCSI_EVENT_TYPE_ASYN_TERMINATE_DONE, 1172 ISCSI_EVENT_TYPE_ASYN_TERMINATE_DONE,
761 RESERVED9,
762 ISCSI_EVENT_TYPE_START_OF_ERROR_TYPES = 10, 1173 ISCSI_EVENT_TYPE_START_OF_ERROR_TYPES = 10,
763 ISCSI_EVENT_TYPE_ASYN_ABORT_RCVD, 1174 ISCSI_EVENT_TYPE_ASYN_ABORT_RCVD,
764 ISCSI_EVENT_TYPE_ASYN_CLOSE_RCVD, 1175 ISCSI_EVENT_TYPE_ASYN_CLOSE_RCVD,
@@ -772,6 +1183,7 @@ enum iscsi_eqe_opcode {
772 MAX_ISCSI_EQE_OPCODE 1183 MAX_ISCSI_EQE_OPCODE
773}; 1184};
774 1185
1186/* iSCSI EQE and CQE completion status */
775enum iscsi_error_types { 1187enum iscsi_error_types {
776 ISCSI_STATUS_NONE = 0, 1188 ISCSI_STATUS_NONE = 0,
777 ISCSI_CQE_ERROR_UNSOLICITED_RCV_ON_INVALID_CONN = 1, 1189 ISCSI_CQE_ERROR_UNSOLICITED_RCV_ON_INVALID_CONN = 1,
@@ -823,7 +1235,7 @@ enum iscsi_error_types {
823 MAX_ISCSI_ERROR_TYPES 1235 MAX_ISCSI_ERROR_TYPES
824}; 1236};
825 1237
826 1238/* iSCSI Ramrod Command IDs */
827enum iscsi_ramrod_cmd_id { 1239enum iscsi_ramrod_cmd_id {
828 ISCSI_RAMROD_CMD_ID_UNUSED = 0, 1240 ISCSI_RAMROD_CMD_ID_UNUSED = 0,
829 ISCSI_RAMROD_CMD_ID_INIT_FUNC = 1, 1241 ISCSI_RAMROD_CMD_ID_INIT_FUNC = 1,
@@ -833,22 +1245,11 @@ enum iscsi_ramrod_cmd_id {
833 ISCSI_RAMROD_CMD_ID_TERMINATION_CONN = 5, 1245 ISCSI_RAMROD_CMD_ID_TERMINATION_CONN = 5,
834 ISCSI_RAMROD_CMD_ID_CLEAR_SQ = 6, 1246 ISCSI_RAMROD_CMD_ID_CLEAR_SQ = 6,
835 ISCSI_RAMROD_CMD_ID_MAC_UPDATE = 7, 1247 ISCSI_RAMROD_CMD_ID_MAC_UPDATE = 7,
1248 ISCSI_RAMROD_CMD_ID_CONN_STATS = 8,
836 MAX_ISCSI_RAMROD_CMD_ID 1249 MAX_ISCSI_RAMROD_CMD_ID
837}; 1250};
838 1251
839struct iscsi_reg1 { 1252/* iSCSI connection termination request */
840 __le32 reg1_map;
841#define ISCSI_REG1_NUM_SGES_MASK 0xF
842#define ISCSI_REG1_NUM_SGES_SHIFT 0
843#define ISCSI_REG1_RESERVED1_MASK 0xFFFFFFF
844#define ISCSI_REG1_RESERVED1_SHIFT 4
845};
846
847union iscsi_seq_num {
848 __le16 data_sn;
849 __le16 r2t_sn;
850};
851
852struct iscsi_spe_conn_mac_update { 1253struct iscsi_spe_conn_mac_update {
853 struct iscsi_slow_path_hdr hdr; 1254 struct iscsi_slow_path_hdr hdr;
854 __le16 conn_id; 1255 __le16 conn_id;
@@ -859,6 +1260,9 @@ struct iscsi_spe_conn_mac_update {
859 u8 reserved0[2]; 1260 u8 reserved0[2];
860}; 1261};
861 1262
1263/* iSCSI and TCP connection (Option 1) offload params passed by driver to FW in
1264 * iSCSI offload ramrod.
1265 */
862struct iscsi_spe_conn_offload { 1266struct iscsi_spe_conn_offload {
863 struct iscsi_slow_path_hdr hdr; 1267 struct iscsi_slow_path_hdr hdr;
864 __le16 conn_id; 1268 __le16 conn_id;
@@ -867,6 +1271,9 @@ struct iscsi_spe_conn_offload {
867 struct tcp_offload_params tcp; 1271 struct tcp_offload_params tcp;
868}; 1272};
869 1273
1274/* iSCSI and TCP connection(Option 2) offload params passed by driver to FW in
1275 * iSCSI offload ramrod.
1276 */
870struct iscsi_spe_conn_offload_option2 { 1277struct iscsi_spe_conn_offload_option2 {
871 struct iscsi_slow_path_hdr hdr; 1278 struct iscsi_slow_path_hdr hdr;
872 __le16 conn_id; 1279 __le16 conn_id;
@@ -875,6 +1282,17 @@ struct iscsi_spe_conn_offload_option2 {
875 struct tcp_offload_params_opt2 tcp; 1282 struct tcp_offload_params_opt2 tcp;
876}; 1283};
877 1284
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
1295/* iSCSI connection termination request */
878struct iscsi_spe_conn_termination { 1296struct iscsi_spe_conn_termination {
879 struct iscsi_slow_path_hdr hdr; 1297 struct iscsi_slow_path_hdr hdr;
880 __le16 conn_id; 1298 __le16 conn_id;
@@ -885,12 +1303,14 @@ struct iscsi_spe_conn_termination {
885 struct regpair query_params_addr; 1303 struct regpair query_params_addr;
886}; 1304};
887 1305
1306/* iSCSI firmware function destroy parameters */
888struct iscsi_spe_func_dstry { 1307struct iscsi_spe_func_dstry {
889 struct iscsi_slow_path_hdr hdr; 1308 struct iscsi_slow_path_hdr hdr;
890 __le16 reserved0; 1309 __le16 reserved0;
891 __le32 reserved1; 1310 __le32 reserved1;
892}; 1311};
893 1312
1313/* iSCSI firmware function init parameters */
894struct iscsi_spe_func_init { 1314struct iscsi_spe_func_init {
895 struct iscsi_slow_path_hdr hdr; 1315 struct iscsi_slow_path_hdr hdr;
896 __le16 half_way_close_timeout; 1316 __le16 half_way_close_timeout;
@@ -898,283 +1318,19 @@ struct iscsi_spe_func_init {
898 u8 num_r2tq_pages_in_ring; 1318 u8 num_r2tq_pages_in_ring;
899 u8 num_uhq_pages_in_ring; 1319 u8 num_uhq_pages_in_ring;
900 u8 ll2_rx_queue_id; 1320 u8 ll2_rx_queue_id;
901 u8 ooo_enable; 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
902 struct iscsi_debug_modes debug_mode; 1326 struct iscsi_debug_modes debug_mode;
903 __le16 reserved1; 1327 __le16 reserved1;
904 __le32 reserved2; 1328 __le32 reserved2;
905 __le32 reserved3;
906 __le32 reserved4;
907 struct scsi_init_func_params func_params; 1329 struct scsi_init_func_params func_params;
908 struct scsi_init_func_queues q_params; 1330 struct scsi_init_func_queues q_params;
909}; 1331};
910 1332
911struct ystorm_iscsi_task_state { 1333/* iSCSI task type */
912 struct scsi_cached_sges data_desc;
913 struct scsi_sgl_params sgl_params;
914 __le32 exp_r2t_sn;
915 __le32 buffer_offset;
916 union iscsi_seq_num seq_num;
917 struct iscsi_dif_flags dif_flags;
918 u8 flags;
919#define YSTORM_ISCSI_TASK_STATE_LOCAL_COMP_MASK 0x1
920#define YSTORM_ISCSI_TASK_STATE_LOCAL_COMP_SHIFT 0
921#define YSTORM_ISCSI_TASK_STATE_SLOW_IO_MASK 0x1
922#define YSTORM_ISCSI_TASK_STATE_SLOW_IO_SHIFT 1
923#define YSTORM_ISCSI_TASK_STATE_RESERVED0_MASK 0x3F
924#define YSTORM_ISCSI_TASK_STATE_RESERVED0_SHIFT 2
925};
926
927struct ystorm_iscsi_task_rxmit_opt {
928 __le32 fast_rxmit_sge_offset;
929 __le32 scan_start_buffer_offset;
930 __le32 fast_rxmit_buffer_offset;
931 u8 scan_start_sgl_index;
932 u8 fast_rxmit_sgl_index;
933 __le16 reserved;
934};
935
936struct ystorm_iscsi_task_st_ctx {
937 struct ystorm_iscsi_task_state state;
938 struct ystorm_iscsi_task_rxmit_opt rxmit_opt;
939 union iscsi_task_hdr pdu_hdr;
940};
941
942struct ystorm_iscsi_task_ag_ctx {
943 u8 reserved;
944 u8 byte1;
945 __le16 word0;
946 u8 flags0;
947#define YSTORM_ISCSI_TASK_AG_CTX_NIBBLE0_MASK 0xF
948#define YSTORM_ISCSI_TASK_AG_CTX_NIBBLE0_SHIFT 0
949#define YSTORM_ISCSI_TASK_AG_CTX_BIT0_MASK 0x1
950#define YSTORM_ISCSI_TASK_AG_CTX_BIT0_SHIFT 4
951#define YSTORM_ISCSI_TASK_AG_CTX_BIT1_MASK 0x1
952#define YSTORM_ISCSI_TASK_AG_CTX_BIT1_SHIFT 5
953#define YSTORM_ISCSI_TASK_AG_CTX_VALID_MASK 0x1
954#define YSTORM_ISCSI_TASK_AG_CTX_VALID_SHIFT 6
955#define YSTORM_ISCSI_TASK_AG_CTX_BIT3_MASK 0x1
956#define YSTORM_ISCSI_TASK_AG_CTX_BIT3_SHIFT 7
957 u8 flags1;
958#define YSTORM_ISCSI_TASK_AG_CTX_CF0_MASK 0x3
959#define YSTORM_ISCSI_TASK_AG_CTX_CF0_SHIFT 0
960#define YSTORM_ISCSI_TASK_AG_CTX_CF1_MASK 0x3
961#define YSTORM_ISCSI_TASK_AG_CTX_CF1_SHIFT 2
962#define YSTORM_ISCSI_TASK_AG_CTX_CF2SPECIAL_MASK 0x3
963#define YSTORM_ISCSI_TASK_AG_CTX_CF2SPECIAL_SHIFT 4
964#define YSTORM_ISCSI_TASK_AG_CTX_CF0EN_MASK 0x1
965#define YSTORM_ISCSI_TASK_AG_CTX_CF0EN_SHIFT 6
966#define YSTORM_ISCSI_TASK_AG_CTX_CF1EN_MASK 0x1
967#define YSTORM_ISCSI_TASK_AG_CTX_CF1EN_SHIFT 7
968 u8 flags2;
969#define YSTORM_ISCSI_TASK_AG_CTX_BIT4_MASK 0x1
970#define YSTORM_ISCSI_TASK_AG_CTX_BIT4_SHIFT 0
971#define YSTORM_ISCSI_TASK_AG_CTX_RULE0EN_MASK 0x1
972#define YSTORM_ISCSI_TASK_AG_CTX_RULE0EN_SHIFT 1
973#define YSTORM_ISCSI_TASK_AG_CTX_RULE1EN_MASK 0x1
974#define YSTORM_ISCSI_TASK_AG_CTX_RULE1EN_SHIFT 2
975#define YSTORM_ISCSI_TASK_AG_CTX_RULE2EN_MASK 0x1
976#define YSTORM_ISCSI_TASK_AG_CTX_RULE2EN_SHIFT 3
977#define YSTORM_ISCSI_TASK_AG_CTX_RULE3EN_MASK 0x1
978#define YSTORM_ISCSI_TASK_AG_CTX_RULE3EN_SHIFT 4
979#define YSTORM_ISCSI_TASK_AG_CTX_RULE4EN_MASK 0x1
980#define YSTORM_ISCSI_TASK_AG_CTX_RULE4EN_SHIFT 5
981#define YSTORM_ISCSI_TASK_AG_CTX_RULE5EN_MASK 0x1
982#define YSTORM_ISCSI_TASK_AG_CTX_RULE5EN_SHIFT 6
983#define YSTORM_ISCSI_TASK_AG_CTX_RULE6EN_MASK 0x1
984#define YSTORM_ISCSI_TASK_AG_CTX_RULE6EN_SHIFT 7
985 u8 byte2;
986 __le32 TTT;
987 u8 byte3;
988 u8 byte4;
989 __le16 word1;
990};
991
992struct mstorm_iscsi_task_ag_ctx {
993 u8 cdu_validation;
994 u8 byte1;
995 __le16 task_cid;
996 u8 flags0;
997#define MSTORM_ISCSI_TASK_AG_CTX_CONNECTION_TYPE_MASK 0xF
998#define MSTORM_ISCSI_TASK_AG_CTX_CONNECTION_TYPE_SHIFT 0
999#define MSTORM_ISCSI_TASK_AG_CTX_EXIST_IN_QM0_MASK 0x1
1000#define MSTORM_ISCSI_TASK_AG_CTX_EXIST_IN_QM0_SHIFT 4
1001#define MSTORM_ISCSI_TASK_AG_CTX_BIT1_MASK 0x1
1002#define MSTORM_ISCSI_TASK_AG_CTX_BIT1_SHIFT 5
1003#define MSTORM_ISCSI_TASK_AG_CTX_VALID_MASK 0x1
1004#define MSTORM_ISCSI_TASK_AG_CTX_VALID_SHIFT 6
1005#define MSTORM_ISCSI_TASK_AG_CTX_TASK_CLEANUP_FLAG_MASK 0x1
1006#define MSTORM_ISCSI_TASK_AG_CTX_TASK_CLEANUP_FLAG_SHIFT 7
1007 u8 flags1;
1008#define MSTORM_ISCSI_TASK_AG_CTX_TASK_CLEANUP_CF_MASK 0x3
1009#define MSTORM_ISCSI_TASK_AG_CTX_TASK_CLEANUP_CF_SHIFT 0
1010#define MSTORM_ISCSI_TASK_AG_CTX_CF1_MASK 0x3
1011#define MSTORM_ISCSI_TASK_AG_CTX_CF1_SHIFT 2
1012#define MSTORM_ISCSI_TASK_AG_CTX_CF2_MASK 0x3
1013#define MSTORM_ISCSI_TASK_AG_CTX_CF2_SHIFT 4
1014#define MSTORM_ISCSI_TASK_AG_CTX_TASK_CLEANUP_CF_EN_MASK 0x1
1015#define MSTORM_ISCSI_TASK_AG_CTX_TASK_CLEANUP_CF_EN_SHIFT 6
1016#define MSTORM_ISCSI_TASK_AG_CTX_CF1EN_MASK 0x1
1017#define MSTORM_ISCSI_TASK_AG_CTX_CF1EN_SHIFT 7
1018 u8 flags2;
1019#define MSTORM_ISCSI_TASK_AG_CTX_CF2EN_MASK 0x1
1020#define MSTORM_ISCSI_TASK_AG_CTX_CF2EN_SHIFT 0
1021#define MSTORM_ISCSI_TASK_AG_CTX_RULE0EN_MASK 0x1
1022#define MSTORM_ISCSI_TASK_AG_CTX_RULE0EN_SHIFT 1
1023#define MSTORM_ISCSI_TASK_AG_CTX_RULE1EN_MASK 0x1
1024#define MSTORM_ISCSI_TASK_AG_CTX_RULE1EN_SHIFT 2
1025#define MSTORM_ISCSI_TASK_AG_CTX_RULE2EN_MASK 0x1
1026#define MSTORM_ISCSI_TASK_AG_CTX_RULE2EN_SHIFT 3
1027#define MSTORM_ISCSI_TASK_AG_CTX_RULE3EN_MASK 0x1
1028#define MSTORM_ISCSI_TASK_AG_CTX_RULE3EN_SHIFT 4
1029#define MSTORM_ISCSI_TASK_AG_CTX_RULE4EN_MASK 0x1
1030#define MSTORM_ISCSI_TASK_AG_CTX_RULE4EN_SHIFT 5
1031#define MSTORM_ISCSI_TASK_AG_CTX_RULE5EN_MASK 0x1
1032#define MSTORM_ISCSI_TASK_AG_CTX_RULE5EN_SHIFT 6
1033#define MSTORM_ISCSI_TASK_AG_CTX_RULE6EN_MASK 0x1
1034#define MSTORM_ISCSI_TASK_AG_CTX_RULE6EN_SHIFT 7
1035 u8 byte2;
1036 __le32 reg0;
1037 u8 byte3;
1038 u8 byte4;
1039 __le16 word1;
1040};
1041
1042struct ustorm_iscsi_task_ag_ctx {
1043 u8 reserved;
1044 u8 state;
1045 __le16 icid;
1046 u8 flags0;
1047#define USTORM_ISCSI_TASK_AG_CTX_CONNECTION_TYPE_MASK 0xF
1048#define USTORM_ISCSI_TASK_AG_CTX_CONNECTION_TYPE_SHIFT 0
1049#define USTORM_ISCSI_TASK_AG_CTX_EXIST_IN_QM0_MASK 0x1
1050#define USTORM_ISCSI_TASK_AG_CTX_EXIST_IN_QM0_SHIFT 4
1051#define USTORM_ISCSI_TASK_AG_CTX_BIT1_MASK 0x1
1052#define USTORM_ISCSI_TASK_AG_CTX_BIT1_SHIFT 5
1053#define USTORM_ISCSI_TASK_AG_CTX_HQ_SCANNED_CF_MASK 0x3
1054#define USTORM_ISCSI_TASK_AG_CTX_HQ_SCANNED_CF_SHIFT 6
1055 u8 flags1;
1056#define USTORM_ISCSI_TASK_AG_CTX_RESERVED1_MASK 0x3
1057#define USTORM_ISCSI_TASK_AG_CTX_RESERVED1_SHIFT 0
1058#define USTORM_ISCSI_TASK_AG_CTX_R2T2RECV_MASK 0x3
1059#define USTORM_ISCSI_TASK_AG_CTX_R2T2RECV_SHIFT 2
1060#define USTORM_ISCSI_TASK_AG_CTX_CF3_MASK 0x3
1061#define USTORM_ISCSI_TASK_AG_CTX_CF3_SHIFT 4
1062#define USTORM_ISCSI_TASK_AG_CTX_DIF_ERROR_CF_MASK 0x3
1063#define USTORM_ISCSI_TASK_AG_CTX_DIF_ERROR_CF_SHIFT 6
1064 u8 flags2;
1065#define USTORM_ISCSI_TASK_AG_CTX_HQ_SCANNED_CF_EN_MASK 0x1
1066#define USTORM_ISCSI_TASK_AG_CTX_HQ_SCANNED_CF_EN_SHIFT 0
1067#define USTORM_ISCSI_TASK_AG_CTX_DISABLE_DATA_ACKED_MASK 0x1
1068#define USTORM_ISCSI_TASK_AG_CTX_DISABLE_DATA_ACKED_SHIFT 1
1069#define USTORM_ISCSI_TASK_AG_CTX_R2T2RECV_EN_MASK 0x1
1070#define USTORM_ISCSI_TASK_AG_CTX_R2T2RECV_EN_SHIFT 2
1071#define USTORM_ISCSI_TASK_AG_CTX_CF3EN_MASK 0x1
1072#define USTORM_ISCSI_TASK_AG_CTX_CF3EN_SHIFT 3
1073#define USTORM_ISCSI_TASK_AG_CTX_DIF_ERROR_CF_EN_MASK 0x1
1074#define USTORM_ISCSI_TASK_AG_CTX_DIF_ERROR_CF_EN_SHIFT 4
1075#define USTORM_ISCSI_TASK_AG_CTX_CMP_DATA_TOTAL_EXP_EN_MASK 0x1
1076#define USTORM_ISCSI_TASK_AG_CTX_CMP_DATA_TOTAL_EXP_EN_SHIFT 5
1077#define USTORM_ISCSI_TASK_AG_CTX_RULE1EN_MASK 0x1
1078#define USTORM_ISCSI_TASK_AG_CTX_RULE1EN_SHIFT 6
1079#define USTORM_ISCSI_TASK_AG_CTX_CMP_CONT_RCV_EXP_EN_MASK 0x1
1080#define USTORM_ISCSI_TASK_AG_CTX_CMP_CONT_RCV_EXP_EN_SHIFT 7
1081 u8 flags3;
1082#define USTORM_ISCSI_TASK_AG_CTX_RULE3EN_MASK 0x1
1083#define USTORM_ISCSI_TASK_AG_CTX_RULE3EN_SHIFT 0
1084#define USTORM_ISCSI_TASK_AG_CTX_RULE4EN_MASK 0x1
1085#define USTORM_ISCSI_TASK_AG_CTX_RULE4EN_SHIFT 1
1086#define USTORM_ISCSI_TASK_AG_CTX_RULE5EN_MASK 0x1
1087#define USTORM_ISCSI_TASK_AG_CTX_RULE5EN_SHIFT 2
1088#define USTORM_ISCSI_TASK_AG_CTX_RULE6EN_MASK 0x1
1089#define USTORM_ISCSI_TASK_AG_CTX_RULE6EN_SHIFT 3
1090#define USTORM_ISCSI_TASK_AG_CTX_DIF_ERROR_TYPE_MASK 0xF
1091#define USTORM_ISCSI_TASK_AG_CTX_DIF_ERROR_TYPE_SHIFT 4
1092 __le32 dif_err_intervals;
1093 __le32 dif_error_1st_interval;
1094 __le32 rcv_cont_len;
1095 __le32 exp_cont_len;
1096 __le32 total_data_acked;
1097 __le32 exp_data_acked;
1098 u8 next_tid_valid;
1099 u8 byte3;
1100 __le16 word1;
1101 __le16 next_tid;
1102 __le16 word3;
1103 __le32 hdr_residual_count;
1104 __le32 exp_r2t_sn;
1105};
1106
1107struct mstorm_iscsi_task_st_ctx {
1108 struct scsi_cached_sges data_desc;
1109 struct scsi_sgl_params sgl_params;
1110 __le32 rem_task_size;
1111 __le32 data_buffer_offset;
1112 u8 task_type;
1113 struct iscsi_dif_flags dif_flags;
1114 u8 reserved0[2];
1115 struct regpair sense_db;
1116 __le32 expected_itt;
1117 __le32 reserved1;
1118};
1119
1120struct ustorm_iscsi_task_st_ctx {
1121 __le32 rem_rcv_len;
1122 __le32 exp_data_transfer_len;
1123 __le32 exp_data_sn;
1124 struct regpair lun;
1125 struct iscsi_reg1 reg1;
1126 u8 flags2;
1127#define USTORM_ISCSI_TASK_ST_CTX_AHS_EXIST_MASK 0x1
1128#define USTORM_ISCSI_TASK_ST_CTX_AHS_EXIST_SHIFT 0
1129#define USTORM_ISCSI_TASK_ST_CTX_RESERVED1_MASK 0x7F
1130#define USTORM_ISCSI_TASK_ST_CTX_RESERVED1_SHIFT 1
1131 struct iscsi_dif_flags dif_flags;
1132 __le16 reserved3;
1133 __le32 reserved4;
1134 __le32 reserved5;
1135 __le32 reserved6;
1136 __le32 reserved7;
1137 u8 task_type;
1138 u8 error_flags;
1139#define USTORM_ISCSI_TASK_ST_CTX_DATA_DIGEST_ERROR_MASK 0x1
1140#define USTORM_ISCSI_TASK_ST_CTX_DATA_DIGEST_ERROR_SHIFT 0
1141#define USTORM_ISCSI_TASK_ST_CTX_DATA_TRUNCATED_ERROR_MASK 0x1
1142#define USTORM_ISCSI_TASK_ST_CTX_DATA_TRUNCATED_ERROR_SHIFT 1
1143#define USTORM_ISCSI_TASK_ST_CTX_UNDER_RUN_ERROR_MASK 0x1
1144#define USTORM_ISCSI_TASK_ST_CTX_UNDER_RUN_ERROR_SHIFT 2
1145#define USTORM_ISCSI_TASK_ST_CTX_RESERVED8_MASK 0x1F
1146#define USTORM_ISCSI_TASK_ST_CTX_RESERVED8_SHIFT 3
1147 u8 flags;
1148#define USTORM_ISCSI_TASK_ST_CTX_CQE_WRITE_MASK 0x3
1149#define USTORM_ISCSI_TASK_ST_CTX_CQE_WRITE_SHIFT 0
1150#define USTORM_ISCSI_TASK_ST_CTX_LOCAL_COMP_MASK 0x1
1151#define USTORM_ISCSI_TASK_ST_CTX_LOCAL_COMP_SHIFT 2
1152#define USTORM_ISCSI_TASK_ST_CTX_Q0_R2TQE_WRITE_MASK 0x1
1153#define USTORM_ISCSI_TASK_ST_CTX_Q0_R2TQE_WRITE_SHIFT 3
1154#define USTORM_ISCSI_TASK_ST_CTX_TOTAL_DATA_ACKED_DONE_MASK 0x1
1155#define USTORM_ISCSI_TASK_ST_CTX_TOTAL_DATA_ACKED_DONE_SHIFT 4
1156#define USTORM_ISCSI_TASK_ST_CTX_HQ_SCANNED_DONE_MASK 0x1
1157#define USTORM_ISCSI_TASK_ST_CTX_HQ_SCANNED_DONE_SHIFT 5
1158#define USTORM_ISCSI_TASK_ST_CTX_R2T2RECV_DONE_MASK 0x1
1159#define USTORM_ISCSI_TASK_ST_CTX_R2T2RECV_DONE_SHIFT 6
1160#define USTORM_ISCSI_TASK_ST_CTX_RESERVED0_MASK 0x1
1161#define USTORM_ISCSI_TASK_ST_CTX_RESERVED0_SHIFT 7
1162 u8 cq_rss_number;
1163};
1164
1165struct iscsi_task_context {
1166 struct ystorm_iscsi_task_st_ctx ystorm_st_context;
1167 struct ystorm_iscsi_task_ag_ctx ystorm_ag_context;
1168 struct regpair ystorm_ag_padding[2];
1169 struct tdif_task_context tdif_context;
1170 struct mstorm_iscsi_task_ag_ctx mstorm_ag_context;
1171 struct regpair mstorm_ag_padding[2];
1172 struct ustorm_iscsi_task_ag_ctx ustorm_ag_context;
1173 struct mstorm_iscsi_task_st_ctx mstorm_st_context;
1174 struct ustorm_iscsi_task_st_ctx ustorm_st_context;
1175 struct rdif_task_context rdif_context;
1176};
1177
1178enum iscsi_task_type { 1334enum iscsi_task_type {
1179 ISCSI_TASK_TYPE_INITIATOR_WRITE, 1335 ISCSI_TASK_TYPE_INITIATOR_WRITE,
1180 ISCSI_TASK_TYPE_INITIATOR_READ, 1336 ISCSI_TASK_TYPE_INITIATOR_READ,
@@ -1186,53 +1342,57 @@ enum iscsi_task_type {
1186 ISCSI_TASK_TYPE_TARGET_READ, 1342 ISCSI_TASK_TYPE_TARGET_READ,
1187 ISCSI_TASK_TYPE_TARGET_RESPONSE, 1343 ISCSI_TASK_TYPE_TARGET_RESPONSE,
1188 ISCSI_TASK_TYPE_LOGIN_RESPONSE, 1344 ISCSI_TASK_TYPE_LOGIN_RESPONSE,
1345 ISCSI_TASK_TYPE_TARGET_IMM_W_DIF,
1189 MAX_ISCSI_TASK_TYPE 1346 MAX_ISCSI_TASK_TYPE
1190}; 1347};
1191 1348
1349/* iSCSI DesiredDataTransferLength/ttt union */
1192union iscsi_ttt_txlen_union { 1350union iscsi_ttt_txlen_union {
1193 __le32 desired_tx_len; 1351 __le32 desired_tx_len;
1194 __le32 ttt; 1352 __le32 ttt;
1195}; 1353};
1196 1354
1355/* iSCSI uHQ element */
1197struct iscsi_uhqe { 1356struct iscsi_uhqe {
1198 __le32 reg1; 1357 __le32 reg1;
1199#define ISCSI_UHQE_PDU_PAYLOAD_LEN_MASK 0xFFFFF 1358#define ISCSI_UHQE_PDU_PAYLOAD_LEN_MASK 0xFFFFF
1200#define ISCSI_UHQE_PDU_PAYLOAD_LEN_SHIFT 0 1359#define ISCSI_UHQE_PDU_PAYLOAD_LEN_SHIFT 0
1201#define ISCSI_UHQE_LOCAL_COMP_MASK 0x1 1360#define ISCSI_UHQE_LOCAL_COMP_MASK 0x1
1202#define ISCSI_UHQE_LOCAL_COMP_SHIFT 20 1361#define ISCSI_UHQE_LOCAL_COMP_SHIFT 20
1203#define ISCSI_UHQE_TOGGLE_BIT_MASK 0x1 1362#define ISCSI_UHQE_TOGGLE_BIT_MASK 0x1
1204#define ISCSI_UHQE_TOGGLE_BIT_SHIFT 21 1363#define ISCSI_UHQE_TOGGLE_BIT_SHIFT 21
1205#define ISCSI_UHQE_PURE_PAYLOAD_MASK 0x1 1364#define ISCSI_UHQE_PURE_PAYLOAD_MASK 0x1
1206#define ISCSI_UHQE_PURE_PAYLOAD_SHIFT 22 1365#define ISCSI_UHQE_PURE_PAYLOAD_SHIFT 22
1207#define ISCSI_UHQE_LOGIN_RESPONSE_PDU_MASK 0x1 1366#define ISCSI_UHQE_LOGIN_RESPONSE_PDU_MASK 0x1
1208#define ISCSI_UHQE_LOGIN_RESPONSE_PDU_SHIFT 23 1367#define ISCSI_UHQE_LOGIN_RESPONSE_PDU_SHIFT 23
1209#define ISCSI_UHQE_TASK_ID_HI_MASK 0xFF 1368#define ISCSI_UHQE_TASK_ID_HI_MASK 0xFF
1210#define ISCSI_UHQE_TASK_ID_HI_SHIFT 24 1369#define ISCSI_UHQE_TASK_ID_HI_SHIFT 24
1211 __le32 reg2; 1370 __le32 reg2;
1212#define ISCSI_UHQE_BUFFER_OFFSET_MASK 0xFFFFFF 1371#define ISCSI_UHQE_BUFFER_OFFSET_MASK 0xFFFFFF
1213#define ISCSI_UHQE_BUFFER_OFFSET_SHIFT 0 1372#define ISCSI_UHQE_BUFFER_OFFSET_SHIFT 0
1214#define ISCSI_UHQE_TASK_ID_LO_MASK 0xFF 1373#define ISCSI_UHQE_TASK_ID_LO_MASK 0xFF
1215#define ISCSI_UHQE_TASK_ID_LO_SHIFT 24 1374#define ISCSI_UHQE_TASK_ID_LO_SHIFT 24
1216}; 1375};
1217 1376
1218 1377/* iSCSI WQ element */
1219struct iscsi_wqe { 1378struct iscsi_wqe {
1220 __le16 task_id; 1379 __le16 task_id;
1221 u8 flags; 1380 u8 flags;
1222#define ISCSI_WQE_WQE_TYPE_MASK 0x7 1381#define ISCSI_WQE_WQE_TYPE_MASK 0x7
1223#define ISCSI_WQE_WQE_TYPE_SHIFT 0 1382#define ISCSI_WQE_WQE_TYPE_SHIFT 0
1224#define ISCSI_WQE_NUM_SGES_MASK 0xF 1383#define ISCSI_WQE_NUM_SGES_MASK 0xF
1225#define ISCSI_WQE_NUM_SGES_SHIFT 3 1384#define ISCSI_WQE_NUM_SGES_SHIFT 3
1226#define ISCSI_WQE_RESPONSE_MASK 0x1 1385#define ISCSI_WQE_RESPONSE_MASK 0x1
1227#define ISCSI_WQE_RESPONSE_SHIFT 7 1386#define ISCSI_WQE_RESPONSE_SHIFT 7
1228 struct iscsi_dif_flags prot_flags; 1387 struct iscsi_dif_flags prot_flags;
1229 __le32 contlen_cdbsize; 1388 __le32 contlen_cdbsize;
1230#define ISCSI_WQE_CONT_LEN_MASK 0xFFFFFF 1389#define ISCSI_WQE_CONT_LEN_MASK 0xFFFFFF
1231#define ISCSI_WQE_CONT_LEN_SHIFT 0 1390#define ISCSI_WQE_CONT_LEN_SHIFT 0
1232#define ISCSI_WQE_CDB_SIZE_MASK 0xFF 1391#define ISCSI_WQE_CDB_SIZE_MASK 0xFF
1233#define ISCSI_WQE_CDB_SIZE_SHIFT 24 1392#define ISCSI_WQE_CDB_SIZE_SHIFT 24
1234}; 1393};
1235 1394
1395/* iSCSI wqe type */
1236enum iscsi_wqe_type { 1396enum iscsi_wqe_type {
1237 ISCSI_WQE_TYPE_NORMAL, 1397 ISCSI_WQE_TYPE_NORMAL,
1238 ISCSI_WQE_TYPE_TASK_CLEANUP, 1398 ISCSI_WQE_TYPE_TASK_CLEANUP,
@@ -1244,6 +1404,7 @@ enum iscsi_wqe_type {
1244 MAX_ISCSI_WQE_TYPE 1404 MAX_ISCSI_WQE_TYPE
1245}; 1405};
1246 1406
1407/* iSCSI xHQ element */
1247struct iscsi_xhqe { 1408struct iscsi_xhqe {
1248 union iscsi_ttt_txlen_union ttt_or_txlen; 1409 union iscsi_ttt_txlen_union ttt_or_txlen;
1249 __le32 exp_stat_sn; 1410 __le32 exp_stat_sn;
@@ -1251,120 +1412,134 @@ struct iscsi_xhqe {
1251 u8 total_ahs_length; 1412 u8 total_ahs_length;
1252 u8 opcode; 1413 u8 opcode;
1253 u8 flags; 1414 u8 flags;
1254#define ISCSI_XHQE_FINAL_MASK 0x1 1415#define ISCSI_XHQE_FINAL_MASK 0x1
1255#define ISCSI_XHQE_FINAL_SHIFT 0 1416#define ISCSI_XHQE_FINAL_SHIFT 0
1256#define ISCSI_XHQE_STATUS_BIT_MASK 0x1 1417#define ISCSI_XHQE_STATUS_BIT_MASK 0x1
1257#define ISCSI_XHQE_STATUS_BIT_SHIFT 1 1418#define ISCSI_XHQE_STATUS_BIT_SHIFT 1
1258#define ISCSI_XHQE_NUM_SGES_MASK 0xF 1419#define ISCSI_XHQE_NUM_SGES_MASK 0xF
1259#define ISCSI_XHQE_NUM_SGES_SHIFT 2 1420#define ISCSI_XHQE_NUM_SGES_SHIFT 2
1260#define ISCSI_XHQE_RESERVED0_MASK 0x3 1421#define ISCSI_XHQE_RESERVED0_MASK 0x3
1261#define ISCSI_XHQE_RESERVED0_SHIFT 6 1422#define ISCSI_XHQE_RESERVED0_SHIFT 6
1262 union iscsi_seq_num seq_num; 1423 union iscsi_seq_num seq_num;
1263 __le16 reserved1; 1424 __le16 reserved1;
1264}; 1425};
1265 1426
1427/* Per PF iSCSI receive path statistics - mStorm RAM structure */
1266struct mstorm_iscsi_stats_drv { 1428struct mstorm_iscsi_stats_drv {
1267 struct regpair iscsi_rx_dropped_pdus_task_not_valid; 1429 struct regpair iscsi_rx_dropped_pdus_task_not_valid;
1430 struct regpair iscsi_rx_dup_ack_cnt;
1268}; 1431};
1269 1432
1433/* Per PF iSCSI transmit path statistics - pStorm RAM structure */
1270struct pstorm_iscsi_stats_drv { 1434struct pstorm_iscsi_stats_drv {
1271 struct regpair iscsi_tx_bytes_cnt; 1435 struct regpair iscsi_tx_bytes_cnt;
1272 struct regpair iscsi_tx_packet_cnt; 1436 struct regpair iscsi_tx_packet_cnt;
1273}; 1437};
1274 1438
1439/* Per PF iSCSI receive path statistics - tStorm RAM structure */
1275struct tstorm_iscsi_stats_drv { 1440struct tstorm_iscsi_stats_drv {
1276 struct regpair iscsi_rx_bytes_cnt; 1441 struct regpair iscsi_rx_bytes_cnt;
1277 struct regpair iscsi_rx_packet_cnt; 1442 struct regpair iscsi_rx_packet_cnt;
1278 struct regpair iscsi_rx_new_ooo_isle_events_cnt; 1443 struct regpair iscsi_rx_new_ooo_isle_events_cnt;
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;
1279 __le32 iscsi_cmdq_threshold_cnt; 1447 __le32 iscsi_cmdq_threshold_cnt;
1280 __le32 iscsi_rq_threshold_cnt; 1448 __le32 iscsi_rq_threshold_cnt;
1281 __le32 iscsi_immq_threshold_cnt; 1449 __le32 iscsi_immq_threshold_cnt;
1282}; 1450};
1283 1451
1452/* Per PF iSCSI receive path statistics - uStorm RAM structure */
1284struct ustorm_iscsi_stats_drv { 1453struct ustorm_iscsi_stats_drv {
1285 struct regpair iscsi_rx_data_pdu_cnt; 1454 struct regpair iscsi_rx_data_pdu_cnt;
1286 struct regpair iscsi_rx_r2t_pdu_cnt; 1455 struct regpair iscsi_rx_r2t_pdu_cnt;
1287 struct regpair iscsi_rx_total_pdu_cnt; 1456 struct regpair iscsi_rx_total_pdu_cnt;
1288}; 1457};
1289 1458
1459/* Per PF iSCSI transmit path statistics - xStorm RAM structure */
1290struct xstorm_iscsi_stats_drv { 1460struct xstorm_iscsi_stats_drv {
1291 struct regpair iscsi_tx_go_to_slow_start_event_cnt; 1461 struct regpair iscsi_tx_go_to_slow_start_event_cnt;
1292 struct regpair iscsi_tx_fast_retransmit_event_cnt; 1462 struct regpair iscsi_tx_fast_retransmit_event_cnt;
1463 struct regpair iscsi_tx_pure_ack_cnt;
1464 struct regpair iscsi_tx_delayed_ack_cnt;
1293}; 1465};
1294 1466
1467/* Per PF iSCSI transmit path statistics - yStorm RAM structure */
1295struct ystorm_iscsi_stats_drv { 1468struct ystorm_iscsi_stats_drv {
1296 struct regpair iscsi_tx_data_pdu_cnt; 1469 struct regpair iscsi_tx_data_pdu_cnt;
1297 struct regpair iscsi_tx_r2t_pdu_cnt; 1470 struct regpair iscsi_tx_r2t_pdu_cnt;
1298 struct regpair iscsi_tx_total_pdu_cnt; 1471 struct regpair iscsi_tx_total_pdu_cnt;
1472 struct regpair iscsi_tx_tcp_payload_bytes_cnt;
1473 struct regpair iscsi_tx_tcp_pkt_cnt;
1299}; 1474};
1300 1475
1301struct tstorm_iscsi_task_ag_ctx { 1476struct e4_tstorm_iscsi_task_ag_ctx {
1302 u8 byte0; 1477 u8 byte0;
1303 u8 byte1; 1478 u8 byte1;
1304 __le16 word0; 1479 __le16 word0;
1305 u8 flags0; 1480 u8 flags0;
1306#define TSTORM_ISCSI_TASK_AG_CTX_NIBBLE0_MASK 0xF 1481#define E4_TSTORM_ISCSI_TASK_AG_CTX_NIBBLE0_MASK 0xF
1307#define TSTORM_ISCSI_TASK_AG_CTX_NIBBLE0_SHIFT 0 1482#define E4_TSTORM_ISCSI_TASK_AG_CTX_NIBBLE0_SHIFT 0
1308#define TSTORM_ISCSI_TASK_AG_CTX_BIT0_MASK 0x1 1483#define E4_TSTORM_ISCSI_TASK_AG_CTX_BIT0_MASK 0x1
1309#define TSTORM_ISCSI_TASK_AG_CTX_BIT0_SHIFT 4 1484#define E4_TSTORM_ISCSI_TASK_AG_CTX_BIT0_SHIFT 4
1310#define TSTORM_ISCSI_TASK_AG_CTX_BIT1_MASK 0x1 1485#define E4_TSTORM_ISCSI_TASK_AG_CTX_BIT1_MASK 0x1
1311#define TSTORM_ISCSI_TASK_AG_CTX_BIT1_SHIFT 5 1486#define E4_TSTORM_ISCSI_TASK_AG_CTX_BIT1_SHIFT 5
1312#define TSTORM_ISCSI_TASK_AG_CTX_BIT2_MASK 0x1 1487#define E4_TSTORM_ISCSI_TASK_AG_CTX_BIT2_MASK 0x1
1313#define TSTORM_ISCSI_TASK_AG_CTX_BIT2_SHIFT 6 1488#define E4_TSTORM_ISCSI_TASK_AG_CTX_BIT2_SHIFT 6
1314#define TSTORM_ISCSI_TASK_AG_CTX_BIT3_MASK 0x1 1489#define E4_TSTORM_ISCSI_TASK_AG_CTX_BIT3_MASK 0x1
1315#define TSTORM_ISCSI_TASK_AG_CTX_BIT3_SHIFT 7 1490#define E4_TSTORM_ISCSI_TASK_AG_CTX_BIT3_SHIFT 7
1316 u8 flags1; 1491 u8 flags1;
1317#define TSTORM_ISCSI_TASK_AG_CTX_BIT4_MASK 0x1 1492#define E4_TSTORM_ISCSI_TASK_AG_CTX_BIT4_MASK 0x1
1318#define TSTORM_ISCSI_TASK_AG_CTX_BIT4_SHIFT 0 1493#define E4_TSTORM_ISCSI_TASK_AG_CTX_BIT4_SHIFT 0
1319#define TSTORM_ISCSI_TASK_AG_CTX_BIT5_MASK 0x1 1494#define E4_TSTORM_ISCSI_TASK_AG_CTX_BIT5_MASK 0x1
1320#define TSTORM_ISCSI_TASK_AG_CTX_BIT5_SHIFT 1 1495#define E4_TSTORM_ISCSI_TASK_AG_CTX_BIT5_SHIFT 1
1321#define TSTORM_ISCSI_TASK_AG_CTX_CF0_MASK 0x3 1496#define E4_TSTORM_ISCSI_TASK_AG_CTX_CF0_MASK 0x3
1322#define TSTORM_ISCSI_TASK_AG_CTX_CF0_SHIFT 2 1497#define E4_TSTORM_ISCSI_TASK_AG_CTX_CF0_SHIFT 2
1323#define TSTORM_ISCSI_TASK_AG_CTX_CF1_MASK 0x3 1498#define E4_TSTORM_ISCSI_TASK_AG_CTX_CF1_MASK 0x3
1324#define TSTORM_ISCSI_TASK_AG_CTX_CF1_SHIFT 4 1499#define E4_TSTORM_ISCSI_TASK_AG_CTX_CF1_SHIFT 4
1325#define TSTORM_ISCSI_TASK_AG_CTX_CF2_MASK 0x3 1500#define E4_TSTORM_ISCSI_TASK_AG_CTX_CF2_MASK 0x3
1326#define TSTORM_ISCSI_TASK_AG_CTX_CF2_SHIFT 6 1501#define E4_TSTORM_ISCSI_TASK_AG_CTX_CF2_SHIFT 6
1327 u8 flags2; 1502 u8 flags2;
1328#define TSTORM_ISCSI_TASK_AG_CTX_CF3_MASK 0x3 1503#define E4_TSTORM_ISCSI_TASK_AG_CTX_CF3_MASK 0x3
1329#define TSTORM_ISCSI_TASK_AG_CTX_CF3_SHIFT 0 1504#define E4_TSTORM_ISCSI_TASK_AG_CTX_CF3_SHIFT 0
1330#define TSTORM_ISCSI_TASK_AG_CTX_CF4_MASK 0x3 1505#define E4_TSTORM_ISCSI_TASK_AG_CTX_CF4_MASK 0x3
1331#define TSTORM_ISCSI_TASK_AG_CTX_CF4_SHIFT 2 1506#define E4_TSTORM_ISCSI_TASK_AG_CTX_CF4_SHIFT 2
1332#define TSTORM_ISCSI_TASK_AG_CTX_CF5_MASK 0x3 1507#define E4_TSTORM_ISCSI_TASK_AG_CTX_CF5_MASK 0x3
1333#define TSTORM_ISCSI_TASK_AG_CTX_CF5_SHIFT 4 1508#define E4_TSTORM_ISCSI_TASK_AG_CTX_CF5_SHIFT 4
1334#define TSTORM_ISCSI_TASK_AG_CTX_CF6_MASK 0x3 1509#define E4_TSTORM_ISCSI_TASK_AG_CTX_CF6_MASK 0x3
1335#define TSTORM_ISCSI_TASK_AG_CTX_CF6_SHIFT 6 1510#define E4_TSTORM_ISCSI_TASK_AG_CTX_CF6_SHIFT 6
1336 u8 flags3; 1511 u8 flags3;
1337#define TSTORM_ISCSI_TASK_AG_CTX_CF7_MASK 0x3 1512#define E4_TSTORM_ISCSI_TASK_AG_CTX_CF7_MASK 0x3
1338#define TSTORM_ISCSI_TASK_AG_CTX_CF7_SHIFT 0 1513#define E4_TSTORM_ISCSI_TASK_AG_CTX_CF7_SHIFT 0
1339#define TSTORM_ISCSI_TASK_AG_CTX_CF0EN_MASK 0x1 1514#define E4_TSTORM_ISCSI_TASK_AG_CTX_CF0EN_MASK 0x1
1340#define TSTORM_ISCSI_TASK_AG_CTX_CF0EN_SHIFT 2 1515#define E4_TSTORM_ISCSI_TASK_AG_CTX_CF0EN_SHIFT 2
1341#define TSTORM_ISCSI_TASK_AG_CTX_CF1EN_MASK 0x1 1516#define E4_TSTORM_ISCSI_TASK_AG_CTX_CF1EN_MASK 0x1
1342#define TSTORM_ISCSI_TASK_AG_CTX_CF1EN_SHIFT 3 1517#define E4_TSTORM_ISCSI_TASK_AG_CTX_CF1EN_SHIFT 3
1343#define TSTORM_ISCSI_TASK_AG_CTX_CF2EN_MASK 0x1 1518#define E4_TSTORM_ISCSI_TASK_AG_CTX_CF2EN_MASK 0x1
1344#define TSTORM_ISCSI_TASK_AG_CTX_CF2EN_SHIFT 4 1519#define E4_TSTORM_ISCSI_TASK_AG_CTX_CF2EN_SHIFT 4
1345#define TSTORM_ISCSI_TASK_AG_CTX_CF3EN_MASK 0x1 1520#define E4_TSTORM_ISCSI_TASK_AG_CTX_CF3EN_MASK 0x1
1346#define TSTORM_ISCSI_TASK_AG_CTX_CF3EN_SHIFT 5 1521#define E4_TSTORM_ISCSI_TASK_AG_CTX_CF3EN_SHIFT 5
1347#define TSTORM_ISCSI_TASK_AG_CTX_CF4EN_MASK 0x1 1522#define E4_TSTORM_ISCSI_TASK_AG_CTX_CF4EN_MASK 0x1
1348#define TSTORM_ISCSI_TASK_AG_CTX_CF4EN_SHIFT 6 1523#define E4_TSTORM_ISCSI_TASK_AG_CTX_CF4EN_SHIFT 6
1349#define TSTORM_ISCSI_TASK_AG_CTX_CF5EN_MASK 0x1 1524#define E4_TSTORM_ISCSI_TASK_AG_CTX_CF5EN_MASK 0x1
1350#define TSTORM_ISCSI_TASK_AG_CTX_CF5EN_SHIFT 7 1525#define E4_TSTORM_ISCSI_TASK_AG_CTX_CF5EN_SHIFT 7
1351 u8 flags4; 1526 u8 flags4;
1352#define TSTORM_ISCSI_TASK_AG_CTX_CF6EN_MASK 0x1 1527#define E4_TSTORM_ISCSI_TASK_AG_CTX_CF6EN_MASK 0x1
1353#define TSTORM_ISCSI_TASK_AG_CTX_CF6EN_SHIFT 0 1528#define E4_TSTORM_ISCSI_TASK_AG_CTX_CF6EN_SHIFT 0
1354#define TSTORM_ISCSI_TASK_AG_CTX_CF7EN_MASK 0x1 1529#define E4_TSTORM_ISCSI_TASK_AG_CTX_CF7EN_MASK 0x1
1355#define TSTORM_ISCSI_TASK_AG_CTX_CF7EN_SHIFT 1 1530#define E4_TSTORM_ISCSI_TASK_AG_CTX_CF7EN_SHIFT 1
1356#define TSTORM_ISCSI_TASK_AG_CTX_RULE0EN_MASK 0x1 1531#define E4_TSTORM_ISCSI_TASK_AG_CTX_RULE0EN_MASK 0x1
1357#define TSTORM_ISCSI_TASK_AG_CTX_RULE0EN_SHIFT 2 1532#define E4_TSTORM_ISCSI_TASK_AG_CTX_RULE0EN_SHIFT 2
1358#define TSTORM_ISCSI_TASK_AG_CTX_RULE1EN_MASK 0x1 1533#define E4_TSTORM_ISCSI_TASK_AG_CTX_RULE1EN_MASK 0x1
1359#define TSTORM_ISCSI_TASK_AG_CTX_RULE1EN_SHIFT 3 1534#define E4_TSTORM_ISCSI_TASK_AG_CTX_RULE1EN_SHIFT 3
1360#define TSTORM_ISCSI_TASK_AG_CTX_RULE2EN_MASK 0x1 1535#define E4_TSTORM_ISCSI_TASK_AG_CTX_RULE2EN_MASK 0x1
1361#define TSTORM_ISCSI_TASK_AG_CTX_RULE2EN_SHIFT 4 1536#define E4_TSTORM_ISCSI_TASK_AG_CTX_RULE2EN_SHIFT 4
1362#define TSTORM_ISCSI_TASK_AG_CTX_RULE3EN_MASK 0x1 1537#define E4_TSTORM_ISCSI_TASK_AG_CTX_RULE3EN_MASK 0x1
1363#define TSTORM_ISCSI_TASK_AG_CTX_RULE3EN_SHIFT 5 1538#define E4_TSTORM_ISCSI_TASK_AG_CTX_RULE3EN_SHIFT 5
1364#define TSTORM_ISCSI_TASK_AG_CTX_RULE4EN_MASK 0x1 1539#define E4_TSTORM_ISCSI_TASK_AG_CTX_RULE4EN_MASK 0x1
1365#define TSTORM_ISCSI_TASK_AG_CTX_RULE4EN_SHIFT 6 1540#define E4_TSTORM_ISCSI_TASK_AG_CTX_RULE4EN_SHIFT 6
1366#define TSTORM_ISCSI_TASK_AG_CTX_RULE5EN_MASK 0x1 1541#define E4_TSTORM_ISCSI_TASK_AG_CTX_RULE5EN_MASK 0x1
1367#define TSTORM_ISCSI_TASK_AG_CTX_RULE5EN_SHIFT 7 1542#define E4_TSTORM_ISCSI_TASK_AG_CTX_RULE5EN_SHIFT 7
1368 u8 byte2; 1543 u8 byte2;
1369 __le16 word1; 1544 __le16 word1;
1370 __le32 reg0; 1545 __le32 reg0;
@@ -1376,18 +1551,20 @@ struct tstorm_iscsi_task_ag_ctx {
1376 __le32 reg1; 1551 __le32 reg1;
1377 __le32 reg2; 1552 __le32 reg2;
1378}; 1553};
1554
1555/* iSCSI doorbell data */
1379struct iscsi_db_data { 1556struct iscsi_db_data {
1380 u8 params; 1557 u8 params;
1381#define ISCSI_DB_DATA_DEST_MASK 0x3 1558#define ISCSI_DB_DATA_DEST_MASK 0x3
1382#define ISCSI_DB_DATA_DEST_SHIFT 0 1559#define ISCSI_DB_DATA_DEST_SHIFT 0
1383#define ISCSI_DB_DATA_AGG_CMD_MASK 0x3 1560#define ISCSI_DB_DATA_AGG_CMD_MASK 0x3
1384#define ISCSI_DB_DATA_AGG_CMD_SHIFT 2 1561#define ISCSI_DB_DATA_AGG_CMD_SHIFT 2
1385#define ISCSI_DB_DATA_BYPASS_EN_MASK 0x1 1562#define ISCSI_DB_DATA_BYPASS_EN_MASK 0x1
1386#define ISCSI_DB_DATA_BYPASS_EN_SHIFT 4 1563#define ISCSI_DB_DATA_BYPASS_EN_SHIFT 4
1387#define ISCSI_DB_DATA_RESERVED_MASK 0x1 1564#define ISCSI_DB_DATA_RESERVED_MASK 0x1
1388#define ISCSI_DB_DATA_RESERVED_SHIFT 5 1565#define ISCSI_DB_DATA_RESERVED_SHIFT 5
1389#define ISCSI_DB_DATA_AGG_VAL_SEL_MASK 0x3 1566#define ISCSI_DB_DATA_AGG_VAL_SEL_MASK 0x3
1390#define ISCSI_DB_DATA_AGG_VAL_SEL_SHIFT 6 1567#define ISCSI_DB_DATA_AGG_VAL_SEL_SHIFT 6
1391 u8 agg_flags; 1568 u8 agg_flags;
1392 __le16 sq_prod; 1569 __le16 sq_prod;
1393}; 1570};