net/iavf: fix supported RSS type

When a RSS rule with symmetric hash function, the RSS type shouldn't
carry with l3/l4 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.su@intel.com>
Acked-by: Qi Zhang <qi.z.zhang@intel.com>
This commit is contained in:
Simei Su 2020-11-02 19:55:47 +08:00 committed by Ferruh Yigit
parent f24aec3121
commit a100fe47f9

View File

@ -834,10 +834,21 @@ static struct rss_attr_type rss_attr_to_valid_type[] = {
};
static bool
iavf_any_invalid_rss_type(uint64_t rss_type, uint64_t allow_rss_type)
iavf_any_invalid_rss_type(enum rte_eth_hash_function rss_func,
uint64_t rss_type, uint64_t allow_rss_type)
{
uint32_t i;
/**
* Check if l3/l4 SRC/DST_ONLY is set for SYMMETRIC_TOEPLITZ
* hash function.
*/
if (rss_func == RTE_ETH_HASH_FUNCTION_SYMMETRIC_TOEPLITZ) {
if (rss_type & (ETH_RSS_L3_SRC_ONLY | ETH_RSS_L3_DST_ONLY |
ETH_RSS_L4_SRC_ONLY | ETH_RSS_L4_DST_ONLY))
return true;
}
/* check invalid combination */
for (i = 0; i < RTE_DIM(invalid_rss_comb); i++) {
if (__builtin_popcountll(rss_type & invalid_rss_comb[i]) > 1)
@ -917,7 +928,7 @@ iavf_hash_parse_action(struct iavf_pattern_match_item *match_item,
*/
rss_type = rte_eth_rss_hf_refine(rss_type);
if (iavf_any_invalid_rss_type(rss_type,
if (iavf_any_invalid_rss_type(rss->func, rss_type,
match_item->input_set_mask))
return rte_flow_error_set(error, ENOTSUP,
RTE_FLOW_ERROR_TYPE_ACTION,