diff options
author | Shahar S Matityahu <shahar.s.matityahu@intel.com> | 2019-05-16 10:56:30 +0300 |
---|---|---|
committer | Luca Coelho <luciano.coelho@intel.com> | 2019-06-29 10:09:43 +0300 |
commit | 029c25f36343fe72fe1a80dcfc03ba34b0354de2 (patch) | |
tree | 9896844d42f0c1a4884a8288d1a6ecb22d63d141 /drivers/net/wireless/intel/iwlwifi/fw/dbg.h | |
parent | d374f3157fa4b3ffd830b41ecf25457781b8526b (diff) | |
download | linux-029c25f36343fe72fe1a80dcfc03ba34b0354de2.tar.bz2 |
iwlwifi: dbg_ini: fix debug monitor stop and restart in ini mode
In ini debug mode the recording does not restart unless legacy monitor
configuration is also given.
Add dbg_ini_dest field to trans to indicate the debug monitor
destination to solve this.
Signed-off-by: Shahar S Matityahu <shahar.s.matityahu@intel.com>
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
Diffstat (limited to 'drivers/net/wireless/intel/iwlwifi/fw/dbg.h')
-rw-r--r-- | drivers/net/wireless/intel/iwlwifi/fw/dbg.h | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/drivers/net/wireless/intel/iwlwifi/fw/dbg.h b/drivers/net/wireless/intel/iwlwifi/fw/dbg.h index 1339912431d4..6350546c333c 100644 --- a/drivers/net/wireless/intel/iwlwifi/fw/dbg.h +++ b/drivers/net/wireless/intel/iwlwifi/fw/dbg.h @@ -309,6 +309,14 @@ static inline void iwl_fw_dbg_stop_recording(struct iwl_fw_runtime *fwrt, struct iwl_fw_dbg_params *params) { + /* if the FW crashed or not debug monitor cfg was given, there is + * no point in stopping + */ + if (test_bit(STATUS_FW_ERROR, &fwrt->trans->status) || + (!fwrt->trans->dbg.dest_tlv && + fwrt->trans->dbg.ini_dest == IWL_FW_INI_LOCATION_INVALID)) + return; + if (fwrt->trans->cfg->device_family < IWL_DEVICE_FAMILY_22560) _iwl_fw_dbg_stop_recording(fwrt->trans, params); else @@ -335,7 +343,9 @@ _iwl_fw_dbg_restart_recording(struct iwl_trans *trans, #ifdef CONFIG_IWLWIFI_DEBUGFS static inline void iwl_fw_set_dbg_rec_on(struct iwl_fw_runtime *fwrt) { - if (fwrt->fw->dbg.dest_tlv && fwrt->cur_fw_img == IWL_UCODE_REGULAR) + if (fwrt->cur_fw_img == IWL_UCODE_REGULAR && + (fwrt->fw->dbg.dest_tlv || + fwrt->trans->dbg.ini_dest != IWL_FW_INI_LOCATION_INVALID)) fwrt->trans->dbg.rec_on = true; } #endif @@ -344,6 +354,14 @@ static inline void iwl_fw_dbg_restart_recording(struct iwl_fw_runtime *fwrt, struct iwl_fw_dbg_params *params) { + /* if the FW crashed or not debug monitor cfg was given, there is + * no point in restarting + */ + if (test_bit(STATUS_FW_ERROR, &fwrt->trans->status) || + (!fwrt->trans->dbg.dest_tlv && + fwrt->trans->dbg.ini_dest == IWL_FW_INI_LOCATION_INVALID)) + return; + if (fwrt->trans->cfg->device_family < IWL_DEVICE_FAMILY_22560) _iwl_fw_dbg_restart_recording(fwrt->trans, params); else |