ath9k: do not access hw registers in FULL SLEEP
The opmode recalculation is accessing hw registers. When it is called from remove interface callback and if there are no vifs present then hw is moved to FULL SLEEP by radio disable. So use power save wrappers before accessing hw registers in calculating opmode state. Signed-off-by: Rajkumar Manoharan <rmanoharan@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
b2a5c3dfec
commit
4c89fe954d
@ -1354,6 +1354,7 @@ static void ath9k_calculate_summary_state(struct ieee80211_hw *hw,
|
|||||||
|
|
||||||
ath9k_calculate_iter_data(hw, vif, &iter_data);
|
ath9k_calculate_iter_data(hw, vif, &iter_data);
|
||||||
|
|
||||||
|
ath9k_ps_wakeup(sc);
|
||||||
/* Set BSSID mask. */
|
/* Set BSSID mask. */
|
||||||
memcpy(common->bssidmask, iter_data.mask, ETH_ALEN);
|
memcpy(common->bssidmask, iter_data.mask, ETH_ALEN);
|
||||||
ath_hw_setbssidmask(common);
|
ath_hw_setbssidmask(common);
|
||||||
@ -1388,6 +1389,7 @@ static void ath9k_calculate_summary_state(struct ieee80211_hw *hw,
|
|||||||
}
|
}
|
||||||
|
|
||||||
ath9k_hw_set_interrupts(ah, ah->imask);
|
ath9k_hw_set_interrupts(ah, ah->imask);
|
||||||
|
ath9k_ps_restore(sc);
|
||||||
|
|
||||||
/* Set up ANI */
|
/* Set up ANI */
|
||||||
if ((iter_data.naps + iter_data.nadhocs) > 0) {
|
if ((iter_data.naps + iter_data.nadhocs) > 0) {
|
||||||
|
Loading…
Reference in New Issue
Block a user