[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