Tested-by: Xiao, QimaiX <qimaix.x...@intel.com> Regards, Xiao Qimai
> -----Original Message----- > From: dev [mailto:dev-boun...@dpdk.org] On Behalf Of Marvin Liu > Sent: Monday, March 16, 2020 11:38 PM > To: maxime.coque...@redhat.com; Wang, Zhihong > <zhihong.w...@intel.com>; Ye, Xiaolong <xiaolong...@intel.com> > Cc: dev@dpdk.org; sta...@dpdk.org; Liu, Yong <yong....@intel.com> > Subject: [dpdk-dev] [PATCH] vhost: fix packed ring zero-copy > > Available buffer ID should be stored in the zmbuf in the packed-ring > dequeue path. There's no guarantee that local queue avail index is equal to > buffer ID. > > 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> > Reviewed-by: Maxime Coquelin <maxime.coque...@redhat.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); > -- > 2.17.1