]> git.karo-electronics.de Git - karo-tx-linux.git/blob - drivers/scsi/bfa/bfad_bsg.h
Merge branches 'for-3.7/upstream-fixes', 'for-3.8/hidraw', 'for-3.8/i2c-hid', 'for...
[karo-tx-linux.git] / drivers / scsi / bfa / bfad_bsg.h
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         IOCMD_DIAG_DPORT_ENABLE,
145         IOCMD_DIAG_DPORT_DISABLE,
146         IOCMD_DIAG_DPORT_GET_STATE,
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 };
156
157 struct bfa_bsg_gen_s {
158         bfa_status_t    status;
159         u16             bfad_num;
160         u16             rsvd;
161 };
162
163 struct bfa_bsg_portlogctl_s {
164         bfa_status_t    status;
165         u16             bfad_num;
166         u16             rsvd;
167         bfa_boolean_t   ctl;
168         int             inst_no;
169 };
170
171 struct bfa_bsg_fcpim_profile_s {
172         bfa_status_t    status;
173         u16             bfad_num;
174         u16             rsvd;
175 };
176
177 struct bfa_bsg_itnim_ioprofile_s {
178         bfa_status_t    status;
179         u16             bfad_num;
180         u16             vf_id;
181         wwn_t           lpwwn;
182         wwn_t           rpwwn;
183         struct bfa_itnim_ioprofile_s ioprofile;
184 };
185
186 struct bfa_bsg_fcport_stats_s {
187         bfa_status_t    status;
188         u16             bfad_num;
189         u16             rsvd;
190         union bfa_fcport_stats_u stats;
191 };
192
193 struct bfa_bsg_ioc_name_s {
194         bfa_status_t    status;
195         u16             bfad_num;
196         u16             rsvd;
197         char            name[BFA_ADAPTER_SYM_NAME_LEN];
198 };
199
200 struct bfa_bsg_ioc_info_s {
201         bfa_status_t    status;
202         u16             bfad_num;
203         u16             rsvd;
204         char            serialnum[64];
205         char            hwpath[BFA_STRING_32];
206         char            adapter_hwpath[BFA_STRING_32];
207         char            guid[BFA_ADAPTER_SYM_NAME_LEN*2];
208         char            name[BFA_ADAPTER_SYM_NAME_LEN];
209         char            port_name[BFA_ADAPTER_SYM_NAME_LEN];
210         char            eth_name[BFA_ADAPTER_SYM_NAME_LEN];
211         wwn_t           pwwn;
212         wwn_t           nwwn;
213         wwn_t           factorypwwn;
214         wwn_t           factorynwwn;
215         mac_t           mac;
216         mac_t           factory_mac; /* Factory mac address */
217         mac_t           current_mac; /* Currently assigned mac address */
218         enum bfa_ioc_type_e     ioc_type;
219         u16             pvid; /* Port vlan id */
220         u16             rsvd1;
221         u32             host;
222         u32             bandwidth; /* For PF support */
223         u32             rsvd2;
224 };
225
226 struct bfa_bsg_ioc_attr_s {
227         bfa_status_t    status;
228         u16             bfad_num;
229         u16             rsvd;
230         struct bfa_ioc_attr_s  ioc_attr;
231 };
232
233 struct bfa_bsg_ioc_stats_s {
234         bfa_status_t    status;
235         u16             bfad_num;
236         u16             rsvd;
237         struct bfa_ioc_stats_s ioc_stats;
238 };
239
240 struct bfa_bsg_ioc_fwstats_s {
241         bfa_status_t    status;
242         u16             bfad_num;
243         u16             rsvd;
244         u32             buf_size;
245         u32             rsvd1;
246         u64             buf_ptr;
247 };
248
249 struct bfa_bsg_iocfc_attr_s {
250         bfa_status_t    status;
251         u16             bfad_num;
252         u16             rsvd;
253         struct bfa_iocfc_attr_s iocfc_attr;
254 };
255
256 struct bfa_bsg_iocfc_intr_s {
257         bfa_status_t    status;
258         u16             bfad_num;
259         u16             rsvd;
260         struct bfa_iocfc_intr_attr_s attr;
261 };
262
263 struct bfa_bsg_port_attr_s {
264         bfa_status_t    status;
265         u16             bfad_num;
266         u16             rsvd;
267         struct bfa_port_attr_s  attr;
268 };
269
270 struct bfa_bsg_port_cfg_s {
271         bfa_status_t    status;
272         u16             bfad_num;
273         u16             rsvd;
274         u32             param;
275         u32             rsvd1;
276 };
277
278 struct bfa_bsg_port_cfg_maxfrsize_s {
279         bfa_status_t    status;
280         u16             bfad_num;
281         u16             maxfrsize;
282 };
283
284 struct bfa_bsg_port_stats_s {
285         bfa_status_t    status;
286         u16             bfad_num;
287         u16             rsvd;
288         u32             buf_size;
289         u32             rsvd1;
290         u64             buf_ptr;
291 };
292
293 struct bfa_bsg_lport_attr_s {
294         bfa_status_t    status;
295         u16             bfad_num;
296         u16             vf_id;
297         wwn_t           pwwn;
298         struct bfa_lport_attr_s port_attr;
299 };
300
301 struct bfa_bsg_lport_stats_s {
302         bfa_status_t    status;
303         u16             bfad_num;
304         u16             vf_id;
305         wwn_t           pwwn;
306         struct bfa_lport_stats_s port_stats;
307 };
308
309 struct bfa_bsg_lport_iostats_s {
310         bfa_status_t    status;
311         u16             bfad_num;
312         u16             vf_id;
313         wwn_t           pwwn;
314         struct bfa_itnim_iostats_s iostats;
315 };
316
317 struct bfa_bsg_lport_get_rports_s {
318         bfa_status_t    status;
319         u16             bfad_num;
320         u16             vf_id;
321         wwn_t           pwwn;
322         u64             rbuf_ptr;
323         u32             nrports;
324         u32             rsvd;
325 };
326
327 struct bfa_bsg_rport_attr_s {
328         bfa_status_t    status;
329         u16             bfad_num;
330         u16             vf_id;
331         wwn_t           pwwn;
332         wwn_t           rpwwn;
333         u32             pid;
334         u32             rsvd;
335         struct bfa_rport_attr_s attr;
336 };
337
338 struct bfa_bsg_rport_stats_s {
339         bfa_status_t    status;
340         u16             bfad_num;
341         u16             vf_id;
342         wwn_t           pwwn;
343         wwn_t           rpwwn;
344         struct bfa_rport_stats_s stats;
345 };
346
347 struct bfa_bsg_rport_scsi_addr_s {
348         bfa_status_t    status;
349         u16             bfad_num;
350         u16             vf_id;
351         wwn_t           pwwn;
352         wwn_t           rpwwn;
353         u32             host;
354         u32             bus;
355         u32             target;
356         u32             lun;
357 };
358
359 struct bfa_bsg_rport_reset_stats_s {
360         bfa_status_t    status;
361         u16             bfad_num;
362         u16             vf_id;
363         wwn_t           pwwn;
364         wwn_t           rpwwn;
365 };
366
367 struct bfa_bsg_rport_set_speed_s {
368         bfa_status_t            status;
369         u16                     bfad_num;
370         u16                     vf_id;
371         enum bfa_port_speed     speed;
372         u32                     rsvd;
373         wwn_t                   pwwn;
374         wwn_t                   rpwwn;
375 };
376
377 struct bfa_bsg_vport_attr_s {
378         bfa_status_t    status;
379         u16             bfad_num;
380         u16             vf_id;
381         wwn_t           vpwwn;
382         struct bfa_vport_attr_s vport_attr;
383 };
384
385 struct bfa_bsg_vport_stats_s {
386         bfa_status_t    status;
387         u16             bfad_num;
388         u16             vf_id;
389         wwn_t           vpwwn;
390         struct bfa_vport_stats_s vport_stats;
391 };
392
393 struct bfa_bsg_reset_stats_s {
394         bfa_status_t    status;
395         u16             bfad_num;
396         u16             vf_id;
397         wwn_t           vpwwn;
398 };
399
400 struct bfa_bsg_fabric_get_lports_s {
401         bfa_status_t    status;
402         u16             bfad_num;
403         u16             vf_id;
404         u64             buf_ptr;
405         u32             nports;
406         u32             rsvd;
407 };
408
409 struct bfa_bsg_trl_speed_s {
410         bfa_status_t    status;
411         u16             bfad_num;
412         u16             rsvd;
413         enum bfa_port_speed speed;
414 };
415
416 struct bfa_bsg_fcpim_s {
417         bfa_status_t    status;
418         u16             bfad_num;
419         u16             param;
420 };
421
422 struct bfa_bsg_fcpim_modstats_s {
423         bfa_status_t    status;
424         u16             bfad_num;
425         struct bfa_itnim_iostats_s modstats;
426 };
427
428 struct bfa_bsg_fcpim_del_itn_stats_s {
429         bfa_status_t    status;
430         u16             bfad_num;
431         struct bfa_fcpim_del_itn_stats_s modstats;
432 };
433
434 struct bfa_bsg_fcpim_modstatsclr_s {
435         bfa_status_t    status;
436         u16             bfad_num;
437 };
438
439 struct bfa_bsg_itnim_attr_s {
440         bfa_status_t    status;
441         u16             bfad_num;
442         u16             vf_id;
443         wwn_t           lpwwn;
444         wwn_t           rpwwn;
445         struct bfa_itnim_attr_s attr;
446 };
447
448 struct bfa_bsg_itnim_iostats_s {
449         bfa_status_t    status;
450         u16             bfad_num;
451         u16             vf_id;
452         wwn_t           lpwwn;
453         wwn_t           rpwwn;
454         struct bfa_itnim_iostats_s iostats;
455 };
456
457 struct bfa_bsg_itnim_itnstats_s {
458         bfa_status_t    status;
459         u16             bfad_num;
460         u16             vf_id;
461         wwn_t           lpwwn;
462         wwn_t           rpwwn;
463         struct bfa_itnim_stats_s itnstats;
464 };
465
466 struct bfa_bsg_pcifn_cfg_s {
467         bfa_status_t            status;
468         u16                     bfad_num;
469         u16                     rsvd;
470         struct bfa_ablk_cfg_s   pcifn_cfg;
471 };
472
473 struct bfa_bsg_pcifn_s {
474         bfa_status_t            status;
475         u16                     bfad_num;
476         u16                     pcifn_id;
477         u16                     bw_min;
478         u16                     bw_max;
479         u8                      port;
480         enum bfi_pcifn_class    pcifn_class;
481         u8                      rsvd[1];
482 };
483
484 struct bfa_bsg_adapter_cfg_mode_s {
485         bfa_status_t    status;
486         u16             bfad_num;
487         u16             rsvd;
488         struct bfa_adapter_cfg_mode_s   cfg;
489 };
490
491 struct bfa_bsg_port_cfg_mode_s {
492         bfa_status_t    status;
493         u16             bfad_num;
494         u16             instance;
495         struct bfa_port_cfg_mode_s cfg;
496 };
497
498 struct bfa_bsg_faa_attr_s {
499         bfa_status_t            status;
500         u16                     bfad_num;
501         u16                     rsvd;
502         struct bfa_faa_attr_s   faa_attr;
503 };
504
505 struct bfa_bsg_cee_attr_s {
506         bfa_status_t    status;
507         u16             bfad_num;
508         u16             rsvd;
509         u32             buf_size;
510         u32             rsvd1;
511         u64             buf_ptr;
512 };
513
514 struct bfa_bsg_cee_stats_s {
515         bfa_status_t    status;
516         u16             bfad_num;
517         u16             rsvd;
518         u32             buf_size;
519         u32             rsvd1;
520         u64             buf_ptr;
521 };
522
523 struct bfa_bsg_sfp_media_s {
524         bfa_status_t    status;
525         u16             bfad_num;
526         u16             rsvd;
527         enum bfa_defs_sfp_media_e media;
528 };
529
530 struct bfa_bsg_sfp_speed_s {
531         bfa_status_t    status;
532         u16             bfad_num;
533         u16             rsvd;
534         enum bfa_port_speed speed;
535 };
536
537 struct bfa_bsg_flash_attr_s {
538         bfa_status_t    status;
539         u16             bfad_num;
540         u16             rsvd;
541         struct bfa_flash_attr_s attr;
542 };
543
544 struct bfa_bsg_flash_s {
545         bfa_status_t    status;
546         u16             bfad_num;
547         u8              instance;
548         u8              rsvd;
549         enum  bfa_flash_part_type type;
550         int             bufsz;
551         u64             buf_ptr;
552 };
553
554 struct bfa_bsg_diag_get_temp_s {
555         bfa_status_t    status;
556         u16             bfad_num;
557         u16             rsvd;
558         struct bfa_diag_results_tempsensor_s result;
559 };
560
561 struct bfa_bsg_diag_memtest_s {
562         bfa_status_t    status;
563         u16             bfad_num;
564         u16             rsvd[3];
565         u32             pat;
566         struct bfa_diag_memtest_result result;
567         struct bfa_diag_memtest_s memtest;
568 };
569
570 struct bfa_bsg_diag_loopback_s {
571         bfa_status_t    status;
572         u16             bfad_num;
573         u16             rsvd;
574         enum bfa_port_opmode opmode;
575         enum bfa_port_speed speed;
576         u32             lpcnt;
577         u32             pat;
578         struct bfa_diag_loopback_result_s result;
579 };
580
581 struct bfa_bsg_diag_fwping_s {
582         bfa_status_t    status;
583         u16             bfad_num;
584         u16             rsvd;
585         u32             cnt;
586         u32             pattern;
587         struct bfa_diag_results_fwping result;
588 };
589
590 struct bfa_bsg_diag_qtest_s {
591         bfa_status_t    status;
592         u16     bfad_num;
593         u16     rsvd;
594         u32     force;
595         u32     queue;
596         struct bfa_diag_qtest_result_s result;
597 };
598
599 struct bfa_bsg_sfp_show_s {
600         bfa_status_t    status;
601         u16             bfad_num;
602         u16             rsvd;
603         struct sfp_mem_s sfp;
604 };
605
606 struct bfa_bsg_diag_led_s {
607         bfa_status_t    status;
608         u16             bfad_num;
609         u16             rsvd;
610         struct bfa_diag_ledtest_s ledtest;
611 };
612
613 struct bfa_bsg_diag_beacon_s {
614         bfa_status_t    status;
615         u16             bfad_num;
616         u16             rsvd;
617         bfa_boolean_t   beacon;
618         bfa_boolean_t   link_e2e_beacon;
619         u32             second;
620 };
621
622 struct bfa_bsg_diag_lb_stat_s {
623         bfa_status_t    status;
624         u16             bfad_num;
625         u16             rsvd;
626 };
627
628 struct bfa_bsg_diag_dport_get_state_s {
629         bfa_status_t    status;
630         u16             bfad_num;
631         u16             rsvd;
632         enum bfa_dport_state state;
633 };
634
635 struct bfa_bsg_phy_attr_s {
636         bfa_status_t    status;
637         u16     bfad_num;
638         u16     instance;
639         struct bfa_phy_attr_s   attr;
640 };
641
642 struct bfa_bsg_phy_s {
643         bfa_status_t    status;
644         u16     bfad_num;
645         u16     instance;
646         u64     bufsz;
647         u64     buf_ptr;
648 };
649
650 struct bfa_bsg_debug_s {
651         bfa_status_t    status;
652         u16             bfad_num;
653         u16             rsvd;
654         u32             bufsz;
655         int             inst_no;
656         u64             buf_ptr;
657         u64             offset;
658 };
659
660 struct bfa_bsg_phy_stats_s {
661         bfa_status_t    status;
662         u16     bfad_num;
663         u16     instance;
664         struct bfa_phy_stats_s  stats;
665 };
666
667 struct bfa_bsg_vhba_attr_s {
668         bfa_status_t    status;
669         u16             bfad_num;
670         u16             pcifn_id;
671         struct bfa_vhba_attr_s  attr;
672 };
673
674 struct bfa_bsg_boot_s {
675         bfa_status_t    status;
676         u16             bfad_num;
677         u16             rsvd;
678         struct bfa_boot_cfg_s   cfg;
679 };
680
681 struct bfa_bsg_preboot_s {
682         bfa_status_t    status;
683         u16             bfad_num;
684         u16             rsvd;
685         struct bfa_boot_pbc_s   cfg;
686 };
687
688 struct bfa_bsg_ethboot_s {
689         bfa_status_t    status;
690         u16             bfad_num;
691         u16             rsvd;
692         struct  bfa_ethboot_cfg_s  cfg;
693 };
694
695 struct bfa_bsg_trunk_attr_s {
696         bfa_status_t    status;
697         u16             bfad_num;
698         u16             rsvd;
699         struct bfa_trunk_attr_s attr;
700 };
701
702 struct bfa_bsg_qos_attr_s {
703         bfa_status_t    status;
704         u16             bfad_num;
705         u16             rsvd;
706         struct bfa_qos_attr_s   attr;
707 };
708
709 struct bfa_bsg_qos_vc_attr_s {
710         bfa_status_t    status;
711         u16             bfad_num;
712         u16             rsvd;
713         struct bfa_qos_vc_attr_s attr;
714 };
715
716 struct bfa_bsg_qos_bw_s {
717         bfa_status_t    status;
718         u16             bfad_num;
719         u16             rsvd;
720         struct bfa_qos_bw_s qos_bw;
721 };
722
723 struct bfa_bsg_vf_stats_s {
724         bfa_status_t    status;
725         u16             bfad_num;
726         u16             vf_id;
727         struct bfa_vf_stats_s   stats;
728 };
729
730 struct bfa_bsg_vf_reset_stats_s {
731         bfa_status_t    status;
732         u16             bfad_num;
733         u16             vf_id;
734 };
735
736 struct bfa_bsg_fcpim_lunmask_query_s {
737         bfa_status_t    status;
738         u16             bfad_num;
739         struct bfa_lunmask_cfg_s lun_mask;
740 };
741
742 struct bfa_bsg_fcpim_lunmask_s {
743         bfa_status_t    status;
744         u16             bfad_num;
745         u16             vf_id;
746         wwn_t           pwwn;
747         wwn_t           rpwwn;
748         struct scsi_lun lun;
749 };
750
751 struct bfa_bsg_fcpim_throttle_s {
752         bfa_status_t    status;
753         u16             bfad_num;
754         u16             vf_id;
755         struct bfa_defs_fcpim_throttle_s throttle;
756 };
757
758 #define BFA_TFRU_DATA_SIZE              64
759 #define BFA_MAX_FRUVPD_TRANSFER_SIZE    0x1000
760
761 struct bfa_bsg_tfru_s {
762         bfa_status_t    status;
763         u16             bfad_num;
764         u16             rsvd;
765         u32             offset;
766         u32             len;
767         u8              data[BFA_TFRU_DATA_SIZE];
768 };
769
770 struct bfa_bsg_fruvpd_s {
771         bfa_status_t    status;
772         u16             bfad_num;
773         u16             rsvd;
774         u32             offset;
775         u32             len;
776         u8              data[BFA_MAX_FRUVPD_TRANSFER_SIZE];
777 };
778
779 struct bfa_bsg_fruvpd_max_size_s {
780         bfa_status_t    status;
781         u16             bfad_num;
782         u16             rsvd;
783         u32             max_size;
784 };
785
786 struct bfa_bsg_fcpt_s {
787         bfa_status_t    status;
788         u16             vf_id;
789         wwn_t           lpwwn;
790         wwn_t           dpwwn;
791         u32             tsecs;
792         int             cts;
793         enum fc_cos     cos;
794         struct fchs_s   fchs;
795 };
796 #define bfa_bsg_fcpt_t struct bfa_bsg_fcpt_s
797
798 struct bfa_bsg_data {
799         int payload_len;
800         void *payload;
801 };
802
803 #define bfad_chk_iocmd_sz(__payload_len, __hdrsz, __bufsz)      \
804         (((__payload_len) != ((__hdrsz) + (__bufsz))) ?         \
805          BFA_STATUS_FAILED : BFA_STATUS_OK)
806
807 #endif /* BFAD_BSG_H */