c = blobmsg_open_table(buf, usteer_node_name(node));
blobmsg_printf(buf, "bssid", MAC_ADDR_FMT, MAC_ADDR_DATA(node->bssid));
+ blobmsg_add_string(buf, "ssid", node->ssid);
blobmsg_add_u32(buf, "freq", node->freq);
blobmsg_add_u32(buf, "n_assoc", node->n_assoc);
blobmsg_add_u32(buf, "noise", node->noise);
blobmsg_add_u32(&b, "signal", si->signal);
blobmsg_add_u64(&b, "created", si->created);
blobmsg_add_u64(&b, "seen", si->seen);
+ blobmsg_add_u64(&b, "connected_since", si->connected_since);
blobmsg_add_u64(&b, "last_connected", si->last_connected);
t = blobmsg_open_table(&b, "snr-kick");
/* BSS-Transition support */
blobmsg_add_u8(&b, "bss-transition-management", si->bss_transition);
+ /* MBO support */
+ blobmsg_add_u8(&b, "multi-band-operation", si->mbo);
+
/* Measurements */
a = blobmsg_open_array(&b, "measurements");
list_for_each_entry(mr, &si->sta->measurements, sta_list) {
blobmsg_add_string(&b, "node", usteer_node_name(mr->node));
blobmsg_add_u32(&b, "rcpi", mr->rcpi);
blobmsg_add_u32(&b, "rsni", mr->rsni);
+ blobmsg_add_u32(&b, "rssi", usteer_measurement_get_rssi(mr));
blobmsg_add_u64(&b, "timestamp", mr->timestamp);
blobmsg_close_table(&b, t);
}
return ubus_invoke(ubus_ctx, ln->obj_id, "bss_transition_request", b.head, NULL, 0, 100);
}
-int usteer_ubus_notify_client_disassoc(struct sta_info *si)
-{
- struct usteer_local_node *ln = container_of(si->node, struct usteer_local_node, node);
-
- blob_buf_init(&b, 0);
- blobmsg_printf(&b, "addr", MAC_ADDR_FMT, MAC_ADDR_DATA(si->sta->addr));
- blobmsg_add_u32(&b, "duration", config.roam_kick_delay / usteer_local_node_get_beacon_interval(ln));
- usteer_ubus_disassoc_add_neighbors(si);
- return ubus_invoke(ubus_ctx, ln->obj_id, "wnm_disassoc_imminent", b.head, NULL, 0, 100);
-}
-
int usteer_ubus_trigger_link_measurement(struct sta_info *si)
{
struct usteer_local_node *ln = container_of(si->node, struct usteer_local_node, node);
blobmsg_add_u8(&b, "deauth", 1);
ubus_invoke(ubus_ctx, ln->obj_id, "del_client", b.head, NULL, 0, 100);
usteer_sta_disconnected(si);
+ si->kick_count++;
si->roam_kick = current_time;
}