Ben Cheng | 655a7c0 | 2013-10-16 16:09:24 -0700 | [diff] [blame] | 1 | /**************************************************************************** |
| 2 | **************************************************************************** |
| 3 | *** |
| 4 | *** This header was automatically generated from a Linux kernel header |
| 5 | *** of the same name, to make information necessary for userspace to |
| 6 | *** call into the kernel available to libc. It contains only constants, |
| 7 | *** structures, and macros generated from the original header, and thus, |
| 8 | *** contains no copyrightable information. |
| 9 | *** |
| 10 | *** To edit the content of this header, modify the corresponding |
| 11 | *** source file (e.g. under external/kernel-headers/original/) then |
| 12 | *** run bionic/libc/kernel/tools/update_all.py |
| 13 | *** |
| 14 | *** Any manual change here will be lost the next time this script will |
| 15 | *** be run. You've been warned! |
| 16 | *** |
| 17 | **************************************************************************** |
| 18 | ****************************************************************************/ |
| 19 | #ifndef _FC_ELS_H_ |
| 20 | #define _FC_ELS_H_ |
| 21 | #include <linux/types.h> |
Christopher Ferris | af09c70 | 2020-06-01 20:29:29 -0700 | [diff] [blame] | 22 | #include <asm/byteorder.h> |
Ben Cheng | 655a7c0 | 2013-10-16 16:09:24 -0700 | [diff] [blame] | 23 | enum fc_els_cmd { |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 24 | ELS_LS_RJT = 0x01, |
| 25 | ELS_LS_ACC = 0x02, |
| 26 | ELS_PLOGI = 0x03, |
| 27 | ELS_FLOGI = 0x04, |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 28 | ELS_LOGO = 0x05, |
| 29 | ELS_ABTX = 0x06, |
| 30 | ELS_RCS = 0x07, |
| 31 | ELS_RES = 0x08, |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 32 | ELS_RSS = 0x09, |
| 33 | ELS_RSI = 0x0a, |
| 34 | ELS_ESTS = 0x0b, |
| 35 | ELS_ESTC = 0x0c, |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 36 | ELS_ADVC = 0x0d, |
| 37 | ELS_RTV = 0x0e, |
| 38 | ELS_RLS = 0x0f, |
| 39 | ELS_ECHO = 0x10, |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 40 | ELS_TEST = 0x11, |
| 41 | ELS_RRQ = 0x12, |
| 42 | ELS_REC = 0x13, |
| 43 | ELS_SRR = 0x14, |
Christopher Ferris | aeddbcf | 2019-07-08 12:45:46 -0700 | [diff] [blame] | 44 | ELS_FPIN = 0x16, |
Christopher Ferris | 2abfa9e | 2021-11-01 16:26:06 -0700 | [diff] [blame] | 45 | ELS_EDC = 0x17, |
Christopher Ferris | 25c18d4 | 2020-10-14 17:42:58 -0700 | [diff] [blame] | 46 | ELS_RDP = 0x18, |
Christopher Ferris | af09c70 | 2020-06-01 20:29:29 -0700 | [diff] [blame] | 47 | ELS_RDF = 0x19, |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 48 | ELS_PRLI = 0x20, |
| 49 | ELS_PRLO = 0x21, |
| 50 | ELS_SCN = 0x22, |
| 51 | ELS_TPLS = 0x23, |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 52 | ELS_TPRLO = 0x24, |
| 53 | ELS_LCLM = 0x25, |
| 54 | ELS_GAID = 0x30, |
| 55 | ELS_FACT = 0x31, |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 56 | ELS_FDACDT = 0x32, |
| 57 | ELS_NACT = 0x33, |
| 58 | ELS_NDACT = 0x34, |
| 59 | ELS_QOSR = 0x40, |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 60 | ELS_RVCS = 0x41, |
| 61 | ELS_PDISC = 0x50, |
| 62 | ELS_FDISC = 0x51, |
| 63 | ELS_ADISC = 0x52, |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 64 | ELS_RNC = 0x53, |
| 65 | ELS_FARP_REQ = 0x54, |
| 66 | ELS_FARP_REPL = 0x55, |
| 67 | ELS_RPS = 0x56, |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 68 | ELS_RPL = 0x57, |
| 69 | ELS_RPBC = 0x58, |
| 70 | ELS_FAN = 0x60, |
| 71 | ELS_RSCN = 0x61, |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 72 | ELS_SCR = 0x62, |
| 73 | ELS_RNFT = 0x63, |
| 74 | ELS_CSR = 0x68, |
| 75 | ELS_CSU = 0x69, |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 76 | ELS_LINIT = 0x70, |
| 77 | ELS_LSTS = 0x72, |
| 78 | ELS_RNID = 0x78, |
| 79 | ELS_RLIR = 0x79, |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 80 | ELS_LIRR = 0x7a, |
| 81 | ELS_SRL = 0x7b, |
| 82 | ELS_SBRP = 0x7c, |
| 83 | ELS_RPSC = 0x7d, |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 84 | ELS_QSA = 0x7e, |
| 85 | ELS_EVFP = 0x7f, |
| 86 | ELS_LKA = 0x80, |
| 87 | ELS_AUTH_ELS = 0x90, |
Ben Cheng | 655a7c0 | 2013-10-16 16:09:24 -0700 | [diff] [blame] | 88 | }; |
Christopher Ferris | 2abfa9e | 2021-11-01 16:26:06 -0700 | [diff] [blame] | 89 | #define FC_ELS_CMDS_INIT {[ELS_LS_RJT] = "LS_RJT",[ELS_LS_ACC] = "LS_ACC",[ELS_PLOGI] = "PLOGI",[ELS_FLOGI] = "FLOGI",[ELS_LOGO] = "LOGO",[ELS_ABTX] = "ABTX",[ELS_RCS] = "RCS",[ELS_RES] = "RES",[ELS_RSS] = "RSS",[ELS_RSI] = "RSI",[ELS_ESTS] = "ESTS",[ELS_ESTC] = "ESTC",[ELS_ADVC] = "ADVC",[ELS_RTV] = "RTV",[ELS_RLS] = "RLS",[ELS_ECHO] = "ECHO",[ELS_TEST] = "TEST",[ELS_RRQ] = "RRQ",[ELS_REC] = "REC",[ELS_SRR] = "SRR",[ELS_FPIN] = "FPIN",[ELS_EDC] = "EDC",[ELS_RDP] = "RDP",[ELS_RDF] = "RDF",[ELS_PRLI] = "PRLI",[ELS_PRLO] = "PRLO",[ELS_SCN] = "SCN",[ELS_TPLS] = "TPLS",[ELS_TPRLO] = "TPRLO",[ELS_LCLM] = "LCLM",[ELS_GAID] = "GAID",[ELS_FACT] = "FACT",[ELS_FDACDT] = "FDACDT",[ELS_NACT] = "NACT",[ELS_NDACT] = "NDACT",[ELS_QOSR] = "QOSR",[ELS_RVCS] = "RVCS",[ELS_PDISC] = "PDISC",[ELS_FDISC] = "FDISC",[ELS_ADISC] = "ADISC",[ELS_RNC] = "RNC",[ELS_FARP_REQ] = "FARP_REQ",[ELS_FARP_REPL] = "FARP_REPL",[ELS_RPS] = "RPS",[ELS_RPL] = "RPL",[ELS_RPBC] = "RPBC",[ELS_FAN] = "FAN",[ELS_RSCN] = "RSCN",[ELS_SCR] = "SCR",[ELS_RNFT] = "RNFT",[ELS_CSR] = "CSR",[ELS_CSU] = "CSU",[ELS_LINIT] = "LINIT",[ELS_LSTS] = "LSTS",[ELS_RNID] = "RNID",[ELS_RLIR] = "RLIR",[ELS_LIRR] = "LIRR",[ELS_SRL] = "SRL",[ELS_SBRP] = "SBRP",[ELS_RPSC] = "RPSC",[ELS_QSA] = "QSA",[ELS_EVFP] = "EVFP",[ELS_LKA] = "LKA",[ELS_AUTH_ELS] = "AUTH_ELS", \ |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 90 | } |
Ben Cheng | 655a7c0 | 2013-10-16 16:09:24 -0700 | [diff] [blame] | 91 | struct fc_els_ls_acc { |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 92 | __u8 la_cmd; |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 93 | __u8 la_resv[3]; |
Ben Cheng | 655a7c0 | 2013-10-16 16:09:24 -0700 | [diff] [blame] | 94 | }; |
| 95 | struct fc_els_ls_rjt { |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 96 | __u8 er_cmd; |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 97 | __u8 er_resv[4]; |
| 98 | __u8 er_reason; |
| 99 | __u8 er_explan; |
| 100 | __u8 er_vendor; |
Ben Cheng | 655a7c0 | 2013-10-16 16:09:24 -0700 | [diff] [blame] | 101 | }; |
| 102 | enum fc_els_rjt_reason { |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 103 | ELS_RJT_NONE = 0, |
| 104 | ELS_RJT_INVAL = 0x01, |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 105 | ELS_RJT_LOGIC = 0x03, |
| 106 | ELS_RJT_BUSY = 0x05, |
| 107 | ELS_RJT_PROT = 0x07, |
| 108 | ELS_RJT_UNAB = 0x09, |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 109 | ELS_RJT_UNSUP = 0x0b, |
| 110 | ELS_RJT_INPROG = 0x0e, |
| 111 | ELS_RJT_FIP = 0x20, |
| 112 | ELS_RJT_VENDOR = 0xff, |
Ben Cheng | 655a7c0 | 2013-10-16 16:09:24 -0700 | [diff] [blame] | 113 | }; |
| 114 | enum fc_els_rjt_explan { |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 115 | ELS_EXPL_NONE = 0x00, |
| 116 | ELS_EXPL_SPP_OPT_ERR = 0x01, |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 117 | ELS_EXPL_SPP_ICTL_ERR = 0x03, |
| 118 | ELS_EXPL_AH = 0x11, |
| 119 | ELS_EXPL_AH_REQ = 0x13, |
| 120 | ELS_EXPL_SID = 0x15, |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 121 | ELS_EXPL_OXID_RXID = 0x17, |
| 122 | ELS_EXPL_INPROG = 0x19, |
| 123 | ELS_EXPL_PLOGI_REQD = 0x1e, |
| 124 | ELS_EXPL_INSUF_RES = 0x29, |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 125 | ELS_EXPL_UNAB_DATA = 0x2a, |
| 126 | ELS_EXPL_UNSUPR = 0x2c, |
| 127 | ELS_EXPL_INV_LEN = 0x2d, |
| 128 | ELS_EXPL_NOT_NEIGHBOR = 0x62, |
Ben Cheng | 655a7c0 | 2013-10-16 16:09:24 -0700 | [diff] [blame] | 129 | }; |
Christopher Ferris | af09c70 | 2020-06-01 20:29:29 -0700 | [diff] [blame] | 130 | enum fc_ls_tlv_dtag { |
| 131 | ELS_DTAG_LS_REQ_INFO = 0x00000001, |
Christopher Ferris | 2abfa9e | 2021-11-01 16:26:06 -0700 | [diff] [blame] | 132 | ELS_DTAG_LNK_FAULT_CAP = 0x0001000D, |
| 133 | ELS_DTAG_CG_SIGNAL_CAP = 0x0001000F, |
Christopher Ferris | af09c70 | 2020-06-01 20:29:29 -0700 | [diff] [blame] | 134 | ELS_DTAG_LNK_INTEGRITY = 0x00020001, |
| 135 | ELS_DTAG_DELIVERY = 0x00020002, |
| 136 | ELS_DTAG_PEER_CONGEST = 0x00020003, |
| 137 | ELS_DTAG_CONGESTION = 0x00020004, |
| 138 | ELS_DTAG_FPIN_REGISTER = 0x00030001, |
| 139 | }; |
Christopher Ferris | 2abfa9e | 2021-11-01 16:26:06 -0700 | [diff] [blame] | 140 | #define FC_LS_TLV_DTAG_INIT { { ELS_DTAG_LS_REQ_INFO, "Link Service Request Information" }, { ELS_DTAG_LNK_FAULT_CAP, "Link Fault Capability" }, { ELS_DTAG_CG_SIGNAL_CAP, "Congestion Signaling Capability" }, { ELS_DTAG_LNK_INTEGRITY, "Link Integrity Notification" }, { ELS_DTAG_DELIVERY, "Delivery Notification Present" }, { ELS_DTAG_PEER_CONGEST, "Peer Congestion Notification" }, { ELS_DTAG_CONGESTION, "Congestion Notification" }, { ELS_DTAG_FPIN_REGISTER, "FPIN Registration" }, \ |
Christopher Ferris | af09c70 | 2020-06-01 20:29:29 -0700 | [diff] [blame] | 141 | } |
| 142 | struct fc_tlv_desc { |
| 143 | __be32 desc_tag; |
| 144 | __be32 desc_len; |
Christopher Ferris | 7447a1c | 2022-10-04 18:24:44 -0700 | [diff] [blame^] | 145 | __u8 desc_value[]; |
Christopher Ferris | af09c70 | 2020-06-01 20:29:29 -0700 | [diff] [blame] | 146 | }; |
| 147 | #define FC_TLV_DESC_HDR_SZ sizeof(struct fc_tlv_desc) |
| 148 | #define FC_TLV_DESC_LENGTH_FROM_SZ(desc) (sizeof(desc) - FC_TLV_DESC_HDR_SZ) |
| 149 | #define FC_TLV_DESC_SZ_FROM_LENGTH(tlv) (__be32_to_cpu((tlv)->desc_len) + FC_TLV_DESC_HDR_SZ) |
| 150 | struct fc_els_lsri_desc { |
| 151 | __be32 desc_tag; |
| 152 | __be32 desc_len; |
| 153 | struct { |
| 154 | __u8 cmd; |
| 155 | __u8 bytes[3]; |
| 156 | } rqst_w0; |
| 157 | }; |
Ben Cheng | 655a7c0 | 2013-10-16 16:09:24 -0700 | [diff] [blame] | 158 | struct fc_els_csp { |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 159 | __u8 sp_hi_ver; |
| 160 | __u8 sp_lo_ver; |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 161 | __be16 sp_bb_cred; |
| 162 | __be16 sp_features; |
| 163 | __be16 sp_bb_data; |
| 164 | union { |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 165 | struct { |
| 166 | __be16 _sp_tot_seq; |
| 167 | __be16 _sp_rel_off; |
| 168 | } sp_plogi; |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 169 | struct { |
| 170 | __be32 _sp_r_a_tov; |
| 171 | } sp_flogi_acc; |
| 172 | } sp_u; |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 173 | __be32 sp_e_d_tov; |
Ben Cheng | 655a7c0 | 2013-10-16 16:09:24 -0700 | [diff] [blame] | 174 | }; |
| 175 | #define sp_tot_seq sp_u.sp_plogi._sp_tot_seq |
| 176 | #define sp_rel_off sp_u.sp_plogi._sp_rel_off |
Ben Cheng | 655a7c0 | 2013-10-16 16:09:24 -0700 | [diff] [blame] | 177 | #define sp_r_a_tov sp_u.sp_flogi_acc._sp_r_a_tov |
| 178 | #define FC_SP_BB_DATA_MASK 0xfff |
| 179 | #define FC_SP_MIN_MAX_PAYLOAD FC_MIN_MAX_PAYLOAD |
| 180 | #define FC_SP_MAX_MAX_PAYLOAD FC_MAX_PAYLOAD |
Ben Cheng | 655a7c0 | 2013-10-16 16:09:24 -0700 | [diff] [blame] | 181 | #define FC_SP_FT_NPIV 0x8000 |
| 182 | #define FC_SP_FT_CIRO 0x8000 |
| 183 | #define FC_SP_FT_CLAD 0x8000 |
| 184 | #define FC_SP_FT_RAND 0x4000 |
Ben Cheng | 655a7c0 | 2013-10-16 16:09:24 -0700 | [diff] [blame] | 185 | #define FC_SP_FT_VAL 0x2000 |
| 186 | #define FC_SP_FT_NPIV_ACC 0x2000 |
| 187 | #define FC_SP_FT_FPORT 0x1000 |
| 188 | #define FC_SP_FT_ABB 0x0800 |
Ben Cheng | 655a7c0 | 2013-10-16 16:09:24 -0700 | [diff] [blame] | 189 | #define FC_SP_FT_EDTR 0x0400 |
| 190 | #define FC_SP_FT_MCAST 0x0200 |
| 191 | #define FC_SP_FT_BCAST 0x0100 |
| 192 | #define FC_SP_FT_HUNT 0x0080 |
Ben Cheng | 655a7c0 | 2013-10-16 16:09:24 -0700 | [diff] [blame] | 193 | #define FC_SP_FT_SIMP 0x0040 |
| 194 | #define FC_SP_FT_SEC 0x0020 |
| 195 | #define FC_SP_FT_CSYN 0x0010 |
| 196 | #define FC_SP_FT_RTTOV 0x0008 |
Ben Cheng | 655a7c0 | 2013-10-16 16:09:24 -0700 | [diff] [blame] | 197 | #define FC_SP_FT_HALF 0x0004 |
| 198 | #define FC_SP_FT_SEQC 0x0002 |
| 199 | #define FC_SP_FT_PAYL 0x0001 |
| 200 | struct fc_els_cssp { |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 201 | __be16 cp_class; |
| 202 | __be16 cp_init; |
| 203 | __be16 cp_recip; |
| 204 | __be16 cp_rdfs; |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 205 | __be16 cp_con_seq; |
| 206 | __be16 cp_ee_cred; |
| 207 | __u8 cp_resv1; |
| 208 | __u8 cp_open_seq; |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 209 | __u8 _cp_resv2[2]; |
Ben Cheng | 655a7c0 | 2013-10-16 16:09:24 -0700 | [diff] [blame] | 210 | }; |
| 211 | #define FC_CPC_VALID 0x8000 |
| 212 | #define FC_CPC_IMIX 0x4000 |
Ben Cheng | 655a7c0 | 2013-10-16 16:09:24 -0700 | [diff] [blame] | 213 | #define FC_CPC_SEQ 0x0800 |
| 214 | #define FC_CPC_CAMP 0x0200 |
| 215 | #define FC_CPC_PRI 0x0080 |
| 216 | #define FC_CPI_CSYN 0x0010 |
Ben Cheng | 655a7c0 | 2013-10-16 16:09:24 -0700 | [diff] [blame] | 217 | #define FC_CPR_CSYN 0x0008 |
| 218 | struct fc_els_flogi { |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 219 | __u8 fl_cmd; |
| 220 | __u8 _fl_resvd[3]; |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 221 | struct fc_els_csp fl_csp; |
| 222 | __be64 fl_wwpn; |
| 223 | __be64 fl_wwnn; |
| 224 | struct fc_els_cssp fl_cssp[4]; |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 225 | __u8 fl_vend[16]; |
Ben Cheng | 655a7c0 | 2013-10-16 16:09:24 -0700 | [diff] [blame] | 226 | } __attribute__((__packed__)); |
| 227 | struct fc_els_spp { |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 228 | __u8 spp_type; |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 229 | __u8 spp_type_ext; |
| 230 | __u8 spp_flags; |
| 231 | __u8 _spp_resvd; |
| 232 | __be32 spp_orig_pa; |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 233 | __be32 spp_resp_pa; |
| 234 | __be32 spp_params; |
Ben Cheng | 655a7c0 | 2013-10-16 16:09:24 -0700 | [diff] [blame] | 235 | }; |
| 236 | #define FC_SPP_OPA_VAL 0x80 |
Ben Cheng | 655a7c0 | 2013-10-16 16:09:24 -0700 | [diff] [blame] | 237 | #define FC_SPP_RPA_VAL 0x40 |
| 238 | #define FC_SPP_EST_IMG_PAIR 0x20 |
| 239 | #define FC_SPP_RESP_MASK 0x0f |
| 240 | enum fc_els_spp_resp { |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 241 | FC_SPP_RESP_ACK = 1, |
| 242 | FC_SPP_RESP_RES = 2, |
| 243 | FC_SPP_RESP_INIT = 3, |
| 244 | FC_SPP_RESP_NO_PA = 4, |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 245 | FC_SPP_RESP_CONF = 5, |
| 246 | FC_SPP_RESP_COND = 6, |
| 247 | FC_SPP_RESP_MULT = 7, |
| 248 | FC_SPP_RESP_INVL = 8, |
Ben Cheng | 655a7c0 | 2013-10-16 16:09:24 -0700 | [diff] [blame] | 249 | }; |
| 250 | struct fc_els_rrq { |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 251 | __u8 rrq_cmd; |
| 252 | __u8 rrq_zero[3]; |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 253 | __u8 rrq_resvd; |
| 254 | __u8 rrq_s_id[3]; |
| 255 | __be16 rrq_ox_id; |
| 256 | __be16 rrq_rx_id; |
Ben Cheng | 655a7c0 | 2013-10-16 16:09:24 -0700 | [diff] [blame] | 257 | }; |
| 258 | struct fc_els_rec { |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 259 | __u8 rec_cmd; |
| 260 | __u8 rec_zero[3]; |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 261 | __u8 rec_resvd; |
| 262 | __u8 rec_s_id[3]; |
| 263 | __be16 rec_ox_id; |
| 264 | __be16 rec_rx_id; |
Ben Cheng | 655a7c0 | 2013-10-16 16:09:24 -0700 | [diff] [blame] | 265 | }; |
| 266 | struct fc_els_rec_acc { |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 267 | __u8 reca_cmd; |
| 268 | __u8 reca_zero[3]; |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 269 | __be16 reca_ox_id; |
| 270 | __be16 reca_rx_id; |
| 271 | __u8 reca_resvd1; |
| 272 | __u8 reca_ofid[3]; |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 273 | __u8 reca_resvd2; |
| 274 | __u8 reca_rfid[3]; |
| 275 | __be32 reca_fc4value; |
| 276 | __be32 reca_e_stat; |
Ben Cheng | 655a7c0 | 2013-10-16 16:09:24 -0700 | [diff] [blame] | 277 | }; |
| 278 | struct fc_els_prli { |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 279 | __u8 prli_cmd; |
| 280 | __u8 prli_spp_len; |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 281 | __be16 prli_len; |
Ben Cheng | 655a7c0 | 2013-10-16 16:09:24 -0700 | [diff] [blame] | 282 | }; |
| 283 | struct fc_els_prlo { |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 284 | __u8 prlo_cmd; |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 285 | __u8 prlo_obs; |
| 286 | __be16 prlo_len; |
Ben Cheng | 655a7c0 | 2013-10-16 16:09:24 -0700 | [diff] [blame] | 287 | }; |
| 288 | struct fc_els_adisc { |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 289 | __u8 adisc_cmd; |
| 290 | __u8 adisc_resv[3]; |
| 291 | __u8 adisc_resv1; |
| 292 | __u8 adisc_hard_addr[3]; |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 293 | __be64 adisc_wwpn; |
| 294 | __be64 adisc_wwnn; |
| 295 | __u8 adisc_resv2; |
| 296 | __u8 adisc_port_id[3]; |
Ben Cheng | 655a7c0 | 2013-10-16 16:09:24 -0700 | [diff] [blame] | 297 | } __attribute__((__packed__)); |
| 298 | struct fc_els_logo { |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 299 | __u8 fl_cmd; |
| 300 | __u8 fl_zero[3]; |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 301 | __u8 fl_resvd; |
| 302 | __u8 fl_n_port_id[3]; |
| 303 | __be64 fl_n_port_wwn; |
Ben Cheng | 655a7c0 | 2013-10-16 16:09:24 -0700 | [diff] [blame] | 304 | }; |
Ben Cheng | 655a7c0 | 2013-10-16 16:09:24 -0700 | [diff] [blame] | 305 | struct fc_els_rtv { |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 306 | __u8 rtv_cmd; |
| 307 | __u8 rtv_zero[3]; |
Ben Cheng | 655a7c0 | 2013-10-16 16:09:24 -0700 | [diff] [blame] | 308 | }; |
Ben Cheng | 655a7c0 | 2013-10-16 16:09:24 -0700 | [diff] [blame] | 309 | struct fc_els_rtv_acc { |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 310 | __u8 rtv_cmd; |
| 311 | __u8 rtv_zero[3]; |
| 312 | __be32 rtv_r_a_tov; |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 313 | __be32 rtv_e_d_tov; |
| 314 | __be32 rtv_toq; |
Ben Cheng | 655a7c0 | 2013-10-16 16:09:24 -0700 | [diff] [blame] | 315 | }; |
| 316 | #define FC_ELS_RTV_EDRES (1 << 26) |
Ben Cheng | 655a7c0 | 2013-10-16 16:09:24 -0700 | [diff] [blame] | 317 | #define FC_ELS_RTV_RTTOV (1 << 19) |
| 318 | struct fc_els_scr { |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 319 | __u8 scr_cmd; |
| 320 | __u8 scr_resv[6]; |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 321 | __u8 scr_reg_func; |
Ben Cheng | 655a7c0 | 2013-10-16 16:09:24 -0700 | [diff] [blame] | 322 | }; |
| 323 | enum fc_els_scr_func { |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 324 | ELS_SCRF_FAB = 1, |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 325 | ELS_SCRF_NPORT = 2, |
| 326 | ELS_SCRF_FULL = 3, |
| 327 | ELS_SCRF_CLEAR = 255, |
Ben Cheng | 655a7c0 | 2013-10-16 16:09:24 -0700 | [diff] [blame] | 328 | }; |
Ben Cheng | 655a7c0 | 2013-10-16 16:09:24 -0700 | [diff] [blame] | 329 | struct fc_els_rscn { |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 330 | __u8 rscn_cmd; |
| 331 | __u8 rscn_page_len; |
| 332 | __be16 rscn_plen; |
Ben Cheng | 655a7c0 | 2013-10-16 16:09:24 -0700 | [diff] [blame] | 333 | }; |
| 334 | struct fc_els_rscn_page { |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 335 | __u8 rscn_page_flags; |
| 336 | __u8 rscn_fid[3]; |
Ben Cheng | 655a7c0 | 2013-10-16 16:09:24 -0700 | [diff] [blame] | 337 | }; |
| 338 | #define ELS_RSCN_EV_QUAL_BIT 2 |
| 339 | #define ELS_RSCN_EV_QUAL_MASK 0xf |
| 340 | #define ELS_RSCN_ADDR_FMT_BIT 0 |
Ben Cheng | 655a7c0 | 2013-10-16 16:09:24 -0700 | [diff] [blame] | 341 | #define ELS_RSCN_ADDR_FMT_MASK 0x3 |
| 342 | enum fc_els_rscn_ev_qual { |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 343 | ELS_EV_QUAL_NONE = 0, |
| 344 | ELS_EV_QUAL_NS_OBJ = 1, |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 345 | ELS_EV_QUAL_PORT_ATTR = 2, |
| 346 | ELS_EV_QUAL_SERV_OBJ = 3, |
| 347 | ELS_EV_QUAL_SW_CONFIG = 4, |
| 348 | ELS_EV_QUAL_REM_OBJ = 5, |
Ben Cheng | 655a7c0 | 2013-10-16 16:09:24 -0700 | [diff] [blame] | 349 | }; |
| 350 | enum fc_els_rscn_addr_fmt { |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 351 | ELS_ADDR_FMT_PORT = 0, |
| 352 | ELS_ADDR_FMT_AREA = 1, |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 353 | ELS_ADDR_FMT_DOM = 2, |
| 354 | ELS_ADDR_FMT_FAB = 3, |
Ben Cheng | 655a7c0 | 2013-10-16 16:09:24 -0700 | [diff] [blame] | 355 | }; |
| 356 | struct fc_els_rnid { |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 357 | __u8 rnid_cmd; |
| 358 | __u8 rnid_resv[3]; |
| 359 | __u8 rnid_fmt; |
| 360 | __u8 rnid_resv2[3]; |
Ben Cheng | 655a7c0 | 2013-10-16 16:09:24 -0700 | [diff] [blame] | 361 | }; |
| 362 | enum fc_els_rnid_fmt { |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 363 | ELS_RNIDF_NONE = 0, |
| 364 | ELS_RNIDF_GEN = 0xdf, |
Ben Cheng | 655a7c0 | 2013-10-16 16:09:24 -0700 | [diff] [blame] | 365 | }; |
| 366 | struct fc_els_rnid_resp { |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 367 | __u8 rnid_cmd; |
| 368 | __u8 rnid_resv[3]; |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 369 | __u8 rnid_fmt; |
| 370 | __u8 rnid_cid_len; |
| 371 | __u8 rnid_resv2; |
| 372 | __u8 rnid_sid_len; |
Ben Cheng | 655a7c0 | 2013-10-16 16:09:24 -0700 | [diff] [blame] | 373 | }; |
| 374 | struct fc_els_rnid_cid { |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 375 | __be64 rnid_wwpn; |
| 376 | __be64 rnid_wwnn; |
Ben Cheng | 655a7c0 | 2013-10-16 16:09:24 -0700 | [diff] [blame] | 377 | }; |
| 378 | struct fc_els_rnid_gen { |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 379 | __u8 rnid_vend_id[16]; |
| 380 | __be32 rnid_atype; |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 381 | __be32 rnid_phys_port; |
| 382 | __be32 rnid_att_nodes; |
| 383 | __u8 rnid_node_mgmt; |
| 384 | __u8 rnid_ip_ver; |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 385 | __be16 rnid_prot_port; |
| 386 | __be32 rnid_ip_addr[4]; |
| 387 | __u8 rnid_resvd[2]; |
| 388 | __be16 rnid_vend_spec; |
Ben Cheng | 655a7c0 | 2013-10-16 16:09:24 -0700 | [diff] [blame] | 389 | }; |
| 390 | enum fc_els_rnid_atype { |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 391 | ELS_RNIDA_UNK = 0x01, |
| 392 | ELS_RNIDA_OTHER = 0x02, |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 393 | ELS_RNIDA_HUB = 0x03, |
| 394 | ELS_RNIDA_SWITCH = 0x04, |
| 395 | ELS_RNIDA_GATEWAY = 0x05, |
| 396 | ELS_RNIDA_CONV = 0x06, |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 397 | ELS_RNIDA_HBA = 0x07, |
| 398 | ELS_RNIDA_PROXY = 0x08, |
| 399 | ELS_RNIDA_STORAGE = 0x09, |
| 400 | ELS_RNIDA_HOST = 0x0a, |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 401 | ELS_RNIDA_SUBSYS = 0x0b, |
| 402 | ELS_RNIDA_ACCESS = 0x0e, |
| 403 | ELS_RNIDA_NAS = 0x11, |
| 404 | ELS_RNIDA_BRIDGE = 0x12, |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 405 | ELS_RNIDA_VIRT = 0x13, |
| 406 | ELS_RNIDA_MF = 0xff, |
| 407 | ELS_RNIDA_MF_HUB = 1UL << 31, |
| 408 | ELS_RNIDA_MF_SW = 1UL << 30, |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 409 | ELS_RNIDA_MF_GW = 1UL << 29, |
| 410 | ELS_RNIDA_MF_ST = 1UL << 28, |
| 411 | ELS_RNIDA_MF_HOST = 1UL << 27, |
| 412 | ELS_RNIDA_MF_SUB = 1UL << 26, |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 413 | ELS_RNIDA_MF_ACC = 1UL << 25, |
| 414 | ELS_RNIDA_MF_WDM = 1UL << 24, |
| 415 | ELS_RNIDA_MF_NAS = 1UL << 23, |
| 416 | ELS_RNIDA_MF_BR = 1UL << 22, |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 417 | ELS_RNIDA_MF_VIRT = 1UL << 21, |
Ben Cheng | 655a7c0 | 2013-10-16 16:09:24 -0700 | [diff] [blame] | 418 | }; |
| 419 | enum fc_els_rnid_mgmt { |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 420 | ELS_RNIDM_SNMP = 0, |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 421 | ELS_RNIDM_TELNET = 1, |
| 422 | ELS_RNIDM_HTTP = 2, |
| 423 | ELS_RNIDM_HTTPS = 3, |
| 424 | ELS_RNIDM_XML = 4, |
Ben Cheng | 655a7c0 | 2013-10-16 16:09:24 -0700 | [diff] [blame] | 425 | }; |
| 426 | enum fc_els_rnid_ipver { |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 427 | ELS_RNIDIP_NONE = 0, |
| 428 | ELS_RNIDIP_V4 = 1, |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 429 | ELS_RNIDIP_V6 = 2, |
Ben Cheng | 655a7c0 | 2013-10-16 16:09:24 -0700 | [diff] [blame] | 430 | }; |
| 431 | struct fc_els_rpl { |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 432 | __u8 rpl_cmd; |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 433 | __u8 rpl_resv[5]; |
| 434 | __be16 rpl_max_size; |
| 435 | __u8 rpl_resv1; |
| 436 | __u8 rpl_index[3]; |
Ben Cheng | 655a7c0 | 2013-10-16 16:09:24 -0700 | [diff] [blame] | 437 | }; |
| 438 | struct fc_els_pnb { |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 439 | __be32 pnb_phys_pn; |
| 440 | __u8 pnb_resv; |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 441 | __u8 pnb_port_id[3]; |
| 442 | __be64 pnb_wwpn; |
Ben Cheng | 655a7c0 | 2013-10-16 16:09:24 -0700 | [diff] [blame] | 443 | }; |
| 444 | struct fc_els_rpl_resp { |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 445 | __u8 rpl_cmd; |
| 446 | __u8 rpl_resv1; |
| 447 | __be16 rpl_plen; |
| 448 | __u8 rpl_resv2; |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 449 | __u8 rpl_llen[3]; |
| 450 | __u8 rpl_resv3; |
| 451 | __u8 rpl_index[3]; |
| 452 | struct fc_els_pnb rpl_pnb[1]; |
Ben Cheng | 655a7c0 | 2013-10-16 16:09:24 -0700 | [diff] [blame] | 453 | }; |
| 454 | struct fc_els_lesb { |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 455 | __be32 lesb_link_fail; |
| 456 | __be32 lesb_sync_loss; |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 457 | __be32 lesb_sig_loss; |
| 458 | __be32 lesb_prim_err; |
| 459 | __be32 lesb_inv_word; |
| 460 | __be32 lesb_inv_crc; |
Ben Cheng | 655a7c0 | 2013-10-16 16:09:24 -0700 | [diff] [blame] | 461 | }; |
| 462 | struct fc_els_rps { |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 463 | __u8 rps_cmd; |
| 464 | __u8 rps_resv[2]; |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 465 | __u8 rps_flag; |
| 466 | __be64 rps_port_spec; |
Ben Cheng | 655a7c0 | 2013-10-16 16:09:24 -0700 | [diff] [blame] | 467 | }; |
| 468 | enum fc_els_rps_flag { |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 469 | FC_ELS_RPS_DID = 0x00, |
| 470 | FC_ELS_RPS_PPN = 0x01, |
| 471 | FC_ELS_RPS_WWPN = 0x02, |
Ben Cheng | 655a7c0 | 2013-10-16 16:09:24 -0700 | [diff] [blame] | 472 | }; |
Ben Cheng | 655a7c0 | 2013-10-16 16:09:24 -0700 | [diff] [blame] | 473 | struct fc_els_rps_resp { |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 474 | __u8 rps_cmd; |
| 475 | __u8 rps_resv[2]; |
| 476 | __u8 rps_flag; |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 477 | __u8 rps_resv2[2]; |
| 478 | __be16 rps_status; |
| 479 | struct fc_els_lesb rps_lesb; |
Ben Cheng | 655a7c0 | 2013-10-16 16:09:24 -0700 | [diff] [blame] | 480 | }; |
Ben Cheng | 655a7c0 | 2013-10-16 16:09:24 -0700 | [diff] [blame] | 481 | enum fc_els_rps_resp_flag { |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 482 | FC_ELS_RPS_LPEV = 0x01, |
Ben Cheng | 655a7c0 | 2013-10-16 16:09:24 -0700 | [diff] [blame] | 483 | }; |
| 484 | enum fc_els_rps_resp_status { |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 485 | FC_ELS_RPS_PTP = 1 << 5, |
| 486 | FC_ELS_RPS_LOOP = 1 << 4, |
| 487 | FC_ELS_RPS_FAB = 1 << 3, |
| 488 | FC_ELS_RPS_NO_SIG = 1 << 2, |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 489 | FC_ELS_RPS_NO_SYNC = 1 << 1, |
| 490 | FC_ELS_RPS_RESET = 1 << 0, |
Ben Cheng | 655a7c0 | 2013-10-16 16:09:24 -0700 | [diff] [blame] | 491 | }; |
| 492 | struct fc_els_lirr { |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 493 | __u8 lirr_cmd; |
| 494 | __u8 lirr_resv[3]; |
| 495 | __u8 lirr_func; |
| 496 | __u8 lirr_fmt; |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 497 | __u8 lirr_resv2[2]; |
Ben Cheng | 655a7c0 | 2013-10-16 16:09:24 -0700 | [diff] [blame] | 498 | }; |
| 499 | enum fc_els_lirr_func { |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 500 | ELS_LIRR_SET_COND = 0x01, |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 501 | ELS_LIRR_SET_UNCOND = 0x02, |
| 502 | ELS_LIRR_CLEAR = 0xff |
Ben Cheng | 655a7c0 | 2013-10-16 16:09:24 -0700 | [diff] [blame] | 503 | }; |
| 504 | struct fc_els_srl { |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 505 | __u8 srl_cmd; |
| 506 | __u8 srl_resv[3]; |
| 507 | __u8 srl_flag; |
| 508 | __u8 srl_flag_param[3]; |
Ben Cheng | 655a7c0 | 2013-10-16 16:09:24 -0700 | [diff] [blame] | 509 | }; |
| 510 | enum fc_els_srl_flag { |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 511 | FC_ELS_SRL_ALL = 0x00, |
| 512 | FC_ELS_SRL_ONE = 0x01, |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 513 | FC_ELS_SRL_EN_PER = 0x02, |
| 514 | FC_ELS_SRL_DIS_PER = 0x03, |
Ben Cheng | 655a7c0 | 2013-10-16 16:09:24 -0700 | [diff] [blame] | 515 | }; |
| 516 | struct fc_els_rls { |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 517 | __u8 rls_cmd; |
| 518 | __u8 rls_resv[4]; |
| 519 | __u8 rls_port_id[3]; |
Ben Cheng | 655a7c0 | 2013-10-16 16:09:24 -0700 | [diff] [blame] | 520 | }; |
Ben Cheng | 655a7c0 | 2013-10-16 16:09:24 -0700 | [diff] [blame] | 521 | struct fc_els_rls_resp { |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 522 | __u8 rls_cmd; |
| 523 | __u8 rls_resv[3]; |
| 524 | struct fc_els_lesb rls_lesb; |
Ben Cheng | 655a7c0 | 2013-10-16 16:09:24 -0700 | [diff] [blame] | 525 | }; |
| 526 | struct fc_els_rlir { |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 527 | __u8 rlir_cmd; |
| 528 | __u8 rlir_resv[3]; |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 529 | __u8 rlir_fmt; |
| 530 | __u8 rlir_clr_len; |
| 531 | __u8 rlir_cld_len; |
| 532 | __u8 rlir_slr_len; |
Ben Cheng | 655a7c0 | 2013-10-16 16:09:24 -0700 | [diff] [blame] | 533 | }; |
| 534 | struct fc_els_clir { |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 535 | __be64 clir_wwpn; |
| 536 | __be64 clir_wwnn; |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 537 | __u8 clir_port_type; |
| 538 | __u8 clir_port_id[3]; |
| 539 | __be64 clir_conn_wwpn; |
| 540 | __be64 clir_conn_wwnn; |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 541 | __be64 clir_fab_name; |
| 542 | __be32 clir_phys_port; |
| 543 | __be32 clir_trans_id; |
| 544 | __u8 clir_resv[3]; |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 545 | __u8 clir_ts_fmt; |
| 546 | __be64 clir_timestamp; |
Ben Cheng | 655a7c0 | 2013-10-16 16:09:24 -0700 | [diff] [blame] | 547 | }; |
| 548 | enum fc_els_clir_ts_fmt { |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 549 | ELS_CLIR_TS_UNKNOWN = 0, |
| 550 | ELS_CLIR_TS_SEC_FRAC = 1, |
| 551 | ELS_CLIR_TS_CSU = 2, |
Ben Cheng | 655a7c0 | 2013-10-16 16:09:24 -0700 | [diff] [blame] | 552 | }; |
Ben Cheng | 655a7c0 | 2013-10-16 16:09:24 -0700 | [diff] [blame] | 553 | struct fc_els_clid { |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 554 | __u8 clid_iq; |
| 555 | __u8 clid_ic; |
| 556 | __be16 clid_epai; |
Ben Cheng | 655a7c0 | 2013-10-16 16:09:24 -0700 | [diff] [blame] | 557 | }; |
| 558 | enum fc_els_clid_iq { |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 559 | ELS_CLID_SWITCH = 0x20, |
| 560 | ELS_CLID_E_PORT = 0x10, |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 561 | ELS_CLID_SEV_MASK = 0x0c, |
| 562 | ELS_CLID_SEV_INFO = 0x00, |
| 563 | ELS_CLID_SEV_INOP = 0x08, |
| 564 | ELS_CLID_SEV_DEG = 0x04, |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 565 | ELS_CLID_LASER = 0x02, |
| 566 | ELS_CLID_FRU = 0x01, |
Ben Cheng | 655a7c0 | 2013-10-16 16:09:24 -0700 | [diff] [blame] | 567 | }; |
| 568 | enum fc_els_clid_ic { |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 569 | ELS_CLID_IC_IMPL = 1, |
| 570 | ELS_CLID_IC_BER = 2, |
| 571 | ELS_CLID_IC_LOS = 3, |
| 572 | ELS_CLID_IC_NOS = 4, |
Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 573 | ELS_CLID_IC_PST = 5, |
| 574 | ELS_CLID_IC_INVAL = 6, |
| 575 | ELS_CLID_IC_LOOP_TO = 7, |
| 576 | ELS_CLID_IC_LIP = 8, |
Ben Cheng | 655a7c0 | 2013-10-16 16:09:24 -0700 | [diff] [blame] | 577 | }; |
Christopher Ferris | af09c70 | 2020-06-01 20:29:29 -0700 | [diff] [blame] | 578 | enum fc_fpin_li_event_types { |
| 579 | FPIN_LI_UNKNOWN = 0x0, |
| 580 | FPIN_LI_LINK_FAILURE = 0x1, |
| 581 | FPIN_LI_LOSS_OF_SYNC = 0x2, |
| 582 | FPIN_LI_LOSS_OF_SIG = 0x3, |
| 583 | FPIN_LI_PRIM_SEQ_ERR = 0x4, |
| 584 | FPIN_LI_INVALID_TX_WD = 0x5, |
| 585 | FPIN_LI_INVALID_CRC = 0x6, |
| 586 | FPIN_LI_DEVICE_SPEC = 0xF, |
Christopher Ferris | aeddbcf | 2019-07-08 12:45:46 -0700 | [diff] [blame] | 587 | }; |
Christopher Ferris | af09c70 | 2020-06-01 20:29:29 -0700 | [diff] [blame] | 588 | #define FC_FPIN_LI_EVT_TYPES_INIT { { FPIN_LI_UNKNOWN, "Unknown" }, { FPIN_LI_LINK_FAILURE, "Link Failure" }, { FPIN_LI_LOSS_OF_SYNC, "Loss of Synchronization" }, { FPIN_LI_LOSS_OF_SIG, "Loss of Signal" }, { FPIN_LI_PRIM_SEQ_ERR, "Primitive Sequence Protocol Error" }, { FPIN_LI_INVALID_TX_WD, "Invalid Transmission Word" }, { FPIN_LI_INVALID_CRC, "Invalid CRC" }, { FPIN_LI_DEVICE_SPEC, "Device Specific" }, \ |
| 589 | } |
Christopher Ferris | 05667cd | 2021-02-16 16:01:34 -0800 | [diff] [blame] | 590 | enum fc_fpin_deli_event_types { |
| 591 | FPIN_DELI_UNKNOWN = 0x0, |
| 592 | FPIN_DELI_TIMEOUT = 0x1, |
| 593 | FPIN_DELI_UNABLE_TO_ROUTE = 0x2, |
| 594 | FPIN_DELI_DEVICE_SPEC = 0xF, |
| 595 | }; |
| 596 | #define FC_FPIN_DELI_EVT_TYPES_INIT { { FPIN_DELI_UNKNOWN, "Unknown" }, { FPIN_DELI_TIMEOUT, "Timeout" }, { FPIN_DELI_UNABLE_TO_ROUTE, "Unable to Route" }, { FPIN_DELI_DEVICE_SPEC, "Device Specific" }, \ |
| 597 | } |
| 598 | enum fc_fpin_congn_event_types { |
| 599 | FPIN_CONGN_CLEAR = 0x0, |
| 600 | FPIN_CONGN_LOST_CREDIT = 0x1, |
| 601 | FPIN_CONGN_CREDIT_STALL = 0x2, |
| 602 | FPIN_CONGN_OVERSUBSCRIPTION = 0x3, |
| 603 | FPIN_CONGN_DEVICE_SPEC = 0xF, |
| 604 | }; |
| 605 | #define FC_FPIN_CONGN_EVT_TYPES_INIT { { FPIN_CONGN_CLEAR, "Clear" }, { FPIN_CONGN_LOST_CREDIT, "Lost Credit" }, { FPIN_CONGN_CREDIT_STALL, "Credit Stall" }, { FPIN_CONGN_OVERSUBSCRIPTION, "Oversubscription" }, { FPIN_CONGN_DEVICE_SPEC, "Device Specific" }, \ |
| 606 | } |
| 607 | enum fc_fpin_congn_severity_types { |
| 608 | FPIN_CONGN_SEVERITY_WARNING = 0xF1, |
| 609 | FPIN_CONGN_SEVERITY_ERROR = 0xF7, |
| 610 | }; |
Christopher Ferris | af09c70 | 2020-06-01 20:29:29 -0700 | [diff] [blame] | 611 | struct fc_fn_li_desc { |
| 612 | __be32 desc_tag; |
| 613 | __be32 desc_len; |
| 614 | __be64 detecting_wwpn; |
| 615 | __be64 attached_wwpn; |
| 616 | __be16 event_type; |
| 617 | __be16 event_modifier; |
| 618 | __be32 event_threshold; |
| 619 | __be32 event_count; |
| 620 | __be32 pname_count; |
Christopher Ferris | 7447a1c | 2022-10-04 18:24:44 -0700 | [diff] [blame^] | 621 | __be64 pname_list[]; |
Christopher Ferris | aeddbcf | 2019-07-08 12:45:46 -0700 | [diff] [blame] | 622 | }; |
Christopher Ferris | 05667cd | 2021-02-16 16:01:34 -0800 | [diff] [blame] | 623 | struct fc_fn_deli_desc { |
| 624 | __be32 desc_tag; |
| 625 | __be32 desc_len; |
| 626 | __be64 detecting_wwpn; |
| 627 | __be64 attached_wwpn; |
| 628 | __be32 deli_reason_code; |
| 629 | }; |
| 630 | struct fc_fn_peer_congn_desc { |
| 631 | __be32 desc_tag; |
| 632 | __be32 desc_len; |
| 633 | __be64 detecting_wwpn; |
| 634 | __be64 attached_wwpn; |
| 635 | __be16 event_type; |
| 636 | __be16 event_modifier; |
| 637 | __be32 event_period; |
| 638 | __be32 pname_count; |
Christopher Ferris | 7447a1c | 2022-10-04 18:24:44 -0700 | [diff] [blame^] | 639 | __be64 pname_list[]; |
Christopher Ferris | 05667cd | 2021-02-16 16:01:34 -0800 | [diff] [blame] | 640 | }; |
| 641 | struct fc_fn_congn_desc { |
| 642 | __be32 desc_tag; |
| 643 | __be32 desc_len; |
| 644 | __be16 event_type; |
| 645 | __be16 event_modifier; |
| 646 | __be32 event_period; |
| 647 | __u8 severity; |
| 648 | __u8 resv[3]; |
| 649 | }; |
Christopher Ferris | aeddbcf | 2019-07-08 12:45:46 -0700 | [diff] [blame] | 650 | struct fc_els_fpin { |
| 651 | __u8 fpin_cmd; |
| 652 | __u8 fpin_zero[3]; |
Christopher Ferris | af09c70 | 2020-06-01 20:29:29 -0700 | [diff] [blame] | 653 | __be32 desc_len; |
Christopher Ferris | 7447a1c | 2022-10-04 18:24:44 -0700 | [diff] [blame^] | 654 | struct fc_tlv_desc fpin_desc[]; |
Christopher Ferris | af09c70 | 2020-06-01 20:29:29 -0700 | [diff] [blame] | 655 | }; |
| 656 | struct fc_df_desc_fpin_reg { |
| 657 | __be32 desc_tag; |
| 658 | __be32 desc_len; |
| 659 | __be32 count; |
Christopher Ferris | 7447a1c | 2022-10-04 18:24:44 -0700 | [diff] [blame^] | 660 | __be32 desc_tags[]; |
Christopher Ferris | af09c70 | 2020-06-01 20:29:29 -0700 | [diff] [blame] | 661 | }; |
| 662 | struct fc_els_rdf { |
| 663 | __u8 fpin_cmd; |
| 664 | __u8 fpin_zero[3]; |
| 665 | __be32 desc_len; |
Christopher Ferris | 7447a1c | 2022-10-04 18:24:44 -0700 | [diff] [blame^] | 666 | struct fc_tlv_desc desc[]; |
Christopher Ferris | af09c70 | 2020-06-01 20:29:29 -0700 | [diff] [blame] | 667 | }; |
| 668 | struct fc_els_rdf_resp { |
| 669 | struct fc_els_ls_acc acc_hdr; |
| 670 | __be32 desc_list_len; |
| 671 | struct fc_els_lsri_desc lsri; |
Christopher Ferris | 7447a1c | 2022-10-04 18:24:44 -0700 | [diff] [blame^] | 672 | struct fc_tlv_desc desc[]; |
Christopher Ferris | aeddbcf | 2019-07-08 12:45:46 -0700 | [diff] [blame] | 673 | }; |
Christopher Ferris | 2abfa9e | 2021-11-01 16:26:06 -0700 | [diff] [blame] | 674 | struct fc_diag_lnkflt_desc { |
| 675 | __be32 desc_tag; |
| 676 | __be32 desc_len; |
| 677 | __be32 degrade_activate_threshold; |
| 678 | __be32 degrade_deactivate_threshold; |
| 679 | __be32 fec_degrade_interval; |
| 680 | }; |
| 681 | enum fc_edc_cg_signal_cap_types { |
| 682 | EDC_CG_SIG_NOTSUPPORTED = 0x00, |
| 683 | EDC_CG_SIG_WARN_ONLY = 0x01, |
| 684 | EDC_CG_SIG_WARN_ALARM = 0x02, |
| 685 | }; |
| 686 | #define FC_EDC_CG_SIGNAL_CAP_TYPES_INIT { { EDC_CG_SIG_NOTSUPPORTED, "Signaling Not Supported" }, { EDC_CG_SIG_WARN_ONLY, "Warning Signal" }, { EDC_CG_SIG_WARN_ALARM, "Warning and Alarm Signals" }, \ |
| 687 | } |
| 688 | enum fc_diag_cg_sig_freq_types { |
| 689 | EDC_CG_SIGFREQ_CNT_MIN = 1, |
| 690 | EDC_CG_SIGFREQ_CNT_MAX = 999, |
| 691 | EDC_CG_SIGFREQ_SEC = 0x1, |
| 692 | EDC_CG_SIGFREQ_MSEC = 0x2, |
| 693 | }; |
| 694 | struct fc_diag_cg_sig_freq { |
| 695 | __be16 count; |
| 696 | __be16 units; |
| 697 | }; |
| 698 | struct fc_diag_cg_sig_desc { |
| 699 | __be32 desc_tag; |
| 700 | __be32 desc_len; |
| 701 | __be32 xmt_signal_capability; |
| 702 | struct fc_diag_cg_sig_freq xmt_signal_frequency; |
| 703 | __be32 rcv_signal_capability; |
| 704 | struct fc_diag_cg_sig_freq rcv_signal_frequency; |
| 705 | }; |
| 706 | struct fc_els_edc { |
| 707 | __u8 edc_cmd; |
| 708 | __u8 edc_zero[3]; |
| 709 | __be32 desc_len; |
Christopher Ferris | 7447a1c | 2022-10-04 18:24:44 -0700 | [diff] [blame^] | 710 | struct fc_tlv_desc desc[]; |
Christopher Ferris | 2abfa9e | 2021-11-01 16:26:06 -0700 | [diff] [blame] | 711 | }; |
| 712 | struct fc_els_edc_resp { |
| 713 | struct fc_els_ls_acc acc_hdr; |
| 714 | __be32 desc_list_len; |
| 715 | struct fc_els_lsri_desc lsri; |
Christopher Ferris | 7447a1c | 2022-10-04 18:24:44 -0700 | [diff] [blame^] | 716 | struct fc_tlv_desc desc[]; |
Christopher Ferris | 2abfa9e | 2021-11-01 16:26:06 -0700 | [diff] [blame] | 717 | }; |
Ben Cheng | 655a7c0 | 2013-10-16 16:09:24 -0700 | [diff] [blame] | 718 | #endif |