mirror of https://gitee.com/openkylin/linux.git
virtio_net: Set the mac config only when VIRITO_NET_F_MAC
VIRTIO_NET_F_MAC indicates the presence of the mac field in config space, not the validity of the value it contains. Allow the mac to be changed at runtime, but only push the change into config space with the VIRTIO_NET_F_MAC feature present. Signed-off-by: Alex Williamson <alex.williamson@hp.com> Acked-by: Christian Borntraeger <borntraeger@de.ibm.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
cd36e9efaa
commit
62994b2d6b
|
@ -575,8 +575,9 @@ static int virtnet_set_mac_address(struct net_device *dev, void *p)
|
|||
if (ret)
|
||||
return ret;
|
||||
|
||||
vdev->config->set(vdev, offsetof(struct virtio_net_config, mac),
|
||||
dev->dev_addr, dev->addr_len);
|
||||
if (virtio_has_feature(vdev, VIRTIO_NET_F_MAC))
|
||||
vdev->config->set(vdev, offsetof(struct virtio_net_config, mac),
|
||||
dev->dev_addr, dev->addr_len);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -876,11 +877,8 @@ static int virtnet_probe(struct virtio_device *vdev)
|
|||
vdev->config->get(vdev,
|
||||
offsetof(struct virtio_net_config, mac),
|
||||
dev->dev_addr, dev->addr_len);
|
||||
} else {
|
||||
} else
|
||||
random_ether_addr(dev->dev_addr);
|
||||
vdev->config->set(vdev, offsetof(struct virtio_net_config, mac),
|
||||
dev->dev_addr, dev->addr_len);
|
||||
}
|
||||
|
||||
/* Set up our device-specific information */
|
||||
vi = netdev_priv(dev);
|
||||
|
|
Loading…
Reference in New Issue