vhost: fix async packed ring batch datapath
authorCheng Jiang <cheng1.jiang@intel.com>
Thu, 8 Jul 2021 10:25:28 +0000 (10:25 +0000)
committerChenbo Xia <chenbo.xia@intel.com>
Wed, 21 Jul 2021 05:56:13 +0000 (07:56 +0200)
commit2e3f1ab0d8e19feea3c50da790429a398fc9bb28
tree91cb04cda402f3da93e228666309993e9345d6d6
parent8d2c1260aff404767f7fa61508b864de81e95ce0
vhost: fix async packed ring batch datapath

We assume that in the sync path, if there is no buffer wrap in the
avail descriptors fetched in a batch, there is no buffer wrap in the
used descriptors which need to be written back in this batch, but
this assumption is wrong in the async path since there are inflight
descriptors which are processed by the DMA device.

This patch refactors the batch copy code and adds used ring buffer
wrap check as a batch copy condition to fix this issue.

Fixes: 873e8dad6f49 ("vhost: support packed ring in async datapath")
Cc: stable@dpdk.org
Signed-off-by: Cheng Jiang <cheng1.jiang@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
lib/vhost/virtio_net.c