diff options
-rw-r--r-- | drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c index d44b4d21268c..b3e6530637e3 100644 --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c | |||
@@ -661,13 +661,7 @@ int ixgbe_vf_configuration(struct pci_dev *pdev, unsigned int event_mask) | |||
661 | bool enable = ((event_mask & 0x10000000U) != 0); | 661 | bool enable = ((event_mask & 0x10000000U) != 0); |
662 | 662 | ||
663 | if (enable) { | 663 | if (enable) { |
664 | eth_random_addr(vf_mac_addr); | 664 | eth_zero_addr(vf_mac_addr); |
665 | e_info(probe, "IOV: VF %d is enabled MAC %pM\n", | ||
666 | vfn, vf_mac_addr); | ||
667 | /* | ||
668 | * Store away the VF "permananet" MAC address, it will ask | ||
669 | * for it later. | ||
670 | */ | ||
671 | memcpy(adapter->vfinfo[vfn].vf_mac_addresses, vf_mac_addr, 6); | 665 | memcpy(adapter->vfinfo[vfn].vf_mac_addresses, vf_mac_addr, 6); |
672 | } | 666 | } |
673 | 667 | ||
@@ -688,7 +682,8 @@ static int ixgbe_vf_reset_msg(struct ixgbe_adapter *adapter, u32 vf) | |||
688 | ixgbe_vf_reset_event(adapter, vf); | 682 | ixgbe_vf_reset_event(adapter, vf); |
689 | 683 | ||
690 | /* set vf mac address */ | 684 | /* set vf mac address */ |
691 | ixgbe_set_vf_mac(adapter, vf, vf_mac); | 685 | if (!is_zero_ether_addr(vf_mac)) |
686 | ixgbe_set_vf_mac(adapter, vf, vf_mac); | ||
692 | 687 | ||
693 | vf_shift = vf % 32; | 688 | vf_shift = vf % 32; |
694 | reg_offset = vf / 32; | 689 | reg_offset = vf / 32; |
@@ -729,8 +724,16 @@ static int ixgbe_vf_reset_msg(struct ixgbe_adapter *adapter, u32 vf) | |||
729 | IXGBE_WRITE_REG(hw, IXGBE_VMECM(reg_offset), reg); | 724 | IXGBE_WRITE_REG(hw, IXGBE_VMECM(reg_offset), reg); |
730 | 725 | ||
731 | /* reply to reset with ack and vf mac address */ | 726 | /* reply to reset with ack and vf mac address */ |
732 | msgbuf[0] = IXGBE_VF_RESET | IXGBE_VT_MSGTYPE_ACK; | 727 | msgbuf[0] = IXGBE_VF_RESET; |
733 | memcpy(addr, vf_mac, ETH_ALEN); | 728 | if (!is_zero_ether_addr(vf_mac)) { |
729 | msgbuf[0] |= IXGBE_VT_MSGTYPE_ACK; | ||
730 | memcpy(addr, vf_mac, ETH_ALEN); | ||
731 | } else { | ||
732 | msgbuf[0] |= IXGBE_VT_MSGTYPE_NACK; | ||
733 | dev_warn(&adapter->pdev->dev, | ||
734 | "VF %d has no MAC address assigned, you may have to assign one manually\n", | ||
735 | vf); | ||
736 | } | ||
734 | 737 | ||
735 | /* | 738 | /* |
736 | * Piggyback the multicast filter type so VF can compute the | 739 | * Piggyback the multicast filter type so VF can compute the |