lkml.org 
[lkml]   [2016]   [Mar]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3.16.y-ckt 125/142] net/mlx4_core: Allow resetting VF admin mac to zero
    Date
    3.16.7-ckt26 -stable review patch.  If anyone has any objections, please let me know.

    ---8<------------------------------------------------------------

    From: Jack Morgenstein <jackm@dev.mellanox.co.il>

    commit 6e5224224faa50ec4c8949dcefadf895e565f0d1 upstream.

    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.

    Fixes: 8f7ba3ca12f6 ('net/mlx4: Add set VF mac address support')
    Signed-off-by: Jack Morgenstein <jackm@dev.mellanox.co.il>
    Reported-by: Moshe Levi <moshele@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
    ---
    drivers/net/ethernet/mellanox/mlx4/en_netdev.c | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    diff --git a/drivers/net/ethernet/mellanox/mlx4/en_netdev.c b/drivers/net/ethernet/mellanox/mlx4/en_netdev.c
    index 1f588195fe9f..50b1f909ce0d 100644
    --- a/drivers/net/ethernet/mellanox/mlx4/en_netdev.c
    +++ b/drivers/net/ethernet/mellanox/mlx4/en_netdev.c
    @@ -2244,7 +2244,7 @@ static int mlx4_en_set_vf_mac(struct net_device *dev, int queue, u8 *mac)
    struct mlx4_en_dev *mdev = en_priv->mdev;
    u64 mac_u64 = mlx4_mac_to_u64(mac);

    - if (!is_valid_ether_addr(mac))
    + if (is_multicast_ether_addr(mac))
    return -EINVAL;

    return mlx4_set_vf_mac(mdev->dev, en_priv->port, queue, mac_u64);
    \
     
     \ /
      Last update: 2016-03-22 12:21    [W:4.017 / U:0.028 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site