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