Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-only */
0002 /*
0003  * Copyright (c) 2005-2014 Brocade Communications Systems, Inc.
0004  * Copyright (c) 2014- QLogic Corporation.
0005  * All rights reserved
0006  * www.qlogic.com
0007  *
0008  * Linux driver for QLogic BR-series Fibre Channel Host Bus Adapter.
0009  */
0010 #ifndef BFAD_BSG_H
0011 #define BFAD_BSG_H
0012 
0013 #include "bfa_defs.h"
0014 #include "bfa_defs_fcs.h"
0015 
0016 /* Definitions of vendor unique structures and command codes passed in
0017  * using FC_BSG_HST_VENDOR message code.
0018  */
0019 enum {
0020     IOCMD_IOC_ENABLE = 0x1,
0021     IOCMD_IOC_DISABLE,
0022     IOCMD_IOC_GET_ATTR,
0023     IOCMD_IOC_GET_INFO,
0024     IOCMD_IOC_GET_STATS,
0025     IOCMD_IOC_GET_FWSTATS,
0026     IOCMD_IOC_RESET_STATS,
0027     IOCMD_IOC_RESET_FWSTATS,
0028     IOCMD_IOC_SET_ADAPTER_NAME,
0029     IOCMD_IOC_SET_PORT_NAME,
0030     IOCMD_IOC_FW_SIG_INV,
0031     IOCMD_IOCFC_GET_ATTR,
0032     IOCMD_IOCFC_SET_INTR,
0033     IOCMD_PORT_ENABLE,
0034     IOCMD_PORT_DISABLE,
0035     IOCMD_PORT_GET_ATTR,
0036     IOCMD_PORT_GET_STATS,
0037     IOCMD_PORT_RESET_STATS,
0038     IOCMD_PORT_CFG_TOPO,
0039     IOCMD_PORT_CFG_SPEED,
0040     IOCMD_PORT_CFG_ALPA,
0041     IOCMD_PORT_CFG_MAXFRSZ,
0042     IOCMD_PORT_CLR_ALPA,
0043     IOCMD_PORT_BBCR_ENABLE,
0044     IOCMD_PORT_BBCR_DISABLE,
0045     IOCMD_PORT_BBCR_GET_ATTR,
0046     IOCMD_LPORT_GET_ATTR,
0047     IOCMD_LPORT_GET_RPORTS,
0048     IOCMD_LPORT_GET_STATS,
0049     IOCMD_LPORT_RESET_STATS,
0050     IOCMD_LPORT_GET_IOSTATS,
0051     IOCMD_RPORT_GET_ATTR,
0052     IOCMD_RPORT_GET_ADDR,
0053     IOCMD_RPORT_GET_STATS,
0054     IOCMD_RPORT_RESET_STATS,
0055     IOCMD_RPORT_SET_SPEED,
0056     IOCMD_VPORT_GET_ATTR,
0057     IOCMD_VPORT_GET_STATS,
0058     IOCMD_VPORT_RESET_STATS,
0059     IOCMD_FABRIC_GET_LPORTS,
0060     IOCMD_RATELIM_ENABLE,
0061     IOCMD_RATELIM_DISABLE,
0062     IOCMD_RATELIM_DEF_SPEED,
0063     IOCMD_FCPIM_FAILOVER,
0064     IOCMD_FCPIM_MODSTATS,
0065     IOCMD_FCPIM_MODSTATSCLR,
0066     IOCMD_FCPIM_DEL_ITN_STATS,
0067     IOCMD_ITNIM_GET_ATTR,
0068     IOCMD_ITNIM_GET_IOSTATS,
0069     IOCMD_ITNIM_RESET_STATS,
0070     IOCMD_ITNIM_GET_ITNSTATS,
0071     IOCMD_IOC_PCIFN_CFG,
0072     IOCMD_FCPORT_ENABLE,
0073     IOCMD_FCPORT_DISABLE,
0074     IOCMD_PCIFN_CREATE,
0075     IOCMD_PCIFN_DELETE,
0076     IOCMD_PCIFN_BW,
0077     IOCMD_ADAPTER_CFG_MODE,
0078     IOCMD_PORT_CFG_MODE,
0079     IOCMD_FLASH_ENABLE_OPTROM,
0080     IOCMD_FLASH_DISABLE_OPTROM,
0081     IOCMD_FAA_QUERY,
0082     IOCMD_CEE_GET_ATTR,
0083     IOCMD_CEE_GET_STATS,
0084     IOCMD_CEE_RESET_STATS,
0085     IOCMD_SFP_MEDIA,
0086     IOCMD_SFP_SPEED,
0087     IOCMD_FLASH_GET_ATTR,
0088     IOCMD_FLASH_ERASE_PART,
0089     IOCMD_FLASH_UPDATE_PART,
0090     IOCMD_FLASH_READ_PART,
0091     IOCMD_DIAG_TEMP,
0092     IOCMD_DIAG_MEMTEST,
0093     IOCMD_DIAG_LOOPBACK,
0094     IOCMD_DIAG_FWPING,
0095     IOCMD_DIAG_QUEUETEST,
0096     IOCMD_DIAG_SFP,
0097     IOCMD_DIAG_LED,
0098     IOCMD_DIAG_BEACON_LPORT,
0099     IOCMD_DIAG_LB_STAT,
0100     IOCMD_PHY_GET_ATTR,
0101     IOCMD_PHY_GET_STATS,
0102     IOCMD_PHY_UPDATE_FW,
0103     IOCMD_PHY_READ_FW,
0104     IOCMD_VHBA_QUERY,
0105     IOCMD_DEBUG_PORTLOG,
0106     IOCMD_DEBUG_FW_CORE,
0107     IOCMD_DEBUG_FW_STATE_CLR,
0108     IOCMD_DEBUG_PORTLOG_CLR,
0109     IOCMD_DEBUG_START_DTRC,
0110     IOCMD_DEBUG_STOP_DTRC,
0111     IOCMD_DEBUG_PORTLOG_CTL,
0112     IOCMD_FCPIM_PROFILE_ON,
0113     IOCMD_FCPIM_PROFILE_OFF,
0114     IOCMD_ITNIM_GET_IOPROFILE,
0115     IOCMD_FCPORT_GET_STATS,
0116     IOCMD_FCPORT_RESET_STATS,
0117     IOCMD_BOOT_CFG,
0118     IOCMD_BOOT_QUERY,
0119     IOCMD_PREBOOT_QUERY,
0120     IOCMD_ETHBOOT_CFG,
0121     IOCMD_ETHBOOT_QUERY,
0122     IOCMD_TRUNK_ENABLE,
0123     IOCMD_TRUNK_DISABLE,
0124     IOCMD_TRUNK_GET_ATTR,
0125     IOCMD_QOS_ENABLE,
0126     IOCMD_QOS_DISABLE,
0127     IOCMD_QOS_GET_ATTR,
0128     IOCMD_QOS_GET_VC_ATTR,
0129     IOCMD_QOS_GET_STATS,
0130     IOCMD_QOS_RESET_STATS,
0131     IOCMD_VF_GET_STATS,
0132     IOCMD_VF_RESET_STATS,
0133     IOCMD_FCPIM_LUNMASK_ENABLE,
0134     IOCMD_FCPIM_LUNMASK_DISABLE,
0135     IOCMD_FCPIM_LUNMASK_CLEAR,
0136     IOCMD_FCPIM_LUNMASK_QUERY,
0137     IOCMD_FCPIM_LUNMASK_ADD,
0138     IOCMD_FCPIM_LUNMASK_DELETE,
0139     IOCMD_DIAG_DPORT_ENABLE,
0140     IOCMD_DIAG_DPORT_DISABLE,
0141     IOCMD_QOS_SET_BW,
0142     IOCMD_FCPIM_THROTTLE_QUERY,
0143     IOCMD_FCPIM_THROTTLE_SET,
0144     IOCMD_TFRU_READ,
0145     IOCMD_TFRU_WRITE,
0146     IOCMD_FRUVPD_READ,
0147     IOCMD_FRUVPD_UPDATE,
0148     IOCMD_FRUVPD_GET_MAX_SIZE,
0149     IOCMD_DIAG_DPORT_SHOW,
0150     IOCMD_DIAG_DPORT_START,
0151 };
0152 
0153 struct bfa_bsg_gen_s {
0154     bfa_status_t    status;
0155     u16     bfad_num;
0156     u16     rsvd;
0157 };
0158 
0159 struct bfa_bsg_portlogctl_s {
0160     bfa_status_t    status;
0161     u16     bfad_num;
0162     u16     rsvd;
0163     bfa_boolean_t   ctl;
0164     int     inst_no;
0165 };
0166 
0167 struct bfa_bsg_fcpim_profile_s {
0168     bfa_status_t    status;
0169     u16     bfad_num;
0170     u16     rsvd;
0171 };
0172 
0173 struct bfa_bsg_itnim_ioprofile_s {
0174     bfa_status_t    status;
0175     u16     bfad_num;
0176     u16     vf_id;
0177     wwn_t       lpwwn;
0178     wwn_t       rpwwn;
0179     struct bfa_itnim_ioprofile_s ioprofile;
0180 };
0181 
0182 struct bfa_bsg_fcport_stats_s {
0183     bfa_status_t    status;
0184     u16     bfad_num;
0185     u16     rsvd;
0186     union bfa_fcport_stats_u stats;
0187 };
0188 
0189 struct bfa_bsg_ioc_name_s {
0190     bfa_status_t    status;
0191     u16     bfad_num;
0192     u16     rsvd;
0193     char        name[BFA_ADAPTER_SYM_NAME_LEN];
0194 };
0195 
0196 struct bfa_bsg_ioc_info_s {
0197     bfa_status_t    status;
0198     u16     bfad_num;
0199     u16     rsvd;
0200     char        serialnum[64];
0201     char        hwpath[BFA_STRING_32];
0202     char        adapter_hwpath[BFA_STRING_32];
0203     char        guid[BFA_ADAPTER_SYM_NAME_LEN*2];
0204     char        name[BFA_ADAPTER_SYM_NAME_LEN];
0205     char        port_name[BFA_ADAPTER_SYM_NAME_LEN];
0206     char        eth_name[BFA_ADAPTER_SYM_NAME_LEN];
0207     wwn_t       pwwn;
0208     wwn_t       nwwn;
0209     wwn_t       factorypwwn;
0210     wwn_t       factorynwwn;
0211     mac_t       mac;
0212     mac_t       factory_mac; /* Factory mac address */
0213     mac_t       current_mac; /* Currently assigned mac address */
0214     enum bfa_ioc_type_e ioc_type;
0215     u16     pvid; /* Port vlan id */
0216     u16     rsvd1;
0217     u32     host;
0218     u32     bandwidth; /* For PF support */
0219     u32     rsvd2;
0220 };
0221 
0222 struct bfa_bsg_ioc_attr_s {
0223     bfa_status_t    status;
0224     u16     bfad_num;
0225     u16     rsvd;
0226     struct bfa_ioc_attr_s  ioc_attr;
0227 };
0228 
0229 struct bfa_bsg_ioc_stats_s {
0230     bfa_status_t    status;
0231     u16     bfad_num;
0232     u16     rsvd;
0233     struct bfa_ioc_stats_s ioc_stats;
0234 };
0235 
0236 struct bfa_bsg_ioc_fwstats_s {
0237     bfa_status_t    status;
0238     u16     bfad_num;
0239     u16     rsvd;
0240     u32     buf_size;
0241     u32     rsvd1;
0242     u64     buf_ptr;
0243 };
0244 
0245 struct bfa_bsg_iocfc_attr_s {
0246     bfa_status_t    status;
0247     u16     bfad_num;
0248     u16     rsvd;
0249     struct bfa_iocfc_attr_s iocfc_attr;
0250 };
0251 
0252 struct bfa_bsg_iocfc_intr_s {
0253     bfa_status_t    status;
0254     u16     bfad_num;
0255     u16     rsvd;
0256     struct bfa_iocfc_intr_attr_s attr;
0257 };
0258 
0259 struct bfa_bsg_port_attr_s {
0260     bfa_status_t    status;
0261     u16     bfad_num;
0262     u16     rsvd;
0263     struct bfa_port_attr_s  attr;
0264 };
0265 
0266 struct bfa_bsg_port_cfg_s {
0267     bfa_status_t    status;
0268     u16     bfad_num;
0269     u16     rsvd;
0270     u32     param;
0271     u32     rsvd1;
0272 };
0273 
0274 struct bfa_bsg_port_cfg_maxfrsize_s {
0275     bfa_status_t    status;
0276     u16     bfad_num;
0277     u16     maxfrsize;
0278 };
0279 
0280 struct bfa_bsg_port_stats_s {
0281     bfa_status_t    status;
0282     u16     bfad_num;
0283     u16     rsvd;
0284     u32     buf_size;
0285     u32     rsvd1;
0286     u64     buf_ptr;
0287 };
0288 
0289 struct bfa_bsg_lport_attr_s {
0290     bfa_status_t    status;
0291     u16     bfad_num;
0292     u16     vf_id;
0293     wwn_t       pwwn;
0294     struct bfa_lport_attr_s port_attr;
0295 };
0296 
0297 struct bfa_bsg_lport_stats_s {
0298     bfa_status_t    status;
0299     u16     bfad_num;
0300     u16     vf_id;
0301     wwn_t       pwwn;
0302     struct bfa_lport_stats_s port_stats;
0303 };
0304 
0305 struct bfa_bsg_lport_iostats_s {
0306     bfa_status_t    status;
0307     u16     bfad_num;
0308     u16     vf_id;
0309     wwn_t       pwwn;
0310     struct bfa_itnim_iostats_s iostats;
0311 };
0312 
0313 struct bfa_bsg_lport_get_rports_s {
0314     bfa_status_t    status;
0315     u16     bfad_num;
0316     u16     vf_id;
0317     wwn_t       pwwn;
0318     u64     rbuf_ptr;
0319     u32     nrports;
0320     u32     rsvd;
0321 };
0322 
0323 struct bfa_bsg_rport_attr_s {
0324     bfa_status_t    status;
0325     u16     bfad_num;
0326     u16     vf_id;
0327     wwn_t       pwwn;
0328     wwn_t       rpwwn;
0329     u32     pid;
0330     u32     rsvd;
0331     struct bfa_rport_attr_s attr;
0332 };
0333 
0334 struct bfa_bsg_rport_stats_s {
0335     bfa_status_t    status;
0336     u16     bfad_num;
0337     u16     vf_id;
0338     wwn_t       pwwn;
0339     wwn_t       rpwwn;
0340     struct bfa_rport_stats_s stats;
0341 };
0342 
0343 struct bfa_bsg_rport_scsi_addr_s {
0344     bfa_status_t    status;
0345     u16     bfad_num;
0346     u16     vf_id;
0347     wwn_t       pwwn;
0348     wwn_t       rpwwn;
0349     u32     host;
0350     u32     bus;
0351     u32     target;
0352     u32     lun;
0353 };
0354 
0355 struct bfa_bsg_rport_reset_stats_s {
0356     bfa_status_t    status;
0357     u16     bfad_num;
0358     u16     vf_id;
0359     wwn_t       pwwn;
0360     wwn_t       rpwwn;
0361 };
0362 
0363 struct bfa_bsg_rport_set_speed_s {
0364     bfa_status_t        status;
0365     u16         bfad_num;
0366     u16         vf_id;
0367     enum bfa_port_speed speed;
0368     u32         rsvd;
0369     wwn_t           pwwn;
0370     wwn_t           rpwwn;
0371 };
0372 
0373 struct bfa_bsg_vport_attr_s {
0374     bfa_status_t    status;
0375     u16     bfad_num;
0376     u16     vf_id;
0377     wwn_t       vpwwn;
0378     struct bfa_vport_attr_s vport_attr;
0379 };
0380 
0381 struct bfa_bsg_vport_stats_s {
0382     bfa_status_t    status;
0383     u16     bfad_num;
0384     u16     vf_id;
0385     wwn_t       vpwwn;
0386     struct bfa_vport_stats_s vport_stats;
0387 };
0388 
0389 struct bfa_bsg_reset_stats_s {
0390     bfa_status_t    status;
0391     u16     bfad_num;
0392     u16     vf_id;
0393     wwn_t       vpwwn;
0394 };
0395 
0396 struct bfa_bsg_fabric_get_lports_s {
0397     bfa_status_t    status;
0398     u16     bfad_num;
0399     u16     vf_id;
0400     u64     buf_ptr;
0401     u32     nports;
0402     u32     rsvd;
0403 };
0404 
0405 struct bfa_bsg_trl_speed_s {
0406     bfa_status_t    status;
0407     u16     bfad_num;
0408     u16     rsvd;
0409     enum bfa_port_speed speed;
0410 };
0411 
0412 struct bfa_bsg_fcpim_s {
0413     bfa_status_t    status;
0414     u16     bfad_num;
0415     u16     param;
0416 };
0417 
0418 struct bfa_bsg_fcpim_modstats_s {
0419     bfa_status_t    status;
0420     u16     bfad_num;
0421     struct bfa_itnim_iostats_s modstats;
0422 };
0423 
0424 struct bfa_bsg_fcpim_del_itn_stats_s {
0425     bfa_status_t    status;
0426     u16     bfad_num;
0427     struct bfa_fcpim_del_itn_stats_s modstats;
0428 };
0429 
0430 struct bfa_bsg_fcpim_modstatsclr_s {
0431     bfa_status_t    status;
0432     u16     bfad_num;
0433 };
0434 
0435 struct bfa_bsg_itnim_attr_s {
0436     bfa_status_t    status;
0437     u16     bfad_num;
0438     u16     vf_id;
0439     wwn_t       lpwwn;
0440     wwn_t       rpwwn;
0441     struct bfa_itnim_attr_s attr;
0442 };
0443 
0444 struct bfa_bsg_itnim_iostats_s {
0445     bfa_status_t    status;
0446     u16     bfad_num;
0447     u16     vf_id;
0448     wwn_t       lpwwn;
0449     wwn_t       rpwwn;
0450     struct bfa_itnim_iostats_s iostats;
0451 };
0452 
0453 struct bfa_bsg_itnim_itnstats_s {
0454     bfa_status_t    status;
0455     u16     bfad_num;
0456     u16     vf_id;
0457     wwn_t       lpwwn;
0458     wwn_t       rpwwn;
0459     struct bfa_itnim_stats_s itnstats;
0460 };
0461 
0462 struct bfa_bsg_pcifn_cfg_s {
0463     bfa_status_t        status;
0464     u16         bfad_num;
0465     u16         rsvd;
0466     struct bfa_ablk_cfg_s   pcifn_cfg;
0467 };
0468 
0469 struct bfa_bsg_pcifn_s {
0470     bfa_status_t        status;
0471     u16         bfad_num;
0472     u16         pcifn_id;
0473     u16         bw_min;
0474     u16         bw_max;
0475     u8          port;
0476     enum bfi_pcifn_class    pcifn_class;
0477     u8          rsvd[1];
0478 };
0479 
0480 struct bfa_bsg_adapter_cfg_mode_s {
0481     bfa_status_t    status;
0482     u16     bfad_num;
0483     u16     rsvd;
0484     struct bfa_adapter_cfg_mode_s   cfg;
0485 };
0486 
0487 struct bfa_bsg_port_cfg_mode_s {
0488     bfa_status_t    status;
0489     u16     bfad_num;
0490     u16     instance;
0491     struct bfa_port_cfg_mode_s cfg;
0492 };
0493 
0494 struct bfa_bsg_bbcr_enable_s {
0495     bfa_status_t    status;
0496     u16     bfad_num;
0497     u8      bb_scn;
0498     u8      rsvd;
0499 };
0500 
0501 struct bfa_bsg_bbcr_attr_s {
0502     bfa_status_t    status;
0503     u16     bfad_num;
0504     u16     rsvd;
0505     struct bfa_bbcr_attr_s attr;
0506 };
0507 
0508 struct bfa_bsg_faa_attr_s {
0509     bfa_status_t        status;
0510     u16         bfad_num;
0511     u16         rsvd;
0512     struct bfa_faa_attr_s   faa_attr;
0513 };
0514 
0515 struct bfa_bsg_cee_attr_s {
0516     bfa_status_t    status;
0517     u16     bfad_num;
0518     u16     rsvd;
0519     u32     buf_size;
0520     u32     rsvd1;
0521     u64     buf_ptr;
0522 };
0523 
0524 struct bfa_bsg_cee_stats_s {
0525     bfa_status_t    status;
0526     u16     bfad_num;
0527     u16     rsvd;
0528     u32     buf_size;
0529     u32     rsvd1;
0530     u64     buf_ptr;
0531 };
0532 
0533 struct bfa_bsg_sfp_media_s {
0534     bfa_status_t    status;
0535     u16     bfad_num;
0536     u16     rsvd;
0537     enum bfa_defs_sfp_media_e media;
0538 };
0539 
0540 struct bfa_bsg_sfp_speed_s {
0541     bfa_status_t    status;
0542     u16     bfad_num;
0543     u16     rsvd;
0544     enum bfa_port_speed speed;
0545 };
0546 
0547 struct bfa_bsg_flash_attr_s {
0548     bfa_status_t    status;
0549     u16     bfad_num;
0550     u16     rsvd;
0551     struct bfa_flash_attr_s attr;
0552 };
0553 
0554 struct bfa_bsg_flash_s {
0555     bfa_status_t    status;
0556     u16     bfad_num;
0557     u8      instance;
0558     u8      rsvd;
0559     enum  bfa_flash_part_type type;
0560     int     bufsz;
0561     u64     buf_ptr;
0562 };
0563 
0564 struct bfa_bsg_diag_get_temp_s {
0565     bfa_status_t    status;
0566     u16     bfad_num;
0567     u16     rsvd;
0568     struct bfa_diag_results_tempsensor_s result;
0569 };
0570 
0571 struct bfa_bsg_diag_memtest_s {
0572     bfa_status_t    status;
0573     u16     bfad_num;
0574     u16     rsvd[3];
0575     u32     pat;
0576     struct bfa_diag_memtest_result result;
0577     struct bfa_diag_memtest_s memtest;
0578 };
0579 
0580 struct bfa_bsg_diag_loopback_s {
0581     bfa_status_t    status;
0582     u16     bfad_num;
0583     u16     rsvd;
0584     enum bfa_port_opmode opmode;
0585     enum bfa_port_speed speed;
0586     u32     lpcnt;
0587     u32     pat;
0588     struct bfa_diag_loopback_result_s result;
0589 };
0590 
0591 struct bfa_bsg_diag_dport_show_s {
0592     bfa_status_t    status;
0593     u16     bfad_num;
0594     u16     rsvd;
0595     struct bfa_diag_dport_result_s result;
0596 };
0597 
0598 struct bfa_bsg_dport_enable_s {
0599     bfa_status_t    status;
0600     u16     bfad_num;
0601     u16     rsvd;
0602     u16     lpcnt;
0603     u16     pat;
0604 };
0605 
0606 struct bfa_bsg_diag_fwping_s {
0607     bfa_status_t    status;
0608     u16     bfad_num;
0609     u16     rsvd;
0610     u32     cnt;
0611     u32     pattern;
0612     struct bfa_diag_results_fwping result;
0613 };
0614 
0615 struct bfa_bsg_diag_qtest_s {
0616     bfa_status_t    status;
0617     u16 bfad_num;
0618     u16 rsvd;
0619     u32 force;
0620     u32 queue;
0621     struct bfa_diag_qtest_result_s result;
0622 };
0623 
0624 struct bfa_bsg_sfp_show_s {
0625     bfa_status_t    status;
0626     u16     bfad_num;
0627     u16     rsvd;
0628     struct sfp_mem_s sfp;
0629 };
0630 
0631 struct bfa_bsg_diag_led_s {
0632     bfa_status_t    status;
0633     u16     bfad_num;
0634     u16     rsvd;
0635     struct bfa_diag_ledtest_s ledtest;
0636 };
0637 
0638 struct bfa_bsg_diag_beacon_s {
0639     bfa_status_t    status;
0640     u16     bfad_num;
0641     u16     rsvd;
0642     bfa_boolean_t   beacon;
0643     bfa_boolean_t   link_e2e_beacon;
0644     u32     second;
0645 };
0646 
0647 struct bfa_bsg_diag_lb_stat_s {
0648     bfa_status_t    status;
0649     u16     bfad_num;
0650     u16     rsvd;
0651 };
0652 
0653 struct bfa_bsg_phy_attr_s {
0654     bfa_status_t    status;
0655     u16 bfad_num;
0656     u16 instance;
0657     struct bfa_phy_attr_s   attr;
0658 };
0659 
0660 struct bfa_bsg_phy_s {
0661     bfa_status_t    status;
0662     u16 bfad_num;
0663     u16 instance;
0664     u64 bufsz;
0665     u64 buf_ptr;
0666 };
0667 
0668 struct bfa_bsg_debug_s {
0669     bfa_status_t    status;
0670     u16     bfad_num;
0671     u16     rsvd;
0672     u32     bufsz;
0673     int     inst_no;
0674     u64     buf_ptr;
0675     u64     offset;
0676 };
0677 
0678 struct bfa_bsg_phy_stats_s {
0679     bfa_status_t    status;
0680     u16 bfad_num;
0681     u16 instance;
0682     struct bfa_phy_stats_s  stats;
0683 };
0684 
0685 struct bfa_bsg_vhba_attr_s {
0686     bfa_status_t    status;
0687     u16     bfad_num;
0688     u16     pcifn_id;
0689     struct bfa_vhba_attr_s  attr;
0690 };
0691 
0692 struct bfa_bsg_boot_s {
0693     bfa_status_t    status;
0694     u16     bfad_num;
0695     u16     rsvd;
0696     struct bfa_boot_cfg_s   cfg;
0697 };
0698 
0699 struct bfa_bsg_preboot_s {
0700     bfa_status_t    status;
0701     u16     bfad_num;
0702     u16     rsvd;
0703     struct bfa_boot_pbc_s   cfg;
0704 };
0705 
0706 struct bfa_bsg_ethboot_s {
0707     bfa_status_t    status;
0708     u16     bfad_num;
0709     u16     rsvd;
0710     struct  bfa_ethboot_cfg_s  cfg;
0711 };
0712 
0713 struct bfa_bsg_trunk_attr_s {
0714     bfa_status_t    status;
0715     u16     bfad_num;
0716     u16     rsvd;
0717     struct bfa_trunk_attr_s attr;
0718 };
0719 
0720 struct bfa_bsg_qos_attr_s {
0721     bfa_status_t    status;
0722     u16     bfad_num;
0723     u16     rsvd;
0724     struct bfa_qos_attr_s   attr;
0725 };
0726 
0727 struct bfa_bsg_qos_vc_attr_s {
0728     bfa_status_t    status;
0729     u16     bfad_num;
0730     u16     rsvd;
0731     struct bfa_qos_vc_attr_s attr;
0732 };
0733 
0734 struct bfa_bsg_qos_bw_s {
0735     bfa_status_t    status;
0736     u16     bfad_num;
0737     u16     rsvd;
0738     struct bfa_qos_bw_s qos_bw;
0739 };
0740 
0741 struct bfa_bsg_vf_stats_s {
0742     bfa_status_t    status;
0743     u16     bfad_num;
0744     u16     vf_id;
0745     struct bfa_vf_stats_s   stats;
0746 };
0747 
0748 struct bfa_bsg_vf_reset_stats_s {
0749     bfa_status_t    status;
0750     u16     bfad_num;
0751     u16     vf_id;
0752 };
0753 
0754 struct bfa_bsg_fcpim_lunmask_query_s {
0755     bfa_status_t    status;
0756     u16     bfad_num;
0757     struct bfa_lunmask_cfg_s lun_mask;
0758 };
0759 
0760 struct bfa_bsg_fcpim_lunmask_s {
0761     bfa_status_t    status;
0762     u16     bfad_num;
0763     u16     vf_id;
0764     wwn_t       pwwn;
0765     wwn_t       rpwwn;
0766     struct scsi_lun lun;
0767 };
0768 
0769 struct bfa_bsg_fcpim_throttle_s {
0770     bfa_status_t    status;
0771     u16     bfad_num;
0772     u16     vf_id;
0773     struct bfa_defs_fcpim_throttle_s throttle;
0774 };
0775 
0776 #define BFA_TFRU_DATA_SIZE      64
0777 #define BFA_MAX_FRUVPD_TRANSFER_SIZE    0x1000
0778 
0779 struct bfa_bsg_tfru_s {
0780     bfa_status_t    status;
0781     u16     bfad_num;
0782     u16     rsvd;
0783     u32     offset;
0784     u32     len;
0785     u8      data[BFA_TFRU_DATA_SIZE];
0786 };
0787 
0788 struct bfa_bsg_fruvpd_s {
0789     bfa_status_t    status;
0790     u16     bfad_num;
0791     u16     rsvd1;
0792     u32     offset;
0793     u32     len;
0794     u8      data[BFA_MAX_FRUVPD_TRANSFER_SIZE];
0795     u8      trfr_cmpl;
0796     u8      rsvd2[3];
0797 };
0798 
0799 struct bfa_bsg_fruvpd_max_size_s {
0800     bfa_status_t    status;
0801     u16     bfad_num;
0802     u16     rsvd;
0803     u32     max_size;
0804 };
0805 
0806 struct bfa_bsg_fcpt_s {
0807     bfa_status_t    status;
0808     u16     vf_id;
0809     wwn_t       lpwwn;
0810     wwn_t       dpwwn;
0811     u32     tsecs;
0812     int     cts;
0813     enum fc_cos cos;
0814     struct fchs_s   fchs;
0815 };
0816 #define bfa_bsg_fcpt_t struct bfa_bsg_fcpt_s
0817 
0818 #pragma pack(1)
0819 struct bfa_bsg_data {
0820     int payload_len;
0821     u64 payload;
0822 };
0823 #pragma pack()
0824 
0825 #define bfad_chk_iocmd_sz(__payload_len, __hdrsz, __bufsz)  \
0826     (((__payload_len) != ((__hdrsz) + (__bufsz))) ?     \
0827      BFA_STATUS_FAILED : BFA_STATUS_OK)
0828 
0829 #endif /* BFAD_BSG_H */