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); }