From 73016210704fbe266c98d470f1ffaabfc4d97bc1 Mon Sep 17 00:00:00 2001
From: Evelyn Tsai <evelyn.tsai@mediatek.com>
Date: Sat, 2 Dec 2023 07:06:57 +0800
Subject: [PATCH] Revert "hostapd: use new udebug ubus api to make debug rings
 configurable"

This reverts commit f909059b7473992e84d5701fa5021faa5bd76e67.
---
 package/libs/udebug/files/udebug.config       |   8 -
 .../network/services/hostapd/files/hostapd.uc |  27 +++-
 .../services/hostapd/files/wpa_supplicant.uc  |  25 ++-
 .../services/hostapd/src/src/utils/ucode.c    | 144 ++++++------------
 4 files changed, 96 insertions(+), 108 deletions(-)

diff --git a/package/libs/udebug/files/udebug.config b/package/libs/udebug/files/udebug.config
index 21d1ecb1..23d4281b 100644
--- a/package/libs/udebug/files/udebug.config
+++ b/package/libs/udebug/files/udebug.config
@@ -9,17 +9,9 @@ config service log
 
 config service hostapd
 	option enabled 0
-	option wpa_log 1
-	option wpa_nl_rx 0
-	option wpa_nl_tx 0
-	option wpa_nl_ctrl 0
 
 config service wpa_supplicant
 	option enabled 0
-	option wpa_log 1
-	option wpa_nl_rx 0
-	option wpa_nl_tx 0
-	option wpa_nl_ctrl 0
 
 config service netifd
 	option enabled 0
diff --git a/package/network/services/hostapd/files/hostapd.uc b/package/network/services/hostapd/files/hostapd.uc
index b85f523b..84138f29 100644
--- a/package/network/services/hostapd/files/hostapd.uc
+++ b/package/network/services/hostapd/files/hostapd.uc
@@ -782,9 +782,33 @@ let main_obj = {
 	},
 };
 
+function handle_debug_config(cfg) {
+	hostapd.printf(`handle_debug_config: ${cfg}\n`);
+	if (!cfg)
+		return;
+
+	let data = cfg.service;
+	if (!data)
+		return;
+
+	data = data.hostapd;
+	if (!data)
+		return;
+
+	hostapd.udebug_set(!!+data.enabled);
+}
+
 hostapd.data.ubus = ubus;
 hostapd.data.obj = ubus.publish("hostapd", main_obj);
