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