Skip to content

Commit edd1f09

Browse files
committed
802.11 MBO - added reassoc_delay and reason code
Multi Band Operations (MBO) provide stations with additional information about roaming requests. Reassociation delay avoids ping-pong between APs. By default a delay of 30s is requested from the station. MBO code 5 defines signal quality as a reason for roaming. This could be enhanced in the future by responding with other dynamically defined reasons to improve further how transitions are handled by stations. - 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 with 30s as default Signed-off-by: Nils Hendrik Rottgardt <n.rottgardt@gmail.com>
1 parent 22e31ac commit edd1f09

4 files changed

Lines changed: 9 additions & 0 deletions

File tree

main.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@ void usteer_init_defaults(void)
9797
config.initial_connect_delay = 0;
9898
config.remote_node_timeout = 10;
9999
config.aggressiveness = 3;
100+
config.reassociation_delay = 30;
100101

101102
config.steer_reject_timeout = 60000;
102103

openwrt/usteer/files/etc/config/usteer

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,9 @@ config usteer
8080
# 4 = BSS-transition-request with disassociation imminent, timer and forced disassociation
8181
#option aggressiveness 3
8282

83+
# Timeout (s in "1024ms") a station is requested to avoid reassociation after bss transition
84+
#option reassociation_delay 30
85+
8386
# List of MACs (lower case) to set aggressiveness per station (ff:ff:ff:ff:ff,2)
8487
#list aggressiveness_mac_list ''
8588

ubus.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -689,6 +689,8 @@ int usteer_ubus_bss_transition_request(struct sta_info *si,
689689
}
690690
blobmsg_add_u8(&b, "abridged", abridged);
691691
blobmsg_add_u32(&b, "validity_period", validity_period);
692+
blobmsg_add_u32(&b, "mbo_reason", 5);
693+
blobmsg_add_u32(&b, "reassoc_delay", config.reassociation_delay);
692694

693695
if (!target_node) {
694696
/* Add all known neighbors if no specific target set */
@@ -721,6 +723,8 @@ int usteer_ubus_band_steering_request(struct sta_info *si,
721723
}
722724
blobmsg_add_u8(&b, "abridged", abridged);
723725
blobmsg_add_u32(&b, "validity_period", validity_period);
726+
blobmsg_add_u32(&b, "mbo_reason", 5);
727+
blobmsg_add_u32(&b, "reassoc_delay", config.reassociation_delay);
724728

725729
c = blobmsg_open_array(&b, "neighbors");
726730
for_each_local_node(node) {

usteer.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,7 @@ struct usteer_config {
180180
uint32_t aggressiveness;
181181
struct blob_attr *aggressiveness_mac_list;
182182
uint32_t aggressive_disassoc_timer;
183+
uint32_t reassociation_delay;
183184

184185
int32_t min_snr;
185186
uint32_t min_snr_kick_delay;

0 commit comments

Comments
 (0)