[RESEND PATCH usteer v3 9/9] New aggr. levels combined with STA specific configuration
- band_steering: changed config option - band_steering: handle aggressivness levels in bss transition requests - local_node: avoid kick reset on bss tm respone if aggressivness is 3 - local_node: changed config option - main: changed config option - policy: changed config option - policy: handle aggressivness levels in bss transition requests - policy: SM stay in ROAM_TRIGGER_SCAN_DONE until disassoc_timer is over - policy: roaming skipped if there was a positiv BSS-TM-RESP with code = 0 - policy: load mac list from options to set specific aggressivness per sta - ubus: correct log message (typo) - ubus: reassoc_delay is send with diasaccociation imminent = true only - ubus: changed config option Signed-off-by: Nils Hendrik Rottgardt --- band_steering.c| 7 -- local_node.c | 18 +++ main.c | 2 +- openwrt/usteer/files/etc/config/usteer | 15 +++- openwrt/usteer/files/etc/init.d/usteer | 4 ++-- policy.c | 32 ++ sta.c | 30 +--- ubus.c | 10 usteer.h | 11 + 9 files changed, 81 insertions(+), 48 deletions(-) diff --git a/band_steering.c b/band_steering.c index 17eca32..a3dfd62 100644 --- a/band_steering.c +++ b/band_steering.c @@ -100,10 +100,13 @@ void usteer_band_steering_perform_steer(struct usteer_local_node *ln) if (si->bss_transition) { si->roam_transition_request_validity_end = current_time + 1; validity_period = 1 / usteer_local_node_get_beacon_interval(ln); /* ~ 10 seconds */ - if (si->sta->aggressive) { + if (si->sta->aggressiveness >= 2) { if (!si->kick_time) si->kick_time = current_time + config.roam_kick_delay; - disassoc_timer = (si->kick_time - current_time) / usteer_local_node_get_beacon_interval(ln); + if (si->sta->aggressiveness >= 3) + disassoc_timer = (si->kick_time - current_time) / usteer_local_node_get_beacon_interval(ln); + else + disassoc_timer = 0; usteer_ubus_band_steering_request(si, 0, true, disassoc_timer, true, validity_period); } else usteer_ubus_band_steering_request(si, 0, false, 0, true, validity_period); diff --git a/local_node.c b/local_node.c index 89490d7..b38f96f 100644 --- a/local_node.c +++ b/local_node.c @@ -180,10 +180,10 @@ usteer_handle_bss_tm_response(struct usteer_local_node *ln, struct blob_attr *ms si->bss_transition_response.status_code = blobmsg_get_u8(tb[BSS_TM_RESPONSE_STATUS_CODE]); si->bss_transition_response.timestamp = current_time; - if (si->bss_transition_response.status_code) { + if (si->bss_transition_response.status_code && si->kick_time && si->sta->aggressiveness) { /* Cancel imminent kick in case BSS transition was rejected */ si->kick_time = 0; - MSG(VERBOSE, "Kick canceled because transition was rejected by sta=" MAC_ADDR_FMT "\n", MAC_ADDR_DATA(si->sta->addr)); + MSG(VERBOSE, "Kick canceled because transition rejected by sta=" MAC_ADDR_FMT "\n", MAC_ADDR_DATA(si->sta->addr)); } return 0; @@ -978,20 +978,20 @@ void config_get_ssid_list(struct blob_buf *buf) blobmsg_add_blob(buf, config.ssid_list); } -void config_set_aggressive_mac_list(struct blob_attr *data) +void config_set_aggressiveness_mac_list(struct blob_attr *data) { - free(config.aggressive_mac_list); + free(config.aggressiveness_mac_list); if (data && blobmsg_len(data)) - config.aggressive_mac_list = blob_memdup(data); + config.aggressiveness_mac_list = blob_memdup(data); else - config.aggressive_mac_list = NULL; + config.aggressiveness_mac_list = NULL; } -void config_get_aggressive_mac_list(struct blob_buf *buf) +void config_get_aggressiveness_mac_list(struct blob_buf *buf) { - if (config.aggressive_mac_list) - blobmsg_add_blob(buf, config.aggressive_mac_list); + if (config.aggressiveness_mac_list) + blobmsg_add_blob(buf, config.aggressiveness_mac_list); } void usteer_local_nodes_init(struct ubus_context *ctx) diff --git a/main.c b/main.c index 69e05ae..e4a6fd0 100644 --- a/main.c +++ b/main.c @@ -97,7 +97,7 @@ void usteer_init_defaults(void) config.initial_connect_delay = 0; config.remote_node_timeout = 10; config.reassociation_delay = 30; - config.aggre
[RESEND PATCH usteer v3 9/9] New aggr. levels combined with STA specific configuration
- band_steering: changed config option - band_steering: handle aggressivness levels in bss transition requests - local_node: avoid kick reset on bss tm respone if aggressivness is 3 - local_node: changed config option - main: changed config option - policy: changed config option - policy: handle aggressivness levels in bss transition requests - policy: SM stay in ROAM_TRIGGER_SCAN_DONE until disassoc_timer is over - policy: roaming skipped if there was a positiv BSS-TM-RESP with code = 0 - policy: load mac list from options to set specific aggressivness per sta - ubus: correct log message (typo) - ubus: reassoc_delay is send with diasaccociation imminent = true only - ubus: changed config option Signed-off-by: Nils Hendrik Rottgardt --- band_steering.c| 7 -- local_node.c | 18 +++ main.c | 2 +- openwrt/usteer/files/etc/config/usteer | 15 +++- openwrt/usteer/files/etc/init.d/usteer | 4 ++-- policy.c | 32 ++ sta.c | 30 +--- ubus.c | 10 usteer.h | 11 + 9 files changed, 81 insertions(+), 48 deletions(-) diff --git a/band_steering.c b/band_steering.c index 17eca32..a3dfd62 100644 --- a/band_steering.c +++ b/band_steering.c @@ -100,10 +100,13 @@ void usteer_band_steering_perform_steer(struct usteer_local_node *ln) if (si->bss_transition) { si->roam_transition_request_validity_end = current_time + 1; validity_period = 1 / usteer_local_node_get_beacon_interval(ln); /* ~ 10 seconds */ - if (si->sta->aggressive) { + if (si->sta->aggressiveness >= 2) { if (!si->kick_time) si->kick_time = current_time + config.roam_kick_delay; - disassoc_timer = (si->kick_time - current_time) / usteer_local_node_get_beacon_interval(ln); + if (si->sta->aggressiveness >= 3) + disassoc_timer = (si->kick_time - current_time) / usteer_local_node_get_beacon_interval(ln); + else + disassoc_timer = 0; usteer_ubus_band_steering_request(si, 0, true, disassoc_timer, true, validity_period); } else usteer_ubus_band_steering_request(si, 0, false, 0, true, validity_period); diff --git a/local_node.c b/local_node.c index 89490d7..b38f96f 100644 --- a/local_node.c +++ b/local_node.c @@ -180,10 +180,10 @@ usteer_handle_bss_tm_response(struct usteer_local_node *ln, struct blob_attr *ms si->bss_transition_response.status_code = blobmsg_get_u8(tb[BSS_TM_RESPONSE_STATUS_CODE]); si->bss_transition_response.timestamp = current_time; - if (si->bss_transition_response.status_code) { + if (si->bss_transition_response.status_code && si->kick_time && si->sta->aggressiveness) { /* Cancel imminent kick in case BSS transition was rejected */ si->kick_time = 0; - MSG(VERBOSE, "Kick canceled because transition was rejected by sta=" MAC_ADDR_FMT "\n", MAC_ADDR_DATA(si->sta->addr)); + MSG(VERBOSE, "Kick canceled because transition rejected by sta=" MAC_ADDR_FMT "\n", MAC_ADDR_DATA(si->sta->addr)); } return 0; @@ -978,20 +978,20 @@ void config_get_ssid_list(struct blob_buf *buf) blobmsg_add_blob(buf, config.ssid_list); } -void config_set_aggressive_mac_list(struct blob_attr *data) +void config_set_aggressiveness_mac_list(struct blob_attr *data) { - free(config.aggressive_mac_list); + free(config.aggressiveness_mac_list); if (data && blobmsg_len(data)) - config.aggressive_mac_list = blob_memdup(data); + config.aggressiveness_mac_list = blob_memdup(data); else - config.aggressive_mac_list = NULL; + config.aggressiveness_mac_list = NULL; } -void config_get_aggressive_mac_list(struct blob_buf *buf) +void config_get_aggressiveness_mac_list(struct blob_buf *buf) { - if (config.aggressive_mac_list) - blobmsg_add_blob(buf, config.aggressive_mac_list); + if (config.aggressiveness_mac_list) + blobmsg_add_blob(buf, config.aggressiveness_mac_list); } void usteer_local_nodes_init(struct ubus_context *ctx) diff --git a/main.c b/main.c index 69e05ae..e4a6fd0 100644 --- a/main.c +++ b/main.c @@ -97,7 +97,7 @@ void usteer_init_defaults(void) config.initial_connect_delay = 0; config.remote_node_timeout = 10; config.reassociation_delay = 30; - config.aggre
[PATCH usteer v3 9/9] New aggr. levels combined with STA specific configuration
- band_steering: changed config option - band_steering: handle aggressivness levels in bss transition requests - local_node: avoid kick reset on bss tm respone if aggressivness is 3 - local_node: changed config option - main: changed config option - policy: changed config option - policy: handle aggressivness levels in bss transition requests - policy: SM stay in ROAM_TRIGGER_SCAN_DONE until disassoc_timer is over - policy: roaming skipped if there was a positiv BSS-TM-RESP with code = 0 - policy: load mac list from options to set specific aggressivness per sta - ubus: correct log message (typo) - ubus: reassoc_delay is send with diasaccociation imminent = true only - ubus: changed config option Signed-off-by: Nils Hendrik Rottgardt --- band_steering.c| 7 -- local_node.c | 18 +++ main.c | 2 +- openwrt/usteer/files/etc/config/usteer | 15 +++- openwrt/usteer/files/etc/init.d/usteer | 4 ++-- policy.c | 32 ++ sta.c | 30 +--- ubus.c | 10 usteer.h | 11 + 9 files changed, 81 insertions(+), 48 deletions(-) diff --git a/band_steering.c b/band_steering.c index 17eca32..a3dfd62 100644 --- a/band_steering.c +++ b/band_steering.c @@ -100,10 +100,13 @@ void usteer_band_steering_perform_steer(struct usteer_local_node *ln) if (si->bss_transition) { si->roam_transition_request_validity_end = current_time + 1; validity_period = 1 / usteer_local_node_get_beacon_interval(ln); /* ~ 10 seconds */ - if (si->sta->aggressive) { + if (si->sta->aggressiveness >= 2) { if (!si->kick_time) si->kick_time = current_time + config.roam_kick_delay; - disassoc_timer = (si->kick_time - current_time) / usteer_local_node_get_beacon_interval(ln); + if (si->sta->aggressiveness >= 3) + disassoc_timer = (si->kick_time - current_time) / usteer_local_node_get_beacon_interval(ln); + else + disassoc_timer = 0; usteer_ubus_band_steering_request(si, 0, true, disassoc_timer, true, validity_period); } else usteer_ubus_band_steering_request(si, 0, false, 0, true, validity_period); diff --git a/local_node.c b/local_node.c index 89490d7..b38f96f 100644 --- a/local_node.c +++ b/local_node.c @@ -180,10 +180,10 @@ usteer_handle_bss_tm_response(struct usteer_local_node *ln, struct blob_attr *ms si->bss_transition_response.status_code = blobmsg_get_u8(tb[BSS_TM_RESPONSE_STATUS_CODE]); si->bss_transition_response.timestamp = current_time; - if (si->bss_transition_response.status_code) { + if (si->bss_transition_response.status_code && si->kick_time && si->sta->aggressiveness) { /* Cancel imminent kick in case BSS transition was rejected */ si->kick_time = 0; - MSG(VERBOSE, "Kick canceled because transition was rejected by sta=" MAC_ADDR_FMT "\n", MAC_ADDR_DATA(si->sta->addr)); + MSG(VERBOSE, "Kick canceled because transition rejected by sta=" MAC_ADDR_FMT "\n", MAC_ADDR_DATA(si->sta->addr)); } return 0; @@ -978,20 +978,20 @@ void config_get_ssid_list(struct blob_buf *buf) blobmsg_add_blob(buf, config.ssid_list); } -void config_set_aggressive_mac_list(struct blob_attr *data) +void config_set_aggressiveness_mac_list(struct blob_attr *data) { - free(config.aggressive_mac_list); + free(config.aggressiveness_mac_list); if (data && blobmsg_len(data)) - config.aggressive_mac_list = blob_memdup(data); + config.aggressiveness_mac_list = blob_memdup(data); else - config.aggressive_mac_list = NULL; + config.aggressiveness_mac_list = NULL; } -void config_get_aggressive_mac_list(struct blob_buf *buf) +void config_get_aggressiveness_mac_list(struct blob_buf *buf) { - if (config.aggressive_mac_list) - blobmsg_add_blob(buf, config.aggressive_mac_list); + if (config.aggressiveness_mac_list) + blobmsg_add_blob(buf, config.aggressiveness_mac_list); } void usteer_local_nodes_init(struct ubus_context *ctx) diff --git a/main.c b/main.c index 69e05ae..e4a6fd0 100644 --- a/main.c +++ b/main.c @@ -97,7 +97,7 @@ void usteer_init_defaults(void) config.initial_connect_delay = 0; config.remote_node_timeout = 10; config.reassociation_delay = 30; - config.aggre