hostapd: Add last_ack_rssi into ctrl iface cmd STA
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>
This commit is contained in:
parent
2df73f52e8
commit
72123a84cb
3 changed files with 15 additions and 2 deletions
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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,
|
||||
|
|
Loading…
Reference in a new issue