Message ID | 1467364778-27198-1-git-send-email-juerg.haefliger@hpe.com |
---|---|
State | Awaiting Upstream, archived |
Delegated to: | David Miller |
Headers | show |
On Fri, 1 Jul 2016 11:19:38 +0200 Juerg Haefliger <juerg.haefliger@hpe.com> wrote: > The VF administrative mac addresses (stored in the PF driver) are > initialized to zero when the PF driver starts up. > > These addresses may be modified in the PF driver through ndo calls > initiated by iproute2 or libvirt. > > While we allow the PF/host to change the VF admin mac address from zero > to a valid unicast mac, we do not allow restoring the VF admin mac to > zero. We currently only allow changing this mac to a different unicast mac. > > This leads to problems when libvirt scripts are used to deal with > VF mac addresses, and libvirt attempts to revoke the mac so this > host will not use it anymore. > > Fix this by allowing resetting a VF administrative MAC back to zero. > > Implementation and commit message shamelessly stolen from: > commit 6e5224224faa ("net/mlx4_core: Allow resetting VF admin mac to zero") > > Signed-off-by: Juerg Haefliger <juerg.haefliger@hpe.com> Since set mac is allowed any time even when device is up, you must prevent a a device that is in UP state from having all zero MAC address.
On Wed, Jul 6, 2016 at 8:57 PM, Stephen Hemminger <stephen@networkplumber.org> wrote: > On Fri, 1 Jul 2016 11:19:38 +0200 > Juerg Haefliger <juerg.haefliger@hpe.com> wrote: > >> The VF administrative mac addresses (stored in the PF driver) are >> initialized to zero when the PF driver starts up. >> >> These addresses may be modified in the PF driver through ndo calls >> initiated by iproute2 or libvirt. >> >> While we allow the PF/host to change the VF admin mac address from zero >> to a valid unicast mac, we do not allow restoring the VF admin mac to >> zero. We currently only allow changing this mac to a different unicast mac. >> >> This leads to problems when libvirt scripts are used to deal with >> VF mac addresses, and libvirt attempts to revoke the mac so this >> host will not use it anymore. >> >> Fix this by allowing resetting a VF administrative MAC back to zero. >> >> Implementation and commit message shamelessly stolen from: >> commit 6e5224224faa ("net/mlx4_core: Allow resetting VF admin mac to zero") >> >> Signed-off-by: Juerg Haefliger <juerg.haefliger@hpe.com> > > Since set mac is allowed any time even when device is up, you must > prevent a a device that is in UP state from having all zero MAC address. I'm pretty sure the actual MAC address of the VF does not change in such a case, it should retain the last MAC address it was given from the PF and report link down until a new one is assigned. - Alex
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c index c5caacd..d075387 100644 --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c @@ -1280,7 +1280,7 @@ void ixgbe_ping_all_vfs(struct ixgbe_adapter *adapter) int ixgbe_ndo_set_vf_mac(struct net_device *netdev, int vf, u8 *mac) { struct ixgbe_adapter *adapter = netdev_priv(netdev); - if (!is_valid_ether_addr(mac) || (vf >= adapter->num_vfs)) + if (is_multicast_ether_addr(mac) || (vf >= adapter->num_vfs)) return -EINVAL; adapter->vfinfo[vf].pf_set_mac = true; dev_info(&adapter->pdev->dev, "setting MAC %pM on VF %d\n", mac, vf);
The VF administrative mac addresses (stored in the PF driver) are initialized to zero when the PF driver starts up. These addresses may be modified in the PF driver through ndo calls initiated by iproute2 or libvirt. While we allow the PF/host to change the VF admin mac address from zero to a valid unicast mac, we do not allow restoring the VF admin mac to zero. We currently only allow changing this mac to a different unicast mac. This leads to problems when libvirt scripts are used to deal with VF mac addresses, and libvirt attempts to revoke the mac so this host will not use it anymore. Fix this by allowing resetting a VF administrative MAC back to zero. Implementation and commit message shamelessly stolen from: commit 6e5224224faa ("net/mlx4_core: Allow resetting VF admin mac to zero") Signed-off-by: Juerg Haefliger <juerg.haefliger@hpe.com> --- drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)