[dpdk-dev] [PATCH v2 17/66] net/ice/base: add API to init FW logging

Stillwell Jr, Paul M paul.m.stillwell.jr at intel.com
Tue Jun 11 18:23:48 CEST 2019


> -----Original Message-----
> From: Rong, Leyi
> Sent: Tuesday, June 11, 2019 8:52 AM
> To: Zhang, Qi Z <qi.z.zhang at intel.com>
> Cc: dev at dpdk.org; Rong, Leyi <leyi.rong at intel.com>; Nowlin, Dan
> <dan.nowlin at intel.com>; Stillwell Jr, Paul M <paul.m.stillwell.jr at intel.com>
> Subject: [PATCH v2 17/66] net/ice/base: add API to init FW logging
> 
> In order to initialize the current status of the FW logging, the api
> ice_get_fw_log_cfg is added. The function retrieves the current setting of
> the FW logging from HW and updates the ice_hw structure accordingly.
> 
> Signed-off-by: Dan Nowlin <dan.nowlin at intel.com>
> Signed-off-by: Paul M Stillwell Jr <paul.m.stillwell.jr at intel.com>
> Signed-off-by: Leyi Rong <leyi.rong at intel.com>
> ---
>  drivers/net/ice/base/ice_adminq_cmd.h |  1 +
>  drivers/net/ice/base/ice_common.c     | 48
> +++++++++++++++++++++++++++
>  2 files changed, 49 insertions(+)
> 
> diff --git a/drivers/net/ice/base/ice_adminq_cmd.h
> b/drivers/net/ice/base/ice_adminq_cmd.h
> index 7b0aa8aaa..739f79e88 100644
> --- a/drivers/net/ice/base/ice_adminq_cmd.h
> +++ b/drivers/net/ice/base/ice_adminq_cmd.h
> @@ -2196,6 +2196,7 @@ enum ice_aqc_fw_logging_mod {
>  	ICE_AQC_FW_LOG_ID_WATCHDOG,
>  	ICE_AQC_FW_LOG_ID_TASK_DISPATCH,
>  	ICE_AQC_FW_LOG_ID_MNG,
> +	ICE_AQC_FW_LOG_ID_SYNCE,
>  	ICE_AQC_FW_LOG_ID_MAX,
>  };
> 
> diff --git a/drivers/net/ice/base/ice_common.c
> b/drivers/net/ice/base/ice_common.c
> index 62c7fad0d..7093ee4f4 100644
> --- a/drivers/net/ice/base/ice_common.c
> +++ b/drivers/net/ice/base/ice_common.c
> @@ -582,6 +582,49 @@ static void ice_cleanup_fltr_mgmt_struct(struct
> ice_hw *hw)
>  #define ICE_FW_LOG_DESC_SIZE_MAX	\
>  	ICE_FW_LOG_DESC_SIZE(ICE_AQC_FW_LOG_ID_MAX)
> 
> +/**
> + * ice_get_fw_log_cfg - get FW logging configuration
> + * @hw: pointer to the HW struct
> + */
> +static enum ice_status ice_get_fw_log_cfg(struct ice_hw *hw) {
> +	struct ice_aqc_fw_logging_data *config;
> +	struct ice_aq_desc desc;
> +	enum ice_status status;
> +	u16 size;
> +
> +	size = ICE_FW_LOG_DESC_SIZE_MAX;
> +	config = (struct ice_aqc_fw_logging_data *)ice_malloc(hw, size);
> +	if (!config)
> +		return ICE_ERR_NO_MEMORY;
> +
> +	ice_fill_dflt_direct_cmd_desc(&desc,
> ice_aqc_opc_fw_logging_info);
> +
> +	desc.flags |= CPU_TO_LE16(ICE_AQ_FLAG_BUF);
> +	desc.flags |= CPU_TO_LE16(ICE_AQ_FLAG_RD);
> +
> +	status = ice_aq_send_cmd(hw, &desc, config, size, NULL);
> +	if (!status) {
> +		u16 i;
> +
> +		/* Save fw logging information into the HW structure */
> +		for (i = 0; i < ICE_AQC_FW_LOG_ID_MAX; i++) {
> +			u16 v, m, flgs;
> +
> +			v = LE16_TO_CPU(config->entry[i]);
> +			m = (v & ICE_AQC_FW_LOG_ID_M) >>
> ICE_AQC_FW_LOG_ID_S;
> +			flgs = (v & ICE_AQC_FW_LOG_EN_M) >>
> ICE_AQC_FW_LOG_EN_S;
> +
> +			if (m < ICE_AQC_FW_LOG_ID_MAX)
> +				hw->fw_log.evnts[m].cur = flgs;
> +		}
> +	}
> +
> +	ice_free(hw, config);
> +
> +	return status;
> +}
> +
>  /**
>   * ice_cfg_fw_log - configure FW logging
>   * @hw: pointer to the HW struct
> @@ -636,6 +679,11 @@ static enum ice_status ice_cfg_fw_log(struct ice_hw
> *hw, bool enable)

Is there code in DPDK that calls ice_cfg_fw_log()? If not then I would drop this patch.

>  	    (!hw->fw_log.actv_evnts || !ice_check_sq_alive(hw, &hw-
> >adminq)))
>  		return ICE_SUCCESS;
> 
> +	/* Get current FW log settings */
> +	status = ice_get_fw_log_cfg(hw);
> +	if (status)
> +		return status;
> +
>  	ice_fill_dflt_direct_cmd_desc(&desc, ice_aqc_opc_fw_logging);
>  	cmd = &desc.params.fw_logging;
> 
> --
> 2.17.1



More information about the dev mailing list