From patchwork Wed Jul 8 04:36:19 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Junfeng Guo X-Patchwork-Id: 73500 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 5F86EA00BE; Wed, 8 Jul 2020 06:38:13 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id E74E21DE7E; Wed, 8 Jul 2020 06:38:08 +0200 (CEST) Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by dpdk.org (Postfix) with ESMTP id E7D6C1DE3E for ; Wed, 8 Jul 2020 06:38:06 +0200 (CEST) IronPort-SDR: GJBZMFUrs06pJSci8V3XBF9tgWWS0DRdNSpObEWyWIskmBnvNfEFxhg+bNg6aXlVSEUAIjbrC6 7x1yip0lzeIg== X-IronPort-AV: E=McAfee;i="6000,8403,9675"; a="232600531" X-IronPort-AV: E=Sophos;i="5.75,326,1589266800"; d="scan'208";a="232600531" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Jul 2020 21:38:06 -0700 IronPort-SDR: pe+sVe3yCq28LQJSDobz2cgaMhda4D5vMe2hbNvDR1yuvRqJ0Q1SI5ajopZQYiOJxPeDANiqMP /soBcodA+C5A== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.75,326,1589266800"; d="scan'208";a="314526656" Received: from dpdk-junfengguo-v3.sh.intel.com ([10.67.119.146]) by orsmga008.jf.intel.com with ESMTP; 07 Jul 2020 21:38:04 -0700 From: Junfeng Guo To: qi.z.zhang@intel.com, xiaolong.ye@intel.com, beilei.xing@intel.com, ferruh.yigit@intel.com Cc: dev@dpdk.org, jia.guo@intel.com, junfeng.guo@intel.com, simei.su@intel.com Date: Wed, 8 Jul 2020 12:36:19 +0800 Message-Id: <20200708043621.276392-2-junfeng.guo@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200708043621.276392-1-junfeng.guo@intel.com> References: <20200616081644.23887-1-junfeng.guo@intel.com> <20200708043621.276392-1-junfeng.guo@intel.com> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v3 1/3] ethdev: add new RSS types for IPv6 prefix 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 defines new RSS offload types for IPv6 prefix with 32, 48, 64 bits of both SRC and DST IPv6 address. Signed-off-by: Junfeng Guo --- lib/librte_ethdev/rte_ethdev.h | 51 ++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/lib/librte_ethdev/rte_ethdev.h b/lib/librte_ethdev/rte_ethdev.h index 631b146bd..5a7ba36d8 100644 --- a/lib/librte_ethdev/rte_ethdev.h +++ b/lib/librte_ethdev/rte_ethdev.h @@ -538,6 +538,9 @@ struct rte_eth_rss_conf { #define ETH_RSS_L4_DST_ONLY (1ULL << 60) #define ETH_RSS_L2_SRC_ONLY (1ULL << 59) #define ETH_RSS_L2_DST_ONLY (1ULL << 58) +#define ETH_RSS_L3_PRE32 (1ULL << 57) +#define ETH_RSS_L3_PRE48 (1ULL << 56) +#define ETH_RSS_L3_PRE64 (1ULL << 55) /** * For input set change of hash filter, if SRC_ONLY and DST_ONLY of @@ -561,6 +564,54 @@ rte_eth_rss_hf_refine(uint64_t rss_hf) return rss_hf; } +#define ETH_RSS_IPV6_PRE32 ( \ + ETH_RSS_IPV6 | \ + ETH_RSS_L3_PRE32) + +#define ETH_RSS_IPV6_PRE48 ( \ + ETH_RSS_IPV6 | \ + ETH_RSS_L3_PRE48) + +#define ETH_RSS_IPV6_PRE64 ( \ + ETH_RSS_IPV6 | \ + ETH_RSS_L3_PRE64) + +#define ETH_RSS_IPV6_PRE32_UDP ( \ + ETH_RSS_NONFRAG_IPV6_UDP | \ + ETH_RSS_L3_PRE32) + +#define ETH_RSS_IPV6_PRE48_UDP ( \ + ETH_RSS_NONFRAG_IPV6_UDP | \ + ETH_RSS_L3_PRE48) + +#define ETH_RSS_IPV6_PRE64_UDP ( \ + ETH_RSS_NONFRAG_IPV6_UDP | \ + ETH_RSS_L3_PRE64) + +#define ETH_RSS_IPV6_PRE32_TCP ( \ + ETH_RSS_NONFRAG_IPV6_TCP | \ + ETH_RSS_L3_PRE32) + +#define ETH_RSS_IPV6_PRE48_TCP ( \ + ETH_RSS_NONFRAG_IPV6_TCP | \ + ETH_RSS_L3_PRE48) + +#define ETH_RSS_IPV6_PRE64_TCP ( \ + ETH_RSS_NONFRAG_IPV6_TCP | \ + ETH_RSS_L3_PRE64) + +#define ETH_RSS_IPV6_PRE32_SCTP ( \ + ETH_RSS_NONFRAG_IPV6_SCTP | \ + ETH_RSS_L3_PRE32) + +#define ETH_RSS_IPV6_PRE48_SCTP ( \ + ETH_RSS_NONFRAG_IPV6_SCTP | \ + ETH_RSS_L3_PRE48) + +#define ETH_RSS_IPV6_PRE64_SCTP ( \ + ETH_RSS_NONFRAG_IPV6_SCTP | \ + ETH_RSS_L3_PRE64) + #define ETH_RSS_IP ( \ ETH_RSS_IPV4 | \ ETH_RSS_FRAG_IPV4 | \ From patchwork Wed Jul 8 04:36:20 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Junfeng Guo X-Patchwork-Id: 73501 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id CE885A00BE; Wed, 8 Jul 2020 06:38:20 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 2BABE1DECD; Wed, 8 Jul 2020 06:38:11 +0200 (CEST) Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by dpdk.org (Postfix) with ESMTP id 850BF1DEB7 for ; Wed, 8 Jul 2020 06:38:09 +0200 (CEST) IronPort-SDR: BB5mh9Ggz1MD9G9tj9y6aQK/0xQTcRLLUdelOWhmZv8h+plgWfotK51J+tWSePuU9+6do+Hwuq EQsQwN0Gr6eQ== X-IronPort-AV: E=McAfee;i="6000,8403,9675"; a="232600534" X-IronPort-AV: E=Sophos;i="5.75,326,1589266800"; d="scan'208";a="232600534" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Jul 2020 21:38:09 -0700 IronPort-SDR: 6vuf8/L12tNy0y5k2ohnyReBfytPSbMfhNsyvZVF4THmwUGXtm5xFX0lUDvAtPMrf6LsUWMk1j 7j3F3Z04Jw7w== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.75,326,1589266800"; d="scan'208";a="314526670" Received: from dpdk-junfengguo-v3.sh.intel.com ([10.67.119.146]) by orsmga008.jf.intel.com with ESMTP; 07 Jul 2020 21:38:07 -0700 From: Junfeng Guo To: qi.z.zhang@intel.com, xiaolong.ye@intel.com, beilei.xing@intel.com, ferruh.yigit@intel.com Cc: dev@dpdk.org, jia.guo@intel.com, junfeng.guo@intel.com, simei.su@intel.com Date: Wed, 8 Jul 2020 12:36:20 +0800 Message-Id: <20200708043621.276392-3-junfeng.guo@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200708043621.276392-1-junfeng.guo@intel.com> References: <20200616081644.23887-1-junfeng.guo@intel.com> <20200708043621.276392-1-junfeng.guo@intel.com> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v3 2/3] app/testpmd: support extended RSS offload types 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 adds testpmd cmdline support for IPv6 prefix. Signed-off-by: Junfeng Guo --- app/test-pmd/cmdline.c | 6 ++++++ app/test-pmd/config.c | 3 +++ 2 files changed, 9 insertions(+) diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c index 81c87c8c3..4d4612395 100644 --- a/app/test-pmd/cmdline.c +++ b/app/test-pmd/cmdline.c @@ -2297,6 +2297,12 @@ cmd_config_rss_parsed(void *parsed_result, rss_conf.rss_hf = ETH_RSS_GENEVE; else if (!strcmp(res->value, "nvgre")) rss_conf.rss_hf = ETH_RSS_NVGRE; + else if (!strcmp(res->value, "l3-pre32")) + rss_conf.rss_hf = ETH_RSS_L3_PRE32; + else if (!strcmp(res->value, "l3-pre48")) + rss_conf.rss_hf = ETH_RSS_L3_PRE48; + else if (!strcmp(res->value, "l3-pre64")) + rss_conf.rss_hf = ETH_RSS_L3_PRE64; else if (!strcmp(res->value, "l3-src-only")) rss_conf.rss_hf = ETH_RSS_L3_SRC_ONLY; else if (!strcmp(res->value, "l3-dst-only")) diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c index a79019f52..e51ef8b19 100644 --- a/app/test-pmd/config.c +++ b/app/test-pmd/config.c @@ -111,6 +111,9 @@ const struct rss_type_info rss_type_table[] = { { "tcp", ETH_RSS_TCP }, { "sctp", ETH_RSS_SCTP }, { "tunnel", ETH_RSS_TUNNEL }, + { "l3-pre32", ETH_RSS_L3_PRE32 }, + { "l3-pre48", ETH_RSS_L3_PRE48 }, + { "l3-pre64", ETH_RSS_L3_PRE64 }, { "l3-src-only", ETH_RSS_L3_SRC_ONLY }, { "l3-dst-only", ETH_RSS_L3_DST_ONLY }, { "l4-src-only", ETH_RSS_L4_SRC_ONLY }, From patchwork Wed Jul 8 04:36:21 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Junfeng Guo X-Patchwork-Id: 73502 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 668D1A00BE; Wed, 8 Jul 2020 06:38:29 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id DA2ED1DEE6; Wed, 8 Jul 2020 06:38:17 +0200 (CEST) Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by dpdk.org (Postfix) with ESMTP id ACE011DC74 for ; Wed, 8 Jul 2020 06:38:15 +0200 (CEST) IronPort-SDR: a85BTVnz1Q5Udf0Es3utqDfCr9Cnm+vIGd60tnwK7Bcz5qTaJV7MA2iqSQzovprFREWNVO0wjT cDfyrKm+rMyw== X-IronPort-AV: E=McAfee;i="6000,8403,9675"; a="127338260" X-IronPort-AV: E=Sophos;i="5.75,326,1589266800"; d="scan'208";a="127338260" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Jul 2020 21:38:15 -0700 IronPort-SDR: czU17d7lsKl9AQ2QlsvbyDdA/Eb+27bdT7KLh3RyDSePshMwyNj/pfou4zfpi+BOgvzAxKPqug rlkUQK78Znhw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.75,326,1589266800"; d="scan'208";a="314526698" Received: from dpdk-junfengguo-v3.sh.intel.com ([10.67.119.146]) by orsmga008.jf.intel.com with ESMTP; 07 Jul 2020 21:38:12 -0700 From: Junfeng Guo To: qi.z.zhang@intel.com, xiaolong.ye@intel.com, beilei.xing@intel.com, ferruh.yigit@intel.com Cc: dev@dpdk.org, jia.guo@intel.com, junfeng.guo@intel.com, simei.su@intel.com Date: Wed, 8 Jul 2020 12:36:21 +0800 Message-Id: <20200708043621.276392-4-junfeng.guo@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200708043621.276392-1-junfeng.guo@intel.com> References: <20200616081644.23887-1-junfeng.guo@intel.com> <20200708043621.276392-1-junfeng.guo@intel.com> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v3 3/3] net/ice: add RSS support for IPv6 prefix 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" RSS for IPv6 prefix fields are supported in this patch, so that we can use prefixes instead of full IPv6 address for RSS. These prefixes include the first 32, 48, 64 bits of both SRC and DST IPv6 address. Signed-off-by: Junfeng Guo --- drivers/net/ice/ice_hash.c | 207 +++++++++++++++++++++++++++++++++++++ 1 file changed, 207 insertions(+) diff --git a/drivers/net/ice/ice_hash.c b/drivers/net/ice/ice_hash.c index f23cc9517..62317182b 100644 --- a/drivers/net/ice/ice_hash.c +++ b/drivers/net/ice/ice_hash.c @@ -462,6 +462,21 @@ struct ice_hash_match_type ice_hash_type_list[] = { {ETH_RSS_IPV6 | ETH_RSS_L3_DST_ONLY, BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_DA)}, {ETH_RSS_IPV6, ICE_FLOW_HASH_IPV6}, + {ETH_RSS_IPV6_PRE32 | ETH_RSS_L3_SRC_ONLY, + BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE32_SA)}, + {ETH_RSS_IPV6_PRE32 | ETH_RSS_L3_DST_ONLY, + BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE32_DA)}, + {ETH_RSS_IPV6_PRE32, ICE_FLOW_HASH_IPV6_PRE32}, + {ETH_RSS_IPV6_PRE48 | ETH_RSS_L3_SRC_ONLY, + BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE48_SA)}, + {ETH_RSS_IPV6_PRE48 | ETH_RSS_L3_DST_ONLY, + BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE48_DA)}, + {ETH_RSS_IPV6_PRE48, ICE_FLOW_HASH_IPV6_PRE48}, + {ETH_RSS_IPV6_PRE64 | ETH_RSS_L3_SRC_ONLY, + BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE64_SA)}, + {ETH_RSS_IPV6_PRE64 | ETH_RSS_L3_DST_ONLY, + BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE64_DA)}, + {ETH_RSS_IPV6_PRE64, ICE_FLOW_HASH_IPV6_PRE64}, {ETH_RSS_NONFRAG_IPV6_UDP | ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY, BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_SA) | BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PROT) | @@ -493,6 +508,69 @@ struct ice_hash_match_type ice_hash_type_list[] = { {ETH_RSS_NONFRAG_IPV6_UDP, ICE_HASH_UDP_IPV6 | BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PROT)}, + {ETH_RSS_IPV6_PRE32_UDP | ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY, + BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE32_SA) | + BIT_ULL(ICE_FLOW_FIELD_IDX_UDP_SRC_PORT)}, + {ETH_RSS_IPV6_PRE32_UDP | ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY, + BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE32_SA) | + BIT_ULL(ICE_FLOW_FIELD_IDX_UDP_DST_PORT)}, + {ETH_RSS_IPV6_PRE32_UDP | ETH_RSS_L3_SRC_ONLY, + BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE32_SA)}, + {ETH_RSS_IPV6_PRE32_UDP | ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY, + BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE32_DA) | + BIT_ULL(ICE_FLOW_FIELD_IDX_UDP_SRC_PORT)}, + {ETH_RSS_IPV6_PRE32_UDP | ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY, + BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE32_DA) | + BIT_ULL(ICE_FLOW_FIELD_IDX_UDP_DST_PORT)}, + {ETH_RSS_IPV6_PRE32_UDP | ETH_RSS_L3_DST_ONLY, + BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE32_DA)}, + {ETH_RSS_IPV6_PRE32_UDP | ETH_RSS_L4_SRC_ONLY, + BIT_ULL(ICE_FLOW_FIELD_IDX_UDP_SRC_PORT)}, + {ETH_RSS_IPV6_PRE32_UDP | ETH_RSS_L4_DST_ONLY, + BIT_ULL(ICE_FLOW_FIELD_IDX_UDP_DST_PORT)}, + {ETH_RSS_IPV6_PRE32_UDP, ICE_HASH_UDP_IPV6_PRE32}, + {ETH_RSS_IPV6_PRE48_UDP | ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY, + BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE48_SA) | + BIT_ULL(ICE_FLOW_FIELD_IDX_UDP_SRC_PORT)}, + {ETH_RSS_IPV6_PRE48_UDP | ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY, + BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE48_SA) | + BIT_ULL(ICE_FLOW_FIELD_IDX_UDP_DST_PORT)}, + {ETH_RSS_IPV6_PRE48_UDP | ETH_RSS_L3_SRC_ONLY, + BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE48_SA)}, + {ETH_RSS_IPV6_PRE48_UDP | ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY, + BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE48_DA) | + BIT_ULL(ICE_FLOW_FIELD_IDX_UDP_SRC_PORT)}, + {ETH_RSS_IPV6_PRE48_UDP | ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY, + BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE48_DA) | + BIT_ULL(ICE_FLOW_FIELD_IDX_UDP_DST_PORT)}, + {ETH_RSS_IPV6_PRE48_UDP | ETH_RSS_L3_DST_ONLY, + BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE48_DA)}, + {ETH_RSS_IPV6_PRE48_UDP | ETH_RSS_L4_SRC_ONLY, + BIT_ULL(ICE_FLOW_FIELD_IDX_UDP_SRC_PORT)}, + {ETH_RSS_IPV6_PRE48_UDP | ETH_RSS_L4_DST_ONLY, + BIT_ULL(ICE_FLOW_FIELD_IDX_UDP_DST_PORT)}, + {ETH_RSS_IPV6_PRE48_UDP, ICE_HASH_UDP_IPV6_PRE48}, + {ETH_RSS_IPV6_PRE64_UDP | ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY, + BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE64_SA) | + BIT_ULL(ICE_FLOW_FIELD_IDX_UDP_SRC_PORT)}, + {ETH_RSS_IPV6_PRE64_UDP | ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY, + BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE64_SA) | + BIT_ULL(ICE_FLOW_FIELD_IDX_UDP_DST_PORT)}, + {ETH_RSS_IPV6_PRE64_UDP | ETH_RSS_L3_SRC_ONLY, + BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE64_SA)}, + {ETH_RSS_IPV6_PRE64_UDP | ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY, + BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE64_DA) | + BIT_ULL(ICE_FLOW_FIELD_IDX_UDP_SRC_PORT)}, + {ETH_RSS_IPV6_PRE64_UDP | ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY, + BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE64_DA) | + BIT_ULL(ICE_FLOW_FIELD_IDX_UDP_DST_PORT)}, + {ETH_RSS_IPV6_PRE64_UDP | ETH_RSS_L3_DST_ONLY, + BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE64_DA)}, + {ETH_RSS_IPV6_PRE64_UDP | ETH_RSS_L4_SRC_ONLY, + BIT_ULL(ICE_FLOW_FIELD_IDX_UDP_SRC_PORT)}, + {ETH_RSS_IPV6_PRE64_UDP | ETH_RSS_L4_DST_ONLY, + BIT_ULL(ICE_FLOW_FIELD_IDX_UDP_DST_PORT)}, + {ETH_RSS_IPV6_PRE64_UDP, ICE_HASH_UDP_IPV6_PRE64}, {ETH_RSS_NONFRAG_IPV6_TCP | ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY, BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_SA) | BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PROT) | @@ -522,6 +600,69 @@ struct ice_hash_match_type ice_hash_type_list[] = { {ETH_RSS_NONFRAG_IPV6_TCP, ICE_HASH_TCP_IPV6 | BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PROT)}, + {ETH_RSS_IPV6_PRE32_TCP | ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY, + BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE32_SA) | + BIT_ULL(ICE_FLOW_FIELD_IDX_TCP_SRC_PORT)}, + {ETH_RSS_IPV6_PRE32_TCP | ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY, + BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE32_SA) | + BIT_ULL(ICE_FLOW_FIELD_IDX_TCP_DST_PORT)}, + {ETH_RSS_IPV6_PRE32_TCP | ETH_RSS_L3_SRC_ONLY, + BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE32_SA)}, + {ETH_RSS_IPV6_PRE32_TCP | ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY, + BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE32_DA) | + BIT_ULL(ICE_FLOW_FIELD_IDX_TCP_SRC_PORT)}, + {ETH_RSS_IPV6_PRE32_TCP | ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY, + BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE32_DA) | + BIT_ULL(ICE_FLOW_FIELD_IDX_TCP_DST_PORT)}, + {ETH_RSS_IPV6_PRE32_TCP | ETH_RSS_L3_DST_ONLY, + BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE32_DA)}, + {ETH_RSS_IPV6_PRE32_TCP | ETH_RSS_L4_SRC_ONLY, + BIT_ULL(ICE_FLOW_FIELD_IDX_TCP_SRC_PORT)}, + {ETH_RSS_IPV6_PRE32_TCP | ETH_RSS_L4_DST_ONLY, + BIT_ULL(ICE_FLOW_FIELD_IDX_TCP_DST_PORT)}, + {ETH_RSS_IPV6_PRE32_TCP, ICE_HASH_TCP_IPV6_PRE32}, + {ETH_RSS_IPV6_PRE48_TCP | ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY, + BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE48_SA) | + BIT_ULL(ICE_FLOW_FIELD_IDX_TCP_SRC_PORT)}, + {ETH_RSS_IPV6_PRE48_TCP | ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY, + BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE48_SA) | + BIT_ULL(ICE_FLOW_FIELD_IDX_TCP_DST_PORT)}, + {ETH_RSS_IPV6_PRE48_TCP | ETH_RSS_L3_SRC_ONLY, + BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE48_SA)}, + {ETH_RSS_IPV6_PRE48_TCP | ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY, + BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE48_DA) | + BIT_ULL(ICE_FLOW_FIELD_IDX_TCP_SRC_PORT)}, + {ETH_RSS_IPV6_PRE48_TCP | ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY, + BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE48_DA) | + BIT_ULL(ICE_FLOW_FIELD_IDX_TCP_DST_PORT)}, + {ETH_RSS_IPV6_PRE48_TCP | ETH_RSS_L3_DST_ONLY, + BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE48_DA)}, + {ETH_RSS_IPV6_PRE48_TCP | ETH_RSS_L4_SRC_ONLY, + BIT_ULL(ICE_FLOW_FIELD_IDX_TCP_SRC_PORT)}, + {ETH_RSS_IPV6_PRE48_TCP | ETH_RSS_L4_DST_ONLY, + BIT_ULL(ICE_FLOW_FIELD_IDX_TCP_DST_PORT)}, + {ETH_RSS_IPV6_PRE48_TCP, ICE_HASH_TCP_IPV6_PRE48}, + {ETH_RSS_IPV6_PRE64_TCP | ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY, + BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE64_SA) | + BIT_ULL(ICE_FLOW_FIELD_IDX_TCP_SRC_PORT)}, + {ETH_RSS_IPV6_PRE64_TCP | ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY, + BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE64_SA) | + BIT_ULL(ICE_FLOW_FIELD_IDX_TCP_DST_PORT)}, + {ETH_RSS_IPV6_PRE64_TCP | ETH_RSS_L3_SRC_ONLY, + BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE64_SA)}, + {ETH_RSS_IPV6_PRE64_TCP | ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY, + BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE64_DA) | + BIT_ULL(ICE_FLOW_FIELD_IDX_TCP_SRC_PORT)}, + {ETH_RSS_IPV6_PRE64_TCP | ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY, + BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE64_DA) | + BIT_ULL(ICE_FLOW_FIELD_IDX_TCP_DST_PORT)}, + {ETH_RSS_IPV6_PRE64_TCP | ETH_RSS_L3_DST_ONLY, + BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE64_DA)}, + {ETH_RSS_IPV6_PRE64_TCP | ETH_RSS_L4_SRC_ONLY, + BIT_ULL(ICE_FLOW_FIELD_IDX_TCP_SRC_PORT)}, + {ETH_RSS_IPV6_PRE64_TCP | ETH_RSS_L4_DST_ONLY, + BIT_ULL(ICE_FLOW_FIELD_IDX_TCP_DST_PORT)}, + {ETH_RSS_IPV6_PRE64_TCP, ICE_HASH_TCP_IPV6_PRE64}, {ETH_RSS_NONFRAG_IPV6_SCTP | ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY, BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_SA) | BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PROT) | @@ -551,6 +692,69 @@ struct ice_hash_match_type ice_hash_type_list[] = { {ETH_RSS_NONFRAG_IPV6_SCTP, ICE_HASH_SCTP_IPV6 | BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PROT)}, + {ETH_RSS_IPV6_PRE32_SCTP | ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY, + BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE32_SA) | + BIT_ULL(ICE_FLOW_FIELD_IDX_SCTP_SRC_PORT)}, + {ETH_RSS_IPV6_PRE32_SCTP | ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY, + BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE32_SA) | + BIT_ULL(ICE_FLOW_FIELD_IDX_SCTP_DST_PORT)}, + {ETH_RSS_IPV6_PRE32_SCTP | ETH_RSS_L3_SRC_ONLY, + BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE32_SA)}, + {ETH_RSS_IPV6_PRE32_SCTP | ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY, + BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE32_DA) | + BIT_ULL(ICE_FLOW_FIELD_IDX_SCTP_SRC_PORT)}, + {ETH_RSS_IPV6_PRE32_SCTP | ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY, + BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE32_DA) | + BIT_ULL(ICE_FLOW_FIELD_IDX_SCTP_DST_PORT)}, + {ETH_RSS_IPV6_PRE32_SCTP | ETH_RSS_L3_DST_ONLY, + BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE32_DA)}, + {ETH_RSS_IPV6_PRE32_SCTP | ETH_RSS_L4_SRC_ONLY, + BIT_ULL(ICE_FLOW_FIELD_IDX_SCTP_SRC_PORT)}, + {ETH_RSS_IPV6_PRE32_SCTP | ETH_RSS_L4_DST_ONLY, + BIT_ULL(ICE_FLOW_FIELD_IDX_SCTP_DST_PORT)}, + {ETH_RSS_IPV6_PRE32_SCTP, ICE_HASH_SCTP_IPV6_PRE32}, + {ETH_RSS_IPV6_PRE48_SCTP | ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY, + BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE48_SA) | + BIT_ULL(ICE_FLOW_FIELD_IDX_SCTP_SRC_PORT)}, + {ETH_RSS_IPV6_PRE48_SCTP | ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY, + BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE48_SA) | + BIT_ULL(ICE_FLOW_FIELD_IDX_SCTP_DST_PORT)}, + {ETH_RSS_IPV6_PRE48_SCTP | ETH_RSS_L3_SRC_ONLY, + BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE48_SA)}, + {ETH_RSS_IPV6_PRE48_SCTP | ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY, + BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE48_DA) | + BIT_ULL(ICE_FLOW_FIELD_IDX_SCTP_SRC_PORT)}, + {ETH_RSS_IPV6_PRE48_SCTP | ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY, + BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE48_DA) | + BIT_ULL(ICE_FLOW_FIELD_IDX_SCTP_DST_PORT)}, + {ETH_RSS_IPV6_PRE48_SCTP | ETH_RSS_L3_DST_ONLY, + BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE48_DA)}, + {ETH_RSS_IPV6_PRE48_SCTP | ETH_RSS_L4_SRC_ONLY, + BIT_ULL(ICE_FLOW_FIELD_IDX_SCTP_SRC_PORT)}, + {ETH_RSS_IPV6_PRE48_SCTP | ETH_RSS_L4_DST_ONLY, + BIT_ULL(ICE_FLOW_FIELD_IDX_SCTP_DST_PORT)}, + {ETH_RSS_IPV6_PRE48_SCTP, ICE_HASH_SCTP_IPV6_PRE48}, + {ETH_RSS_IPV6_PRE64_SCTP | ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY, + BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE64_SA) | + BIT_ULL(ICE_FLOW_FIELD_IDX_SCTP_SRC_PORT)}, + {ETH_RSS_IPV6_PRE64_SCTP | ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY, + BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE64_SA) | + BIT_ULL(ICE_FLOW_FIELD_IDX_SCTP_DST_PORT)}, + {ETH_RSS_IPV6_PRE64_SCTP | ETH_RSS_L3_SRC_ONLY, + BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE64_SA)}, + {ETH_RSS_IPV6_PRE64_SCTP | ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY, + BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE64_DA) | + BIT_ULL(ICE_FLOW_FIELD_IDX_SCTP_SRC_PORT)}, + {ETH_RSS_IPV6_PRE64_SCTP | ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY, + BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE64_DA) | + BIT_ULL(ICE_FLOW_FIELD_IDX_SCTP_DST_PORT)}, + {ETH_RSS_IPV6_PRE64_SCTP | ETH_RSS_L3_DST_ONLY, + BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE64_DA)}, + {ETH_RSS_IPV6_PRE64_SCTP | ETH_RSS_L4_SRC_ONLY, + BIT_ULL(ICE_FLOW_FIELD_IDX_SCTP_SRC_PORT)}, + {ETH_RSS_IPV6_PRE64_SCTP | ETH_RSS_L4_DST_ONLY, + BIT_ULL(ICE_FLOW_FIELD_IDX_SCTP_DST_PORT)}, + {ETH_RSS_IPV6_PRE64_SCTP, ICE_HASH_SCTP_IPV6_PRE64}, }; static struct ice_flow_engine ice_hash_engine = { @@ -715,6 +919,9 @@ ice_hash_parse_action(struct ice_pattern_match_item *pattern_match_item, uint64_t combine_type = ETH_RSS_L2_SRC_ONLY | ETH_RSS_L2_DST_ONLY | + ETH_RSS_L3_PRE32 | + ETH_RSS_L3_PRE48 | + ETH_RSS_L3_PRE64 | ETH_RSS_L3_SRC_ONLY | ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY |