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 36E94A04B5; Mon, 11 Jan 2021 06:46:19 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 0B6D4140CDC; Mon, 11 Jan 2021 06:46:19 +0100 (CET) Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by mails.dpdk.org (Postfix) with ESMTP id ECBDC140CDB for ; Mon, 11 Jan 2021 06:46:16 +0100 (CET) IronPort-SDR: tA6pJWgHKFcUj74V2qnRoLwP/ValDBZCm4WbJrQGovxouTx3A1RZRQX+kx1ztjmM7egfafc4hf uSyz4MvhkLIA== X-IronPort-AV: E=McAfee;i="6000,8403,9860"; a="177957758" X-IronPort-AV: E=Sophos;i="5.79,337,1602572400"; d="scan'208";a="177957758" Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 10 Jan 2021 21:46:15 -0800 IronPort-SDR: XW9u07t5jsfw0woZovqhCMLkm5q68HyFOspBY6jLkWtj30CtSQbCygPut+NG7M6+cwF7sbJ/WA JZd089gCJFUQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.79,337,1602572400"; d="scan'208";a="396933090" Received: from npg_dpdk_virtio_jiayuhu_07.sh.intel.com ([10.67.118.193]) by fmsmga004.fm.intel.com with ESMTP; 10 Jan 2021 21:46:14 -0800 From: Jiayu Hu To: dev@dpdk.org Cc: maxime.coquelin@redhat.com, chenbo.xia@intel.com, cheng1.jiang@intel.com, yinan.wang@intel.com, jiayu.hu@intel.com Date: Mon, 11 Jan 2021 07:16:25 -0500 Message-Id: <1610367387-117188-1-git-send-email-jiayu.hu@intel.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1608884934-106977-1-git-send-email-jiayu.hu@intel.com> References: <1608884934-106977-1-git-send-email-jiayu.hu@intel.com> Subject: [dpdk-dev] [PATCH v4 0/2] Enhance Async Enqueue for Small Packets 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 Sender: "dev" Async enqueue offloads large copies to DMA devices, and small copies are still performed by the CPU. However, it requires users to get enqueue completed packets by rte_vhost_poll_enqueue_completed(), even if they are completed by the CPU when rte_vhost_submit_enqueue_burst() returns. This design incurs extra overheads of tracking completed pktmbufs and function calls, thus degrading performance on small packets. The first patch cleans up async enqueue code, and the second patch enables rte_vhost_submit_enqueue_burst() to return completed packets. Change log ========== v4: - support new API in vhost example v3: - fix incorrect ret value when DMA ring is full - enhance description of API declaration and programmer guide v2: - fix typo - rename API variables - update programmer guide Jiayu Hu (2): vhost: cleanup async enqueue vhost: enhance async enqueue for small packets doc/guides/prog_guide/vhost_lib.rst | 8 +- examples/vhost/main.c | 18 ++- lib/librte_vhost/rte_vhost_async.h | 34 +++-- lib/librte_vhost/vhost.c | 14 +- lib/librte_vhost/vhost.h | 7 +- lib/librte_vhost/vhost_user.c | 7 +- lib/librte_vhost/virtio_net.c | 258 ++++++++++++++++++++---------------- 7 files changed, 200 insertions(+), 146 deletions(-) -- 2.7.4