Hi Jens,

On 08/10/2018 09:09 AM, Jens Freimann wrote:
On Wed, Aug 08, 2018 at 05:23:22PM +0200, Maxime Coquelin wrote:
For consistency with Vhost kernel backend, save the wrap
counter value into bit 31 of num's vring state field.

Signed-off-by: Maxime Coquelin <maxime.coque...@redhat.com>
---
lib/librte_vhost/vhost_user.c | 16 ++++++++++++----
1 file changed, 12 insertions(+), 4 deletions(-)

diff --git a/lib/librte_vhost/vhost_user.c b/lib/librte_vhost/vhost_user.c
index a2d4c9ffc..31cfdf163 100644
--- a/lib/librte_vhost/vhost_user.c
+++ b/lib/librte_vhost/vhost_user.c
@@ -648,10 +648,15 @@ static int
vhost_user_set_vring_base(struct virtio_net *dev,
              VhostUserMsg *msg)
{
-    dev->virtqueue[msg->payload.state.index]->last_used_idx  =
-            msg->payload.state.num;
-    dev->virtqueue[msg->payload.state.index]->last_avail_idx =
-            msg->payload.state.num;
+    struct vhost_virtqueue *vq = dev->virtqueue[msg->payload.state.index];
+    if (dev->features & (1ULL << VIRTIO_F_RING_PACKED)) {
+        vq->avail_wrap_counter = msg->payload.state.num >> 31;
+        vq->used_wrap_counter = vq->avail_wrap_counter;

Maybe I don't understand when this is called, but the wrap counters
could have different values, no?

No, because we set the used index to the saved avail index value, so
wrap counters must be the same.

Apart from that:

Reviewed-by: Jens Freimann <jfreim...@redhat.com>
regards,
Jens

Reply via email to