[v3,5/6] vhost: notify virtq file descriptor update

Message ID 1593439701-136089-6-git-send-email-matan@mellanox.com (mailing list archive)
State Accepted, archived
Delegated to: Maxime Coquelin
Headers
Series vhost: improve ready state |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation fail apply issues

Commit Message

Matan Azrad June 29, 2020, 2:08 p.m. UTC
  When virtq call or kick file descriptors are changed in the device
configuration when the queue is ready, the application and the vDPA
driver should be notified to be aligned to the new file descriptors.

Notify the state to be disabled before the file descriptor update and
return it back to be enabled after the update.

Signed-off-by: Matan Azrad <matan@mellanox.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Reviewed-by: Chenbo Xia <chenbo.xia@intel.com>
---
 lib/librte_vhost/vhost_user.c | 11 +++++++++++
 1 file changed, 11 insertions(+)
  

Patch

diff --git a/lib/librte_vhost/vhost_user.c b/lib/librte_vhost/vhost_user.c
index f690fdb..f3966b6 100644
--- a/lib/librte_vhost/vhost_user.c
+++ b/lib/librte_vhost/vhost_user.c
@@ -1624,6 +1624,12 @@ 
 		"vring call idx:%d file:%d\n", file.index, file.fd);
 
 	vq = dev->virtqueue[file.index];
+
+	if (vq->ready) {
+		vhost_user_notify_queue_state(dev, file.index, 0);
+		vq->ready = 0;
+	}
+
 	if (vq->callfd >= 0)
 		close(vq->callfd);
 
@@ -1882,6 +1888,11 @@  static int vhost_user_set_vring_err(struct virtio_net **pdev __rte_unused,
 				dev->vid, file.index, 1);
 	}
 
+	if (vq->ready) {
+		vhost_user_notify_queue_state(dev, file.index, 0);
+		vq->ready = 0;
+	}
+
 	if (vq->kickfd >= 0)
 		close(vq->kickfd);
 	vq->kickfd = file.fd;