]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
hostapd: Add last_ack_rssi into ctrl iface cmd STA
authorBhagavathi Perumal S <bperumal@codeaurora.org>
Tue, 6 Mar 2018 09:00:11 +0000 (14:30 +0530)
committerJouni Malinen <j@w1.fi>
Mon, 19 Mar 2018 17:23:26 +0000 (19:23 +0200)
This allows external application to get last ACK signal strength of the
last transmitted frame if the driver makes this information
(NL80211_STA_INFO_ACK_SIGNAL) available.

Signed-off-by: Bhagavathi Perumal S <bperumal@codeaurora.org>
Signed-off-by: Venkateswara Naralasetty <vnaralas@codeaurora.org>
src/ap/ctrl_iface_ap.c
src/drivers/driver.h
src/drivers/driver_nl80211.c

index 883b005b27c5c789a9c1cd72f6c7670d8ac9f64f..f230bd41932563ffb10a0d4cadfc0fb3e5fa0f86 100644 (file)
@@ -153,6 +153,13 @@ static int hostapd_get_sta_tx_rx(struct hostapd_data *hapd,
                                                   supported_mcs_set);
        }
 
+       if (data.flags & STA_DRV_DATA_LAST_ACK_RSSI) {
+               ret = os_snprintf(buf + len, buflen - len,
+                                 "last_ack_signal=%d\n", data.last_ack_rssi);
+               if (!os_snprintf_error(buflen - len, ret))
+                       len += ret;
+       }
+
        return len;
 }
 
index 92a58b2f28afc06f299b84d8b56aca67ec892778..01204bed2bcfcd4742edf8572fec01d280f518df 100644 (file)
@@ -1694,6 +1694,7 @@ struct hostapd_data;
 #define STA_DRV_DATA_RX_VHT_NSS BIT(5)
 #define STA_DRV_DATA_TX_SHORT_GI BIT(6)
 #define STA_DRV_DATA_RX_SHORT_GI BIT(7)
+#define STA_DRV_DATA_LAST_ACK_RSSI BIT(8)
 
 struct hostap_sta_driver_data {
        unsigned long rx_packets, tx_packets;
@@ -1706,8 +1707,7 @@ struct hostap_sta_driver_data {
        unsigned long num_ps_buf_frames;
        unsigned long tx_retry_failed;
        unsigned long tx_retry_count;
-       int last_rssi;
-       int last_ack_rssi;
+       s8 last_ack_rssi;
        s8 signal;
        u8 rx_vhtmcs;
        u8 tx_vhtmcs;
index 329be021b8c76e300a715a46282ab54600596770..f7421c4bff735af6a913b2f59f19f2f765fc615b 100644 (file)
@@ -6049,6 +6049,7 @@ static int get_sta_handler(struct nl_msg *msg, void *arg)
                [NL80211_STA_INFO_RX_BYTES64] = { .type = NLA_U64 },
                [NL80211_STA_INFO_TX_BYTES64] = { .type = NLA_U64 },
                [NL80211_STA_INFO_SIGNAL] = { .type = NLA_U8 },
+               [NL80211_STA_INFO_ACK_SIGNAL] = { .type = NLA_U8 },
        };
        struct nlattr *rate[NL80211_RATE_INFO_MAX + 1];
        static struct nla_policy rate_policy[NL80211_RATE_INFO_MAX + 1] = {
@@ -6111,6 +6112,11 @@ static int get_sta_handler(struct nl_msg *msg, void *arg)
                        nla_get_u32(stats[NL80211_STA_INFO_TX_FAILED]);
        if (stats[NL80211_STA_INFO_SIGNAL])
                data->signal = nla_get_u8(stats[NL80211_STA_INFO_SIGNAL]);
+       if (stats[NL80211_STA_INFO_ACK_SIGNAL]) {
+               data->last_ack_rssi =
+                       nla_get_u8(stats[NL80211_STA_INFO_ACK_SIGNAL]);
+               data->flags |= STA_DRV_DATA_LAST_ACK_RSSI;
+       }
 
        if (stats[NL80211_STA_INFO_TX_BITRATE] &&
            nla_parse_nested(rate, NL80211_RATE_INFO_MAX,