From patchwork Thu Apr 16 03:11:22 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Wang, Haiyue" X-Patchwork-Id: 68608 X-Patchwork-Delegate: xiaolong.ye@intel.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 94B9FA0588; Thu, 16 Apr 2020 05:19:42 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 1E64D1DA43; Thu, 16 Apr 2020 05:19:42 +0200 (CEST) Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by dpdk.org (Postfix) with ESMTP id B236E1DA34 for ; Thu, 16 Apr 2020 05:19:40 +0200 (CEST) IronPort-SDR: XYnGkJpfPOMJuD/bWE3BxCJm75o7nDxshV7KskZhgvPfoPI7mFRK3vyvBOvu9ICIe8wHpVWHeq vBFSSW3VzVJw== X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Apr 2020 20:19:39 -0700 IronPort-SDR: xwJQ7xVkAseJRVapLXSeB20eR7hBInmzxRiBhGCGLx1SO4hGUmwZ2ye2603uQmIwkmbGI1hO3F 8qpfh4k4oV7Q== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.72,388,1580803200"; d="scan'208";a="455122790" Received: from npg-dpdk-haiyue-1.sh.intel.com ([10.67.119.213]) by fmsmga006.fm.intel.com with ESMTP; 15 Apr 2020 20:19:38 -0700 From: Haiyue Wang To: dev@dpdk.org, qi.z.zhang@intel.com, qiming.yang@intel.com, xiaolong.ye@intel.com Cc: Haiyue Wang Date: Thu, 16 Apr 2020 11:11:22 +0800 Message-Id: <20200416031122.59640-1-haiyue.wang@intel.com> X-Mailer: git-send-email 2.26.1 MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v1] net/ice: check the DSN package file firstly 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" Align the package file search sequence with PF only for DCF mode. Get the DSN through the virtual channel firstly to check the package file accessible. Signed-off-by: Haiyue Wang Acked-by: Qi Zhang --- drivers/net/ice/ice_dcf_parent.c | 30 ++++++++++++++++++++++++++---- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/drivers/net/ice/ice_dcf_parent.c b/drivers/net/ice/ice_dcf_parent.c index e05b6b3e5..d4b4ededb 100644 --- a/drivers/net/ice/ice_dcf_parent.c +++ b/drivers/net/ice/ice_dcf_parent.c @@ -226,12 +226,34 @@ ice_dcf_request_pkg_name(struct ice_hw *hw, char *pkg_name) { struct ice_dcf_adapter *dcf_adapter = container_of(hw, struct ice_dcf_adapter, parent.hw); + struct virtchnl_pkg_info pkg_info; + struct dcf_virtchnl_cmd vc_cmd; + uint64_t dsn; - /* TODO: check with DSN firstly by iAVF */ - PMD_INIT_LOG(DEBUG, - "DCF VSI_ID = %u", - dcf_adapter->real_hw.vsi_id); + vc_cmd.v_op = VIRTCHNL_OP_DCF_GET_PKG_INFO; + vc_cmd.req_msglen = 0; + vc_cmd.req_msg = NULL; + vc_cmd.rsp_buflen = sizeof(pkg_info); + vc_cmd.rsp_msgbuf = (uint8_t *)&pkg_info; + if (ice_dcf_execute_virtchnl_cmd(&dcf_adapter->real_hw, &vc_cmd)) + goto pkg_file_direct; + + rte_memcpy(&dsn, pkg_info.dsn, sizeof(dsn)); + + snprintf(pkg_name, ICE_MAX_PKG_FILENAME_SIZE, + ICE_PKG_FILE_SEARCH_PATH_UPDATES "ice-%016llX.pkg", + (unsigned long long)dsn); + if (!access(pkg_name, 0)) + return 0; + + snprintf(pkg_name, ICE_MAX_PKG_FILENAME_SIZE, + ICE_PKG_FILE_SEARCH_PATH_DEFAULT "ice-%016llX.pkg", + (unsigned long long)dsn); + if (!access(pkg_name, 0)) + return 0; + +pkg_file_direct: snprintf(pkg_name, ICE_MAX_PKG_FILENAME_SIZE, "%s", ICE_PKG_FILE_UPDATES); if (!access(pkg_name, 0))