diff options
Diffstat (limited to 'drivers/net/wireless/ath/ath9k/main.c')
-rw-r--r-- | drivers/net/wireless/ath/ath9k/main.c | 10 |
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 | ||