diff mbox

Allow the radio to report 0 dbm txpower without timing out

Message ID 1472531450-19115-1-git-send-email-eric.bentley@lairdtech.com (mailing list archive)
State Changes Requested
Delegated to: Kalle Valo
Headers show

Commit Message

Eric Bentley Aug. 30, 2016, 4:30 a.m. UTC
The ath6kl driver attempts to get the txpower from the radio by first
clearing the existing stored value and then watching the value to become
non-zero. However, this value is in dbm and 0 is a valid value.

APs allow setting client power to values from -127..127. However, The radio
is not capable of setting values less then 0 and so will report txpower
as 0 for both negative and 0 client power.

The 6004 defaults to 63dbm which is then limited by regulatory and
hardware limits with max of 18dbm (6003 max is 16dbm), therefore we can
use values larger then this to be able to determine when the value has
been updated.

Set the value to a nonsensical value (255) and wait for it to change.
---
 drivers/net/wireless/ath/ath6kl/cfg80211.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

Kalle Valo Aug. 30, 2016, 4:42 a.m. UTC | #1
Eric Bentley <eric.bentley@lairdtech.com> writes:

> The ath6kl driver attempts to get the txpower from the radio by first
> clearing the existing stored value and then watching the value to become
> non-zero. However, this value is in dbm and 0 is a valid value.
>
> APs allow setting client power to values from -127..127. However, The radio
> is not capable of setting values less then 0 and so will report txpower
> as 0 for both negative and 0 client power.
>
> The 6004 defaults to 63dbm which is then limited by regulatory and
> hardware limits with max of 18dbm (6003 max is 16dbm), therefore we can
> use values larger then this to be able to determine when the value has
> been updated.
>
> Set the value to a nonsensical value (255) and wait for it to change.

Please prefix the title with "ath6kl: ". Also Signed-off-by is missing.

In the title you mention a bit about the bug you are fixing, but it
would be useful to describe more about it in the commit log. From user's
point of view, how did ath6kl behave before your patch and how will it
change after your patch?
diff mbox

Patch

diff --git a/drivers/net/wireless/ath/ath6kl/cfg80211.c b/drivers/net/wireless/ath/ath6kl/cfg80211.c
index 72e2ec6..b7fe0af 100644
--- a/drivers/net/wireless/ath/ath6kl/cfg80211.c
+++ b/drivers/net/wireless/ath/ath6kl/cfg80211.c
@@ -1449,14 +1449,14 @@  static int ath6kl_cfg80211_get_txpower(struct wiphy *wiphy,
 		return -EIO;
 
 	if (test_bit(CONNECTED, &vif->flags)) {
-		ar->tx_pwr = 0;
+		ar->tx_pwr = 255;
 
 		if (ath6kl_wmi_get_tx_pwr_cmd(ar->wmi, vif->fw_vif_idx) != 0) {
 			ath6kl_err("ath6kl_wmi_get_tx_pwr_cmd failed\n");
 			return -EIO;
 		}
 
-		wait_event_interruptible_timeout(ar->event_wq, ar->tx_pwr != 0,
+		wait_event_interruptible_timeout(ar->event_wq, ar->tx_pwr != 255,
 						 5 * HZ);
 
 		if (signal_pending(current)) {