From patchwork Tue Jun 15 08:19:56 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alvin Zhang X-Patchwork-Id: 94187 X-Patchwork-Delegate: andrew.rybchenko@oktetlabs.ru 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 17F45A0C49; Tue, 15 Jun 2021 10:20:06 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id F2DCF4067E; Tue, 15 Jun 2021 10:20:05 +0200 (CEST) Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by mails.dpdk.org (Postfix) with ESMTP id C886240140 for ; Tue, 15 Jun 2021 10:20:04 +0200 (CEST) IronPort-SDR: 5MBzAa3kGF1E5Xd1T3ZGUECnSy339fkZ7qX3K0LmSb1XuWZZ/gye1eRK4PxpTvuVd387cZmy22 CApoyXL3mEiA== X-IronPort-AV: E=McAfee;i="6200,9189,10015"; a="193256205" X-IronPort-AV: E=Sophos;i="5.83,275,1616482800"; d="scan'208";a="193256205" Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Jun 2021 01:20:03 -0700 IronPort-SDR: EuVE//puV+DHNtqHIEm3wnYdWADLmrHn26ofsJGvAQiduuzBjRAnz/dWscjPMu3Jgn0RI5YugF ZRMNgVwfMh8w== X-IronPort-AV: E=Sophos;i="5.83,275,1616482800"; d="scan'208";a="421047247" Received: from shwdenpg235.ccr.corp.intel.com ([10.240.182.60]) by orsmga002-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Jun 2021 01:20:01 -0700 From: Alvin Zhang To: qi.z.zhang@intel.com, andrew.rybchenko@oktetlabs.ru, ajit.khaparde@broadcom.com Cc: dev@dpdk.org, Alvin Zhang Date: Tue, 15 Jun 2021 16:19:56 +0800 Message-Id: <20210615081956.23656-1-alvinx.zhang@intel.com> X-Mailer: git-send-email 2.21.0.windows.1 In-Reply-To: <20210603080352.10924-1-alvinx.zhang@intel.com> References: <20210603080352.10924-1-alvinx.zhang@intel.com> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v3] ethdev: add IPv4 and L4 checksum RSS offload types 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" This patch defines new RSS offload types for IPv4 and L4 checksum, which are required when users want to distribute packets based on the IPv4 or L4 checksum field. For example "flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv4-chksum end queues end / end", this flow causes all matching packets to be distributed to queues on basis of IPv4 checksum. Signed-off-by: Alvin Zhang Reviewed-by: Andrew Rybchenko Acked-by: Ajit Khaparde Acked-by: Aman Deep Singh --- v3: Add L4 checksum RSS offload type --- app/test-pmd/cmdline.c | 4 ++++ app/test-pmd/config.c | 2 ++ lib/ethdev/rte_ethdev.h | 2 ++ 3 files changed, 8 insertions(+) diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c index 0268b18..6148d84 100644 --- a/app/test-pmd/cmdline.c +++ b/app/test-pmd/cmdline.c @@ -2254,6 +2254,10 @@ struct cmd_config_rss { rss_conf.rss_hf = ETH_RSS_ECPRI; else if (!strcmp(res->value, "mpls")) rss_conf.rss_hf = ETH_RSS_MPLS; + else if (!strcmp(res->value, "ipv4-chksum")) + rss_conf.rss_hf = ETH_RSS_IPV4_CHKSUM; + else if (!strcmp(res->value, "l4-chksum")) + rss_conf.rss_hf = ETH_RSS_L4_CHKSUM; else if (!strcmp(res->value, "none")) rss_conf.rss_hf = 0; else if (!strcmp(res->value, "level-default")) { diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c index 43c79b5..14968bf 100644 --- a/app/test-pmd/config.c +++ b/app/test-pmd/config.c @@ -140,6 +140,8 @@ { "gtpu", ETH_RSS_GTPU }, { "ecpri", ETH_RSS_ECPRI }, { "mpls", ETH_RSS_MPLS }, + { "ipv4-chksum", ETH_RSS_IPV4_CHKSUM }, + { "l4-chksum", ETH_RSS_L4_CHKSUM }, { NULL, 0 }, }; diff --git a/lib/ethdev/rte_ethdev.h b/lib/ethdev/rte_ethdev.h index faf3bd9..1268729 100644 --- a/lib/ethdev/rte_ethdev.h +++ b/lib/ethdev/rte_ethdev.h @@ -537,6 +537,8 @@ struct rte_eth_rss_conf { #define ETH_RSS_PPPOE (1ULL << 31) #define ETH_RSS_ECPRI (1ULL << 32) #define ETH_RSS_MPLS (1ULL << 33) +#define ETH_RSS_IPV4_CHKSUM (1ULL << 34) +#define ETH_RSS_L4_CHKSUM (1ULL << 35) /* * We use the following macros to combine with above ETH_RSS_* for