0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014 #ifndef __57XX_ISCSI_HSI_LINUX_LE__
0015 #define __57XX_ISCSI_HSI_LINUX_LE__
0016
0017
0018
0019
0020 struct bnx2i_async_msg {
0021 #if defined(__BIG_ENDIAN)
0022 u8 op_code;
0023 u8 reserved1;
0024 u16 reserved0;
0025 #elif defined(__LITTLE_ENDIAN)
0026 u16 reserved0;
0027 u8 reserved1;
0028 u8 op_code;
0029 #endif
0030 u32 reserved2;
0031 u32 exp_cmd_sn;
0032 u32 max_cmd_sn;
0033 u32 reserved3[2];
0034 #if defined(__BIG_ENDIAN)
0035 u16 reserved5;
0036 u8 err_code;
0037 u8 reserved4;
0038 #elif defined(__LITTLE_ENDIAN)
0039 u8 reserved4;
0040 u8 err_code;
0041 u16 reserved5;
0042 #endif
0043 u32 reserved6;
0044 u32 lun[2];
0045 #if defined(__BIG_ENDIAN)
0046 u8 async_event;
0047 u8 async_vcode;
0048 u16 param1;
0049 #elif defined(__LITTLE_ENDIAN)
0050 u16 param1;
0051 u8 async_vcode;
0052 u8 async_event;
0053 #endif
0054 #if defined(__BIG_ENDIAN)
0055 u16 param2;
0056 u16 param3;
0057 #elif defined(__LITTLE_ENDIAN)
0058 u16 param3;
0059 u16 param2;
0060 #endif
0061 u32 reserved7[3];
0062 u32 cq_req_sn;
0063 };
0064
0065
0066
0067
0068
0069 struct iscsi_bd {
0070 u32 buffer_addr_hi;
0071 u32 buffer_addr_lo;
0072 #if defined(__BIG_ENDIAN)
0073 u16 reserved0;
0074 u16 buffer_length;
0075 #elif defined(__LITTLE_ENDIAN)
0076 u16 buffer_length;
0077 u16 reserved0;
0078 #endif
0079 #if defined(__BIG_ENDIAN)
0080 u16 reserved3;
0081 u16 flags;
0082 #define ISCSI_BD_RESERVED1 (0x3F<<0)
0083 #define ISCSI_BD_RESERVED1_SHIFT 0
0084 #define ISCSI_BD_LAST_IN_BD_CHAIN (0x1<<6)
0085 #define ISCSI_BD_LAST_IN_BD_CHAIN_SHIFT 6
0086 #define ISCSI_BD_FIRST_IN_BD_CHAIN (0x1<<7)
0087 #define ISCSI_BD_FIRST_IN_BD_CHAIN_SHIFT 7
0088 #define ISCSI_BD_RESERVED2 (0xFF<<8)
0089 #define ISCSI_BD_RESERVED2_SHIFT 8
0090 #elif defined(__LITTLE_ENDIAN)
0091 u16 flags;
0092 #define ISCSI_BD_RESERVED1 (0x3F<<0)
0093 #define ISCSI_BD_RESERVED1_SHIFT 0
0094 #define ISCSI_BD_LAST_IN_BD_CHAIN (0x1<<6)
0095 #define ISCSI_BD_LAST_IN_BD_CHAIN_SHIFT 6
0096 #define ISCSI_BD_FIRST_IN_BD_CHAIN (0x1<<7)
0097 #define ISCSI_BD_FIRST_IN_BD_CHAIN_SHIFT 7
0098 #define ISCSI_BD_RESERVED2 (0xFF<<8)
0099 #define ISCSI_BD_RESERVED2_SHIFT 8
0100 u16 reserved3;
0101 #endif
0102 };
0103
0104
0105
0106
0107
0108 struct bnx2i_cleanup_request {
0109 #if defined(__BIG_ENDIAN)
0110 u8 op_code;
0111 u8 reserved1;
0112 u16 reserved0;
0113 #elif defined(__LITTLE_ENDIAN)
0114 u16 reserved0;
0115 u8 reserved1;
0116 u8 op_code;
0117 #endif
0118 u32 reserved2[3];
0119 #if defined(__BIG_ENDIAN)
0120 u16 reserved3;
0121 u16 itt;
0122 #define ISCSI_CLEANUP_REQUEST_INDEX (0x3FFF<<0)
0123 #define ISCSI_CLEANUP_REQUEST_INDEX_SHIFT 0
0124 #define ISCSI_CLEANUP_REQUEST_TYPE (0x3<<14)
0125 #define ISCSI_CLEANUP_REQUEST_TYPE_SHIFT 14
0126 #elif defined(__LITTLE_ENDIAN)
0127 u16 itt;
0128 #define ISCSI_CLEANUP_REQUEST_INDEX (0x3FFF<<0)
0129 #define ISCSI_CLEANUP_REQUEST_INDEX_SHIFT 0
0130 #define ISCSI_CLEANUP_REQUEST_TYPE (0x3<<14)
0131 #define ISCSI_CLEANUP_REQUEST_TYPE_SHIFT 14
0132 u16 reserved3;
0133 #endif
0134 u32 reserved4[10];
0135 #if defined(__BIG_ENDIAN)
0136 u8 cq_index;
0137 u8 reserved6;
0138 u16 reserved5;
0139 #elif defined(__LITTLE_ENDIAN)
0140 u16 reserved5;
0141 u8 reserved6;
0142 u8 cq_index;
0143 #endif
0144 };
0145
0146
0147
0148
0149
0150 struct bnx2i_cleanup_response {
0151 #if defined(__BIG_ENDIAN)
0152 u8 op_code;
0153 u8 status;
0154 u16 reserved0;
0155 #elif defined(__LITTLE_ENDIAN)
0156 u16 reserved0;
0157 u8 status;
0158 u8 op_code;
0159 #endif
0160 u32 reserved1[3];
0161 u32 reserved2[2];
0162 #if defined(__BIG_ENDIAN)
0163 u16 reserved4;
0164 u8 err_code;
0165 u8 reserved3;
0166 #elif defined(__LITTLE_ENDIAN)
0167 u8 reserved3;
0168 u8 err_code;
0169 u16 reserved4;
0170 #endif
0171 u32 reserved5[7];
0172 #if defined(__BIG_ENDIAN)
0173 u16 reserved6;
0174 u16 itt;
0175 #define ISCSI_CLEANUP_RESPONSE_INDEX (0x3FFF<<0)
0176 #define ISCSI_CLEANUP_RESPONSE_INDEX_SHIFT 0
0177 #define ISCSI_CLEANUP_RESPONSE_TYPE (0x3<<14)
0178 #define ISCSI_CLEANUP_RESPONSE_TYPE_SHIFT 14
0179 #elif defined(__LITTLE_ENDIAN)
0180 u16 itt;
0181 #define ISCSI_CLEANUP_RESPONSE_INDEX (0x3FFF<<0)
0182 #define ISCSI_CLEANUP_RESPONSE_INDEX_SHIFT 0
0183 #define ISCSI_CLEANUP_RESPONSE_TYPE (0x3<<14)
0184 #define ISCSI_CLEANUP_RESPONSE_TYPE_SHIFT 14
0185 u16 reserved6;
0186 #endif
0187 u32 cq_req_sn;
0188 };
0189
0190
0191
0192
0193
0194 struct bnx2i_cmd_request {
0195 #if defined(__BIG_ENDIAN)
0196 u8 op_code;
0197 u8 op_attr;
0198 #define ISCSI_CMD_REQUEST_TASK_ATTR (0x7<<0)
0199 #define ISCSI_CMD_REQUEST_TASK_ATTR_SHIFT 0
0200 #define ISCSI_CMD_REQUEST_RESERVED1 (0x3<<3)
0201 #define ISCSI_CMD_REQUEST_RESERVED1_SHIFT 3
0202 #define ISCSI_CMD_REQUEST_WRITE (0x1<<5)
0203 #define ISCSI_CMD_REQUEST_WRITE_SHIFT 5
0204 #define ISCSI_CMD_REQUEST_READ (0x1<<6)
0205 #define ISCSI_CMD_REQUEST_READ_SHIFT 6
0206 #define ISCSI_CMD_REQUEST_FINAL (0x1<<7)
0207 #define ISCSI_CMD_REQUEST_FINAL_SHIFT 7
0208 u16 reserved0;
0209 #elif defined(__LITTLE_ENDIAN)
0210 u16 reserved0;
0211 u8 op_attr;
0212 #define ISCSI_CMD_REQUEST_TASK_ATTR (0x7<<0)
0213 #define ISCSI_CMD_REQUEST_TASK_ATTR_SHIFT 0
0214 #define ISCSI_CMD_REQUEST_RESERVED1 (0x3<<3)
0215 #define ISCSI_CMD_REQUEST_RESERVED1_SHIFT 3
0216 #define ISCSI_CMD_REQUEST_WRITE (0x1<<5)
0217 #define ISCSI_CMD_REQUEST_WRITE_SHIFT 5
0218 #define ISCSI_CMD_REQUEST_READ (0x1<<6)
0219 #define ISCSI_CMD_REQUEST_READ_SHIFT 6
0220 #define ISCSI_CMD_REQUEST_FINAL (0x1<<7)
0221 #define ISCSI_CMD_REQUEST_FINAL_SHIFT 7
0222 u8 op_code;
0223 #endif
0224 #if defined(__BIG_ENDIAN)
0225 u16 ud_buffer_offset;
0226 u16 sd_buffer_offset;
0227 #elif defined(__LITTLE_ENDIAN)
0228 u16 sd_buffer_offset;
0229 u16 ud_buffer_offset;
0230 #endif
0231 u32 lun[2];
0232 #if defined(__BIG_ENDIAN)
0233 u16 reserved2;
0234 u16 itt;
0235 #define ISCSI_CMD_REQUEST_INDEX (0x3FFF<<0)
0236 #define ISCSI_CMD_REQUEST_INDEX_SHIFT 0
0237 #define ISCSI_CMD_REQUEST_TYPE (0x3<<14)
0238 #define ISCSI_CMD_REQUEST_TYPE_SHIFT 14
0239 #elif defined(__LITTLE_ENDIAN)
0240 u16 itt;
0241 #define ISCSI_CMD_REQUEST_INDEX (0x3FFF<<0)
0242 #define ISCSI_CMD_REQUEST_INDEX_SHIFT 0
0243 #define ISCSI_CMD_REQUEST_TYPE (0x3<<14)
0244 #define ISCSI_CMD_REQUEST_TYPE_SHIFT 14
0245 u16 reserved2;
0246 #endif
0247 u32 total_data_transfer_length;
0248 u32 cmd_sn;
0249 u32 reserved3;
0250 u32 cdb[4];
0251 u32 zero_fill;
0252 u32 bd_list_addr_lo;
0253 u32 bd_list_addr_hi;
0254 #if defined(__BIG_ENDIAN)
0255 u8 cq_index;
0256 u8 sd_start_bd_index;
0257 u8 ud_start_bd_index;
0258 u8 num_bds;
0259 #elif defined(__LITTLE_ENDIAN)
0260 u8 num_bds;
0261 u8 ud_start_bd_index;
0262 u8 sd_start_bd_index;
0263 u8 cq_index;
0264 #endif
0265 };
0266
0267
0268
0269
0270
0271 struct bnx2i_write_resp_task_stat {
0272 #if defined(__BIG_ENDIAN)
0273 u16 num_r2ts;
0274 u16 num_data_outs;
0275 #elif defined(__LITTLE_ENDIAN)
0276 u16 num_data_outs;
0277 u16 num_r2ts;
0278 #endif
0279 };
0280
0281
0282
0283
0284 struct bnx2i_read_resp_task_stat {
0285 #if defined(__BIG_ENDIAN)
0286 u16 reserved;
0287 u16 num_data_ins;
0288 #elif defined(__LITTLE_ENDIAN)
0289 u16 num_data_ins;
0290 u16 reserved;
0291 #endif
0292 };
0293
0294
0295
0296
0297 union bnx2i_cmd_resp_task_stat {
0298 struct bnx2i_write_resp_task_stat write_stat;
0299 struct bnx2i_read_resp_task_stat read_stat;
0300 };
0301
0302
0303
0304
0305 struct bnx2i_cmd_response {
0306 #if defined(__BIG_ENDIAN)
0307 u8 op_code;
0308 u8 response_flags;
0309 #define ISCSI_CMD_RESPONSE_RESERVED0 (0x1<<0)
0310 #define ISCSI_CMD_RESPONSE_RESERVED0_SHIFT 0
0311 #define ISCSI_CMD_RESPONSE_RESIDUAL_UNDERFLOW (0x1<<1)
0312 #define ISCSI_CMD_RESPONSE_RESIDUAL_UNDERFLOW_SHIFT 1
0313 #define ISCSI_CMD_RESPONSE_RESIDUAL_OVERFLOW (0x1<<2)
0314 #define ISCSI_CMD_RESPONSE_RESIDUAL_OVERFLOW_SHIFT 2
0315 #define ISCSI_CMD_RESPONSE_BR_RESIDUAL_UNDERFLOW (0x1<<3)
0316 #define ISCSI_CMD_RESPONSE_BR_RESIDUAL_UNDERFLOW_SHIFT 3
0317 #define ISCSI_CMD_RESPONSE_BR_RESIDUAL_OVERFLOW (0x1<<4)
0318 #define ISCSI_CMD_RESPONSE_BR_RESIDUAL_OVERFLOW_SHIFT 4
0319 #define ISCSI_CMD_RESPONSE_RESERVED1 (0x7<<5)
0320 #define ISCSI_CMD_RESPONSE_RESERVED1_SHIFT 5
0321 u8 response;
0322 u8 status;
0323 #elif defined(__LITTLE_ENDIAN)
0324 u8 status;
0325 u8 response;
0326 u8 response_flags;
0327 #define ISCSI_CMD_RESPONSE_RESERVED0 (0x1<<0)
0328 #define ISCSI_CMD_RESPONSE_RESERVED0_SHIFT 0
0329 #define ISCSI_CMD_RESPONSE_RESIDUAL_UNDERFLOW (0x1<<1)
0330 #define ISCSI_CMD_RESPONSE_RESIDUAL_UNDERFLOW_SHIFT 1
0331 #define ISCSI_CMD_RESPONSE_RESIDUAL_OVERFLOW (0x1<<2)
0332 #define ISCSI_CMD_RESPONSE_RESIDUAL_OVERFLOW_SHIFT 2
0333 #define ISCSI_CMD_RESPONSE_BR_RESIDUAL_UNDERFLOW (0x1<<3)
0334 #define ISCSI_CMD_RESPONSE_BR_RESIDUAL_UNDERFLOW_SHIFT 3
0335 #define ISCSI_CMD_RESPONSE_BR_RESIDUAL_OVERFLOW (0x1<<4)
0336 #define ISCSI_CMD_RESPONSE_BR_RESIDUAL_OVERFLOW_SHIFT 4
0337 #define ISCSI_CMD_RESPONSE_RESERVED1 (0x7<<5)
0338 #define ISCSI_CMD_RESPONSE_RESERVED1_SHIFT 5
0339 u8 op_code;
0340 #endif
0341 u32 data_length;
0342 u32 exp_cmd_sn;
0343 u32 max_cmd_sn;
0344 u32 reserved2;
0345 u32 residual_count;
0346 #if defined(__BIG_ENDIAN)
0347 u16 reserved4;
0348 u8 err_code;
0349 u8 reserved3;
0350 #elif defined(__LITTLE_ENDIAN)
0351 u8 reserved3;
0352 u8 err_code;
0353 u16 reserved4;
0354 #endif
0355 u32 reserved5[5];
0356 union bnx2i_cmd_resp_task_stat task_stat;
0357 u32 reserved6;
0358 #if defined(__BIG_ENDIAN)
0359 u16 reserved7;
0360 u16 itt;
0361 #define ISCSI_CMD_RESPONSE_INDEX (0x3FFF<<0)
0362 #define ISCSI_CMD_RESPONSE_INDEX_SHIFT 0
0363 #define ISCSI_CMD_RESPONSE_TYPE (0x3<<14)
0364 #define ISCSI_CMD_RESPONSE_TYPE_SHIFT 14
0365 #elif defined(__LITTLE_ENDIAN)
0366 u16 itt;
0367 #define ISCSI_CMD_RESPONSE_INDEX (0x3FFF<<0)
0368 #define ISCSI_CMD_RESPONSE_INDEX_SHIFT 0
0369 #define ISCSI_CMD_RESPONSE_TYPE (0x3<<14)
0370 #define ISCSI_CMD_RESPONSE_TYPE_SHIFT 14
0371 u16 reserved7;
0372 #endif
0373 u32 cq_req_sn;
0374 };
0375
0376
0377
0378
0379
0380
0381 struct bnx2i_fw_mp_request {
0382 #if defined(__BIG_ENDIAN)
0383 u8 op_code;
0384 u8 op_attr;
0385 u16 hdr_opaque1;
0386 #elif defined(__LITTLE_ENDIAN)
0387 u16 hdr_opaque1;
0388 u8 op_attr;
0389 u8 op_code;
0390 #endif
0391 u32 data_length;
0392 u32 hdr_opaque2[2];
0393 #if defined(__BIG_ENDIAN)
0394 u16 reserved0;
0395 u16 itt;
0396 #define ISCSI_FW_MP_REQUEST_INDEX (0x3FFF<<0)
0397 #define ISCSI_FW_MP_REQUEST_INDEX_SHIFT 0
0398 #define ISCSI_FW_MP_REQUEST_TYPE (0x3<<14)
0399 #define ISCSI_FW_MP_REQUEST_TYPE_SHIFT 14
0400 #elif defined(__LITTLE_ENDIAN)
0401 u16 itt;
0402 #define ISCSI_FW_MP_REQUEST_INDEX (0x3FFF<<0)
0403 #define ISCSI_FW_MP_REQUEST_INDEX_SHIFT 0
0404 #define ISCSI_FW_MP_REQUEST_TYPE (0x3<<14)
0405 #define ISCSI_FW_MP_REQUEST_TYPE_SHIFT 14
0406 u16 reserved0;
0407 #endif
0408 u32 hdr_opaque3[4];
0409 u32 resp_bd_list_addr_lo;
0410 u32 resp_bd_list_addr_hi;
0411 u32 resp_buffer;
0412 #define ISCSI_FW_MP_REQUEST_RESP_BUFFER_LENGTH (0xFFFFFF<<0)
0413 #define ISCSI_FW_MP_REQUEST_RESP_BUFFER_LENGTH_SHIFT 0
0414 #define ISCSI_FW_MP_REQUEST_NUM_RESP_BDS (0xFF<<24)
0415 #define ISCSI_FW_MP_REQUEST_NUM_RESP_BDS_SHIFT 24
0416 #if defined(__BIG_ENDIAN)
0417 u16 reserved4;
0418 u8 reserved3;
0419 u8 flags;
0420 #define ISCSI_FW_MP_REQUEST_RESERVED1 (0x1<<0)
0421 #define ISCSI_FW_MP_REQUEST_RESERVED1_SHIFT 0
0422 #define ISCSI_FW_MP_REQUEST_LOCAL_COMPLETION (0x1<<1)
0423 #define ISCSI_FW_MP_REQUEST_LOCAL_COMPLETION_SHIFT 1
0424 #define ISCSI_FW_MP_REQUEST_UPDATE_EXP_STAT_SN (0x1<<2)
0425 #define ISCSI_FW_MP_REQUEST_UPDATE_EXP_STAT_SN_SHIFT 2
0426 #define ISCSI_FW_MP_REQUEST_RESERVED2 (0x1F<<3)
0427 #define ISCSI_FW_MP_REQUEST_RESERVED2_SHIFT 3
0428 #elif defined(__LITTLE_ENDIAN)
0429 u8 flags;
0430 #define ISCSI_FW_MP_REQUEST_RESERVED1 (0x1<<0)
0431 #define ISCSI_FW_MP_REQUEST_RESERVED1_SHIFT 0
0432 #define ISCSI_FW_MP_REQUEST_LOCAL_COMPLETION (0x1<<1)
0433 #define ISCSI_FW_MP_REQUEST_LOCAL_COMPLETION_SHIFT 1
0434 #define ISCSI_FW_MP_REQUEST_UPDATE_EXP_STAT_SN (0x1<<2)
0435 #define ISCSI_FW_MP_REQUEST_UPDATE_EXP_STAT_SN_SHIFT 2
0436 #define ISCSI_FW_MP_REQUEST_RESERVED2 (0x1F<<3)
0437 #define ISCSI_FW_MP_REQUEST_RESERVED2_SHIFT 3
0438 u8 reserved3;
0439 u16 reserved4;
0440 #endif
0441 u32 bd_list_addr_lo;
0442 u32 bd_list_addr_hi;
0443 #if defined(__BIG_ENDIAN)
0444 u8 cq_index;
0445 u8 reserved6;
0446 u8 reserved5;
0447 u8 num_bds;
0448 #elif defined(__LITTLE_ENDIAN)
0449 u8 num_bds;
0450 u8 reserved5;
0451 u8 reserved6;
0452 u8 cq_index;
0453 #endif
0454 };
0455
0456
0457
0458
0459
0460 struct bnx2i_fw_response {
0461 u32 hdr_dword1[2];
0462 u32 hdr_exp_cmd_sn;
0463 u32 hdr_max_cmd_sn;
0464 u32 hdr_ttt;
0465 u32 hdr_res_cnt;
0466 u32 cqe_flags;
0467 #define ISCSI_FW_RESPONSE_RESERVED2 (0xFF<<0)
0468 #define ISCSI_FW_RESPONSE_RESERVED2_SHIFT 0
0469 #define ISCSI_FW_RESPONSE_ERR_CODE (0xFF<<8)
0470 #define ISCSI_FW_RESPONSE_ERR_CODE_SHIFT 8
0471 #define ISCSI_FW_RESPONSE_RESERVED3 (0xFFFF<<16)
0472 #define ISCSI_FW_RESPONSE_RESERVED3_SHIFT 16
0473 u32 stat_sn;
0474 u32 hdr_dword2[2];
0475 u32 hdr_dword3[2];
0476 u32 task_stat;
0477 u32 reserved0;
0478 u32 hdr_itt;
0479 u32 cq_req_sn;
0480 };
0481
0482
0483
0484
0485
0486 union iscsi_kcqe_params {
0487 u32 reserved0[4];
0488 };
0489
0490
0491
0492
0493 struct iscsi_kcqe {
0494 u32 iscsi_conn_id;
0495 u32 completion_status;
0496 u32 iscsi_conn_context_id;
0497 union iscsi_kcqe_params params;
0498 #if defined(__BIG_ENDIAN)
0499 u8 flags;
0500 #define ISCSI_KCQE_RESERVED0 (0xF<<0)
0501 #define ISCSI_KCQE_RESERVED0_SHIFT 0
0502 #define ISCSI_KCQE_LAYER_CODE (0x7<<4)
0503 #define ISCSI_KCQE_LAYER_CODE_SHIFT 4
0504 #define ISCSI_KCQE_RESERVED1 (0x1<<7)
0505 #define ISCSI_KCQE_RESERVED1_SHIFT 7
0506 u8 op_code;
0507 u16 qe_self_seq;
0508 #elif defined(__LITTLE_ENDIAN)
0509 u16 qe_self_seq;
0510 u8 op_code;
0511 u8 flags;
0512 #define ISCSI_KCQE_RESERVED0 (0xF<<0)
0513 #define ISCSI_KCQE_RESERVED0_SHIFT 0
0514 #define ISCSI_KCQE_LAYER_CODE (0x7<<4)
0515 #define ISCSI_KCQE_LAYER_CODE_SHIFT 4
0516 #define ISCSI_KCQE_RESERVED1 (0x1<<7)
0517 #define ISCSI_KCQE_RESERVED1_SHIFT 7
0518 #endif
0519 };
0520
0521
0522
0523
0524
0525
0526 struct iscsi_kwqe_header {
0527 #if defined(__BIG_ENDIAN)
0528 u8 flags;
0529 #define ISCSI_KWQE_HEADER_RESERVED0 (0xF<<0)
0530 #define ISCSI_KWQE_HEADER_RESERVED0_SHIFT 0
0531 #define ISCSI_KWQE_HEADER_LAYER_CODE (0x7<<4)
0532 #define ISCSI_KWQE_HEADER_LAYER_CODE_SHIFT 4
0533 #define ISCSI_KWQE_HEADER_RESERVED1 (0x1<<7)
0534 #define ISCSI_KWQE_HEADER_RESERVED1_SHIFT 7
0535 u8 op_code;
0536 #elif defined(__LITTLE_ENDIAN)
0537 u8 op_code;
0538 u8 flags;
0539 #define ISCSI_KWQE_HEADER_RESERVED0 (0xF<<0)
0540 #define ISCSI_KWQE_HEADER_RESERVED0_SHIFT 0
0541 #define ISCSI_KWQE_HEADER_LAYER_CODE (0x7<<4)
0542 #define ISCSI_KWQE_HEADER_LAYER_CODE_SHIFT 4
0543 #define ISCSI_KWQE_HEADER_RESERVED1 (0x1<<7)
0544 #define ISCSI_KWQE_HEADER_RESERVED1_SHIFT 7
0545 #endif
0546 };
0547
0548
0549
0550
0551 struct iscsi_kwqe_init1 {
0552 #if defined(__BIG_ENDIAN)
0553 struct iscsi_kwqe_header hdr;
0554 u8 reserved0;
0555 u8 num_cqs;
0556 #elif defined(__LITTLE_ENDIAN)
0557 u8 num_cqs;
0558 u8 reserved0;
0559 struct iscsi_kwqe_header hdr;
0560 #endif
0561 u32 dummy_buffer_addr_lo;
0562 u32 dummy_buffer_addr_hi;
0563 #if defined(__BIG_ENDIAN)
0564 u16 num_ccells_per_conn;
0565 u16 num_tasks_per_conn;
0566 #elif defined(__LITTLE_ENDIAN)
0567 u16 num_tasks_per_conn;
0568 u16 num_ccells_per_conn;
0569 #endif
0570 #if defined(__BIG_ENDIAN)
0571 u16 sq_wqes_per_page;
0572 u16 sq_num_wqes;
0573 #elif defined(__LITTLE_ENDIAN)
0574 u16 sq_num_wqes;
0575 u16 sq_wqes_per_page;
0576 #endif
0577 #if defined(__BIG_ENDIAN)
0578 u8 cq_log_wqes_per_page;
0579 u8 flags;
0580 #define ISCSI_KWQE_INIT1_PAGE_SIZE (0xF<<0)
0581 #define ISCSI_KWQE_INIT1_PAGE_SIZE_SHIFT 0
0582 #define ISCSI_KWQE_INIT1_DELAYED_ACK_ENABLE (0x1<<4)
0583 #define ISCSI_KWQE_INIT1_DELAYED_ACK_ENABLE_SHIFT 4
0584 #define ISCSI_KWQE_INIT1_KEEP_ALIVE_ENABLE (0x1<<5)
0585 #define ISCSI_KWQE_INIT1_KEEP_ALIVE_ENABLE_SHIFT 5
0586 #define ISCSI_KWQE_INIT1_TIME_STAMPS_ENABLE (0x1<<6)
0587 #define ISCSI_KWQE_INIT1_TIME_STAMPS_ENABLE_SHIFT 6
0588 #define ISCSI_KWQE_INIT1_RESERVED1 (0x1<<7)
0589 #define ISCSI_KWQE_INIT1_RESERVED1_SHIFT 7
0590 u16 cq_num_wqes;
0591 #elif defined(__LITTLE_ENDIAN)
0592 u16 cq_num_wqes;
0593 u8 flags;
0594 #define ISCSI_KWQE_INIT1_PAGE_SIZE (0xF<<0)
0595 #define ISCSI_KWQE_INIT1_PAGE_SIZE_SHIFT 0
0596 #define ISCSI_KWQE_INIT1_DELAYED_ACK_ENABLE (0x1<<4)
0597 #define ISCSI_KWQE_INIT1_DELAYED_ACK_ENABLE_SHIFT 4
0598 #define ISCSI_KWQE_INIT1_KEEP_ALIVE_ENABLE (0x1<<5)
0599 #define ISCSI_KWQE_INIT1_KEEP_ALIVE_ENABLE_SHIFT 5
0600 #define ISCSI_KWQE_INIT1_TIME_STAMPS_ENABLE (0x1<<6)
0601 #define ISCSI_KWQE_INIT1_TIME_STAMPS_ENABLE_SHIFT 6
0602 #define ISCSI_KWQE_INIT1_RESERVED1 (0x1<<7)
0603 #define ISCSI_KWQE_INIT1_RESERVED1_SHIFT 7
0604 u8 cq_log_wqes_per_page;
0605 #endif
0606 #if defined(__BIG_ENDIAN)
0607 u16 cq_num_pages;
0608 u16 sq_num_pages;
0609 #elif defined(__LITTLE_ENDIAN)
0610 u16 sq_num_pages;
0611 u16 cq_num_pages;
0612 #endif
0613 #if defined(__BIG_ENDIAN)
0614 u16 rq_buffer_size;
0615 u16 rq_num_wqes;
0616 #elif defined(__LITTLE_ENDIAN)
0617 u16 rq_num_wqes;
0618 u16 rq_buffer_size;
0619 #endif
0620 };
0621
0622
0623
0624
0625 struct iscsi_kwqe_init2 {
0626 #if defined(__BIG_ENDIAN)
0627 struct iscsi_kwqe_header hdr;
0628 u16 max_cq_sqn;
0629 #elif defined(__LITTLE_ENDIAN)
0630 u16 max_cq_sqn;
0631 struct iscsi_kwqe_header hdr;
0632 #endif
0633 u32 error_bit_map[2];
0634 u32 reserved1[5];
0635 };
0636
0637
0638
0639
0640 struct iscsi_kwqe_conn_offload1 {
0641 #if defined(__BIG_ENDIAN)
0642 struct iscsi_kwqe_header hdr;
0643 u16 iscsi_conn_id;
0644 #elif defined(__LITTLE_ENDIAN)
0645 u16 iscsi_conn_id;
0646 struct iscsi_kwqe_header hdr;
0647 #endif
0648 u32 sq_page_table_addr_lo;
0649 u32 sq_page_table_addr_hi;
0650 u32 cq_page_table_addr_lo;
0651 u32 cq_page_table_addr_hi;
0652 u32 reserved0[3];
0653 };
0654
0655
0656
0657
0658 struct iscsi_pte {
0659 u32 hi;
0660 u32 lo;
0661 };
0662
0663
0664
0665
0666 struct iscsi_kwqe_conn_offload2 {
0667 #if defined(__BIG_ENDIAN)
0668 struct iscsi_kwqe_header hdr;
0669 u16 reserved0;
0670 #elif defined(__LITTLE_ENDIAN)
0671 u16 reserved0;
0672 struct iscsi_kwqe_header hdr;
0673 #endif
0674 u32 rq_page_table_addr_lo;
0675 u32 rq_page_table_addr_hi;
0676 struct iscsi_pte sq_first_pte;
0677 struct iscsi_pte cq_first_pte;
0678 u32 num_additional_wqes;
0679 };
0680
0681
0682
0683
0684
0685 struct iscsi_kwqe_conn_offload3 {
0686 #if defined(__BIG_ENDIAN)
0687 struct iscsi_kwqe_header hdr;
0688 u16 reserved0;
0689 #elif defined(__LITTLE_ENDIAN)
0690 u16 reserved0;
0691 struct iscsi_kwqe_header hdr;
0692 #endif
0693 u32 reserved1;
0694 struct iscsi_pte qp_first_pte[3];
0695 };
0696
0697
0698
0699
0700
0701 struct iscsi_kwqe_conn_update {
0702 #if defined(__BIG_ENDIAN)
0703 struct iscsi_kwqe_header hdr;
0704 u16 reserved0;
0705 #elif defined(__LITTLE_ENDIAN)
0706 u16 reserved0;
0707 struct iscsi_kwqe_header hdr;
0708 #endif
0709 #if defined(__BIG_ENDIAN)
0710 u8 session_error_recovery_level;
0711 u8 max_outstanding_r2ts;
0712 u8 reserved2;
0713 u8 conn_flags;
0714 #define ISCSI_KWQE_CONN_UPDATE_HEADER_DIGEST (0x1<<0)
0715 #define ISCSI_KWQE_CONN_UPDATE_HEADER_DIGEST_SHIFT 0
0716 #define ISCSI_KWQE_CONN_UPDATE_DATA_DIGEST (0x1<<1)
0717 #define ISCSI_KWQE_CONN_UPDATE_DATA_DIGEST_SHIFT 1
0718 #define ISCSI_KWQE_CONN_UPDATE_INITIAL_R2T (0x1<<2)
0719 #define ISCSI_KWQE_CONN_UPDATE_INITIAL_R2T_SHIFT 2
0720 #define ISCSI_KWQE_CONN_UPDATE_IMMEDIATE_DATA (0x1<<3)
0721 #define ISCSI_KWQE_CONN_UPDATE_IMMEDIATE_DATA_SHIFT 3
0722 #define ISCSI_KWQE_CONN_UPDATE_OOO_SUPPORT_MODE (0x3<<4)
0723 #define ISCSI_KWQE_CONN_UPDATE_OOO_SUPPORT_MODE_SHIFT 4
0724 #define ISCSI_KWQE_CONN_UPDATE_RESERVED1 (0x3<<6)
0725 #define ISCSI_KWQE_CONN_UPDATE_RESERVED1_SHIFT 6
0726 #elif defined(__LITTLE_ENDIAN)
0727 u8 conn_flags;
0728 #define ISCSI_KWQE_CONN_UPDATE_HEADER_DIGEST (0x1<<0)
0729 #define ISCSI_KWQE_CONN_UPDATE_HEADER_DIGEST_SHIFT 0
0730 #define ISCSI_KWQE_CONN_UPDATE_DATA_DIGEST (0x1<<1)
0731 #define ISCSI_KWQE_CONN_UPDATE_DATA_DIGEST_SHIFT 1
0732 #define ISCSI_KWQE_CONN_UPDATE_INITIAL_R2T (0x1<<2)
0733 #define ISCSI_KWQE_CONN_UPDATE_INITIAL_R2T_SHIFT 2
0734 #define ISCSI_KWQE_CONN_UPDATE_IMMEDIATE_DATA (0x1<<3)
0735 #define ISCSI_KWQE_CONN_UPDATE_IMMEDIATE_DATA_SHIFT 3
0736 #define ISCSI_KWQE_CONN_UPDATE_OOO_SUPPORT_MODE (0x3<<4)
0737 #define ISCSI_KWQE_CONN_UPDATE_OOO_SUPPORT_MODE_SHIFT 4
0738 #define ISCSI_KWQE_CONN_UPDATE_RESERVED1 (0x3<<6)
0739 #define ISCSI_KWQE_CONN_UPDATE_RESERVED1_SHIFT 6
0740 u8 reserved2;
0741 u8 max_outstanding_r2ts;
0742 u8 session_error_recovery_level;
0743 #endif
0744 u32 context_id;
0745 u32 max_send_pdu_length;
0746 u32 max_recv_pdu_length;
0747 u32 first_burst_length;
0748 u32 max_burst_length;
0749 u32 exp_stat_sn;
0750 };
0751
0752
0753
0754
0755 struct iscsi_kwqe_conn_destroy {
0756 #if defined(__BIG_ENDIAN)
0757 struct iscsi_kwqe_header hdr;
0758 u16 reserved0;
0759 #elif defined(__LITTLE_ENDIAN)
0760 u16 reserved0;
0761 struct iscsi_kwqe_header hdr;
0762 #endif
0763 u32 context_id;
0764 u32 reserved1[6];
0765 };
0766
0767
0768
0769
0770 union iscsi_kwqe {
0771 struct iscsi_kwqe_init1 init1;
0772 struct iscsi_kwqe_init2 init2;
0773 struct iscsi_kwqe_conn_offload1 conn_offload1;
0774 struct iscsi_kwqe_conn_offload2 conn_offload2;
0775 struct iscsi_kwqe_conn_update conn_update;
0776 struct iscsi_kwqe_conn_destroy conn_destroy;
0777 };
0778
0779
0780
0781
0782 struct bnx2i_login_request {
0783 #if defined(__BIG_ENDIAN)
0784 u8 op_code;
0785 u8 op_attr;
0786 #define ISCSI_LOGIN_REQUEST_NEXT_STAGE (0x3<<0)
0787 #define ISCSI_LOGIN_REQUEST_NEXT_STAGE_SHIFT 0
0788 #define ISCSI_LOGIN_REQUEST_CURRENT_STAGE (0x3<<2)
0789 #define ISCSI_LOGIN_REQUEST_CURRENT_STAGE_SHIFT 2
0790 #define ISCSI_LOGIN_REQUEST_RESERVED0 (0x3<<4)
0791 #define ISCSI_LOGIN_REQUEST_RESERVED0_SHIFT 4
0792 #define ISCSI_LOGIN_REQUEST_CONT (0x1<<6)
0793 #define ISCSI_LOGIN_REQUEST_CONT_SHIFT 6
0794 #define ISCSI_LOGIN_REQUEST_TRANSIT (0x1<<7)
0795 #define ISCSI_LOGIN_REQUEST_TRANSIT_SHIFT 7
0796 u8 version_max;
0797 u8 version_min;
0798 #elif defined(__LITTLE_ENDIAN)
0799 u8 version_min;
0800 u8 version_max;
0801 u8 op_attr;
0802 #define ISCSI_LOGIN_REQUEST_NEXT_STAGE (0x3<<0)
0803 #define ISCSI_LOGIN_REQUEST_NEXT_STAGE_SHIFT 0
0804 #define ISCSI_LOGIN_REQUEST_CURRENT_STAGE (0x3<<2)
0805 #define ISCSI_LOGIN_REQUEST_CURRENT_STAGE_SHIFT 2
0806 #define ISCSI_LOGIN_REQUEST_RESERVED0 (0x3<<4)
0807 #define ISCSI_LOGIN_REQUEST_RESERVED0_SHIFT 4
0808 #define ISCSI_LOGIN_REQUEST_CONT (0x1<<6)
0809 #define ISCSI_LOGIN_REQUEST_CONT_SHIFT 6
0810 #define ISCSI_LOGIN_REQUEST_TRANSIT (0x1<<7)
0811 #define ISCSI_LOGIN_REQUEST_TRANSIT_SHIFT 7
0812 u8 op_code;
0813 #endif
0814 u32 data_length;
0815 u32 isid_lo;
0816 #if defined(__BIG_ENDIAN)
0817 u16 isid_hi;
0818 u16 tsih;
0819 #elif defined(__LITTLE_ENDIAN)
0820 u16 tsih;
0821 u16 isid_hi;
0822 #endif
0823 #if defined(__BIG_ENDIAN)
0824 u16 reserved2;
0825 u16 itt;
0826 #define ISCSI_LOGIN_REQUEST_INDEX (0x3FFF<<0)
0827 #define ISCSI_LOGIN_REQUEST_INDEX_SHIFT 0
0828 #define ISCSI_LOGIN_REQUEST_TYPE (0x3<<14)
0829 #define ISCSI_LOGIN_REQUEST_TYPE_SHIFT 14
0830 #elif defined(__LITTLE_ENDIAN)
0831 u16 itt;
0832 #define ISCSI_LOGIN_REQUEST_INDEX (0x3FFF<<0)
0833 #define ISCSI_LOGIN_REQUEST_INDEX_SHIFT 0
0834 #define ISCSI_LOGIN_REQUEST_TYPE (0x3<<14)
0835 #define ISCSI_LOGIN_REQUEST_TYPE_SHIFT 14
0836 u16 reserved2;
0837 #endif
0838 #if defined(__BIG_ENDIAN)
0839 u16 cid;
0840 u16 reserved3;
0841 #elif defined(__LITTLE_ENDIAN)
0842 u16 reserved3;
0843 u16 cid;
0844 #endif
0845 u32 cmd_sn;
0846 u32 exp_stat_sn;
0847 u32 reserved4;
0848 u32 resp_bd_list_addr_lo;
0849 u32 resp_bd_list_addr_hi;
0850 u32 resp_buffer;
0851 #define ISCSI_LOGIN_REQUEST_RESP_BUFFER_LENGTH (0xFFFFFF<<0)
0852 #define ISCSI_LOGIN_REQUEST_RESP_BUFFER_LENGTH_SHIFT 0
0853 #define ISCSI_LOGIN_REQUEST_NUM_RESP_BDS (0xFF<<24)
0854 #define ISCSI_LOGIN_REQUEST_NUM_RESP_BDS_SHIFT 24
0855 #if defined(__BIG_ENDIAN)
0856 u16 reserved8;
0857 u8 reserved7;
0858 u8 flags;
0859 #define ISCSI_LOGIN_REQUEST_RESERVED5 (0x3<<0)
0860 #define ISCSI_LOGIN_REQUEST_RESERVED5_SHIFT 0
0861 #define ISCSI_LOGIN_REQUEST_UPDATE_EXP_STAT_SN (0x1<<2)
0862 #define ISCSI_LOGIN_REQUEST_UPDATE_EXP_STAT_SN_SHIFT 2
0863 #define ISCSI_LOGIN_REQUEST_RESERVED6 (0x1F<<3)
0864 #define ISCSI_LOGIN_REQUEST_RESERVED6_SHIFT 3
0865 #elif defined(__LITTLE_ENDIAN)
0866 u8 flags;
0867 #define ISCSI_LOGIN_REQUEST_RESERVED5 (0x3<<0)
0868 #define ISCSI_LOGIN_REQUEST_RESERVED5_SHIFT 0
0869 #define ISCSI_LOGIN_REQUEST_UPDATE_EXP_STAT_SN (0x1<<2)
0870 #define ISCSI_LOGIN_REQUEST_UPDATE_EXP_STAT_SN_SHIFT 2
0871 #define ISCSI_LOGIN_REQUEST_RESERVED6 (0x1F<<3)
0872 #define ISCSI_LOGIN_REQUEST_RESERVED6_SHIFT 3
0873 u8 reserved7;
0874 u16 reserved8;
0875 #endif
0876 u32 bd_list_addr_lo;
0877 u32 bd_list_addr_hi;
0878 #if defined(__BIG_ENDIAN)
0879 u8 cq_index;
0880 u8 reserved10;
0881 u8 reserved9;
0882 u8 num_bds;
0883 #elif defined(__LITTLE_ENDIAN)
0884 u8 num_bds;
0885 u8 reserved9;
0886 u8 reserved10;
0887 u8 cq_index;
0888 #endif
0889 };
0890
0891
0892
0893
0894
0895 struct bnx2i_login_response {
0896 #if defined(__BIG_ENDIAN)
0897 u8 op_code;
0898 u8 response_flags;
0899 #define ISCSI_LOGIN_RESPONSE_NEXT_STAGE (0x3<<0)
0900 #define ISCSI_LOGIN_RESPONSE_NEXT_STAGE_SHIFT 0
0901 #define ISCSI_LOGIN_RESPONSE_CURRENT_STAGE (0x3<<2)
0902 #define ISCSI_LOGIN_RESPONSE_CURRENT_STAGE_SHIFT 2
0903 #define ISCSI_LOGIN_RESPONSE_RESERVED0 (0x3<<4)
0904 #define ISCSI_LOGIN_RESPONSE_RESERVED0_SHIFT 4
0905 #define ISCSI_LOGIN_RESPONSE_CONT (0x1<<6)
0906 #define ISCSI_LOGIN_RESPONSE_CONT_SHIFT 6
0907 #define ISCSI_LOGIN_RESPONSE_TRANSIT (0x1<<7)
0908 #define ISCSI_LOGIN_RESPONSE_TRANSIT_SHIFT 7
0909 u8 version_max;
0910 u8 version_active;
0911 #elif defined(__LITTLE_ENDIAN)
0912 u8 version_active;
0913 u8 version_max;
0914 u8 response_flags;
0915 #define ISCSI_LOGIN_RESPONSE_NEXT_STAGE (0x3<<0)
0916 #define ISCSI_LOGIN_RESPONSE_NEXT_STAGE_SHIFT 0
0917 #define ISCSI_LOGIN_RESPONSE_CURRENT_STAGE (0x3<<2)
0918 #define ISCSI_LOGIN_RESPONSE_CURRENT_STAGE_SHIFT 2
0919 #define ISCSI_LOGIN_RESPONSE_RESERVED0 (0x3<<4)
0920 #define ISCSI_LOGIN_RESPONSE_RESERVED0_SHIFT 4
0921 #define ISCSI_LOGIN_RESPONSE_CONT (0x1<<6)
0922 #define ISCSI_LOGIN_RESPONSE_CONT_SHIFT 6
0923 #define ISCSI_LOGIN_RESPONSE_TRANSIT (0x1<<7)
0924 #define ISCSI_LOGIN_RESPONSE_TRANSIT_SHIFT 7
0925 u8 op_code;
0926 #endif
0927 u32 data_length;
0928 u32 exp_cmd_sn;
0929 u32 max_cmd_sn;
0930 u32 reserved1[2];
0931 #if defined(__BIG_ENDIAN)
0932 u16 reserved3;
0933 u8 err_code;
0934 u8 reserved2;
0935 #elif defined(__LITTLE_ENDIAN)
0936 u8 reserved2;
0937 u8 err_code;
0938 u16 reserved3;
0939 #endif
0940 u32 stat_sn;
0941 u32 isid_lo;
0942 #if defined(__BIG_ENDIAN)
0943 u16 isid_hi;
0944 u16 tsih;
0945 #elif defined(__LITTLE_ENDIAN)
0946 u16 tsih;
0947 u16 isid_hi;
0948 #endif
0949 #if defined(__BIG_ENDIAN)
0950 u8 status_class;
0951 u8 status_detail;
0952 u16 reserved4;
0953 #elif defined(__LITTLE_ENDIAN)
0954 u16 reserved4;
0955 u8 status_detail;
0956 u8 status_class;
0957 #endif
0958 u32 reserved5[3];
0959 #if defined(__BIG_ENDIAN)
0960 u16 reserved6;
0961 u16 itt;
0962 #define ISCSI_LOGIN_RESPONSE_INDEX (0x3FFF<<0)
0963 #define ISCSI_LOGIN_RESPONSE_INDEX_SHIFT 0
0964 #define ISCSI_LOGIN_RESPONSE_TYPE (0x3<<14)
0965 #define ISCSI_LOGIN_RESPONSE_TYPE_SHIFT 14
0966 #elif defined(__LITTLE_ENDIAN)
0967 u16 itt;
0968 #define ISCSI_LOGIN_RESPONSE_INDEX (0x3FFF<<0)
0969 #define ISCSI_LOGIN_RESPONSE_INDEX_SHIFT 0
0970 #define ISCSI_LOGIN_RESPONSE_TYPE (0x3<<14)
0971 #define ISCSI_LOGIN_RESPONSE_TYPE_SHIFT 14
0972 u16 reserved6;
0973 #endif
0974 u32 cq_req_sn;
0975 };
0976
0977
0978
0979
0980
0981 struct bnx2i_logout_request {
0982 #if defined(__BIG_ENDIAN)
0983 u8 op_code;
0984 u8 op_attr;
0985 #define ISCSI_LOGOUT_REQUEST_REASON (0x7F<<0)
0986 #define ISCSI_LOGOUT_REQUEST_REASON_SHIFT 0
0987 #define ISCSI_LOGOUT_REQUEST_ALWAYS_ONE (0x1<<7)
0988 #define ISCSI_LOGOUT_REQUEST_ALWAYS_ONE_SHIFT 7
0989 u16 reserved0;
0990 #elif defined(__LITTLE_ENDIAN)
0991 u16 reserved0;
0992 u8 op_attr;
0993 #define ISCSI_LOGOUT_REQUEST_REASON (0x7F<<0)
0994 #define ISCSI_LOGOUT_REQUEST_REASON_SHIFT 0
0995 #define ISCSI_LOGOUT_REQUEST_ALWAYS_ONE (0x1<<7)
0996 #define ISCSI_LOGOUT_REQUEST_ALWAYS_ONE_SHIFT 7
0997 u8 op_code;
0998 #endif
0999 u32 data_length;
1000 u32 reserved1[2];
1001 #if defined(__BIG_ENDIAN)
1002 u16 reserved2;
1003 u16 itt;
1004 #define ISCSI_LOGOUT_REQUEST_INDEX (0x3FFF<<0)
1005 #define ISCSI_LOGOUT_REQUEST_INDEX_SHIFT 0
1006 #define ISCSI_LOGOUT_REQUEST_TYPE (0x3<<14)
1007 #define ISCSI_LOGOUT_REQUEST_TYPE_SHIFT 14
1008 #elif defined(__LITTLE_ENDIAN)
1009 u16 itt;
1010 #define ISCSI_LOGOUT_REQUEST_INDEX (0x3FFF<<0)
1011 #define ISCSI_LOGOUT_REQUEST_INDEX_SHIFT 0
1012 #define ISCSI_LOGOUT_REQUEST_TYPE (0x3<<14)
1013 #define ISCSI_LOGOUT_REQUEST_TYPE_SHIFT 14
1014 u16 reserved2;
1015 #endif
1016 #if defined(__BIG_ENDIAN)
1017 u16 cid;
1018 u16 reserved3;
1019 #elif defined(__LITTLE_ENDIAN)
1020 u16 reserved3;
1021 u16 cid;
1022 #endif
1023 u32 cmd_sn;
1024 u32 reserved4[5];
1025 u32 zero_fill;
1026 u32 bd_list_addr_lo;
1027 u32 bd_list_addr_hi;
1028 #if defined(__BIG_ENDIAN)
1029 u8 cq_index;
1030 u8 reserved6;
1031 u8 reserved5;
1032 u8 num_bds;
1033 #elif defined(__LITTLE_ENDIAN)
1034 u8 num_bds;
1035 u8 reserved5;
1036 u8 reserved6;
1037 u8 cq_index;
1038 #endif
1039 };
1040
1041
1042
1043
1044
1045 struct bnx2i_logout_response {
1046 #if defined(__BIG_ENDIAN)
1047 u8 op_code;
1048 u8 reserved1;
1049 u8 response;
1050 u8 reserved0;
1051 #elif defined(__LITTLE_ENDIAN)
1052 u8 reserved0;
1053 u8 response;
1054 u8 reserved1;
1055 u8 op_code;
1056 #endif
1057 u32 reserved2;
1058 u32 exp_cmd_sn;
1059 u32 max_cmd_sn;
1060 u32 reserved3[2];
1061 #if defined(__BIG_ENDIAN)
1062 u16 reserved5;
1063 u8 err_code;
1064 u8 reserved4;
1065 #elif defined(__LITTLE_ENDIAN)
1066 u8 reserved4;
1067 u8 err_code;
1068 u16 reserved5;
1069 #endif
1070 u32 reserved6[3];
1071 #if defined(__BIG_ENDIAN)
1072 u16 time_to_wait;
1073 u16 time_to_retain;
1074 #elif defined(__LITTLE_ENDIAN)
1075 u16 time_to_retain;
1076 u16 time_to_wait;
1077 #endif
1078 u32 reserved7[3];
1079 #if defined(__BIG_ENDIAN)
1080 u16 reserved8;
1081 u16 itt;
1082 #define ISCSI_LOGOUT_RESPONSE_INDEX (0x3FFF<<0)
1083 #define ISCSI_LOGOUT_RESPONSE_INDEX_SHIFT 0
1084 #define ISCSI_LOGOUT_RESPONSE_TYPE (0x3<<14)
1085 #define ISCSI_LOGOUT_RESPONSE_TYPE_SHIFT 14
1086 #elif defined(__LITTLE_ENDIAN)
1087 u16 itt;
1088 #define ISCSI_LOGOUT_RESPONSE_INDEX (0x3FFF<<0)
1089 #define ISCSI_LOGOUT_RESPONSE_INDEX_SHIFT 0
1090 #define ISCSI_LOGOUT_RESPONSE_TYPE (0x3<<14)
1091 #define ISCSI_LOGOUT_RESPONSE_TYPE_SHIFT 14
1092 u16 reserved8;
1093 #endif
1094 u32 cq_req_sn;
1095 };
1096
1097
1098
1099
1100
1101 struct bnx2i_nop_in_msg {
1102 #if defined(__BIG_ENDIAN)
1103 u8 op_code;
1104 u8 reserved1;
1105 u16 reserved0;
1106 #elif defined(__LITTLE_ENDIAN)
1107 u16 reserved0;
1108 u8 reserved1;
1109 u8 op_code;
1110 #endif
1111 u32 data_length;
1112 u32 exp_cmd_sn;
1113 u32 max_cmd_sn;
1114 u32 ttt;
1115 u32 reserved2;
1116 #if defined(__BIG_ENDIAN)
1117 u16 reserved4;
1118 u8 err_code;
1119 u8 reserved3;
1120 #elif defined(__LITTLE_ENDIAN)
1121 u8 reserved3;
1122 u8 err_code;
1123 u16 reserved4;
1124 #endif
1125 u32 reserved5;
1126 u32 lun[2];
1127 u32 reserved6[4];
1128 #if defined(__BIG_ENDIAN)
1129 u16 reserved7;
1130 u16 itt;
1131 #define ISCSI_NOP_IN_MSG_INDEX (0x3FFF<<0)
1132 #define ISCSI_NOP_IN_MSG_INDEX_SHIFT 0
1133 #define ISCSI_NOP_IN_MSG_TYPE (0x3<<14)
1134 #define ISCSI_NOP_IN_MSG_TYPE_SHIFT 14
1135 #elif defined(__LITTLE_ENDIAN)
1136 u16 itt;
1137 #define ISCSI_NOP_IN_MSG_INDEX (0x3FFF<<0)
1138 #define ISCSI_NOP_IN_MSG_INDEX_SHIFT 0
1139 #define ISCSI_NOP_IN_MSG_TYPE (0x3<<14)
1140 #define ISCSI_NOP_IN_MSG_TYPE_SHIFT 14
1141 u16 reserved7;
1142 #endif
1143 u32 cq_req_sn;
1144 };
1145
1146
1147
1148
1149
1150 struct bnx2i_nop_out_request {
1151 #if defined(__BIG_ENDIAN)
1152 u8 op_code;
1153 u8 op_attr;
1154 #define ISCSI_NOP_OUT_REQUEST_RESERVED1 (0x7F<<0)
1155 #define ISCSI_NOP_OUT_REQUEST_RESERVED1_SHIFT 0
1156 #define ISCSI_NOP_OUT_REQUEST_ALWAYS_ONE (0x1<<7)
1157 #define ISCSI_NOP_OUT_REQUEST_ALWAYS_ONE_SHIFT 7
1158 u16 reserved0;
1159 #elif defined(__LITTLE_ENDIAN)
1160 u16 reserved0;
1161 u8 op_attr;
1162 #define ISCSI_NOP_OUT_REQUEST_RESERVED1 (0x7F<<0)
1163 #define ISCSI_NOP_OUT_REQUEST_RESERVED1_SHIFT 0
1164 #define ISCSI_NOP_OUT_REQUEST_ALWAYS_ONE (0x1<<7)
1165 #define ISCSI_NOP_OUT_REQUEST_ALWAYS_ONE_SHIFT 7
1166 u8 op_code;
1167 #endif
1168 u32 data_length;
1169 u32 lun[2];
1170 #if defined(__BIG_ENDIAN)
1171 u16 reserved2;
1172 u16 itt;
1173 #define ISCSI_NOP_OUT_REQUEST_INDEX (0x3FFF<<0)
1174 #define ISCSI_NOP_OUT_REQUEST_INDEX_SHIFT 0
1175 #define ISCSI_NOP_OUT_REQUEST_TYPE (0x3<<14)
1176 #define ISCSI_NOP_OUT_REQUEST_TYPE_SHIFT 14
1177 #elif defined(__LITTLE_ENDIAN)
1178 u16 itt;
1179 #define ISCSI_NOP_OUT_REQUEST_INDEX (0x3FFF<<0)
1180 #define ISCSI_NOP_OUT_REQUEST_INDEX_SHIFT 0
1181 #define ISCSI_NOP_OUT_REQUEST_TYPE (0x3<<14)
1182 #define ISCSI_NOP_OUT_REQUEST_TYPE_SHIFT 14
1183 u16 reserved2;
1184 #endif
1185 u32 ttt;
1186 u32 cmd_sn;
1187 u32 reserved3[2];
1188 u32 resp_bd_list_addr_lo;
1189 u32 resp_bd_list_addr_hi;
1190 u32 resp_buffer;
1191 #define ISCSI_NOP_OUT_REQUEST_RESP_BUFFER_LENGTH (0xFFFFFF<<0)
1192 #define ISCSI_NOP_OUT_REQUEST_RESP_BUFFER_LENGTH_SHIFT 0
1193 #define ISCSI_NOP_OUT_REQUEST_NUM_RESP_BDS (0xFF<<24)
1194 #define ISCSI_NOP_OUT_REQUEST_NUM_RESP_BDS_SHIFT 24
1195 #if defined(__BIG_ENDIAN)
1196 u16 reserved7;
1197 u8 reserved6;
1198 u8 flags;
1199 #define ISCSI_NOP_OUT_REQUEST_RESERVED4 (0x1<<0)
1200 #define ISCSI_NOP_OUT_REQUEST_RESERVED4_SHIFT 0
1201 #define ISCSI_NOP_OUT_REQUEST_LOCAL_COMPLETION (0x1<<1)
1202 #define ISCSI_NOP_OUT_REQUEST_LOCAL_COMPLETION_SHIFT 1
1203 #define ISCSI_NOP_OUT_REQUEST_ZERO_FILL (0x3F<<2)
1204 #define ISCSI_NOP_OUT_REQUEST_ZERO_FILL_SHIFT 2
1205 #elif defined(__LITTLE_ENDIAN)
1206 u8 flags;
1207 #define ISCSI_NOP_OUT_REQUEST_RESERVED4 (0x1<<0)
1208 #define ISCSI_NOP_OUT_REQUEST_RESERVED4_SHIFT 0
1209 #define ISCSI_NOP_OUT_REQUEST_LOCAL_COMPLETION (0x1<<1)
1210 #define ISCSI_NOP_OUT_REQUEST_LOCAL_COMPLETION_SHIFT 1
1211 #define ISCSI_NOP_OUT_REQUEST_ZERO_FILL (0x3F<<2)
1212 #define ISCSI_NOP_OUT_REQUEST_ZERO_FILL_SHIFT 2
1213 u8 reserved6;
1214 u16 reserved7;
1215 #endif
1216 u32 bd_list_addr_lo;
1217 u32 bd_list_addr_hi;
1218 #if defined(__BIG_ENDIAN)
1219 u8 cq_index;
1220 u8 reserved9;
1221 u8 reserved8;
1222 u8 num_bds;
1223 #elif defined(__LITTLE_ENDIAN)
1224 u8 num_bds;
1225 u8 reserved8;
1226 u8 reserved9;
1227 u8 cq_index;
1228 #endif
1229 };
1230
1231
1232
1233
1234 struct bnx2i_reject_msg {
1235 #if defined(__BIG_ENDIAN)
1236 u8 op_code;
1237 u8 reserved1;
1238 u8 reason;
1239 u8 reserved0;
1240 #elif defined(__LITTLE_ENDIAN)
1241 u8 reserved0;
1242 u8 reason;
1243 u8 reserved1;
1244 u8 op_code;
1245 #endif
1246 u32 data_length;
1247 u32 exp_cmd_sn;
1248 u32 max_cmd_sn;
1249 u32 reserved2[2];
1250 #if defined(__BIG_ENDIAN)
1251 u16 reserved4;
1252 u8 err_code;
1253 u8 reserved3;
1254 #elif defined(__LITTLE_ENDIAN)
1255 u8 reserved3;
1256 u8 err_code;
1257 u16 reserved4;
1258 #endif
1259 u32 reserved5[8];
1260 u32 cq_req_sn;
1261 };
1262
1263
1264
1265
1266 struct bnx2i_tmf_request {
1267 #if defined(__BIG_ENDIAN)
1268 u8 op_code;
1269 u8 op_attr;
1270 #define ISCSI_TMF_REQUEST_FUNCTION (0x7F<<0)
1271 #define ISCSI_TMF_REQUEST_FUNCTION_SHIFT 0
1272 #define ISCSI_TMF_REQUEST_ALWAYS_ONE (0x1<<7)
1273 #define ISCSI_TMF_REQUEST_ALWAYS_ONE_SHIFT 7
1274 u16 reserved0;
1275 #elif defined(__LITTLE_ENDIAN)
1276 u16 reserved0;
1277 u8 op_attr;
1278 #define ISCSI_TMF_REQUEST_FUNCTION (0x7F<<0)
1279 #define ISCSI_TMF_REQUEST_FUNCTION_SHIFT 0
1280 #define ISCSI_TMF_REQUEST_ALWAYS_ONE (0x1<<7)
1281 #define ISCSI_TMF_REQUEST_ALWAYS_ONE_SHIFT 7
1282 u8 op_code;
1283 #endif
1284 u32 data_length;
1285 u32 lun[2];
1286 #if defined(__BIG_ENDIAN)
1287 u16 reserved1;
1288 u16 itt;
1289 #define ISCSI_TMF_REQUEST_INDEX (0x3FFF<<0)
1290 #define ISCSI_TMF_REQUEST_INDEX_SHIFT 0
1291 #define ISCSI_TMF_REQUEST_TYPE (0x3<<14)
1292 #define ISCSI_TMF_REQUEST_TYPE_SHIFT 14
1293 #elif defined(__LITTLE_ENDIAN)
1294 u16 itt;
1295 #define ISCSI_TMF_REQUEST_INDEX (0x3FFF<<0)
1296 #define ISCSI_TMF_REQUEST_INDEX_SHIFT 0
1297 #define ISCSI_TMF_REQUEST_TYPE (0x3<<14)
1298 #define ISCSI_TMF_REQUEST_TYPE_SHIFT 14
1299 u16 reserved1;
1300 #endif
1301 u32 ref_itt;
1302 u32 cmd_sn;
1303 u32 reserved2;
1304 u32 ref_cmd_sn;
1305 u32 reserved3[3];
1306 u32 zero_fill;
1307 u32 bd_list_addr_lo;
1308 u32 bd_list_addr_hi;
1309 #if defined(__BIG_ENDIAN)
1310 u8 cq_index;
1311 u8 reserved5;
1312 u8 reserved4;
1313 u8 num_bds;
1314 #elif defined(__LITTLE_ENDIAN)
1315 u8 num_bds;
1316 u8 reserved4;
1317 u8 reserved5;
1318 u8 cq_index;
1319 #endif
1320 };
1321
1322
1323
1324
1325 struct bnx2i_text_request {
1326 #if defined(__BIG_ENDIAN)
1327 u8 op_code;
1328 u8 op_attr;
1329 #define ISCSI_TEXT_REQUEST_RESERVED1 (0x3F<<0)
1330 #define ISCSI_TEXT_REQUEST_RESERVED1_SHIFT 0
1331 #define ISCSI_TEXT_REQUEST_CONT (0x1<<6)
1332 #define ISCSI_TEXT_REQUEST_CONT_SHIFT 6
1333 #define ISCSI_TEXT_REQUEST_FINAL (0x1<<7)
1334 #define ISCSI_TEXT_REQUEST_FINAL_SHIFT 7
1335 u16 reserved0;
1336 #elif defined(__LITTLE_ENDIAN)
1337 u16 reserved0;
1338 u8 op_attr;
1339 #define ISCSI_TEXT_REQUEST_RESERVED1 (0x3F<<0)
1340 #define ISCSI_TEXT_REQUEST_RESERVED1_SHIFT 0
1341 #define ISCSI_TEXT_REQUEST_CONT (0x1<<6)
1342 #define ISCSI_TEXT_REQUEST_CONT_SHIFT 6
1343 #define ISCSI_TEXT_REQUEST_FINAL (0x1<<7)
1344 #define ISCSI_TEXT_REQUEST_FINAL_SHIFT 7
1345 u8 op_code;
1346 #endif
1347 u32 data_length;
1348 u32 lun[2];
1349 #if defined(__BIG_ENDIAN)
1350 u16 reserved3;
1351 u16 itt;
1352 #define ISCSI_TEXT_REQUEST_INDEX (0x3FFF<<0)
1353 #define ISCSI_TEXT_REQUEST_INDEX_SHIFT 0
1354 #define ISCSI_TEXT_REQUEST_TYPE (0x3<<14)
1355 #define ISCSI_TEXT_REQUEST_TYPE_SHIFT 14
1356 #elif defined(__LITTLE_ENDIAN)
1357 u16 itt;
1358 #define ISCSI_TEXT_REQUEST_INDEX (0x3FFF<<0)
1359 #define ISCSI_TEXT_REQUEST_INDEX_SHIFT 0
1360 #define ISCSI_TEXT_REQUEST_TYPE (0x3<<14)
1361 #define ISCSI_TEXT_REQUEST_TYPE_SHIFT 14
1362 u16 reserved3;
1363 #endif
1364 u32 ttt;
1365 u32 cmd_sn;
1366 u32 reserved4[2];
1367 u32 resp_bd_list_addr_lo;
1368 u32 resp_bd_list_addr_hi;
1369 u32 resp_buffer;
1370 #define ISCSI_TEXT_REQUEST_RESP_BUFFER_LENGTH (0xFFFFFF<<0)
1371 #define ISCSI_TEXT_REQUEST_RESP_BUFFER_LENGTH_SHIFT 0
1372 #define ISCSI_TEXT_REQUEST_NUM_RESP_BDS (0xFF<<24)
1373 #define ISCSI_TEXT_REQUEST_NUM_RESP_BDS_SHIFT 24
1374 u32 zero_fill;
1375 u32 bd_list_addr_lo;
1376 u32 bd_list_addr_hi;
1377 #if defined(__BIG_ENDIAN)
1378 u8 cq_index;
1379 u8 reserved7;
1380 u8 reserved6;
1381 u8 num_bds;
1382 #elif defined(__LITTLE_ENDIAN)
1383 u8 num_bds;
1384 u8 reserved6;
1385 u8 reserved7;
1386 u8 cq_index;
1387 #endif
1388 };
1389
1390
1391
1392
1393 union iscsi_request {
1394 struct bnx2i_cmd_request cmd;
1395 struct bnx2i_tmf_request tmf;
1396 struct bnx2i_nop_out_request nop_out;
1397 struct bnx2i_login_request login_req;
1398 struct bnx2i_text_request text;
1399 struct bnx2i_logout_request logout_req;
1400 struct bnx2i_cleanup_request cleanup;
1401 };
1402
1403
1404
1405
1406
1407 struct bnx2i_tmf_response {
1408 #if defined(__BIG_ENDIAN)
1409 u8 op_code;
1410 u8 reserved1;
1411 u8 response;
1412 u8 reserved0;
1413 #elif defined(__LITTLE_ENDIAN)
1414 u8 reserved0;
1415 u8 response;
1416 u8 reserved1;
1417 u8 op_code;
1418 #endif
1419 u32 reserved2;
1420 u32 exp_cmd_sn;
1421 u32 max_cmd_sn;
1422 u32 reserved3[2];
1423 #if defined(__BIG_ENDIAN)
1424 u16 reserved5;
1425 u8 err_code;
1426 u8 reserved4;
1427 #elif defined(__LITTLE_ENDIAN)
1428 u8 reserved4;
1429 u8 err_code;
1430 u16 reserved5;
1431 #endif
1432 u32 reserved6[7];
1433 #if defined(__BIG_ENDIAN)
1434 u16 reserved7;
1435 u16 itt;
1436 #define ISCSI_TMF_RESPONSE_INDEX (0x3FFF<<0)
1437 #define ISCSI_TMF_RESPONSE_INDEX_SHIFT 0
1438 #define ISCSI_TMF_RESPONSE_TYPE (0x3<<14)
1439 #define ISCSI_TMF_RESPONSE_TYPE_SHIFT 14
1440 #elif defined(__LITTLE_ENDIAN)
1441 u16 itt;
1442 #define ISCSI_TMF_RESPONSE_INDEX (0x3FFF<<0)
1443 #define ISCSI_TMF_RESPONSE_INDEX_SHIFT 0
1444 #define ISCSI_TMF_RESPONSE_TYPE (0x3<<14)
1445 #define ISCSI_TMF_RESPONSE_TYPE_SHIFT 14
1446 u16 reserved7;
1447 #endif
1448 u32 cq_req_sn;
1449 };
1450
1451
1452
1453
1454 struct bnx2i_text_response {
1455 #if defined(__BIG_ENDIAN)
1456 u8 op_code;
1457 u8 response_flags;
1458 #define ISCSI_TEXT_RESPONSE_RESERVED1 (0x3F<<0)
1459 #define ISCSI_TEXT_RESPONSE_RESERVED1_SHIFT 0
1460 #define ISCSI_TEXT_RESPONSE_CONT (0x1<<6)
1461 #define ISCSI_TEXT_RESPONSE_CONT_SHIFT 6
1462 #define ISCSI_TEXT_RESPONSE_FINAL (0x1<<7)
1463 #define ISCSI_TEXT_RESPONSE_FINAL_SHIFT 7
1464 u16 reserved0;
1465 #elif defined(__LITTLE_ENDIAN)
1466 u16 reserved0;
1467 u8 response_flags;
1468 #define ISCSI_TEXT_RESPONSE_RESERVED1 (0x3F<<0)
1469 #define ISCSI_TEXT_RESPONSE_RESERVED1_SHIFT 0
1470 #define ISCSI_TEXT_RESPONSE_CONT (0x1<<6)
1471 #define ISCSI_TEXT_RESPONSE_CONT_SHIFT 6
1472 #define ISCSI_TEXT_RESPONSE_FINAL (0x1<<7)
1473 #define ISCSI_TEXT_RESPONSE_FINAL_SHIFT 7
1474 u8 op_code;
1475 #endif
1476 u32 data_length;
1477 u32 exp_cmd_sn;
1478 u32 max_cmd_sn;
1479 u32 ttt;
1480 u32 reserved2;
1481 #if defined(__BIG_ENDIAN)
1482 u16 reserved4;
1483 u8 err_code;
1484 u8 reserved3;
1485 #elif defined(__LITTLE_ENDIAN)
1486 u8 reserved3;
1487 u8 err_code;
1488 u16 reserved4;
1489 #endif
1490 u32 reserved5;
1491 u32 lun[2];
1492 u32 reserved6[4];
1493 #if defined(__BIG_ENDIAN)
1494 u16 reserved7;
1495 u16 itt;
1496 #define ISCSI_TEXT_RESPONSE_INDEX (0x3FFF<<0)
1497 #define ISCSI_TEXT_RESPONSE_INDEX_SHIFT 0
1498 #define ISCSI_TEXT_RESPONSE_TYPE (0x3<<14)
1499 #define ISCSI_TEXT_RESPONSE_TYPE_SHIFT 14
1500 #elif defined(__LITTLE_ENDIAN)
1501 u16 itt;
1502 #define ISCSI_TEXT_RESPONSE_INDEX (0x3FFF<<0)
1503 #define ISCSI_TEXT_RESPONSE_INDEX_SHIFT 0
1504 #define ISCSI_TEXT_RESPONSE_TYPE (0x3<<14)
1505 #define ISCSI_TEXT_RESPONSE_TYPE_SHIFT 14
1506 u16 reserved7;
1507 #endif
1508 u32 cq_req_sn;
1509 };
1510
1511
1512
1513
1514 union iscsi_response {
1515 struct bnx2i_cmd_response cmd;
1516 struct bnx2i_tmf_response tmf;
1517 struct bnx2i_login_response login_resp;
1518 struct bnx2i_text_response text;
1519 struct bnx2i_logout_response logout_resp;
1520 struct bnx2i_cleanup_response cleanup;
1521 struct bnx2i_reject_msg reject;
1522 struct bnx2i_async_msg async;
1523 struct bnx2i_nop_in_msg nop_in;
1524 };
1525
1526 #endif