netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/4] virtio_net: vdpa: update MAC address when it is generated by virtio-net
@ 2023-01-22 10:05 Laurent Vivier
  2023-01-22 10:05 ` [PATCH 1/4] virtio_net: notify MAC address change on device initialization Laurent Vivier
                   ` (4 more replies)
  0 siblings, 5 replies; 12+ messages in thread
From: Laurent Vivier @ 2023-01-22 10:05 UTC (permalink / raw)
  To: linux-kernel
  Cc: Michael S. Tsirkin, Parav Pandit, virtualization, netdev,
	Eli Cohen, Jason Wang, Gautam Dawar, Cindy Lu, David S. Miller,
	Eugenio Pérez

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
randomly assigned from virtio_net.

While I was testing this change I found 3 other bugs in vdpa_sim_net:

- vdpa_sim_net sets the VIRTIO_NET_F_MAC even if no MAC address is
  provided. So virtio_net doesn't generate a random MAC address and
  the MAC address appears to be 00:00:00:00:00:00

- vdpa_sim_net never processes the command and virtnet_send_command()
  hangs in an infinite loop. To avoid a kernel crash add a timeout
  in the loop.

- To allow vdpa_sim_net to process the command, replace the cpu_relax()
  in the loop by a schedule(). vdpa_sim_net uses a workqueue to process
  the queue, and if we don't allow the kernel to schedule, the queue
  is not processed and the loop is infinite.

Laurent Vivier (4):
  virtio_net: notify MAC address change on device initialization
  virtio_net: add a timeout in virtnet_send_command()
  vdpa_sim_net: don't always set VIRTIO_NET_F_MAC
  virtio_net: fix virtnet_send_command() with vdpa_sim_net

 drivers/net/virtio_net.c             | 21 +++++++++++++++++++--
 drivers/vdpa/vdpa_sim/vdpa_sim_net.c |  6 ++++++
 2 files changed, 25 insertions(+), 2 deletions(-)

-- 
2.39.0


^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2023-01-24  7:20 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-01-22 10:05 [PATCH 0/4] virtio_net: vdpa: update MAC address when it is generated by virtio-net Laurent Vivier
2023-01-22 10:05 ` [PATCH 1/4] virtio_net: notify MAC address change on device initialization Laurent Vivier
2023-01-22 13:47   ` Eli Cohen
2023-01-23  9:52     ` Laurent Vivier
2023-01-23 10:05       ` Eli Cohen
2023-01-24  3:31     ` Jakub Kicinski
2023-01-24  7:19       ` Laurent Vivier
2023-01-22 10:05 ` [PATCH 2/4] virtio_net: add a timeout in virtnet_send_command() Laurent Vivier
2023-01-22 10:05 ` [PATCH 3/4] vdpa_sim_net: don't always set VIRTIO_NET_F_MAC Laurent Vivier
2023-01-22 10:05 ` [PATCH 4/4] virtio_net: fix virtnet_send_command() with vdpa_sim_net Laurent Vivier
2023-01-22 10:23 ` [PATCH 0/4] virtio_net: vdpa: update MAC address when it is generated by virtio-net Michael S. Tsirkin
2023-01-23  9:25   ` Laurent Vivier

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).