aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/ath/ath9k/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/ath/ath9k/main.c')
-rw-r--r--drivers/net/wireless/ath/ath9k/main.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/drivers/net/wireless/ath/ath9k/main.c b/drivers/net/wireless/ath/ath9k/main.c
index 9098aaad97a..1e7fe8c0e11 100644
--- a/drivers/net/wireless/ath/ath9k/main.c
+++ b/drivers/net/wireless/ath/ath9k/main.c
@@ -163,7 +163,7 @@ static void ath_update_survey_nf(struct ath_softc *sc, int channel)
163 163
164 if (chan->noisefloor) { 164 if (chan->noisefloor) {
165 survey->filled |= SURVEY_INFO_NOISE_DBM; 165 survey->filled |= SURVEY_INFO_NOISE_DBM;
166 survey->noise = chan->noisefloor; 166 survey->noise = ath9k_hw_getchan_noise(ah, chan);
167 } 167 }
168} 168}
169 169
@@ -294,6 +294,7 @@ static int ath_set_channel(struct ath_softc *sc, struct ieee80211_hw *hw,
294 ath9k_cmn_update_txpow(ah, sc->curtxpow, 294 ath9k_cmn_update_txpow(ah, sc->curtxpow,
295 sc->config.txpowlimit, &sc->curtxpow); 295 sc->config.txpowlimit, &sc->curtxpow);
296 ath9k_hw_set_interrupts(ah, ah->imask); 296 ath9k_hw_set_interrupts(ah, ah->imask);
297 ath9k_hw_enable_interrupts(ah);
297 298
298 if (!(sc->sc_flags & (SC_OP_OFFCHANNEL))) { 299 if (!(sc->sc_flags & (SC_OP_OFFCHANNEL))) {
299 if (sc->sc_flags & SC_OP_BEACONS) 300 if (sc->sc_flags & SC_OP_BEACONS)
@@ -706,8 +707,7 @@ void ath9k_tasklet(unsigned long data)
706 */ 707 */
707 ath_dbg(common, ATH_DBG_PS, 708 ath_dbg(common, ATH_DBG_PS,
708 "TSFOOR - Sync with next Beacon\n"); 709 "TSFOOR - Sync with next Beacon\n");
709 sc->ps_flags |= PS_WAIT_FOR_BEACON | PS_BEACON_SYNC | 710 sc->ps_flags |= PS_WAIT_FOR_BEACON | PS_BEACON_SYNC;
710 PS_TSFOOR_SYNC;
711 } 711 }
712 712
713 if (ah->caps.hw_caps & ATH9K_HW_CAP_EDMA) 713 if (ah->caps.hw_caps & ATH9K_HW_CAP_EDMA)
@@ -886,6 +886,7 @@ static void ath_radio_enable(struct ath_softc *sc, struct ieee80211_hw *hw)
886 886
887 ath9k_ps_wakeup(sc); 887 ath9k_ps_wakeup(sc);
888 spin_lock_bh(&sc->sc_pcu_lock); 888 spin_lock_bh(&sc->sc_pcu_lock);
889 atomic_set(&ah->intr_ref_cnt, -1);
889 890
890 ath9k_hw_configpcipowersave(ah, 0, 0); 891 ath9k_hw_configpcipowersave(ah, 0, 0);
891 892
@@ -910,6 +911,7 @@ static void ath_radio_enable(struct ath_softc *sc, struct ieee80211_hw *hw)
910 911
911 /* Re-Enable interrupts */ 912 /* Re-Enable interrupts */
912 ath9k_hw_set_interrupts(ah, ah->imask); 913 ath9k_hw_set_interrupts(ah, ah->imask);
914 ath9k_hw_enable_interrupts(ah);
913 915
914 /* Enable LED */ 916 /* Enable LED */
915 ath9k_hw_cfg_output(ah, ah->led_pin, 917 ath9k_hw_cfg_output(ah, ah->led_pin,
@@ -1016,6 +1018,7 @@ int ath_reset(struct ath_softc *sc, bool retry_tx)
1016 ath_set_beacon(sc); /* restart beacons */ 1018 ath_set_beacon(sc); /* restart beacons */
1017 1019
1018 ath9k_hw_set_interrupts(ah, ah->imask); 1020 ath9k_hw_set_interrupts(ah, ah->imask);
1021 ath9k_hw_enable_interrupts(ah);
1019 1022
1020 if (retry_tx) { 1023 if (retry_tx) {
1021 int i; 1024 int i;
@@ -1130,6 +1133,7 @@ static int ath9k_start(struct ieee80211_hw *hw)
1130 /* Disable BMISS interrupt when we're not associated */ 1133 /* Disable BMISS interrupt when we're not associated */
1131 ah->imask &= ~(ATH9K_INT_SWBA | ATH9K_INT_BMISS); 1134 ah->imask &= ~(ATH9K_INT_SWBA | ATH9K_INT_BMISS);
1132 ath9k_hw_set_interrupts(ah, ah->imask); 1135 ath9k_hw_set_interrupts(ah, ah->imask);
1136 ath9k_hw_enable_interrupts(ah);
1133 1137
1134 ieee80211_wake_queues(hw); 1138 ieee80211_wake_queues(hw);
1135 1139