summaryrefslogtreecommitdiff
path: root/drivers/virtio/virtio_net.c
diff options
context:
space:
mode:
authorChristian Speich <c.speich@avm.de>2025-07-24 14:29:59 +0200
committerJerome Forissier <jerome.forissier@linaro.org>2025-08-01 09:30:47 +0200
commitd1b4bfc98441663de1388bff5043b7a9351c8c5a (patch)
tree99a7f0c0375050dbd76f334fde46250248de27e8 /drivers/virtio/virtio_net.c
parent3c1ac44caaa243acb7c3fe0aca412778b8cc28e6 (diff)
virtio: net: Add missing virtqueue_kick in free_pkt
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>
Diffstat (limited to 'drivers/virtio/virtio_net.c')
-rw-r--r--drivers/virtio/virtio_net.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/virtio/virtio_net.c b/drivers/virtio/virtio_net.c
index 0e5367a085e..71e4d251396 100644
--- a/drivers/virtio/virtio_net.c
+++ b/drivers/virtio/virtio_net.c
@@ -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;
}