From 316a457fe4fe4f54cef263e34cea48f379d77531 Mon Sep 17 00:00:00 2001
From: Jakob Olsson <jakob.olsson@iopsys.eu>
Date: Fri, 4 Mar 2022 15:42:16 +0100
Subject: [PATCH] agent: retain radio apcfg mids when reloading radios

---
 src/agent.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/src/agent.c b/src/agent.c
index b9fe375ab..9c8eb0c9d 100644
--- a/src/agent.c
+++ b/src/agent.c
@@ -4481,6 +4481,8 @@ static void _enumerate_wifi_objects(struct ubus_request *req, int type,
 	struct radio_apcfg_state {
 		char name[16];
 		enum autocfg_state state;
+		uint16_t mid;
+		uint16_t wsc_mid;
 	} apcfg_state[WIFI_DEVICE_MAX_NUM] = {0};
 	struct agent *a = (struct agent *)req->priv;
 	struct json_object *json_msg;
@@ -4511,6 +4513,9 @@ static void _enumerate_wifi_objects(struct ubus_request *req, int type,
 			strncpy(apcfg_state[i].name, a->radios[i].name,
 				IFNAMSIZ - 1);
 			apcfg_state[i].state = a->radios[i].state;
+			apcfg_state[i].mid = a->radios[i].mid;
+			apcfg_state[i].wsc_mid = a->radios[i].wsc_mid;
+
 		}
 		prev_len = a->num_radios;
 		/* clears radio apcfg states */
@@ -4542,6 +4547,8 @@ static void _enumerate_wifi_objects(struct ubus_request *req, int type,
 			if (!strncmp(apcfg_state[j].name, a->radios[i].name,
 				     IFNAMSIZ - 1)) {
 				a->radios[i].state = apcfg_state[j].state;
+				a->radios[i].mid = apcfg_state[j].mid;
+				a->radios[i].wsc_mid = apcfg_state[j].wsc_mid;
 			}
 		}
 
@@ -6034,6 +6041,8 @@ int wifiagent_get_status(struct ubus_context *ctx,
 		blobmsg_add_u32(&bb, "bandwidth", re->current_bandwidth);
 		blobmsg_add_u32(&bb, "opclass", re->current_opclass);
 		blobmsg_add_u32(&bb, "autocfg_state", re->state);
+		blobmsg_add_u32(&bb, "autocfg_search_mid", re->mid);
+		blobmsg_add_u32(&bb, "autocfg_wsc_mid", re->wsc_mid);
 		blobmsg_close_table(&bb, t);
 	}
 	blobmsg_close_array(&bb, a);
-- 
GitLab