brintos

brintos / linux-shallow public Read only

0
0
Text · 36.7 KiB · 19b3a97 Raw
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