From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 8E709A00BE; Mon, 16 May 2022 13:15:48 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 74AF240E03; Mon, 16 May 2022 13:15:48 +0200 (CEST) Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by mails.dpdk.org (Postfix) with ESMTP id 6A0D640A7A for ; Mon, 16 May 2022 13:15:47 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1652699747; x=1684235747; h=from:to:cc:subject:date:message-id:in-reply-to: references; bh=NLc07vgXheftFtYE2dIeRZMxQL3349jR2AS2kVfh5pY=; b=X98P4JhFZVrKn2o7Qvbqf8w9Y0Fd1bgKkrXrUgYSowHvdLE1WmYnZFld hoIW7mHM7Hq9ub8P6QGirU01e5MfwMolMXeKIPcByLZF5f9OAFBq2Z6qj w37ruxLT+AMN7ebBW7OfiNbADBwFRvUhsEk9F3FB565R8jYVxJSyfrK26 9l0Fn6hU7t2AagJ9bXg/pEalmpGF/XI4X4kVxiM1puW1jVJE/ff7Lw5Vw NvsOxZOY/uOa02BJaISUEHOjK0W7csxjNXIAu9SkVGchO1X3ZX3SGmsT3 zARKuKaEm9OZI7BE21Zmn1FH/bRUro59Us66FJaFW5OKXgCjX0QxLg/8v Q==; X-IronPort-AV: E=McAfee;i="6400,9594,10348"; a="296063031" X-IronPort-AV: E=Sophos;i="5.91,229,1647327600"; d="scan'208";a="296063031" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 May 2022 04:15:36 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.91,229,1647327600"; d="scan'208";a="568272340" Received: from npg-dpdk-xuan-cbdma.sh.intel.com ([10.67.110.228]) by orsmga007.jf.intel.com with ESMTP; 16 May 2022 04:15:31 -0700 From: xuan.ding@intel.com To: maxime.coquelin@redhat.com, chenbo.xia@intel.com Cc: dev@dpdk.org, jiayu.hu@intel.com, cheng1.jiang@intel.com, sunil.pai.g@intel.com, liangma@liangbit.com, Xuan Ding Subject: [PATCH v8 0/5] vhost: support async dequeue data path Date: Mon, 16 May 2022 11:10:36 +0000 Message-Id: <20220516111041.63914-1-xuan.ding@intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20220407152546.38167-1-xuan.ding@intel.com> References: <20220407152546.38167-1-xuan.ding@intel.com> X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org From: Xuan Ding 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 v7->v8: * change dma_id to int16_t * refine API documentation v6->v7: * correct code formatting * change some functions to inline v5->v6: * adjust EXPERIMENTAL header v4->v5: * rebase to latest DPDK * add some checks 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 | 6 + doc/guides/rel_notes/release_22_07.rst | 5 + doc/guides/sample_app_ug/vhost.rst | 9 +- examples/vhost/main.c | 286 ++++++++++----- examples/vhost/main.h | 32 +- examples/vhost/virtio_net.c | 16 +- lib/vhost/rte_vhost_async.h | 37 ++ lib/vhost/version.map | 2 +- lib/vhost/vhost.h | 1 + lib/vhost/virtio_net.c | 473 ++++++++++++++++++++++--- 10 files changed, 715 insertions(+), 152 deletions(-) -- 2.17.1