mirror of
https://github.com/Telecominfraproject/wlan-ap.git
synced 2025-12-19 02:11:28 +00:00
48 lines
1.6 KiB
Diff
48 lines
1.6 KiB
Diff
--- a/src/drivers/driver_nl80211_event.c
|
|
+++ b/src/drivers/driver_nl80211_event.c
|
|
@@ -1273,12 +1273,14 @@ static void nl80211_cqm_event(struct wpa
|
|
[NL80211_ATTR_CQM_TXE_PKTS] = { .type = NLA_U32 },
|
|
[NL80211_ATTR_CQM_TXE_INTVL] = { .type = NLA_U32 },
|
|
[NL80211_ATTR_CQM_BEACON_LOSS_EVENT] = { .type = NLA_FLAG },
|
|
+ [NL80211_ATTR_CQM_RSSI_LEVEL] = { .type = NLA_U32 },
|
|
};
|
|
struct nlattr *cqm[NL80211_ATTR_CQM_MAX + 1];
|
|
enum nl80211_cqm_rssi_threshold_event event;
|
|
union wpa_event_data ed;
|
|
struct wpa_signal_info sig;
|
|
- int res;
|
|
+ int res, rssi_level;
|
|
+ u8 *addr = NULL;
|
|
|
|
if (tb[NL80211_ATTR_CQM] == NULL ||
|
|
nla_parse_nested(cqm, NL80211_ATTR_CQM_MAX, tb[NL80211_ATTR_CQM],
|
|
@@ -1329,11 +1331,28 @@ static void nl80211_cqm_event(struct wpa
|
|
}
|
|
event = nla_get_u32(cqm[NL80211_ATTR_CQM_RSSI_THRESHOLD_EVENT]);
|
|
|
|
+ if (tb[NL80211_ATTR_MAC])
|
|
+ addr = nla_data(tb[NL80211_ATTR_MAC]);
|
|
+
|
|
+ rssi_level = (s32) nla_get_u32(cqm[NL80211_ATTR_CQM_RSSI_LEVEL]);
|
|
+
|
|
if (event == NL80211_CQM_RSSI_THRESHOLD_EVENT_HIGH) {
|
|
+ if (addr) {
|
|
+ wpa_msg(drv->ctx, MSG_INFO, "nl80211: CQM RSSI HIGH "
|
|
+ "event for "MACSTR " RSSI :%d", MAC2STR(addr),
|
|
+ rssi_level);
|
|
+ return;
|
|
+ }
|
|
wpa_printf(MSG_DEBUG, "nl80211: Connection quality monitor "
|
|
"event: RSSI high");
|
|
ed.signal_change.above_threshold = 1;
|
|
} else if (event == NL80211_CQM_RSSI_THRESHOLD_EVENT_LOW) {
|
|
+ if (addr) {
|
|
+ wpa_msg(drv->ctx, MSG_INFO, "nl80211: CQM RSSI LOW "
|
|
+ "event for "MACSTR " RSSI :%d", MAC2STR(addr),
|
|
+ rssi_level);
|
|
+ return;
|
|
+ }
|
|
wpa_printf(MSG_DEBUG, "nl80211: Connection quality monitor "
|
|
"event: RSSI low");
|
|
ed.signal_change.above_threshold = 0;
|