From patchwork Wed Jan 26 06:30:11 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jie Wang X-Patchwork-Id: 106546 X-Patchwork-Delegate: ferruh.yigit@amd.com 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 7CEC0A04A5; Wed, 26 Jan 2022 07:31:11 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id E0041426FE; Wed, 26 Jan 2022 07:31:09 +0100 (CET) Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by mails.dpdk.org (Postfix) with ESMTP id 21672426FC for ; Wed, 26 Jan 2022 07:31:07 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1643178668; x=1674714668; h=from:to:cc:subject:date:message-id:in-reply-to: references:reply-to:mime-version: content-transfer-encoding; bh=D5DrGbIZQ4HBBdDwVSfq69AoU58/+juRpAlYMXi4URU=; b=PaAni2wTM6lI4xM+KIkf6AhxWOlLPwqoVz2RDLnoeFQmQ00pODVn9YyT M7ZQsaosV8O02SodlW+/xbo7LGirdkb6W6CWYXkkpVUqtyJU5jMQ6/9Oy U5lq1+wuiT3FD9Qli2Rds/O0zj2ZYnGYUaDwQEcVUBUQYj2SGMLYm93Qf K1xOxDAs6Mx4uiga+WWt2tK2j1aEb0AqpdX4rq0DZPXfwslNsRg2uGAvk y1ruNz2QzIw63ayC0lmIl0n7iHDIFqvIY+alNU6EbPZMbjGyaTV4pFmhK Nepd1Au3LuUkv+s11687dEPirQNqxV2+jZSrHD74+uW9zB+Jki8s/npgf g==; X-IronPort-AV: E=McAfee;i="6200,9189,10238"; a="244088881" X-IronPort-AV: E=Sophos;i="5.88,316,1635231600"; d="scan'208";a="244088881" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 25 Jan 2022 22:31:07 -0800 X-IronPort-AV: E=Sophos;i="5.88,316,1635231600"; d="scan'208";a="520688763" Received: from intel-cd-odc-gavin.cd.intel.com ([10.240.178.183]) by orsmga007-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 25 Jan 2022 22:31:04 -0800 From: Jie Wang To: dev@dpdk.org Cc: stevex.yang@intel.com, orika@nvidia.com, aman.deep.singh@intel.com, ferruh.yigit@intel.com, thomas@monjalon.net, andrew.rybchenko@oktetlabs.ru, jingjing.wu@intel.com, beilei.xing@intel.com, qi.z.zhang@intel.com, Jie Wang Subject: [PATCH v2 1/6] ethdev: add L2TPv2 RSS offload type Date: Wed, 26 Jan 2022 14:30:11 +0800 Message-Id: <20220126063016.2384393-2-jie1x.wang@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220126063016.2384393-1-jie1x.wang@intel.com> References: <20220126063016.2384393-1-jie1x.wang@intel.com> MIME-Version: 1.0 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: , Reply-To: 20220124065613.2197436-1-jie1x.wang@intel.com Errors-To: dev-bounces@dpdk.org This patch defines new RSS offload type for L2TPv2, which is required when users want to distribute packets based on the L2TPv2 session ID field. Signed-off-by: Jie Wang --- app/test-pmd/cmdline.c | 10 ++++++---- app/test-pmd/config.c | 3 ++- doc/guides/rel_notes/release_22_03.rst | 5 +++++ lib/ethdev/rte_ethdev.h | 7 +++++++ 4 files changed, 20 insertions(+), 5 deletions(-) diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c index e626b1c7d9..d535311f21 100644 --- a/app/test-pmd/cmdline.c +++ b/app/test-pmd/cmdline.c @@ -2178,7 +2178,7 @@ cmd_config_rss_parsed(void *parsed_result, RTE_ETH_RSS_TCP | RTE_ETH_RSS_UDP | RTE_ETH_RSS_SCTP | RTE_ETH_RSS_L2_PAYLOAD | RTE_ETH_RSS_L2TPV3 | RTE_ETH_RSS_ESP | RTE_ETH_RSS_AH | RTE_ETH_RSS_PFCP | RTE_ETH_RSS_GTPU | - RTE_ETH_RSS_ECPRI; + RTE_ETH_RSS_ECPRI | RTE_ETH_RSS_L2TPV2; else if (!strcmp(res->value, "eth")) rss_conf.rss_hf = RTE_ETH_RSS_ETH; else if (!strcmp(res->value, "vlan")) @@ -2256,6 +2256,8 @@ cmd_config_rss_parsed(void *parsed_result, rss_conf.rss_hf = (rss_hf | RTE_ETH_RSS_LEVEL_INNERMOST); } else if (!strcmp(res->value, "default")) use_default = 1; + else if (!strcmp(res->value, "l2tpv2")) + rss_conf.rss_hf = RTE_ETH_RSS_L2TPV2; else if (isdigit(res->value[0]) && atoi(res->value) > 0 && atoi(res->value) < 64) rss_conf.rss_hf = 1ULL << atoi(res->value); @@ -2314,7 +2316,7 @@ cmdline_parse_inst_t cmd_config_rss = { .help_str = "port config all rss " "all|default|eth|vlan|ip|tcp|udp|sctp|ether|port|vxlan|geneve|" "nvgre|vxlan-gpe|l2tpv3|esp|ah|pfcp|ecpri|mpls|none|level-default|" - "level-outer|level-inner|ipv4-chksum|", + "level-outer|level-inner|ipv4-chksum|l2tpv2|", .tokens = { (void *)&cmd_config_rss_port, (void *)&cmd_config_rss_keyword, @@ -2429,7 +2431,7 @@ cmdline_parse_token_string_t cmd_config_rss_hash_key_rss_type = "ipv6-tcp-ex#ipv6-udp-ex#" "l3-src-only#l3-dst-only#l4-src-only#l4-dst-only#" "l2-src-only#l2-dst-only#s-vlan#c-vlan#" - "l2tpv3#esp#ah#pfcp#pppoe#gtpu#ecpri#mpls"); + "l2tpv3#esp#ah#pfcp#pppoe#gtpu#ecpri#mpls#l2tpv2"); cmdline_parse_token_string_t cmd_config_rss_hash_key_value = TOKEN_STRING_INITIALIZER(struct cmd_config_rss_hash_key, key, NULL); @@ -2442,7 +2444,7 @@ cmdline_parse_inst_t cmd_config_rss_hash_key = { "l2-payload|ipv6-ex|ipv6-tcp-ex|ipv6-udp-ex|" "l3-src-only|l3-dst-only|l4-src-only|l4-dst-only|" "l2-src-only|l2-dst-only|s-vlan|c-vlan|" - "l2tpv3|esp|ah|pfcp|pppoe|gtpu|ecpri|mpls " + "l2tpv3|esp|ah|pfcp|pppoe|gtpu|ecpri|mpls|l2tpv2 " "", .tokens = { (void *)&cmd_config_rss_hash_key_port, diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c index 1722d6c8f8..ec922bd304 100644 --- a/app/test-pmd/config.c +++ b/app/test-pmd/config.c @@ -90,7 +90,7 @@ const struct rss_type_info rss_type_table[] = { { "all", RTE_ETH_RSS_ETH | RTE_ETH_RSS_VLAN | RTE_ETH_RSS_IP | RTE_ETH_RSS_TCP | RTE_ETH_RSS_UDP | RTE_ETH_RSS_SCTP | RTE_ETH_RSS_L2_PAYLOAD | RTE_ETH_RSS_L2TPV3 | RTE_ETH_RSS_ESP | RTE_ETH_RSS_AH | RTE_ETH_RSS_PFCP | - RTE_ETH_RSS_GTPU | RTE_ETH_RSS_ECPRI | RTE_ETH_RSS_MPLS}, + RTE_ETH_RSS_GTPU | RTE_ETH_RSS_ECPRI | RTE_ETH_RSS_MPLS | RTE_ETH_RSS_L2TPV2}, { "none", 0 }, { "eth", RTE_ETH_RSS_ETH }, { "l2-src-only", RTE_ETH_RSS_L2_SRC_ONLY }, @@ -143,6 +143,7 @@ const struct rss_type_info rss_type_table[] = { { "mpls", RTE_ETH_RSS_MPLS }, { "ipv4-chksum", RTE_ETH_RSS_IPV4_CHKSUM }, { "l4-chksum", RTE_ETH_RSS_L4_CHKSUM }, + { "l2tpv2", RTE_ETH_RSS_L2TPV2 }, { NULL, 0 }, }; diff --git a/doc/guides/rel_notes/release_22_03.rst b/doc/guides/rel_notes/release_22_03.rst index 33be3241b9..9a507ab9ea 100644 --- a/doc/guides/rel_notes/release_22_03.rst +++ b/doc/guides/rel_notes/release_22_03.rst @@ -55,6 +55,11 @@ New Features Also, make sure to start the actual text at the margin. ======================================================= +* **Added new RSS offload types for L2TPv2 in RSS flow.** + + Added macro RTE_ETH_RSS_L2TPV2, now L2TPv2 session ID field can be used as + input set for RSS. + * **Updated Cisco enic driver.** * Added rte_flow support for matching GENEVE packets. diff --git a/lib/ethdev/rte_ethdev.h b/lib/ethdev/rte_ethdev.h index 147cc1ced3..1e493a1e33 100644 --- a/lib/ethdev/rte_ethdev.h +++ b/lib/ethdev/rte_ethdev.h @@ -651,6 +651,13 @@ struct rte_eth_rss_conf { #define RTE_ETH_RSS_L4_CHKSUM RTE_BIT64(35) #define ETH_RSS_L4_CHKSUM RTE_DEPRECATED(ETH_RSS_L4_CHKSUM) RTE_ETH_RSS_L4_CHKSUM +/* + * Below macro is defined for RSS offload type, it can be used to + * fill rte_eth_rss_conf.rss_hf or rte_flow_action_rss.types. + */ +#define RTE_ETH_RSS_L2TPV2 RTE_BIT64(36) +#define ETH_RSS_L2TPV2 RTE_DEPRECATED(ETH_RSS_L2TPV2) RTE_ETH_RSS_L2TPV2 + /* * We use the following macros to combine with above RTE_ETH_RSS_* for * more specific input set selection. These bits are defined starting