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