When vhost-user frontend sends GET_VRING_BASE, last used index of vring
should be returned. In DPDK vhost library, 'last_used_idx' represents it.
But the value can be over max index value. To return correct value to
vhost frontend, it's needed to be masked.

Signed-off-by: Tetsuya Mukawa <mukawa at igel.co.jp>
---
 lib/librte_vhost/virtio-net.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/lib/librte_vhost/virtio-net.c b/lib/librte_vhost/virtio-net.c
index b520ec5..144f301 100644
--- a/lib/librte_vhost/virtio-net.c
+++ b/lib/librte_vhost/virtio-net.c
@@ -661,7 +661,8 @@ get_vring_base(struct vhost_device_ctx ctx, uint32_t index,

        state->index = index;
        /* State->index refers to the queue index. The txq is 1, rxq is 0. */
-       state->num = dev->virtqueue[state->index]->last_used_idx;
+       state->num = dev->virtqueue[state->index]->last_used_idx
+                       & (dev->virtqueue[state->index]->size - 1);

        return 0;
 }
-- 
2.1.4

Reply via email to