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