From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <dev-bounces@dpdk.org>
Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124])
	by inbox.dpdk.org (Postfix) with ESMTP id 6F060A0505;
	Thu,  7 Apr 2022 17:31:19 +0200 (CEST)
Received: from [217.70.189.124] (localhost [127.0.0.1])
	by mails.dpdk.org (Postfix) with ESMTP id 64FD74068B;
	Thu,  7 Apr 2022 17:31:19 +0200 (CEST)
Received: from mga06.intel.com (mga06.intel.com [134.134.136.31])
 by mails.dpdk.org (Postfix) with ESMTP id 7662F40689
 for <dev@dpdk.org>; Thu,  7 Apr 2022 17:31:17 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple;
 d=intel.com; i=@intel.com; q=dns/txt; s=Intel;
 t=1649345477; x=1680881477;
 h=from:to:cc:subject:date:message-id;
 bh=9xNlgPBttJLH/rEazQ0WPnGpgBLlGiM1XGhutnaFUGA=;
 b=IQa14xq5VOPHkYZAmqXuvmtSIrHNMiQRdJHFL9S2vnxTC7gjMHbLEwQk
 aWnnLN6XbKidFCxaCgtK3stwZiDeLwyqEpKdtN8gvRDFkhnESU4aHfdyv
 cmoUQKhI6uJJfzEZbW0eX9SRR9D4lx4oxfz533QuAH78uJAznhqv/sRVD
 CLd6ZI0RASdra9p/JvPH7q7g7q3N4dDedjSLTuexjb1POJQlKNnZqU21a
 AZpqqztHEV9Yl/28uj3PqFAN6bz4/tzcFiirgDj8e6bi14Cf+6pzZHd15
 Mml9ZXY1SbzLiNavpJmPp0RnpCpyRNSsuj0H3Pxs+X/EW7XnCgenW7zu+ w==;
X-IronPort-AV: E=McAfee;i="6400,9594,10310"; a="322046001"
X-IronPort-AV: E=Sophos;i="5.90,242,1643702400"; d="scan'208";a="322046001"
Received: from orsmga004.jf.intel.com ([10.7.209.38])
 by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;
 07 Apr 2022 08:31:13 -0700
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="5.90,242,1643702400"; d="scan'208";a="659104852"
Received: from npg-dpdk-xuan-cbdma.sh.intel.com ([10.67.110.228])
 by orsmga004.jf.intel.com with ESMTP; 07 Apr 2022 08:31:11 -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 <xuan.ding@intel.com>
Subject: [PATCH v1 0/5] vhost: support async dequeue data path
Date: Thu,  7 Apr 2022 15:25:41 +0000
Message-Id: <20220407152546.38167-1-xuan.ding@intel.com>
X-Mailer: git-send-email 2.17.1
X-BeenThere: dev@dpdk.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: DPDK patches and discussions <dev.dpdk.org>
List-Unsubscribe: <https://mails.dpdk.org/options/dev>,
 <mailto:dev-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://mails.dpdk.org/archives/dev/>
List-Post: <mailto:dev@dpdk.org>
List-Help: <mailto:dev-request@dpdk.org?subject=help>
List-Subscribe: <https://mails.dpdk.org/listinfo/dev>,
 <mailto:dev-request@dpdk.org?subject=subscribe>
Errors-To: dev-bounces@dpdk.org

From: Xuan Ding <xuan.ding@intel.com>

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 implements vhost async dequeue data
path for split ring.

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 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                 | 459 ++++++++++++++++++++++---
 10 files changed, 711 insertions(+), 148 deletions(-)

-- 
2.17.1