ath9k: Move txpower limit to channel context
Signed-off-by: Felix Fietkau <nbd@openwrt.org> Signed-off-by: Rajkumar Manoharan <rmanohar@qti.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
fbbcd14690
commit
bc7e1be70c
5 changed files with 8 additions and 12 deletions
|
@ -36,10 +36,6 @@ extern int ath9k_modparam_nohwcrypt;
|
||||||
extern int led_blink;
|
extern int led_blink;
|
||||||
extern bool is_ath9k_unloaded;
|
extern bool is_ath9k_unloaded;
|
||||||
|
|
||||||
struct ath_config {
|
|
||||||
u16 txpowlimit;
|
|
||||||
};
|
|
||||||
|
|
||||||
/*************************/
|
/*************************/
|
||||||
/* Descriptor Management */
|
/* Descriptor Management */
|
||||||
/*************************/
|
/*************************/
|
||||||
|
@ -328,6 +324,7 @@ struct ath_rx {
|
||||||
struct ath_chanctx {
|
struct ath_chanctx {
|
||||||
struct cfg80211_chan_def chandef;
|
struct cfg80211_chan_def chandef;
|
||||||
struct list_head vifs;
|
struct list_head vifs;
|
||||||
|
u16 txpower;
|
||||||
bool offchannel;
|
bool offchannel;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -753,7 +750,6 @@ struct ath_softc {
|
||||||
short nvifs;
|
short nvifs;
|
||||||
unsigned long ps_usecount;
|
unsigned long ps_usecount;
|
||||||
|
|
||||||
struct ath_config config;
|
|
||||||
struct ath_rx rx;
|
struct ath_rx rx;
|
||||||
struct ath_tx tx;
|
struct ath_tx tx;
|
||||||
struct ath_beacon beacon;
|
struct ath_beacon beacon;
|
||||||
|
|
|
@ -118,6 +118,7 @@ void ath_chanctx_init(struct ath_softc *sc)
|
||||||
ctx = &sc->chanctx[i];
|
ctx = &sc->chanctx[i];
|
||||||
cfg80211_chandef_create(&ctx->chandef, chan, NL80211_CHAN_HT20);
|
cfg80211_chandef_create(&ctx->chandef, chan, NL80211_CHAN_HT20);
|
||||||
INIT_LIST_HEAD(&ctx->vifs);
|
INIT_LIST_HEAD(&ctx->vifs);
|
||||||
|
ctx->txpower = ATH_TXPOWER_MAX;
|
||||||
}
|
}
|
||||||
sc->cur_chan = &sc->chanctx[0];
|
sc->cur_chan = &sc->chanctx[0];
|
||||||
}
|
}
|
||||||
|
|
|
@ -169,9 +169,9 @@ static void ath9k_reg_notifier(struct wiphy *wiphy,
|
||||||
|
|
||||||
/* Set tx power */
|
/* Set tx power */
|
||||||
if (ah->curchan) {
|
if (ah->curchan) {
|
||||||
sc->config.txpowlimit = 2 * ah->curchan->chan->max_power;
|
sc->cur_chan->txpower = 2 * ah->curchan->chan->max_power;
|
||||||
ath9k_ps_wakeup(sc);
|
ath9k_ps_wakeup(sc);
|
||||||
ath9k_hw_set_txpowerlimit(ah, sc->config.txpowlimit, false);
|
ath9k_hw_set_txpowerlimit(ah, sc->cur_chan->txpower, false);
|
||||||
sc->curtxpow = ath9k_hw_regulatory(ah)->power_limit;
|
sc->curtxpow = ath9k_hw_regulatory(ah)->power_limit;
|
||||||
/* synchronize DFS detector if regulatory domain changed */
|
/* synchronize DFS detector if regulatory domain changed */
|
||||||
if (sc->dfs_detector != NULL)
|
if (sc->dfs_detector != NULL)
|
||||||
|
@ -335,7 +335,6 @@ static void ath9k_init_misc(struct ath_softc *sc)
|
||||||
setup_timer(&common->ani.timer, ath_ani_calibrate, (unsigned long)sc);
|
setup_timer(&common->ani.timer, ath_ani_calibrate, (unsigned long)sc);
|
||||||
|
|
||||||
common->last_rssi = ATH_RSSI_DUMMY_MARKER;
|
common->last_rssi = ATH_RSSI_DUMMY_MARKER;
|
||||||
sc->config.txpowlimit = ATH_TXPOWER_MAX;
|
|
||||||
memcpy(common->bssidmask, ath_bcast_mac, ETH_ALEN);
|
memcpy(common->bssidmask, ath_bcast_mac, ETH_ALEN);
|
||||||
sc->beacon.slottime = ATH9K_SLOT_TIME_9;
|
sc->beacon.slottime = ATH9K_SLOT_TIME_9;
|
||||||
|
|
||||||
|
|
|
@ -227,7 +227,7 @@ static bool ath_complete_reset(struct ath_softc *sc, bool start)
|
||||||
}
|
}
|
||||||
|
|
||||||
ath9k_cmn_update_txpow(ah, sc->curtxpow,
|
ath9k_cmn_update_txpow(ah, sc->curtxpow,
|
||||||
sc->config.txpowlimit, &sc->curtxpow);
|
sc->cur_chan->txpower, &sc->curtxpow);
|
||||||
|
|
||||||
clear_bit(ATH_OP_HW_RESET, &common->op_flags);
|
clear_bit(ATH_OP_HW_RESET, &common->op_flags);
|
||||||
ath9k_hw_set_interrupts(ah);
|
ath9k_hw_set_interrupts(ah);
|
||||||
|
@ -1315,9 +1315,9 @@ static int ath9k_config(struct ieee80211_hw *hw, u32 changed)
|
||||||
|
|
||||||
if (changed & IEEE80211_CONF_CHANGE_POWER) {
|
if (changed & IEEE80211_CONF_CHANGE_POWER) {
|
||||||
ath_dbg(common, CONFIG, "Set power: %d\n", conf->power_level);
|
ath_dbg(common, CONFIG, "Set power: %d\n", conf->power_level);
|
||||||
sc->config.txpowlimit = 2 * conf->power_level;
|
sc->cur_chan->txpower = 2 * conf->power_level;
|
||||||
ath9k_cmn_update_txpow(ah, sc->curtxpow,
|
ath9k_cmn_update_txpow(ah, sc->curtxpow,
|
||||||
sc->config.txpowlimit, &sc->curtxpow);
|
sc->cur_chan->txpower, &sc->curtxpow);
|
||||||
}
|
}
|
||||||
|
|
||||||
mutex_unlock(&sc->mutex);
|
mutex_unlock(&sc->mutex);
|
||||||
|
|
|
@ -720,7 +720,7 @@ void ath9k_mci_set_txpower(struct ath_softc *sc, bool setchannel,
|
||||||
mci_hw->concur_tx = concur_tx;
|
mci_hw->concur_tx = concur_tx;
|
||||||
|
|
||||||
if (old_concur_tx != mci_hw->concur_tx)
|
if (old_concur_tx != mci_hw->concur_tx)
|
||||||
ath9k_hw_set_txpowerlimit(ah, sc->config.txpowlimit, false);
|
ath9k_hw_set_txpowerlimit(ah, sc->cur_chan->txpower, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ath9k_mci_stomp_audio(struct ath_softc *sc)
|
static void ath9k_mci_stomp_audio(struct ath_softc *sc)
|
||||||
|
|
Loading…
Add table
Reference in a new issue