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 B7967A0542; Sun, 9 Oct 2022 14:39:23 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 5B762400D5; Sun, 9 Oct 2022 14:39:23 +0200 (CEST) Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by mails.dpdk.org (Postfix) with ESMTP id DA82540042 for ; Sun, 9 Oct 2022 14:39:20 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1665319161; x=1696855161; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=wYe5Zm2KPh7mRs0F2Fk/duU3Si8w6Le5KIXvZIVwFWg=; b=JcK/kTW/jQZCLsSTOxgmPZCdoRaPhDJT+9Gz5Yxe/8VNclVjP98c+Txt Vo8iyn/XDeB8iaq9U2QAPpRo8fi/Bl8q+7EpnYGfOtDVVqzvdmnfKP77d gp36+grccX/yP+RWUqeTDd2cCdC4jZ5GQakPht/jJMWbkJ67fgyfcFSH9 7Vhn8hzNog3XqTZ9Y0Q5gCCtUHKNiE1DF5RCTGl0bBqyqQPf/ORsC6hoq v7M97cZY2q6bw/tqomkJ6DZ/q5zv55f5Ww32T67ug86KEvCBdmmEv/49r iHGUJyfxppLLeJbIDy3J9gFsGT+JA+1taYcYN1Hi3v7j5S3StFv5Vz0ou Q==; X-IronPort-AV: E=McAfee;i="6500,9779,10494"; a="283780074" X-IronPort-AV: E=Sophos;i="5.95,171,1661842800"; d="scan'208";a="283780074" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 09 Oct 2022 05:39:19 -0700 X-IronPort-AV: E=McAfee;i="6500,9779,10494"; a="656628279" X-IronPort-AV: E=Sophos;i="5.95,171,1661842800"; d="scan'208";a="656628279" Received: from unknown (HELO localhost.localdomain) ([10.239.252.55]) by orsmga008-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 09 Oct 2022 05:39:15 -0700 From: Yuan Wang To: dev@dpdk.org Cc: thomas@monjalon.net, andrew.rybchenko@oktetlabs.ru, ferruh.yigit@xilinx.com, mdr@ashroe.eu, xiaoyun.li@intel.com, aman.deep.singh@intel.com, yuying.zhang@intel.com, qi.z.zhang@intel.com, qiming.yang@intel.com, jerinjacobk@gmail.com, viacheslavo@nvidia.com, stephen@networkplumber.org, xuan.ding@intel.com, hpothula@marvell.com, yaqi.tang@intel.com, Yuan Wang Subject: [PATCH v9 0/4] support protocol based buffer split Date: Mon, 10 Oct 2022 04:25:37 +0800 Message-Id: <20221009202541.352724-1-yuanx.wang@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220812181552.2908067-1-yuanx.wang@intel.com> References: <20220812181552.2908067-1-yuanx.wang@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit 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 Protocol type based buffer split consists of splitting a received packet into several separate segments based on the packet content. It is useful in some scenarios, such as GPU acceleration. The splitting will help to enable true zero copy and hence improve the performance significantly. This patchset aims to support protocol header split based on current buffer split. When Rx queue is configured with RTE_ETH_RX_OFFLOAD_BUFFER_SPLIT offload and corresponding protocol, packets received will be directly split into different mempools. Change log: v9: Define the intend behaviors for exact match and longest match. Add protocol headers repeat check. Add no proto-split after length-based split check. Add a helper function to short the check function. Refine the doc and commit log. v8: Restrict length == 0 and proto_hdr == 0 in another buffer split. Add check for proto_hdr == 0 in last segment. Use heap instead of stack for array to avoid vulnerabilities. Define the proto_hdr for two segments and multi-segments, respectively. Separate variable definition and code. Refine the doc and commit log. v7: ice: Fix CI issue. v6: ice: Fix proto_hdr mappings to NIC configuration. v5: Define proto_hdr to use mask instead of single protocol type. Define PMD to return protocol header mask. Refine the doc and commit log. Remove deprecated RTE_FUNC_PTR_OR_ERR_RET. v4: Change proto_hdr to a bit mask of RTE_PTYPE_*. Add the description on how to put the unsplit packages. Use proto_hdr to determine whether to use protocol based split. v3: Fix mail thread. v2: Add mbuf dump to the driver's buffer split path. Add buffer split to the driver feature list. Remove unsupported header protocols from the driver. Yuan Wang (4): ethdev: introduce protocol header API ethdev: introduce protocol hdr based buffer split app/testpmd: add rxhdrs commands and parameters net/ice: support buffer split in Rx path app/test-pmd/cmdline.c | 152 ++++++++++- app/test-pmd/config.c | 108 ++++++++ app/test-pmd/parameters.c | 16 +- app/test-pmd/testpmd.c | 11 +- app/test-pmd/testpmd.h | 6 + doc/guides/nics/features.rst | 2 +- doc/guides/nics/features/default.ini | 1 + doc/guides/nics/features/ice.ini | 1 + doc/guides/rel_notes/release_22_11.rst | 16 ++ doc/guides/testpmd_app_ug/testpmd_funcs.rst | 19 +- drivers/net/ice/ice_ethdev.c | 58 ++++- drivers/net/ice/ice_rxtx.c | 263 +++++++++++++++++--- drivers/net/ice/ice_rxtx.h | 16 ++ drivers/net/ice/ice_rxtx_vec_common.h | 3 + lib/ethdev/ethdev_driver.h | 15 ++ lib/ethdev/rte_ethdev.c | 128 +++++++++- lib/ethdev/rte_ethdev.h | 67 ++++- lib/ethdev/version.map | 1 + 18 files changed, 829 insertions(+), 54 deletions(-) -- 2.25.1