From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 67727A0093; Tue, 19 May 2020 04:03:34 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id E9FB81D56C; Tue, 19 May 2020 04:03:33 +0200 (CEST) Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by dpdk.org (Postfix) with ESMTP id A67331D509 for ; Tue, 19 May 2020 04:03:32 +0200 (CEST) IronPort-SDR: 8XtBezVr3PUw8o+EsCxfGkEWF+nggwy+MvmRNYRNLL1wRFkfdrjhpfbc8sevQBZ9+9asqaHo5i dGBT+937RIHQ== X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga007.jf.intel.com ([10.7.209.58]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 May 2020 19:03:31 -0700 IronPort-SDR: n0FIBnvA0/QWVVujgs661gPOUdsR2np9U/fVH3lIO+VvQ3djaP8h3UMLIhaqOqfpJDe98tqKHg Dp9POB6Gzm8g== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.73,408,1583222400"; d="scan'208";a="253094847" Received: from jguo15x-mobl.ccr.corp.intel.com (HELO [10.67.68.182]) ([10.67.68.182]) by orsmga007.jf.intel.com with ESMTP; 18 May 2020 19:03:29 -0700 To: Ye Xiaolong Cc: beilei.xing@intel.com, qi.z.zhang@intel.com, jingjing.wu@intel.com, dev@dpdk.org References: <20200519002017.106445-1-jia.guo@intel.com> <20200518235456.GE93932@intel.com> From: Jeff Guo Message-ID: Date: Tue, 19 May 2020 10:03:28 +0800 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:68.0) Gecko/20100101 Thunderbird/68.8.0 MIME-Version: 1.0 In-Reply-To: <20200518235456.GE93932@intel.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Content-Language: en-US Subject: Re: [dpdk-dev] net/iavf: fix VF reset issue for hash X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" hi, xiaolong On 5/19/2020 7:54 AM, Ye Xiaolong wrote: > On 05/18, 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 >> Fixes: 7be10c3004be ("net/iavf: add RSS configuration for VF") >> --- >> drivers/net/iavf/iavf_hash.c | 51 +++++++++++++++++++++++++++++++++++- >> 1 file changed, 50 insertions(+), 1 deletion(-) >> >> diff --git a/drivers/net/iavf/iavf_hash.c b/drivers/net/iavf/iavf_hash.c >> index 975c84556..04b3492ce 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,17 @@ 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"); > Do we need to call iavf_unregister_parser in case of iavf_hash_default_set failure? > > Thanks, > Xiaolong It should be and v2 will send. Thanks. >> + >> + return ret; >> } >> >> static int >> -- >> 2.20.1 >>