From patchwork Wed Jul 8 07:33:39 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Junfeng Guo X-Patchwork-Id: 73508 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 869ECA00BE; Wed, 8 Jul 2020 09:35:33 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 0FBD81DA28; Wed, 8 Jul 2020 09:35:29 +0200 (CEST) Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by dpdk.org (Postfix) with ESMTP id ECB001DA27 for ; Wed, 8 Jul 2020 09:35:27 +0200 (CEST) IronPort-SDR: VImSqJMUnxUgCDCAWJBAWCgEf1rwLYQCm5kKHKxSoYe7canMc9Jc+NaZq6BQA9FpHdf2mCSMiy xY4tMebkm5Dw== X-IronPort-AV: E=McAfee;i="6000,8403,9675"; a="147760454" X-IronPort-AV: E=Sophos;i="5.75,327,1589266800"; d="scan'208";a="147760454" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga007.jf.intel.com ([10.7.209.58]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Jul 2020 00:35:27 -0700 IronPort-SDR: DqGKXRKSR8f8S7nJFjZSA3VoEl5pJnP+xNtEAkZjHlS628rW7hglPJVeFRprsBalME0+y91D52 fhgD1aBmkK/A== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.75,327,1589266800"; d="scan'208";a="323790580" Received: from dpdk-junfengguo-v3.sh.intel.com ([10.67.119.146]) by orsmga007.jf.intel.com with ESMTP; 08 Jul 2020 00:35:25 -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 15:33:39 +0800 Message-Id: <20200708073341.546583-2-junfeng.guo@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200708073341.546583-1-junfeng.guo@intel.com> References: <20200708043621.276392-1-junfeng.guo@intel.com> <20200708073341.546583-1-junfeng.guo@intel.com> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v4 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 07:33:40 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Junfeng Guo X-Patchwork-Id: 73509 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 019EFA00BE; Wed, 8 Jul 2020 09:35:43 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 8BC911DAD1; Wed, 8 Jul 2020 09:35:32 +0200 (CEST) Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by dpdk.org (Postfix) with ESMTP id C68711DB16 for ; Wed, 8 Jul 2020 09:35:30 +0200 (CEST) IronPort-SDR: 2whJb74oA2GLdOErlB5gau7c5Q9vhn8kxqfl7H19bVVT13RP1FujDRLd+FQMW133W6J+IuHnXU Vb3JzUsNcn3w== X-IronPort-AV: E=McAfee;i="6000,8403,9675"; a="147760462" X-IronPort-AV: E=Sophos;i="5.75,327,1589266800"; d="scan'208";a="147760462" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga007.jf.intel.com ([10.7.209.58]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Jul 2020 00:35:30 -0700 IronPort-SDR: wMezUAAy0PblH8ba1s8FnXFksCMVNu/Bnfgu3XFg0+4ypNlO7wZsniWwD+9p3j0N4JqOnIF4HT IEd5MdhOaDcg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.75,327,1589266800"; d="scan'208";a="323790595" Received: from dpdk-junfengguo-v3.sh.intel.com ([10.67.119.146]) by orsmga007.jf.intel.com with ESMTP; 08 Jul 2020 00:35:28 -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 15:33:40 +0800 Message-Id: <20200708073341.546583-3-junfeng.guo@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200708073341.546583-1-junfeng.guo@intel.com> References: <20200708043621.276392-1-junfeng.guo@intel.com> <20200708073341.546583-1-junfeng.guo@intel.com> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v4 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 75013100f..5837b9011 100644 --- a/app/test-pmd/config.c +++ b/app/test-pmd/config.c @@ -119,6 +119,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 07:33:41 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Junfeng Guo X-Patchwork-Id: 73510 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 63E3BA00BE; Wed, 8 Jul 2020 09:35:50 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id D2CC81DB4F; Wed, 8 Jul 2020 09:35:35 +0200 (CEST) Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by dpdk.org (Postfix) with ESMTP id 0CEA01DB4F for ; Wed, 8 Jul 2020 09:35:33 +0200 (CEST) IronPort-SDR: RJ9uSMxImfYwb92lEqFGqj1HP778dIZAW/hRW9b7F0jHC/NMtMAH5JKbk1RNmMr2Ctwu03yCK1 oU6rspYgICJQ== X-IronPort-AV: E=McAfee;i="6000,8403,9675"; a="147760465" X-IronPort-AV: E=Sophos;i="5.75,327,1589266800"; d="scan'208";a="147760465" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga007.jf.intel.com ([10.7.209.58]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Jul 2020 00:35:33 -0700 IronPort-SDR: 1lbmpMRtw/smv/uRRo7D7MKgZ522AuBgLcS92VJW70mTshSZqhmku/SY1JN+yjK6GKp1vXDQtp ulbxoesHyzcQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.75,327,1589266800"; d="scan'208";a="323790618" Received: from dpdk-junfengguo-v3.sh.intel.com ([10.67.119.146]) by orsmga007.jf.intel.com with ESMTP; 08 Jul 2020 00:35:31 -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 15:33:41 +0800 Message-Id: <20200708073341.546583-4-junfeng.guo@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200708073341.546583-1-junfeng.guo@intel.com> References: <20200708043621.276392-1-junfeng.guo@intel.com> <20200708073341.546583-1-junfeng.guo@intel.com> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v4 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 a10734af0..9d455b262 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 = { @@ -716,6 +920,9 @@ ice_hash_parse_action(struct ice_pattern_match_item *pattern_match_item, 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 |