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 BD442A0613 for ; Wed, 25 Sep 2019 12:30:10 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 855DC2E8F; Wed, 25 Sep 2019 12:30:10 +0200 (CEST) Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by dpdk.org (Postfix) with ESMTP id 33A782E8F for ; Wed, 25 Sep 2019 12:30:09 +0200 (CEST) X-Amp-Result: UNKNOWN X-Amp-Original-Verdict: FILE UNKNOWN X-Amp-File-Uploaded: False Received: from orsmga001.jf.intel.com ([10.7.209.18]) by orsmga101.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 25 Sep 2019 03:30:08 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.64,547,1559545200"; d="scan'208";a="272922828" Received: from yexl-server.sh.intel.com (HELO localhost) ([10.67.117.17]) by orsmga001.jf.intel.com with ESMTP; 25 Sep 2019 03:30:06 -0700 Date: Wed, 25 Sep 2019 18:27:56 +0800 From: Ye Xiaolong To: Simei Su Cc: qi.z.zhang@intel.com, jingjing.wu@intel.com, dev@dpdk.org Message-ID: <20190925102756.GF60476@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. I saw in the comment of flow types definition "Note that the flow types are used to define RSS offload types". We need to remove it if we do the decouple to avoid confusion. > > (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 > >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. s/bottom/high end/ >+ */ >+#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) Keep one space after #define to be aligned with other MACRO definition. Thanks, Xiaolong > > #define ETH_RSS_IP ( \ > ETH_RSS_IPV4 | \ >-- >1.8.3.1 >