aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEliad Peller <eliad@wizery.com>2015-09-10 08:00:22 -0400
committerEmmanuel Grumbach <emmanuel.grumbach@intel.com>2015-10-25 07:45:05 -0400
commit053225de121a950b94a1989802c22895797ffbfc (patch)
tree5f43d03b93513720d843099098c56aa9f16b2c91
parentcd55ccea5978d7e87852be3ea5daf89c95b7e78a (diff)
iwlwifi: avoid read/write operations if the bus is dead
Recovery takes too much time if the bus is dead (each timeout is 2000ms, etc.). Explicitly skip fw dump in this case, as it will result in garbage data (and might take signifcant time) Signed-off-by: Eliad Peller <eliadx.peller@intel.com> Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-trans.h2
-rw-r--r--drivers/net/wireless/iwlwifi/mvm/mac80211.c6
2 files changed, 8 insertions, 0 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-trans.h b/drivers/net/wireless/iwlwifi/iwl-trans.h
index bb51b6f8002c..6f76525088f0 100644
--- a/drivers/net/wireless/iwlwifi/iwl-trans.h
+++ b/drivers/net/wireless/iwlwifi/iwl-trans.h
@@ -409,6 +409,7 @@ enum iwl_d3_status {
409 * @STATUS_TRANS_GOING_IDLE: shutting down the trans, only special commands 409 * @STATUS_TRANS_GOING_IDLE: shutting down the trans, only special commands
410 * are sent 410 * are sent
411 * @STATUS_TRANS_IDLE: the trans is idle - general commands are not to be sent 411 * @STATUS_TRANS_IDLE: the trans is idle - general commands are not to be sent
412 * @STATUS_TRANS_DEAD: trans is dead - avoid any read/write operation
412 */ 413 */
413enum iwl_trans_status { 414enum iwl_trans_status {
414 STATUS_SYNC_HCMD_ACTIVE, 415 STATUS_SYNC_HCMD_ACTIVE,
@@ -419,6 +420,7 @@ enum iwl_trans_status {
419 STATUS_FW_ERROR, 420 STATUS_FW_ERROR,
420 STATUS_TRANS_GOING_IDLE, 421 STATUS_TRANS_GOING_IDLE,
421 STATUS_TRANS_IDLE, 422 STATUS_TRANS_IDLE,
423 STATUS_TRANS_DEAD,
422}; 424};
423 425
424/** 426/**
diff --git a/drivers/net/wireless/iwlwifi/mvm/mac80211.c b/drivers/net/wireless/iwlwifi/mvm/mac80211.c
index 5ce29ff36ed1..8e69ab22b0e0 100644
--- a/drivers/net/wireless/iwlwifi/mvm/mac80211.c
+++ b/drivers/net/wireless/iwlwifi/mvm/mac80211.c
@@ -1137,6 +1137,12 @@ void iwl_mvm_fw_error_dump(struct iwl_mvm *mvm)
1137 1137
1138 lockdep_assert_held(&mvm->mutex); 1138 lockdep_assert_held(&mvm->mutex);
1139 1139
1140 /* there's no point in fw dump if the bus is dead */
1141 if (test_bit(STATUS_TRANS_DEAD, &mvm->trans->status)) {
1142 IWL_ERR(mvm, "Skip fw error dump since bus is dead\n");
1143 return;
1144 }
1145
1140 if (mvm->fw_dump_trig && 1146 if (mvm->fw_dump_trig &&
1141 mvm->fw_dump_trig->mode & IWL_FW_DBG_TRIGGER_MONITOR_ONLY) 1147 mvm->fw_dump_trig->mode & IWL_FW_DBG_TRIGGER_MONITOR_ONLY)
1142 monitor_dump_only = true; 1148 monitor_dump_only = true;