This patch adds support for VDUSE_GET_VQ_STATE event
handling, which consists in providing the backend last
available index for the specified virtqueue.

Signed-off-by: Maxime Coquelin <maxime.coque...@redhat.com>
---
 lib/vhost/vduse.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/lib/vhost/vduse.c b/lib/vhost/vduse.c
index 2a183130d3..36028b7315 100644
--- a/lib/vhost/vduse.c
+++ b/lib/vhost/vduse.c
@@ -133,6 +133,7 @@ vduse_events_handler(int fd, void *arg, int *remove 
__rte_unused)
        struct virtio_net *dev = arg;
        struct vduse_dev_request req;
        struct vduse_dev_response resp;
+       struct vhost_virtqueue *vq;
        int ret;
 
        memset(&resp, 0, sizeof(resp));
@@ -155,6 +156,13 @@ vduse_events_handler(int fd, void *arg, int *remove 
__rte_unused)
                        req.type);
 
        switch (req.type) {
+       case VDUSE_GET_VQ_STATE:
+               vq = dev->virtqueue[req.vq_state.index];
+               VHOST_LOG_CONFIG(dev->ifname, INFO, "\tvq index: %u, 
avail_index: %u\n",
+                               req.vq_state.index, vq->last_avail_idx);
+               resp.vq_state.split.avail_index = vq->last_avail_idx;
+               resp.result = VDUSE_REQ_RESULT_OK;
+               break;
        default:
                resp.result = VDUSE_REQ_RESULT_FAILED;
                break;
-- 
2.39.2

Reply via email to