]> git.ipfire.org Git - thirdparty/u-boot.git/commitdiff
virtio: net: Add missing virtqueue_kick in free_pkt
authorChristian Speich <c.speich@avm.de>
Thu, 24 Jul 2025 12:29:59 +0000 (14:29 +0200)
committerJerome Forissier <jerome.forissier@linaro.org>
Fri, 1 Aug 2025 07:30:47 +0000 (09:30 +0200)
Every virtqueue_add must eventually be followed by virtqueue_kick for to
properly notify the peer that new buffers have been put into the queue.

This is currently missing for virtio-net and may result in non-working
network when the host has depleted the rx buffers and waits for new
buffers. Depending on the host it may busy poll on the virtio queue or
wait for the kick. Qemu does the latter and may break.

Signed-off-by: Christian Speich <c.speich@avm.de>
drivers/virtio/virtio_net.c

index 0e5367a085e4e75b659118930d88bf6696b15936..71e4d2513964c7484114642453dffad69b4b5df9 100644 (file)
@@ -128,6 +128,7 @@ static int virtio_net_free_pkt(struct udevice *dev, uchar *packet, int length)
 
        /* Put the buffer back to the rx ring */
        virtqueue_add(priv->rx_vq, sgs, 0, 1);
+       virtqueue_kick(priv->rx_vq);
 
        return 0;
 }