[PATCH usteer v3 4/9] 802.11 Mgmt: DEAUTH reason more accurate

Nils Hendrik Rottgardt n.rottgardt at gmail.com
Thu Nov 7 03:23:08 PST 2024


- policy: DEAUTH reason code linked to the trigger caused the DEAUTH
- ubus: add reason code to method usteer_ubus_kick_client

Signed-off-by: Nils Hendrik Rottgardt <n.rottgardt at gmail.com>
---
 policy.c | 9 +++------
 ubus.c   | 4 ++--
 usteer.h | 2 +-
 3 files changed, 6 insertions(+), 9 deletions(-)

diff --git a/policy.c b/policy.c
index b6b393f..f3150e9 100644
--- a/policy.c
+++ b/policy.c
@@ -498,8 +498,7 @@ usteer_local_node_snr_kick(struct usteer_local_node *ln)
 		ev.threshold.cur = si->signal;
 		ev.count = si->kick_count;
 		usteer_event(&ev);
-
-		usteer_ubus_kick_client(si);
+		usteer_ubus_kick_client(si, 1);
 		return;
 	}
 }
@@ -582,8 +581,7 @@ usteer_local_node_load_kick(struct usteer_local_node *ln)
 	ev.si_cur = kick1;
 	ev.si_other = candidate;
 	ev.count = kick1->kick_count;
-
-	usteer_ubus_kick_client(kick1);
+	usteer_ubus_kick_client(kick1, config.load_kick_reason_code);
 
 out:
 	usteer_event(&ev);
@@ -597,8 +595,7 @@ usteer_local_node_perform_kick(struct usteer_local_node *ln)
 	list_for_each_entry(si, &ln->node.sta_info, node_list) {
 		if (!si->kick_time || si->kick_time > current_time)
 			continue;
-
-		usteer_ubus_kick_client(si);
+		usteer_ubus_kick_client(si, 12);
 	}
 }
 
diff --git a/ubus.c b/ubus.c
index 57b7d29..856ea3f 100644
--- a/ubus.c
+++ b/ubus.c
@@ -771,13 +771,13 @@ int usteer_ubus_trigger_client_scan(struct sta_info *si)
 	return ubus_invoke(ubus_ctx, ln->obj_id, "rrm_beacon_req", b.head, NULL, 0, 100);
 }
 
-void usteer_ubus_kick_client(struct sta_info *si)
+void usteer_ubus_kick_client(struct sta_info *si, uint32_t kick_reason_code)
 {
 	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, "reason", config.load_kick_reason_code);
+	blobmsg_add_u32(&b, "reason", kick_reason_code);
 	blobmsg_add_u8(&b, "deauth", 1);
 	ubus_invoke(ubus_ctx, ln->obj_id, "del_client", b.head, NULL, 0, 100);
 	usteer_sta_disconnected(si);
diff --git a/usteer.h b/usteer.h
index ec6e251..680981f 100644
--- a/usteer.h
+++ b/usteer.h
@@ -341,7 +341,7 @@ void usteer_band_steering_sta_update(struct sta_info *si);
 bool usteer_band_steering_is_target(struct usteer_local_node *ln, struct usteer_node *node);
 
 void usteer_ubus_init(struct ubus_context *ctx);
-void usteer_ubus_kick_client(struct sta_info *si);
+void usteer_ubus_kick_client(struct sta_info *si, uint32_t kick_reason_code);
 int usteer_ubus_trigger_client_scan(struct sta_info *si);
 int usteer_ubus_band_steering_request(struct sta_info *si,
                                       uint8_t dialog_token,
-- 
2.39.5




More information about the openwrt-devel mailing list