aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/virtio/virtqueue.c
diff options
context:
space:
mode:
authorBryan Venteicher <bryanv@FreeBSD.org>2013-07-04 17:50:11 +0000
committerBryan Venteicher <bryanv@FreeBSD.org>2013-07-04 17:50:11 +0000
commit6632efe40da2e4f78d75a2e4e7434fef14139e3e (patch)
treeadfa592c287e8e552c48a18adac66fc0d37fffd6 /sys/dev/virtio/virtqueue.c
parent61762e7dbc49a0c8f369931ee12a2bbda888e203 (diff)
Notes
Diffstat (limited to 'sys/dev/virtio/virtqueue.c')
-rw-r--r--sys/dev/virtio/virtqueue.c17
1 files changed, 13 insertions, 4 deletions
diff --git a/sys/dev/virtio/virtqueue.c b/sys/dev/virtio/virtqueue.c
index 1553afaa6430..275a92dc75b4 100644
--- a/sys/dev/virtio/virtqueue.c
+++ b/sys/dev/virtio/virtqueue.c
@@ -414,18 +414,27 @@ virtqueue_nused(struct virtqueue *vq)
}
int
-virtqueue_intr(struct virtqueue *vq)
+virtqueue_intr_filter(struct virtqueue *vq)
{
- if (vq->vq_intrhand == NULL ||
- vq->vq_used_cons_idx == vq->vq_ring.used->idx)
+ if (__predict_false(vq->vq_intrhand == NULL))
+ return (0);
+ if (vq->vq_used_cons_idx == vq->vq_ring.used->idx)
return (0);
- vq->vq_intrhand(vq->vq_intrhand_arg);
+ virtqueue_disable_intr(vq);
return (1);
}
+void
+virtqueue_intr(struct virtqueue *vq)
+{
+
+ if (__predict_true(vq->vq_intrhand != NULL))
+ vq->vq_intrhand(vq->vq_intrhand_arg);
+}
+
int
virtqueue_enable_intr(struct virtqueue *vq)
{