> Date: Fri, 6 Oct 2017 14:40:15 +0800 > From: Yuanhan Liu <y...@fridaylinux.org> > To: Jan Scheurich <jan.scheur...@ericsson.com> > Cc: "'dev@dpdk.org'" <dev@dpdk.org> > Subject: Re: [dpdk-dev] [PATCH v3] vhost: Expose virtio interrupt need > on rte_vhost API > Message-ID: <20171006064015.GD1545@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