From ef1d314d90895a528576b5b15a3535fb7384cdab Mon Sep 17 00:00:00 2001 From: Jeff Guo Date: Mon, 20 Jul 2020 17:13:56 +0800 Subject: [PATCH] net/ice: fix symmetric hash configuration Some protocol don't support symmetric hash, need to handle these cases. When set an invalid symmetric hash rule, just return failed. Fixes: 4eafe71ee952 ("net/ice: fix RSS type") Signed-off-by: Jeff Guo Acked-by: Qi Zhang --- drivers/net/ice/ice_hash.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/drivers/net/ice/ice_hash.c b/drivers/net/ice/ice_hash.c index 05388b412c..42b3440511 100644 --- a/drivers/net/ice/ice_hash.c +++ b/drivers/net/ice/ice_hash.c @@ -996,6 +996,7 @@ ice_hash_parse_action(struct ice_pattern_match_item *pattern_match_item, const struct rte_flow_action *action; uint64_t rss_attr_src_dst; uint64_t rss_attr_l3_pre; + uint64_t rss_attr_symm; uint64_t rss_attr_all; uint64_t rss_type; uint16_t i; @@ -1059,6 +1060,15 @@ ice_hash_parse_action(struct ice_pattern_match_item *pattern_match_item, RTE_ETH_RSS_L3_PRE48 | RTE_ETH_RSS_L3_PRE64; + rss_attr_symm = ETH_RSS_IPV4 | + ETH_RSS_NONFRAG_IPV4_UDP | + ETH_RSS_NONFRAG_IPV4_TCP | + ETH_RSS_NONFRAG_IPV4_SCTP | + ETH_RSS_IPV6 | + ETH_RSS_NONFRAG_IPV6_UDP | + ETH_RSS_NONFRAG_IPV6_TCP | + ETH_RSS_NONFRAG_IPV6_SCTP; + rss_attr_all = rss_attr_src_dst | rss_attr_l3_pre; /* Check if only SRC/DST_ONLY or ipv6 prefix exists. */ @@ -1073,7 +1083,8 @@ ice_hash_parse_action(struct ice_pattern_match_item *pattern_match_item, */ if (rss->func == RTE_ETH_HASH_FUNCTION_SYMMETRIC_TOEPLITZ) { - if (rss_type & rss_attr_src_dst) + if (rss_type & (rss_attr_src_dst | + ~rss_attr_symm)) return rte_flow_error_set(error, ENOTSUP, RTE_FLOW_ERROR_TYPE_ACTION, -- 2.20.1