i40e/base: add debug dump internal data
This patch adds support for "Debug Dump Internal Data" AQ command. It is used to dump internal firmware or hardware data for debug purposes. Signed-off-by: Jingjing Wu <jingjing.wu@intel.com> Acked-by: Helin Zhang <helin.zhang@intel.com> Tested-by: Huilong Xu <huilongx.xu@intel.com>
This commit is contained in:
parent
3f12b9f23b
commit
6bfca47c08
@ -5297,6 +5297,63 @@ void i40e_set_pci_config_data(struct i40e_hw *hw, u16 link_status)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* i40e_aq_debug_dump
|
||||||
|
* @hw: pointer to the hardware structure
|
||||||
|
* @cluster_id: specific cluster to dump
|
||||||
|
* @table_id: table id within cluster
|
||||||
|
* @start_index: index of line in the block to read
|
||||||
|
* @buff_size: dump buffer size
|
||||||
|
* @buff: dump buffer
|
||||||
|
* @ret_buff_size: actual buffer size returned
|
||||||
|
* @ret_next_table: next block to read
|
||||||
|
* @ret_next_index: next index to read
|
||||||
|
*
|
||||||
|
* Dump internal FW/HW data for debug purposes.
|
||||||
|
*
|
||||||
|
**/
|
||||||
|
enum i40e_status_code i40e_aq_debug_dump(struct i40e_hw *hw, u8 cluster_id,
|
||||||
|
u8 table_id, u32 start_index, u16 buff_size,
|
||||||
|
void *buff, u16 *ret_buff_size,
|
||||||
|
u8 *ret_next_table, u32 *ret_next_index,
|
||||||
|
struct i40e_asq_cmd_details *cmd_details)
|
||||||
|
{
|
||||||
|
struct i40e_aq_desc desc;
|
||||||
|
struct i40e_aqc_debug_dump_internals *cmd =
|
||||||
|
(struct i40e_aqc_debug_dump_internals *)&desc.params.raw;
|
||||||
|
struct i40e_aqc_debug_dump_internals *resp =
|
||||||
|
(struct i40e_aqc_debug_dump_internals *)&desc.params.raw;
|
||||||
|
enum i40e_status_code status;
|
||||||
|
|
||||||
|
if (buff_size == 0 || !buff)
|
||||||
|
return I40E_ERR_PARAM;
|
||||||
|
|
||||||
|
i40e_fill_default_direct_cmd_desc(&desc,
|
||||||
|
i40e_aqc_opc_debug_dump_internals);
|
||||||
|
/* Indirect Command */
|
||||||
|
desc.flags |= CPU_TO_LE16((u16)I40E_AQ_FLAG_BUF);
|
||||||
|
if (buff_size > I40E_AQ_LARGE_BUF)
|
||||||
|
desc.flags |= CPU_TO_LE16((u16)I40E_AQ_FLAG_LB);
|
||||||
|
|
||||||
|
cmd->cluster_id = cluster_id;
|
||||||
|
cmd->table_id = table_id;
|
||||||
|
cmd->idx = CPU_TO_LE32(start_index);
|
||||||
|
|
||||||
|
desc.datalen = CPU_TO_LE16(buff_size);
|
||||||
|
|
||||||
|
status = i40e_asq_send_command(hw, &desc, buff, buff_size, cmd_details);
|
||||||
|
if (!status) {
|
||||||
|
if (ret_buff_size != NULL)
|
||||||
|
*ret_buff_size = LE16_TO_CPU(desc.datalen);
|
||||||
|
if (ret_next_table != NULL)
|
||||||
|
*ret_next_table = resp->table_id;
|
||||||
|
if (ret_next_index != NULL)
|
||||||
|
*ret_next_index = LE32_TO_CPU(resp->idx);
|
||||||
|
}
|
||||||
|
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* i40e_read_bw_from_alt_ram
|
* i40e_read_bw_from_alt_ram
|
||||||
* @hw: pointer to the hardware structure
|
* @hw: pointer to the hardware structure
|
||||||
|
@ -468,6 +468,11 @@ enum i40e_status_code i40e_aq_add_rem_control_packet_filter(struct i40e_hw *hw,
|
|||||||
u16 vsi_seid, u16 queue, bool is_add,
|
u16 vsi_seid, u16 queue, bool is_add,
|
||||||
struct i40e_control_filter_stats *stats,
|
struct i40e_control_filter_stats *stats,
|
||||||
struct i40e_asq_cmd_details *cmd_details);
|
struct i40e_asq_cmd_details *cmd_details);
|
||||||
|
enum i40e_status_code i40e_aq_debug_dump(struct i40e_hw *hw, u8 cluster_id,
|
||||||
|
u8 table_id, u32 start_index, u16 buff_size,
|
||||||
|
void *buff, u16 *ret_buff_size,
|
||||||
|
u8 *ret_next_table, u32 *ret_next_index,
|
||||||
|
struct i40e_asq_cmd_details *cmd_details);
|
||||||
void i40e_add_filter_to_drop_tx_flow_control_frames(struct i40e_hw *hw,
|
void i40e_add_filter_to_drop_tx_flow_control_frames(struct i40e_hw *hw,
|
||||||
u16 vsi_seid);
|
u16 vsi_seid);
|
||||||
#endif /* _I40E_PROTOTYPE_H_ */
|
#endif /* _I40E_PROTOTYPE_H_ */
|
||||||
|
Loading…
Reference in New Issue
Block a user