When the MAC address is not provided by the vdpa device virtio_net
driver assigns a random one without notifying the device.
The consequence, in the case of mlx5_vdpa, is the internal routing
tables of the device are not updated and this can block the
communication between two namespaces.

To fix this problem, use virtnet_send_command(VIRTIO_NET_CTRL_MAC)
to set the address from virtnet_probe() when the MAC address is
not provided by the device.

v3:
  - update comments
  - fail probe if VIRTIO_NET_CTRL_MAC_ADDR_SET fails
  - move the virtnet_send_command() upper, inside the RTNL lock,
    this simplifies the cleanup in case of error, and a future patch
    from Jason adds an ASSERT_RTNL() in virtnet_send_command()
    ("virtio-net: convert rx mode setting to use workqueue")
  - add a patch to disable F_STANDBY if F_MAC is not set

v2:
  - remove vdpa_sim related fixes
  - check virtio_has_feature(vdev, VIRTIO_NET_F_MAC) rather than
    addr_assign_type

Laurent Vivier (2):
  virtio_net: disable VIRTIO_NET_F_STANDBY if VIRTIO_NET_F_MAC is not
    set
  virtio_net: notify MAC address change on device initialization

 drivers/net/virtio_net.c | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)

-- 
2.39.1

_______________________________________________
Virtualization mailing list
[email protected]
https://lists.linuxfoundation.org/mailman/listinfo/virtualization

Reply via email to