[source] ath9k: fix power limits on init

LEDE Commits lede-commits at lists.infradead.org
Tue May 2 14:17:31 PDT 2017


jow pushed a commit to source.git, branch lede-17.01:
https://git.lede-project.org/5ac51ada60cfed7a045355d3a4a6945df4ccd66c

commit 5ac51ada60cfed7a045355d3a4a6945df4ccd66c
Author: Felix Fietkau <nbd at nbd.name>
AuthorDate: Wed Mar 22 20:46:14 2017 +0100

    ath9k: fix power limits on init
    
    The tx power applied by set_txpower is limited by the CTL (conformance
    test limit) entries in the EEPROM. These can change based on the user
    configured regulatory domain.
    Depending on the EEPROM data this can cause the tx power to become too
    limited, if the original regdomain CTLs impose lowr limits than the CTLs
    of the user configured regdomain.
    
    To fix this issue, set the initial channel limits without any CTL
    restrictions and only apply the CTL at run time when setting the channel
    and the real tx power.
    
    Signed-off-by: Felix Fietkau <nbd at nbd.name>
---
 ...k_hw-fix-channel-maximum-power-level-test.patch | 47 ++++++++++++++++++++++
 1 file changed, 47 insertions(+)

diff --git a/package/kernel/mac80211/patches/324-ath9k_hw-fix-channel-maximum-power-level-test.patch b/package/kernel/mac80211/patches/324-ath9k_hw-fix-channel-maximum-power-level-test.patch
new file mode 100644
index 0000000..67cbe92
--- /dev/null
+++ b/package/kernel/mac80211/patches/324-ath9k_hw-fix-channel-maximum-power-level-test.patch
@@ -0,0 +1,47 @@
+From: Felix Fietkau <nbd at nbd.name>
+Date: Wed, 22 Mar 2017 20:37:04 +0100
+Subject: [PATCH] ath9k_hw: fix channel maximum power level test
+
+The tx power applied by set_txpower is limited by the CTL (conformance
+test limit) entries in the EEPROM. These can change based on the user
+configured regulatory domain.
+Depending on the EEPROM data this can cause the tx power to become too
+limited, if the original regdomain CTLs impose lowr limits than the CTLs
+of the user configured regdomain.
+
+To fix this issue, set the initial channel limits without any CTL
+restrictions and only apply the CTL at run time when setting the channel
+and the real tx power.
+
+Cc: stable at vger.kernel.org
+Signed-off-by: Felix Fietkau <nbd at nbd.name>
+---
+
+--- a/drivers/net/wireless/ath/ath9k/hw.c
++++ b/drivers/net/wireless/ath/ath9k/hw.c
+@@ -2937,10 +2937,14 @@ void ath9k_hw_apply_txpower(struct ath_h
+ 	struct ieee80211_channel *channel;
+ 	int chan_pwr, new_pwr, max_gain;
+ 	int ant_gain, ant_reduction = 0;
++	u16 ctl = NO_CTL;
+ 
+ 	if (!chan)
+ 		return;
+ 
++	if (!test)
++		ctl = ath9k_regd_get_ctl(reg, chan);
++
+ 	channel = chan->chan;
+ 	chan_pwr = min_t(int, channel->max_power * 2, MAX_RATE_POWER);
+ 	new_pwr = min_t(int, chan_pwr, reg->power_limit);
+@@ -2950,9 +2954,7 @@ void ath9k_hw_apply_txpower(struct ath_h
+ 	if (ant_gain > max_gain)
+ 		ant_reduction = ant_gain - max_gain;
+ 
+-	ah->eep_ops->set_txpower(ah, chan,
+-				 ath9k_regd_get_ctl(reg, chan),
+-				 ant_reduction, new_pwr, test);
++	ah->eep_ops->set_txpower(ah, chan, ctl, ant_reduction, new_pwr, test);
+ }
+ 
+ void ath9k_hw_set_txpowerlimit(struct ath_hw *ah, u32 limit, bool test)



More information about the lede-commits mailing list