aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/iwlwifi/pcie/tx.c
diff options
context:
space:
mode:
authorEmmanuel Grumbach <emmanuel.grumbach@intel.com>2013-09-11 07:16:20 -0400
committerJohannes Berg <johannes.berg@intel.com>2013-10-11 03:56:57 -0400
commit42550a53db232383ffe8d0c7d0ae9e72e2ca986b (patch)
tree26fc37a8330b355cba69bf2004cd9aa87e3956d4 /drivers/net/wireless/iwlwifi/pcie/tx.c
parentd1d5e3cda07fc8ddc6c9dc768eca50c17d675abc (diff)
iwlwifi: pcie: restart the driver when a command times out
This should really not happen. If it does, restarting is the only way to recover since the driver and the firmware might very well be out of sync. Moreover, iwl_op_mode_nic_error will print data that might help debugging. Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'drivers/net/wireless/iwlwifi/pcie/tx.c')
-rw-r--r--drivers/net/wireless/iwlwifi/pcie/tx.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/net/wireless/iwlwifi/pcie/tx.c b/drivers/net/wireless/iwlwifi/pcie/tx.c
index a70a30e2aeb0..b4168415538c 100644
--- a/drivers/net/wireless/iwlwifi/pcie/tx.c
+++ b/drivers/net/wireless/iwlwifi/pcie/tx.c
@@ -1529,7 +1529,6 @@ static int iwl_pcie_send_hcmd_sync(struct iwl_trans *trans,
1529 "Error sending %s: time out after %dms.\n", 1529 "Error sending %s: time out after %dms.\n",
1530 get_cmd_string(trans_pcie, cmd->id), 1530 get_cmd_string(trans_pcie, cmd->id),
1531 jiffies_to_msecs(HOST_COMPLETE_TIMEOUT)); 1531 jiffies_to_msecs(HOST_COMPLETE_TIMEOUT));
1532 dump_stack();
1533 1532
1534 IWL_ERR(trans, 1533 IWL_ERR(trans,
1535 "Current CMD queue read_ptr %d write_ptr %d\n", 1534 "Current CMD queue read_ptr %d write_ptr %d\n",
@@ -1540,6 +1539,9 @@ static int iwl_pcie_send_hcmd_sync(struct iwl_trans *trans,
1540 "Clearing HCMD_ACTIVE for command %s\n", 1539 "Clearing HCMD_ACTIVE for command %s\n",
1541 get_cmd_string(trans_pcie, cmd->id)); 1540 get_cmd_string(trans_pcie, cmd->id));
1542 ret = -ETIMEDOUT; 1541 ret = -ETIMEDOUT;
1542
1543 iwl_op_mode_nic_error(trans->op_mode);
1544
1543 goto cancel; 1545 goto cancel;
1544 } 1546 }
1545 } 1547 }