]> git.droids-corp.org - dpdk.git/commitdiff
vhost: notify virtq file descriptor update
authorMatan Azrad <matan@mellanox.com>
Mon, 29 Jun 2020 14:08:20 +0000 (14:08 +0000)
committerFerruh Yigit <ferruh.yigit@intel.com>
Tue, 30 Jun 2020 12:52:31 +0000 (14:52 +0200)
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

index d9c421bc01496841177020d35e4319bc1116a295..6039a8fdb9cb9eaa6a47f232a631204e58d1617c 100644 (file)
@@ -1619,6 +1619,12 @@ vhost_user_set_vring_call(struct virtio_net **pdev, struct VhostUserMsg *msg,
                "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);
 
@@ -1877,6 +1883,11 @@ vhost_user_set_vring_kick(struct virtio_net **pdev, struct VhostUserMsg *msg,
                                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;