Back to home page

OSCL-LXR

 
 

    


0001 /* 57xx_iscsi_hsi.h: QLogic NetXtreme II iSCSI HSI.
0002  *
0003  * Copyright (c) 2006 - 2013 Broadcom Corporation
0004  * Copyright (c) 2014, QLogic Corporation
0005  *
0006  * This program is free software; you can redistribute it and/or modify
0007  * it under the terms of the GNU General Public License as published by
0008  * the Free Software Foundation.
0009  *
0010  * Written by: Anil Veerabhadrappa (anilgv@broadcom.com)
0011  * Previously Maintained by: Eddie Wai (eddie.wai@broadcom.com)
0012  * Maintained by: QLogic-Storage-Upstream@qlogic.com
0013  */
0014 #ifndef __57XX_ISCSI_HSI_LINUX_LE__
0015 #define __57XX_ISCSI_HSI_LINUX_LE__
0016 
0017 /*
0018  * iSCSI Async CQE
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  * iSCSI Buffer Descriptor (BD)
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  * iSCSI Cleanup SQ WQE
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  * iSCSI Cleanup CQE
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  * SCSI read/write SQ WQE
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  * task statistics for write response
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  * task statistics for read response
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  * task statistics for iSCSI cmd response
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  * SCSI Command CQE
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  * firmware middle-path request SQ WQE
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  * firmware response - CQE: used only by firmware
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  * iSCSI KCQ CQE parameters
0485  */
0486 union iscsi_kcqe_params {
0487     u32 reserved0[4];
0488 };
0489 
0490 /*
0491  * iSCSI KCQ CQE
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  * iSCSI KWQE header
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  * iSCSI firmware init request 1
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  * iSCSI firmware init request 2
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  * Initial iSCSI connection offload request 1
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  * iSCSI Page Table Entry (PTE)
0657  */
0658 struct iscsi_pte {
0659     u32 hi;
0660     u32 lo;
0661 };
0662 
0663 /*
0664  * Initial iSCSI connection offload request 2
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  * Initial iSCSI connection offload request 3
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  * iSCSI connection update request
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  * iSCSI destroy connection request
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  * iSCSI KWQ WQE
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  * iSCSI Login SQ WQE
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  * iSCSI Login CQE
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  * iSCSI Logout SQ WQE
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  * iSCSI Logout CQE
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  * iSCSI Nop-In CQE
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  * iSCSI NOP-OUT SQ WQE
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  * iSCSI Reject CQE
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  * bnx2i iSCSI TMF SQ WQE
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  * iSCSI Text SQ WQE
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  * iSCSI SQ WQE
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  * iSCSI TMF CQE
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  * iSCSI Text CQE
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  * iSCSI CQE
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 /* __57XX_ISCSI_HSI_LINUX_LE__ */