Hi Maxime, I have noticed you changed the state this patch to Superseded. So are you going to submit a new version of this patch?
Thanks, Cheng > -----Original Message----- > From: Jiang, Cheng1 > Sent: Wednesday, July 7, 2021 7:11 PM > To: Maxime Coquelin <maxime.coque...@redhat.com>; dev@dpdk.org; Xia, > Chenbo <chenbo....@intel.com> > Cc: sta...@dpdk.org > Subject: RE: [PATCH v2] vhost: fix assuming packed ring size is a power of 2 > > Hi Maxime, > > I have also noticed the wrong calculation here, thanks for the timely help. > > Thanks, > Cheng > > > -----Original Message----- > > From: Maxime Coquelin <maxime.coque...@redhat.com> > > Sent: Wednesday, July 7, 2021 6:30 PM > > To: dev@dpdk.org; Jiang, Cheng1 <cheng1.ji...@intel.com>; Xia, Chenbo > > <chenbo....@intel.com> > > Cc: Maxime Coquelin <maxime.coque...@redhat.com>; sta...@dpdk.org > > Subject: [PATCH v2] vhost: fix assuming packed ring size is a power of > > 2 > > > > Unlike split ring, packed ring does not mandate the ring size to be a > > power of 2. So we have to use a modulo operation when wrapping ring > index. > > > > Fixes: 873e8dad6f49 ("vhost: support packed ring in async datapath") > > Cc: sta...@dpdk.org > > > > Signed-off-by: Maxime Coquelin <maxime.coque...@redhat.com> > > --- > > > > V2: Also fix wrapping in virtio_dev_rx_async_get_info_idx which is > > used in the packed ring data path. > > > > lib/vhost/virtio_net.c | 4 ++-- > > 1 file changed, 2 insertions(+), 2 deletions(-) > > > > diff --git a/lib/vhost/virtio_net.c b/lib/vhost/virtio_net.c index > > b93482587c..0de5231db7 100644 > > --- a/lib/vhost/virtio_net.c > > +++ b/lib/vhost/virtio_net.c > > @@ -1470,7 +1470,7 @@ virtio_dev_rx_async_get_info_idx(uint16_t > > pkts_idx, > > uint16_t vq_size, uint16_t n_inflight) { > > return pkts_idx > n_inflight ? (pkts_idx - n_inflight) : > > - (vq_size - n_inflight + pkts_idx) & (vq_size - 1); > > + (vq_size - n_inflight + pkts_idx) % vq_size; > > } > > > > static __rte_always_inline void > > @@ -2131,7 +2131,7 @@ uint16_t rte_vhost_poll_enqueue_completed(int > > vid, uint16_t queue_id, > > > > if (vq_is_packed(dev)) { > > for (i = 0; i < n_pkts_put; i++) { > > - from = (start_idx + i) & (vq_size - 1); > > + from = (start_idx + i) % vq_size; > > n_buffers += pkts_info[from].nr_buffers; > > pkts[i] = pkts_info[from].mbuf; > > } > > -- > > 2.31.1 > > > Acked-by: Cheng Jiang <cheng1.ji...@intel.com>