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);
{
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);
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);