iwlwifi: mvm: add debugfs to force CT-kill
CT-kill is a thermal-based "RF-kill", which disables the NIC completely if the temperature gets too high, in order to avoid damage. Add a debugfs entry to simulate high temperatures, in order to test CT-kill flows in the driver without having to physically heat the device up. Signed-off-by: Chaya Rachel Ivgi <chaya.rachel.ivgi@intel.com> Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
This commit is contained in:
parent
b1a1efc576
commit
61d8c62646
|
@ -114,6 +114,18 @@ static ssize_t iwl_dbgfs_stop_ctdp_write(struct iwl_mvm *mvm, char *buf,
|
||||||
return ret ?: count;
|
return ret ?: count;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static ssize_t iwl_dbgfs_force_ctkill_write(struct iwl_mvm *mvm, char *buf,
|
||||||
|
size_t count, loff_t *ppos)
|
||||||
|
{
|
||||||
|
if (!iwl_mvm_firmware_running(mvm) ||
|
||||||
|
mvm->fwrt.cur_fw_img != IWL_UCODE_REGULAR)
|
||||||
|
return -EIO;
|
||||||
|
|
||||||
|
iwl_mvm_enter_ctkill(mvm);
|
||||||
|
|
||||||
|
return count;
|
||||||
|
}
|
||||||
|
|
||||||
static ssize_t iwl_dbgfs_tx_flush_write(struct iwl_mvm *mvm, char *buf,
|
static ssize_t iwl_dbgfs_tx_flush_write(struct iwl_mvm *mvm, char *buf,
|
||||||
size_t count, loff_t *ppos)
|
size_t count, loff_t *ppos)
|
||||||
{
|
{
|
||||||
|
@ -1641,6 +1653,7 @@ MVM_DEBUGFS_READ_WRITE_FILE_OPS(prph_reg, 64);
|
||||||
/* Device wide debugfs entries */
|
/* Device wide debugfs entries */
|
||||||
MVM_DEBUGFS_READ_FILE_OPS(ctdp_budget);
|
MVM_DEBUGFS_READ_FILE_OPS(ctdp_budget);
|
||||||
MVM_DEBUGFS_WRITE_FILE_OPS(stop_ctdp, 8);
|
MVM_DEBUGFS_WRITE_FILE_OPS(stop_ctdp, 8);
|
||||||
|
MVM_DEBUGFS_WRITE_FILE_OPS(force_ctkill, 8);
|
||||||
MVM_DEBUGFS_WRITE_FILE_OPS(tx_flush, 16);
|
MVM_DEBUGFS_WRITE_FILE_OPS(tx_flush, 16);
|
||||||
MVM_DEBUGFS_WRITE_FILE_OPS(sta_drain, 8);
|
MVM_DEBUGFS_WRITE_FILE_OPS(sta_drain, 8);
|
||||||
MVM_DEBUGFS_WRITE_FILE_OPS(send_echo_cmd, 8);
|
MVM_DEBUGFS_WRITE_FILE_OPS(send_echo_cmd, 8);
|
||||||
|
@ -1828,6 +1841,7 @@ int iwl_mvm_dbgfs_register(struct iwl_mvm *mvm, struct dentry *dbgfs_dir)
|
||||||
MVM_DEBUGFS_ADD_FILE(nic_temp, dbgfs_dir, S_IRUSR);
|
MVM_DEBUGFS_ADD_FILE(nic_temp, dbgfs_dir, S_IRUSR);
|
||||||
MVM_DEBUGFS_ADD_FILE(ctdp_budget, dbgfs_dir, S_IRUSR);
|
MVM_DEBUGFS_ADD_FILE(ctdp_budget, dbgfs_dir, S_IRUSR);
|
||||||
MVM_DEBUGFS_ADD_FILE(stop_ctdp, dbgfs_dir, S_IWUSR);
|
MVM_DEBUGFS_ADD_FILE(stop_ctdp, dbgfs_dir, S_IWUSR);
|
||||||
|
MVM_DEBUGFS_ADD_FILE(force_ctkill, dbgfs_dir, S_IWUSR);
|
||||||
MVM_DEBUGFS_ADD_FILE(stations, dbgfs_dir, S_IRUSR);
|
MVM_DEBUGFS_ADD_FILE(stations, dbgfs_dir, S_IRUSR);
|
||||||
MVM_DEBUGFS_ADD_FILE(bt_notif, dbgfs_dir, S_IRUSR);
|
MVM_DEBUGFS_ADD_FILE(bt_notif, dbgfs_dir, S_IRUSR);
|
||||||
MVM_DEBUGFS_ADD_FILE(bt_cmd, dbgfs_dir, S_IRUSR);
|
MVM_DEBUGFS_ADD_FILE(bt_cmd, dbgfs_dir, S_IRUSR);
|
||||||
|
|
|
@ -1755,6 +1755,7 @@ void iwl_mvm_thermal_exit(struct iwl_mvm *mvm);
|
||||||
void iwl_mvm_set_hw_ctkill_state(struct iwl_mvm *mvm, bool state);
|
void iwl_mvm_set_hw_ctkill_state(struct iwl_mvm *mvm, bool state);
|
||||||
int iwl_mvm_get_temp(struct iwl_mvm *mvm, s32 *temp);
|
int iwl_mvm_get_temp(struct iwl_mvm *mvm, s32 *temp);
|
||||||
void iwl_mvm_ct_kill_notif(struct iwl_mvm *mvm, struct iwl_rx_cmd_buffer *rxb);
|
void iwl_mvm_ct_kill_notif(struct iwl_mvm *mvm, struct iwl_rx_cmd_buffer *rxb);
|
||||||
|
void iwl_mvm_enter_ctkill(struct iwl_mvm *mvm);
|
||||||
int iwl_mvm_send_temp_report_ths_cmd(struct iwl_mvm *mvm);
|
int iwl_mvm_send_temp_report_ths_cmd(struct iwl_mvm *mvm);
|
||||||
int iwl_mvm_ctdp_command(struct iwl_mvm *mvm, u32 op, u32 budget);
|
int iwl_mvm_ctdp_command(struct iwl_mvm *mvm, u32 op, u32 budget);
|
||||||
|
|
||||||
|
|
|
@ -71,7 +71,7 @@
|
||||||
|
|
||||||
#define IWL_MVM_TEMP_NOTIF_WAIT_TIMEOUT HZ
|
#define IWL_MVM_TEMP_NOTIF_WAIT_TIMEOUT HZ
|
||||||
|
|
||||||
static void iwl_mvm_enter_ctkill(struct iwl_mvm *mvm)
|
void iwl_mvm_enter_ctkill(struct iwl_mvm *mvm)
|
||||||
{
|
{
|
||||||
struct iwl_mvm_tt_mgmt *tt = &mvm->thermal_throttle;
|
struct iwl_mvm_tt_mgmt *tt = &mvm->thermal_throttle;
|
||||||
u32 duration = tt->params.ct_kill_duration;
|
u32 duration = tt->params.ct_kill_duration;
|
||||||
|
|
Loading…
Reference in New Issue