1 /*
2  * Copyright (c) 2005-2010 Brocade Communications Systems, Inc.
3  * All rights reserved
4  * www.brocade.com
5  *
6  * Linux driver for Brocade Fibre Channel Host Bus Adapter.
7  *
8  * This program is free software; you can redistribute it and/or modify it
9  * under the terms of the GNU General Public License (GPL) Version 2 as
10  * published by the Free Software Foundation
11  *
12  * This program is distributed in the hope that it will be useful, but
13  * WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15  * General Public License for more details.
16  */
17 #ifndef BFAD_BSG_H
18 #define BFAD_BSG_H
19 
20 #include "bfa_defs.h"
21 #include "bfa_defs_fcs.h"
22 
23 /* Definitions of vendor unique structures and command codes passed in
24  * using FC_BSG_HST_VENDOR message code.
25  */
26 enum {
27 	IOCMD_IOC_ENABLE = 0x1,
28 	IOCMD_IOC_DISABLE,
29 	IOCMD_IOC_GET_ATTR,
30 	IOCMD_IOC_GET_INFO,
31 	IOCMD_IOC_GET_STATS,
32 	IOCMD_IOC_GET_FWSTATS,
33 	IOCMD_IOC_RESET_STATS,
34 	IOCMD_IOC_RESET_FWSTATS,
35 	IOCMD_IOC_SET_ADAPTER_NAME,
36 	IOCMD_IOC_SET_PORT_NAME,
37 	IOCMD_IOCFC_GET_ATTR,
38 	IOCMD_IOCFC_SET_INTR,
39 	IOCMD_PORT_ENABLE,
40 	IOCMD_PORT_DISABLE,
41 	IOCMD_PORT_GET_ATTR,
42 	IOCMD_PORT_GET_STATS,
43 	IOCMD_PORT_RESET_STATS,
44 	IOCMD_PORT_CFG_TOPO,
45 	IOCMD_PORT_CFG_SPEED,
46 	IOCMD_PORT_CFG_ALPA,
47 	IOCMD_PORT_CFG_MAXFRSZ,
48 	IOCMD_PORT_CLR_ALPA,
49 	IOCMD_PORT_BBSC_ENABLE,
50 	IOCMD_PORT_BBSC_DISABLE,
51 	IOCMD_LPORT_GET_ATTR,
52 	IOCMD_LPORT_GET_RPORTS,
53 	IOCMD_LPORT_GET_STATS,
54 	IOCMD_LPORT_RESET_STATS,
55 	IOCMD_LPORT_GET_IOSTATS,
56 	IOCMD_RPORT_GET_ATTR,
57 	IOCMD_RPORT_GET_ADDR,
58 	IOCMD_RPORT_GET_STATS,
59 	IOCMD_RPORT_RESET_STATS,
60 	IOCMD_RPORT_SET_SPEED,
61 	IOCMD_VPORT_GET_ATTR,
62 	IOCMD_VPORT_GET_STATS,
63 	IOCMD_VPORT_RESET_STATS,
64 	IOCMD_FABRIC_GET_LPORTS,
65 	IOCMD_RATELIM_ENABLE,
66 	IOCMD_RATELIM_DISABLE,
67 	IOCMD_RATELIM_DEF_SPEED,
68 	IOCMD_FCPIM_FAILOVER,
69 	IOCMD_FCPIM_MODSTATS,
70 	IOCMD_FCPIM_MODSTATSCLR,
71 	IOCMD_FCPIM_DEL_ITN_STATS,
72 	IOCMD_ITNIM_GET_ATTR,
73 	IOCMD_ITNIM_GET_IOSTATS,
74 	IOCMD_ITNIM_RESET_STATS,
75 	IOCMD_ITNIM_GET_ITNSTATS,
76 	IOCMD_IOC_PCIFN_CFG,
77 	IOCMD_FCPORT_ENABLE,
78 	IOCMD_FCPORT_DISABLE,
79 	IOCMD_PCIFN_CREATE,
80 	IOCMD_PCIFN_DELETE,
81 	IOCMD_PCIFN_BW,
82 	IOCMD_ADAPTER_CFG_MODE,
83 	IOCMD_PORT_CFG_MODE,
84 	IOCMD_FLASH_ENABLE_OPTROM,
85 	IOCMD_FLASH_DISABLE_OPTROM,
86 	IOCMD_FAA_QUERY,
87 	IOCMD_CEE_GET_ATTR,
88 	IOCMD_CEE_GET_STATS,
89 	IOCMD_CEE_RESET_STATS,
90 	IOCMD_SFP_MEDIA,
91 	IOCMD_SFP_SPEED,
92 	IOCMD_FLASH_GET_ATTR,
93 	IOCMD_FLASH_ERASE_PART,
94 	IOCMD_FLASH_UPDATE_PART,
95 	IOCMD_FLASH_READ_PART,
96 	IOCMD_DIAG_TEMP,
97 	IOCMD_DIAG_MEMTEST,
98 	IOCMD_DIAG_LOOPBACK,
99 	IOCMD_DIAG_FWPING,
100 	IOCMD_DIAG_QUEUETEST,
101 	IOCMD_DIAG_SFP,
102 	IOCMD_DIAG_LED,
103 	IOCMD_DIAG_BEACON_LPORT,
104 	IOCMD_DIAG_LB_STAT,
105 	IOCMD_PHY_GET_ATTR,
106 	IOCMD_PHY_GET_STATS,
107 	IOCMD_PHY_UPDATE_FW,
108 	IOCMD_PHY_READ_FW,
109 	IOCMD_VHBA_QUERY,
110 	IOCMD_DEBUG_PORTLOG,
111 	IOCMD_DEBUG_FW_CORE,
112 	IOCMD_DEBUG_FW_STATE_CLR,
113 	IOCMD_DEBUG_PORTLOG_CLR,
114 	IOCMD_DEBUG_START_DTRC,
115 	IOCMD_DEBUG_STOP_DTRC,
116 	IOCMD_DEBUG_PORTLOG_CTL,
117 	IOCMD_FCPIM_PROFILE_ON,
118 	IOCMD_FCPIM_PROFILE_OFF,
119 	IOCMD_ITNIM_GET_IOPROFILE,
120 	IOCMD_FCPORT_GET_STATS,
121 	IOCMD_FCPORT_RESET_STATS,
122 	IOCMD_BOOT_CFG,
123 	IOCMD_BOOT_QUERY,
124 	IOCMD_PREBOOT_QUERY,
125 	IOCMD_ETHBOOT_CFG,
126 	IOCMD_ETHBOOT_QUERY,
127 	IOCMD_TRUNK_ENABLE,
128 	IOCMD_TRUNK_DISABLE,
129 	IOCMD_TRUNK_GET_ATTR,
130 	IOCMD_QOS_ENABLE,
131 	IOCMD_QOS_DISABLE,
132 	IOCMD_QOS_GET_ATTR,
133 	IOCMD_QOS_GET_VC_ATTR,
134 	IOCMD_QOS_GET_STATS,
135 	IOCMD_QOS_RESET_STATS,
136 	IOCMD_VF_GET_STATS,
137 	IOCMD_VF_RESET_STATS,
138 	IOCMD_FCPIM_LUNMASK_ENABLE,
139 	IOCMD_FCPIM_LUNMASK_DISABLE,
140 	IOCMD_FCPIM_LUNMASK_CLEAR,
141 	IOCMD_FCPIM_LUNMASK_QUERY,
142 	IOCMD_FCPIM_LUNMASK_ADD,
143 	IOCMD_FCPIM_LUNMASK_DELETE,
144 };
145 
146 struct bfa_bsg_gen_s {
147 	bfa_status_t	status;
148 	u16		bfad_num;
149 	u16		rsvd;
150 };
151 
152 struct bfa_bsg_portlogctl_s {
153 	bfa_status_t	status;
154 	u16		bfad_num;
155 	u16		rsvd;
156 	bfa_boolean_t	ctl;
157 	int		inst_no;
158 };
159 
160 struct bfa_bsg_fcpim_profile_s {
161 	bfa_status_t    status;
162 	u16		bfad_num;
163 	u16		rsvd;
164 };
165 
166 struct bfa_bsg_itnim_ioprofile_s {
167 	bfa_status_t	status;
168 	u16		bfad_num;
169 	u16		vf_id;
170 	wwn_t		lpwwn;
171 	wwn_t		rpwwn;
172 	struct bfa_itnim_ioprofile_s ioprofile;
173 };
174 
175 struct bfa_bsg_fcport_stats_s {
176 	bfa_status_t	status;
177 	u16		bfad_num;
178 	u16		rsvd;
179 	union bfa_fcport_stats_u stats;
180 };
181 
182 struct bfa_bsg_ioc_name_s {
183 	bfa_status_t	status;
184 	u16		bfad_num;
185 	u16		rsvd;
186 	char		name[BFA_ADAPTER_SYM_NAME_LEN];
187 };
188 
189 struct bfa_bsg_ioc_info_s {
190 	bfa_status_t	status;
191 	u16		bfad_num;
192 	u16		rsvd;
193 	char		serialnum[64];
194 	char		hwpath[BFA_STRING_32];
195 	char		adapter_hwpath[BFA_STRING_32];
196 	char		guid[BFA_ADAPTER_SYM_NAME_LEN*2];
197 	char		name[BFA_ADAPTER_SYM_NAME_LEN];
198 	char		port_name[BFA_ADAPTER_SYM_NAME_LEN];
199 	char		eth_name[BFA_ADAPTER_SYM_NAME_LEN];
200 	wwn_t		pwwn;
201 	wwn_t		nwwn;
202 	wwn_t		factorypwwn;
203 	wwn_t		factorynwwn;
204 	mac_t		mac;
205 	mac_t		factory_mac; /* Factory mac address */
206 	mac_t		current_mac; /* Currently assigned mac address */
207 	enum bfa_ioc_type_e	ioc_type;
208 	u16		pvid; /* Port vlan id */
209 	u16		rsvd1;
210 	u32		host;
211 	u32		bandwidth; /* For PF support */
212 	u32		rsvd2;
213 };
214 
215 struct bfa_bsg_ioc_attr_s {
216 	bfa_status_t	status;
217 	u16		bfad_num;
218 	u16		rsvd;
219 	struct bfa_ioc_attr_s  ioc_attr;
220 };
221 
222 struct bfa_bsg_ioc_stats_s {
223 	bfa_status_t	status;
224 	u16		bfad_num;
225 	u16		rsvd;
226 	struct bfa_ioc_stats_s ioc_stats;
227 };
228 
229 struct bfa_bsg_ioc_fwstats_s {
230 	bfa_status_t	status;
231 	u16		bfad_num;
232 	u16		rsvd;
233 	u32		buf_size;
234 	u32		rsvd1;
235 	u64		buf_ptr;
236 };
237 
238 struct bfa_bsg_iocfc_attr_s {
239 	bfa_status_t	status;
240 	u16		bfad_num;
241 	u16		rsvd;
242 	struct bfa_iocfc_attr_s	iocfc_attr;
243 };
244 
245 struct bfa_bsg_iocfc_intr_s {
246 	bfa_status_t	status;
247 	u16		bfad_num;
248 	u16		rsvd;
249 	struct bfa_iocfc_intr_attr_s attr;
250 };
251 
252 struct bfa_bsg_port_attr_s {
253 	bfa_status_t	status;
254 	u16		bfad_num;
255 	u16		rsvd;
256 	struct bfa_port_attr_s	attr;
257 };
258 
259 struct bfa_bsg_port_cfg_s {
260 	bfa_status_t	status;
261 	u16		bfad_num;
262 	u16		rsvd;
263 	u32		param;
264 	u32		rsvd1;
265 };
266 
267 struct bfa_bsg_port_cfg_maxfrsize_s {
268 	bfa_status_t	status;
269 	u16		bfad_num;
270 	u16		maxfrsize;
271 };
272 
273 struct bfa_bsg_port_stats_s {
274 	bfa_status_t	status;
275 	u16		bfad_num;
276 	u16		rsvd;
277 	u32		buf_size;
278 	u32		rsvd1;
279 	u64		buf_ptr;
280 };
281 
282 struct bfa_bsg_lport_attr_s {
283 	bfa_status_t	status;
284 	u16		bfad_num;
285 	u16		vf_id;
286 	wwn_t		pwwn;
287 	struct bfa_lport_attr_s port_attr;
288 };
289 
290 struct bfa_bsg_lport_stats_s {
291 	bfa_status_t	status;
292 	u16		bfad_num;
293 	u16		vf_id;
294 	wwn_t		pwwn;
295 	struct bfa_lport_stats_s port_stats;
296 };
297 
298 struct bfa_bsg_lport_iostats_s {
299 	bfa_status_t	status;
300 	u16		bfad_num;
301 	u16		vf_id;
302 	wwn_t		pwwn;
303 	struct bfa_itnim_iostats_s iostats;
304 };
305 
306 struct bfa_bsg_lport_get_rports_s {
307 	bfa_status_t	status;
308 	u16		bfad_num;
309 	u16		vf_id;
310 	wwn_t		pwwn;
311 	u64		rbuf_ptr;
312 	u32		nrports;
313 	u32		rsvd;
314 };
315 
316 struct bfa_bsg_rport_attr_s {
317 	bfa_status_t	status;
318 	u16		bfad_num;
319 	u16		vf_id;
320 	wwn_t		pwwn;
321 	wwn_t		rpwwn;
322 	struct bfa_rport_attr_s attr;
323 };
324 
325 struct bfa_bsg_rport_stats_s {
326 	bfa_status_t	status;
327 	u16		bfad_num;
328 	u16		vf_id;
329 	wwn_t		pwwn;
330 	wwn_t		rpwwn;
331 	struct bfa_rport_stats_s stats;
332 };
333 
334 struct bfa_bsg_rport_scsi_addr_s {
335 	bfa_status_t	status;
336 	u16		bfad_num;
337 	u16		vf_id;
338 	wwn_t		pwwn;
339 	wwn_t		rpwwn;
340 	u32		host;
341 	u32		bus;
342 	u32		target;
343 	u32		lun;
344 };
345 
346 struct bfa_bsg_rport_reset_stats_s {
347 	bfa_status_t	status;
348 	u16		bfad_num;
349 	u16		vf_id;
350 	wwn_t		pwwn;
351 	wwn_t		rpwwn;
352 };
353 
354 struct bfa_bsg_rport_set_speed_s {
355 	bfa_status_t		status;
356 	u16			bfad_num;
357 	u16			vf_id;
358 	enum bfa_port_speed	speed;
359 	u32			rsvd;
360 	wwn_t			pwwn;
361 	wwn_t			rpwwn;
362 };
363 
364 struct bfa_bsg_vport_attr_s {
365 	bfa_status_t	status;
366 	u16		bfad_num;
367 	u16		vf_id;
368 	wwn_t		vpwwn;
369 	struct bfa_vport_attr_s vport_attr;
370 };
371 
372 struct bfa_bsg_vport_stats_s {
373 	bfa_status_t	status;
374 	u16		bfad_num;
375 	u16		vf_id;
376 	wwn_t		vpwwn;
377 	struct bfa_vport_stats_s vport_stats;
378 };
379 
380 struct bfa_bsg_reset_stats_s {
381 	bfa_status_t	status;
382 	u16		bfad_num;
383 	u16		vf_id;
384 	wwn_t		vpwwn;
385 };
386 
387 struct bfa_bsg_fabric_get_lports_s {
388 	bfa_status_t	status;
389 	u16		bfad_num;
390 	u16		vf_id;
391 	u64		buf_ptr;
392 	u32		nports;
393 	u32		rsvd;
394 };
395 
396 struct bfa_bsg_trl_speed_s {
397 	bfa_status_t	status;
398 	u16		bfad_num;
399 	u16		rsvd;
400 	enum bfa_port_speed speed;
401 };
402 
403 struct bfa_bsg_fcpim_s {
404 	bfa_status_t	status;
405 	u16		bfad_num;
406 	u16		param;
407 };
408 
409 struct bfa_bsg_fcpim_modstats_s {
410 	bfa_status_t	status;
411 	u16		bfad_num;
412 	struct bfa_itnim_iostats_s modstats;
413 };
414 
415 struct bfa_bsg_fcpim_del_itn_stats_s {
416 	bfa_status_t	status;
417 	u16		bfad_num;
418 	struct bfa_fcpim_del_itn_stats_s modstats;
419 };
420 
421 struct bfa_bsg_fcpim_modstatsclr_s {
422 	bfa_status_t	status;
423 	u16		bfad_num;
424 };
425 
426 struct bfa_bsg_itnim_attr_s {
427 	bfa_status_t	status;
428 	u16		bfad_num;
429 	u16		vf_id;
430 	wwn_t		lpwwn;
431 	wwn_t		rpwwn;
432 	struct bfa_itnim_attr_s	attr;
433 };
434 
435 struct bfa_bsg_itnim_iostats_s {
436 	bfa_status_t	status;
437 	u16		bfad_num;
438 	u16		vf_id;
439 	wwn_t		lpwwn;
440 	wwn_t		rpwwn;
441 	struct bfa_itnim_iostats_s iostats;
442 };
443 
444 struct bfa_bsg_itnim_itnstats_s {
445 	bfa_status_t	status;
446 	u16		bfad_num;
447 	u16		vf_id;
448 	wwn_t		lpwwn;
449 	wwn_t		rpwwn;
450 	struct bfa_itnim_stats_s itnstats;
451 };
452 
453 struct bfa_bsg_pcifn_cfg_s {
454 	bfa_status_t		status;
455 	u16			bfad_num;
456 	u16			rsvd;
457 	struct bfa_ablk_cfg_s	pcifn_cfg;
458 };
459 
460 struct bfa_bsg_pcifn_s {
461 	bfa_status_t		status;
462 	u16			bfad_num;
463 	u16			pcifn_id;
464 	u32			bandwidth;
465 	u8			port;
466 	enum bfi_pcifn_class	pcifn_class;
467 	u8			rsvd[1];
468 };
469 
470 struct bfa_bsg_adapter_cfg_mode_s {
471 	bfa_status_t	status;
472 	u16		bfad_num;
473 	u16		rsvd;
474 	struct bfa_adapter_cfg_mode_s	cfg;
475 };
476 
477 struct bfa_bsg_port_cfg_mode_s {
478 	bfa_status_t	status;
479 	u16		bfad_num;
480 	u16		instance;
481 	struct bfa_port_cfg_mode_s cfg;
482 };
483 
484 struct bfa_bsg_faa_attr_s {
485 	bfa_status_t		status;
486 	u16			bfad_num;
487 	u16			rsvd;
488 	struct bfa_faa_attr_s	faa_attr;
489 };
490 
491 struct bfa_bsg_cee_attr_s {
492 	bfa_status_t	status;
493 	u16		bfad_num;
494 	u16		rsvd;
495 	u32		buf_size;
496 	u32		rsvd1;
497 	u64		buf_ptr;
498 };
499 
500 struct bfa_bsg_cee_stats_s {
501 	bfa_status_t	status;
502 	u16		bfad_num;
503 	u16		rsvd;
504 	u32		buf_size;
505 	u32		rsvd1;
506 	u64		buf_ptr;
507 };
508 
509 struct bfa_bsg_sfp_media_s {
510 	bfa_status_t	status;
511 	u16		bfad_num;
512 	u16		rsvd;
513 	enum bfa_defs_sfp_media_e media;
514 };
515 
516 struct bfa_bsg_sfp_speed_s {
517 	bfa_status_t	status;
518 	u16		bfad_num;
519 	u16		rsvd;
520 	enum bfa_port_speed speed;
521 };
522 
523 struct bfa_bsg_flash_attr_s {
524 	bfa_status_t	status;
525 	u16		bfad_num;
526 	u16		rsvd;
527 	struct bfa_flash_attr_s attr;
528 };
529 
530 struct bfa_bsg_flash_s {
531 	bfa_status_t	status;
532 	u16		bfad_num;
533 	u8		instance;
534 	u8		rsvd;
535 	enum  bfa_flash_part_type type;
536 	int		bufsz;
537 	u64		buf_ptr;
538 };
539 
540 struct bfa_bsg_diag_get_temp_s {
541 	bfa_status_t	status;
542 	u16		bfad_num;
543 	u16		rsvd;
544 	struct bfa_diag_results_tempsensor_s result;
545 };
546 
547 struct bfa_bsg_diag_memtest_s {
548 	bfa_status_t	status;
549 	u16		bfad_num;
550 	u16		rsvd[3];
551 	u32		pat;
552 	struct bfa_diag_memtest_result result;
553 	struct bfa_diag_memtest_s memtest;
554 };
555 
556 struct bfa_bsg_diag_loopback_s {
557 	bfa_status_t	status;
558 	u16		bfad_num;
559 	u16		rsvd;
560 	enum bfa_port_opmode opmode;
561 	enum bfa_port_speed speed;
562 	u32		lpcnt;
563 	u32		pat;
564 	struct bfa_diag_loopback_result_s result;
565 };
566 
567 struct bfa_bsg_diag_fwping_s {
568 	bfa_status_t	status;
569 	u16		bfad_num;
570 	u16		rsvd;
571 	u32		cnt;
572 	u32		pattern;
573 	struct bfa_diag_results_fwping result;
574 };
575 
576 struct bfa_bsg_diag_qtest_s {
577 	bfa_status_t	status;
578 	u16	bfad_num;
579 	u16	rsvd;
580 	u32	force;
581 	u32	queue;
582 	struct bfa_diag_qtest_result_s result;
583 };
584 
585 struct bfa_bsg_sfp_show_s {
586 	bfa_status_t	status;
587 	u16		bfad_num;
588 	u16		rsvd;
589 	struct sfp_mem_s sfp;
590 };
591 
592 struct bfa_bsg_diag_led_s {
593 	bfa_status_t	status;
594 	u16		bfad_num;
595 	u16		rsvd;
596 	struct bfa_diag_ledtest_s ledtest;
597 };
598 
599 struct bfa_bsg_diag_beacon_s {
600 	bfa_status_t	status;
601 	u16		bfad_num;
602 	u16		rsvd;
603 	bfa_boolean_t   beacon;
604 	bfa_boolean_t   link_e2e_beacon;
605 	u32		second;
606 };
607 
608 struct bfa_bsg_diag_lb_stat_s {
609 	bfa_status_t	status;
610 	u16		bfad_num;
611 	u16		rsvd;
612 };
613 
614 struct bfa_bsg_phy_attr_s {
615 	bfa_status_t	status;
616 	u16	bfad_num;
617 	u16	instance;
618 	struct bfa_phy_attr_s	attr;
619 };
620 
621 struct bfa_bsg_phy_s {
622 	bfa_status_t	status;
623 	u16	bfad_num;
624 	u16	instance;
625 	u64	bufsz;
626 	u64	buf_ptr;
627 };
628 
629 struct bfa_bsg_debug_s {
630 	bfa_status_t	status;
631 	u16		bfad_num;
632 	u16		rsvd;
633 	u32		bufsz;
634 	int		inst_no;
635 	u64		buf_ptr;
636 	u64		offset;
637 };
638 
639 struct bfa_bsg_phy_stats_s {
640 	bfa_status_t	status;
641 	u16	bfad_num;
642 	u16	instance;
643 	struct bfa_phy_stats_s	stats;
644 };
645 
646 struct bfa_bsg_vhba_attr_s {
647 	bfa_status_t	status;
648 	u16		bfad_num;
649 	u16		pcifn_id;
650 	struct bfa_vhba_attr_s	attr;
651 };
652 
653 struct bfa_bsg_boot_s {
654 	bfa_status_t	status;
655 	u16		bfad_num;
656 	u16		rsvd;
657 	struct bfa_boot_cfg_s	cfg;
658 };
659 
660 struct bfa_bsg_preboot_s {
661 	bfa_status_t	status;
662 	u16		bfad_num;
663 	u16		rsvd;
664 	struct bfa_boot_pbc_s	cfg;
665 };
666 
667 struct bfa_bsg_ethboot_s {
668 	bfa_status_t	status;
669 	u16		bfad_num;
670 	u16		rsvd;
671 	struct  bfa_ethboot_cfg_s  cfg;
672 };
673 
674 struct bfa_bsg_trunk_attr_s {
675 	bfa_status_t	status;
676 	u16		bfad_num;
677 	u16		rsvd;
678 	struct bfa_trunk_attr_s attr;
679 };
680 
681 struct bfa_bsg_qos_attr_s {
682 	bfa_status_t	status;
683 	u16		bfad_num;
684 	u16		rsvd;
685 	struct bfa_qos_attr_s	attr;
686 };
687 
688 struct bfa_bsg_qos_vc_attr_s {
689 	bfa_status_t	status;
690 	u16		bfad_num;
691 	u16		rsvd;
692 	struct bfa_qos_vc_attr_s attr;
693 };
694 
695 struct bfa_bsg_vf_stats_s {
696 	bfa_status_t	status;
697 	u16		bfad_num;
698 	u16		vf_id;
699 	struct bfa_vf_stats_s	stats;
700 };
701 
702 struct bfa_bsg_vf_reset_stats_s {
703 	bfa_status_t	status;
704 	u16		bfad_num;
705 	u16		vf_id;
706 };
707 
708 struct bfa_bsg_fcpim_lunmask_query_s {
709 	bfa_status_t	status;
710 	u16		bfad_num;
711 	struct bfa_lunmask_cfg_s lun_mask;
712 };
713 
714 struct bfa_bsg_fcpim_lunmask_s {
715 	bfa_status_t	status;
716 	u16		bfad_num;
717 	u16		vf_id;
718 	wwn_t		pwwn;
719 	wwn_t		rpwwn;
720 	struct scsi_lun	lun;
721 };
722 
723 struct bfa_bsg_fcpt_s {
724 	bfa_status_t    status;
725 	u16		vf_id;
726 	wwn_t		lpwwn;
727 	wwn_t		dpwwn;
728 	u32		tsecs;
729 	int		cts;
730 	enum fc_cos	cos;
731 	struct fchs_s	fchs;
732 };
733 #define bfa_bsg_fcpt_t struct bfa_bsg_fcpt_s
734 
735 struct bfa_bsg_data {
736 	int payload_len;
737 	void *payload;
738 };
739 
740 #define bfad_chk_iocmd_sz(__payload_len, __hdrsz, __bufsz)	\
741 	(((__payload_len) != ((__hdrsz) + (__bufsz))) ?		\
742 	 BFA_STATUS_FAILED : BFA_STATUS_OK)
743 
744 #endif /* BFAD_BSG_H */
745