wlan-ap-Telecominfraproject/feeds/wifi-ax/hostapd/patches/b00-012-hostapd-handle-rssi-cross-event.patch
John Crispin 04f6078da6 ipq807x: update AX support
Signed-off-by: John Crispin <john@phrozen.org>
2020-10-04 14:28:57 +02:00

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;