From 3237e25d7036dc153e7cf340fcd74809d1274c93 Mon Sep 17 00:00:00 2001 From: Bowen Wang Date: Thu, 13 Feb 2025 20:44:12 +0800 Subject: [PATCH] drivers/virtio: use virtqueue_nused() to check pending buffers Replace direct virtqueue internal field access with virtqueue_nused() API to check for pending buffers in interrupt handlers. This improves code maintainability and handles cached memory scenarios correctly. Signed-off-by: Bowen Wang --- drivers/virtio/virtio-mmio.c | 3 +-- drivers/virtio/virtio-pci.c | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/drivers/virtio/virtio-mmio.c b/drivers/virtio/virtio-mmio.c index 1b0978fdbfe..b1ff1fd022a 100644 --- a/drivers/virtio/virtio-mmio.c +++ b/drivers/virtio/virtio-mmio.c @@ -755,8 +755,7 @@ static int virtio_mmio_interrupt(int irq, FAR void *context, FAR void *arg) for (i = 0; i < vmdev->vdev.vrings_num; i++) { vq = vrings_info[i].vq; - if (vq->vq_used_cons_idx != vq->vq_ring.used->idx && - vq->callback != NULL) + if (vq->callback != NULL && virtqueue_nused(vq) > 0) { vq->callback(vq); } diff --git a/drivers/virtio/virtio-pci.c b/drivers/virtio/virtio-pci.c index 14b9de1d0a9..d552616006e 100644 --- a/drivers/virtio/virtio-pci.c +++ b/drivers/virtio/virtio-pci.c @@ -99,8 +99,7 @@ static void virtio_pci_vq_callback(FAR struct virtio_pci_device_s *vpdev) for (i = 0; i < vpdev->vdev.vrings_num; i++) { vq = vrings_info[i].vq; - if (vq->vq_used_cons_idx != vq->vq_ring.used->idx && - vq->callback != NULL) + if (vq->callback != NULL && virtqueue_nused(vq) > 0) { vq->callback(vq); }