Hi Maxime, > -----Original Message----- > From: Maxime Coquelin <[email protected]> > Sent: Friday, May 6, 2022 3:53 AM > To: Ding, Xuan <[email protected]>; Xia, Chenbo <[email protected]> > Cc: [email protected]; Hu, Jiayu <[email protected]>; Jiang, Cheng1 > <[email protected]>; Pai G, Sunil <[email protected]>; > [email protected] > Subject: Re: [PATCH v4 0/5] vhost: support async dequeue data path > > Hi Xuan, > > On 5/5/22 08:23, [email protected] wrote: > > From: Xuan Ding <[email protected]> > > > > The presence of asynchronous path allows applications to offload > > memory copies to DMA engine, so as to save CPU cycles and improve the > > copy performance. This patch set implements vhost async dequeue data > > path for split ring. The code is based on latest enqueue changes [1]. > > > > This patch set is a new design and implementation of [2]. Since dmadev > > was introduced in DPDK 21.11, to simplify application logics, this > > patch integrates dmadev in vhost. With dmadev integrated, vhost > > supports M:N mapping between vrings and DMA virtual channels. > > Specifically, one vring can use multiple different DMA channels and > > one DMA channel can be shared by multiple vrings at the same time. > > > > A new asynchronous dequeue function is introduced: > > 1) rte_vhost_async_try_dequeue_burst(int vid, uint16_t queue_id, > > struct rte_mempool *mbuf_pool, struct rte_mbuf **pkts, > > uint16_t count, int *nr_inflight, > > uint16_t dma_id, uint16_t vchan_id) > > > > Receive packets from the guest and offloads copies to DMA > > virtual channel. > > > > [1] https://mails.dpdk.org/archives/dev/2022-February/234555.html > > [2] https://mails.dpdk.org/archives/dev/2021-September/218591.html > > > > v3->v4: > > * fix CI build warnings > > * adjust some indentation > > * pass vq instead of queue_id > > > > v2->v3: > > * fix mbuf not updated correctly for large packets > > > > v1->v2: > > * fix a typo > > * fix a bug in desc_to_mbuf filling > > > > RFC v3 -> v1: > > * add sync and async path descriptor to mbuf refactoring > > * add API description in docs > > > > RFC v2 -> RFC v3: > > * rebase to latest DPDK version > > > > RFC v1 -> RFC v2: > > * fix one bug in example > > * rename vchan to vchan_id > > * check if dma_id and vchan_id valid > > * rework all the logs to new standard > > > > Xuan Ding (5): > > vhost: prepare sync for descriptor to mbuf refactoring > > vhost: prepare async for descriptor to mbuf refactoring > > vhost: merge sync and async descriptor to mbuf filling > > vhost: support async dequeue for split ring > > examples/vhost: support async dequeue data path > > > > doc/guides/prog_guide/vhost_lib.rst | 7 + > > doc/guides/rel_notes/release_22_07.rst | 4 + > > doc/guides/sample_app_ug/vhost.rst | 9 +- > > examples/vhost/main.c | 292 +++++++++++----- > > examples/vhost/main.h | 35 +- > > examples/vhost/virtio_net.c | 16 +- > > lib/vhost/rte_vhost_async.h | 33 ++ > > lib/vhost/version.map | 3 + > > lib/vhost/vhost.h | 1 + > > lib/vhost/virtio_net.c | 467 ++++++++++++++++++++++--- > > 10 files changed, 716 insertions(+), 151 deletions(-) > > > > I applied your other series about unsafe API to get DMA inflight packets, so I > have some conflicts when applying this series. > > Could you please rebase on top of next-virtio/main branch and repost?
Sure, I will rebase on top of latest main branch, please see v5. Thanks, Xuan > > Thanks in avance, > Maxime

