From b8cd7012a530e29221eb589b6b8da9f8903fcd8b Mon Sep 17 00:00:00 2001 From: Enigamict Date: Fri, 7 Nov 2025 20:31:52 +0900 Subject: [PATCH] fix(virtio): KVM receive path Signed-off-by: Enigamict --- awkernel_drivers/src/pcie/virtio/virtio_net.rs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/awkernel_drivers/src/pcie/virtio/virtio_net.rs b/awkernel_drivers/src/pcie/virtio/virtio_net.rs index bf34035e6..bd0fe10d0 100644 --- a/awkernel_drivers/src/pcie/virtio/virtio_net.rs +++ b/awkernel_drivers/src/pcie/virtio/virtio_net.rs @@ -949,6 +949,20 @@ impl VirtioNetInner { self.virtio_pci_setup_queue(idx, phy_addr)?; } + let mut should_notify = Vec::new(); + for queue in self.virtqueues.iter_mut() { + let mut node = MCSNode::new(); + let mut rx = queue.rx.lock(&mut node); + should_notify.push(rx.vio_populate_rx_mbufs()); + } + + for (queue_idx, need_notify) in should_notify.iter().enumerate() { + if *need_notify { + let rx_vq_idx = (queue_idx as u16) * 2; + self.virtio_notify(rx_vq_idx)?; + } + } + self.common_cfg .virtio_set_device_status(VIRTIO_CONFIG_DEVICE_STATUS_DRIVER_OK)?;