On Wed, 20 May 2026 11:55:23 +0200
Laurent Vivier
Some virtio-net drivers (notably iPXE) provide descriptors where the vnet header and the frame payload are in separate buffers, resulting in two iovec entries per virtqueue element. Currently, the RX (host to guest) path assumes a single iovec per element, which triggers:
ASSERTION FAILED in virtqueue_map_desc (virtio.c:403): num_sg < max_num_sg
This series reworks the UDP vhost-user receive path to support multiple iovec entries per element, fixing the iPXE crash.
This series only addresses the UDP path. TCP vhost-user will be updated to use multi-iov elements in a subsequent series.
v11: - Rebase on master - use sizeof(*uh) instead of sizeof(struct udphdr) in udp_tap_prepare() - improve @payload doc in udp_vu_sock_recv() - add R-b from David
Applied. -- Stefano