On 05/19, Jeff Guo wrote: >Since there are some default rss configure in kernel PF/VF but not DPDK >IAVF, if these configurations be modified by VF and then VF reset, this >default rss configurations can not be reset to default by IAVF. So need >to add default rss set in IAVF hash initial process. > >Signed-off-by: Jeff Guo <jia....@intel.com> >Fixes: 7be10c3004be ("net/iavf: add RSS configuration for VF")
Fixes tag should be put before the SOB, fixed it while merging. >Acked-by: Qi Zhang <qi.z.zh...@intel.com> >Tested-by: Zhiwei He <zhiwei...@intel.com> >--- >v2->v1: >add hash engine unregister process >--- > drivers/net/iavf/iavf_hash.c | 53 +++++++++++++++++++++++++++++++++++- > 1 file changed, 52 insertions(+), 1 deletion(-) > >diff --git a/drivers/net/iavf/iavf_hash.c b/drivers/net/iavf/iavf_hash.c >index 975c84556..56ab170d8 100644 >--- a/drivers/net/iavf/iavf_hash.c >+++ b/drivers/net/iavf/iavf_hash.c >@@ -857,6 +857,17 @@ struct iavf_hash_match_type iavf_hash_type_list[] = { > &hdrs_hint_ipv6_sctp}, > }; > >+struct virtchnl_proto_hdrs *iavf_hash_default_hdrs[] = { >+ &hdrs_hint_ipv4, >+ &hdrs_hint_ipv4_udp, >+ &hdrs_hint_ipv4_tcp, >+ &hdrs_hint_ipv4_sctp, >+ &hdrs_hint_ipv6, >+ &hdrs_hint_ipv6_udp, >+ &hdrs_hint_ipv6_tcp, >+ &hdrs_hint_ipv6_sctp, >+}; >+ > static struct iavf_flow_engine iavf_hash_engine = { > .init = iavf_hash_init, > .create = iavf_hash_create, >@@ -875,6 +886,33 @@ static struct iavf_flow_parser iavf_hash_parser = { > .stage = IAVF_FLOW_STAGE_RSS, > }; > >+static int >+iavf_hash_default_set(struct iavf_adapter *ad) >+{ >+ struct virtchnl_rss_cfg *rss_cfg; >+ uint16_t i; >+ int ret; >+ >+ rss_cfg = rte_zmalloc("iavf rss rule", >+ sizeof(struct virtchnl_rss_cfg), 0); >+ if (!rss_cfg) >+ return -ENOMEM; >+ >+ for (i = 0; i < RTE_DIM(iavf_hash_default_hdrs); i++) { >+ rss_cfg->proto_hdrs = *iavf_hash_default_hdrs[i]; >+ rss_cfg->rss_algorithm = VIRTCHNL_RSS_ALG_TOEPLITZ_ASYMMETRIC; >+ >+ ret = iavf_add_del_rss_cfg(ad, rss_cfg, true); >+ if (ret) { >+ PMD_DRV_LOG(ERR, "fail to add RSS configure"); >+ rte_free(rss_cfg); >+ return ret; >+ } >+ } >+ >+ return ret; >+} >+ > RTE_INIT(iavf_hash_engine_init) > { > struct iavf_flow_engine *engine = &iavf_hash_engine; >@@ -887,6 +925,7 @@ iavf_hash_init(struct iavf_adapter *ad) > { > struct iavf_info *vf = IAVF_DEV_PRIVATE_TO_VF(ad); > struct iavf_flow_parser *parser; >+ int ret; > > if (!vf->vf_res) > return -EINVAL; >@@ -896,7 +935,19 @@ iavf_hash_init(struct iavf_adapter *ad) > > parser = &iavf_hash_parser; > >- return iavf_register_parser(parser, ad); >+ ret = iavf_register_parser(parser, ad); >+ if (ret) { >+ PMD_DRV_LOG(ERR, "fail to register hash parser"); >+ return ret; >+ } >+ >+ ret = iavf_hash_default_set(ad); >+ if (ret) { >+ PMD_DRV_LOG(ERR, "fail to set default RSS"); >+ iavf_unregister_parser(parser, ad); >+ } >+ >+ return ret; > } > > static int >-- >2.20.1 > Applied to dpdk-next-net-intel, Thanks.