[dpdk-dev] [PATCH v3] vhost: Expose virtio interrupt need on rte_vhost API
Yuanhan Liu
yliu at fridaylinux.org
Fri Oct 6 08:40:15 CEST 2017
On Sat, Sep 23, 2017 at 08:31:37PM +0000, Jan Scheurich wrote:
...
> +int rte_vhost_tx_interrupt_requested(int vid, uint16_t qid)
> +{
> + struct virtio_net *dev;
> + struct vhost_virtqueue *vq;
> +
> + dev = get_device(vid);
> + if (dev == NULL)
> + return 0;
> +
> + vq = dev->virtqueue[qid];
> + if (vq == NULL)
> + return 0;
> +
> + if (unlikely(vq->enabled == 0 || vq->avail == NULL))
> + return 0;
> +
> + return !(vq->avail->flags & VRING_AVAIL_F_NO_INTERRUPT);
Two comments here:
- as you see, the flags is stored at vq->avail, which is stored at the
shared memory. That means, the virtio driver could change the value
at any time.
That said, this API should not be intended to be invoked once. Then
you have to invoke it repeatedly, which might be a bit costy.
- OTOH, you might want to try "rte_vhost_get_vhost_vring" API, which
exposes the vq->avail, therefore, the interrupt flag is also exposed.
--yliu
More information about the dev
mailing list