> -----Original Message----- > From: Guo, Jia <jia....@intel.com> > Sent: Wednesday, May 13, 2020 7:20 AM > To: Zhang, Qi Z <qi.z.zh...@intel.com>; Xing, Beilei <beilei.x...@intel.com>; > Wu, Jingjing <jingjing...@intel.com> > Cc: Ye, Xiaolong <xiaolong...@intel.com>; dev@dpdk.org > Subject: Re: [dpdk-dev] net/iavf: fix rss algorithm configure issue > > hi, qi > > On 5/12/2020 10:21 AM, Zhang, Qi Z wrote: > > > >> -----Original Message----- > >> From: Zhang, Qi Z > >> Sent: Tuesday, May 12, 2020 10:18 AM > >> To: Guo, Jia <jia....@intel.com>; Xing, Beilei > >> <beilei.x...@intel.com>; Wu, Jingjing <jingjing...@intel.com> > >> Cc: Ye, Xiaolong <xiaolong...@intel.com>; dev@dpdk.org > >> Subject: RE: [dpdk-dev] net/iavf: fix rss algorithm configure issue > >> > >> > >> > >>> -----Original Message----- > >>> From: Guo, Jia <jia....@intel.com> > >>> Sent: Sunday, May 10, 2020 4:28 AM > >>> To: Xing, Beilei <beilei.x...@intel.com>; Zhang, Qi Z > >>> <qi.z.zh...@intel.com>; Wu, Jingjing <jingjing...@intel.com> > >>> Cc: Ye, Xiaolong <xiaolong...@intel.com>; dev@dpdk.org; Guo, Jia > >>> <jia....@intel.com> > >>> Subject: [dpdk-dev] net/iavf: fix rss algorithm configure issue > >>> > >>> When configure rss rule, the etherdev rss hash function type should > >>> be mapped to the corresponding virtchnl rss algorithm type. > >>> > >>> Fixes: 7be10c3004be ("net/iavf: add RSS configuration for VF") > >>> Signed-off-by: Jeff Guo <jia....@intel.com> > >>> --- > >>> drivers/net/iavf/iavf_hash.c | 20 +++++++++++--------- > >>> 1 file changed, 11 insertions(+), 9 deletions(-) > >>> > >>> diff --git a/drivers/net/iavf/iavf_hash.c > >>> b/drivers/net/iavf/iavf_hash.c index 6359ead76..173b7633f 100644 > >>> --- a/drivers/net/iavf/iavf_hash.c > >>> +++ b/drivers/net/iavf/iavf_hash.c > >>> @@ -47,7 +47,7 @@ struct iavf_hash_match_type { > >>> > >>> struct iavf_rss_meta { > >>> struct virtchnl_proto_hdrs *proto_hdrs; > >>> - uint32_t hash_function; > >>> + enum virtchnl_rss_algorithm rss_algorithm; > >>> }; > >>> > >>> struct iavf_hash_flow_cfg { > >>> @@ -1001,13 +1001,15 @@ iavf_hash_parse_action(struct > >>> iavf_pattern_match_item *pattern_match_item, > >>> > >>> /* Check hash function and save it to rss_meta. > >>> */ > >>> if (rss->func == > RTE_ETH_HASH_FUNCTION_SIMPLE_XOR) > >>> - rss_meta->hash_function = > >>> - RTE_ETH_HASH_FUNCTION_SIMPLE_XOR; > >>> - > >>> - if (rss->func == > >>> - RTE_ETH_HASH_FUNCTION_SYMMETRIC_TOEPLITZ) > >>> - rss_meta->hash_function = > >>> - RTE_ETH_HASH_FUNCTION_SYMMETRIC_TOEPLITZ; > >>> + rss_meta->rss_algorithm = > >>> + VIRTCHNL_RSS_ALG_R_ASYMMETRIC; > >> RTE_ETH_HASH_FUNCTION_SYMMETRIC_TOEPLITZ --> > >> VIRTCHNL_RSS_ALG_R_ASYMMETRIC > > A typo, it is > > RTE_ETH_HASH_FUNCTION_SIMPLE_XOR --> > VIRTCHNL_RSS_ALG_R_ASYMMETRIC which looks not correct. > >> Is it should be VIRTCHNL_RSS_ALG_XOR_SYMMETRIC? > >> > >> > > At currently driver, VIRTCHNL_RSS_ALG_R_ASYMMETRIC is used to > identify simple XOR.
I didn't get it.. After apply your patch, we have below code which does not make sense, /* Check hash function and save it to rss_meta. */ if (rss->func == RTE_ETH_HASH_FUNCTION_SIMPLE_XOR) rss_meta->rss_algorithm = VIRTCHNL_RSS_ALG_R_ASYMMETRIC; else if... ASYMMETRIC is not kind of symmetric hash and should not be mapped to simple xor. > > > >>> + else if (rss->func == > >>> + > RTE_ETH_HASH_FUNCTION_SYMMETRIC_TOEPLITZ) > >>> + rss_meta->rss_algorithm = > >>> + VIRTCHNL_RSS_ALG_TOEPLITZ_SYMMETRIC; > >>> + else > >>> + rss_meta->rss_algorithm = > >>> + VIRTCHNL_RSS_ALG_TOEPLITZ_ASYMMETRIC; > >>> > >>> type_match_item = > >>> rte_zmalloc("iavf_type_match_item", > >>> @@ -1126,7 +1128,7 @@ iavf_hash_create(__rte_unused struct > >>> iavf_adapter *ad, > >>> } > >>> > >>> rss_cfg->proto_hdrs = *rss_meta->proto_hdrs; > >>> - rss_cfg->rss_algorithm = rss_meta->hash_function; > >>> + rss_cfg->rss_algorithm = rss_meta->rss_algorithm; > >>> > >>> ret = iavf_add_del_rss_cfg(ad, rss_cfg, true); > >>> if (!ret) { > >>> -- > >>> 2.20.1