* i40e_set_hw_flags - set HW flags * @hw: pointer to the hardware structure **/
| 578 | * @hw: pointer to the hardware structure |
| 579 | **/ |
| 580 | STATIC void i40e_set_hw_flags(struct i40e_hw *hw) |
| 581 | { |
| 582 | struct i40e_adminq_info *aq = &hw->aq; |
| 583 | |
| 584 | hw->flags = 0; |
| 585 | |
| 586 | switch (hw->mac.type) { |
| 587 | case I40E_MAC_XL710: |
| 588 | if (aq->api_maj_ver > 1 || |
| 589 | (aq->api_maj_ver == 1 && |
| 590 | aq->api_min_ver >= I40E_MINOR_VER_GET_LINK_INFO_XL710)) { |
| 591 | hw->flags |= I40E_HW_FLAG_AQ_PHY_ACCESS_CAPABLE; |
| 592 | hw->flags |= I40E_HW_FLAG_FW_LLDP_STOPPABLE; |
| 593 | /* The ability to RX (not drop) 802.1ad frames */ |
| 594 | hw->flags |= I40E_HW_FLAG_802_1AD_CAPABLE; |
| 595 | } |
| 596 | break; |
| 597 | case I40E_MAC_X722: |
| 598 | hw->flags |= I40E_HW_FLAG_AQ_SRCTL_ACCESS_ENABLE | |
| 599 | I40E_HW_FLAG_NVM_READ_REQUIRES_LOCK; |
| 600 | |
| 601 | if (aq->api_maj_ver > 1 || |
| 602 | (aq->api_maj_ver == 1 && |
| 603 | aq->api_min_ver >= I40E_MINOR_VER_FW_LLDP_STOPPABLE_X722)) |
| 604 | hw->flags |= I40E_HW_FLAG_FW_LLDP_STOPPABLE; |
| 605 | |
| 606 | if (aq->api_maj_ver > 1 || |
| 607 | (aq->api_maj_ver == 1 && |
| 608 | aq->api_min_ver >= I40E_MINOR_VER_GET_LINK_INFO_X722)) |
| 609 | hw->flags |= I40E_HW_FLAG_AQ_PHY_ACCESS_CAPABLE; |
| 610 | |
| 611 | if (aq->api_maj_ver > 1 || |
| 612 | (aq->api_maj_ver == 1 && |
| 613 | aq->api_min_ver >= I40E_MINOR_VER_FW_REQUEST_FEC_X722)) |
| 614 | hw->flags |= I40E_HW_FLAG_X722_FEC_REQUEST_CAPABLE; |
| 615 | |
| 616 | /* fall through */ |
| 617 | default: |
| 618 | break; |
| 619 | } |
| 620 | |
| 621 | /* Newer versions of firmware require lock when reading the NVM */ |
| 622 | if (aq->api_maj_ver > 1 || |
| 623 | (aq->api_maj_ver == 1 && |
| 624 | aq->api_min_ver >= 5)) |
| 625 | hw->flags |= I40E_HW_FLAG_NVM_READ_REQUIRES_LOCK; |
| 626 | |
| 627 | if (aq->api_maj_ver > 1 || |
| 628 | (aq->api_maj_ver == 1 && |
| 629 | aq->api_min_ver >= 8)) { |
| 630 | hw->flags |= I40E_HW_FLAG_FW_LLDP_PERSISTENT; |
| 631 | hw->flags |= I40E_HW_FLAG_DROP_MODE; |
| 632 | } |
| 633 | |
| 634 | if (aq->api_maj_ver > 1 || |
| 635 | (aq->api_maj_ver == 1 && |
| 636 | aq->api_min_ver >= 9)) |
| 637 | hw->flags |= I40E_HW_FLAG_AQ_PHY_ACCESS_EXTENDED; |