aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorJohannes Berg <johannes.berg@intel.com>2011-10-10 10:26:57 -0400
committerJohn W. Linville <linville@tuxdriver.com>2011-10-14 14:48:10 -0400
commitd36120c6259e0d5bc435b8b690f73907357c26fb (patch)
tree26239667c9ff2dddb57d50243004ddc8ce490257 /drivers
parent26bfc0cfdb6b9a12911f8dde4f96c958aef357ae (diff)
iwlagn: stop interrupts when suspending
Occasionally, the device will send interrupts while it is resuming, at a point where we are not set up again to handle them. This causes the core IRQ handling to completely disable the IRQ, and then the driver won't work again until it is reloaded/rebound. To fix this issue disable the IRQ on suspend, this will cause us to only get interrupts again after we've setup everything on resume. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-trans-pcie.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-trans-pcie.c b/drivers/net/wireless/iwlwifi/iwl-trans-pcie.c
index 60a8eccb713..60067c7f0de 100644
--- a/drivers/net/wireless/iwlwifi/iwl-trans-pcie.c
+++ b/drivers/net/wireless/iwlwifi/iwl-trans-pcie.c
@@ -1377,8 +1377,13 @@ static int iwl_trans_pcie_suspend(struct iwl_trans *trans)
1377 * But of course ... if we have configured WoWLAN then we did other 1377 * But of course ... if we have configured WoWLAN then we did other
1378 * things already :-) 1378 * things already :-)
1379 */ 1379 */
1380 if (!trans->shrd->wowlan) 1380 if (!trans->shrd->wowlan) {
1381 iwl_apm_stop(priv(trans)); 1381 iwl_apm_stop(priv(trans));
1382 } else {
1383 iwl_disable_interrupts(trans);
1384 iwl_clear_bit(bus(trans), CSR_GP_CNTRL,
1385 CSR_GP_CNTRL_REG_FLAG_MAC_ACCESS_REQ);
1386 }
1382 1387
1383 return 0; 1388 return 0;
1384} 1389}