I would make the title a bit more generic, e.g.: vhost: fix packed ring zero-copy
On 2/24/20 3:50 PM, Marvin Liu wrote: > zc mbufs should record available buffer id when doing dequeue zcopy. Available buffer ID should be stored in the mbuf in the packed-ring dequeue path. > There's no guarantee that local queue avail index equal to buffer index. > > Fixes: d1eafb532268 ("vhost: add packed ring zcopy batch and single dequeue") > Cc: sta...@dpdk.org > > Signed-off-by: Marvin Liu <yong....@intel.com> > Reported-by: Yinan Wang <yinan.w...@intel.com> > > diff --git a/lib/librte_vhost/virtio_net.c b/lib/librte_vhost/virtio_net.c > index 37c47c7dc..210415904 100644 > --- a/lib/librte_vhost/virtio_net.c > +++ b/lib/librte_vhost/virtio_net.c > @@ -2004,7 +2004,7 @@ virtio_dev_tx_batch_packed_zmbuf(struct virtio_net *dev, > > vhost_for_each_try_unroll(i, 0, PACKED_BATCH_SIZE) { > zmbufs[i]->mbuf = pkts[i]; > - zmbufs[i]->desc_idx = avail_idx + i; > + zmbufs[i]->desc_idx = ids[i]; > zmbufs[i]->desc_count = 1; > } > > @@ -2045,7 +2045,7 @@ virtio_dev_tx_single_packed_zmbuf(struct virtio_net > *dev, > return -1; > } > zmbuf->mbuf = *pkts; > - zmbuf->desc_idx = vq->last_avail_idx; > + zmbuf->desc_idx = buf_id; > zmbuf->desc_count = desc_count; > > rte_mbuf_refcnt_update(*pkts, 1); > With the commit message fixed: Reviewed-by: Maxime Coquelin <maxime.coque...@redhat.com> Thanks, Maxime