]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
hostapd: Add Min/Max Transmit Power Capability into STA command
authorbhagavathi perumal s <bperumal@qti.qualcomm.com>
Fri, 6 Oct 2017 15:03:25 +0000 (20:33 +0530)
committerJouni Malinen <j@w1.fi>
Mon, 30 Oct 2017 22:22:58 +0000 (00:22 +0200)
This provides access to the Minimum/Maximum Transmit Power Capabilitie
fileds (the nominal minimum/maximum transmit power with which the STA
is capable of transmitting in the current channel; signed integer in
units of decibels relative to 1 mW).

Signed-off-by: bhagavathi perumal s <bperumal@qti.qualcomm.com>
src/ap/ctrl_iface_ap.c
src/ap/ieee802_11.c
src/ap/sta_info.h
src/common/ieee802_11_common.c
src/common/ieee802_11_common.h

index 1a2b4e587727194c534814b13333c0f050721983..80a86312fced90af9c095326f5915097c347eb2c 100644 (file)
@@ -245,6 +245,15 @@ static int hostapd_ctrl_iface_sta_mib(struct hostapd_data *hapd,
                len += os_snprintf(buf + len, buflen - len, "\n");
        }
 
+       if (sta->power_capab) {
+               ret = os_snprintf(buf + len, buflen - len,
+                                 "min_txpower=%d\n"
+                                 "max_txpower=%d\n",
+                                 sta->min_tx_power, sta->max_tx_power);
+               if (!os_snprintf_error(buflen - len, ret))
+                       len += ret;
+       }
+
        return len;
 }
 
index 72ff50f03529195bc0529d605b219e15ded024a5..dbecbfa072a3ab319df5a73a430bfb2b2ecd1c67 100644 (file)
@@ -2599,6 +2599,14 @@ static u16 check_assoc_ies(struct hostapd_data *hapd, struct sta_info *sta,
                os_memcpy(sta->rrm_enabled_capa, elems.rrm_enabled,
                          sizeof(sta->rrm_enabled_capa));
 
+       if (elems.power_capab) {
+               sta->min_tx_power = elems.power_capab[0];
+               sta->max_tx_power = elems.power_capab[1];
+               sta->power_capab = 1;
+       } else {
+               sta->power_capab = 0;
+       }
+
        return WLAN_STATUS_SUCCESS;
 }
 
index 3809766a6339569ca08a727679456a33825a8eaa..eeb721c5b06966b71fdd8e813effb3fec582acf1 100644 (file)
@@ -113,6 +113,7 @@ struct sta_info {
        unsigned int ecsa_supported:1;
        unsigned int added_unassoc:1;
        unsigned int pending_wds_enable:1;
+       unsigned int power_capab:1;
 
        u16 auth_alg;
 
@@ -214,6 +215,9 @@ struct sta_info {
 
        u8 rrm_enabled_capa[5];
 
+       s8 min_tx_power;
+       s8 max_tx_power;
+
 #ifdef CONFIG_TAXONOMY
        struct wpabuf *probe_ie_taxonomy;
        struct wpabuf *assoc_ie_taxonomy;
index 120d4e883b17ca6de1ac940b29593a5ee4e494b3..f04e77fa5561c8b3f9a59745aa042b10a961deb7 100644 (file)
@@ -352,6 +352,10 @@ ParseRes ieee802_11_parse_elems(const u8 *start, size_t len,
                        elems->rsn_ie_len = elen;
                        break;
                case WLAN_EID_PWR_CAPABILITY:
+                       if (elen < 2)
+                               break;
+                       elems->power_capab = pos;
+                       elems->power_capab_len = elen;
                        break;
                case WLAN_EID_SUPPORTED_CHANNELS:
                        elems->supp_channels = pos;
index 92761585151d042dc93204d577f6004e08e888fe..89ca92b7016bfb5c42e9cb444a67f66570443b35 100644 (file)
@@ -79,6 +79,7 @@ struct ieee802_11_elems {
        const u8 *fils_pk;
        const u8 *fils_nonce;
        const u8 *owe_dh;
+       const u8 *power_capab;
 
        u8 ssid_len;
        u8 supp_rates_len;
@@ -122,6 +123,7 @@ struct ieee802_11_elems {
        u8 fils_wrapped_data_len;
        u8 fils_pk_len;
        u8 owe_dh_len;
+       u8 power_capab_len;
 
        struct mb_ies_info mb_ies;
 };