- ubus: add reason code to bss_transition request (actually static only)
- ubus: add reassociation delay to let the client know how long it should stay 
at the new AP dereived from station block timeout.
- main: add config option for reassociation delay

Signed-off-by: Nils Hendrik Rottgardt <n.rottga...@gmail.com>
---
 main.c                                 | 1 +
 openwrt/usteer/files/etc/config/usteer | 3 +++
 ubus.c                                 | 5 +++++
 usteer.h                               | 1 +
 4 files changed, 10 insertions(+)

diff --git a/main.c b/main.c
index c796c3c..69e05ae 100644
--- a/main.c
+++ b/main.c
@@ -96,6 +96,7 @@ void usteer_init_defaults(void)
        config.remote_update_interval = 1000;
        config.initial_connect_delay = 0;
        config.remote_node_timeout = 10;
+       config.reassociation_delay = 30;
        config.aggressive_all = false;
 
        config.steer_reject_timeout = 60000;
diff --git a/openwrt/usteer/files/etc/config/usteer 
b/openwrt/usteer/files/etc/config/usteer
index 7ef365c..9d343e7 100644
--- a/openwrt/usteer/files/etc/config/usteer
+++ b/openwrt/usteer/files/etc/config/usteer
@@ -73,6 +73,9 @@ config usteer
        # Timeout (ms) for which a client will not be steered after rejecting a 
BSS-transition-request
        #option steer_reject_timeout 60000
 
+       # Timeout (s "1024ms") a station is requested to avoid reassociation 
after bss transition
+       #option reassociation_delay 30
+       
        # Use aggressive roaming to push clients to another AP for all stations 
(0/1)
        #option aggressive_all 0
 
diff --git a/ubus.c b/ubus.c
index 856ea3f..bcd0ef1 100644
--- a/ubus.c
+++ b/ubus.c
@@ -689,6 +689,9 @@ int usteer_ubus_bss_transition_request(struct sta_info *si,
        }
        blobmsg_add_u8(&b, "abridged", abridged);
        blobmsg_add_u32(&b, "validity_period", validity_period);
+       blobmsg_add_u32(&b, "mbo_reason", 5);
+       blobmsg_add_u32(&b, "reassoc_delay", config.reassociation_delay);
+
        if (!target_node) {
                // Add all known neighbors if no specific target set
                MSG(VERBOSE, "ROAMING requested for sta=" MAC_ADDR_FMT " 
without target\n", MAC_ADDR_DATA(si->sta->addr));
@@ -720,6 +723,8 @@ int usteer_ubus_band_steering_request(struct sta_info *si,
        }
        blobmsg_add_u8(&b, "abridged", abridged);
        blobmsg_add_u32(&b, "validity_period", validity_period);
+       blobmsg_add_u32(&b, "mbo_reason", 5);
+       blobmsg_add_u32(&b, "reassoc_delay", config.reassociation_delay);
 
        c = blobmsg_open_array(&b, "neighbors");
        for_each_local_node(node) {
diff --git a/usteer.h b/usteer.h
index 680981f..c9391bb 100644
--- a/usteer.h
+++ b/usteer.h
@@ -173,6 +173,7 @@ struct usteer_config {
        bool aggressive_all;
        struct blob_attr *aggressive_mac_list;
        uint32_t aggressive_disassoc_timer;
+       uint32_t reassociation_delay;
 
        int32_t min_snr;
        uint32_t min_snr_kick_delay;
-- 
2.39.5


_______________________________________________
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

Reply via email to