From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id A04B1A0613 for ; Wed, 25 Sep 2019 12:51:53 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 10D831BE51; Wed, 25 Sep 2019 12:51:53 +0200 (CEST) Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by dpdk.org (Postfix) with ESMTP id 078381BE0C for ; Wed, 25 Sep 2019 12:51:50 +0200 (CEST) X-Amp-Result: UNKNOWN X-Amp-Original-Verdict: FILE UNKNOWN X-Amp-File-Uploaded: False Received: from orsmga007.jf.intel.com ([10.7.209.58]) by orsmga104.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 25 Sep 2019 03:51:49 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.64,547,1559545200"; d="scan'208";a="179779557" Received: from yexl-server.sh.intel.com (HELO localhost) ([10.67.117.17]) by orsmga007.jf.intel.com with ESMTP; 25 Sep 2019 03:51:48 -0700 Date: Wed, 25 Sep 2019 18:49:38 +0800 From: Ye Xiaolong To: Simei Su Cc: qi.z.zhang@intel.com, jingjing.wu@intel.com, dev@dpdk.org Message-ID: <20190925104938.GG60476@intel.com> References: <1565328915-135315-1-git-send-email-simei.su@intel.com> <1569247539-101249-1-git-send-email-simei.su@intel.com> <1569247539-101249-2-git-send-email-simei.su@intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1569247539-101249-2-git-send-email-simei.su@intel.com> User-Agent: Mutt/1.9.4 (2018-02-28) Subject: Re: [dpdk-dev] [PATCH v2 1/2] ethdev: extend 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" On 09/23, Simei Su wrote: >This patch cover two aspects: > (1)decouple RTE_ETH_FLOW_* and ETH_RSS_*. Because both serve > different purposes. > > (2)reserve several bits as input set selection from bottom > of the 64 bits. It is combined with exisiting ETH_RSS_* to > represent rss types. > > for example: > ETH_RSS_IPV4 | ETH_RSS_L3_SRC_ONLY: hash on src ip address only > ETH_RSS_IPV4_UDP | ETH_RSS_L4_DST_ONLY: hash on src/dst IP and > dst UDP port > ETH_RSS_L2_PAYLOAD | ETH_RSS_L2_DST_ONLY: hash on dst mac address We also need to document well about what happens if users just set ETH_RSS_IPV4, both both src/dst ip still are taken into account, right? Thanks, Xiaolong > >Signed-off-by: Simei Su >--- > lib/librte_ethdev/rte_ethdev.h | 60 ++++++++++++++++++++++++------------------ > 1 file changed, 35 insertions(+), 25 deletions(-) > >diff --git a/lib/librte_ethdev/rte_ethdev.h b/lib/librte_ethdev/rte_ethdev.h >index d987178..7e6530d 100644 >--- a/lib/librte_ethdev/rte_ethdev.h >+++ b/lib/librte_ethdev/rte_ethdev.h >@@ -482,31 +482,41 @@ struct rte_eth_rss_conf { > #define RTE_ETH_FLOW_MAX 23 > > /* >- * The RSS offload types are defined based on flow types. >- * Different NIC hardware may support different RSS offload >- * types. The supported flow types or RSS offload types can be queried by >- * rte_eth_dev_info_get(). >- */ >-#define ETH_RSS_IPV4 (1ULL << RTE_ETH_FLOW_IPV4) >-#define ETH_RSS_FRAG_IPV4 (1ULL << RTE_ETH_FLOW_FRAG_IPV4) >-#define ETH_RSS_NONFRAG_IPV4_TCP (1ULL << RTE_ETH_FLOW_NONFRAG_IPV4_TCP) >-#define ETH_RSS_NONFRAG_IPV4_UDP (1ULL << RTE_ETH_FLOW_NONFRAG_IPV4_UDP) >-#define ETH_RSS_NONFRAG_IPV4_SCTP (1ULL << RTE_ETH_FLOW_NONFRAG_IPV4_SCTP) >-#define ETH_RSS_NONFRAG_IPV4_OTHER (1ULL << RTE_ETH_FLOW_NONFRAG_IPV4_OTHER) >-#define ETH_RSS_IPV6 (1ULL << RTE_ETH_FLOW_IPV6) >-#define ETH_RSS_FRAG_IPV6 (1ULL << RTE_ETH_FLOW_FRAG_IPV6) >-#define ETH_RSS_NONFRAG_IPV6_TCP (1ULL << RTE_ETH_FLOW_NONFRAG_IPV6_TCP) >-#define ETH_RSS_NONFRAG_IPV6_UDP (1ULL << RTE_ETH_FLOW_NONFRAG_IPV6_UDP) >-#define ETH_RSS_NONFRAG_IPV6_SCTP (1ULL << RTE_ETH_FLOW_NONFRAG_IPV6_SCTP) >-#define ETH_RSS_NONFRAG_IPV6_OTHER (1ULL << RTE_ETH_FLOW_NONFRAG_IPV6_OTHER) >-#define ETH_RSS_L2_PAYLOAD (1ULL << RTE_ETH_FLOW_L2_PAYLOAD) >-#define ETH_RSS_IPV6_EX (1ULL << RTE_ETH_FLOW_IPV6_EX) >-#define ETH_RSS_IPV6_TCP_EX (1ULL << RTE_ETH_FLOW_IPV6_TCP_EX) >-#define ETH_RSS_IPV6_UDP_EX (1ULL << RTE_ETH_FLOW_IPV6_UDP_EX) >-#define ETH_RSS_PORT (1ULL << RTE_ETH_FLOW_PORT) >-#define ETH_RSS_VXLAN (1ULL << RTE_ETH_FLOW_VXLAN) >-#define ETH_RSS_GENEVE (1ULL << RTE_ETH_FLOW_GENEVE) >-#define ETH_RSS_NVGRE (1ULL << RTE_ETH_FLOW_NVGRE) >+ * Below macros are defined for RSS offload types, they can be used to >+ * fill rte_eth_rss_conf.rss_hf or rte_flow_action_rss.types. >+ */ >+#define ETH_RSS_IPV4 (1ULL << 2) >+#define ETH_RSS_FRAG_IPV4 (1ULL << 3) >+#define ETH_RSS_NONFRAG_IPV4_TCP (1ULL << 4) >+#define ETH_RSS_NONFRAG_IPV4_UDP (1ULL << 5) >+#define ETH_RSS_NONFRAG_IPV4_SCTP (1ULL << 6) >+#define ETH_RSS_NONFRAG_IPV4_OTHER (1ULL << 7) >+#define ETH_RSS_IPV6 (1ULL << 8) >+#define ETH_RSS_FRAG_IPV6 (1ULL << 9) >+#define ETH_RSS_NONFRAG_IPV6_TCP (1ULL << 10) >+#define ETH_RSS_NONFRAG_IPV6_UDP (1ULL << 11) >+#define ETH_RSS_NONFRAG_IPV6_SCTP (1ULL << 12) >+#define ETH_RSS_NONFRAG_IPV6_OTHER (1ULL << 13) >+#define ETH_RSS_L2_PAYLOAD (1ULL << 14) >+#define ETH_RSS_IPV6_EX (1ULL << 15) >+#define ETH_RSS_IPV6_TCP_EX (1ULL << 16) >+#define ETH_RSS_IPV6_UDP_EX (1ULL << 17) >+#define ETH_RSS_PORT (1ULL << 18) >+#define ETH_RSS_VXLAN (1ULL << 19) >+#define ETH_RSS_GENEVE (1ULL << 20) >+#define ETH_RSS_NVGRE (1ULL << 21) >+ >+/* >+ * We use the following macros to combine with above ETH_RSS_* for >+ * more specific input set selection. These bits are defined starting >+ * from the bottom of the 64 bits. >+ */ >+#define ETH_RSS_L2_SRC_ONLY (1ULL << 63) >+#define ETH_RSS_L2_DST_ONLY (1ULL << 62) >+#define ETH_RSS_L3_SRC_ONLY (1ULL << 61) >+#define ETH_RSS_L3_DST_ONLY (1ULL << 60) >+#define ETH_RSS_L4_SRC_ONLY (1ULL << 59) >+#define ETH_RSS_L4_DST_ONLY (1ULL << 58) > > #define ETH_RSS_IP ( \ > ETH_RSS_IPV4 | \ >-- >1.8.3.1 >