Commit efd8e39a authored by Mitch Williams's avatar Mitch Williams Committed by Jeff Kirsher

i40e: allow zero MAC address for VFs

Allow the user to specify a zero MAC address for VFs. This removes the
existing MAC address and allows the VF to use a random address. Libvirt
does this normally when removing a VF from a VM.
Signed-off-by: default avatarMitch Williams <mitch.a.williams@intel.com>
Tested-by: default avatarAndrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
parent 2d166c30
...@@ -2084,9 +2084,9 @@ int i40e_ndo_set_vf_mac(struct net_device *netdev, int vf_id, u8 *mac) ...@@ -2084,9 +2084,9 @@ int i40e_ndo_set_vf_mac(struct net_device *netdev, int vf_id, u8 *mac)
goto error_param; goto error_param;
} }
if (!is_valid_ether_addr(mac)) { if (is_multicast_ether_addr(mac)) {
dev_err(&pf->pdev->dev, dev_err(&pf->pdev->dev,
"Invalid VF ethernet address\n"); "Invalid Ethernet address %pM for VF %d\n", mac, vf_id);
ret = -EINVAL; ret = -EINVAL;
goto error_param; goto error_param;
} }
...@@ -2097,9 +2097,10 @@ int i40e_ndo_set_vf_mac(struct net_device *netdev, int vf_id, u8 *mac) ...@@ -2097,9 +2097,10 @@ int i40e_ndo_set_vf_mac(struct net_device *netdev, int vf_id, u8 *mac)
spin_lock_bh(&vsi->mac_filter_list_lock); spin_lock_bh(&vsi->mac_filter_list_lock);
/* delete the temporary mac address */ /* delete the temporary mac address */
i40e_del_filter(vsi, vf->default_lan_addr.addr, if (!is_zero_ether_addr(vf->default_lan_addr.addr))
vf->port_vlan_id ? vf->port_vlan_id : -1, i40e_del_filter(vsi, vf->default_lan_addr.addr,
true, false); vf->port_vlan_id ? vf->port_vlan_id : -1,
true, false);
/* Delete all the filters for this VSI - we're going to kill it /* Delete all the filters for this VSI - we're going to kill it
* anyway. * anyway.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment