From e023f06cb637fec289db4a17a929dc047655ad33 Mon Sep 17 00:00:00 2001
From: Filip Matusiak <filip.matusiak@iopsys.eu>
Date: Fri, 25 Oct 2024 12:05:31 +0200
Subject: [PATCH] steer: load steer module directly after steer params parsed

---
 src/cntlr.c        | 5 -----
 src/config.c       | 4 ++++
 src/steer_module.c | 3 +++
 3 files changed, 7 insertions(+), 5 deletions(-)

diff --git a/src/cntlr.c b/src/cntlr.c
index 693b190c..d2d619aa 100644
--- a/src/cntlr.c
+++ b/src/cntlr.c
@@ -2362,11 +2362,6 @@ void run_controller(void *opts)
 
 	controller_subscribe_for_cmdus(c);
 
-	/* steer-control */
-	cntlr_load_steer_modules(c);
-	if (!list_empty(&c->sclist))
-		cntlr_assign_steer_module_default(c);
-
 	/* The counters in MultiAPSteeringSummaryStats are all reset on reboot. */
 	memset(&c->dlem.network.steer_summary, 0, sizeof(struct wifi_steer_summary));
 	cntlr_dbg(LOG_MISC, "current wifi_cntlr profile %d\n", c->cfg.map_profile);
diff --git a/src/config.c b/src/config.c
index 1a46adee..2d5f8d65 100644
--- a/src/config.c
+++ b/src/config.c
@@ -1894,7 +1894,11 @@ uint8_t cntlr_config_reload(struct controller_config *cfg)
 		if (!strcmp(s->type, "controller")) {
 			cntlr_config_get_base(cfg, s);
 		} else if (!strcmp(s->type, "sta_steering")) {
+			struct controller *c =
+				container_of(cfg, struct controller, cfg);
+
 			cntlr_config_get_steer_params(cfg, s);
+			cntlr_load_steer_modules(c);
 		} else if (!strcmp(s->type, "ap")) {
 			cntlr_config_get_credentials(cfg, s);
 		} else if (!strcmp(s->type, "node")) {
diff --git a/src/steer_module.c b/src/steer_module.c
index a87dff87..ef8546fc 100644
--- a/src/steer_module.c
+++ b/src/steer_module.c
@@ -190,6 +190,9 @@ void cntlr_load_steer_modules(struct controller *c)
 		if (!ret)
 			list_add_tail(&sc->list, &c->sclist);
 	}
+
+	if (!list_empty(&c->sclist))
+		cntlr_assign_steer_module_default(c);
 }
 
 void cntlr_unload_steer_modules(struct controller *c)
-- 
GitLab