diff mbox

nl80211: put current TX power in interface info

Message ID 1441054778-22499-1-git-send-email-zajec5@gmail.com (mailing list archive)
State Accepted
Delegated to: Johannes Berg
Headers show

Commit Message

Rafał Miłecki Aug. 31, 2015, 8:59 p.m. UTC
Many drivers implement reading current TX power (using either cfg80211
or ieee80211 op) but userspace can't get it using nl80211. Right now the
only way to access it is to call some wext ioctl.
Let's put TX power in interface info reply (callback is wdev specific)
just like we do with current channel.
To be consistent (e.g. NL80211_CMD_SET_WIPHY) let's use mBm as na unit.

Signed-off-by: Rafa? Mi?ecki <zajec5@gmail.com>
---
 net/wireless/nl80211.c | 11 +++++++++++
 1 file changed, 11 insertions(+)

Comments

Arend van Spriel Sept. 1, 2015, 7:48 a.m. UTC | #1
On 08/31/2015 10:59 PM, Rafa? Mi?ecki wrote:
> Many drivers implement reading current TX power (using either cfg80211
> or ieee80211 op) but userspace can't get it using nl80211. Right now the
> only way to access it is to call some wext ioctl.
> Let's put TX power in interface info reply (callback is wdev specific)
> just like we do with current channel.
> To be consistent (e.g. NL80211_CMD_SET_WIPHY) let's use mBm as na unit.

An iw patch would be nice as well ;-)

Regards,
Arend

> Signed-off-by: Rafa? Mi?ecki <zajec5@gmail.com>
> ---
>   net/wireless/nl80211.c | 11 +++++++++++
>   1 file changed, 11 insertions(+)
>
> diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
> index 5d8748b..a5d4e6f 100644
> --- a/net/wireless/nl80211.c
> +++ b/net/wireless/nl80211.c
> @@ -2403,6 +2403,17 @@ static int nl80211_send_iface(struct sk_buff *msg, u32 portid, u32 seq, int flag
>   		}
>   	}
>
> +	if (rdev->ops->get_tx_power) {
> +		int dbm, ret;
> +
> +		ret = rdev_get_tx_power(rdev, wdev, &dbm);
> +		if (ret == 0) {
> +			if (nla_put_u32(msg, NL80211_ATTR_WIPHY_TX_POWER_LEVEL,
> +					DBM_TO_MBM(dbm)))
> +				goto nla_put_failure;
> +		}
> +	}
> +
>   	if (wdev->ssid_len) {
>   		if (nla_put(msg, NL80211_ATTR_SSID, wdev->ssid_len, wdev->ssid))
>   			goto nla_put_failure;
>

--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
index 5d8748b..a5d4e6f 100644
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
@@ -2403,6 +2403,17 @@  static int nl80211_send_iface(struct sk_buff *msg, u32 portid, u32 seq, int flag
 		}
 	}
 
+	if (rdev->ops->get_tx_power) {
+		int dbm, ret;
+
+		ret = rdev_get_tx_power(rdev, wdev, &dbm);
+		if (ret == 0) {
+			if (nla_put_u32(msg, NL80211_ATTR_WIPHY_TX_POWER_LEVEL,
+					DBM_TO_MBM(dbm)))
+				goto nla_put_failure;
+		}
+	}
+
 	if (wdev->ssid_len) {
 		if (nla_put(msg, NL80211_ATTR_SSID, wdev->ssid_len, wdev->ssid))
 			goto nla_put_failure;