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...@intel.com>
>> Cc: Zhang, Qi Z <qi.z.zh...@intel.com>; Wu, Jingjing <jingjing...@intel.com>;
>> dev@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.

Thanks,
Xiaolong

>
>> Thanks,
>> Xiaolong
>> 
>> 
>> >
>> >Signed-off-by: Simei Su <simei...@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
>> >

Reply via email to