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