ubus: don't request measurement from unsupported STAs
Don't request measurements from STAs which do not support the specific measurement mode. Otherwise, hostapd complains in the syslog about unsupported measurement modes. Signed-off-by: David Bauer <mail@david-bauer.net>
This commit is contained in:
15
sta.c
15
sta.c
@@ -202,6 +202,21 @@ usteer_handle_sta_event(struct usteer_node *node, const uint8_t *addr,
|
||||
return ret;
|
||||
}
|
||||
|
||||
bool
|
||||
usteer_sta_supports_beacon_measurement_mode(struct sta *sta, enum usteer_beacon_measurement_mode mode)
|
||||
{
|
||||
switch (mode) {
|
||||
case BEACON_MEASUREMENT_PASSIVE:
|
||||
return sta->rrm & (1 << 4);
|
||||
case BEACON_MEASUREMENT_ACTIVE:
|
||||
return sta->rrm & (1 << 5);
|
||||
case BEACON_MEASUREMENT_TABLE:
|
||||
return sta->rrm & (1 << 6);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
static void __usteer_init usteer_sta_init(void)
|
||||
{
|
||||
usteer_timeout_init(&tq);
|
||||
|
5
ubus.c
5
ubus.c
@@ -547,6 +547,11 @@ int usteer_ubus_trigger_client_scan(struct sta_info *si)
|
||||
{
|
||||
struct usteer_local_node *ln = container_of(si->node, struct usteer_local_node, node);
|
||||
|
||||
if (!usteer_sta_supports_beacon_measurement_mode(si->sta, BEACON_MEASUREMENT_ACTIVE)) {
|
||||
MSG(DEBUG, "STA does not support beacon measurement sta=" MAC_ADDR_FMT "\n", MAC_ADDR_DATA(si->sta->addr));
|
||||
return 0;
|
||||
}
|
||||
|
||||
si->scan_band = !si->scan_band;
|
||||
|
||||
blob_buf_init(&b, 0);
|
||||
|
2
usteer.h
2
usteer.h
@@ -271,6 +271,8 @@ int usteer_ubus_notify_client_disassoc(struct sta_info *si);
|
||||
struct sta *usteer_sta_get(const uint8_t *addr, bool create);
|
||||
struct sta_info *usteer_sta_info_get(struct sta *sta, struct usteer_node *node, bool *create);
|
||||
|
||||
bool usteer_sta_supports_beacon_measurement_mode(struct sta *sta, enum usteer_beacon_measurement_mode mode);
|
||||
|
||||
void usteer_sta_info_update_timeout(struct sta_info *si, int timeout);
|
||||
void usteer_sta_info_update(struct sta_info *si, int signal, bool avg);
|
||||
|
||||
|
Reference in New Issue
Block a user