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.coquelin@redhat.com>
Reviewed-by: Chenbo Xia <chenbo.xia@intel.com>
---
lib/vhost/vduse.c | 8 ++++++++
1 file changed, 8 insertions(+)
@@ -147,6 +147,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));
@@ -165,6 +166,13 @@ vduse_events_handler(int fd, void *arg, int *remove __rte_unused)
vduse_req_id_to_str(req.type), 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;