xref: /onnv-gate/usr/src/uts/common/sys/fibre-channel/fc_appif.h (revision 7836:4e95154b5b7a)
1*7836SJohn.Forte@Sun.COM /*
2*7836SJohn.Forte@Sun.COM  * CDDL HEADER START
3*7836SJohn.Forte@Sun.COM  *
4*7836SJohn.Forte@Sun.COM  * The contents of this file are subject to the terms of the
5*7836SJohn.Forte@Sun.COM  * Common Development and Distribution License (the "License").
6*7836SJohn.Forte@Sun.COM  * You may not use this file except in compliance with the License.
7*7836SJohn.Forte@Sun.COM  *
8*7836SJohn.Forte@Sun.COM  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9*7836SJohn.Forte@Sun.COM  * or http://www.opensolaris.org/os/licensing.
10*7836SJohn.Forte@Sun.COM  * See the License for the specific language governing permissions
11*7836SJohn.Forte@Sun.COM  * and limitations under the License.
12*7836SJohn.Forte@Sun.COM  *
13*7836SJohn.Forte@Sun.COM  * When distributing Covered Code, include this CDDL HEADER in each
14*7836SJohn.Forte@Sun.COM  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15*7836SJohn.Forte@Sun.COM  * If applicable, add the following below this CDDL HEADER, with the
16*7836SJohn.Forte@Sun.COM  * fields enclosed by brackets "[]" replaced with your own identifying
17*7836SJohn.Forte@Sun.COM  * information: Portions Copyright [yyyy] [name of copyright owner]
18*7836SJohn.Forte@Sun.COM  *
19*7836SJohn.Forte@Sun.COM  * CDDL HEADER END
20*7836SJohn.Forte@Sun.COM  */
21*7836SJohn.Forte@Sun.COM /*
22*7836SJohn.Forte@Sun.COM  * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
23*7836SJohn.Forte@Sun.COM  * Use is subject to license terms.
24*7836SJohn.Forte@Sun.COM  */
25*7836SJohn.Forte@Sun.COM 
26*7836SJohn.Forte@Sun.COM #ifndef	_FC_APPIF_H
27*7836SJohn.Forte@Sun.COM #define	_FC_APPIF_H
28*7836SJohn.Forte@Sun.COM 
29*7836SJohn.Forte@Sun.COM #include <sys/note.h>
30*7836SJohn.Forte@Sun.COM 
31*7836SJohn.Forte@Sun.COM #ifdef	__cplusplus
32*7836SJohn.Forte@Sun.COM extern "C" {
33*7836SJohn.Forte@Sun.COM #endif
34*7836SJohn.Forte@Sun.COM 
35*7836SJohn.Forte@Sun.COM #if !defined(_BIT_FIELDS_LTOH) && !defined(_BIT_FIELDS_HTOL)
36*7836SJohn.Forte@Sun.COM #error	One of _BIT_FIELDS_LTOH or _BIT_FIELDS_HTOL must be defined
37*7836SJohn.Forte@Sun.COM #endif	/* _BIT_FIELDS_LTOH */
38*7836SJohn.Forte@Sun.COM 
39*7836SJohn.Forte@Sun.COM /*
40*7836SJohn.Forte@Sun.COM  * Local port topology definitions
41*7836SJohn.Forte@Sun.COM  *
42*7836SJohn.Forte@Sun.COM  * fp/fctl use these a lot with the fp_topology field in the fc_port_t struct,
43*7836SJohn.Forte@Sun.COM  * but use is not limited to fp_topology. These are also understood by ULPs.
44*7836SJohn.Forte@Sun.COM  */
45*7836SJohn.Forte@Sun.COM #define	FC_TOP_UNKNOWN 		0
46*7836SJohn.Forte@Sun.COM #define	FC_TOP_PRIVATE_LOOP	1
47*7836SJohn.Forte@Sun.COM #define	FC_TOP_PUBLIC_LOOP	2
48*7836SJohn.Forte@Sun.COM #define	FC_TOP_FABRIC		3
49*7836SJohn.Forte@Sun.COM #define	FC_TOP_PT_PT		4
50*7836SJohn.Forte@Sun.COM #define	FC_TOP_NO_NS		5
51*7836SJohn.Forte@Sun.COM 
52*7836SJohn.Forte@Sun.COM /*
53*7836SJohn.Forte@Sun.COM  * Macros used with the preceeding topology #defines.
54*7836SJohn.Forte@Sun.COM  * fp/fctl use these a lot with the fp_topology field in the fc_port_t struct,
55*7836SJohn.Forte@Sun.COM  * but use is not limited to fp_topology. These are also understood by ULPs.
56*7836SJohn.Forte@Sun.COM  */
57*7836SJohn.Forte@Sun.COM #define	FC_TOP_EXTERNAL(t)	FC_IS_TOP_SWITCH(t)
58*7836SJohn.Forte@Sun.COM #define	FC_IS_TOP_SWITCH(t)	(((t) == FC_TOP_FABRIC) ||\
59*7836SJohn.Forte@Sun.COM 				((t) == FC_TOP_PUBLIC_LOOP))
60*7836SJohn.Forte@Sun.COM 
61*7836SJohn.Forte@Sun.COM /*
62*7836SJohn.Forte@Sun.COM  * fc_remote_port state (map_state) definitions.
63*7836SJohn.Forte@Sun.COM  *
64*7836SJohn.Forte@Sun.COM  * Used with the pd_state field in the fc_remote_port_t struct.
65*7836SJohn.Forte@Sun.COM  */
66*7836SJohn.Forte@Sun.COM #define	PORT_DEVICE_INVALID	0	/* State when created or login failed */
67*7836SJohn.Forte@Sun.COM #define	PORT_DEVICE_VALID	1	/* Logged out */
68*7836SJohn.Forte@Sun.COM #define	PORT_DEVICE_LOGGED_IN	2	/* Logged in */
69*7836SJohn.Forte@Sun.COM 
70*7836SJohn.Forte@Sun.COM 
71*7836SJohn.Forte@Sun.COM /*
72*7836SJohn.Forte@Sun.COM  * Firmware, FCode revision field lengths
73*7836SJohn.Forte@Sun.COM  */
74*7836SJohn.Forte@Sun.COM #define	FC_FCODE_REV_SIZE	25
75*7836SJohn.Forte@Sun.COM #define	FC_FW_REV_SIZE		25
76*7836SJohn.Forte@Sun.COM 
77*7836SJohn.Forte@Sun.COM typedef struct ct_header {
78*7836SJohn.Forte@Sun.COM #if defined(_BIT_FIELDS_LTOH)
79*7836SJohn.Forte@Sun.COM 	uint32_t	ct_inid	: 24,		/* Initial Node ID */
80*7836SJohn.Forte@Sun.COM 			ct_rev	: 8;		/* Revision */
81*7836SJohn.Forte@Sun.COM 
82*7836SJohn.Forte@Sun.COM 	uint32_t	ct_reserved1 : 8,
83*7836SJohn.Forte@Sun.COM 			ct_options : 8,
84*7836SJohn.Forte@Sun.COM 			ct_fcssubtype : 8,
85*7836SJohn.Forte@Sun.COM 			ct_fcstype : 8;
86*7836SJohn.Forte@Sun.COM 
87*7836SJohn.Forte@Sun.COM 	uint32_t	ct_aiusize : 16,
88*7836SJohn.Forte@Sun.COM 			ct_cmdrsp : 16;
89*7836SJohn.Forte@Sun.COM 
90*7836SJohn.Forte@Sun.COM 	uint32_t	ct_vendor : 8,
91*7836SJohn.Forte@Sun.COM 			ct_expln : 8,
92*7836SJohn.Forte@Sun.COM 			ct_reason : 8,
93*7836SJohn.Forte@Sun.COM 			ct_reserved2 : 8;
94*7836SJohn.Forte@Sun.COM 
95*7836SJohn.Forte@Sun.COM #else
96*7836SJohn.Forte@Sun.COM 	uint32_t	ct_rev : 8,		/* revision */
97*7836SJohn.Forte@Sun.COM 			ct_inid : 24;		/* initial node ID */
98*7836SJohn.Forte@Sun.COM 	uint32_t	ct_fcstype : 8,		/* type of service */
99*7836SJohn.Forte@Sun.COM 			ct_fcssubtype : 8,	/* subtype of service */
100*7836SJohn.Forte@Sun.COM 			ct_options : 8,		/* options */
101*7836SJohn.Forte@Sun.COM 			ct_reserved1 : 8;	/* reserved */
102*7836SJohn.Forte@Sun.COM 
103*7836SJohn.Forte@Sun.COM 	uint32_t	ct_cmdrsp : 16,		/* command/response code */
104*7836SJohn.Forte@Sun.COM 			ct_aiusize : 16;	/* AIU/residual size */
105*7836SJohn.Forte@Sun.COM 
106*7836SJohn.Forte@Sun.COM 	uint32_t	ct_reserved2 : 8,	/* reserved */
107*7836SJohn.Forte@Sun.COM 			ct_reason : 8,		/* reason code */
108*7836SJohn.Forte@Sun.COM 			ct_expln : 8,		/* reason explanation */
109*7836SJohn.Forte@Sun.COM 			ct_vendor : 8;		/* vendor unique */
110*7836SJohn.Forte@Sun.COM 
111*7836SJohn.Forte@Sun.COM #endif	/* _BIT_FIELDS_LTOH */
112*7836SJohn.Forte@Sun.COM } fc_ct_header_t;
113*7836SJohn.Forte@Sun.COM 
114*7836SJohn.Forte@Sun.COM /* World Wide Name format */
115*7836SJohn.Forte@Sun.COM typedef union la_wwn {
116*7836SJohn.Forte@Sun.COM 	uchar_t			raw_wwn[8];
117*7836SJohn.Forte@Sun.COM 	uint32_t		i_wwn[2];
118*7836SJohn.Forte@Sun.COM 
119*7836SJohn.Forte@Sun.COM #if defined(_BIT_FIELDS_LTOH)
120*7836SJohn.Forte@Sun.COM 	struct {
121*7836SJohn.Forte@Sun.COM 		uint32_t	wwn_hi : 16,
122*7836SJohn.Forte@Sun.COM 				nport_id : 12,
123*7836SJohn.Forte@Sun.COM 				naa_id : 4;
124*7836SJohn.Forte@Sun.COM 		uint32_t	wwn_lo;
125*7836SJohn.Forte@Sun.COM 	}w;
126*7836SJohn.Forte@Sun.COM 
127*7836SJohn.Forte@Sun.COM #else
128*7836SJohn.Forte@Sun.COM 	struct {
129*7836SJohn.Forte@Sun.COM 		uint32_t	naa_id : 4,
130*7836SJohn.Forte@Sun.COM 				nport_id : 12,
131*7836SJohn.Forte@Sun.COM 				wwn_hi : 16;
132*7836SJohn.Forte@Sun.COM 		uint32_t	wwn_lo;
133*7836SJohn.Forte@Sun.COM 	}w;
134*7836SJohn.Forte@Sun.COM #endif	/* _BIT_FIELDS_LTOH */
135*7836SJohn.Forte@Sun.COM } la_wwn_t;
136*7836SJohn.Forte@Sun.COM 
137*7836SJohn.Forte@Sun.COM /*
138*7836SJohn.Forte@Sun.COM  * Values for naa_id
139*7836SJohn.Forte@Sun.COM  */
140*7836SJohn.Forte@Sun.COM #define	NAA_ID_IEEE		1
141*7836SJohn.Forte@Sun.COM #define	NAA_ID_IEEE_EXTENDED	2
142*7836SJohn.Forte@Sun.COM 
143*7836SJohn.Forte@Sun.COM #ifndef	FC_WWN_SIZE
144*7836SJohn.Forte@Sun.COM #define	FC_WWN_SIZE		(sizeof (la_wwn_t))
145*7836SJohn.Forte@Sun.COM #endif /* FC_WWN_SIZE */
146*7836SJohn.Forte@Sun.COM 
147*7836SJohn.Forte@Sun.COM typedef struct service_param {
148*7836SJohn.Forte@Sun.COM 	uint16_t	class_opt;
149*7836SJohn.Forte@Sun.COM 	uint16_t	initiator_ctl;
150*7836SJohn.Forte@Sun.COM 	uint16_t	recipient_ctl;
151*7836SJohn.Forte@Sun.COM 	uint16_t	rcv_size;
152*7836SJohn.Forte@Sun.COM 	uint16_t	conc_sequences;
153*7836SJohn.Forte@Sun.COM 	uint16_t	n_port_e_to_e_credit;
154*7836SJohn.Forte@Sun.COM 	uint16_t	open_seq_per_xchng;
155*7836SJohn.Forte@Sun.COM 	uint16_t	rsvd;
156*7836SJohn.Forte@Sun.COM } svc_param_t;
157*7836SJohn.Forte@Sun.COM 
158*7836SJohn.Forte@Sun.COM typedef struct common_service {
159*7836SJohn.Forte@Sun.COM 	uint16_t    fcph_version;
160*7836SJohn.Forte@Sun.COM 	uint16_t    btob_credit;
161*7836SJohn.Forte@Sun.COM 	uint16_t    cmn_features;
162*7836SJohn.Forte@Sun.COM 	uint16_t    rx_bufsize;
163*7836SJohn.Forte@Sun.COM 	uint16_t    conc_sequences;
164*7836SJohn.Forte@Sun.COM 	uint16_t    relative_offset;
165*7836SJohn.Forte@Sun.COM 	uint32_t    e_d_tov;
166*7836SJohn.Forte@Sun.COM } com_svc_t;
167*7836SJohn.Forte@Sun.COM 
168*7836SJohn.Forte@Sun.COM typedef struct ls_code {
169*7836SJohn.Forte@Sun.COM #if defined(_BIT_FIELDS_LTOH)
170*7836SJohn.Forte@Sun.COM 	uint32_t	mbz : 24,
171*7836SJohn.Forte@Sun.COM 			ls_code : 8;
172*7836SJohn.Forte@Sun.COM 
173*7836SJohn.Forte@Sun.COM #else
174*7836SJohn.Forte@Sun.COM 	uint32_t	ls_code : 8,
175*7836SJohn.Forte@Sun.COM 			mbz : 24;
176*7836SJohn.Forte@Sun.COM #endif	/* _BIT_FIELDS_LTOH */
177*7836SJohn.Forte@Sun.COM } ls_code_t;
178*7836SJohn.Forte@Sun.COM 
179*7836SJohn.Forte@Sun.COM 
180*7836SJohn.Forte@Sun.COM /* Login Payload. */
181*7836SJohn.Forte@Sun.COM typedef struct la_els_logi {
182*7836SJohn.Forte@Sun.COM 	ls_code_t	ls_code;
183*7836SJohn.Forte@Sun.COM 	com_svc_t	common_service;
184*7836SJohn.Forte@Sun.COM 
185*7836SJohn.Forte@Sun.COM 	la_wwn_t	nport_ww_name;
186*7836SJohn.Forte@Sun.COM 	la_wwn_t	node_ww_name;
187*7836SJohn.Forte@Sun.COM 
188*7836SJohn.Forte@Sun.COM 	svc_param_t	class_1;
189*7836SJohn.Forte@Sun.COM 	svc_param_t	class_2;
190*7836SJohn.Forte@Sun.COM 	svc_param_t	class_3;
191*7836SJohn.Forte@Sun.COM 
192*7836SJohn.Forte@Sun.COM 	uchar_t		reserved[16];
193*7836SJohn.Forte@Sun.COM 	uchar_t		vendor_version[16];
194*7836SJohn.Forte@Sun.COM } la_els_logi_t;
195*7836SJohn.Forte@Sun.COM 
196*7836SJohn.Forte@Sun.COM typedef struct fc_ns_cmd {
197*7836SJohn.Forte@Sun.COM 	uint32_t	ns_flags;		/* for future use */
198*7836SJohn.Forte@Sun.COM 	uint16_t	ns_cmd;			/* NS command type */
199*7836SJohn.Forte@Sun.COM 	uint16_t	ns_req_len;
200*7836SJohn.Forte@Sun.COM 	caddr_t		ns_req_payload;		/* No CT header */
201*7836SJohn.Forte@Sun.COM 	uint16_t	ns_resp_len;
202*7836SJohn.Forte@Sun.COM 	caddr_t		ns_resp_payload;	/* no CT header */
203*7836SJohn.Forte@Sun.COM 	void		*ns_fctl_private;	/* Transport private */
204*7836SJohn.Forte@Sun.COM 	fc_ct_header_t	ns_resp_hdr;		/* for the curious */
205*7836SJohn.Forte@Sun.COM } fc_ns_cmd_t;
206*7836SJohn.Forte@Sun.COM 
207*7836SJohn.Forte@Sun.COM #if defined(_SYSCALL32)
208*7836SJohn.Forte@Sun.COM 
209*7836SJohn.Forte@Sun.COM #if _LONG_LONG_ALIGNMENT == 8 && _LONG_LONG_ALIGNMENT_32 == 4
210*7836SJohn.Forte@Sun.COM #pragma pack(4)
211*7836SJohn.Forte@Sun.COM #endif
212*7836SJohn.Forte@Sun.COM 
213*7836SJohn.Forte@Sun.COM typedef struct la_els_logi32 {
214*7836SJohn.Forte@Sun.COM 	ls_code_t	ls_code;
215*7836SJohn.Forte@Sun.COM 	com_svc_t	common_service;
216*7836SJohn.Forte@Sun.COM 	la_wwn_t	nport_ww_name;
217*7836SJohn.Forte@Sun.COM 	la_wwn_t	node_ww_name;
218*7836SJohn.Forte@Sun.COM 	svc_param_t	class_1;
219*7836SJohn.Forte@Sun.COM 	svc_param_t	class_2;
220*7836SJohn.Forte@Sun.COM 	svc_param_t	class_3;
221*7836SJohn.Forte@Sun.COM 	uchar_t		reserved[16];
222*7836SJohn.Forte@Sun.COM 	uchar_t		vendor_version[16];
223*7836SJohn.Forte@Sun.COM } la_els_logi32_t;
224*7836SJohn.Forte@Sun.COM 
225*7836SJohn.Forte@Sun.COM typedef struct fc_ns_cmd32 {
226*7836SJohn.Forte@Sun.COM 	uint32_t	ns_flags;		/* for future use */
227*7836SJohn.Forte@Sun.COM 	uint16_t	ns_cmd;			/* NS command type */
228*7836SJohn.Forte@Sun.COM 	uint16_t	ns_req_len;
229*7836SJohn.Forte@Sun.COM 	caddr_t		ns_req_payload;		/* No CT header */
230*7836SJohn.Forte@Sun.COM 	uint16_t	ns_resp_len;
231*7836SJohn.Forte@Sun.COM 	caddr_t		ns_resp_payload;	/* no CT header */
232*7836SJohn.Forte@Sun.COM 	void		*ns_fctl_private;	/* Transport private */
233*7836SJohn.Forte@Sun.COM 	fc_ct_header_t	ns_resp_hdr;		/* for the curious */
234*7836SJohn.Forte@Sun.COM } fc_ns_cmd32_t;
235*7836SJohn.Forte@Sun.COM 
236*7836SJohn.Forte@Sun.COM #if _LONG_LONG_ALIGNMENT == 8 && _LONG_LONG_ALIGNMENT_32 == 4
237*7836SJohn.Forte@Sun.COM #pragma pack()
238*7836SJohn.Forte@Sun.COM #endif
239*7836SJohn.Forte@Sun.COM 
240*7836SJohn.Forte@Sun.COM #endif	/* _SYSCALL32 */
241*7836SJohn.Forte@Sun.COM 
242*7836SJohn.Forte@Sun.COM /* Link Error Parameters in the RLS Accept payload */
243*7836SJohn.Forte@Sun.COM typedef struct fc_rls_acc_params {
244*7836SJohn.Forte@Sun.COM 	uint32_t	rls_link_fail;		/* link failure count */
245*7836SJohn.Forte@Sun.COM 	uint32_t	rls_sync_loss;		/* loss of sync count */
246*7836SJohn.Forte@Sun.COM 	uint32_t	rls_sig_loss;		/* loss of signal count */
247*7836SJohn.Forte@Sun.COM 	uint32_t	rls_prim_seq_err;	/* primitive seq error */
248*7836SJohn.Forte@Sun.COM 	uint32_t	rls_invalid_word;	/* invalid tx word */
249*7836SJohn.Forte@Sun.COM 	uint32_t	rls_invalid_crc;	/* invalid CRC count */
250*7836SJohn.Forte@Sun.COM } fc_rls_acc_t;
251*7836SJohn.Forte@Sun.COM 
252*7836SJohn.Forte@Sun.COM /* RLS Payload. */
253*7836SJohn.Forte@Sun.COM typedef struct la_els_rls {
254*7836SJohn.Forte@Sun.COM 	ls_code_t	ls_code;
255*7836SJohn.Forte@Sun.COM 	fc_portid_t	rls_portid;		/* port identifier */
256*7836SJohn.Forte@Sun.COM } la_els_rls_t;
257*7836SJohn.Forte@Sun.COM 
258*7836SJohn.Forte@Sun.COM /* RLS accept payload */
259*7836SJohn.Forte@Sun.COM typedef struct la_els_rls_acc {
260*7836SJohn.Forte@Sun.COM 	ls_code_t	ls_code;
261*7836SJohn.Forte@Sun.COM 	fc_rls_acc_t	rls_link_params;	/* link error status block */
262*7836SJohn.Forte@Sun.COM } la_els_rls_acc_t;
263*7836SJohn.Forte@Sun.COM 
264*7836SJohn.Forte@Sun.COM /* Node Id Parameters in the RNID Get/Set Accept/Request payload */
265*7836SJohn.Forte@Sun.COM typedef struct fc_rnid_params {
266*7836SJohn.Forte@Sun.COM 	uchar_t		global_id[16];		/* global name */
267*7836SJohn.Forte@Sun.COM 	uint32_t	unit_type;		/* unit type */
268*7836SJohn.Forte@Sun.COM 	uint32_t	port_id;		/* port id */
269*7836SJohn.Forte@Sun.COM 	uint32_t	num_attached;		/* number of attached nodes */
270*7836SJohn.Forte@Sun.COM 	uint16_t	ip_version;		/* ip version */
271*7836SJohn.Forte@Sun.COM 	uint16_t	udp_port;		/* udp port number */
272*7836SJohn.Forte@Sun.COM 	uchar_t		ip_addr[16];		/* ip address */
273*7836SJohn.Forte@Sun.COM 	uint16_t	specific_id_resv;	/* reserved */
274*7836SJohn.Forte@Sun.COM 	uint16_t	topo_flags;		/* topology discovery flags */
275*7836SJohn.Forte@Sun.COM } fc_rnid_t;
276*7836SJohn.Forte@Sun.COM 
277*7836SJohn.Forte@Sun.COM /* RNID get data format flag */
278*7836SJohn.Forte@Sun.COM #define	FCIO_CFLAGS_RNID_GET_GENERAL_TOPOLOGY	0xDF
279*7836SJohn.Forte@Sun.COM #define	FCIO_CFLAGS_RNID_GET_VENDOR_SPECIFIC	0xE0
280*7836SJohn.Forte@Sun.COM 
281*7836SJohn.Forte@Sun.COM /* RNID maximum data length - common data(16) + specific data(252) */
282*7836SJohn.Forte@Sun.COM #define	FCIO_RNID_MAX_DATA_LEN	268
283*7836SJohn.Forte@Sun.COM 
284*7836SJohn.Forte@Sun.COM /* RNID Payload. */
285*7836SJohn.Forte@Sun.COM typedef struct la_els_rnid {
286*7836SJohn.Forte@Sun.COM 	ls_code_t	ls_code;
287*7836SJohn.Forte@Sun.COM 	uchar_t		data_format;		/* data format returned */
288*7836SJohn.Forte@Sun.COM 	uchar_t		resv[3];
289*7836SJohn.Forte@Sun.COM } la_els_rnid_t;
290*7836SJohn.Forte@Sun.COM 
291*7836SJohn.Forte@Sun.COM /*
292*7836SJohn.Forte@Sun.COM  * ELS RNID header
293*7836SJohn.Forte@Sun.COM  * - cmn_len can be 0 or 16 - if it is 0 then specific data starts at
294*7836SJohn.Forte@Sun.COM  *   offset 8 else specific data starts at offset 24 in the RNID els response
295*7836SJohn.Forte@Sun.COM  */
296*7836SJohn.Forte@Sun.COM typedef struct fc_rnid_hdr {
297*7836SJohn.Forte@Sun.COM 	uchar_t		data_format;
298*7836SJohn.Forte@Sun.COM 	uchar_t		cmn_len;
299*7836SJohn.Forte@Sun.COM 	uchar_t		resv;
300*7836SJohn.Forte@Sun.COM 	uchar_t		specific_len;
301*7836SJohn.Forte@Sun.COM }fc_rnid_hdr_t;
302*7836SJohn.Forte@Sun.COM 
303*7836SJohn.Forte@Sun.COM typedef struct la_els_rnid_acc {
304*7836SJohn.Forte@Sun.COM 	ls_code_t	ls_code;
305*7836SJohn.Forte@Sun.COM 	fc_rnid_hdr_t  	hdr;
306*7836SJohn.Forte@Sun.COM 	uchar_t		data[FCIO_RNID_MAX_DATA_LEN];
307*7836SJohn.Forte@Sun.COM } la_els_rnid_acc_t;
308*7836SJohn.Forte@Sun.COM 
309*7836SJohn.Forte@Sun.COM typedef struct la_npiv_create_entry {
310*7836SJohn.Forte@Sun.COM 	la_wwn_t	VNodeWWN;
311*7836SJohn.Forte@Sun.COM 	la_wwn_t	VPortWWN;
312*7836SJohn.Forte@Sun.COM 	uint32_t	vindex;
313*7836SJohn.Forte@Sun.COM } la_npiv_create_entry_t;
314*7836SJohn.Forte@Sun.COM 
315*7836SJohn.Forte@Sun.COM #if	!defined(__lint)
316*7836SJohn.Forte@Sun.COM _NOTE(SCHEME_PROTECTS_DATA("unique per request", fc_ns_cmd))
317*7836SJohn.Forte@Sun.COM _NOTE(SCHEME_PROTECTS_DATA("unique per request", ct_header))
318*7836SJohn.Forte@Sun.COM _NOTE(SCHEME_PROTECTS_DATA("unique per request", la_els_logi))
319*7836SJohn.Forte@Sun.COM _NOTE(SCHEME_PROTECTS_DATA("unique per request", la_wwn))
320*7836SJohn.Forte@Sun.COM _NOTE(SCHEME_PROTECTS_DATA("unique per request", fc_rls_acc_params))
321*7836SJohn.Forte@Sun.COM _NOTE(SCHEME_PROTECTS_DATA("unique per request", la_els_rls))
322*7836SJohn.Forte@Sun.COM _NOTE(SCHEME_PROTECTS_DATA("unique per request", la_els_rls_acc))
323*7836SJohn.Forte@Sun.COM _NOTE(SCHEME_PROTECTS_DATA("unique per request", fc_rnid_params))
324*7836SJohn.Forte@Sun.COM _NOTE(SCHEME_PROTECTS_DATA("unique per request", la_els_rnid))
325*7836SJohn.Forte@Sun.COM _NOTE(SCHEME_PROTECTS_DATA("unique per request", la_els_rnid_acc))
326*7836SJohn.Forte@Sun.COM #endif /* __lint */
327*7836SJohn.Forte@Sun.COM 
328*7836SJohn.Forte@Sun.COM #ifdef	__cplusplus
329*7836SJohn.Forte@Sun.COM }
330*7836SJohn.Forte@Sun.COM #endif
331*7836SJohn.Forte@Sun.COM 
332*7836SJohn.Forte@Sun.COM #endif	/* _FC_APPIF_H */
333