When a RSS rule with symmetric hash function, the RSS type shouldn't
carry with SRC/DST_ONLY. This patch adds invalid RSS type check for
the case.

Fixes: 91f27b2e39ab ("net/iavf: refactor RSS")

Signed-off-by: Simei Su <simei...@intel.com>
---
 drivers/net/iavf/iavf_hash.c | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/drivers/net/iavf/iavf_hash.c b/drivers/net/iavf/iavf_hash.c
index be821b6..6d0360a 100644
--- a/drivers/net/iavf/iavf_hash.c
+++ b/drivers/net/iavf/iavf_hash.c
@@ -917,6 +917,22 @@ iavf_hash_parse_action(struct iavf_pattern_match_item 
*match_item,
                         */
                        rss_type = rte_eth_rss_hf_refine(rss_type);
 
+                       /**
+                        * Check if SRC/DST_ONLY is set for SYMMETRIC_TOEPLITZ
+                        * hash function.
+                        */
+                       if (rss->func ==
+                           RTE_ETH_HASH_FUNCTION_SYMMETRIC_TOEPLITZ) {
+                               if (rss_type & ((VALID_RSS_ATTR &
+                                   ~RTE_ETH_RSS_L3_PRE64) |
+                                   ~(VALID_RSS_IPV4 | VALID_RSS_IPV6)))
+                                       return rte_flow_error_set(error,
+                                               ENOTSUP,
+                                               RTE_FLOW_ERROR_TYPE_ACTION,
+                                               action,
+                                               "invalid rss types");
+                       }
+
                        if (iavf_any_invalid_rss_type(rss_type,
                                        match_item->input_set_mask))
                                return rte_flow_error_set(error, ENOTSUP,
-- 
2.9.5

Reply via email to