From: Simei Su <simei...@intel.com>

This RFC reserves several bits as input set selection from bottom
of the 64 bits. The flow type is combined with input set to
represent rss types.

Correct the input set mask to align with the definition in rte_ethdev.h.
for example:
    ETH_RSS_IPV4 | ETH_RSS_INSET_L3_SRC: hash on src ip address only
    ETH_RSS_IPV4_UDP | ETH_RSS_INSET_L4_DST: hash on src/dst IP and
                                            dst UDP port
    ETH_RSS_L2_PAYLOAD | ETH_RSS_INSET_L2_DST: hash on dst mac address

Signed-off-by: Simei Su <simei...@intel.com>
---
 lib/librte_ethdev/rte_ethdev.h | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/lib/librte_ethdev/rte_ethdev.h b/lib/librte_ethdev/rte_ethdev.h
index dc6596b..452d29f 100644
--- a/lib/librte_ethdev/rte_ethdev.h
+++ b/lib/librte_ethdev/rte_ethdev.h
@@ -508,6 +508,18 @@ struct rte_eth_rss_conf {
 #define ETH_RSS_GENEVE             (1ULL << RTE_ETH_FLOW_GENEVE)
 #define ETH_RSS_NVGRE              (1ULL << RTE_ETH_FLOW_NVGRE)
 
+/*
+ * The following six macros are used combined with ETH_RSS_* to
+ * represent rss types. The structure rte_flow_action_rss.types is
+ * 64-bit wide and we reserve couple bits here for input set selection.
+ */
+#define        ETH_RSS_INSET_L2_SRC       0x0400000000000000
+#define        ETH_RSS_INSET_L2_DST       0x0800000000000000
+#define        ETH_RSS_INSET_L3_SRC       0x1000000000000000
+#define        ETH_RSS_INSET_L3_DST       0x2000000000000000
+#define        ETH_RSS_INSET_L4_SRC       0x4000000000000000
+#define        ETH_RSS_INSET_L4_DST       0x8000000000000000
+
 #define ETH_RSS_IP ( \
        ETH_RSS_IPV4 | \
        ETH_RSS_FRAG_IPV4 | \
-- 
1.8.3.1

Reply via email to