aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/iwlwifi
diff options
context:
space:
mode:
authorEmmanuel Grumbach <emmanuel.grumbach@intel.com>2012-01-09 09:35:08 -0500
committerWey-Yi Guy <wey-yi.w.guy@intel.com>2012-02-02 17:37:52 -0500
commit1df06bdc6fb26d13af18c5dbb3144f13cf55de3c (patch)
treed39f2f82a939c9fd426f5e4feb1697058d0d3ef5 /drivers/net/wireless/iwlwifi
parent08079a4919ca960c0f46d244cae3a6ec2c39041d (diff)
iwlwifi: stop_hw replace enable_rfkill_int
This trans_ops->stop_hw leaves the RFKILL interrupt enabled, we can call that one instead of enable_rfkill_int. By that, we reduce the numbers of acceesses to the NIC from the upper layers. Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com> Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Diffstat (limited to 'drivers/net/wireless/iwlwifi')
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-core.h6
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-mac80211.c7
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-trans-pcie-rx.c6
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-trans-pcie.c2
4 files changed, 10 insertions, 11 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-core.h b/drivers/net/wireless/iwlwifi/iwl-core.h
index e74bfb7bbb2..8d60dcf6f2e 100644
--- a/drivers/net/wireless/iwlwifi/iwl-core.h
+++ b/drivers/net/wireless/iwlwifi/iwl-core.h
@@ -297,12 +297,6 @@ static inline bool iwl_advanced_bt_coexist(struct iwl_priv *priv)
297 cfg(priv)->bt_params->advanced_bt_coexist; 297 cfg(priv)->bt_params->advanced_bt_coexist;
298} 298}
299 299
300static inline void iwl_enable_rfkill_int(struct iwl_priv *priv)
301{
302 IWL_DEBUG_ISR(priv, "Enabling rfkill interrupt\n");
303 iwl_write32(trans(priv), CSR_INT_MASK, CSR_INT_BIT_RF_KILL);
304}
305
306extern bool bt_siso_mode; 300extern bool bt_siso_mode;
307 301
308#endif /* __iwl_core_h__ */ 302#endif /* __iwl_core_h__ */
diff --git a/drivers/net/wireless/iwlwifi/iwl-mac80211.c b/drivers/net/wireless/iwlwifi/iwl-mac80211.c
index 78bc1e857b0..7177fd76e28 100644
--- a/drivers/net/wireless/iwlwifi/iwl-mac80211.c
+++ b/drivers/net/wireless/iwlwifi/iwl-mac80211.c
@@ -346,9 +346,10 @@ static void iwlagn_mac_stop(struct ieee80211_hw *hw)
346 flush_workqueue(priv->shrd->workqueue); 346 flush_workqueue(priv->shrd->workqueue);
347 347
348 /* User space software may expect getting rfkill changes 348 /* User space software may expect getting rfkill changes
349 * even if interface is down */ 349 * even if interface is down, trans->down will leave the RF
350 iwl_write32(trans(priv), CSR_INT, 0xFFFFFFFF); 350 * kill interrupt enabled
351 iwl_enable_rfkill_int(priv); 351 */
352 iwl_trans_stop_hw(trans(priv));
352 353
353 IWL_DEBUG_MAC80211(priv, "leave\n"); 354 IWL_DEBUG_MAC80211(priv, "leave\n");
354} 355}
diff --git a/drivers/net/wireless/iwlwifi/iwl-trans-pcie-rx.c b/drivers/net/wireless/iwlwifi/iwl-trans-pcie-rx.c
index 731f287c0f3..78abff00453 100644
--- a/drivers/net/wireless/iwlwifi/iwl-trans-pcie-rx.c
+++ b/drivers/net/wireless/iwlwifi/iwl-trans-pcie-rx.c
@@ -1149,8 +1149,10 @@ void iwl_irq_tasklet(struct iwl_trans *trans)
1149 if (test_bit(STATUS_INT_ENABLED, &trans->shrd->status)) 1149 if (test_bit(STATUS_INT_ENABLED, &trans->shrd->status))
1150 iwl_enable_interrupts(trans); 1150 iwl_enable_interrupts(trans);
1151 /* Re-enable RF_KILL if it occurred */ 1151 /* Re-enable RF_KILL if it occurred */
1152 else if (handled & CSR_INT_BIT_RF_KILL) 1152 else if (handled & CSR_INT_BIT_RF_KILL) {
1153 iwl_enable_rfkill_int(priv(trans)); 1153 IWL_DEBUG_ISR(trans, "Enabling rfkill interrupt\n");
1154 iwl_write32(trans, CSR_INT_MASK, CSR_INT_BIT_RF_KILL);
1155 }
1154} 1156}
1155 1157
1156/****************************************************************************** 1158/******************************************************************************
diff --git a/drivers/net/wireless/iwlwifi/iwl-trans-pcie.c b/drivers/net/wireless/iwlwifi/iwl-trans-pcie.c
index ed2a9216d80..ec26950ebb5 100644
--- a/drivers/net/wireless/iwlwifi/iwl-trans-pcie.c
+++ b/drivers/net/wireless/iwlwifi/iwl-trans-pcie.c
@@ -1532,6 +1532,8 @@ static void iwl_trans_pcie_stop_hw(struct iwl_trans *trans)
1532{ 1532{
1533 iwl_apm_stop(trans); 1533 iwl_apm_stop(trans);
1534 1534
1535 iwl_write32(trans, CSR_INT, 0xFFFFFFFF);
1536
1535 /* Even if we stop the HW, we still want the RF kill interrupt */ 1537 /* Even if we stop the HW, we still want the RF kill interrupt */
1536 IWL_DEBUG_ISR(trans, "Enabling rfkill interrupt\n"); 1538 IWL_DEBUG_ISR(trans, "Enabling rfkill interrupt\n");
1537 iwl_write32(trans, CSR_INT_MASK, CSR_INT_BIT_RF_KILL); 1539 iwl_write32(trans, CSR_INT_MASK, CSR_INT_BIT_RF_KILL);