sta: add sta_connection_state enum
authorDavid Bauer <mail@david-bauer.net>
Mon, 27 Sep 2021 17:35:55 +0000 (19:35 +0200)
committerDavid Bauer <mail@david-bauer.net>
Fri, 15 Oct 2021 13:50:25 +0000 (15:50 +0200)
Make the connection state of a sta-info more readable by introducing an
enum for the STA connection state.

Also switch come comparison cases to use the explicit enum values to
make the code more readable.

Signed-off-by: David Bauer <mail@david-bauer.net>
local_node.c
policy.c
sta.c
ubus.c
usteer.h

index 8064bd72f46d2891f0c0d12779ce93244da5a9b6..50e06a71e76d9009c289031148fe61cd126c4072 100644 (file)
@@ -153,7 +153,7 @@ usteer_local_node_assoc_update(struct sta_info *si, struct blob_attr *data)
 
        blobmsg_parse(policy, __MSG_MAX, tb, blobmsg_data(data), blobmsg_data_len(data));
        if (tb[MSG_ASSOC] && blobmsg_get_u8(tb[MSG_ASSOC]))
-               si->connected = 1;
+               si->connected = STA_CONNECTED;
 
        if (si->node->freq < 4000)
                si->sta->seen_2ghz = 1;
@@ -174,7 +174,7 @@ usteer_local_node_set_assoc(struct usteer_local_node *ln, struct blob_attr *cl)
 
        list_for_each_entry(si, &node->sta_info, node_list) {
                if (si->connected)
-                       si->connected = 2;
+                       si->connected = STA_DISCONNECTED;
        }
 
        blobmsg_for_each_attr(cur, cl, rem) {
@@ -193,17 +193,17 @@ usteer_local_node_set_assoc(struct usteer_local_node *ln, struct blob_attr *cl)
                        h->update_sta(node, si);
                }
                usteer_local_node_assoc_update(si, cur);
-               if (si->connected == 1)
+               if (si->connected == STA_CONNECTED)
                        n_assoc++;
        }
 
        node->n_assoc = n_assoc;
 
        list_for_each_entry(si, &node->sta_info, node_list) {
-               if (si->connected != 2)
+               if (si->connected != STA_DISCONNECTED)
                        continue;
 
-               si->connected = 0;
+               si->connected = STA_NOT_CONNECTED;
                usteer_sta_info_update_timeout(si, config.local_sta_timeout);
                MSG(VERBOSE, "station "MAC_ADDR_FMT" disconnected from node %s\n",
                        MAC_ADDR_DATA(si->sta->addr), usteer_node_name(node));
index c1a992fc620c54af91d8a6d7eebf8b5cf56df7ca..1b4fa57abda385e30691e1a9c2091b20de0496aa 100644 (file)
--- a/policy.c
+++ b/policy.c
@@ -334,7 +334,7 @@ usteer_local_node_roam_check(struct usteer_local_node *ln, struct uevent *ev)
        min_signal = snr_to_signal(&ln->node, min_signal);
 
        list_for_each_entry(si, &ln->node.sta_info, node_list) {
-               if (!si->connected || si->signal >= min_signal ||
+               if (si->connected != STA_CONNECTED || si->signal >= min_signal ||
                    current_time - si->roam_kick < config.roam_trigger_interval) {
                        usteer_roam_set_state(si, ROAM_TRIGGER_IDLE, ev);
                        continue;
@@ -365,7 +365,7 @@ usteer_local_node_snr_kick(struct usteer_local_node *ln)
        ev.threshold.ref = min_signal;
 
        list_for_each_entry(si, &ln->node.sta_info, node_list) {
-               if (!si->connected)
+               if (si->connected != STA_CONNECTED)
                        continue;
 
                if (si->signal >= min_signal)
@@ -434,7 +434,7 @@ usteer_local_node_kick(struct usteer_local_node *ln)
        list_for_each_entry(si, &ln->node.sta_info, node_list) {
                struct sta_info *tmp;
 
-               if (!si->connected)
+               if (si->connected != STA_CONNECTED)
                        continue;
 
                if (is_more_kickable(kick1, si))
diff --git a/sta.c b/sta.c
index 869019d7ad872e113356012800c497fca94c6309..959cff59ae33a170a6c2b1ce625ca64f197af60a 100644 (file)
--- a/sta.c
+++ b/sta.c
@@ -111,7 +111,7 @@ usteer_sta_info_get(struct sta *sta, struct usteer_node *node, bool *create)
 void
 usteer_sta_info_update_timeout(struct sta_info *si, int timeout)
 {
-       if (si->connected == 1)
+       if (si->connected == STA_CONNECTED)
                usteer_timeout_cancel(&tq, &si->timeout);
        else if (timeout > 0)
                usteer_timeout_set(&tq, &si->timeout, timeout);
@@ -145,7 +145,7 @@ void
 usteer_sta_info_update(struct sta_info *si, int signal, bool avg)
 {
        /* ignore probe request signal when connected */
-       if (si->connected == 1 && si->signal != NO_SIGNAL && !avg)
+       if (si->connected == STA_CONNECTED && si->signal != NO_SIGNAL && !avg)
                signal = NO_SIGNAL;
 
        if (signal != NO_SIGNAL)
diff --git a/ubus.c b/ubus.c
index 5e285d88b2212ad43664f912dfd369f16141311d..c2e32fd0f1884f78d0f976e4cc21d8908744f8ad 100644 (file)
--- a/ubus.c
+++ b/ubus.c
@@ -540,7 +540,7 @@ void usteer_ubus_kick_client(struct sta_info *si)
        blobmsg_add_u32(&b, "reason", config.load_kick_reason_code);
        blobmsg_add_u8(&b, "deauth", 1);
        ubus_invoke(ubus_ctx, ln->obj_id, "del_client", b.head, NULL, 0, 100);
-       si->connected = 0;
+       si->connected = STA_NOT_CONNECTED;
        si->roam_kick = current_time;
 }
 
index 20a4432ab09d0c374a97a6bbad6e851718a1e58a..87ee1f3f4a25d5e29d9173291ecea9d81c394a66 100644 (file)
--- a/usteer.h
+++ b/usteer.h
@@ -54,6 +54,12 @@ enum usteer_node_type {
        NODE_TYPE_REMOTE,
 };
 
+enum usteer_sta_connection_state {
+       STA_NOT_CONNECTED = 0,
+       STA_CONNECTED = 1,
+       STA_DISCONNECTED = 2,
+};
+
 struct sta_info;
 struct usteer_local_node;
 struct usteer_remote_host;