diff options
| author | Bryan Venteicher <bryanv@FreeBSD.org> | 2013-07-04 17:50:11 +0000 |
|---|---|---|
| committer | Bryan Venteicher <bryanv@FreeBSD.org> | 2013-07-04 17:50:11 +0000 |
| commit | 6632efe40da2e4f78d75a2e4e7434fef14139e3e (patch) | |
| tree | adfa592c287e8e552c48a18adac66fc0d37fffd6 /sys/dev/virtio/virtqueue.c | |
| parent | 61762e7dbc49a0c8f369931ee12a2bbda888e203 (diff) | |
Notes
Diffstat (limited to 'sys/dev/virtio/virtqueue.c')
| -rw-r--r-- | sys/dev/virtio/virtqueue.c | 17 |
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) { |
