• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * This header was generated from the Linux kernel headers by update_headers.py,
3  * to provide necessary information from kernel to userspace, such as constants,
4  * structures, and macros, and thus, contains no copyrightable information.
5  */
6 #ifndef _FC_ELS_H_
7 #define	_FC_ELS_H_
8 #include <linux/types.h>
9 enum fc_els_cmd {
10 	ELS_LS_RJT =	0x01,
11 	ELS_LS_ACC =	0x02,
12 	ELS_PLOGI =	0x03,
13 	ELS_FLOGI =	0x04,
14 	ELS_LOGO =	0x05,
15 	ELS_ABTX =	0x06,
16 	ELS_RCS =	0x07,
17 	ELS_RES =	0x08,
18 	ELS_RSS =	0x09,
19 	ELS_RSI =	0x0a,
20 	ELS_ESTS =	0x0b,
21 	ELS_ESTC =	0x0c,
22 	ELS_ADVC =	0x0d,
23 	ELS_RTV =	0x0e,
24 	ELS_RLS =	0x0f,
25 	ELS_ECHO =	0x10,
26 	ELS_TEST =	0x11,
27 	ELS_RRQ =	0x12,
28 	ELS_REC =	0x13,
29 	ELS_SRR =	0x14,
30 	ELS_PRLI =	0x20,
31 	ELS_PRLO =	0x21,
32 	ELS_SCN =	0x22,
33 	ELS_TPLS =	0x23,
34 	ELS_TPRLO =	0x24,
35 	ELS_LCLM =	0x25,
36 	ELS_GAID =	0x30,
37 	ELS_FACT =	0x31,
38 	ELS_FDACDT =	0x32,
39 	ELS_NACT =	0x33,
40 	ELS_NDACT =	0x34,
41 	ELS_QOSR =	0x40,
42 	ELS_RVCS =	0x41,
43 	ELS_PDISC =	0x50,
44 	ELS_FDISC =	0x51,
45 	ELS_ADISC =	0x52,
46 	ELS_RNC =	0x53,
47 	ELS_FARP_REQ =	0x54,
48 	ELS_FARP_REPL =	0x55,
49 	ELS_RPS =	0x56,
50 	ELS_RPL =	0x57,
51 	ELS_RPBC =	0x58,
52 	ELS_FAN =	0x60,
53 	ELS_RSCN =	0x61,
54 	ELS_SCR =	0x62,
55 	ELS_RNFT =	0x63,
56 	ELS_CSR =	0x68,
57 	ELS_CSU =	0x69,
58 	ELS_LINIT =	0x70,
59 	ELS_LSTS =	0x72,
60 	ELS_RNID =	0x78,
61 	ELS_RLIR =	0x79,
62 	ELS_LIRR =	0x7a,
63 	ELS_SRL =	0x7b,
64 	ELS_SBRP =	0x7c,
65 	ELS_RPSC =	0x7d,
66 	ELS_QSA =	0x7e,
67 	ELS_EVFP =	0x7f,
68 	ELS_LKA =	0x80,
69 	ELS_AUTH_ELS =	0x90,
70 };
71 #define	FC_ELS_CMDS_INIT {			\
72 	[ELS_LS_RJT] =	"LS_RJT",		\
73 	[ELS_LS_ACC] =	"LS_ACC",		\
74 	[ELS_PLOGI] =	"PLOGI",		\
75 	[ELS_FLOGI] =	"FLOGI",		\
76 	[ELS_LOGO] =	"LOGO",			\
77 	[ELS_ABTX] =	"ABTX",			\
78 	[ELS_RCS] =	"RCS",			\
79 	[ELS_RES] =	"RES",			\
80 	[ELS_RSS] =	"RSS",			\
81 	[ELS_RSI] =	"RSI",			\
82 	[ELS_ESTS] =	"ESTS",			\
83 	[ELS_ESTC] =	"ESTC",			\
84 	[ELS_ADVC] =	"ADVC",			\
85 	[ELS_RTV] =	"RTV",			\
86 	[ELS_RLS] =	"RLS",			\
87 	[ELS_ECHO] =	"ECHO",			\
88 	[ELS_TEST] =	"TEST",			\
89 	[ELS_RRQ] =	"RRQ",			\
90 	[ELS_REC] =	"REC",			\
91 	[ELS_SRR] =	"SRR",			\
92 	[ELS_PRLI] =	"PRLI",			\
93 	[ELS_PRLO] =	"PRLO",			\
94 	[ELS_SCN] =	"SCN",			\
95 	[ELS_TPLS] =	"TPLS",			\
96 	[ELS_TPRLO] =	"TPRLO",		\
97 	[ELS_LCLM] =	"LCLM",			\
98 	[ELS_GAID] =	"GAID",			\
99 	[ELS_FACT] =	"FACT",			\
100 	[ELS_FDACDT] =	"FDACDT",		\
101 	[ELS_NACT] =	"NACT",			\
102 	[ELS_NDACT] =	"NDACT",		\
103 	[ELS_QOSR] =	"QOSR",			\
104 	[ELS_RVCS] =	"RVCS",			\
105 	[ELS_PDISC] =	"PDISC",		\
106 	[ELS_FDISC] =	"FDISC",		\
107 	[ELS_ADISC] =	"ADISC",		\
108 	[ELS_RNC] =	"RNC",			\
109 	[ELS_FARP_REQ] = "FARP_REQ",		\
110 	[ELS_FARP_REPL] =  "FARP_REPL",		\
111 	[ELS_RPS] =	"RPS",			\
112 	[ELS_RPL] =	"RPL",			\
113 	[ELS_RPBC] =	"RPBC",			\
114 	[ELS_FAN] =	"FAN",			\
115 	[ELS_RSCN] =	"RSCN",			\
116 	[ELS_SCR] =	"SCR",			\
117 	[ELS_RNFT] =	"RNFT",			\
118 	[ELS_CSR] =	"CSR",			\
119 	[ELS_CSU] =	"CSU",			\
120 	[ELS_LINIT] =	"LINIT",		\
121 	[ELS_LSTS] =	"LSTS",			\
122 	[ELS_RNID] =	"RNID",			\
123 	[ELS_RLIR] =	"RLIR",			\
124 	[ELS_LIRR] =	"LIRR",			\
125 	[ELS_SRL] =	"SRL",			\
126 	[ELS_SBRP] =	"SBRP",			\
127 	[ELS_RPSC] =	"RPSC",			\
128 	[ELS_QSA] =	"QSA",			\
129 	[ELS_EVFP] =	"EVFP",			\
130 	[ELS_LKA] =	"LKA",			\
131 	[ELS_AUTH_ELS] = "AUTH_ELS",		\
132 }
133 struct fc_els_ls_acc {
134 	__u8          la_cmd;
135 	__u8          la_resv[3];
136 };
137 struct fc_els_ls_rjt {
138 	__u8	er_cmd;
139 	__u8	er_resv[4];
140 	__u8	er_reason;
141 	__u8	er_explan;
142 	__u8	er_vendor;
143 };
144 enum fc_els_rjt_reason {
145 	ELS_RJT_NONE =		0,
146 	ELS_RJT_INVAL =		0x01,
147 	ELS_RJT_LOGIC =		0x03,
148 	ELS_RJT_BUSY =		0x05,
149 	ELS_RJT_PROT =		0x07,
150 	ELS_RJT_UNAB =		0x09,
151 	ELS_RJT_UNSUP =		0x0b,
152 	ELS_RJT_INPROG =	0x0e,
153 	ELS_RJT_FIP =		0x20,
154 	ELS_RJT_VENDOR =	0xff,
155 };
156 enum fc_els_rjt_explan {
157 	ELS_EXPL_NONE =		0x00,
158 	ELS_EXPL_SPP_OPT_ERR =	0x01,
159 	ELS_EXPL_SPP_ICTL_ERR =	0x03,
160 	ELS_EXPL_AH =		0x11,
161 	ELS_EXPL_AH_REQ =	0x13,
162 	ELS_EXPL_SID =		0x15,
163 	ELS_EXPL_OXID_RXID =	0x17,
164 	ELS_EXPL_INPROG =	0x19,
165 	ELS_EXPL_PLOGI_REQD =	0x1e,
166 	ELS_EXPL_INSUF_RES =	0x29,
167 	ELS_EXPL_UNAB_DATA =	0x2a,
168 	ELS_EXPL_UNSUPR =	0x2c,
169 	ELS_EXPL_INV_LEN =	0x2d,
170 	ELS_EXPL_NOT_NEIGHBOR = 0x62,
171 
172 };
173 struct fc_els_csp {
174 	__u8		sp_hi_ver;
175 	__u8		sp_lo_ver;
176 	__be16		sp_bb_cred;
177 	__be16		sp_features;
178 	__be16		sp_bb_data;
179 	union {
180 		struct {
181 			__be16	_sp_tot_seq;
182 			__be16	_sp_rel_off;
183 		} sp_plogi;
184 		struct {
185 			__be32	_sp_r_a_tov;
186 		} sp_flogi_acc;
187 	} sp_u;
188 	__be32		sp_e_d_tov;
189 };
190 #define	sp_tot_seq	sp_u.sp_plogi._sp_tot_seq
191 #define	sp_rel_off	sp_u.sp_plogi._sp_rel_off
192 #define	sp_r_a_tov	sp_u.sp_flogi_acc._sp_r_a_tov
193 #define	FC_SP_BB_DATA_MASK 0xfff
194 #define	FC_SP_MIN_MAX_PAYLOAD	FC_MIN_MAX_PAYLOAD
195 #define	FC_SP_MAX_MAX_PAYLOAD	FC_MAX_PAYLOAD
196 #define	FC_SP_FT_NPIV	0x8000
197 #define	FC_SP_FT_CIRO	0x8000
198 #define	FC_SP_FT_CLAD	0x8000
199 #define	FC_SP_FT_RAND	0x4000
200 #define	FC_SP_FT_VAL	0x2000
201 #define	FC_SP_FT_NPIV_ACC	0x2000
202 #define	FC_SP_FT_FPORT	0x1000
203 #define	FC_SP_FT_ABB	0x0800
204 #define	FC_SP_FT_EDTR	0x0400
205 #define	FC_SP_FT_MCAST	0x0200
206 #define	FC_SP_FT_BCAST	0x0100
207 #define	FC_SP_FT_HUNT	0x0080
208 #define	FC_SP_FT_SIMP	0x0040
209 #define	FC_SP_FT_SEC	0x0020
210 #define	FC_SP_FT_CSYN	0x0010
211 #define	FC_SP_FT_RTTOV	0x0008
212 #define	FC_SP_FT_HALF	0x0004
213 #define	FC_SP_FT_SEQC	0x0002
214 #define	FC_SP_FT_PAYL	0x0001
215 struct fc_els_cssp {
216 	__be16		cp_class;
217 	__be16		cp_init;
218 	__be16		cp_recip;
219 	__be16		cp_rdfs;
220 	__be16		cp_con_seq;
221 	__be16		cp_ee_cred;
222 	__u8		cp_resv1;
223 	__u8		cp_open_seq;
224 	__u8		_cp_resv2[2];
225 };
226 #define	FC_CPC_VALID	0x8000
227 #define	FC_CPC_IMIX	0x4000
228 #define	FC_CPC_SEQ	0x0800
229 #define	FC_CPC_CAMP	0x0200
230 #define	FC_CPC_PRI	0x0080
231 #define	FC_CPI_CSYN	0x0010
232 #define	FC_CPR_CSYN	0x0008
233 struct fc_els_flogi {
234 	__u8		fl_cmd;
235 	__u8		_fl_resvd[3];
236 	struct fc_els_csp fl_csp;
237 	__be64		fl_wwpn;
238 	__be64		fl_wwnn;
239 	struct fc_els_cssp fl_cssp[4];
240 	__u8		fl_vend[16];
241 } __attribute__((__packed__));
242 struct fc_els_spp {
243 	__u8		spp_type;
244 	__u8		spp_type_ext;
245 	__u8		spp_flags;
246 	__u8		_spp_resvd;
247 	__be32		spp_orig_pa;
248 	__be32		spp_resp_pa;
249 	__be32		spp_params;
250 };
251 #define	FC_SPP_OPA_VAL	    0x80
252 #define	FC_SPP_RPA_VAL	    0x40
253 #define	FC_SPP_EST_IMG_PAIR 0x20
254 #define	FC_SPP_RESP_MASK    0x0f
255 enum fc_els_spp_resp {
256 	FC_SPP_RESP_ACK	=	1,
257 	FC_SPP_RESP_RES =	2,
258 	FC_SPP_RESP_INIT =	3,
259 	FC_SPP_RESP_NO_PA = 	4,
260 	FC_SPP_RESP_CONF = 	5,
261 	FC_SPP_RESP_COND = 	6,
262 	FC_SPP_RESP_MULT = 	7,
263 	FC_SPP_RESP_INVL = 	8,
264 };
265 struct fc_els_rrq {
266 	__u8		rrq_cmd;
267 	__u8		rrq_zero[3];
268 	__u8		rrq_resvd;
269 	__u8		rrq_s_id[3];
270 	__be16		rrq_ox_id;
271 	__be16		rrq_rx_id;
272 };
273 struct fc_els_rec {
274 	__u8		rec_cmd;
275 	__u8		rec_zero[3];
276 	__u8		rec_resvd;
277 	__u8		rec_s_id[3];
278 	__be16		rec_ox_id;
279 	__be16		rec_rx_id;
280 };
281 struct fc_els_rec_acc {
282 	__u8		reca_cmd;
283 	__u8		reca_zero[3];
284 	__be16		reca_ox_id;
285 	__be16		reca_rx_id;
286 	__u8		reca_resvd1;
287 	__u8		reca_ofid[3];
288 	__u8		reca_resvd2;
289 	__u8		reca_rfid[3];
290 	__be32		reca_fc4value;
291 	__be32		reca_e_stat;
292 };
293 struct fc_els_prli {
294 	__u8		prli_cmd;
295 	__u8		prli_spp_len;
296 	__be16		prli_len;
297 
298 };
299 struct fc_els_prlo {
300 	__u8            prlo_cmd;
301 	__u8            prlo_obs;
302 	__be16          prlo_len;
303 };
304 struct fc_els_adisc {
305 	__u8		adisc_cmd;
306 	__u8		adisc_resv[3];
307 	__u8            adisc_resv1;
308 	__u8            adisc_hard_addr[3];
309 	__be64          adisc_wwpn;
310 	__be64          adisc_wwnn;
311 	__u8            adisc_resv2;
312 	__u8            adisc_port_id[3];
313 } __attribute__((__packed__));
314 struct fc_els_logo {
315 	__u8		fl_cmd;
316 	__u8		fl_zero[3];
317 	__u8		fl_resvd;
318 	__u8		fl_n_port_id[3];
319 	__be64		fl_n_port_wwn;
320 };
321 struct fc_els_rtv {
322 	__u8		rtv_cmd;
323 	__u8		rtv_zero[3];
324 };
325 struct fc_els_rtv_acc {
326 	__u8		rtv_cmd;
327 	__u8		rtv_zero[3];
328 	__be32		rtv_r_a_tov;
329 	__be32		rtv_e_d_tov;
330 	__be32		rtv_toq;
331 };
332 #define	FC_ELS_RTV_EDRES (1 << 26)
333 #define	FC_ELS_RTV_RTTOV (1 << 19)
334 struct fc_els_scr {
335 	__u8		scr_cmd;
336 	__u8		scr_resv[6];
337 	__u8		scr_reg_func;
338 };
339 enum fc_els_scr_func {
340 	ELS_SCRF_FAB =	1,
341 	ELS_SCRF_NPORT = 2,
342 	ELS_SCRF_FULL =	3,
343 	ELS_SCRF_CLEAR = 255,
344 };
345 struct fc_els_rscn {
346 	__u8		rscn_cmd;
347 	__u8		rscn_page_len;
348 	__be16		rscn_plen;
349 
350 };
351 struct fc_els_rscn_page {
352 	__u8		rscn_page_flags;
353 	__u8		rscn_fid[3];
354 };
355 #define	ELS_RSCN_EV_QUAL_BIT	2
356 #define	ELS_RSCN_EV_QUAL_MASK	0xf
357 #define	ELS_RSCN_ADDR_FMT_BIT	0
358 #define	ELS_RSCN_ADDR_FMT_MASK	0x3
359 enum fc_els_rscn_ev_qual {
360 	ELS_EV_QUAL_NONE = 0,
361 	ELS_EV_QUAL_NS_OBJ = 1,
362 	ELS_EV_QUAL_PORT_ATTR = 2,
363 	ELS_EV_QUAL_SERV_OBJ = 3,
364 	ELS_EV_QUAL_SW_CONFIG = 4,
365 	ELS_EV_QUAL_REM_OBJ = 5,
366 };
367 enum fc_els_rscn_addr_fmt {
368 	ELS_ADDR_FMT_PORT = 0,
369 	ELS_ADDR_FMT_AREA = 1,
370 	ELS_ADDR_FMT_DOM = 2,
371 	ELS_ADDR_FMT_FAB = 3,
372 };
373 struct fc_els_rnid {
374 	__u8		rnid_cmd;
375 	__u8		rnid_resv[3];
376 	__u8		rnid_fmt;
377 	__u8		rnid_resv2[3];
378 };
379 enum fc_els_rnid_fmt {
380 	ELS_RNIDF_NONE = 0,
381 	ELS_RNIDF_GEN = 0xdf,
382 };
383 struct fc_els_rnid_resp {
384 	__u8		rnid_cmd;
385 	__u8		rnid_resv[3];
386 	__u8		rnid_fmt;
387 	__u8		rnid_cid_len;
388 	__u8		rnid_resv2;
389 	__u8		rnid_sid_len;
390 };
391 struct fc_els_rnid_cid {
392 	__be64		rnid_wwpn;
393 	__be64		rnid_wwnn;
394 };
395 struct fc_els_rnid_gen {
396 	__u8		rnid_vend_id[16];
397 	__be32		rnid_atype;
398 	__be32		rnid_phys_port;
399 	__be32		rnid_att_nodes;
400 	__u8		rnid_node_mgmt;
401 	__u8		rnid_ip_ver;
402 	__be16		rnid_prot_port;
403 	__be32		rnid_ip_addr[4];
404 	__u8		rnid_resvd[2];
405 	__be16		rnid_vend_spec;
406 };
407 enum fc_els_rnid_atype {
408 	ELS_RNIDA_UNK =		0x01,
409 	ELS_RNIDA_OTHER =	0x02,
410 	ELS_RNIDA_HUB =		0x03,
411 	ELS_RNIDA_SWITCH =	0x04,
412 	ELS_RNIDA_GATEWAY =	0x05,
413 	ELS_RNIDA_CONV =	0x06,
414 	ELS_RNIDA_HBA =	        0x07,
415 	ELS_RNIDA_PROXY =       0x08,
416 	ELS_RNIDA_STORAGE =	0x09,
417 	ELS_RNIDA_HOST =	0x0a,
418 	ELS_RNIDA_SUBSYS =	0x0b,
419 	ELS_RNIDA_ACCESS =	0x0e,
420 	ELS_RNIDA_NAS =		0x11,
421 	ELS_RNIDA_BRIDGE =	0x12,
422 	ELS_RNIDA_VIRT =	0x13,
423 	ELS_RNIDA_MF =		0xff,
424 	ELS_RNIDA_MF_HUB =	1UL << 31,
425 	ELS_RNIDA_MF_SW =	1UL << 30,
426 	ELS_RNIDA_MF_GW =	1UL << 29,
427 	ELS_RNIDA_MF_ST =	1UL << 28,
428 	ELS_RNIDA_MF_HOST =	1UL << 27,
429 	ELS_RNIDA_MF_SUB =	1UL << 26,
430 	ELS_RNIDA_MF_ACC =	1UL << 25,
431 	ELS_RNIDA_MF_WDM =	1UL << 24,
432 	ELS_RNIDA_MF_NAS =	1UL << 23,
433 	ELS_RNIDA_MF_BR =	1UL << 22,
434 	ELS_RNIDA_MF_VIRT =	1UL << 21,
435 };
436 enum fc_els_rnid_mgmt {
437 	ELS_RNIDM_SNMP =	0,
438 	ELS_RNIDM_TELNET =	1,
439 	ELS_RNIDM_HTTP =	2,
440 	ELS_RNIDM_HTTPS =	3,
441 	ELS_RNIDM_XML =		4,
442 };
443 enum fc_els_rnid_ipver {
444 	ELS_RNIDIP_NONE =	0,
445 	ELS_RNIDIP_V4 =		1,
446 	ELS_RNIDIP_V6 =		2,
447 };
448 struct fc_els_rpl {
449 	__u8		rpl_cmd;
450 	__u8		rpl_resv[5];
451 	__be16		rpl_max_size;
452 	__u8		rpl_resv1;
453 	__u8		rpl_index[3];
454 };
455 struct fc_els_pnb {
456 	__be32		pnb_phys_pn;
457 	__u8		pnb_resv;
458 	__u8		pnb_port_id[3];
459 	__be64		pnb_wwpn;
460 };
461 struct fc_els_rpl_resp {
462 	__u8		rpl_cmd;
463 	__u8		rpl_resv1;
464 	__be16		rpl_plen;
465 	__u8		rpl_resv2;
466 	__u8		rpl_llen[3];
467 	__u8		rpl_resv3;
468 	__u8		rpl_index[3];
469 	struct fc_els_pnb rpl_pnb[1];
470 };
471 struct fc_els_lesb {
472 	__be32		lesb_link_fail;
473 	__be32		lesb_sync_loss;
474 	__be32		lesb_sig_loss;
475 	__be32		lesb_prim_err;
476 	__be32		lesb_inv_word;
477 	__be32		lesb_inv_crc;
478 };
479 struct fc_els_rps {
480 	__u8		rps_cmd;
481 	__u8		rps_resv[2];
482 	__u8		rps_flag;
483 	__be64		rps_port_spec;
484 };
485 enum fc_els_rps_flag {
486 	FC_ELS_RPS_DID =	0x00,
487 	FC_ELS_RPS_PPN =	0x01,
488 	FC_ELS_RPS_WWPN =	0x02,
489 };
490 struct fc_els_rps_resp {
491 	__u8		rps_cmd;
492 	__u8		rps_resv[2];
493 	__u8		rps_flag;
494 	__u8		rps_resv2[2];
495 	__be16		rps_status;
496 	struct fc_els_lesb rps_lesb;
497 };
498 enum fc_els_rps_resp_flag {
499 	FC_ELS_RPS_LPEV =	0x01,
500 };
501 enum fc_els_rps_resp_status {
502 	FC_ELS_RPS_PTP =	1 << 5,
503 	FC_ELS_RPS_LOOP =	1 << 4,
504 	FC_ELS_RPS_FAB =	1 << 3,
505 	FC_ELS_RPS_NO_SIG =	1 << 2,
506 	FC_ELS_RPS_NO_SYNC =	1 << 1,
507 	FC_ELS_RPS_RESET =	1 << 0,
508 };
509 struct fc_els_lirr {
510 	__u8		lirr_cmd;
511 	__u8		lirr_resv[3];
512 	__u8		lirr_func;
513 	__u8		lirr_fmt;
514 	__u8		lirr_resv2[2];
515 };
516 enum fc_els_lirr_func {
517 	ELS_LIRR_SET_COND = 	0x01,
518 	ELS_LIRR_SET_UNCOND = 	0x02,
519 	ELS_LIRR_CLEAR = 	0xff
520 };
521 struct fc_els_srl {
522 	__u8		srl_cmd;
523 	__u8		srl_resv[3];
524 	__u8		srl_flag;
525 	__u8		srl_flag_param[3];
526 };
527 enum fc_els_srl_flag {
528 	FC_ELS_SRL_ALL =	0x00,
529 	FC_ELS_SRL_ONE =	0x01,
530 	FC_ELS_SRL_EN_PER =	0x02,
531 	FC_ELS_SRL_DIS_PER =	0x03,
532 };
533 struct fc_els_rls {
534 	__u8		rls_cmd;
535 	__u8		rls_resv[4];
536 	__u8		rls_port_id[3];
537 };
538 struct fc_els_rls_resp {
539 	__u8		rls_cmd;
540 	__u8		rls_resv[3];
541 	struct fc_els_lesb rls_lesb;
542 };
543 struct fc_els_rlir {
544 	__u8		rlir_cmd;
545 	__u8		rlir_resv[3];
546 	__u8		rlir_fmt;
547 	__u8		rlir_clr_len;
548 	__u8		rlir_cld_len;
549 	__u8		rlir_slr_len;
550 };
551 struct fc_els_clir {
552 	__be64		clir_wwpn;
553 	__be64		clir_wwnn;
554 	__u8		clir_port_type;
555 	__u8		clir_port_id[3];
556 	__be64		clir_conn_wwpn;
557 	__be64		clir_conn_wwnn;
558 	__be64		clir_fab_name;
559 	__be32		clir_phys_port;
560 	__be32		clir_trans_id;
561 	__u8		clir_resv[3];
562 	__u8		clir_ts_fmt;
563 	__be64		clir_timestamp;
564 };
565 enum fc_els_clir_ts_fmt {
566 	ELS_CLIR_TS_UNKNOWN = 	0,
567 	ELS_CLIR_TS_SEC_FRAC = 	1,
568 	ELS_CLIR_TS_CSU =	2,
569 };
570 struct fc_els_clid {
571 	__u8		clid_iq;
572 	__u8		clid_ic;
573 	__be16		clid_epai;
574 };
575 enum fc_els_clid_iq {
576 	ELS_CLID_SWITCH =	0x20,
577 	ELS_CLID_E_PORT =	0x10,
578 	ELS_CLID_SEV_MASK =	0x0c,
579 	ELS_CLID_SEV_INFO =	0x00,
580 	ELS_CLID_SEV_INOP =	0x08,
581 	ELS_CLID_SEV_DEG =	0x04,
582 	ELS_CLID_LASER =	0x02,
583 	ELS_CLID_FRU =		0x01,
584 };
585 enum fc_els_clid_ic {
586 	ELS_CLID_IC_IMPL =	1,
587 	ELS_CLID_IC_BER =	2,
588 	ELS_CLID_IC_LOS =	3,
589 	ELS_CLID_IC_NOS =	4,
590 	ELS_CLID_IC_PST =	5,
591 	ELS_CLID_IC_INVAL =	6,
592 	ELS_CLID_IC_LOOP_TO =	7,
593 	ELS_CLID_IC_LIP =	8,
594 };
595 #endif
596