Thread (1 message) 1 message, 1 author, 2017-10-16

Re: dev Digest, Vol 164, Issue 196

From: Jan Scheurich <hidden>
Date: 2017-10-16 07:47:46

Date: Fri, 6 Oct 2017 14:40:15 +0800
From: Yuanhan Liu <redacted>
To: Jan Scheurich <redacted>
Cc: "'dev@dpdk.org'" <redacted>
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:
...
quoted
+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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help