The flow rule with symmetric toeplitz hash function and SRC_ONLY
or DST_ONLY RSS type together should not be created successfully.
Fix the RSS action parse function to stop the rule creation in
this situation.

Fixes: 5ad3db8d4bdd ("net/ice: enable advanced RSS")
Cc: sta...@dpdk.org

Signed-off-by: Ting Xu <ting...@intel.com>
---
 drivers/net/ice/ice_hash.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/drivers/net/ice/ice_hash.c b/drivers/net/ice/ice_hash.c
index 3433cab28c..3c84a6a73f 100644
--- a/drivers/net/ice/ice_hash.c
+++ b/drivers/net/ice/ice_hash.c
@@ -1044,6 +1044,19 @@ ice_hash_parse_action(struct ice_pattern_match_item 
*pattern_match_item,
                                        ETH_RSS_L4_SRC_ONLY |
                                        ETH_RSS_L4_DST_ONLY;
 
+                       /**
+                        * Check if SRC_ONLY or DST_ONLY is set for
+                        * SYMMETRIC_TOEPLITZ hash function.
+                        */
+                       if (rss->func ==
+                               RTE_ETH_HASH_FUNCTION_SYMMETRIC_TOEPLITZ) {
+                               if (rss_type & combine_type)
+                                       return rte_flow_error_set(error,
+                                       ENOTSUP, RTE_FLOW_ERROR_TYPE_ACTION,
+                                       action, "Not supported RSS types for "
+                                       "symmetric toeplitz hash");
+                       }
+
                        /* Check if rss types match pattern. */
                        if (rss_type & ~combine_type & ~m->eth_rss_hint) {
                                return rte_flow_error_set(error,
-- 
2.17.1

Reply via email to