12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526 |
- /* 57xx_iscsi_hsi.h: QLogic NetXtreme II iSCSI HSI.
- *
- * Copyright (c) 2006 - 2013 Broadcom Corporation
- * Copyright (c) 2014, QLogic Corporation
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation.
- *
- * Written by: Anil Veerabhadrappa ([email protected])
- * Previously Maintained by: Eddie Wai ([email protected])
- * Maintained by: [email protected]
- */
- #ifndef __57XX_ISCSI_HSI_LINUX_LE__
- #define __57XX_ISCSI_HSI_LINUX_LE__
- /*
- * iSCSI Async CQE
- */
- struct bnx2i_async_msg {
- #if defined(__BIG_ENDIAN)
- u8 op_code;
- u8 reserved1;
- u16 reserved0;
- #elif defined(__LITTLE_ENDIAN)
- u16 reserved0;
- u8 reserved1;
- u8 op_code;
- #endif
- u32 reserved2;
- u32 exp_cmd_sn;
- u32 max_cmd_sn;
- u32 reserved3[2];
- #if defined(__BIG_ENDIAN)
- u16 reserved5;
- u8 err_code;
- u8 reserved4;
- #elif defined(__LITTLE_ENDIAN)
- u8 reserved4;
- u8 err_code;
- u16 reserved5;
- #endif
- u32 reserved6;
- u32 lun[2];
- #if defined(__BIG_ENDIAN)
- u8 async_event;
- u8 async_vcode;
- u16 param1;
- #elif defined(__LITTLE_ENDIAN)
- u16 param1;
- u8 async_vcode;
- u8 async_event;
- #endif
- #if defined(__BIG_ENDIAN)
- u16 param2;
- u16 param3;
- #elif defined(__LITTLE_ENDIAN)
- u16 param3;
- u16 param2;
- #endif
- u32 reserved7[3];
- u32 cq_req_sn;
- };
- /*
- * iSCSI Buffer Descriptor (BD)
- */
- struct iscsi_bd {
- u32 buffer_addr_hi;
- u32 buffer_addr_lo;
- #if defined(__BIG_ENDIAN)
- u16 reserved0;
- u16 buffer_length;
- #elif defined(__LITTLE_ENDIAN)
- u16 buffer_length;
- u16 reserved0;
- #endif
- #if defined(__BIG_ENDIAN)
- u16 reserved3;
- u16 flags;
- #define ISCSI_BD_RESERVED1 (0x3F<<0)
- #define ISCSI_BD_RESERVED1_SHIFT 0
- #define ISCSI_BD_LAST_IN_BD_CHAIN (0x1<<6)
- #define ISCSI_BD_LAST_IN_BD_CHAIN_SHIFT 6
- #define ISCSI_BD_FIRST_IN_BD_CHAIN (0x1<<7)
- #define ISCSI_BD_FIRST_IN_BD_CHAIN_SHIFT 7
- #define ISCSI_BD_RESERVED2 (0xFF<<8)
- #define ISCSI_BD_RESERVED2_SHIFT 8
- #elif defined(__LITTLE_ENDIAN)
- u16 flags;
- #define ISCSI_BD_RESERVED1 (0x3F<<0)
- #define ISCSI_BD_RESERVED1_SHIFT 0
- #define ISCSI_BD_LAST_IN_BD_CHAIN (0x1<<6)
- #define ISCSI_BD_LAST_IN_BD_CHAIN_SHIFT 6
- #define ISCSI_BD_FIRST_IN_BD_CHAIN (0x1<<7)
- #define ISCSI_BD_FIRST_IN_BD_CHAIN_SHIFT 7
- #define ISCSI_BD_RESERVED2 (0xFF<<8)
- #define ISCSI_BD_RESERVED2_SHIFT 8
- u16 reserved3;
- #endif
- };
- /*
- * iSCSI Cleanup SQ WQE
- */
- struct bnx2i_cleanup_request {
- #if defined(__BIG_ENDIAN)
- u8 op_code;
- u8 reserved1;
- u16 reserved0;
- #elif defined(__LITTLE_ENDIAN)
- u16 reserved0;
- u8 reserved1;
- u8 op_code;
- #endif
- u32 reserved2[3];
- #if defined(__BIG_ENDIAN)
- u16 reserved3;
- u16 itt;
- #define ISCSI_CLEANUP_REQUEST_INDEX (0x3FFF<<0)
- #define ISCSI_CLEANUP_REQUEST_INDEX_SHIFT 0
- #define ISCSI_CLEANUP_REQUEST_TYPE (0x3<<14)
- #define ISCSI_CLEANUP_REQUEST_TYPE_SHIFT 14
- #elif defined(__LITTLE_ENDIAN)
- u16 itt;
- #define ISCSI_CLEANUP_REQUEST_INDEX (0x3FFF<<0)
- #define ISCSI_CLEANUP_REQUEST_INDEX_SHIFT 0
- #define ISCSI_CLEANUP_REQUEST_TYPE (0x3<<14)
- #define ISCSI_CLEANUP_REQUEST_TYPE_SHIFT 14
- u16 reserved3;
- #endif
- u32 reserved4[10];
- #if defined(__BIG_ENDIAN)
- u8 cq_index;
- u8 reserved6;
- u16 reserved5;
- #elif defined(__LITTLE_ENDIAN)
- u16 reserved5;
- u8 reserved6;
- u8 cq_index;
- #endif
- };
- /*
- * iSCSI Cleanup CQE
- */
- struct bnx2i_cleanup_response {
- #if defined(__BIG_ENDIAN)
- u8 op_code;
- u8 status;
- u16 reserved0;
- #elif defined(__LITTLE_ENDIAN)
- u16 reserved0;
- u8 status;
- u8 op_code;
- #endif
- u32 reserved1[3];
- u32 reserved2[2];
- #if defined(__BIG_ENDIAN)
- u16 reserved4;
- u8 err_code;
- u8 reserved3;
- #elif defined(__LITTLE_ENDIAN)
- u8 reserved3;
- u8 err_code;
- u16 reserved4;
- #endif
- u32 reserved5[7];
- #if defined(__BIG_ENDIAN)
- u16 reserved6;
- u16 itt;
- #define ISCSI_CLEANUP_RESPONSE_INDEX (0x3FFF<<0)
- #define ISCSI_CLEANUP_RESPONSE_INDEX_SHIFT 0
- #define ISCSI_CLEANUP_RESPONSE_TYPE (0x3<<14)
- #define ISCSI_CLEANUP_RESPONSE_TYPE_SHIFT 14
- #elif defined(__LITTLE_ENDIAN)
- u16 itt;
- #define ISCSI_CLEANUP_RESPONSE_INDEX (0x3FFF<<0)
- #define ISCSI_CLEANUP_RESPONSE_INDEX_SHIFT 0
- #define ISCSI_CLEANUP_RESPONSE_TYPE (0x3<<14)
- #define ISCSI_CLEANUP_RESPONSE_TYPE_SHIFT 14
- u16 reserved6;
- #endif
- u32 cq_req_sn;
- };
- /*
- * SCSI read/write SQ WQE
- */
- struct bnx2i_cmd_request {
- #if defined(__BIG_ENDIAN)
- u8 op_code;
- u8 op_attr;
- #define ISCSI_CMD_REQUEST_TASK_ATTR (0x7<<0)
- #define ISCSI_CMD_REQUEST_TASK_ATTR_SHIFT 0
- #define ISCSI_CMD_REQUEST_RESERVED1 (0x3<<3)
- #define ISCSI_CMD_REQUEST_RESERVED1_SHIFT 3
- #define ISCSI_CMD_REQUEST_WRITE (0x1<<5)
- #define ISCSI_CMD_REQUEST_WRITE_SHIFT 5
- #define ISCSI_CMD_REQUEST_READ (0x1<<6)
- #define ISCSI_CMD_REQUEST_READ_SHIFT 6
- #define ISCSI_CMD_REQUEST_FINAL (0x1<<7)
- #define ISCSI_CMD_REQUEST_FINAL_SHIFT 7
- u16 reserved0;
- #elif defined(__LITTLE_ENDIAN)
- u16 reserved0;
- u8 op_attr;
- #define ISCSI_CMD_REQUEST_TASK_ATTR (0x7<<0)
- #define ISCSI_CMD_REQUEST_TASK_ATTR_SHIFT 0
- #define ISCSI_CMD_REQUEST_RESERVED1 (0x3<<3)
- #define ISCSI_CMD_REQUEST_RESERVED1_SHIFT 3
- #define ISCSI_CMD_REQUEST_WRITE (0x1<<5)
- #define ISCSI_CMD_REQUEST_WRITE_SHIFT 5
- #define ISCSI_CMD_REQUEST_READ (0x1<<6)
- #define ISCSI_CMD_REQUEST_READ_SHIFT 6
- #define ISCSI_CMD_REQUEST_FINAL (0x1<<7)
- #define ISCSI_CMD_REQUEST_FINAL_SHIFT 7
- u8 op_code;
- #endif
- #if defined(__BIG_ENDIAN)
- u16 ud_buffer_offset;
- u16 sd_buffer_offset;
- #elif defined(__LITTLE_ENDIAN)
- u16 sd_buffer_offset;
- u16 ud_buffer_offset;
- #endif
- u32 lun[2];
- #if defined(__BIG_ENDIAN)
- u16 reserved2;
- u16 itt;
- #define ISCSI_CMD_REQUEST_INDEX (0x3FFF<<0)
- #define ISCSI_CMD_REQUEST_INDEX_SHIFT 0
- #define ISCSI_CMD_REQUEST_TYPE (0x3<<14)
- #define ISCSI_CMD_REQUEST_TYPE_SHIFT 14
- #elif defined(__LITTLE_ENDIAN)
- u16 itt;
- #define ISCSI_CMD_REQUEST_INDEX (0x3FFF<<0)
- #define ISCSI_CMD_REQUEST_INDEX_SHIFT 0
- #define ISCSI_CMD_REQUEST_TYPE (0x3<<14)
- #define ISCSI_CMD_REQUEST_TYPE_SHIFT 14
- u16 reserved2;
- #endif
- u32 total_data_transfer_length;
- u32 cmd_sn;
- u32 reserved3;
- u32 cdb[4];
- u32 zero_fill;
- u32 bd_list_addr_lo;
- u32 bd_list_addr_hi;
- #if defined(__BIG_ENDIAN)
- u8 cq_index;
- u8 sd_start_bd_index;
- u8 ud_start_bd_index;
- u8 num_bds;
- #elif defined(__LITTLE_ENDIAN)
- u8 num_bds;
- u8 ud_start_bd_index;
- u8 sd_start_bd_index;
- u8 cq_index;
- #endif
- };
- /*
- * task statistics for write response
- */
- struct bnx2i_write_resp_task_stat {
- #if defined(__BIG_ENDIAN)
- u16 num_r2ts;
- u16 num_data_outs;
- #elif defined(__LITTLE_ENDIAN)
- u16 num_data_outs;
- u16 num_r2ts;
- #endif
- };
- /*
- * task statistics for read response
- */
- struct bnx2i_read_resp_task_stat {
- #if defined(__BIG_ENDIAN)
- u16 reserved;
- u16 num_data_ins;
- #elif defined(__LITTLE_ENDIAN)
- u16 num_data_ins;
- u16 reserved;
- #endif
- };
- /*
- * task statistics for iSCSI cmd response
- */
- union bnx2i_cmd_resp_task_stat {
- struct bnx2i_write_resp_task_stat write_stat;
- struct bnx2i_read_resp_task_stat read_stat;
- };
- /*
- * SCSI Command CQE
- */
- struct bnx2i_cmd_response {
- #if defined(__BIG_ENDIAN)
- u8 op_code;
- u8 response_flags;
- #define ISCSI_CMD_RESPONSE_RESERVED0 (0x1<<0)
- #define ISCSI_CMD_RESPONSE_RESERVED0_SHIFT 0
- #define ISCSI_CMD_RESPONSE_RESIDUAL_UNDERFLOW (0x1<<1)
- #define ISCSI_CMD_RESPONSE_RESIDUAL_UNDERFLOW_SHIFT 1
- #define ISCSI_CMD_RESPONSE_RESIDUAL_OVERFLOW (0x1<<2)
- #define ISCSI_CMD_RESPONSE_RESIDUAL_OVERFLOW_SHIFT 2
- #define ISCSI_CMD_RESPONSE_BR_RESIDUAL_UNDERFLOW (0x1<<3)
- #define ISCSI_CMD_RESPONSE_BR_RESIDUAL_UNDERFLOW_SHIFT 3
- #define ISCSI_CMD_RESPONSE_BR_RESIDUAL_OVERFLOW (0x1<<4)
- #define ISCSI_CMD_RESPONSE_BR_RESIDUAL_OVERFLOW_SHIFT 4
- #define ISCSI_CMD_RESPONSE_RESERVED1 (0x7<<5)
- #define ISCSI_CMD_RESPONSE_RESERVED1_SHIFT 5
- u8 response;
- u8 status;
- #elif defined(__LITTLE_ENDIAN)
- u8 status;
- u8 response;
- u8 response_flags;
- #define ISCSI_CMD_RESPONSE_RESERVED0 (0x1<<0)
- #define ISCSI_CMD_RESPONSE_RESERVED0_SHIFT 0
- #define ISCSI_CMD_RESPONSE_RESIDUAL_UNDERFLOW (0x1<<1)
- #define ISCSI_CMD_RESPONSE_RESIDUAL_UNDERFLOW_SHIFT 1
- #define ISCSI_CMD_RESPONSE_RESIDUAL_OVERFLOW (0x1<<2)
- #define ISCSI_CMD_RESPONSE_RESIDUAL_OVERFLOW_SHIFT 2
- #define ISCSI_CMD_RESPONSE_BR_RESIDUAL_UNDERFLOW (0x1<<3)
- #define ISCSI_CMD_RESPONSE_BR_RESIDUAL_UNDERFLOW_SHIFT 3
- #define ISCSI_CMD_RESPONSE_BR_RESIDUAL_OVERFLOW (0x1<<4)
- #define ISCSI_CMD_RESPONSE_BR_RESIDUAL_OVERFLOW_SHIFT 4
- #define ISCSI_CMD_RESPONSE_RESERVED1 (0x7<<5)
- #define ISCSI_CMD_RESPONSE_RESERVED1_SHIFT 5
- u8 op_code;
- #endif
- u32 data_length;
- u32 exp_cmd_sn;
- u32 max_cmd_sn;
- u32 reserved2;
- u32 residual_count;
- #if defined(__BIG_ENDIAN)
- u16 reserved4;
- u8 err_code;
- u8 reserved3;
- #elif defined(__LITTLE_ENDIAN)
- u8 reserved3;
- u8 err_code;
- u16 reserved4;
- #endif
- u32 reserved5[5];
- union bnx2i_cmd_resp_task_stat task_stat;
- u32 reserved6;
- #if defined(__BIG_ENDIAN)
- u16 reserved7;
- u16 itt;
- #define ISCSI_CMD_RESPONSE_INDEX (0x3FFF<<0)
- #define ISCSI_CMD_RESPONSE_INDEX_SHIFT 0
- #define ISCSI_CMD_RESPONSE_TYPE (0x3<<14)
- #define ISCSI_CMD_RESPONSE_TYPE_SHIFT 14
- #elif defined(__LITTLE_ENDIAN)
- u16 itt;
- #define ISCSI_CMD_RESPONSE_INDEX (0x3FFF<<0)
- #define ISCSI_CMD_RESPONSE_INDEX_SHIFT 0
- #define ISCSI_CMD_RESPONSE_TYPE (0x3<<14)
- #define ISCSI_CMD_RESPONSE_TYPE_SHIFT 14
- u16 reserved7;
- #endif
- u32 cq_req_sn;
- };
- /*
- * firmware middle-path request SQ WQE
- */
- struct bnx2i_fw_mp_request {
- #if defined(__BIG_ENDIAN)
- u8 op_code;
- u8 op_attr;
- u16 hdr_opaque1;
- #elif defined(__LITTLE_ENDIAN)
- u16 hdr_opaque1;
- u8 op_attr;
- u8 op_code;
- #endif
- u32 data_length;
- u32 hdr_opaque2[2];
- #if defined(__BIG_ENDIAN)
- u16 reserved0;
- u16 itt;
- #define ISCSI_FW_MP_REQUEST_INDEX (0x3FFF<<0)
- #define ISCSI_FW_MP_REQUEST_INDEX_SHIFT 0
- #define ISCSI_FW_MP_REQUEST_TYPE (0x3<<14)
- #define ISCSI_FW_MP_REQUEST_TYPE_SHIFT 14
- #elif defined(__LITTLE_ENDIAN)
- u16 itt;
- #define ISCSI_FW_MP_REQUEST_INDEX (0x3FFF<<0)
- #define ISCSI_FW_MP_REQUEST_INDEX_SHIFT 0
- #define ISCSI_FW_MP_REQUEST_TYPE (0x3<<14)
- #define ISCSI_FW_MP_REQUEST_TYPE_SHIFT 14
- u16 reserved0;
- #endif
- u32 hdr_opaque3[4];
- u32 resp_bd_list_addr_lo;
- u32 resp_bd_list_addr_hi;
- u32 resp_buffer;
- #define ISCSI_FW_MP_REQUEST_RESP_BUFFER_LENGTH (0xFFFFFF<<0)
- #define ISCSI_FW_MP_REQUEST_RESP_BUFFER_LENGTH_SHIFT 0
- #define ISCSI_FW_MP_REQUEST_NUM_RESP_BDS (0xFF<<24)
- #define ISCSI_FW_MP_REQUEST_NUM_RESP_BDS_SHIFT 24
- #if defined(__BIG_ENDIAN)
- u16 reserved4;
- u8 reserved3;
- u8 flags;
- #define ISCSI_FW_MP_REQUEST_RESERVED1 (0x1<<0)
- #define ISCSI_FW_MP_REQUEST_RESERVED1_SHIFT 0
- #define ISCSI_FW_MP_REQUEST_LOCAL_COMPLETION (0x1<<1)
- #define ISCSI_FW_MP_REQUEST_LOCAL_COMPLETION_SHIFT 1
- #define ISCSI_FW_MP_REQUEST_UPDATE_EXP_STAT_SN (0x1<<2)
- #define ISCSI_FW_MP_REQUEST_UPDATE_EXP_STAT_SN_SHIFT 2
- #define ISCSI_FW_MP_REQUEST_RESERVED2 (0x1F<<3)
- #define ISCSI_FW_MP_REQUEST_RESERVED2_SHIFT 3
- #elif defined(__LITTLE_ENDIAN)
- u8 flags;
- #define ISCSI_FW_MP_REQUEST_RESERVED1 (0x1<<0)
- #define ISCSI_FW_MP_REQUEST_RESERVED1_SHIFT 0
- #define ISCSI_FW_MP_REQUEST_LOCAL_COMPLETION (0x1<<1)
- #define ISCSI_FW_MP_REQUEST_LOCAL_COMPLETION_SHIFT 1
- #define ISCSI_FW_MP_REQUEST_UPDATE_EXP_STAT_SN (0x1<<2)
- #define ISCSI_FW_MP_REQUEST_UPDATE_EXP_STAT_SN_SHIFT 2
- #define ISCSI_FW_MP_REQUEST_RESERVED2 (0x1F<<3)
- #define ISCSI_FW_MP_REQUEST_RESERVED2_SHIFT 3
- u8 reserved3;
- u16 reserved4;
- #endif
- u32 bd_list_addr_lo;
- u32 bd_list_addr_hi;
- #if defined(__BIG_ENDIAN)
- u8 cq_index;
- u8 reserved6;
- u8 reserved5;
- u8 num_bds;
- #elif defined(__LITTLE_ENDIAN)
- u8 num_bds;
- u8 reserved5;
- u8 reserved6;
- u8 cq_index;
- #endif
- };
- /*
- * firmware response - CQE: used only by firmware
- */
- struct bnx2i_fw_response {
- u32 hdr_dword1[2];
- u32 hdr_exp_cmd_sn;
- u32 hdr_max_cmd_sn;
- u32 hdr_ttt;
- u32 hdr_res_cnt;
- u32 cqe_flags;
- #define ISCSI_FW_RESPONSE_RESERVED2 (0xFF<<0)
- #define ISCSI_FW_RESPONSE_RESERVED2_SHIFT 0
- #define ISCSI_FW_RESPONSE_ERR_CODE (0xFF<<8)
- #define ISCSI_FW_RESPONSE_ERR_CODE_SHIFT 8
- #define ISCSI_FW_RESPONSE_RESERVED3 (0xFFFF<<16)
- #define ISCSI_FW_RESPONSE_RESERVED3_SHIFT 16
- u32 stat_sn;
- u32 hdr_dword2[2];
- u32 hdr_dword3[2];
- u32 task_stat;
- u32 reserved0;
- u32 hdr_itt;
- u32 cq_req_sn;
- };
- /*
- * iSCSI KCQ CQE parameters
- */
- union iscsi_kcqe_params {
- u32 reserved0[4];
- };
- /*
- * iSCSI KCQ CQE
- */
- struct iscsi_kcqe {
- u32 iscsi_conn_id;
- u32 completion_status;
- u32 iscsi_conn_context_id;
- union iscsi_kcqe_params params;
- #if defined(__BIG_ENDIAN)
- u8 flags;
- #define ISCSI_KCQE_RESERVED0 (0xF<<0)
- #define ISCSI_KCQE_RESERVED0_SHIFT 0
- #define ISCSI_KCQE_LAYER_CODE (0x7<<4)
- #define ISCSI_KCQE_LAYER_CODE_SHIFT 4
- #define ISCSI_KCQE_RESERVED1 (0x1<<7)
- #define ISCSI_KCQE_RESERVED1_SHIFT 7
- u8 op_code;
- u16 qe_self_seq;
- #elif defined(__LITTLE_ENDIAN)
- u16 qe_self_seq;
- u8 op_code;
- u8 flags;
- #define ISCSI_KCQE_RESERVED0 (0xF<<0)
- #define ISCSI_KCQE_RESERVED0_SHIFT 0
- #define ISCSI_KCQE_LAYER_CODE (0x7<<4)
- #define ISCSI_KCQE_LAYER_CODE_SHIFT 4
- #define ISCSI_KCQE_RESERVED1 (0x1<<7)
- #define ISCSI_KCQE_RESERVED1_SHIFT 7
- #endif
- };
- /*
- * iSCSI KWQE header
- */
- struct iscsi_kwqe_header {
- #if defined(__BIG_ENDIAN)
- u8 flags;
- #define ISCSI_KWQE_HEADER_RESERVED0 (0xF<<0)
- #define ISCSI_KWQE_HEADER_RESERVED0_SHIFT 0
- #define ISCSI_KWQE_HEADER_LAYER_CODE (0x7<<4)
- #define ISCSI_KWQE_HEADER_LAYER_CODE_SHIFT 4
- #define ISCSI_KWQE_HEADER_RESERVED1 (0x1<<7)
- #define ISCSI_KWQE_HEADER_RESERVED1_SHIFT 7
- u8 op_code;
- #elif defined(__LITTLE_ENDIAN)
- u8 op_code;
- u8 flags;
- #define ISCSI_KWQE_HEADER_RESERVED0 (0xF<<0)
- #define ISCSI_KWQE_HEADER_RESERVED0_SHIFT 0
- #define ISCSI_KWQE_HEADER_LAYER_CODE (0x7<<4)
- #define ISCSI_KWQE_HEADER_LAYER_CODE_SHIFT 4
- #define ISCSI_KWQE_HEADER_RESERVED1 (0x1<<7)
- #define ISCSI_KWQE_HEADER_RESERVED1_SHIFT 7
- #endif
- };
- /*
- * iSCSI firmware init request 1
- */
- struct iscsi_kwqe_init1 {
- #if defined(__BIG_ENDIAN)
- struct iscsi_kwqe_header hdr;
- u8 reserved0;
- u8 num_cqs;
- #elif defined(__LITTLE_ENDIAN)
- u8 num_cqs;
- u8 reserved0;
- struct iscsi_kwqe_header hdr;
- #endif
- u32 dummy_buffer_addr_lo;
- u32 dummy_buffer_addr_hi;
- #if defined(__BIG_ENDIAN)
- u16 num_ccells_per_conn;
- u16 num_tasks_per_conn;
- #elif defined(__LITTLE_ENDIAN)
- u16 num_tasks_per_conn;
- u16 num_ccells_per_conn;
- #endif
- #if defined(__BIG_ENDIAN)
- u16 sq_wqes_per_page;
- u16 sq_num_wqes;
- #elif defined(__LITTLE_ENDIAN)
- u16 sq_num_wqes;
- u16 sq_wqes_per_page;
- #endif
- #if defined(__BIG_ENDIAN)
- u8 cq_log_wqes_per_page;
- u8 flags;
- #define ISCSI_KWQE_INIT1_PAGE_SIZE (0xF<<0)
- #define ISCSI_KWQE_INIT1_PAGE_SIZE_SHIFT 0
- #define ISCSI_KWQE_INIT1_DELAYED_ACK_ENABLE (0x1<<4)
- #define ISCSI_KWQE_INIT1_DELAYED_ACK_ENABLE_SHIFT 4
- #define ISCSI_KWQE_INIT1_KEEP_ALIVE_ENABLE (0x1<<5)
- #define ISCSI_KWQE_INIT1_KEEP_ALIVE_ENABLE_SHIFT 5
- #define ISCSI_KWQE_INIT1_TIME_STAMPS_ENABLE (0x1<<6)
- #define ISCSI_KWQE_INIT1_TIME_STAMPS_ENABLE_SHIFT 6
- #define ISCSI_KWQE_INIT1_RESERVED1 (0x1<<7)
- #define ISCSI_KWQE_INIT1_RESERVED1_SHIFT 7
- u16 cq_num_wqes;
- #elif defined(__LITTLE_ENDIAN)
- u16 cq_num_wqes;
- u8 flags;
- #define ISCSI_KWQE_INIT1_PAGE_SIZE (0xF<<0)
- #define ISCSI_KWQE_INIT1_PAGE_SIZE_SHIFT 0
- #define ISCSI_KWQE_INIT1_DELAYED_ACK_ENABLE (0x1<<4)
- #define ISCSI_KWQE_INIT1_DELAYED_ACK_ENABLE_SHIFT 4
- #define ISCSI_KWQE_INIT1_KEEP_ALIVE_ENABLE (0x1<<5)
- #define ISCSI_KWQE_INIT1_KEEP_ALIVE_ENABLE_SHIFT 5
- #define ISCSI_KWQE_INIT1_TIME_STAMPS_ENABLE (0x1<<6)
- #define ISCSI_KWQE_INIT1_TIME_STAMPS_ENABLE_SHIFT 6
- #define ISCSI_KWQE_INIT1_RESERVED1 (0x1<<7)
- #define ISCSI_KWQE_INIT1_RESERVED1_SHIFT 7
- u8 cq_log_wqes_per_page;
- #endif
- #if defined(__BIG_ENDIAN)
- u16 cq_num_pages;
- u16 sq_num_pages;
- #elif defined(__LITTLE_ENDIAN)
- u16 sq_num_pages;
- u16 cq_num_pages;
- #endif
- #if defined(__BIG_ENDIAN)
- u16 rq_buffer_size;
- u16 rq_num_wqes;
- #elif defined(__LITTLE_ENDIAN)
- u16 rq_num_wqes;
- u16 rq_buffer_size;
- #endif
- };
- /*
- * iSCSI firmware init request 2
- */
- struct iscsi_kwqe_init2 {
- #if defined(__BIG_ENDIAN)
- struct iscsi_kwqe_header hdr;
- u16 max_cq_sqn;
- #elif defined(__LITTLE_ENDIAN)
- u16 max_cq_sqn;
- struct iscsi_kwqe_header hdr;
- #endif
- u32 error_bit_map[2];
- u32 reserved1[5];
- };
- /*
- * Initial iSCSI connection offload request 1
- */
- struct iscsi_kwqe_conn_offload1 {
- #if defined(__BIG_ENDIAN)
- struct iscsi_kwqe_header hdr;
- u16 iscsi_conn_id;
- #elif defined(__LITTLE_ENDIAN)
- u16 iscsi_conn_id;
- struct iscsi_kwqe_header hdr;
- #endif
- u32 sq_page_table_addr_lo;
- u32 sq_page_table_addr_hi;
- u32 cq_page_table_addr_lo;
- u32 cq_page_table_addr_hi;
- u32 reserved0[3];
- };
- /*
- * iSCSI Page Table Entry (PTE)
- */
- struct iscsi_pte {
- u32 hi;
- u32 lo;
- };
- /*
- * Initial iSCSI connection offload request 2
- */
- struct iscsi_kwqe_conn_offload2 {
- #if defined(__BIG_ENDIAN)
- struct iscsi_kwqe_header hdr;
- u16 reserved0;
- #elif defined(__LITTLE_ENDIAN)
- u16 reserved0;
- struct iscsi_kwqe_header hdr;
- #endif
- u32 rq_page_table_addr_lo;
- u32 rq_page_table_addr_hi;
- struct iscsi_pte sq_first_pte;
- struct iscsi_pte cq_first_pte;
- u32 num_additional_wqes;
- };
- /*
- * Initial iSCSI connection offload request 3
- */
- struct iscsi_kwqe_conn_offload3 {
- #if defined(__BIG_ENDIAN)
- struct iscsi_kwqe_header hdr;
- u16 reserved0;
- #elif defined(__LITTLE_ENDIAN)
- u16 reserved0;
- struct iscsi_kwqe_header hdr;
- #endif
- u32 reserved1;
- struct iscsi_pte qp_first_pte[3];
- };
- /*
- * iSCSI connection update request
- */
- struct iscsi_kwqe_conn_update {
- #if defined(__BIG_ENDIAN)
- struct iscsi_kwqe_header hdr;
- u16 reserved0;
- #elif defined(__LITTLE_ENDIAN)
- u16 reserved0;
- struct iscsi_kwqe_header hdr;
- #endif
- #if defined(__BIG_ENDIAN)
- u8 session_error_recovery_level;
- u8 max_outstanding_r2ts;
- u8 reserved2;
- u8 conn_flags;
- #define ISCSI_KWQE_CONN_UPDATE_HEADER_DIGEST (0x1<<0)
- #define ISCSI_KWQE_CONN_UPDATE_HEADER_DIGEST_SHIFT 0
- #define ISCSI_KWQE_CONN_UPDATE_DATA_DIGEST (0x1<<1)
- #define ISCSI_KWQE_CONN_UPDATE_DATA_DIGEST_SHIFT 1
- #define ISCSI_KWQE_CONN_UPDATE_INITIAL_R2T (0x1<<2)
- #define ISCSI_KWQE_CONN_UPDATE_INITIAL_R2T_SHIFT 2
- #define ISCSI_KWQE_CONN_UPDATE_IMMEDIATE_DATA (0x1<<3)
- #define ISCSI_KWQE_CONN_UPDATE_IMMEDIATE_DATA_SHIFT 3
- #define ISCSI_KWQE_CONN_UPDATE_OOO_SUPPORT_MODE (0x3<<4)
- #define ISCSI_KWQE_CONN_UPDATE_OOO_SUPPORT_MODE_SHIFT 4
- #define ISCSI_KWQE_CONN_UPDATE_RESERVED1 (0x3<<6)
- #define ISCSI_KWQE_CONN_UPDATE_RESERVED1_SHIFT 6
- #elif defined(__LITTLE_ENDIAN)
- u8 conn_flags;
- #define ISCSI_KWQE_CONN_UPDATE_HEADER_DIGEST (0x1<<0)
- #define ISCSI_KWQE_CONN_UPDATE_HEADER_DIGEST_SHIFT 0
- #define ISCSI_KWQE_CONN_UPDATE_DATA_DIGEST (0x1<<1)
- #define ISCSI_KWQE_CONN_UPDATE_DATA_DIGEST_SHIFT 1
- #define ISCSI_KWQE_CONN_UPDATE_INITIAL_R2T (0x1<<2)
- #define ISCSI_KWQE_CONN_UPDATE_INITIAL_R2T_SHIFT 2
- #define ISCSI_KWQE_CONN_UPDATE_IMMEDIATE_DATA (0x1<<3)
- #define ISCSI_KWQE_CONN_UPDATE_IMMEDIATE_DATA_SHIFT 3
- #define ISCSI_KWQE_CONN_UPDATE_OOO_SUPPORT_MODE (0x3<<4)
- #define ISCSI_KWQE_CONN_UPDATE_OOO_SUPPORT_MODE_SHIFT 4
- #define ISCSI_KWQE_CONN_UPDATE_RESERVED1 (0x3<<6)
- #define ISCSI_KWQE_CONN_UPDATE_RESERVED1_SHIFT 6
- u8 reserved2;
- u8 max_outstanding_r2ts;
- u8 session_error_recovery_level;
- #endif
- u32 context_id;
- u32 max_send_pdu_length;
- u32 max_recv_pdu_length;
- u32 first_burst_length;
- u32 max_burst_length;
- u32 exp_stat_sn;
- };
- /*
- * iSCSI destroy connection request
- */
- struct iscsi_kwqe_conn_destroy {
- #if defined(__BIG_ENDIAN)
- struct iscsi_kwqe_header hdr;
- u16 reserved0;
- #elif defined(__LITTLE_ENDIAN)
- u16 reserved0;
- struct iscsi_kwqe_header hdr;
- #endif
- u32 context_id;
- u32 reserved1[6];
- };
- /*
- * iSCSI KWQ WQE
- */
- union iscsi_kwqe {
- struct iscsi_kwqe_init1 init1;
- struct iscsi_kwqe_init2 init2;
- struct iscsi_kwqe_conn_offload1 conn_offload1;
- struct iscsi_kwqe_conn_offload2 conn_offload2;
- struct iscsi_kwqe_conn_update conn_update;
- struct iscsi_kwqe_conn_destroy conn_destroy;
- };
- /*
- * iSCSI Login SQ WQE
- */
- struct bnx2i_login_request {
- #if defined(__BIG_ENDIAN)
- u8 op_code;
- u8 op_attr;
- #define ISCSI_LOGIN_REQUEST_NEXT_STAGE (0x3<<0)
- #define ISCSI_LOGIN_REQUEST_NEXT_STAGE_SHIFT 0
- #define ISCSI_LOGIN_REQUEST_CURRENT_STAGE (0x3<<2)
- #define ISCSI_LOGIN_REQUEST_CURRENT_STAGE_SHIFT 2
- #define ISCSI_LOGIN_REQUEST_RESERVED0 (0x3<<4)
- #define ISCSI_LOGIN_REQUEST_RESERVED0_SHIFT 4
- #define ISCSI_LOGIN_REQUEST_CONT (0x1<<6)
- #define ISCSI_LOGIN_REQUEST_CONT_SHIFT 6
- #define ISCSI_LOGIN_REQUEST_TRANSIT (0x1<<7)
- #define ISCSI_LOGIN_REQUEST_TRANSIT_SHIFT 7
- u8 version_max;
- u8 version_min;
- #elif defined(__LITTLE_ENDIAN)
- u8 version_min;
- u8 version_max;
- u8 op_attr;
- #define ISCSI_LOGIN_REQUEST_NEXT_STAGE (0x3<<0)
- #define ISCSI_LOGIN_REQUEST_NEXT_STAGE_SHIFT 0
- #define ISCSI_LOGIN_REQUEST_CURRENT_STAGE (0x3<<2)
- #define ISCSI_LOGIN_REQUEST_CURRENT_STAGE_SHIFT 2
- #define ISCSI_LOGIN_REQUEST_RESERVED0 (0x3<<4)
- #define ISCSI_LOGIN_REQUEST_RESERVED0_SHIFT 4
- #define ISCSI_LOGIN_REQUEST_CONT (0x1<<6)
- #define ISCSI_LOGIN_REQUEST_CONT_SHIFT 6
- #define ISCSI_LOGIN_REQUEST_TRANSIT (0x1<<7)
- #define ISCSI_LOGIN_REQUEST_TRANSIT_SHIFT 7
- u8 op_code;
- #endif
- u32 data_length;
- u32 isid_lo;
- #if defined(__BIG_ENDIAN)
- u16 isid_hi;
- u16 tsih;
- #elif defined(__LITTLE_ENDIAN)
- u16 tsih;
- u16 isid_hi;
- #endif
- #if defined(__BIG_ENDIAN)
- u16 reserved2;
- u16 itt;
- #define ISCSI_LOGIN_REQUEST_INDEX (0x3FFF<<0)
- #define ISCSI_LOGIN_REQUEST_INDEX_SHIFT 0
- #define ISCSI_LOGIN_REQUEST_TYPE (0x3<<14)
- #define ISCSI_LOGIN_REQUEST_TYPE_SHIFT 14
- #elif defined(__LITTLE_ENDIAN)
- u16 itt;
- #define ISCSI_LOGIN_REQUEST_INDEX (0x3FFF<<0)
- #define ISCSI_LOGIN_REQUEST_INDEX_SHIFT 0
- #define ISCSI_LOGIN_REQUEST_TYPE (0x3<<14)
- #define ISCSI_LOGIN_REQUEST_TYPE_SHIFT 14
- u16 reserved2;
- #endif
- #if defined(__BIG_ENDIAN)
- u16 cid;
- u16 reserved3;
- #elif defined(__LITTLE_ENDIAN)
- u16 reserved3;
- u16 cid;
- #endif
- u32 cmd_sn;
- u32 exp_stat_sn;
- u32 reserved4;
- u32 resp_bd_list_addr_lo;
- u32 resp_bd_list_addr_hi;
- u32 resp_buffer;
- #define ISCSI_LOGIN_REQUEST_RESP_BUFFER_LENGTH (0xFFFFFF<<0)
- #define ISCSI_LOGIN_REQUEST_RESP_BUFFER_LENGTH_SHIFT 0
- #define ISCSI_LOGIN_REQUEST_NUM_RESP_BDS (0xFF<<24)
- #define ISCSI_LOGIN_REQUEST_NUM_RESP_BDS_SHIFT 24
- #if defined(__BIG_ENDIAN)
- u16 reserved8;
- u8 reserved7;
- u8 flags;
- #define ISCSI_LOGIN_REQUEST_RESERVED5 (0x3<<0)
- #define ISCSI_LOGIN_REQUEST_RESERVED5_SHIFT 0
- #define ISCSI_LOGIN_REQUEST_UPDATE_EXP_STAT_SN (0x1<<2)
- #define ISCSI_LOGIN_REQUEST_UPDATE_EXP_STAT_SN_SHIFT 2
- #define ISCSI_LOGIN_REQUEST_RESERVED6 (0x1F<<3)
- #define ISCSI_LOGIN_REQUEST_RESERVED6_SHIFT 3
- #elif defined(__LITTLE_ENDIAN)
- u8 flags;
- #define ISCSI_LOGIN_REQUEST_RESERVED5 (0x3<<0)
- #define ISCSI_LOGIN_REQUEST_RESERVED5_SHIFT 0
- #define ISCSI_LOGIN_REQUEST_UPDATE_EXP_STAT_SN (0x1<<2)
- #define ISCSI_LOGIN_REQUEST_UPDATE_EXP_STAT_SN_SHIFT 2
- #define ISCSI_LOGIN_REQUEST_RESERVED6 (0x1F<<3)
- #define ISCSI_LOGIN_REQUEST_RESERVED6_SHIFT 3
- u8 reserved7;
- u16 reserved8;
- #endif
- u32 bd_list_addr_lo;
- u32 bd_list_addr_hi;
- #if defined(__BIG_ENDIAN)
- u8 cq_index;
- u8 reserved10;
- u8 reserved9;
- u8 num_bds;
- #elif defined(__LITTLE_ENDIAN)
- u8 num_bds;
- u8 reserved9;
- u8 reserved10;
- u8 cq_index;
- #endif
- };
- /*
- * iSCSI Login CQE
- */
- struct bnx2i_login_response {
- #if defined(__BIG_ENDIAN)
- u8 op_code;
- u8 response_flags;
- #define ISCSI_LOGIN_RESPONSE_NEXT_STAGE (0x3<<0)
- #define ISCSI_LOGIN_RESPONSE_NEXT_STAGE_SHIFT 0
- #define ISCSI_LOGIN_RESPONSE_CURRENT_STAGE (0x3<<2)
- #define ISCSI_LOGIN_RESPONSE_CURRENT_STAGE_SHIFT 2
- #define ISCSI_LOGIN_RESPONSE_RESERVED0 (0x3<<4)
- #define ISCSI_LOGIN_RESPONSE_RESERVED0_SHIFT 4
- #define ISCSI_LOGIN_RESPONSE_CONT (0x1<<6)
- #define ISCSI_LOGIN_RESPONSE_CONT_SHIFT 6
- #define ISCSI_LOGIN_RESPONSE_TRANSIT (0x1<<7)
- #define ISCSI_LOGIN_RESPONSE_TRANSIT_SHIFT 7
- u8 version_max;
- u8 version_active;
- #elif defined(__LITTLE_ENDIAN)
- u8 version_active;
- u8 version_max;
- u8 response_flags;
- #define ISCSI_LOGIN_RESPONSE_NEXT_STAGE (0x3<<0)
- #define ISCSI_LOGIN_RESPONSE_NEXT_STAGE_SHIFT 0
- #define ISCSI_LOGIN_RESPONSE_CURRENT_STAGE (0x3<<2)
- #define ISCSI_LOGIN_RESPONSE_CURRENT_STAGE_SHIFT 2
- #define ISCSI_LOGIN_RESPONSE_RESERVED0 (0x3<<4)
- #define ISCSI_LOGIN_RESPONSE_RESERVED0_SHIFT 4
- #define ISCSI_LOGIN_RESPONSE_CONT (0x1<<6)
- #define ISCSI_LOGIN_RESPONSE_CONT_SHIFT 6
- #define ISCSI_LOGIN_RESPONSE_TRANSIT (0x1<<7)
- #define ISCSI_LOGIN_RESPONSE_TRANSIT_SHIFT 7
- u8 op_code;
- #endif
- u32 data_length;
- u32 exp_cmd_sn;
- u32 max_cmd_sn;
- u32 reserved1[2];
- #if defined(__BIG_ENDIAN)
- u16 reserved3;
- u8 err_code;
- u8 reserved2;
- #elif defined(__LITTLE_ENDIAN)
- u8 reserved2;
- u8 err_code;
- u16 reserved3;
- #endif
- u32 stat_sn;
- u32 isid_lo;
- #if defined(__BIG_ENDIAN)
- u16 isid_hi;
- u16 tsih;
- #elif defined(__LITTLE_ENDIAN)
- u16 tsih;
- u16 isid_hi;
- #endif
- #if defined(__BIG_ENDIAN)
- u8 status_class;
- u8 status_detail;
- u16 reserved4;
- #elif defined(__LITTLE_ENDIAN)
- u16 reserved4;
- u8 status_detail;
- u8 status_class;
- #endif
- u32 reserved5[3];
- #if defined(__BIG_ENDIAN)
- u16 reserved6;
- u16 itt;
- #define ISCSI_LOGIN_RESPONSE_INDEX (0x3FFF<<0)
- #define ISCSI_LOGIN_RESPONSE_INDEX_SHIFT 0
- #define ISCSI_LOGIN_RESPONSE_TYPE (0x3<<14)
- #define ISCSI_LOGIN_RESPONSE_TYPE_SHIFT 14
- #elif defined(__LITTLE_ENDIAN)
- u16 itt;
- #define ISCSI_LOGIN_RESPONSE_INDEX (0x3FFF<<0)
- #define ISCSI_LOGIN_RESPONSE_INDEX_SHIFT 0
- #define ISCSI_LOGIN_RESPONSE_TYPE (0x3<<14)
- #define ISCSI_LOGIN_RESPONSE_TYPE_SHIFT 14
- u16 reserved6;
- #endif
- u32 cq_req_sn;
- };
- /*
- * iSCSI Logout SQ WQE
- */
- struct bnx2i_logout_request {
- #if defined(__BIG_ENDIAN)
- u8 op_code;
- u8 op_attr;
- #define ISCSI_LOGOUT_REQUEST_REASON (0x7F<<0)
- #define ISCSI_LOGOUT_REQUEST_REASON_SHIFT 0
- #define ISCSI_LOGOUT_REQUEST_ALWAYS_ONE (0x1<<7)
- #define ISCSI_LOGOUT_REQUEST_ALWAYS_ONE_SHIFT 7
- u16 reserved0;
- #elif defined(__LITTLE_ENDIAN)
- u16 reserved0;
- u8 op_attr;
- #define ISCSI_LOGOUT_REQUEST_REASON (0x7F<<0)
- #define ISCSI_LOGOUT_REQUEST_REASON_SHIFT 0
- #define ISCSI_LOGOUT_REQUEST_ALWAYS_ONE (0x1<<7)
- #define ISCSI_LOGOUT_REQUEST_ALWAYS_ONE_SHIFT 7
- u8 op_code;
- #endif
- u32 data_length;
- u32 reserved1[2];
- #if defined(__BIG_ENDIAN)
- u16 reserved2;
- u16 itt;
- #define ISCSI_LOGOUT_REQUEST_INDEX (0x3FFF<<0)
- #define ISCSI_LOGOUT_REQUEST_INDEX_SHIFT 0
- #define ISCSI_LOGOUT_REQUEST_TYPE (0x3<<14)
- #define ISCSI_LOGOUT_REQUEST_TYPE_SHIFT 14
- #elif defined(__LITTLE_ENDIAN)
- u16 itt;
- #define ISCSI_LOGOUT_REQUEST_INDEX (0x3FFF<<0)
- #define ISCSI_LOGOUT_REQUEST_INDEX_SHIFT 0
- #define ISCSI_LOGOUT_REQUEST_TYPE (0x3<<14)
- #define ISCSI_LOGOUT_REQUEST_TYPE_SHIFT 14
- u16 reserved2;
- #endif
- #if defined(__BIG_ENDIAN)
- u16 cid;
- u16 reserved3;
- #elif defined(__LITTLE_ENDIAN)
- u16 reserved3;
- u16 cid;
- #endif
- u32 cmd_sn;
- u32 reserved4[5];
- u32 zero_fill;
- u32 bd_list_addr_lo;
- u32 bd_list_addr_hi;
- #if defined(__BIG_ENDIAN)
- u8 cq_index;
- u8 reserved6;
- u8 reserved5;
- u8 num_bds;
- #elif defined(__LITTLE_ENDIAN)
- u8 num_bds;
- u8 reserved5;
- u8 reserved6;
- u8 cq_index;
- #endif
- };
- /*
- * iSCSI Logout CQE
- */
- struct bnx2i_logout_response {
- #if defined(__BIG_ENDIAN)
- u8 op_code;
- u8 reserved1;
- u8 response;
- u8 reserved0;
- #elif defined(__LITTLE_ENDIAN)
- u8 reserved0;
- u8 response;
- u8 reserved1;
- u8 op_code;
- #endif
- u32 reserved2;
- u32 exp_cmd_sn;
- u32 max_cmd_sn;
- u32 reserved3[2];
- #if defined(__BIG_ENDIAN)
- u16 reserved5;
- u8 err_code;
- u8 reserved4;
- #elif defined(__LITTLE_ENDIAN)
- u8 reserved4;
- u8 err_code;
- u16 reserved5;
- #endif
- u32 reserved6[3];
- #if defined(__BIG_ENDIAN)
- u16 time_to_wait;
- u16 time_to_retain;
- #elif defined(__LITTLE_ENDIAN)
- u16 time_to_retain;
- u16 time_to_wait;
- #endif
- u32 reserved7[3];
- #if defined(__BIG_ENDIAN)
- u16 reserved8;
- u16 itt;
- #define ISCSI_LOGOUT_RESPONSE_INDEX (0x3FFF<<0)
- #define ISCSI_LOGOUT_RESPONSE_INDEX_SHIFT 0
- #define ISCSI_LOGOUT_RESPONSE_TYPE (0x3<<14)
- #define ISCSI_LOGOUT_RESPONSE_TYPE_SHIFT 14
- #elif defined(__LITTLE_ENDIAN)
- u16 itt;
- #define ISCSI_LOGOUT_RESPONSE_INDEX (0x3FFF<<0)
- #define ISCSI_LOGOUT_RESPONSE_INDEX_SHIFT 0
- #define ISCSI_LOGOUT_RESPONSE_TYPE (0x3<<14)
- #define ISCSI_LOGOUT_RESPONSE_TYPE_SHIFT 14
- u16 reserved8;
- #endif
- u32 cq_req_sn;
- };
- /*
- * iSCSI Nop-In CQE
- */
- struct bnx2i_nop_in_msg {
- #if defined(__BIG_ENDIAN)
- u8 op_code;
- u8 reserved1;
- u16 reserved0;
- #elif defined(__LITTLE_ENDIAN)
- u16 reserved0;
- u8 reserved1;
- u8 op_code;
- #endif
- u32 data_length;
- u32 exp_cmd_sn;
- u32 max_cmd_sn;
- u32 ttt;
- u32 reserved2;
- #if defined(__BIG_ENDIAN)
- u16 reserved4;
- u8 err_code;
- u8 reserved3;
- #elif defined(__LITTLE_ENDIAN)
- u8 reserved3;
- u8 err_code;
- u16 reserved4;
- #endif
- u32 reserved5;
- u32 lun[2];
- u32 reserved6[4];
- #if defined(__BIG_ENDIAN)
- u16 reserved7;
- u16 itt;
- #define ISCSI_NOP_IN_MSG_INDEX (0x3FFF<<0)
- #define ISCSI_NOP_IN_MSG_INDEX_SHIFT 0
- #define ISCSI_NOP_IN_MSG_TYPE (0x3<<14)
- #define ISCSI_NOP_IN_MSG_TYPE_SHIFT 14
- #elif defined(__LITTLE_ENDIAN)
- u16 itt;
- #define ISCSI_NOP_IN_MSG_INDEX (0x3FFF<<0)
- #define ISCSI_NOP_IN_MSG_INDEX_SHIFT 0
- #define ISCSI_NOP_IN_MSG_TYPE (0x3<<14)
- #define ISCSI_NOP_IN_MSG_TYPE_SHIFT 14
- u16 reserved7;
- #endif
- u32 cq_req_sn;
- };
- /*
- * iSCSI NOP-OUT SQ WQE
- */
- struct bnx2i_nop_out_request {
- #if defined(__BIG_ENDIAN)
- u8 op_code;
- u8 op_attr;
- #define ISCSI_NOP_OUT_REQUEST_RESERVED1 (0x7F<<0)
- #define ISCSI_NOP_OUT_REQUEST_RESERVED1_SHIFT 0
- #define ISCSI_NOP_OUT_REQUEST_ALWAYS_ONE (0x1<<7)
- #define ISCSI_NOP_OUT_REQUEST_ALWAYS_ONE_SHIFT 7
- u16 reserved0;
- #elif defined(__LITTLE_ENDIAN)
- u16 reserved0;
- u8 op_attr;
- #define ISCSI_NOP_OUT_REQUEST_RESERVED1 (0x7F<<0)
- #define ISCSI_NOP_OUT_REQUEST_RESERVED1_SHIFT 0
- #define ISCSI_NOP_OUT_REQUEST_ALWAYS_ONE (0x1<<7)
- #define ISCSI_NOP_OUT_REQUEST_ALWAYS_ONE_SHIFT 7
- u8 op_code;
- #endif
- u32 data_length;
- u32 lun[2];
- #if defined(__BIG_ENDIAN)
- u16 reserved2;
- u16 itt;
- #define ISCSI_NOP_OUT_REQUEST_INDEX (0x3FFF<<0)
- #define ISCSI_NOP_OUT_REQUEST_INDEX_SHIFT 0
- #define ISCSI_NOP_OUT_REQUEST_TYPE (0x3<<14)
- #define ISCSI_NOP_OUT_REQUEST_TYPE_SHIFT 14
- #elif defined(__LITTLE_ENDIAN)
- u16 itt;
- #define ISCSI_NOP_OUT_REQUEST_INDEX (0x3FFF<<0)
- #define ISCSI_NOP_OUT_REQUEST_INDEX_SHIFT 0
- #define ISCSI_NOP_OUT_REQUEST_TYPE (0x3<<14)
- #define ISCSI_NOP_OUT_REQUEST_TYPE_SHIFT 14
- u16 reserved2;
- #endif
- u32 ttt;
- u32 cmd_sn;
- u32 reserved3[2];
- u32 resp_bd_list_addr_lo;
- u32 resp_bd_list_addr_hi;
- u32 resp_buffer;
- #define ISCSI_NOP_OUT_REQUEST_RESP_BUFFER_LENGTH (0xFFFFFF<<0)
- #define ISCSI_NOP_OUT_REQUEST_RESP_BUFFER_LENGTH_SHIFT 0
- #define ISCSI_NOP_OUT_REQUEST_NUM_RESP_BDS (0xFF<<24)
- #define ISCSI_NOP_OUT_REQUEST_NUM_RESP_BDS_SHIFT 24
- #if defined(__BIG_ENDIAN)
- u16 reserved7;
- u8 reserved6;
- u8 flags;
- #define ISCSI_NOP_OUT_REQUEST_RESERVED4 (0x1<<0)
- #define ISCSI_NOP_OUT_REQUEST_RESERVED4_SHIFT 0
- #define ISCSI_NOP_OUT_REQUEST_LOCAL_COMPLETION (0x1<<1)
- #define ISCSI_NOP_OUT_REQUEST_LOCAL_COMPLETION_SHIFT 1
- #define ISCSI_NOP_OUT_REQUEST_ZERO_FILL (0x3F<<2)
- #define ISCSI_NOP_OUT_REQUEST_ZERO_FILL_SHIFT 2
- #elif defined(__LITTLE_ENDIAN)
- u8 flags;
- #define ISCSI_NOP_OUT_REQUEST_RESERVED4 (0x1<<0)
- #define ISCSI_NOP_OUT_REQUEST_RESERVED4_SHIFT 0
- #define ISCSI_NOP_OUT_REQUEST_LOCAL_COMPLETION (0x1<<1)
- #define ISCSI_NOP_OUT_REQUEST_LOCAL_COMPLETION_SHIFT 1
- #define ISCSI_NOP_OUT_REQUEST_ZERO_FILL (0x3F<<2)
- #define ISCSI_NOP_OUT_REQUEST_ZERO_FILL_SHIFT 2
- u8 reserved6;
- u16 reserved7;
- #endif
- u32 bd_list_addr_lo;
- u32 bd_list_addr_hi;
- #if defined(__BIG_ENDIAN)
- u8 cq_index;
- u8 reserved9;
- u8 reserved8;
- u8 num_bds;
- #elif defined(__LITTLE_ENDIAN)
- u8 num_bds;
- u8 reserved8;
- u8 reserved9;
- u8 cq_index;
- #endif
- };
- /*
- * iSCSI Reject CQE
- */
- struct bnx2i_reject_msg {
- #if defined(__BIG_ENDIAN)
- u8 op_code;
- u8 reserved1;
- u8 reason;
- u8 reserved0;
- #elif defined(__LITTLE_ENDIAN)
- u8 reserved0;
- u8 reason;
- u8 reserved1;
- u8 op_code;
- #endif
- u32 data_length;
- u32 exp_cmd_sn;
- u32 max_cmd_sn;
- u32 reserved2[2];
- #if defined(__BIG_ENDIAN)
- u16 reserved4;
- u8 err_code;
- u8 reserved3;
- #elif defined(__LITTLE_ENDIAN)
- u8 reserved3;
- u8 err_code;
- u16 reserved4;
- #endif
- u32 reserved5[8];
- u32 cq_req_sn;
- };
- /*
- * bnx2i iSCSI TMF SQ WQE
- */
- struct bnx2i_tmf_request {
- #if defined(__BIG_ENDIAN)
- u8 op_code;
- u8 op_attr;
- #define ISCSI_TMF_REQUEST_FUNCTION (0x7F<<0)
- #define ISCSI_TMF_REQUEST_FUNCTION_SHIFT 0
- #define ISCSI_TMF_REQUEST_ALWAYS_ONE (0x1<<7)
- #define ISCSI_TMF_REQUEST_ALWAYS_ONE_SHIFT 7
- u16 reserved0;
- #elif defined(__LITTLE_ENDIAN)
- u16 reserved0;
- u8 op_attr;
- #define ISCSI_TMF_REQUEST_FUNCTION (0x7F<<0)
- #define ISCSI_TMF_REQUEST_FUNCTION_SHIFT 0
- #define ISCSI_TMF_REQUEST_ALWAYS_ONE (0x1<<7)
- #define ISCSI_TMF_REQUEST_ALWAYS_ONE_SHIFT 7
- u8 op_code;
- #endif
- u32 data_length;
- u32 lun[2];
- #if defined(__BIG_ENDIAN)
- u16 reserved1;
- u16 itt;
- #define ISCSI_TMF_REQUEST_INDEX (0x3FFF<<0)
- #define ISCSI_TMF_REQUEST_INDEX_SHIFT 0
- #define ISCSI_TMF_REQUEST_TYPE (0x3<<14)
- #define ISCSI_TMF_REQUEST_TYPE_SHIFT 14
- #elif defined(__LITTLE_ENDIAN)
- u16 itt;
- #define ISCSI_TMF_REQUEST_INDEX (0x3FFF<<0)
- #define ISCSI_TMF_REQUEST_INDEX_SHIFT 0
- #define ISCSI_TMF_REQUEST_TYPE (0x3<<14)
- #define ISCSI_TMF_REQUEST_TYPE_SHIFT 14
- u16 reserved1;
- #endif
- u32 ref_itt;
- u32 cmd_sn;
- u32 reserved2;
- u32 ref_cmd_sn;
- u32 reserved3[3];
- u32 zero_fill;
- u32 bd_list_addr_lo;
- u32 bd_list_addr_hi;
- #if defined(__BIG_ENDIAN)
- u8 cq_index;
- u8 reserved5;
- u8 reserved4;
- u8 num_bds;
- #elif defined(__LITTLE_ENDIAN)
- u8 num_bds;
- u8 reserved4;
- u8 reserved5;
- u8 cq_index;
- #endif
- };
- /*
- * iSCSI Text SQ WQE
- */
- struct bnx2i_text_request {
- #if defined(__BIG_ENDIAN)
- u8 op_code;
- u8 op_attr;
- #define ISCSI_TEXT_REQUEST_RESERVED1 (0x3F<<0)
- #define ISCSI_TEXT_REQUEST_RESERVED1_SHIFT 0
- #define ISCSI_TEXT_REQUEST_CONT (0x1<<6)
- #define ISCSI_TEXT_REQUEST_CONT_SHIFT 6
- #define ISCSI_TEXT_REQUEST_FINAL (0x1<<7)
- #define ISCSI_TEXT_REQUEST_FINAL_SHIFT 7
- u16 reserved0;
- #elif defined(__LITTLE_ENDIAN)
- u16 reserved0;
- u8 op_attr;
- #define ISCSI_TEXT_REQUEST_RESERVED1 (0x3F<<0)
- #define ISCSI_TEXT_REQUEST_RESERVED1_SHIFT 0
- #define ISCSI_TEXT_REQUEST_CONT (0x1<<6)
- #define ISCSI_TEXT_REQUEST_CONT_SHIFT 6
- #define ISCSI_TEXT_REQUEST_FINAL (0x1<<7)
- #define ISCSI_TEXT_REQUEST_FINAL_SHIFT 7
- u8 op_code;
- #endif
- u32 data_length;
- u32 lun[2];
- #if defined(__BIG_ENDIAN)
- u16 reserved3;
- u16 itt;
- #define ISCSI_TEXT_REQUEST_INDEX (0x3FFF<<0)
- #define ISCSI_TEXT_REQUEST_INDEX_SHIFT 0
- #define ISCSI_TEXT_REQUEST_TYPE (0x3<<14)
- #define ISCSI_TEXT_REQUEST_TYPE_SHIFT 14
- #elif defined(__LITTLE_ENDIAN)
- u16 itt;
- #define ISCSI_TEXT_REQUEST_INDEX (0x3FFF<<0)
- #define ISCSI_TEXT_REQUEST_INDEX_SHIFT 0
- #define ISCSI_TEXT_REQUEST_TYPE (0x3<<14)
- #define ISCSI_TEXT_REQUEST_TYPE_SHIFT 14
- u16 reserved3;
- #endif
- u32 ttt;
- u32 cmd_sn;
- u32 reserved4[2];
- u32 resp_bd_list_addr_lo;
- u32 resp_bd_list_addr_hi;
- u32 resp_buffer;
- #define ISCSI_TEXT_REQUEST_RESP_BUFFER_LENGTH (0xFFFFFF<<0)
- #define ISCSI_TEXT_REQUEST_RESP_BUFFER_LENGTH_SHIFT 0
- #define ISCSI_TEXT_REQUEST_NUM_RESP_BDS (0xFF<<24)
- #define ISCSI_TEXT_REQUEST_NUM_RESP_BDS_SHIFT 24
- u32 zero_fill;
- u32 bd_list_addr_lo;
- u32 bd_list_addr_hi;
- #if defined(__BIG_ENDIAN)
- u8 cq_index;
- u8 reserved7;
- u8 reserved6;
- u8 num_bds;
- #elif defined(__LITTLE_ENDIAN)
- u8 num_bds;
- u8 reserved6;
- u8 reserved7;
- u8 cq_index;
- #endif
- };
- /*
- * iSCSI SQ WQE
- */
- union iscsi_request {
- struct bnx2i_cmd_request cmd;
- struct bnx2i_tmf_request tmf;
- struct bnx2i_nop_out_request nop_out;
- struct bnx2i_login_request login_req;
- struct bnx2i_text_request text;
- struct bnx2i_logout_request logout_req;
- struct bnx2i_cleanup_request cleanup;
- };
- /*
- * iSCSI TMF CQE
- */
- struct bnx2i_tmf_response {
- #if defined(__BIG_ENDIAN)
- u8 op_code;
- u8 reserved1;
- u8 response;
- u8 reserved0;
- #elif defined(__LITTLE_ENDIAN)
- u8 reserved0;
- u8 response;
- u8 reserved1;
- u8 op_code;
- #endif
- u32 reserved2;
- u32 exp_cmd_sn;
- u32 max_cmd_sn;
- u32 reserved3[2];
- #if defined(__BIG_ENDIAN)
- u16 reserved5;
- u8 err_code;
- u8 reserved4;
- #elif defined(__LITTLE_ENDIAN)
- u8 reserved4;
- u8 err_code;
- u16 reserved5;
- #endif
- u32 reserved6[7];
- #if defined(__BIG_ENDIAN)
- u16 reserved7;
- u16 itt;
- #define ISCSI_TMF_RESPONSE_INDEX (0x3FFF<<0)
- #define ISCSI_TMF_RESPONSE_INDEX_SHIFT 0
- #define ISCSI_TMF_RESPONSE_TYPE (0x3<<14)
- #define ISCSI_TMF_RESPONSE_TYPE_SHIFT 14
- #elif defined(__LITTLE_ENDIAN)
- u16 itt;
- #define ISCSI_TMF_RESPONSE_INDEX (0x3FFF<<0)
- #define ISCSI_TMF_RESPONSE_INDEX_SHIFT 0
- #define ISCSI_TMF_RESPONSE_TYPE (0x3<<14)
- #define ISCSI_TMF_RESPONSE_TYPE_SHIFT 14
- u16 reserved7;
- #endif
- u32 cq_req_sn;
- };
- /*
- * iSCSI Text CQE
- */
- struct bnx2i_text_response {
- #if defined(__BIG_ENDIAN)
- u8 op_code;
- u8 response_flags;
- #define ISCSI_TEXT_RESPONSE_RESERVED1 (0x3F<<0)
- #define ISCSI_TEXT_RESPONSE_RESERVED1_SHIFT 0
- #define ISCSI_TEXT_RESPONSE_CONT (0x1<<6)
- #define ISCSI_TEXT_RESPONSE_CONT_SHIFT 6
- #define ISCSI_TEXT_RESPONSE_FINAL (0x1<<7)
- #define ISCSI_TEXT_RESPONSE_FINAL_SHIFT 7
- u16 reserved0;
- #elif defined(__LITTLE_ENDIAN)
- u16 reserved0;
- u8 response_flags;
- #define ISCSI_TEXT_RESPONSE_RESERVED1 (0x3F<<0)
- #define ISCSI_TEXT_RESPONSE_RESERVED1_SHIFT 0
- #define ISCSI_TEXT_RESPONSE_CONT (0x1<<6)
- #define ISCSI_TEXT_RESPONSE_CONT_SHIFT 6
- #define ISCSI_TEXT_RESPONSE_FINAL (0x1<<7)
- #define ISCSI_TEXT_RESPONSE_FINAL_SHIFT 7
- u8 op_code;
- #endif
- u32 data_length;
- u32 exp_cmd_sn;
- u32 max_cmd_sn;
- u32 ttt;
- u32 reserved2;
- #if defined(__BIG_ENDIAN)
- u16 reserved4;
- u8 err_code;
- u8 reserved3;
- #elif defined(__LITTLE_ENDIAN)
- u8 reserved3;
- u8 err_code;
- u16 reserved4;
- #endif
- u32 reserved5;
- u32 lun[2];
- u32 reserved6[4];
- #if defined(__BIG_ENDIAN)
- u16 reserved7;
- u16 itt;
- #define ISCSI_TEXT_RESPONSE_INDEX (0x3FFF<<0)
- #define ISCSI_TEXT_RESPONSE_INDEX_SHIFT 0
- #define ISCSI_TEXT_RESPONSE_TYPE (0x3<<14)
- #define ISCSI_TEXT_RESPONSE_TYPE_SHIFT 14
- #elif defined(__LITTLE_ENDIAN)
- u16 itt;
- #define ISCSI_TEXT_RESPONSE_INDEX (0x3FFF<<0)
- #define ISCSI_TEXT_RESPONSE_INDEX_SHIFT 0
- #define ISCSI_TEXT_RESPONSE_TYPE (0x3<<14)
- #define ISCSI_TEXT_RESPONSE_TYPE_SHIFT 14
- u16 reserved7;
- #endif
- u32 cq_req_sn;
- };
- /*
- * iSCSI CQE
- */
- union iscsi_response {
- struct bnx2i_cmd_response cmd;
- struct bnx2i_tmf_response tmf;
- struct bnx2i_login_response login_resp;
- struct bnx2i_text_response text;
- struct bnx2i_logout_response logout_resp;
- struct bnx2i_cleanup_response cleanup;
- struct bnx2i_reject_msg reject;
- struct bnx2i_async_msg async;
- struct bnx2i_nop_in_msg nop_in;
- };
- #endif /* __57XX_ISCSI_HSI_LINUX_LE__ */
|