|
@@ -1371,7 +1371,6 @@ static void ath9k_calculate_summary_state(struct ieee80211_hw *hw,
|
|
|
|
|
|
ath9k_calculate_iter_data(hw, vif, &iter_data);
|
|
|
|
|
|
- ath9k_ps_wakeup(sc);
|
|
|
/* Set BSSID mask. */
|
|
|
memcpy(common->bssidmask, iter_data.mask, ETH_ALEN);
|
|
|
ath_hw_setbssidmask(common);
|
|
@@ -1406,7 +1405,6 @@ static void ath9k_calculate_summary_state(struct ieee80211_hw *hw,
|
|
|
}
|
|
|
|
|
|
ath9k_hw_set_interrupts(ah, ah->imask);
|
|
|
- ath9k_ps_restore(sc);
|
|
|
|
|
|
/* Set up ANI */
|
|
|
if ((iter_data.naps + iter_data.nadhocs) > 0) {
|
|
@@ -1451,6 +1449,7 @@ static int ath9k_add_interface(struct ieee80211_hw *hw,
|
|
|
struct ath_common *common = ath9k_hw_common(ah);
|
|
|
int ret = 0;
|
|
|
|
|
|
+ ath9k_ps_wakeup(sc);
|
|
|
mutex_lock(&sc->mutex);
|
|
|
|
|
|
switch (vif->type) {
|
|
@@ -1494,6 +1493,7 @@ static int ath9k_add_interface(struct ieee80211_hw *hw,
|
|
|
ath9k_do_vif_add_setup(hw, vif);
|
|
|
out:
|
|
|
mutex_unlock(&sc->mutex);
|
|
|
+ ath9k_ps_restore(sc);
|
|
|
return ret;
|
|
|
}
|
|
|
|
|
@@ -1508,6 +1508,7 @@ static int ath9k_change_interface(struct ieee80211_hw *hw,
|
|
|
|
|
|
ath_dbg(common, ATH_DBG_CONFIG, "Change Interface\n");
|
|
|
mutex_lock(&sc->mutex);
|
|
|
+ ath9k_ps_wakeup(sc);
|
|
|
|
|
|
/* See if new interface type is valid. */
|
|
|
if ((new_type == NL80211_IFTYPE_ADHOC) &&
|
|
@@ -1537,6 +1538,7 @@ static int ath9k_change_interface(struct ieee80211_hw *hw,
|
|
|
|
|
|
ath9k_do_vif_add_setup(hw, vif);
|
|
|
out:
|
|
|
+ ath9k_ps_restore(sc);
|
|
|
mutex_unlock(&sc->mutex);
|
|
|
return ret;
|
|
|
}
|
|
@@ -1549,6 +1551,7 @@ static void ath9k_remove_interface(struct ieee80211_hw *hw,
|
|
|
|
|
|
ath_dbg(common, ATH_DBG_CONFIG, "Detach Interface\n");
|
|
|
|
|
|
+ ath9k_ps_wakeup(sc);
|
|
|
mutex_lock(&sc->mutex);
|
|
|
|
|
|
sc->nvifs--;
|
|
@@ -1560,6 +1563,7 @@ static void ath9k_remove_interface(struct ieee80211_hw *hw,
|
|
|
ath9k_calculate_summary_state(hw, NULL);
|
|
|
|
|
|
mutex_unlock(&sc->mutex);
|
|
|
+ ath9k_ps_restore(sc);
|
|
|
}
|
|
|
|
|
|
static void ath9k_enable_ps(struct ath_softc *sc)
|
|
@@ -1840,6 +1844,7 @@ static int ath9k_conf_tx(struct ieee80211_hw *hw, u16 queue,
|
|
|
|
|
|
txq = sc->tx.txq_map[queue];
|
|
|
|
|
|
+ ath9k_ps_wakeup(sc);
|
|
|
mutex_lock(&sc->mutex);
|
|
|
|
|
|
memset(&qi, 0, sizeof(struct ath9k_tx_queue_info));
|
|
@@ -1863,6 +1868,7 @@ static int ath9k_conf_tx(struct ieee80211_hw *hw, u16 queue,
|
|
|
ath_beaconq_config(sc);
|
|
|
|
|
|
mutex_unlock(&sc->mutex);
|
|
|
+ ath9k_ps_restore(sc);
|
|
|
|
|
|
return ret;
|
|
|
}
|
|
@@ -2021,6 +2027,7 @@ static void ath9k_bss_info_changed(struct ieee80211_hw *hw,
|
|
|
int slottime;
|
|
|
int error;
|
|
|
|
|
|
+ ath9k_ps_wakeup(sc);
|
|
|
mutex_lock(&sc->mutex);
|
|
|
|
|
|
if (changed & BSS_CHANGED_BSSID) {
|
|
@@ -2106,6 +2113,7 @@ static void ath9k_bss_info_changed(struct ieee80211_hw *hw,
|
|
|
}
|
|
|
|
|
|
mutex_unlock(&sc->mutex);
|
|
|
+ ath9k_ps_restore(sc);
|
|
|
}
|
|
|
|
|
|
static u64 ath9k_get_tsf(struct ieee80211_hw *hw)
|