From: Haiyue Wang Date: Thu, 16 Apr 2020 03:11:22 +0000 (+0800) Subject: net/ice: check DSN package file firstly X-Git-Url: http://git.droids-corp.org/?a=commitdiff_plain;h=d1c91179e952;p=dpdk.git net/ice: check DSN package file firstly Align the package file search sequence with PF only for DCF mode. Get the DSN through the virtual channel firstly to check the accessibility of the package file. Signed-off-by: Haiyue Wang Acked-by: Qi Zhang --- diff --git a/drivers/net/ice/ice_dcf_parent.c b/drivers/net/ice/ice_dcf_parent.c index e05b6b3e5a..d4b4ededb9 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))