-hostapd.udebug_set("hostapd", hostapd.data.ubus);
+hostapd.data.debug_sub = ubus.subscriber((req) => {
+	if (req.type != "config")
+		return;
+
+	handle_debug_config(req.data);
+});
+
+hostapd.data.debug_sub.subscribe("udebug");
+handle_debug_config(ubus.call("udebug", "get_config", {}));
 
 function bss_event(type, name, data) {
 	let ubus = hostapd.data.ubus;
@@ -799,7 +823,6 @@ return {
 	shutdown: function() {
 		for (let phy in hostapd.data.config)
 			iface_set_config(phy, null);
-		hostapd.udebug_set(null);
 		hostapd.ubus.disconnect();
 	},
 	bss_add: function(name, obj) {
diff --git a/package/network/services/hostapd/files/wpa_supplicant.uc b/package/network/services/hostapd/files/wpa_supplicant.uc
index 1709bb01..aac144b3 100644
--- a/package/network/services/hostapd/files/wpa_supplicant.uc
+++ b/package/network/services/hostapd/files/wpa_supplicant.uc
@@ -244,9 +244,32 @@ let main_obj = {
 	},
 };
 
+function handle_debug_config(cfg) {
+	if (!cfg)
+		return;
+
+	let data = cfg.service;
+	if (!data)
+		return;
+
+	data = data.wpa_supplicant;
+	if (!data)
+		return;
+
+	wpas.udebug_set(!!+data.enabled);
+}
+
 wpas.data.ubus = ubus;
 wpas.data.obj = ubus.publish("wpa_supplicant", main_obj);
-wpas.udebug_set("wpa_supplicant", wpas.data.ubus);
+wpas.data.debug_sub = ubus.subscriber((req) => {
+	if (req.type != "config")
+		return;
+
+	handle_debug_config(req.data);
+});
+
+wpas.data.debug_sub.subscribe("udebug");
+handle_debug_config(ubus.call("udebug", "get_config", {}));
 
 function iface_event(type, name, data) {
 	let ubus = wpas.data.ubus;
diff --git a/package/network/services/hostapd/src/src/utils/ucode.c b/package/network/services/hostapd/src/src/utils/ucode.c
index 29c753c3..14fd6bc5 100644
--- a/package/network/services/hostapd/src/src/utils/ucode.c
+++ b/package/network/services/hostapd/src/src/utils/ucode.c
@@ -16,59 +16,8 @@ static uc_vm_t vm;
 static struct uloop_timeout gc_timer;
 static struct udebug ud;
 static struct udebug_buf ud_log, ud_nl[3];
-static const struct udebug_buf_meta meta_log = {
-	.name = "wpa_log",
-	.format = UDEBUG_FORMAT_STRING,
-};
-static const struct udebug_buf_meta meta_nl_ll = {
-	.name = "wpa_nl_ctrl",
-	.format = UDEBUG_FORMAT_PACKET,
-	.sub_format = UDEBUG_DLT_NETLINK,
-};
-static const struct udebug_buf_meta meta_nl_tx = {
-	.name = "wpa_nl_tx",
-	.format = UDEBUG_FORMAT_PACKET,
-	.sub_format = UDEBUG_DLT_NETLINK,
-};
+
 #define UDEBUG_FLAG_RX_FRAME	(1ULL << 0)
-static const struct udebug_buf_flag rx_flags[] = {
-	{  "rx_frame", UDEBUG_FLAG_RX_FRAME },
-};
-static const struct udebug_buf_meta meta_nl_rx = {
-	.name = "wpa_nl_rx",
-	.format = UDEBUG_FORMAT_PACKET,
-	.sub_format = UDEBUG_DLT_NETLINK,
-	.flags = rx_flags,
-	.n_flags = ARRAY_SIZE(rx_flags),
-};
-static struct udebug_ubus_ring udebug_rings[] = {
-	{
-		.buf = &ud_log,
-		.meta = &meta_log,
-		.default_entries = 1024,
-		.default_size = 64 * 1024
-	},
-	{
-		.buf = &ud_nl[0],
-		.meta = &meta_nl_rx,
-		.default_entries = 1024,
-		.default_size = 256 * 1024,
-	},
-	{
-		.buf = &ud_nl[1],
-		.meta = &meta_nl_tx,
-		.default_entries = 1024,
-		.default_size = 64 * 1024,
-	},
-	{
-		.buf = &ud_nl[2],
-		.meta = &meta_nl_ll,
-		.default_entries = 1024,
-		.default_size = 32 * 1024,
-	}
-};
-char *udebug_service;
-struct udebug_ubus ud_ubus;
 
 static void uc_gc_timer(struct uloop_timeout *timeout)
 {
@@ -352,67 +301,68 @@ static void udebug_netlink_hook(int tx, const void *data, size_t len)
 	         !(udebug_buf_flags(buf) & UDEBUG_FLAG_RX_FRAME))
 		return;
 
-	if (!udebug_buf_valid(buf))
-		return;
-
 	udebug_entry_init(buf);
 	udebug_entry_append(buf, &hdr, sizeof(hdr));
 	udebug_entry_append(buf, data, len);
 	udebug_entry_add(buf);
 }
 
-static void
-wpa_udebug_config(struct udebug_ubus *ctx, struct blob_attr *data,
-		  bool enabled)
-{
-	udebug_ubus_apply_config(&ud, udebug_rings, ARRAY_SIZE(udebug_rings),
-				 data, enabled);
-
-	if (udebug_buf_valid(&ud_log)) {
-		wpa_printf_hook = udebug_printf_hook;
-		wpa_hexdump_hook = udebug_hexdump_hook;
-	} else {
-		wpa_printf_hook = NULL;
-		wpa_hexdump_hook = NULL;
-	}
-
-	if (udebug_buf_valid(&ud_nl[0]) ||
-	    udebug_buf_valid(&ud_nl[1]) ||
-	    udebug_buf_valid(&ud_nl[2]))
-		wpa_netlink_hook = udebug_netlink_hook;
-	else
-		wpa_netlink_hook = NULL;
-}
-
 uc_value_t *uc_wpa_udebug_set(uc_vm_t *vm, size_t nargs)
 {
-	uc_value_t *name = uc_fn_arg(0);
-	uc_value_t *ubus = uc_fn_arg(1);
+	static const struct udebug_buf_meta meta_log = {
+		.name = "wpa_log",
+		.format = UDEBUG_FORMAT_STRING,
+	};
+	static const struct udebug_buf_meta meta_nl_ll = {
+		.name = "wpa_nl_ctrl",
+		.format = UDEBUG_FORMAT_PACKET,
+		.sub_format = UDEBUG_DLT_NETLINK,
+	};
+	static const struct udebug_buf_meta meta_nl_tx = {
+		.name = "wpa_nl_tx",
+		.format = UDEBUG_FORMAT_PACKET,
+		.sub_format = UDEBUG_DLT_NETLINK,
+	};
+	static const struct udebug_buf_flag rx_flags[] = {
+		{  "rx_frame", UDEBUG_FLAG_RX_FRAME },
+	};
+	static const struct udebug_buf_meta meta_nl_rx = {
+		.name = "wpa_nl_rx",
+		.format = UDEBUG_FORMAT_PACKET,
+		.sub_format = UDEBUG_DLT_NETLINK,
+		.flags = rx_flags,
+		.n_flags = ARRAY_SIZE(rx_flags),
+	};
+	bool val = ucv_is_truish(uc_fn_arg(0));
 	static bool enabled = false;
-	struct ubus_context *ctx;
-	bool cur_en;
-
-	cur_en = ucv_type(name) == UC_STRING;
-	ctx = ucv_resource_data(ubus, "ubus.connection");
-	if (!ctx)
-		cur_en = false;
 
-	if (enabled == cur_en)
+	if (enabled == val)
 		return ucv_boolean_new(true);
 
-	enabled = cur_en;
-	if (enabled) {
-		udebug_service = strdup(ucv_string_get(name));
+	enabled = val;
+	if (val) {
 		udebug_init(&ud);
 		udebug_auto_connect(&ud, NULL);
-		udebug_ubus_init(&ud_ubus, ctx, udebug_service, wpa_udebug_config);
+		udebug_buf_init(&ud_log, 1024, 64 * 1024);
+		udebug_buf_add(&ud, &ud_log, &meta_log);
+		udebug_buf_init(&ud_nl[0], 1024, 256 * 1024);
+		udebug_buf_add(&ud, &ud_nl[0], &meta_nl_rx);
+		udebug_buf_init(&ud_nl[1], 1024, 64 * 1024);
+		udebug_buf_add(&ud, &ud_nl[1], &meta_nl_tx);
+		udebug_buf_init(&ud_nl[2], 256, 32 * 1024);
+		udebug_buf_add(&ud, &ud_nl[2], &meta_nl_ll);
+
+		wpa_printf_hook = udebug_printf_hook;
+		wpa_hexdump_hook = udebug_hexdump_hook;
+		wpa_netlink_hook = udebug_netlink_hook;
 	} else {
-		udebug_ubus_free(&ud_ubus);
-		for (size_t i = 0; i < ARRAY_SIZE(udebug_rings); i++)
-			if (udebug_buf_valid(udebug_rings[i].buf))
-				udebug_buf_free(udebug_rings[i].buf);
+		for (size_t i = 0; i < ARRAY_SIZE(ud_nl); i++)
+			udebug_buf_free(&ud_nl[i]);
+		udebug_buf_free(&ud_log);
 		udebug_free(&ud);
-		free(udebug_service);
+		wpa_printf_hook = NULL;
+		wpa_hexdump_hook = NULL;
+		wpa_netlink_hook = NULL;
 	}
 
 	return ucv_boolean_new(true);
-- 
2.18.0

