Message ID | 20201102115547.262237-1-simei.su@intel.com |
---|---|
State | Accepted, archived |
Delegated to: | Qi Zhang |
Headers | show |
Series |
|
Related | show |
Context | Check | Description |
---|---|---|
ci/Intel-compilation | success | Compilation OK |
ci/iol-mellanox-Performance | success | Performance Testing PASS |
ci/travis-robot | success | Travis build: passed |
ci/iol-intel-Performance | success | Performance Testing PASS |
ci/iol-intel-Functional | success | Functional Testing PASS |
ci/iol-testing | success | Testing PASS |
ci/iol-broadcom-Functional | success | Functional Testing PASS |
ci/iol-broadcom-Performance | success | Performance Testing PASS |
ci/checkpatch | success | coding style OK |
> -----Original Message----- > From: Su, Simei <simei.su@intel.com> > Sent: Monday, November 2, 2020 7:56 PM > To: Zhang, Qi Z <qi.z.zhang@intel.com> > Cc: dev@dpdk.org; Guo, Junfeng <junfeng.guo@intel.com>; Guo, Jia > <jia.guo@intel.com>; Su, Simei <simei.su@intel.com> > Subject: [PATCH v4] net/iavf: fix invalid RSS type > > 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. Need to specify l3/l4 SRC/DST_ONLY > > Fixes: 91f27b2e39ab ("net/iavf: refactor RSS") > > Signed-off-by: Simei Su <simei.su@intel.com> > > v4: > * Simplify code to be more readable. > > v3: > * Correct invalid case. > > v2: > * Move invalid check into "iavf_any_invalid_rss_type". Version tracking should not be part of the commit log. > --- > drivers/net/iavf/iavf_hash.c | 15 +++++++++++++-- > 1 file changed, 13 insertions(+), 2 deletions(-) > > diff --git a/drivers/net/iavf/iavf_hash.c b/drivers/net/iavf/iavf_hash.c index > be821b6..915b7c5 100644 > --- a/drivers/net/iavf/iavf_hash.c > +++ b/drivers/net/iavf/iavf_hash.c > @@ -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 SRC/DST_ONLY is set for SYMMETRIC_TOEPLITZ > + * hash function. Need to specifyl3/l4 SRC/DST_ONLY > + */ > + 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, > -- > 2.9.5 Besides above minor captures Acked-by: Qi Zhang <qi.z.zhang@intel.com> Applied to dpdk-next-net-intel after fix those captures. Thanks Qi
diff --git a/drivers/net/iavf/iavf_hash.c b/drivers/net/iavf/iavf_hash.c index be821b6..915b7c5 100644 --- a/drivers/net/iavf/iavf_hash.c +++ b/drivers/net/iavf/iavf_hash.c @@ -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 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,
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.su@intel.com> v4: * Simplify code to be more readable. v3: * Correct invalid case. v2: * Move invalid check into "iavf_any_invalid_rss_type". --- drivers/net/iavf/iavf_hash.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-)