From bf7a4a9d726c19dabaab3dfbdb7845773b2e4623 Mon Sep 17 00:00:00 2001 From: Matheus Date: Mon, 28 Sep 2026 10:59:36 -0300 Subject: [PATCH] vionet: fix transmit publication ordering --- kernel-src/io/net/vionet.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/kernel-src/io/net/vionet.c b/kernel-src/io/net/vionet.c index bbe3b32b..bed4271c 100644 --- a/kernel-src/io/net/vionet.c +++ b/kernel-src/io/net/vionet.c @@ -139,12 +139,13 @@ static int vionet_sendpacket(netdev_t *internal, netdesc_t desc, mac_t targetmac buffers[idx].length = desc.size; buffers[idx].flags = 0; - size_t driveridx = VIO_QUEUE_DRV_IDX(&netdev->txqueue)++; + size_t driveridx = VIO_QUEUE_DRV_IDX(&netdev->txqueue); VIO_QUEUE_DRV_RING(&netdev->txqueue)[driveridx % netdev->txqueue.size] = idx; sched_prepare_sleep(false); netdev->txwait[idx] = current_thread(); - *netdev->txqueue.notify = 0; + VIO_QUEUE_DRV_IDX(&netdev->txqueue) = driveridx + 1; + *netdev->txqueue.notify = 1; spinlock_release(&netdev->txlock);