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 */ 830