mirror of
https://github.com/torvalds/linux.git
synced 2024-11-20 11:01:38 +00:00
ath9k: enable dynack using set_coverage_class codepath
Enable ACK timeout estimation algorithm if set_coverage_class routine has been called with negative coverage_class parameter. Dynack is automatically disabled setting valid value for coverage class Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi83@gmail.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
7a90744c33
commit
24a1936bda
@ -1876,6 +1876,20 @@ static int ath9k_get_survey(struct ieee80211_hw *hw, int idx,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void ath9k_enable_dynack(struct ath_softc *sc)
|
||||
{
|
||||
#ifdef CONFIG_ATH9K_DYNACK
|
||||
u32 rfilt;
|
||||
struct ath_hw *ah = sc->sc_ah;
|
||||
|
||||
ath_dynack_reset(ah);
|
||||
|
||||
ah->dynack.enabled = true;
|
||||
rfilt = ath_calcrxfilter(sc);
|
||||
ath9k_hw_setrxfilter(ah, rfilt);
|
||||
#endif
|
||||
}
|
||||
|
||||
static void ath9k_set_coverage_class(struct ieee80211_hw *hw,
|
||||
s16 coverage_class)
|
||||
{
|
||||
@ -1886,11 +1900,22 @@ static void ath9k_set_coverage_class(struct ieee80211_hw *hw,
|
||||
return;
|
||||
|
||||
mutex_lock(&sc->mutex);
|
||||
ah->coverage_class = coverage_class;
|
||||
|
||||
ath9k_ps_wakeup(sc);
|
||||
ath9k_hw_init_global_settings(ah);
|
||||
ath9k_ps_restore(sc);
|
||||
if (coverage_class >= 0) {
|
||||
ah->coverage_class = coverage_class;
|
||||
if (ah->dynack.enabled) {
|
||||
u32 rfilt;
|
||||
|
||||
ah->dynack.enabled = false;
|
||||
rfilt = ath_calcrxfilter(sc);
|
||||
ath9k_hw_setrxfilter(ah, rfilt);
|
||||
}
|
||||
ath9k_ps_wakeup(sc);
|
||||
ath9k_hw_init_global_settings(ah);
|
||||
ath9k_ps_restore(sc);
|
||||
} else if (!ah->dynack.enabled) {
|
||||
ath9k_enable_dynack(sc);
|
||||
}
|
||||
|
||||
mutex_unlock(&sc->mutex);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user