diff options
Diffstat (limited to 'package/kernel/mac80211/patches/302-ath9k-add-support-for-reporting-tx-power-to-mac80211.patch')
-rw-r--r-- | package/kernel/mac80211/patches/302-ath9k-add-support-for-reporting-tx-power-to-mac80211.patch | 118 |
1 files changed, 0 insertions, 118 deletions
diff --git a/package/kernel/mac80211/patches/302-ath9k-add-support-for-reporting-tx-power-to-mac80211.patch b/package/kernel/mac80211/patches/302-ath9k-add-support-for-reporting-tx-power-to-mac80211.patch deleted file mode 100644 index 8bb41bd34a..0000000000 --- a/package/kernel/mac80211/patches/302-ath9k-add-support-for-reporting-tx-power-to-mac80211.patch +++ /dev/null @@ -1,118 +0,0 @@ -From: Felix Fietkau <nbd@openwrt.org> -Date: Wed, 22 Oct 2014 18:18:04 +0200 -Subject: [PATCH] ath9k: add support for reporting tx power to mac80211 - -Track it per channel context instead of in the softc - -Signed-off-by: Felix Fietkau <nbd@openwrt.org> ---- - ---- a/drivers/net/wireless/ath/ath9k/ath9k.h -+++ b/drivers/net/wireless/ath/ath9k/ath9k.h -@@ -347,6 +347,7 @@ struct ath_chanctx { - - int flush_timeout; - u16 txpower; -+ u16 cur_txpower; - bool offchannel; - bool stopped; - bool active; -@@ -987,7 +988,6 @@ struct ath_softc { - u8 gtt_cnt; - u32 intrstatus; - u16 ps_flags; /* PS_* */ -- u16 curtxpow; - bool ps_enabled; - bool ps_idle; - short nbcnvifs; ---- a/drivers/net/wireless/ath/ath9k/init.c -+++ b/drivers/net/wireless/ath/ath9k/init.c -@@ -172,17 +172,20 @@ static void ath9k_reg_notifier(struct wi - ath_reg_notifier_apply(wiphy, request, reg); - - /* Set tx power */ -- if (ah->curchan) { -- sc->cur_chan->txpower = 2 * ah->curchan->chan->max_power; -- ath9k_ps_wakeup(sc); -- ath9k_hw_set_txpowerlimit(ah, sc->cur_chan->txpower, false); -- sc->curtxpow = ath9k_hw_regulatory(ah)->power_limit; -- /* synchronize DFS detector if regulatory domain changed */ -- if (sc->dfs_detector != NULL) -- sc->dfs_detector->set_dfs_domain(sc->dfs_detector, -- request->dfs_region); -- ath9k_ps_restore(sc); -- } -+ if (!ah->curchan) -+ return; -+ -+ sc->cur_chan->txpower = 2 * ah->curchan->chan->max_power; -+ ath9k_ps_wakeup(sc); -+ ath9k_hw_set_txpowerlimit(ah, sc->cur_chan->txpower, false); -+ ath9k_cmn_update_txpow(ah, sc->cur_chan->cur_txpower, -+ sc->cur_chan->txpower, -+ &sc->cur_chan->cur_txpower); -+ /* synchronize DFS detector if regulatory domain changed */ -+ if (sc->dfs_detector != NULL) -+ sc->dfs_detector->set_dfs_domain(sc->dfs_detector, -+ request->dfs_region); -+ ath9k_ps_restore(sc); - } - - /* ---- a/drivers/net/wireless/ath/ath9k/main.c -+++ b/drivers/net/wireless/ath/ath9k/main.c -@@ -233,8 +233,9 @@ static bool ath_complete_reset(struct at - - ath9k_calculate_summary_state(sc, sc->cur_chan); - ath_startrecv(sc); -- ath9k_cmn_update_txpow(ah, sc->curtxpow, -- sc->cur_chan->txpower, &sc->curtxpow); -+ ath9k_cmn_update_txpow(ah, sc->cur_chan->cur_txpower, -+ sc->cur_chan->txpower, -+ &sc->cur_chan->cur_txpower); - clear_bit(ATH_OP_HW_RESET, &common->op_flags); - - if (!sc->cur_chan->offchannel && start) { -@@ -1471,8 +1472,9 @@ static int ath9k_config(struct ieee80211 - if (changed & IEEE80211_CONF_CHANGE_POWER) { - ath_dbg(common, CONFIG, "Set power: %d\n", conf->power_level); - sc->cur_chan->txpower = 2 * conf->power_level; -- ath9k_cmn_update_txpow(ah, sc->curtxpow, -- sc->cur_chan->txpower, &sc->curtxpow); -+ ath9k_cmn_update_txpow(ah, sc->cur_chan->cur_txpower, -+ sc->cur_chan->txpower, -+ &sc->cur_chan->cur_txpower); - } - - mutex_unlock(&sc->mutex); -@@ -2594,6 +2596,24 @@ void ath9k_fill_chanctx_ops(void) - - #endif - -+static int ath9k_get_txpower(struct ieee80211_hw *hw, struct ieee80211_vif *vif, -+ int *dbm) -+{ -+ struct ath_softc *sc = hw->priv; -+ struct ath_vif *avp = (void *)vif->drv_priv; -+ -+ mutex_lock(&sc->mutex); -+ if (avp->chanctx) -+ *dbm = avp->chanctx->cur_txpower; -+ else -+ *dbm = sc->cur_chan->cur_txpower; -+ mutex_unlock(&sc->mutex); -+ -+ *dbm /= 2; -+ -+ return 0; -+} -+ - struct ieee80211_ops ath9k_ops = { - .tx = ath9k_tx, - .start = ath9k_start, -@@ -2640,4 +2660,5 @@ struct ieee80211_ops ath9k_ops = { - #endif - .sw_scan_start = ath9k_sw_scan_start, - .sw_scan_complete = ath9k_sw_scan_complete, -+ .get_txpower = ath9k_get_txpower, - }; |