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