diff options
Diffstat (limited to 'drivers/net/ethernet/intel/ice/ice_ddp.c')
| -rw-r--r-- | drivers/net/ethernet/intel/ice/ice_ddp.c | 120 | 
1 files changed, 61 insertions, 59 deletions
diff --git a/drivers/net/ethernet/intel/ice/ice_ddp.c b/drivers/net/ethernet/intel/ice/ice_ddp.c index d71ed210f9c4..b27ec93638b6 100644 --- a/drivers/net/ethernet/intel/ice/ice_ddp.c +++ b/drivers/net/ethernet/intel/ice/ice_ddp.c @@ -30,7 +30,7 @@ static const struct ice_tunnel_type_scan tnls[] = {   * Verifies various attributes of the package file, including length, format   * version, and the requirement of at least one segment.   */ -enum ice_ddp_state ice_verify_pkg(struct ice_pkg_hdr *pkg, u32 len) +static enum ice_ddp_state ice_verify_pkg(struct ice_pkg_hdr *pkg, u32 len)  {  	u32 seg_count;  	u32 i; @@ -118,7 +118,7 @@ static enum ice_ddp_state ice_chk_pkg_version(struct ice_pkg_ver *pkg_ver)   *   * This helper function validates a buffer's header.   */ -struct ice_buf_hdr *ice_pkg_val_buf(struct ice_buf *buf) +static struct ice_buf_hdr *ice_pkg_val_buf(struct ice_buf *buf)  {  	struct ice_buf_hdr *hdr;  	u16 section_count; @@ -1153,6 +1153,54 @@ static void ice_release_global_cfg_lock(struct ice_hw *hw)  }  /** + * ice_aq_download_pkg + * @hw: pointer to the hardware structure + * @pkg_buf: the package buffer to transfer + * @buf_size: the size of the package buffer + * @last_buf: last buffer indicator + * @error_offset: returns error offset + * @error_info: returns error information + * @cd: pointer to command details structure or NULL + * + * Download Package (0x0C40) + */ +static int +ice_aq_download_pkg(struct ice_hw *hw, struct ice_buf_hdr *pkg_buf, +		    u16 buf_size, bool last_buf, u32 *error_offset, +		    u32 *error_info, struct ice_sq_cd *cd) +{ +	struct ice_aqc_download_pkg *cmd; +	struct ice_aq_desc desc; +	int status; + +	if (error_offset) +		*error_offset = 0; +	if (error_info) +		*error_info = 0; + +	cmd = &desc.params.download_pkg; +	ice_fill_dflt_direct_cmd_desc(&desc, ice_aqc_opc_download_pkg); +	desc.flags |= cpu_to_le16(ICE_AQ_FLAG_RD); + +	if (last_buf) +		cmd->flags |= ICE_AQC_DOWNLOAD_PKG_LAST_BUF; + +	status = ice_aq_send_cmd(hw, &desc, pkg_buf, buf_size, cd); +	if (status == -EIO) { +		/* Read error from buffer only when the FW returned an error */ +		struct ice_aqc_download_pkg_resp *resp; + +		resp = (struct ice_aqc_download_pkg_resp *)pkg_buf; +		if (error_offset) +			*error_offset = le32_to_cpu(resp->error_offset); +		if (error_info) +			*error_info = le32_to_cpu(resp->error_info); +	} + +	return status; +} + +/**   * ice_dwnld_cfg_bufs   * @hw: pointer to the hardware structure   * @bufs: pointer to an array of buffers @@ -1294,20 +1342,20 @@ static enum ice_ddp_state ice_download_pkg(struct ice_hw *hw,  }  /** - * ice_aq_download_pkg + * ice_aq_update_pkg   * @hw: pointer to the hardware structure - * @pkg_buf: the package buffer to transfer - * @buf_size: the size of the package buffer + * @pkg_buf: the package cmd buffer + * @buf_size: the size of the package cmd buffer   * @last_buf: last buffer indicator   * @error_offset: returns error offset   * @error_info: returns error information   * @cd: pointer to command details structure or NULL   * - * Download Package (0x0C40) + * Update Package (0x0C42)   */ -int ice_aq_download_pkg(struct ice_hw *hw, struct ice_buf_hdr *pkg_buf, -			u16 buf_size, bool last_buf, u32 *error_offset, -			u32 *error_info, struct ice_sq_cd *cd) +static int ice_aq_update_pkg(struct ice_hw *hw, struct ice_buf_hdr *pkg_buf, +			     u16 buf_size, bool last_buf, u32 *error_offset, +			     u32 *error_info, struct ice_sq_cd *cd)  {  	struct ice_aqc_download_pkg *cmd;  	struct ice_aq_desc desc; @@ -1319,7 +1367,7 @@ int ice_aq_download_pkg(struct ice_hw *hw, struct ice_buf_hdr *pkg_buf,  		*error_info = 0;  	cmd = &desc.params.download_pkg; -	ice_fill_dflt_direct_cmd_desc(&desc, ice_aqc_opc_download_pkg); +	ice_fill_dflt_direct_cmd_desc(&desc, ice_aqc_opc_update_pkg);  	desc.flags |= cpu_to_le16(ICE_AQ_FLAG_RD);  	if (last_buf) @@ -1361,53 +1409,6 @@ int ice_aq_upload_section(struct ice_hw *hw, struct ice_buf_hdr *pkg_buf,  }  /** - * ice_aq_update_pkg - * @hw: pointer to the hardware structure - * @pkg_buf: the package cmd buffer - * @buf_size: the size of the package cmd buffer - * @last_buf: last buffer indicator - * @error_offset: returns error offset - * @error_info: returns error information - * @cd: pointer to command details structure or NULL - * - * Update Package (0x0C42) - */ -static int ice_aq_update_pkg(struct ice_hw *hw, struct ice_buf_hdr *pkg_buf, -			     u16 buf_size, bool last_buf, u32 *error_offset, -			     u32 *error_info, struct ice_sq_cd *cd) -{ -	struct ice_aqc_download_pkg *cmd; -	struct ice_aq_desc desc; -	int status; - -	if (error_offset) -		*error_offset = 0; -	if (error_info) -		*error_info = 0; - -	cmd = &desc.params.download_pkg; -	ice_fill_dflt_direct_cmd_desc(&desc, ice_aqc_opc_update_pkg); -	desc.flags |= cpu_to_le16(ICE_AQ_FLAG_RD); - -	if (last_buf) -		cmd->flags |= ICE_AQC_DOWNLOAD_PKG_LAST_BUF; - -	status = ice_aq_send_cmd(hw, &desc, pkg_buf, buf_size, cd); -	if (status == -EIO) { -		/* Read error from buffer only when the FW returned an error */ -		struct ice_aqc_download_pkg_resp *resp; - -		resp = (struct ice_aqc_download_pkg_resp *)pkg_buf; -		if (error_offset) -			*error_offset = le32_to_cpu(resp->error_offset); -		if (error_info) -			*error_info = le32_to_cpu(resp->error_info); -	} - -	return status; -} - -/**   * ice_update_pkg_no_lock   * @hw: pointer to the hardware structure   * @bufs: pointer to an array of buffers @@ -1470,8 +1471,9 @@ int ice_update_pkg(struct ice_hw *hw, struct ice_buf *bufs, u32 count)   * success it returns a pointer to the segment header, otherwise it will   * return NULL.   */ -struct ice_generic_seg_hdr *ice_find_seg_in_pkg(struct ice_hw *hw, u32 seg_type, -						struct ice_pkg_hdr *pkg_hdr) +static struct ice_generic_seg_hdr * +ice_find_seg_in_pkg(struct ice_hw *hw, u32 seg_type, +		    struct ice_pkg_hdr *pkg_hdr)  {  	u32 i;  | 
