From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 25C5FA0589; Fri, 27 Mar 2020 10:18:12 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 4078A1C08E; Fri, 27 Mar 2020 10:18:11 +0100 (CET) Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by dpdk.org (Postfix) with ESMTP id 4DC301C07F for ; Fri, 27 Mar 2020 10:18:08 +0100 (CET) IronPort-SDR: QFdYM47CJ8cLKIA1ZrCnO25rBz5xWyr+4ceMUsywBddcew1zbRdkaFBRxakuPuih1+9a9t3mBA p5Bj62jpMRGg== X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 27 Mar 2020 02:18:07 -0700 IronPort-SDR: 7eUaTjvDjt6lsewjt+l0GbaEy+T21jxX6hRwmO6RESOw6r6UCayWXk059oHm3JEx7UFBxuftzC ykG1uggQmPZQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.72,311,1580803200"; d="scan'208";a="271507861" Received: from npg-dpdk-virtual-marvin-dev.sh.intel.com ([10.67.119.58]) by fmsmga004.fm.intel.com with ESMTP; 27 Mar 2020 02:18:06 -0700 From: Marvin Liu To: maxime.coquelin@redhat.com, xiaolong.ye@intel.com, zhihong.wang@intel.com Cc: dev@dpdk.org, Marvin Liu Date: Sat, 28 Mar 2020 00:54:05 +0800 Message-Id: <20200327165412.87359-1-yong.liu@intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200313174230.74661-1-yong.liu@intel.com> References: <20200313174230.74661-1-yong.liu@intel.com> Subject: [dpdk-dev] [PATCH v2 0/7] add packed ring vectorized datapath X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 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" This patch set introduced vectorized datapath for packed ring. The size of packed ring descriptor is 16Bytes. Four batched descriptors are just placed into one cacheline. AVX512 instructions can well handle this kind of data. Packed ring TX datapath can fully transformed into vectorized datapath. Rx datapath also can be vectorized when features limiated(LRO and mergable disabled). User can specify whether disable vectorized packed ring datapath by 'packed_vec' parameter of virtio user vdev. v2: 1. more function blocks replaced by vector instructions 2. clean virtio_net_hdr by vector instruction 3. allow header room size change 4. add 'packed_vec' option in virtio_user vdev 5. fix build not check whether AVX512 enabled 6. doc update Marvin Liu (7): net/virtio: add Rx free threshold setting net/virtio-user: add vectorized packed ring parameter net/virtio: add vectorized packed ring Rx function net/virtio: reuse packed ring xmit functions net/virtio: add vectorized packed ring Tx datapath net/virtio: add election for vectorized datapath doc: add packed vectorized datapath .../nics/features/virtio-packed_vec.ini | 22 + .../{virtio_vec.ini => virtio-split_vec.ini} | 2 +- doc/guides/nics/virtio.rst | 44 +- drivers/net/virtio/Makefile | 28 + drivers/net/virtio/meson.build | 11 + drivers/net/virtio/virtio_ethdev.c | 43 +- drivers/net/virtio/virtio_ethdev.h | 6 + drivers/net/virtio/virtio_pci.h | 2 + drivers/net/virtio/virtio_rxtx.c | 201 ++---- drivers/net/virtio/virtio_rxtx_packed_avx.c | 636 ++++++++++++++++++ drivers/net/virtio/virtio_user_ethdev.c | 27 +- drivers/net/virtio/virtqueue.h | 165 ++++- 12 files changed, 1005 insertions(+), 182 deletions(-) create mode 100644 doc/guides/nics/features/virtio-packed_vec.ini rename doc/guides/nics/features/{virtio_vec.ini => virtio-split_vec.ini} (88%) create mode 100644 drivers/net/virtio/virtio_rxtx_packed_avx.c -- 2.17.1