All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] ath9k_hw: fix channel maximum power level test
@ 2017-03-22 19:42 Felix Fietkau
  2017-04-05  8:33 ` Kalle Valo
  2017-04-08  5:12 ` [PATCH] " Weedy
  0 siblings, 2 replies; 3+ messages in thread
From: Felix Fietkau @ 2017-03-22 19:42 UTC (permalink / raw)
  To: linux-wireless; +Cc: kvalo, stable

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@vger.kernel.org
Signed-off-by: Felix Fietkau <nbd@nbd.name>
---
 drivers/net/wireless/ath/ath9k/hw.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/drivers/net/wireless/ath/ath9k/hw.c b/drivers/net/wireless/ath/ath9k/hw.c
index 17ca60482b5f..3346cbf63b9c 100644
--- 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_hw *ah, struct ath9k_channel *chan,
 	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_hw *ah, struct ath9k_channel *chan,
 	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)
-- 
2.11.0

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: ath9k_hw: fix channel maximum power level test
  2017-03-22 19:42 [PATCH] ath9k_hw: fix channel maximum power level test Felix Fietkau
@ 2017-04-05  8:33 ` Kalle Valo
  2017-04-08  5:12 ` [PATCH] " Weedy
  1 sibling, 0 replies; 3+ messages in thread
From: Kalle Valo @ 2017-04-05  8:33 UTC (permalink / raw)
  To: Felix Fietkau; +Cc: linux-wireless, kvalo, stable

Felix Fietkau <nbd@nbd.name> wrote:
> 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@vger.kernel.org
> Signed-off-by: Felix Fietkau <nbd@nbd.name>

Failed to apply:

error: patch failed: drivers/net/wireless/ath/ath9k/hw.c:2937
error: drivers/net/wireless/ath/ath9k/hw.c: patch does not apply
stg import: Diff does not apply cleanly

Patch set to Changes Requested.

-- 
https://patchwork.kernel.org/patch/9639921/

https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] ath9k_hw: fix channel maximum power level test
  2017-03-22 19:42 [PATCH] ath9k_hw: fix channel maximum power level test Felix Fietkau
  2017-04-05  8:33 ` Kalle Valo
@ 2017-04-08  5:12 ` Weedy
  1 sibling, 0 replies; 3+ messages in thread
From: Weedy @ 2017-04-08  5:12 UTC (permalink / raw)
  To: Felix Fietkau; +Cc: linux-wireless, kvalo, stable

On 22 March 2017 at 15:42, Felix Fietkau <nbd@nbd.name> wrote:
> 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.

When merged, should this this fix this annoyance? Or is TP-Link just
shipping junk cal data?

root@LEDE:~# iw phy
Wiphy phy1
...
        Frequencies:
            * 5180 MHz [36] (21.0 dBm)
            * 5200 MHz [40] (21.0 dBm)
            * 5220 MHz [44] (21.0 dBm)
            * 5240 MHz [48] (21.0 dBm)
            * 5260 MHz [52] (21.0 dBm) (radar detection)
            * 5280 MHz [56] (21.0 dBm) (radar detection)
            * 5300 MHz [60] (21.0 dBm) (radar detection)
            * 5320 MHz [64] (21.0 dBm) (radar detection)
            * 5500 MHz [100] (21.0 dBm) (radar detection)
            * 5520 MHz [104] (21.0 dBm) (radar detection)
            * 5540 MHz [108] (21.0 dBm) (radar detection)
            * 5560 MHz [112] (21.0 dBm) (radar detection)
            * 5580 MHz [116] (21.0 dBm) (radar detection)
            * 5600 MHz [120] (disabled)
            * 5620 MHz [124] (disabled)
            * 5640 MHz [128] (disabled)
            * 5660 MHz [132] (21.0 dBm) (radar detection)
            * 5680 MHz [136] (21.0 dBm) (radar detection)
            * 5700 MHz [140] (21.0 dBm) (radar detection)
            * 5745 MHz [149] (21.0 dBm)
            * 5765 MHz [153] (21.0 dBm)
            * 5785 MHz [157] (21.0 dBm)
            * 5805 MHz [161] (21.0 dBm)
            * 5825 MHz [165] (21.0 dBm)
root@LEDE:~# iw reg get
global
country CA: DFS-FCC
    (2402 - 2472 @ 40), (N/A, 30), (N/A)
    (5150 - 5250 @ 80), (N/A, 23), (N/A), AUTO-BW
    (5250 - 5350 @ 80), (N/A, 24), (0 ms), DFS, AUTO-BW
    (5470 - 5600 @ 80), (N/A, 24), (0 ms), DFS
    (5650 - 5730 @ 80), (N/A, 24), (0 ms), DFS
    (5735 - 5835 @ 80), (N/A, 30), (N/A)

phy#1
country US: DFS-FCC
    (2402 - 2472 @ 40), (N/A, 30), (N/A)
    (5170 - 5250 @ 80), (N/A, 23), (N/A), AUTO-BW
    (5250 - 5330 @ 80), (N/A, 23), (0 ms), DFS, AUTO-BW
    (5490 - 5730 @ 160), (N/A, 23), (0 ms), DFS
    (5735 - 5835 @ 80), (N/A, 30), (N/A)
    (57240 - 63720 @ 2160), (N/A, 40), (N/A)

root@LEDE:~# iw phy phy1 set txpower fixed 1500
root@LEDE:~# iwinfo
wlan1     ESSID: nah
          Access Point: still nah
          Mode: Master  Channel: 48 (5.240 GHz)
          Tx-Power: 15 dBm  Link Quality: 44/70
          Signal: -66 dBm  Noise: -90 dBm
          Bit Rate: 147.5 MBit/s
          Encryption: WPA2 PSK (CCMP)
          Type: nl80211  HW Mode(s): 802.11an
          Hardware: 168C:0033 168C:A120 [Atheros AR9580]
          TX power offset: none
          Frequency offset: none
          Supports VAPs: yes  PHY name: phy1

root@LEDE:~# iw phy phy1 set txpower fixed 2000
root@LEDE:~# iwinfo
wlan1     ESSID: nah
          Access Point: still nah
          Mode: Master  Channel: 48 (5.240 GHz)
          Tx-Power: 17 dBm  Link Quality: 45/70
          Signal: -65 dBm  Noise: -90 dBm
          Bit Rate: 177.5 MBit/s
          Encryption: WPA2 PSK (CCMP)
          Type: nl80211  HW Mode(s): 802.11an
          Hardware: 168C:0033 168C:A120 [Atheros AR9580]
          TX power offset: none
          Frequency offset: none
          Supports VAPs: yes  PHY name: phy1

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2017-04-08  5:12 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-03-22 19:42 [PATCH] ath9k_hw: fix channel maximum power level test Felix Fietkau
2017-04-05  8:33 ` Kalle Valo
2017-04-08  5:12 ` [PATCH] " Weedy

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.