1527 lines · c
1/* 57xx_iscsi_hsi.h: QLogic NetXtreme II iSCSI HSI.2 *3 * Copyright (c) 2006 - 2013 Broadcom Corporation4 * Copyright (c) 2014, QLogic Corporation5 *6 * This program is free software; you can redistribute it and/or modify7 * it under the terms of the GNU General Public License as published by8 * the Free Software Foundation.9 *10 * Written by: Anil Veerabhadrappa (anilgv@broadcom.com)11 * Previously Maintained by: Eddie Wai (eddie.wai@broadcom.com)12 * Maintained by: QLogic-Storage-Upstream@qlogic.com13 */14#ifndef __57XX_ISCSI_HSI_LINUX_LE__15#define __57XX_ISCSI_HSI_LINUX_LE__16 17/*18 * iSCSI Async CQE19 */20struct bnx2i_async_msg {21#if defined(__BIG_ENDIAN)22 u8 op_code;23 u8 reserved1;24 u16 reserved0;25#elif defined(__LITTLE_ENDIAN)26 u16 reserved0;27 u8 reserved1;28 u8 op_code;29#endif30 u32 reserved2;31 u32 exp_cmd_sn;32 u32 max_cmd_sn;33 u32 reserved3[2];34#if defined(__BIG_ENDIAN)35 u16 reserved5;36 u8 err_code;37 u8 reserved4;38#elif defined(__LITTLE_ENDIAN)39 u8 reserved4;40 u8 err_code;41 u16 reserved5;42#endif43 u32 reserved6;44 u32 lun[2];45#if defined(__BIG_ENDIAN)46 u8 async_event;47 u8 async_vcode;48 u16 param1;49#elif defined(__LITTLE_ENDIAN)50 u16 param1;51 u8 async_vcode;52 u8 async_event;53#endif54#if defined(__BIG_ENDIAN)55 u16 param2;56 u16 param3;57#elif defined(__LITTLE_ENDIAN)58 u16 param3;59 u16 param2;60#endif61 u32 reserved7[3];62 u32 cq_req_sn;63};64 65 66/*67 * iSCSI Buffer Descriptor (BD)68 */69struct iscsi_bd {70 u32 buffer_addr_hi;71 u32 buffer_addr_lo;72#if defined(__BIG_ENDIAN)73 u16 reserved0;74 u16 buffer_length;75#elif defined(__LITTLE_ENDIAN)76 u16 buffer_length;77 u16 reserved0;78#endif79#if defined(__BIG_ENDIAN)80 u16 reserved3;81 u16 flags;82#define ISCSI_BD_RESERVED1 (0x3F<<0)83#define ISCSI_BD_RESERVED1_SHIFT 084#define ISCSI_BD_LAST_IN_BD_CHAIN (0x1<<6)85#define ISCSI_BD_LAST_IN_BD_CHAIN_SHIFT 686#define ISCSI_BD_FIRST_IN_BD_CHAIN (0x1<<7)87#define ISCSI_BD_FIRST_IN_BD_CHAIN_SHIFT 788#define ISCSI_BD_RESERVED2 (0xFF<<8)89#define ISCSI_BD_RESERVED2_SHIFT 890#elif defined(__LITTLE_ENDIAN)91 u16 flags;92#define ISCSI_BD_RESERVED1 (0x3F<<0)93#define ISCSI_BD_RESERVED1_SHIFT 094#define ISCSI_BD_LAST_IN_BD_CHAIN (0x1<<6)95#define ISCSI_BD_LAST_IN_BD_CHAIN_SHIFT 696#define ISCSI_BD_FIRST_IN_BD_CHAIN (0x1<<7)97#define ISCSI_BD_FIRST_IN_BD_CHAIN_SHIFT 798#define ISCSI_BD_RESERVED2 (0xFF<<8)99#define ISCSI_BD_RESERVED2_SHIFT 8100 u16 reserved3;101#endif102};103 104 105/*106 * iSCSI Cleanup SQ WQE107 */108struct bnx2i_cleanup_request {109#if defined(__BIG_ENDIAN)110 u8 op_code;111 u8 reserved1;112 u16 reserved0;113#elif defined(__LITTLE_ENDIAN)114 u16 reserved0;115 u8 reserved1;116 u8 op_code;117#endif118 u32 reserved2[3];119#if defined(__BIG_ENDIAN)120 u16 reserved3;121 u16 itt;122#define ISCSI_CLEANUP_REQUEST_INDEX (0x3FFF<<0)123#define ISCSI_CLEANUP_REQUEST_INDEX_SHIFT 0124#define ISCSI_CLEANUP_REQUEST_TYPE (0x3<<14)125#define ISCSI_CLEANUP_REQUEST_TYPE_SHIFT 14126#elif defined(__LITTLE_ENDIAN)127 u16 itt;128#define ISCSI_CLEANUP_REQUEST_INDEX (0x3FFF<<0)129#define ISCSI_CLEANUP_REQUEST_INDEX_SHIFT 0130#define ISCSI_CLEANUP_REQUEST_TYPE (0x3<<14)131#define ISCSI_CLEANUP_REQUEST_TYPE_SHIFT 14132 u16 reserved3;133#endif134 u32 reserved4[10];135#if defined(__BIG_ENDIAN)136 u8 cq_index;137 u8 reserved6;138 u16 reserved5;139#elif defined(__LITTLE_ENDIAN)140 u16 reserved5;141 u8 reserved6;142 u8 cq_index;143#endif144};145 146 147/*148 * iSCSI Cleanup CQE149 */150struct bnx2i_cleanup_response {151#if defined(__BIG_ENDIAN)152 u8 op_code;153 u8 status;154 u16 reserved0;155#elif defined(__LITTLE_ENDIAN)156 u16 reserved0;157 u8 status;158 u8 op_code;159#endif160 u32 reserved1[3];161 u32 reserved2[2];162#if defined(__BIG_ENDIAN)163 u16 reserved4;164 u8 err_code;165 u8 reserved3;166#elif defined(__LITTLE_ENDIAN)167 u8 reserved3;168 u8 err_code;169 u16 reserved4;170#endif171 u32 reserved5[7];172#if defined(__BIG_ENDIAN)173 u16 reserved6;174 u16 itt;175#define ISCSI_CLEANUP_RESPONSE_INDEX (0x3FFF<<0)176#define ISCSI_CLEANUP_RESPONSE_INDEX_SHIFT 0177#define ISCSI_CLEANUP_RESPONSE_TYPE (0x3<<14)178#define ISCSI_CLEANUP_RESPONSE_TYPE_SHIFT 14179#elif defined(__LITTLE_ENDIAN)180 u16 itt;181#define ISCSI_CLEANUP_RESPONSE_INDEX (0x3FFF<<0)182#define ISCSI_CLEANUP_RESPONSE_INDEX_SHIFT 0183#define ISCSI_CLEANUP_RESPONSE_TYPE (0x3<<14)184#define ISCSI_CLEANUP_RESPONSE_TYPE_SHIFT 14185 u16 reserved6;186#endif187 u32 cq_req_sn;188};189 190 191/*192 * SCSI read/write SQ WQE193 */194struct bnx2i_cmd_request {195#if defined(__BIG_ENDIAN)196 u8 op_code;197 u8 op_attr;198#define ISCSI_CMD_REQUEST_TASK_ATTR (0x7<<0)199#define ISCSI_CMD_REQUEST_TASK_ATTR_SHIFT 0200#define ISCSI_CMD_REQUEST_RESERVED1 (0x3<<3)201#define ISCSI_CMD_REQUEST_RESERVED1_SHIFT 3202#define ISCSI_CMD_REQUEST_WRITE (0x1<<5)203#define ISCSI_CMD_REQUEST_WRITE_SHIFT 5204#define ISCSI_CMD_REQUEST_READ (0x1<<6)205#define ISCSI_CMD_REQUEST_READ_SHIFT 6206#define ISCSI_CMD_REQUEST_FINAL (0x1<<7)207#define ISCSI_CMD_REQUEST_FINAL_SHIFT 7208 u16 reserved0;209#elif defined(__LITTLE_ENDIAN)210 u16 reserved0;211 u8 op_attr;212#define ISCSI_CMD_REQUEST_TASK_ATTR (0x7<<0)213#define ISCSI_CMD_REQUEST_TASK_ATTR_SHIFT 0214#define ISCSI_CMD_REQUEST_RESERVED1 (0x3<<3)215#define ISCSI_CMD_REQUEST_RESERVED1_SHIFT 3216#define ISCSI_CMD_REQUEST_WRITE (0x1<<5)217#define ISCSI_CMD_REQUEST_WRITE_SHIFT 5218#define ISCSI_CMD_REQUEST_READ (0x1<<6)219#define ISCSI_CMD_REQUEST_READ_SHIFT 6220#define ISCSI_CMD_REQUEST_FINAL (0x1<<7)221#define ISCSI_CMD_REQUEST_FINAL_SHIFT 7222 u8 op_code;223#endif224#if defined(__BIG_ENDIAN)225 u16 ud_buffer_offset;226 u16 sd_buffer_offset;227#elif defined(__LITTLE_ENDIAN)228 u16 sd_buffer_offset;229 u16 ud_buffer_offset;230#endif231 u32 lun[2];232#if defined(__BIG_ENDIAN)233 u16 reserved2;234 u16 itt;235#define ISCSI_CMD_REQUEST_INDEX (0x3FFF<<0)236#define ISCSI_CMD_REQUEST_INDEX_SHIFT 0237#define ISCSI_CMD_REQUEST_TYPE (0x3<<14)238#define ISCSI_CMD_REQUEST_TYPE_SHIFT 14239#elif defined(__LITTLE_ENDIAN)240 u16 itt;241#define ISCSI_CMD_REQUEST_INDEX (0x3FFF<<0)242#define ISCSI_CMD_REQUEST_INDEX_SHIFT 0243#define ISCSI_CMD_REQUEST_TYPE (0x3<<14)244#define ISCSI_CMD_REQUEST_TYPE_SHIFT 14245 u16 reserved2;246#endif247 u32 total_data_transfer_length;248 u32 cmd_sn;249 u32 reserved3;250 u32 cdb[4];251 u32 zero_fill;252 u32 bd_list_addr_lo;253 u32 bd_list_addr_hi;254#if defined(__BIG_ENDIAN)255 u8 cq_index;256 u8 sd_start_bd_index;257 u8 ud_start_bd_index;258 u8 num_bds;259#elif defined(__LITTLE_ENDIAN)260 u8 num_bds;261 u8 ud_start_bd_index;262 u8 sd_start_bd_index;263 u8 cq_index;264#endif265};266 267 268/*269 * task statistics for write response270 */271struct bnx2i_write_resp_task_stat {272#if defined(__BIG_ENDIAN)273 u16 num_r2ts;274 u16 num_data_outs;275#elif defined(__LITTLE_ENDIAN)276 u16 num_data_outs;277 u16 num_r2ts;278#endif279};280 281/*282 * task statistics for read response283 */284struct bnx2i_read_resp_task_stat {285#if defined(__BIG_ENDIAN)286 u16 reserved;287 u16 num_data_ins;288#elif defined(__LITTLE_ENDIAN)289 u16 num_data_ins;290 u16 reserved;291#endif292};293 294/*295 * task statistics for iSCSI cmd response296 */297union bnx2i_cmd_resp_task_stat {298 struct bnx2i_write_resp_task_stat write_stat;299 struct bnx2i_read_resp_task_stat read_stat;300};301 302/*303 * SCSI Command CQE304 */305struct bnx2i_cmd_response {306#if defined(__BIG_ENDIAN)307 u8 op_code;308 u8 response_flags;309#define ISCSI_CMD_RESPONSE_RESERVED0 (0x1<<0)310#define ISCSI_CMD_RESPONSE_RESERVED0_SHIFT 0311#define ISCSI_CMD_RESPONSE_RESIDUAL_UNDERFLOW (0x1<<1)312#define ISCSI_CMD_RESPONSE_RESIDUAL_UNDERFLOW_SHIFT 1313#define ISCSI_CMD_RESPONSE_RESIDUAL_OVERFLOW (0x1<<2)314#define ISCSI_CMD_RESPONSE_RESIDUAL_OVERFLOW_SHIFT 2315#define ISCSI_CMD_RESPONSE_BR_RESIDUAL_UNDERFLOW (0x1<<3)316#define ISCSI_CMD_RESPONSE_BR_RESIDUAL_UNDERFLOW_SHIFT 3317#define ISCSI_CMD_RESPONSE_BR_RESIDUAL_OVERFLOW (0x1<<4)318#define ISCSI_CMD_RESPONSE_BR_RESIDUAL_OVERFLOW_SHIFT 4319#define ISCSI_CMD_RESPONSE_RESERVED1 (0x7<<5)320#define ISCSI_CMD_RESPONSE_RESERVED1_SHIFT 5321 u8 response;322 u8 status;323#elif defined(__LITTLE_ENDIAN)324 u8 status;325 u8 response;326 u8 response_flags;327#define ISCSI_CMD_RESPONSE_RESERVED0 (0x1<<0)328#define ISCSI_CMD_RESPONSE_RESERVED0_SHIFT 0329#define ISCSI_CMD_RESPONSE_RESIDUAL_UNDERFLOW (0x1<<1)330#define ISCSI_CMD_RESPONSE_RESIDUAL_UNDERFLOW_SHIFT 1331#define ISCSI_CMD_RESPONSE_RESIDUAL_OVERFLOW (0x1<<2)332#define ISCSI_CMD_RESPONSE_RESIDUAL_OVERFLOW_SHIFT 2333#define ISCSI_CMD_RESPONSE_BR_RESIDUAL_UNDERFLOW (0x1<<3)334#define ISCSI_CMD_RESPONSE_BR_RESIDUAL_UNDERFLOW_SHIFT 3335#define ISCSI_CMD_RESPONSE_BR_RESIDUAL_OVERFLOW (0x1<<4)336#define ISCSI_CMD_RESPONSE_BR_RESIDUAL_OVERFLOW_SHIFT 4337#define ISCSI_CMD_RESPONSE_RESERVED1 (0x7<<5)338#define ISCSI_CMD_RESPONSE_RESERVED1_SHIFT 5339 u8 op_code;340#endif341 u32 data_length;342 u32 exp_cmd_sn;343 u32 max_cmd_sn;344 u32 reserved2;345 u32 residual_count;346#if defined(__BIG_ENDIAN)347 u16 reserved4;348 u8 err_code;349 u8 reserved3;350#elif defined(__LITTLE_ENDIAN)351 u8 reserved3;352 u8 err_code;353 u16 reserved4;354#endif355 u32 reserved5[5];356 union bnx2i_cmd_resp_task_stat task_stat;357 u32 reserved6;358#if defined(__BIG_ENDIAN)359 u16 reserved7;360 u16 itt;361#define ISCSI_CMD_RESPONSE_INDEX (0x3FFF<<0)362#define ISCSI_CMD_RESPONSE_INDEX_SHIFT 0363#define ISCSI_CMD_RESPONSE_TYPE (0x3<<14)364#define ISCSI_CMD_RESPONSE_TYPE_SHIFT 14365#elif defined(__LITTLE_ENDIAN)366 u16 itt;367#define ISCSI_CMD_RESPONSE_INDEX (0x3FFF<<0)368#define ISCSI_CMD_RESPONSE_INDEX_SHIFT 0369#define ISCSI_CMD_RESPONSE_TYPE (0x3<<14)370#define ISCSI_CMD_RESPONSE_TYPE_SHIFT 14371 u16 reserved7;372#endif373 u32 cq_req_sn;374};375 376 377 378/*379 * firmware middle-path request SQ WQE380 */381struct bnx2i_fw_mp_request {382#if defined(__BIG_ENDIAN)383 u8 op_code;384 u8 op_attr;385 u16 hdr_opaque1;386#elif defined(__LITTLE_ENDIAN)387 u16 hdr_opaque1;388 u8 op_attr;389 u8 op_code;390#endif391 u32 data_length;392 u32 hdr_opaque2[2];393#if defined(__BIG_ENDIAN)394 u16 reserved0;395 u16 itt;396#define ISCSI_FW_MP_REQUEST_INDEX (0x3FFF<<0)397#define ISCSI_FW_MP_REQUEST_INDEX_SHIFT 0398#define ISCSI_FW_MP_REQUEST_TYPE (0x3<<14)399#define ISCSI_FW_MP_REQUEST_TYPE_SHIFT 14400#elif defined(__LITTLE_ENDIAN)401 u16 itt;402#define ISCSI_FW_MP_REQUEST_INDEX (0x3FFF<<0)403#define ISCSI_FW_MP_REQUEST_INDEX_SHIFT 0404#define ISCSI_FW_MP_REQUEST_TYPE (0x3<<14)405#define ISCSI_FW_MP_REQUEST_TYPE_SHIFT 14406 u16 reserved0;407#endif408 u32 hdr_opaque3[4];409 u32 resp_bd_list_addr_lo;410 u32 resp_bd_list_addr_hi;411 u32 resp_buffer;412#define ISCSI_FW_MP_REQUEST_RESP_BUFFER_LENGTH (0xFFFFFF<<0)413#define ISCSI_FW_MP_REQUEST_RESP_BUFFER_LENGTH_SHIFT 0414#define ISCSI_FW_MP_REQUEST_NUM_RESP_BDS (0xFF<<24)415#define ISCSI_FW_MP_REQUEST_NUM_RESP_BDS_SHIFT 24416#if defined(__BIG_ENDIAN)417 u16 reserved4;418 u8 reserved3;419 u8 flags;420#define ISCSI_FW_MP_REQUEST_RESERVED1 (0x1<<0)421#define ISCSI_FW_MP_REQUEST_RESERVED1_SHIFT 0422#define ISCSI_FW_MP_REQUEST_LOCAL_COMPLETION (0x1<<1)423#define ISCSI_FW_MP_REQUEST_LOCAL_COMPLETION_SHIFT 1424#define ISCSI_FW_MP_REQUEST_UPDATE_EXP_STAT_SN (0x1<<2)425#define ISCSI_FW_MP_REQUEST_UPDATE_EXP_STAT_SN_SHIFT 2426#define ISCSI_FW_MP_REQUEST_RESERVED2 (0x1F<<3)427#define ISCSI_FW_MP_REQUEST_RESERVED2_SHIFT 3428#elif defined(__LITTLE_ENDIAN)429 u8 flags;430#define ISCSI_FW_MP_REQUEST_RESERVED1 (0x1<<0)431#define ISCSI_FW_MP_REQUEST_RESERVED1_SHIFT 0432#define ISCSI_FW_MP_REQUEST_LOCAL_COMPLETION (0x1<<1)433#define ISCSI_FW_MP_REQUEST_LOCAL_COMPLETION_SHIFT 1434#define ISCSI_FW_MP_REQUEST_UPDATE_EXP_STAT_SN (0x1<<2)435#define ISCSI_FW_MP_REQUEST_UPDATE_EXP_STAT_SN_SHIFT 2436#define ISCSI_FW_MP_REQUEST_RESERVED2 (0x1F<<3)437#define ISCSI_FW_MP_REQUEST_RESERVED2_SHIFT 3438 u8 reserved3;439 u16 reserved4;440#endif441 u32 bd_list_addr_lo;442 u32 bd_list_addr_hi;443#if defined(__BIG_ENDIAN)444 u8 cq_index;445 u8 reserved6;446 u8 reserved5;447 u8 num_bds;448#elif defined(__LITTLE_ENDIAN)449 u8 num_bds;450 u8 reserved5;451 u8 reserved6;452 u8 cq_index;453#endif454};455 456 457/*458 * firmware response - CQE: used only by firmware459 */460struct bnx2i_fw_response {461 u32 hdr_dword1[2];462 u32 hdr_exp_cmd_sn;463 u32 hdr_max_cmd_sn;464 u32 hdr_ttt;465 u32 hdr_res_cnt;466 u32 cqe_flags;467#define ISCSI_FW_RESPONSE_RESERVED2 (0xFF<<0)468#define ISCSI_FW_RESPONSE_RESERVED2_SHIFT 0469#define ISCSI_FW_RESPONSE_ERR_CODE (0xFF<<8)470#define ISCSI_FW_RESPONSE_ERR_CODE_SHIFT 8471#define ISCSI_FW_RESPONSE_RESERVED3 (0xFFFF<<16)472#define ISCSI_FW_RESPONSE_RESERVED3_SHIFT 16473 u32 stat_sn;474 u32 hdr_dword2[2];475 u32 hdr_dword3[2];476 u32 task_stat;477 u32 reserved0;478 u32 hdr_itt;479 u32 cq_req_sn;480};481 482 483/*484 * iSCSI KCQ CQE parameters485 */486union iscsi_kcqe_params {487 u32 reserved0[4];488};489 490/*491 * iSCSI KCQ CQE492 */493struct iscsi_kcqe {494 u32 iscsi_conn_id;495 u32 completion_status;496 u32 iscsi_conn_context_id;497 union iscsi_kcqe_params params;498#if defined(__BIG_ENDIAN)499 u8 flags;500#define ISCSI_KCQE_RESERVED0 (0xF<<0)501#define ISCSI_KCQE_RESERVED0_SHIFT 0502#define ISCSI_KCQE_LAYER_CODE (0x7<<4)503#define ISCSI_KCQE_LAYER_CODE_SHIFT 4504#define ISCSI_KCQE_RESERVED1 (0x1<<7)505#define ISCSI_KCQE_RESERVED1_SHIFT 7506 u8 op_code;507 u16 qe_self_seq;508#elif defined(__LITTLE_ENDIAN)509 u16 qe_self_seq;510 u8 op_code;511 u8 flags;512#define ISCSI_KCQE_RESERVED0 (0xF<<0)513#define ISCSI_KCQE_RESERVED0_SHIFT 0514#define ISCSI_KCQE_LAYER_CODE (0x7<<4)515#define ISCSI_KCQE_LAYER_CODE_SHIFT 4516#define ISCSI_KCQE_RESERVED1 (0x1<<7)517#define ISCSI_KCQE_RESERVED1_SHIFT 7518#endif519};520 521 522 523/*524 * iSCSI KWQE header525 */526struct iscsi_kwqe_header {527#if defined(__BIG_ENDIAN)528 u8 flags;529#define ISCSI_KWQE_HEADER_RESERVED0 (0xF<<0)530#define ISCSI_KWQE_HEADER_RESERVED0_SHIFT 0531#define ISCSI_KWQE_HEADER_LAYER_CODE (0x7<<4)532#define ISCSI_KWQE_HEADER_LAYER_CODE_SHIFT 4533#define ISCSI_KWQE_HEADER_RESERVED1 (0x1<<7)534#define ISCSI_KWQE_HEADER_RESERVED1_SHIFT 7535 u8 op_code;536#elif defined(__LITTLE_ENDIAN)537 u8 op_code;538 u8 flags;539#define ISCSI_KWQE_HEADER_RESERVED0 (0xF<<0)540#define ISCSI_KWQE_HEADER_RESERVED0_SHIFT 0541#define ISCSI_KWQE_HEADER_LAYER_CODE (0x7<<4)542#define ISCSI_KWQE_HEADER_LAYER_CODE_SHIFT 4543#define ISCSI_KWQE_HEADER_RESERVED1 (0x1<<7)544#define ISCSI_KWQE_HEADER_RESERVED1_SHIFT 7545#endif546};547 548/*549 * iSCSI firmware init request 1550 */551struct iscsi_kwqe_init1 {552#if defined(__BIG_ENDIAN)553 struct iscsi_kwqe_header hdr;554 u8 reserved0;555 u8 num_cqs;556#elif defined(__LITTLE_ENDIAN)557 u8 num_cqs;558 u8 reserved0;559 struct iscsi_kwqe_header hdr;560#endif561 u32 dummy_buffer_addr_lo;562 u32 dummy_buffer_addr_hi;563#if defined(__BIG_ENDIAN)564 u16 num_ccells_per_conn;565 u16 num_tasks_per_conn;566#elif defined(__LITTLE_ENDIAN)567 u16 num_tasks_per_conn;568 u16 num_ccells_per_conn;569#endif570#if defined(__BIG_ENDIAN)571 u16 sq_wqes_per_page;572 u16 sq_num_wqes;573#elif defined(__LITTLE_ENDIAN)574 u16 sq_num_wqes;575 u16 sq_wqes_per_page;576#endif577#if defined(__BIG_ENDIAN)578 u8 cq_log_wqes_per_page;579 u8 flags;580#define ISCSI_KWQE_INIT1_PAGE_SIZE (0xF<<0)581#define ISCSI_KWQE_INIT1_PAGE_SIZE_SHIFT 0582#define ISCSI_KWQE_INIT1_DELAYED_ACK_ENABLE (0x1<<4)583#define ISCSI_KWQE_INIT1_DELAYED_ACK_ENABLE_SHIFT 4584#define ISCSI_KWQE_INIT1_KEEP_ALIVE_ENABLE (0x1<<5)585#define ISCSI_KWQE_INIT1_KEEP_ALIVE_ENABLE_SHIFT 5586#define ISCSI_KWQE_INIT1_TIME_STAMPS_ENABLE (0x1<<6)587#define ISCSI_KWQE_INIT1_TIME_STAMPS_ENABLE_SHIFT 6588#define ISCSI_KWQE_INIT1_RESERVED1 (0x1<<7)589#define ISCSI_KWQE_INIT1_RESERVED1_SHIFT 7590 u16 cq_num_wqes;591#elif defined(__LITTLE_ENDIAN)592 u16 cq_num_wqes;593 u8 flags;594#define ISCSI_KWQE_INIT1_PAGE_SIZE (0xF<<0)595#define ISCSI_KWQE_INIT1_PAGE_SIZE_SHIFT 0596#define ISCSI_KWQE_INIT1_DELAYED_ACK_ENABLE (0x1<<4)597#define ISCSI_KWQE_INIT1_DELAYED_ACK_ENABLE_SHIFT 4598#define ISCSI_KWQE_INIT1_KEEP_ALIVE_ENABLE (0x1<<5)599#define ISCSI_KWQE_INIT1_KEEP_ALIVE_ENABLE_SHIFT 5600#define ISCSI_KWQE_INIT1_TIME_STAMPS_ENABLE (0x1<<6)601#define ISCSI_KWQE_INIT1_TIME_STAMPS_ENABLE_SHIFT 6602#define ISCSI_KWQE_INIT1_RESERVED1 (0x1<<7)603#define ISCSI_KWQE_INIT1_RESERVED1_SHIFT 7604 u8 cq_log_wqes_per_page;605#endif606#if defined(__BIG_ENDIAN)607 u16 cq_num_pages;608 u16 sq_num_pages;609#elif defined(__LITTLE_ENDIAN)610 u16 sq_num_pages;611 u16 cq_num_pages;612#endif613#if defined(__BIG_ENDIAN)614 u16 rq_buffer_size;615 u16 rq_num_wqes;616#elif defined(__LITTLE_ENDIAN)617 u16 rq_num_wqes;618 u16 rq_buffer_size;619#endif620};621 622/*623 * iSCSI firmware init request 2624 */625struct iscsi_kwqe_init2 {626#if defined(__BIG_ENDIAN)627 struct iscsi_kwqe_header hdr;628 u16 max_cq_sqn;629#elif defined(__LITTLE_ENDIAN)630 u16 max_cq_sqn;631 struct iscsi_kwqe_header hdr;632#endif633 u32 error_bit_map[2];634 u32 reserved1[5];635};636 637/*638 * Initial iSCSI connection offload request 1639 */640struct iscsi_kwqe_conn_offload1 {641#if defined(__BIG_ENDIAN)642 struct iscsi_kwqe_header hdr;643 u16 iscsi_conn_id;644#elif defined(__LITTLE_ENDIAN)645 u16 iscsi_conn_id;646 struct iscsi_kwqe_header hdr;647#endif648 u32 sq_page_table_addr_lo;649 u32 sq_page_table_addr_hi;650 u32 cq_page_table_addr_lo;651 u32 cq_page_table_addr_hi;652 u32 reserved0[3];653};654 655/*656 * iSCSI Page Table Entry (PTE)657 */658struct iscsi_pte {659 u32 hi;660 u32 lo;661};662 663/*664 * Initial iSCSI connection offload request 2665 */666struct iscsi_kwqe_conn_offload2 {667#if defined(__BIG_ENDIAN)668 struct iscsi_kwqe_header hdr;669 u16 reserved0;670#elif defined(__LITTLE_ENDIAN)671 u16 reserved0;672 struct iscsi_kwqe_header hdr;673#endif674 u32 rq_page_table_addr_lo;675 u32 rq_page_table_addr_hi;676 struct iscsi_pte sq_first_pte;677 struct iscsi_pte cq_first_pte;678 u32 num_additional_wqes;679};680 681 682/*683 * Initial iSCSI connection offload request 3684 */685struct iscsi_kwqe_conn_offload3 {686#if defined(__BIG_ENDIAN)687 struct iscsi_kwqe_header hdr;688 u16 reserved0;689#elif defined(__LITTLE_ENDIAN)690 u16 reserved0;691 struct iscsi_kwqe_header hdr;692#endif693 u32 reserved1;694 struct iscsi_pte qp_first_pte[3];695};696 697 698/*699 * iSCSI connection update request700 */701struct iscsi_kwqe_conn_update {702#if defined(__BIG_ENDIAN)703 struct iscsi_kwqe_header hdr;704 u16 reserved0;705#elif defined(__LITTLE_ENDIAN)706 u16 reserved0;707 struct iscsi_kwqe_header hdr;708#endif709#if defined(__BIG_ENDIAN)710 u8 session_error_recovery_level;711 u8 max_outstanding_r2ts;712 u8 reserved2;713 u8 conn_flags;714#define ISCSI_KWQE_CONN_UPDATE_HEADER_DIGEST (0x1<<0)715#define ISCSI_KWQE_CONN_UPDATE_HEADER_DIGEST_SHIFT 0716#define ISCSI_KWQE_CONN_UPDATE_DATA_DIGEST (0x1<<1)717#define ISCSI_KWQE_CONN_UPDATE_DATA_DIGEST_SHIFT 1718#define ISCSI_KWQE_CONN_UPDATE_INITIAL_R2T (0x1<<2)719#define ISCSI_KWQE_CONN_UPDATE_INITIAL_R2T_SHIFT 2720#define ISCSI_KWQE_CONN_UPDATE_IMMEDIATE_DATA (0x1<<3)721#define ISCSI_KWQE_CONN_UPDATE_IMMEDIATE_DATA_SHIFT 3722#define ISCSI_KWQE_CONN_UPDATE_OOO_SUPPORT_MODE (0x3<<4)723#define ISCSI_KWQE_CONN_UPDATE_OOO_SUPPORT_MODE_SHIFT 4724#define ISCSI_KWQE_CONN_UPDATE_RESERVED1 (0x3<<6)725#define ISCSI_KWQE_CONN_UPDATE_RESERVED1_SHIFT 6726#elif defined(__LITTLE_ENDIAN)727 u8 conn_flags;728#define ISCSI_KWQE_CONN_UPDATE_HEADER_DIGEST (0x1<<0)729#define ISCSI_KWQE_CONN_UPDATE_HEADER_DIGEST_SHIFT 0730#define ISCSI_KWQE_CONN_UPDATE_DATA_DIGEST (0x1<<1)731#define ISCSI_KWQE_CONN_UPDATE_DATA_DIGEST_SHIFT 1732#define ISCSI_KWQE_CONN_UPDATE_INITIAL_R2T (0x1<<2)733#define ISCSI_KWQE_CONN_UPDATE_INITIAL_R2T_SHIFT 2734#define ISCSI_KWQE_CONN_UPDATE_IMMEDIATE_DATA (0x1<<3)735#define ISCSI_KWQE_CONN_UPDATE_IMMEDIATE_DATA_SHIFT 3736#define ISCSI_KWQE_CONN_UPDATE_OOO_SUPPORT_MODE (0x3<<4)737#define ISCSI_KWQE_CONN_UPDATE_OOO_SUPPORT_MODE_SHIFT 4738#define ISCSI_KWQE_CONN_UPDATE_RESERVED1 (0x3<<6)739#define ISCSI_KWQE_CONN_UPDATE_RESERVED1_SHIFT 6740 u8 reserved2;741 u8 max_outstanding_r2ts;742 u8 session_error_recovery_level;743#endif744 u32 context_id;745 u32 max_send_pdu_length;746 u32 max_recv_pdu_length;747 u32 first_burst_length;748 u32 max_burst_length;749 u32 exp_stat_sn;750};751 752/*753 * iSCSI destroy connection request754 */755struct iscsi_kwqe_conn_destroy {756#if defined(__BIG_ENDIAN)757 struct iscsi_kwqe_header hdr;758 u16 reserved0;759#elif defined(__LITTLE_ENDIAN)760 u16 reserved0;761 struct iscsi_kwqe_header hdr;762#endif763 u32 context_id;764 u32 reserved1[6];765};766 767/*768 * iSCSI KWQ WQE769 */770union iscsi_kwqe {771 struct iscsi_kwqe_init1 init1;772 struct iscsi_kwqe_init2 init2;773 struct iscsi_kwqe_conn_offload1 conn_offload1;774 struct iscsi_kwqe_conn_offload2 conn_offload2;775 struct iscsi_kwqe_conn_update conn_update;776 struct iscsi_kwqe_conn_destroy conn_destroy;777};778 779/*780 * iSCSI Login SQ WQE781 */782struct bnx2i_login_request {783#if defined(__BIG_ENDIAN)784 u8 op_code;785 u8 op_attr;786#define ISCSI_LOGIN_REQUEST_NEXT_STAGE (0x3<<0)787#define ISCSI_LOGIN_REQUEST_NEXT_STAGE_SHIFT 0788#define ISCSI_LOGIN_REQUEST_CURRENT_STAGE (0x3<<2)789#define ISCSI_LOGIN_REQUEST_CURRENT_STAGE_SHIFT 2790#define ISCSI_LOGIN_REQUEST_RESERVED0 (0x3<<4)791#define ISCSI_LOGIN_REQUEST_RESERVED0_SHIFT 4792#define ISCSI_LOGIN_REQUEST_CONT (0x1<<6)793#define ISCSI_LOGIN_REQUEST_CONT_SHIFT 6794#define ISCSI_LOGIN_REQUEST_TRANSIT (0x1<<7)795#define ISCSI_LOGIN_REQUEST_TRANSIT_SHIFT 7796 u8 version_max;797 u8 version_min;798#elif defined(__LITTLE_ENDIAN)799 u8 version_min;800 u8 version_max;801 u8 op_attr;802#define ISCSI_LOGIN_REQUEST_NEXT_STAGE (0x3<<0)803#define ISCSI_LOGIN_REQUEST_NEXT_STAGE_SHIFT 0804#define ISCSI_LOGIN_REQUEST_CURRENT_STAGE (0x3<<2)805#define ISCSI_LOGIN_REQUEST_CURRENT_STAGE_SHIFT 2806#define ISCSI_LOGIN_REQUEST_RESERVED0 (0x3<<4)807#define ISCSI_LOGIN_REQUEST_RESERVED0_SHIFT 4808#define ISCSI_LOGIN_REQUEST_CONT (0x1<<6)809#define ISCSI_LOGIN_REQUEST_CONT_SHIFT 6810#define ISCSI_LOGIN_REQUEST_TRANSIT (0x1<<7)811#define ISCSI_LOGIN_REQUEST_TRANSIT_SHIFT 7812 u8 op_code;813#endif814 u32 data_length;815 u32 isid_lo;816#if defined(__BIG_ENDIAN)817 u16 isid_hi;818 u16 tsih;819#elif defined(__LITTLE_ENDIAN)820 u16 tsih;821 u16 isid_hi;822#endif823#if defined(__BIG_ENDIAN)824 u16 reserved2;825 u16 itt;826#define ISCSI_LOGIN_REQUEST_INDEX (0x3FFF<<0)827#define ISCSI_LOGIN_REQUEST_INDEX_SHIFT 0828#define ISCSI_LOGIN_REQUEST_TYPE (0x3<<14)829#define ISCSI_LOGIN_REQUEST_TYPE_SHIFT 14830#elif defined(__LITTLE_ENDIAN)831 u16 itt;832#define ISCSI_LOGIN_REQUEST_INDEX (0x3FFF<<0)833#define ISCSI_LOGIN_REQUEST_INDEX_SHIFT 0834#define ISCSI_LOGIN_REQUEST_TYPE (0x3<<14)835#define ISCSI_LOGIN_REQUEST_TYPE_SHIFT 14836 u16 reserved2;837#endif838#if defined(__BIG_ENDIAN)839 u16 cid;840 u16 reserved3;841#elif defined(__LITTLE_ENDIAN)842 u16 reserved3;843 u16 cid;844#endif845 u32 cmd_sn;846 u32 exp_stat_sn;847 u32 reserved4;848 u32 resp_bd_list_addr_lo;849 u32 resp_bd_list_addr_hi;850 u32 resp_buffer;851#define ISCSI_LOGIN_REQUEST_RESP_BUFFER_LENGTH (0xFFFFFF<<0)852#define ISCSI_LOGIN_REQUEST_RESP_BUFFER_LENGTH_SHIFT 0853#define ISCSI_LOGIN_REQUEST_NUM_RESP_BDS (0xFF<<24)854#define ISCSI_LOGIN_REQUEST_NUM_RESP_BDS_SHIFT 24855#if defined(__BIG_ENDIAN)856 u16 reserved8;857 u8 reserved7;858 u8 flags;859#define ISCSI_LOGIN_REQUEST_RESERVED5 (0x3<<0)860#define ISCSI_LOGIN_REQUEST_RESERVED5_SHIFT 0861#define ISCSI_LOGIN_REQUEST_UPDATE_EXP_STAT_SN (0x1<<2)862#define ISCSI_LOGIN_REQUEST_UPDATE_EXP_STAT_SN_SHIFT 2863#define ISCSI_LOGIN_REQUEST_RESERVED6 (0x1F<<3)864#define ISCSI_LOGIN_REQUEST_RESERVED6_SHIFT 3865#elif defined(__LITTLE_ENDIAN)866 u8 flags;867#define ISCSI_LOGIN_REQUEST_RESERVED5 (0x3<<0)868#define ISCSI_LOGIN_REQUEST_RESERVED5_SHIFT 0869#define ISCSI_LOGIN_REQUEST_UPDATE_EXP_STAT_SN (0x1<<2)870#define ISCSI_LOGIN_REQUEST_UPDATE_EXP_STAT_SN_SHIFT 2871#define ISCSI_LOGIN_REQUEST_RESERVED6 (0x1F<<3)872#define ISCSI_LOGIN_REQUEST_RESERVED6_SHIFT 3873 u8 reserved7;874 u16 reserved8;875#endif876 u32 bd_list_addr_lo;877 u32 bd_list_addr_hi;878#if defined(__BIG_ENDIAN)879 u8 cq_index;880 u8 reserved10;881 u8 reserved9;882 u8 num_bds;883#elif defined(__LITTLE_ENDIAN)884 u8 num_bds;885 u8 reserved9;886 u8 reserved10;887 u8 cq_index;888#endif889};890 891 892/*893 * iSCSI Login CQE894 */895struct bnx2i_login_response {896#if defined(__BIG_ENDIAN)897 u8 op_code;898 u8 response_flags;899#define ISCSI_LOGIN_RESPONSE_NEXT_STAGE (0x3<<0)900#define ISCSI_LOGIN_RESPONSE_NEXT_STAGE_SHIFT 0901#define ISCSI_LOGIN_RESPONSE_CURRENT_STAGE (0x3<<2)902#define ISCSI_LOGIN_RESPONSE_CURRENT_STAGE_SHIFT 2903#define ISCSI_LOGIN_RESPONSE_RESERVED0 (0x3<<4)904#define ISCSI_LOGIN_RESPONSE_RESERVED0_SHIFT 4905#define ISCSI_LOGIN_RESPONSE_CONT (0x1<<6)906#define ISCSI_LOGIN_RESPONSE_CONT_SHIFT 6907#define ISCSI_LOGIN_RESPONSE_TRANSIT (0x1<<7)908#define ISCSI_LOGIN_RESPONSE_TRANSIT_SHIFT 7909 u8 version_max;910 u8 version_active;911#elif defined(__LITTLE_ENDIAN)912 u8 version_active;913 u8 version_max;914 u8 response_flags;915#define ISCSI_LOGIN_RESPONSE_NEXT_STAGE (0x3<<0)916#define ISCSI_LOGIN_RESPONSE_NEXT_STAGE_SHIFT 0917#define ISCSI_LOGIN_RESPONSE_CURRENT_STAGE (0x3<<2)918#define ISCSI_LOGIN_RESPONSE_CURRENT_STAGE_SHIFT 2919#define ISCSI_LOGIN_RESPONSE_RESERVED0 (0x3<<4)920#define ISCSI_LOGIN_RESPONSE_RESERVED0_SHIFT 4921#define ISCSI_LOGIN_RESPONSE_CONT (0x1<<6)922#define ISCSI_LOGIN_RESPONSE_CONT_SHIFT 6923#define ISCSI_LOGIN_RESPONSE_TRANSIT (0x1<<7)924#define ISCSI_LOGIN_RESPONSE_TRANSIT_SHIFT 7925 u8 op_code;926#endif927 u32 data_length;928 u32 exp_cmd_sn;929 u32 max_cmd_sn;930 u32 reserved1[2];931#if defined(__BIG_ENDIAN)932 u16 reserved3;933 u8 err_code;934 u8 reserved2;935#elif defined(__LITTLE_ENDIAN)936 u8 reserved2;937 u8 err_code;938 u16 reserved3;939#endif940 u32 stat_sn;941 u32 isid_lo;942#if defined(__BIG_ENDIAN)943 u16 isid_hi;944 u16 tsih;945#elif defined(__LITTLE_ENDIAN)946 u16 tsih;947 u16 isid_hi;948#endif949#if defined(__BIG_ENDIAN)950 u8 status_class;951 u8 status_detail;952 u16 reserved4;953#elif defined(__LITTLE_ENDIAN)954 u16 reserved4;955 u8 status_detail;956 u8 status_class;957#endif958 u32 reserved5[3];959#if defined(__BIG_ENDIAN)960 u16 reserved6;961 u16 itt;962#define ISCSI_LOGIN_RESPONSE_INDEX (0x3FFF<<0)963#define ISCSI_LOGIN_RESPONSE_INDEX_SHIFT 0964#define ISCSI_LOGIN_RESPONSE_TYPE (0x3<<14)965#define ISCSI_LOGIN_RESPONSE_TYPE_SHIFT 14966#elif defined(__LITTLE_ENDIAN)967 u16 itt;968#define ISCSI_LOGIN_RESPONSE_INDEX (0x3FFF<<0)969#define ISCSI_LOGIN_RESPONSE_INDEX_SHIFT 0970#define ISCSI_LOGIN_RESPONSE_TYPE (0x3<<14)971#define ISCSI_LOGIN_RESPONSE_TYPE_SHIFT 14972 u16 reserved6;973#endif974 u32 cq_req_sn;975};976 977 978/*979 * iSCSI Logout SQ WQE980 */981struct bnx2i_logout_request {982#if defined(__BIG_ENDIAN)983 u8 op_code;984 u8 op_attr;985#define ISCSI_LOGOUT_REQUEST_REASON (0x7F<<0)986#define ISCSI_LOGOUT_REQUEST_REASON_SHIFT 0987#define ISCSI_LOGOUT_REQUEST_ALWAYS_ONE (0x1<<7)988#define ISCSI_LOGOUT_REQUEST_ALWAYS_ONE_SHIFT 7989 u16 reserved0;990#elif defined(__LITTLE_ENDIAN)991 u16 reserved0;992 u8 op_attr;993#define ISCSI_LOGOUT_REQUEST_REASON (0x7F<<0)994#define ISCSI_LOGOUT_REQUEST_REASON_SHIFT 0995#define ISCSI_LOGOUT_REQUEST_ALWAYS_ONE (0x1<<7)996#define ISCSI_LOGOUT_REQUEST_ALWAYS_ONE_SHIFT 7997 u8 op_code;998#endif999 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 01006#define ISCSI_LOGOUT_REQUEST_TYPE (0x3<<14)1007#define ISCSI_LOGOUT_REQUEST_TYPE_SHIFT 141008#elif defined(__LITTLE_ENDIAN)1009 u16 itt;1010#define ISCSI_LOGOUT_REQUEST_INDEX (0x3FFF<<0)1011#define ISCSI_LOGOUT_REQUEST_INDEX_SHIFT 01012#define ISCSI_LOGOUT_REQUEST_TYPE (0x3<<14)1013#define ISCSI_LOGOUT_REQUEST_TYPE_SHIFT 141014 u16 reserved2;1015#endif1016#if defined(__BIG_ENDIAN)1017 u16 cid;1018 u16 reserved3;1019#elif defined(__LITTLE_ENDIAN)1020 u16 reserved3;1021 u16 cid;1022#endif1023 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#endif1039};1040 1041 1042/*1043 * iSCSI Logout CQE1044 */1045struct 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#endif1057 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#endif1070 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#endif1078 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 01084#define ISCSI_LOGOUT_RESPONSE_TYPE (0x3<<14)1085#define ISCSI_LOGOUT_RESPONSE_TYPE_SHIFT 141086#elif defined(__LITTLE_ENDIAN)1087 u16 itt;1088#define ISCSI_LOGOUT_RESPONSE_INDEX (0x3FFF<<0)1089#define ISCSI_LOGOUT_RESPONSE_INDEX_SHIFT 01090#define ISCSI_LOGOUT_RESPONSE_TYPE (0x3<<14)1091#define ISCSI_LOGOUT_RESPONSE_TYPE_SHIFT 141092 u16 reserved8;1093#endif1094 u32 cq_req_sn;1095};1096 1097 1098/*1099 * iSCSI Nop-In CQE1100 */1101struct 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#endif1111 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#endif1125 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 01133#define ISCSI_NOP_IN_MSG_TYPE (0x3<<14)1134#define ISCSI_NOP_IN_MSG_TYPE_SHIFT 141135#elif defined(__LITTLE_ENDIAN)1136 u16 itt;1137#define ISCSI_NOP_IN_MSG_INDEX (0x3FFF<<0)1138#define ISCSI_NOP_IN_MSG_INDEX_SHIFT 01139#define ISCSI_NOP_IN_MSG_TYPE (0x3<<14)1140#define ISCSI_NOP_IN_MSG_TYPE_SHIFT 141141 u16 reserved7;1142#endif1143 u32 cq_req_sn;1144};1145 1146 1147/*1148 * iSCSI NOP-OUT SQ WQE1149 */1150struct 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 01156#define ISCSI_NOP_OUT_REQUEST_ALWAYS_ONE (0x1<<7)1157#define ISCSI_NOP_OUT_REQUEST_ALWAYS_ONE_SHIFT 71158 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 01164#define ISCSI_NOP_OUT_REQUEST_ALWAYS_ONE (0x1<<7)1165#define ISCSI_NOP_OUT_REQUEST_ALWAYS_ONE_SHIFT 71166 u8 op_code;1167#endif1168 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 01175#define ISCSI_NOP_OUT_REQUEST_TYPE (0x3<<14)1176#define ISCSI_NOP_OUT_REQUEST_TYPE_SHIFT 141177#elif defined(__LITTLE_ENDIAN)1178 u16 itt;1179#define ISCSI_NOP_OUT_REQUEST_INDEX (0x3FFF<<0)1180#define ISCSI_NOP_OUT_REQUEST_INDEX_SHIFT 01181#define ISCSI_NOP_OUT_REQUEST_TYPE (0x3<<14)1182#define ISCSI_NOP_OUT_REQUEST_TYPE_SHIFT 141183 u16 reserved2;1184#endif1185 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 01193#define ISCSI_NOP_OUT_REQUEST_NUM_RESP_BDS (0xFF<<24)1194#define ISCSI_NOP_OUT_REQUEST_NUM_RESP_BDS_SHIFT 241195#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 01201#define ISCSI_NOP_OUT_REQUEST_LOCAL_COMPLETION (0x1<<1)1202#define ISCSI_NOP_OUT_REQUEST_LOCAL_COMPLETION_SHIFT 11203#define ISCSI_NOP_OUT_REQUEST_ZERO_FILL (0x3F<<2)1204#define ISCSI_NOP_OUT_REQUEST_ZERO_FILL_SHIFT 21205#elif defined(__LITTLE_ENDIAN)1206 u8 flags;1207#define ISCSI_NOP_OUT_REQUEST_RESERVED4 (0x1<<0)1208#define ISCSI_NOP_OUT_REQUEST_RESERVED4_SHIFT 01209#define ISCSI_NOP_OUT_REQUEST_LOCAL_COMPLETION (0x1<<1)1210#define ISCSI_NOP_OUT_REQUEST_LOCAL_COMPLETION_SHIFT 11211#define ISCSI_NOP_OUT_REQUEST_ZERO_FILL (0x3F<<2)1212#define ISCSI_NOP_OUT_REQUEST_ZERO_FILL_SHIFT 21213 u8 reserved6;1214 u16 reserved7;1215#endif1216 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#endif1229};1230 1231/*1232 * iSCSI Reject CQE1233 */1234struct 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#endif1246 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#endif1259 u32 reserved5[8];1260 u32 cq_req_sn;1261};1262 1263/*1264 * bnx2i iSCSI TMF SQ WQE1265 */1266struct 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 01272#define ISCSI_TMF_REQUEST_ALWAYS_ONE (0x1<<7)1273#define ISCSI_TMF_REQUEST_ALWAYS_ONE_SHIFT 71274 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 01280#define ISCSI_TMF_REQUEST_ALWAYS_ONE (0x1<<7)1281#define ISCSI_TMF_REQUEST_ALWAYS_ONE_SHIFT 71282 u8 op_code;1283#endif1284 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 01291#define ISCSI_TMF_REQUEST_TYPE (0x3<<14)1292#define ISCSI_TMF_REQUEST_TYPE_SHIFT 141293#elif defined(__LITTLE_ENDIAN)1294 u16 itt;1295#define ISCSI_TMF_REQUEST_INDEX (0x3FFF<<0)1296#define ISCSI_TMF_REQUEST_INDEX_SHIFT 01297#define ISCSI_TMF_REQUEST_TYPE (0x3<<14)1298#define ISCSI_TMF_REQUEST_TYPE_SHIFT 141299 u16 reserved1;1300#endif1301 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#endif1320};1321 1322/*1323 * iSCSI Text SQ WQE1324 */1325struct 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 01331#define ISCSI_TEXT_REQUEST_CONT (0x1<<6)1332#define ISCSI_TEXT_REQUEST_CONT_SHIFT 61333#define ISCSI_TEXT_REQUEST_FINAL (0x1<<7)1334#define ISCSI_TEXT_REQUEST_FINAL_SHIFT 71335 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 01341#define ISCSI_TEXT_REQUEST_CONT (0x1<<6)1342#define ISCSI_TEXT_REQUEST_CONT_SHIFT 61343#define ISCSI_TEXT_REQUEST_FINAL (0x1<<7)1344#define ISCSI_TEXT_REQUEST_FINAL_SHIFT 71345 u8 op_code;1346#endif1347 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 01354#define ISCSI_TEXT_REQUEST_TYPE (0x3<<14)1355#define ISCSI_TEXT_REQUEST_TYPE_SHIFT 141356#elif defined(__LITTLE_ENDIAN)1357 u16 itt;1358#define ISCSI_TEXT_REQUEST_INDEX (0x3FFF<<0)1359#define ISCSI_TEXT_REQUEST_INDEX_SHIFT 01360#define ISCSI_TEXT_REQUEST_TYPE (0x3<<14)1361#define ISCSI_TEXT_REQUEST_TYPE_SHIFT 141362 u16 reserved3;1363#endif1364 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 01372#define ISCSI_TEXT_REQUEST_NUM_RESP_BDS (0xFF<<24)1373#define ISCSI_TEXT_REQUEST_NUM_RESP_BDS_SHIFT 241374 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#endif1388};1389 1390/*1391 * iSCSI SQ WQE1392 */1393union 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 CQE1406 */1407struct 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#endif1419 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#endif1432 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 01438#define ISCSI_TMF_RESPONSE_TYPE (0x3<<14)1439#define ISCSI_TMF_RESPONSE_TYPE_SHIFT 141440#elif defined(__LITTLE_ENDIAN)1441 u16 itt;1442#define ISCSI_TMF_RESPONSE_INDEX (0x3FFF<<0)1443#define ISCSI_TMF_RESPONSE_INDEX_SHIFT 01444#define ISCSI_TMF_RESPONSE_TYPE (0x3<<14)1445#define ISCSI_TMF_RESPONSE_TYPE_SHIFT 141446 u16 reserved7;1447#endif1448 u32 cq_req_sn;1449};1450 1451/*1452 * iSCSI Text CQE1453 */1454struct 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 01460#define ISCSI_TEXT_RESPONSE_CONT (0x1<<6)1461#define ISCSI_TEXT_RESPONSE_CONT_SHIFT 61462#define ISCSI_TEXT_RESPONSE_FINAL (0x1<<7)1463#define ISCSI_TEXT_RESPONSE_FINAL_SHIFT 71464 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 01470#define ISCSI_TEXT_RESPONSE_CONT (0x1<<6)1471#define ISCSI_TEXT_RESPONSE_CONT_SHIFT 61472#define ISCSI_TEXT_RESPONSE_FINAL (0x1<<7)1473#define ISCSI_TEXT_RESPONSE_FINAL_SHIFT 71474 u8 op_code;1475#endif1476 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#endif1490 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 01498#define ISCSI_TEXT_RESPONSE_TYPE (0x3<<14)1499#define ISCSI_TEXT_RESPONSE_TYPE_SHIFT 141500#elif defined(__LITTLE_ENDIAN)1501 u16 itt;1502#define ISCSI_TEXT_RESPONSE_INDEX (0x3FFF<<0)1503#define ISCSI_TEXT_RESPONSE_INDEX_SHIFT 01504#define ISCSI_TEXT_RESPONSE_TYPE (0x3<<14)1505#define ISCSI_TEXT_RESPONSE_TYPE_SHIFT 141506 u16 reserved7;1507#endif1508 u32 cq_req_sn;1509};1510 1511/*1512 * iSCSI CQE1513 */1514union 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__ */1527