From patchwork Thu Feb 24 11:03:58 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Ding, Xuan" X-Patchwork-Id: 108199 Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id A9A77A0353; Thu, 24 Feb 2022 03:25:10 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 72C7340DF6; Thu, 24 Feb 2022 03:25:10 +0100 (CET) Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by mails.dpdk.org (Postfix) with ESMTP id 707E840696 for ; Thu, 24 Feb 2022 03:25:08 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1645669508; x=1677205508; h=from:to:cc:subject:date:message-id:in-reply-to: references; bh=gHqdgSBn6qEnDwzaFe9cxemFv0UsisRpjEISqWKsHKQ=; b=bvJg+USgIFhLmCuCFi7HJ7NpuyXon8XTpO6FmbroBA8PVupvPuWj768V FpiDcIIiA0VR1GN6Nmz8CJO/9uGlh+YKQme0iu+2iPpPvYF98csR/A3gD ORkY+dLHgBuPg2RpqrF3qVK25tJdkq+7UJYth30eWbYsRFHWIrxFt1XT6 +CpFBrB84oMmxqIp/jUOWPrfGQdfd+YlB4dBh+O+jAuSpbm7JLKYsD4Av dhkXh8u12Jd5uSzh+DsxxfHSwS3n1E9fjhw9UJCm2Eb2qUYCvgfQ8H6Zu oBJtcb2zjBQvAavyLSM2gYDapGDmpOGot74z05JqcbqVl8aSIChwzWc+e Q==; X-IronPort-AV: E=McAfee;i="6200,9189,10267"; a="276756829" X-IronPort-AV: E=Sophos;i="5.88,392,1635231600"; d="scan'208";a="276756829" Received: from orsmga003.jf.intel.com ([10.7.209.27]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 23 Feb 2022 18:25:07 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.88,392,1635231600"; d="scan'208";a="491433836" Received: from npg-dpdk-xuan-cbdma.sh.intel.com ([10.67.110.228]) by orsmga003.jf.intel.com with ESMTP; 23 Feb 2022 18:25:05 -0800 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: [RFC,v2 0/2] vhost: support async dequeue data path Date: Thu, 24 Feb 2022 11:03:58 +0000 Message-Id: <20220224110400.44670-1-xuan.ding@intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20220101001244.90147-1-xuan.ding@intel.com> References: <20220101001244.90147-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 an 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 is a draft implementation for split ring in vhost async dequeue data path. 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 RFC v1 -> 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 (2): vhost: support async dequeue for split ring examples/vhost: support async dequeue data path 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 | 1 + lib/vhost/vhost.h | 1 + lib/vhost/virtio_net.c | 504 +++++++++++++++++++++++++++++ 8 files changed, 793 insertions(+), 98 deletions(-)