void usteer_sta_disconnected(struct sta_info *si)
{
si->connected = STA_NOT_CONNECTED;
+ si->kick_time = 0;
+ si->connected_since = 0;
usteer_sta_info_update_timeout(si, config.local_sta_timeout);
}
if (si->connected == STA_CONNECTED && si->signal != NO_SIGNAL && !avg)
signal = NO_SIGNAL;
- if (signal != NO_SIGNAL)
+ if (signal != NO_SIGNAL) {
si->signal = signal;
+ usteer_band_steering_sta_update(si);
+ }
si->seen = current_time;
}
bool
-usteer_sta_supports_beacon_measurement_mode(struct sta *sta, enum usteer_beacon_measurement_mode mode)
+usteer_sta_supports_beacon_measurement_mode(struct sta_info *si, enum usteer_beacon_measurement_mode mode)
{
switch (mode) {
case BEACON_MEASUREMENT_PASSIVE:
- return sta->rrm & (1 << 4);
+ return si->rrm & (1 << 4);
case BEACON_MEASUREMENT_ACTIVE:
- return sta->rrm & (1 << 5);
+ return si->rrm & (1 << 5);
case BEACON_MEASUREMENT_TABLE:
- return sta->rrm & (1 << 6);
+ return si->rrm & (1 << 6);
}
return false;
}
+bool
+usteer_sta_supports_link_measurement(struct sta_info *si)
+{
+ return si->rrm & (1 << 0);
+}
+
static void __usteer_init usteer_sta_init(void)
{
usteer_timeout_init(&tq);