1*d14abf15SRobert Mustacchi #ifndef __57XX_FCOE_RFC_CONSTANTS_H_ 2*d14abf15SRobert Mustacchi #define __57XX_FCOE_RFC_CONSTANTS_H_ 3*d14abf15SRobert Mustacchi 4*d14abf15SRobert Mustacchi /** 5*d14abf15SRobert Mustacchi * This file defines FCoE RFC constants 6*d14abf15SRobert Mustacchi */ 7*d14abf15SRobert Mustacchi 8*d14abf15SRobert Mustacchi 9*d14abf15SRobert Mustacchi /* Frame Header type constants */ 10*d14abf15SRobert Mustacchi 11*d14abf15SRobert Mustacchi #define FC_TYPE_BLS 0x00 /* basic link service */ 12*d14abf15SRobert Mustacchi #define FC_TYPE_ELS 0x01 /* extended link service */ 13*d14abf15SRobert Mustacchi #define FC_TYPE_IP 0x05 /* IP over FC, RFC 4338 */ 14*d14abf15SRobert Mustacchi #define FC_TYPE_FCP 0x08 /* SCSI FCP */ 15*d14abf15SRobert Mustacchi #define FC_TYPE_CT 0x20 /* Fibre Channel Services (FC-CT) */ 16*d14abf15SRobert Mustacchi #define FC_TYPE_ILS 0x22 /* internal link service */ 17*d14abf15SRobert Mustacchi 18*d14abf15SRobert Mustacchi 19*d14abf15SRobert Mustacchi /* Frame Header R_CTL constants */ 20*d14abf15SRobert Mustacchi 21*d14abf15SRobert Mustacchi /* routing */ 22*d14abf15SRobert Mustacchi #define FC_RCTL_DDF 0x0 /* device data frames */ 23*d14abf15SRobert Mustacchi #define FC_RCTL_ELS 0x2 /* extended link services */ 24*d14abf15SRobert Mustacchi #define FC_RCTL_FC4_DATA 0x3 /* FC-4 Link Data */ 25*d14abf15SRobert Mustacchi #define FC_RCTL_BLS 0x8 /* basic link services */ 26*d14abf15SRobert Mustacchi #define FC_RCTL_LCF 0xc /* link control frame */ 27*d14abf15SRobert Mustacchi 28*d14abf15SRobert Mustacchi /* info */ 29*d14abf15SRobert Mustacchi /* device data frames */ 30*d14abf15SRobert Mustacchi #define FC_RCTL_DDF_UNCAT 0x0 /* uncategorized information */ 31*d14abf15SRobert Mustacchi #define FC_RCTL_DDF_SOL_DATA 0x1 /* solicited data */ 32*d14abf15SRobert Mustacchi #define FC_RCTL_DDF_UNSOL_CTL 0x2 /* unsolicited control */ 33*d14abf15SRobert Mustacchi #define FC_RCTL_DDF_SOL_CTL 0x3 /* solicited control or reply */ 34*d14abf15SRobert Mustacchi #define FC_RCTL_DDF_UNSOL_DATA 0x4 /* unsolicited data */ 35*d14abf15SRobert Mustacchi #define FC_RCTL_DDF_DATA_DESC 0x5 /* data descriptor */ 36*d14abf15SRobert Mustacchi #define FC_RCTL_DDF_UNSOL_CMD 0x6 /* unsolicited command */ 37*d14abf15SRobert Mustacchi #define FC_RCTL_DDF_CMD_STATUS 0x7 /* command status */ 38*d14abf15SRobert Mustacchi /* Extended Link services */ 39*d14abf15SRobert Mustacchi #define FC_RCTL_ELS_REQ 0x2 /* extended link services request */ 40*d14abf15SRobert Mustacchi #define FC_RCTL_ELS_REP 0x3 /* extended link services reply */ 41*d14abf15SRobert Mustacchi /* Basic Link Services */ 42*d14abf15SRobert Mustacchi #define FC_RCTL_BLS_NOP 0x0 /* basic link service NOP */ 43*d14abf15SRobert Mustacchi #define FC_RCTL_BLS_ABTS 0x1 /* basic link service abort */ 44*d14abf15SRobert Mustacchi #define FC_RCTL_BLS_RMC 0x2 /* remove connection */ 45*d14abf15SRobert Mustacchi #define FC_RCTL_BLS_ACC 0x4 /* basic accept */ 46*d14abf15SRobert Mustacchi #define FC_RCTL_BLS_RJT 0x5 /* basic reject */ 47*d14abf15SRobert Mustacchi #define FC_RCTL_BLS_PRMT 0x6 /* dedicated connection preempted */ 48*d14abf15SRobert Mustacchi /* Link Control Information */ 49*d14abf15SRobert Mustacchi #define FC_RCTL_LCF_ACK_1 0x0 /* acknowledge_1 */ 50*d14abf15SRobert Mustacchi #define FC_RCTL_LCF_ACK_0 0x1 /* acknowledge_0 */ 51*d14abf15SRobert Mustacchi #define FC_RCTL_LCF_P_RJT 0x2 /* port reject */ 52*d14abf15SRobert Mustacchi #define FC_RCTL_LCF_F_RJT 0x3 /* fabric reject */ 53*d14abf15SRobert Mustacchi #define FC_RCTL_LCF_P_BSY 0x4 /* port busy */ 54*d14abf15SRobert Mustacchi #define FC_RCTL_LCF_F_BSY 0x5 /* fabric busy to data frame */ 55*d14abf15SRobert Mustacchi #define FC_RCTL_LCF_F_BSYL 0x6 /* fabric busy to link control frame */ 56*d14abf15SRobert Mustacchi #define FC_RCTL_LCF_LCR 0x7 /* link credit reset */ 57*d14abf15SRobert Mustacchi #define FC_RCTL_LCF_END 0x9 /* end */ 58*d14abf15SRobert Mustacchi 59*d14abf15SRobert Mustacchi 60*d14abf15SRobert Mustacchi /* Frame Header F_CTL constants */ 61*d14abf15SRobert Mustacchi 62*d14abf15SRobert Mustacchi /* exchange context */ 63*d14abf15SRobert Mustacchi #define FC_FCTL_EX_CTX_SHIFT 23 64*d14abf15SRobert Mustacchi #define FC_FCTL_EX_CTX_MASK (0x1 << FC_FCTL_EX_CTX_SHIFT) 65*d14abf15SRobert Mustacchi #define FC_FCTL_EX_CTX_ORIGINATOR (0x0 << FC_FCTL_EX_CTX_SHIFT) 66*d14abf15SRobert Mustacchi #define FC_FCTL_EX_CTX_RESPONDER (0x1 << FC_FCTL_EX_CTX_SHIFT) 67*d14abf15SRobert Mustacchi /* sequence context */ 68*d14abf15SRobert Mustacchi #define FC_FCTL_SEQ_CTX_SHIFT 22 69*d14abf15SRobert Mustacchi #define FC_FCTL_SEQ_CTX_MASK (0x1 << FC_FCTL_SEQ_CTX_SHIFT) 70*d14abf15SRobert Mustacchi #define FC_FCTL_SEQ_CTX_INITIATOR (0x0 << FC_FCTL_SEQ_CTX_SHIFT) 71*d14abf15SRobert Mustacchi #define FC_FCTL_SEQ_CTX_RECIPIENT (0x1 << FC_FCTL_SEQ_CTX_SHIFT) 72*d14abf15SRobert Mustacchi /* first sequence of exchange */ 73*d14abf15SRobert Mustacchi #define FC_FCTL_FIRST_SEQ_SHIFT 21 74*d14abf15SRobert Mustacchi #define FC_FCTL_FIRST_SEQ_MASK (0x1 << FC_FCTL_FIRST_SEQ_SHIFT) 75*d14abf15SRobert Mustacchi #define FC_FCTL_FIRST_SEQ_FALSE (0x0 << FC_FCTL_FIRST_SEQ_SHIFT) 76*d14abf15SRobert Mustacchi #define FC_FCTL_FIRST_SEQ_TRUE (0x1 << FC_FCTL_FIRST_SEQ_SHIFT) 77*d14abf15SRobert Mustacchi /* last sequence of exchange */ 78*d14abf15SRobert Mustacchi #define FC_FCTL_LAST_SEQ_SHIFT 20 79*d14abf15SRobert Mustacchi #define FC_FCTL_LAST_SEQ_MASK (0x1 << FC_FCTL_LAST_SEQ_SHIFT) 80*d14abf15SRobert Mustacchi #define FC_FCTL_LAST_SEQ_FALSE (0x0 << FC_FCTL_LAST_SEQ_SHIFT) 81*d14abf15SRobert Mustacchi #define FC_FCTL_LAST_SEQ_TRUE (0x1 << FC_FCTL_LAST_SEQ_SHIFT) 82*d14abf15SRobert Mustacchi /* last frame of sequence */ 83*d14abf15SRobert Mustacchi #define FC_FCTL_END_SEQ_SHIFT 19 84*d14abf15SRobert Mustacchi #define FC_FCTL_END_SEQ_MASK (0x1 << FC_FCTL_END_SEQ_SHIFT) 85*d14abf15SRobert Mustacchi #define FC_FCTL_END_SEQ_FALSE (0x0 << FC_FCTL_END_SEQ_SHIFT) 86*d14abf15SRobert Mustacchi #define FC_FCTL_END_SEQ_TRUE (0x1 << FC_FCTL_END_SEQ_SHIFT) 87*d14abf15SRobert Mustacchi /* CS_CTL/priority enable */ 88*d14abf15SRobert Mustacchi #define FC_FCTL_PRI_ENABLE_SHIFT 17 89*d14abf15SRobert Mustacchi #define FC_FCTL_PRI_ENABLE_MASK (0x1 << FC_FCTL_PRI_ENABLE_SHIFT) 90*d14abf15SRobert Mustacchi #define FC_FCTL_PRI_ENABLE_FALSE (0x0 << FC_FCTL_PRI_ENABLE_SHIFT) 91*d14abf15SRobert Mustacchi #define FC_FCTL_PRI_ENABLE_TRUE (0x1 << FC_FCTL_PRI_ENABLE_SHIFT) 92*d14abf15SRobert Mustacchi /* sequence initiative */ 93*d14abf15SRobert Mustacchi #define FC_FCTL_SEQ_INIT_SHIFT 16 94*d14abf15SRobert Mustacchi #define FC_FCTL_SEQ_INIT_MASK (0x1 << FC_FCTL_SEQ_INIT_SHIFT) 95*d14abf15SRobert Mustacchi #define FC_FCTL_SEQ_INIT_HOLD (0x0 << FC_FCTL_SEQ_INIT_SHIFT) 96*d14abf15SRobert Mustacchi #define FC_FCTL_SEQ_INIT_TRANSFER (0x1 << FC_FCTL_SEQ_INIT_SHIFT) 97*d14abf15SRobert Mustacchi /* ack form */ 98*d14abf15SRobert Mustacchi #define FC_FCTL_ACK_SHIFT 12 99*d14abf15SRobert Mustacchi #define FC_FCTL_ACK_MASK (0x3 << FC_FCTL_ACK_SHIFT) 100*d14abf15SRobert Mustacchi #define FC_FCTL_ACK_NONE (0x0 << FC_FCTL_ACK_SHIFT) 101*d14abf15SRobert Mustacchi #define FC_FCTL_ACK_1 (0x1 << FC_FCTL_ACK_SHIFT) 102*d14abf15SRobert Mustacchi #define FC_FCTL_ACK_0 (0x3 << FC_FCTL_ACK_SHIFT) 103*d14abf15SRobert Mustacchi /* retransmitted sequence */ 104*d14abf15SRobert Mustacchi #define FC_FCTL_RETX_SEQ_SHIFT 9 105*d14abf15SRobert Mustacchi #define FC_FCTL_RETX_SEQ_MASK (0x1 << FC_FCTL_RETX_SEQ_SHIFT) 106*d14abf15SRobert Mustacchi #define FC_FCTL_RETX_SEQ_FALSE (0x0 << FC_FCTL_RETX_SEQ_SHIFT) 107*d14abf15SRobert Mustacchi #define FC_FCTL_RETX_SEQ_TRUE (0x1 << FC_FCTL_RETX_SEQ_SHIFT) 108*d14abf15SRobert Mustacchi /* abort sequence condition */ 109*d14abf15SRobert Mustacchi #define FC_FCTL_ABT_SEQ_SHIFT 4 110*d14abf15SRobert Mustacchi #define FC_FCTL_ABT_SEQ_MASK (0x2 << FC_FCTL_ABT_SEQ_SHIFT) 111*d14abf15SRobert Mustacchi #define FC_FCTL_ABT_SEQ_DISCARD_MULT (0x0 << FC_FCTL_ABT_SEQ_SHIFT) 112*d14abf15SRobert Mustacchi #define FC_FCTL_ABT_SEQ_DISCARD_SINGLE (0x1 << FC_FCTL_ABT_SEQ_SHIFT) 113*d14abf15SRobert Mustacchi #define FC_FCTL_ABT_SEQ_PROCESS_POLICY (0x2 << FC_FCTL_ABT_SEQ_SHIFT) 114*d14abf15SRobert Mustacchi #define FC_FCTL_ABT_SEQ_DISCARD_MULT_RETX (0x3 << FC_FCTL_ABT_SEQ_SHIFT) 115*d14abf15SRobert Mustacchi /* relative offset */ 116*d14abf15SRobert Mustacchi #define FC_FCTL_REL_OFF_SHIFT 3 117*d14abf15SRobert Mustacchi #define FC_FCTL_REL_OFF_MASK (0x1 << FC_FCTL_REL_OFF_SHIFT) 118*d14abf15SRobert Mustacchi #define FC_FCTL_REL_OFF_FALSE (0x0 << FC_FCTL_REL_OFF_SHIFT) 119*d14abf15SRobert Mustacchi #define FC_FCTL_REL_OFF_TRUE (0x1 << FC_FCTL_REL_OFF_SHIFT) 120*d14abf15SRobert Mustacchi /* bytes of trailing fill */ 121*d14abf15SRobert Mustacchi #define FC_FCTL_FILL_SHIFT 0 122*d14abf15SRobert Mustacchi #define FC_FCTL_FILL_MASK (0x3 << FC_FCTL_FILL_SHIFT) 123*d14abf15SRobert Mustacchi #define FC_FCTL_FILL_0_BYTES (0x0 << FC_FCTL_FILL_SHIFT) 124*d14abf15SRobert Mustacchi #define FC_FCTL_FILL_1_BYTES (0x1 << FC_FCTL_FILL_SHIFT) 125*d14abf15SRobert Mustacchi #define FC_FCTL_FILL_2_BYTES (0x2 << FC_FCTL_FILL_SHIFT) 126*d14abf15SRobert Mustacchi #define FC_FCTL_FILL_3_BYTES (0x3 << FC_FCTL_FILL_SHIFT) 127*d14abf15SRobert Mustacchi 128*d14abf15SRobert Mustacchi 129*d14abf15SRobert Mustacchi /* SOF / EOF bytes */ 130*d14abf15SRobert Mustacchi #define FC_SOF_F 0x28 /* fabric */ 131*d14abf15SRobert Mustacchi #define FC_SOF_I4 0x29 /* initiate class 4 */ 132*d14abf15SRobert Mustacchi #define FC_SOF_I2 0x2d /* initiate class 2 */ 133*d14abf15SRobert Mustacchi #define FC_SOF_I3 0x2e /* initiate class 3 */ 134*d14abf15SRobert Mustacchi #define FC_SOF_N4 0x31 /* normal class 4 */ 135*d14abf15SRobert Mustacchi #define FC_SOF_N2 0x35 /* normal class 2 */ 136*d14abf15SRobert Mustacchi #define FC_SOF_N3 0x36 /* normal class 3 */ 137*d14abf15SRobert Mustacchi #define FC_SOF_C4 0x39 /* activate class 4 */ 138*d14abf15SRobert Mustacchi #define FC_EOF_N 0x41 /* normal (not last frame of seq) */ 139*d14abf15SRobert Mustacchi #define FC_EOF_T 0x42 /* terminate (last frame of sequence) */ 140*d14abf15SRobert Mustacchi #define FC_EOF_RT 0x44 141*d14abf15SRobert Mustacchi #define FC_EOF_DT 0x46 /* disconnect-terminate class-1 */ 142*d14abf15SRobert Mustacchi #define FC_EOF_NI 0x49 /* normal-invalid */ 143*d14abf15SRobert Mustacchi #define FC_EOF_DTI 0x4e /* disconnect-terminate-invalid */ 144*d14abf15SRobert Mustacchi #define FC_EOF_RTI 0x4f 145*d14abf15SRobert Mustacchi #define FC_EOF_A 0x50 /* abort */ 146*d14abf15SRobert Mustacchi 147*d14abf15SRobert Mustacchi 148*d14abf15SRobert Mustacchi /* ELS Command codes - byte 0 of the frame payload */ 149*d14abf15SRobert Mustacchi #define FC_ELS_CMD_LS_RJT 0x01 /* ESL reject */ 150*d14abf15SRobert Mustacchi #define FC_ELS_CMD_LS_ACC 0x02 /* ESL Accept */ 151*d14abf15SRobert Mustacchi #define FC_ELS_CMD_PLOGI 0x03 /* N_Port login */ 152*d14abf15SRobert Mustacchi #define FC_ELS_CMD_FLOGI 0x04 /* F_Port login */ 153*d14abf15SRobert Mustacchi #define FC_ELS_CMD_LOGO 0x05 /* Logout */ 154*d14abf15SRobert Mustacchi #define FC_ELS_CMD_ABTX 0x06 /* Abort exchange - obsolete */ 155*d14abf15SRobert Mustacchi #define FC_ELS_CMD_RCS 0x07 /* read connection status */ 156*d14abf15SRobert Mustacchi #define FC_ELS_CMD_RES 0x08 /* read exchange status block */ 157*d14abf15SRobert Mustacchi #define FC_ELS_CMD_RSS 0x09 /* read sequence status block */ 158*d14abf15SRobert Mustacchi #define FC_ELS_CMD_RSI 0x0a /* read sequence initiative */ 159*d14abf15SRobert Mustacchi #define FC_ELS_CMD_ESTS 0x0b /* establish streaming */ 160*d14abf15SRobert Mustacchi #define FC_ELS_CMD_ESTC 0x0c /* estimate credit */ 161*d14abf15SRobert Mustacchi #define FC_ELS_CMD_ADVC 0x0d /* advise credit */ 162*d14abf15SRobert Mustacchi #define FC_ELS_CMD_RTV 0x0e /* read timeout value */ 163*d14abf15SRobert Mustacchi #define FC_ELS_CMD_RLS 0x0f /* read link error status block */ 164*d14abf15SRobert Mustacchi #define FC_ELS_CMD_ECHO 0x10 /* echo */ 165*d14abf15SRobert Mustacchi #define FC_ELS_CMD_TEST 0x11 /* test */ 166*d14abf15SRobert Mustacchi #define FC_ELS_CMD_RRQ 0x12 /* reinstate recovery qualifier */ 167*d14abf15SRobert Mustacchi #define FC_ELS_CMD_REC 0x13 /* read exchange concise */ 168*d14abf15SRobert Mustacchi #define FC_ELS_CMD_PRLI 0x20 /* process login */ 169*d14abf15SRobert Mustacchi #define FC_ELS_CMD_PRLO 0x21 /* process logout */ 170*d14abf15SRobert Mustacchi #define FC_ELS_CMD_SCN 0x22 /* state change notification */ 171*d14abf15SRobert Mustacchi #define FC_ELS_CMD_TPLS 0x23 /* test process login state */ 172*d14abf15SRobert Mustacchi #define FC_ELS_CMD_TPRLO 0x24 /* third party process logout */ 173*d14abf15SRobert Mustacchi #define FC_ELS_CMD_LCLM 0x25 /* login control list mgmt (obs) */ 174*d14abf15SRobert Mustacchi #define FC_ELS_CMD_GAID 0x30 /* get alias_ID */ 175*d14abf15SRobert Mustacchi #define FC_ELS_CMD_FACT 0x31 /* fabric activate alias_id */ 176*d14abf15SRobert Mustacchi #define FC_ELS_CMD_FDACDT 0x32 /* fabric deactivate alias_id */ 177*d14abf15SRobert Mustacchi #define FC_ELS_CMD_NACT 0x33 /* N-port activate alias_id */ 178*d14abf15SRobert Mustacchi #define FC_ELS_CMD_NDACT 0x34 /* N-port deactivate alias_id */ 179*d14abf15SRobert Mustacchi #define FC_ELS_CMD_QOSR 0x40 /* quality of service request */ 180*d14abf15SRobert Mustacchi #define FC_ELS_CMD_RVCS 0x41 /* read virtual circuit status */ 181*d14abf15SRobert Mustacchi #define FC_ELS_CMD_PDISC 0x50 /* discover N_port service params */ 182*d14abf15SRobert Mustacchi #define FC_ELS_CMD_FDISC 0x51 /* discover F_port service params */ 183*d14abf15SRobert Mustacchi #define FC_ELS_CMD_ADISC 0x52 /* discover address */ 184*d14abf15SRobert Mustacchi #define FC_ELS_CMD_RNC 0x53 /* report node cap (obs) */ 185*d14abf15SRobert Mustacchi #define FC_ELS_CMD_FARP_REQ 0x54 /* FC ARP request */ 186*d14abf15SRobert Mustacchi #define FC_ELS_CMD_FARP_REPL 0x55 /* FC ARP reply */ 187*d14abf15SRobert Mustacchi #define FC_ELS_CMD_RPS 0x56 /* read port status block */ 188*d14abf15SRobert Mustacchi #define FC_ELS_CMD_RPL 0x57 /* read port list */ 189*d14abf15SRobert Mustacchi #define FC_ELS_CMD_RPBC 0x58 /* read port buffer condition */ 190*d14abf15SRobert Mustacchi #define FC_ELS_CMD_FAN 0x60 /* fabric address notification */ 191*d14abf15SRobert Mustacchi #define FC_ELS_CMD_RSCN 0x61 /* registered state change notification */ 192*d14abf15SRobert Mustacchi #define FC_ELS_CMD_SCR 0x62 /* state change registration */ 193*d14abf15SRobert Mustacchi #define FC_ELS_CMD_RNFT 0x63 /* report node FC-4 types */ 194*d14abf15SRobert Mustacchi #define FC_ELS_CMD_CSR 0x68 /* clock synch. request */ 195*d14abf15SRobert Mustacchi #define FC_ELS_CMD_CSU 0x69 /* clock synch. update */ 196*d14abf15SRobert Mustacchi #define FC_ELS_CMD_LINIT 0x70 /* loop initialize */ 197*d14abf15SRobert Mustacchi #define FC_ELS_CMD_LSTS 0x72 /* loop status */ 198*d14abf15SRobert Mustacchi #define FC_ELS_CMD_RNID 0x78 /* request node ID data */ 199*d14abf15SRobert Mustacchi #define FC_ELS_CMD_RLIR 0x79 /* registered link incident report */ 200*d14abf15SRobert Mustacchi #define FC_ELS_CMD_LIRR 0x7a /* link incident record registration */ 201*d14abf15SRobert Mustacchi #define FC_ELS_CMD_SRL 0x7b /* scan remote loop */ 202*d14abf15SRobert Mustacchi #define FC_ELS_CMD_SBRP 0x7c /* set bit-error reporting params */ 203*d14abf15SRobert Mustacchi #define FC_ELS_CMD_RPSC 0x7d /* report speed capabilities */ 204*d14abf15SRobert Mustacchi #define FC_ELS_CMD_QSA 0x7e /* query security attributes */ 205*d14abf15SRobert Mustacchi #define FC_ELS_CMD_EVFP 0x7f /* exchange virt. fabrics params */ 206*d14abf15SRobert Mustacchi #define FC_ELS_CMD_LKA 0x80 /* link keep-alive */ 207*d14abf15SRobert Mustacchi #define FC_ELS_CMD_AUTH_ELS 0x90 /* authentication ELS */ 208*d14abf15SRobert Mustacchi 209*d14abf15SRobert Mustacchi #endif /*__57XX_FCOE_RFC_CONSTANTS_H_ */ 210