[dpdk-dev] [PATCH v3] vhost: Expose virtio interrupt need on rte_vhost API

Jan Scheurich jan.scheurich at ericsson.com
Mon Oct 16 17:30:41 CEST 2017


Fixed the subject.

> Date: Fri, 6 Oct 2017 14:40:15 +0800
> From: Yuanhan Liu <yliu at fridaylinux.org>
> To: Jan Scheurich <jan.scheurich at ericsson.com>
> Cc: "'dev at dpdk.org'" <dev at dpdk.org>
> Subject: Re: [dpdk-dev] [PATCH v3] vhost: Expose virtio interrupt need
> 	on rte_vhost API
> Message-ID: <20171006064015.GD1545 at yliu-home>
> Content-Type: text/plain; charset=us-ascii
> 
> 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.

That is understood.

> - OTOH, you might want to try "rte_vhost_get_vhost_vring" API, which
>   exposes the vq->avail, therefore, the interrupt flag is also exposed.

Thanks for the pointer. I checked and all necessary tools to access the interrupt flag are publicly available on the API. So the proposed new API function is not needed. I will obsolete the patch. 

Regards, Jan


More information about the dev mailing list