summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorEmmanuel Grumbach <emmanuel.grumbach@intel.com>2015-06-24 14:58:13 +0300
committerEmmanuel Grumbach <emmanuel.grumbach@intel.com>2015-08-04 10:11:43 +0300
commit1103323ca1aafb0aa32064abec736ea9f2ce66a6 (patch)
treef12fc8f5d84a5bca21adeba91ebb283b9df493b4 /drivers
parent5bf12f6096ad615c90accc1f37935423ea1a3c26 (diff)
downloadlinux-1103323ca1aafb0aa32064abec736ea9f2ce66a6.tar.gz
linux-1103323ca1aafb0aa32064abec736ea9f2ce66a6.tar.bz2
linux-1103323ca1aafb0aa32064abec736ea9f2ce66a6.zip
iwlwifi: pcie: cancel Tx timer upon firmware crash
When the firmware crashes, we can't expect the Tx queues to progress. Cancel their timer. Reviewed-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/wireless/iwlwifi/pcie/rx.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/net/wireless/iwlwifi/pcie/rx.c b/drivers/net/wireless/iwlwifi/pcie/rx.c
index 32ec95bd4973..5561dee7b62d 100644
--- a/drivers/net/wireless/iwlwifi/pcie/rx.c
+++ b/drivers/net/wireless/iwlwifi/pcie/rx.c
@@ -1014,6 +1014,7 @@ restart:
static void iwl_pcie_irq_handle_error(struct iwl_trans *trans)
{
struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans);
+ int i;
/* W/A for WiFi/WiMAX coex and WiMAX own the RF */
if (trans->cfg->internal_wimax_coex &&
@@ -1037,6 +1038,9 @@ static void iwl_pcie_irq_handle_error(struct iwl_trans *trans)
iwl_trans_fw_error(trans);
local_bh_enable();
+ for (i = 0; i < trans->cfg->base_params->num_of_queues; i++)
+ del_timer(&trans_pcie->txq[i].stuck_timer);
+
clear_bit(STATUS_SYNC_HCMD_ACTIVE, &trans->status);
wake_up(&trans_pcie->wait_command_queue);
}