GNU Linux-libre 6.8.9-gnu
[releases.git] / drivers / scsi / bfa / bfad_bsg.h
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 */