From: Kalle Valo Date: Tue, 6 Jan 2015 17:36:11 +0000 (+0200) Subject: Merge tag 'iwlwifi-next-for-kalle-2014-12-30' of https://git.kernel.org/pub/scm/linux... X-Git-Tag: v4.0-rc1~133^2~10^2~247 X-Git-Url: http://git.cascardo.info/?p=cascardo%2Flinux.git;a=commitdiff_plain;h=64bb1b944b554a751b518b09c3d596f6b6c0ce31 Merge tag 'iwlwifi-next-for-kalle-2014-12-30' of https://git./linux/kernel/git/iwlwifi/iwlwifi-next * more work on d0i3 power state * enhancements to the firmware debugging infrastructure * support for 2 concurrent channel contexts * fixes / cleanups in the rate control * general cleanups --- 64bb1b944b554a751b518b09c3d596f6b6c0ce31 diff --cc drivers/net/wireless/iwlwifi/pcie/trans.c index 523fe0c88dcb,09696ca2a654..9ee4ca0ba8d3 --- a/drivers/net/wireless/iwlwifi/pcie/trans.c +++ b/drivers/net/wireless/iwlwifi/pcie/trans.c @@@ -1010,18 -1032,10 +1032,18 @@@ static void iwl_trans_pcie_stop_device( CSR_GP_CNTRL_REG_FLAG_MAC_ACCESS_REQ); /* Stop the device, and put it in low power state */ - iwl_pcie_apm_stop(trans); + iwl_pcie_apm_stop(trans, false); - /* Upon stop, the APM issues an interrupt if HW RF kill is set. - * Clean again the interrupt here + /* stop and reset the on-board processor */ + iwl_write32(trans, CSR_RESET, CSR_RESET_REG_FLAG_SW_RESET); + udelay(20); + + /* + * Upon stop, the APM issues an interrupt if HW RF kill is set. + * This is a bug in certain verions of the hardware. + * Certain devices also keep sending HW RF kill interrupt all + * the time, unless the interrupt is ACKed even if the interrupt + * should be masked. Re-ACK all the interrupts here. */ spin_lock(&trans_pcie->irq_lock); iwl_disable_interrupts(trans);