[dpdk-dev] [PATCH v2 1/2] ethdev: extend RSS offload types

Su, Simei simei.su at intel.com
Wed Sep 25 14:38:44 CEST 2019



> -----Original Message-----
> From: Ye, Xiaolong
> Sent: Wednesday, September 25, 2019 8:23 PM
> To: Su, Simei <simei.su at intel.com>
> Cc: Zhang, Qi Z <qi.z.zhang at intel.com>; Wu, Jingjing <jingjing.wu at intel.com>;
> dev at dpdk.org
> Subject: Re: [PATCH v2 1/2] ethdev: extend RSS offload types
> 
> On 09/25, Su, Simei wrote:
> >Hi, xiaolong
> >
> >> -----Original Message-----
> >> From: Ye, Xiaolong
> >> Sent: Wednesday, September 25, 2019 6:50 PM
> >> To: Su, Simei <simei.su at intel.com>
> >> Cc: Zhang, Qi Z <qi.z.zhang at intel.com>; Wu, Jingjing
> >> <jingjing.wu at intel.com>; dev at dpdk.org
> >> Subject: Re: [PATCH v2 1/2] ethdev: extend RSS offload types
> >>
> >> 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?
> >>
> >
> >  Yes, when users set ETH_RSS_IPV4, both src and dst ip are taken into
> account.
> >  I will add this example. Thanks!
> 
> Please add it in the code comments or doc rather than the commit log.
> 
  Ok, I will add it in the code comments.

> Thanks,
> Xiaolong
> 
> >
> >> Thanks,
> >> Xiaolong
> >>
> >>
> >> >
> >> >Signed-off-by: Simei Su <simei.su at intel.com>
> >> >---
> >> > 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
> >> >


More information about the dev mailing list