[][MAC80211][WiFi7][misc][fix build error]

[Description]
Fix ucode/ubus/ubox/udebug/ubox/libubox/rpcd/procd package for WiFi7 netifd

[Release-log]
N/A

Change-Id: If418d72bd7810fa746282970a1d79c486f827ed4
Reviewed-on: https://gerrit.mediatek.inc/c/openwrt/feeds/mtk_openwrt_feeds/+/8329246
diff --git a/autobuild_mac80211_release/0007-wifi7-hostapd-revert-hostapd-udebug.patch b/autobuild_mac80211_release/0007-wifi7-hostapd-revert-hostapd-udebug.patch
index d532769..d866ef7 100644
--- a/autobuild_mac80211_release/0007-wifi7-hostapd-revert-hostapd-udebug.patch
+++ b/autobuild_mac80211_release/0007-wifi7-hostapd-revert-hostapd-udebug.patch
@@ -1,525 +1,303 @@
-diff --git a/package/network/services/hostapd/Makefile b/package/network/services/hostapd/Makefile
-index 61410069b6f..089c073011b 100644
---- a/package/network/services/hostapd/Makefile
-+++ b/package/network/services/hostapd/Makefile
-@@ -79,7 +79,7 @@ ifneq ($(CONFIG_DRIVER_11AX_SUPPORT),)
-   HOSTAPD_IEEE80211AX:=y
- endif
+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
  
--CORE_DEPENDS = +ucode +libubus +libucode +ucode-mod-fs +ucode-mod-nl80211 +ucode-mod-rtnl +ucode-mod-ubus +ucode-mod-uloop +libblobmsg-json +libudebug
-+CORE_DEPENDS = +ucode +libubus +libucode +ucode-mod-fs +ucode-mod-nl80211 +ucode-mod-rtnl +ucode-mod-ubus +ucode-mod-uloop +libblobmsg-json
- OPENSSL_DEPENDS = +PACKAGE_$(1):libopenssl
+ 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
  
- DRIVER_MAKEOPTS= \
-@@ -583,7 +583,7 @@ TARGET_CPPFLAGS := \
- 	-D_GNU_SOURCE \
- 	$(if $(CONFIG_WPA_MSG_MIN_PRIORITY),-DCONFIG_MSG_MIN_PRIORITY=$(CONFIG_WPA_MSG_MIN_PRIORITY))
+ 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
  
--TARGET_LDFLAGS += -lubox -lubus -lblobmsg_json -lucode -lm -lnl-tiny -ludebug
-+TARGET_LDFLAGS += -lubox -lubus -lblobmsg_json -lucode -lm -lnl-tiny
- 
- ifdef CONFIG_WPA_ENABLE_WEP
-     DRIVER_MAKEOPTS += CONFIG_WEP=y
+ 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 84138f29a58..750fd535a4a 100644
+index b85f523b..84138f29 100644
 --- a/package/network/services/hostapd/files/hostapd.uc
 +++ b/package/network/services/hostapd/files/hostapd.uc
-@@ -782,33 +782,8 @@ let main_obj = {
+@@ -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);
--}
--
++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.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", {}));
+-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 aac144b3399..d624f27cddc 100644
+index 1709bb01..aac144b3 100644
 --- a/package/network/services/hostapd/files/wpa_supplicant.uc
 +++ b/package/network/services/hostapd/files/wpa_supplicant.uc
-@@ -244,32 +244,8 @@ let main_obj = {
+@@ -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);
--}
--
++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.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", {}));
+-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/files/wpad_acl.json b/package/network/services/hostapd/files/wpad_acl.json
-index 7532953cabd..d00fd945ba5 100644
---- a/package/network/services/hostapd/files/wpad_acl.json
-+++ b/package/network/services/hostapd/files/wpad_acl.json
-@@ -9,12 +9,8 @@
- 		},
- 		"hostapd": {
- 			"methods": [ "apsta_state" ]
--		},
--		"udebug": {
--			"methods": [ "get_config" ]
- 		}
- 	},
--	"subscribe": [ "udebug" ],
- 	"publish": [ "hostapd", "hostapd.*", "wpa_supplicant", "wpa_supplicant.*" ],
- 	"send": [ "bss.*", "wps_credentials" ]
- }
-diff --git a/package/network/services/hostapd/patches/601-ucode_support.patch b/package/network/services/hostapd/patches/601-ucode_support.patch
-index cfdb51f356c..23f535b6852 100644
---- a/package/network/services/hostapd/patches/601-ucode_support.patch
-+++ b/package/network/services/hostapd/patches/601-ucode_support.patch
-@@ -196,7 +196,7 @@
-  
-  #ifdef CONFIG_BGSCAN
-  	if (state == WPA_COMPLETED && wpa_s->current_ssid != wpa_s->bgscan_ssid)
--@@ -7594,6 +7595,7 @@ struct wpa_supplicant * wpa_supplicant_a
-+@@ -7596,6 +7597,7 @@ struct wpa_supplicant * wpa_supplicant_a
-  #endif /* CONFIG_P2P */
-  
-  	wpas_ubus_add_bss(wpa_s);
-@@ -204,7 +204,7 @@
-  
-  	return wpa_s;
-  }
--@@ -7621,6 +7623,7 @@ int wpa_supplicant_remove_iface(struct w
-+@@ -7623,6 +7625,7 @@ int wpa_supplicant_remove_iface(struct w
-  	struct wpa_supplicant *parent = wpa_s->parent;
-  #endif /* CONFIG_MESH */
-  
-@@ -212,7 +212,7 @@
-  	wpas_ubus_free_bss(wpa_s);
-  
-  	/* Remove interface from the global list of interfaces */
--@@ -7931,6 +7934,7 @@ struct wpa_global * wpa_supplicant_init(
-+@@ -7933,6 +7936,7 @@ struct wpa_global * wpa_supplicant_init(
-  
-  	eloop_register_timeout(WPA_SUPPLICANT_CLEANUP_INTERVAL, 0,
-  			       wpas_periodic, global, NULL);
-@@ -220,7 +220,7 @@
-  
-  	return global;
-  }
--@@ -7969,12 +7973,8 @@ int wpa_supplicant_run(struct wpa_global
-+@@ -7971,12 +7975,8 @@ int wpa_supplicant_run(struct wpa_global
-  	eloop_register_signal_terminate(wpa_supplicant_terminate, global);
-  	eloop_register_signal_reconfig(wpa_supplicant_reconfig, global);
-  
-@@ -233,7 +233,7 @@
-  	return 0;
-  }
-  
--@@ -8007,6 +8007,8 @@ void wpa_supplicant_deinit(struct wpa_gl
-+@@ -8009,6 +8009,8 @@ void wpa_supplicant_deinit(struct wpa_gl
-  
-  	wpas_notify_supplicant_deinitialized(global);
-  
-@@ -395,60 +395,7 @@
-  {
- --- a/src/drivers/driver_nl80211.c
- +++ b/src/drivers/driver_nl80211.c
--@@ -73,6 +73,16 @@ enum nlmsgerr_attrs {
-- 
-- #endif /* ANDROID */
-- 
--+static void handle_nl_debug_hook(struct nl_msg *msg, int tx)
--+{
--+	const struct nlmsghdr *nlh;
--+
--+	if (!wpa_netlink_hook)
--+		return;
--+
--+	nlh = nlmsg_hdr(msg);
--+	wpa_netlink_hook(tx, nlh, nlh->nlmsg_len);
--+}
-- 
-- static struct nl_sock * nl_create_handle(struct nl_cb *cb, const char *dbg)
-- {
--@@ -379,6 +389,11 @@ static int no_seq_check(struct nl_msg *m
-- 	return NL_OK;
-- }
-- 
--+static int debug_handler(struct nl_msg *msg, void *arg)
--+{
--+	handle_nl_debug_hook(msg, 0);
--+	return NL_OK;
--+}
-- 
-- static void nl80211_nlmsg_clear(struct nl_msg *msg)
-- {
--@@ -415,6 +430,7 @@ static int send_and_recv(struct nl80211_
-- 	if (!msg)
-- 		return -ENOMEM;
-- 
--+	handle_nl_debug_hook(msg, 1);
-- 	cb = nl_cb_clone(global->nl_cb);
-- 	if (!cb)
-- 		goto out;
--@@ -443,6 +459,7 @@ static int send_and_recv(struct nl80211_
-- 
-- 	err = 1;
-- 
--+	nl_cb_set(cb, NL_CB_MSG_IN, NL_CB_CUSTOM, debug_handler, NULL);
-- 	nl_cb_err(cb, NL_CB_CUSTOM, error_handler, &err);
-- 	nl_cb_set(cb, NL_CB_FINISH, NL_CB_CUSTOM, finish_handler, &err);
-- 	if (ack_handler_custom) {
--@@ -919,6 +936,7 @@ nl80211_get_wiphy_data_ap(struct i802_bs
-- 			os_free(w);
-- 			return NULL;
-- 		}
--+		nl_cb_set(w->nl_cb, NL_CB_MSG_IN, NL_CB_CUSTOM, debug_handler, NULL);
-- 		nl_cb_set(w->nl_cb, NL_CB_SEQ_CHECK, NL_CB_CUSTOM,
-- 			  no_seq_check, NULL);
-- 		nl_cb_set(w->nl_cb, NL_CB_VALID, NL_CB_CUSTOM,
--@@ -1333,7 +1351,7 @@ static void wpa_driver_nl80211_event_rtm
-+@@ -1333,7 +1333,7 @@ static void wpa_driver_nl80211_event_rtm
-  		}
-  		wpa_printf(MSG_DEBUG, "nl80211: Interface down (%s/%s)",
-  			   namebuf, ifname);
-@@ -457,7 +404,7 @@
-  			wpa_printf(MSG_DEBUG,
-  				   "nl80211: Not the main interface (%s) - do not indicate interface down",
-  				   drv->first_bss->ifname);
--@@ -1369,7 +1387,7 @@ static void wpa_driver_nl80211_event_rtm
-+@@ -1369,7 +1369,7 @@ static void wpa_driver_nl80211_event_rtm
-  		}
-  		wpa_printf(MSG_DEBUG, "nl80211: Interface up (%s/%s)",
-  			   namebuf, ifname);
-@@ -466,23 +413,7 @@
-  			wpa_printf(MSG_DEBUG,
-  				   "nl80211: Not the main interface (%s) - do not indicate interface up",
-  				   drv->first_bss->ifname);
--@@ -1992,6 +2010,7 @@ static int wpa_driver_nl80211_init_nl_gl
-- 		/* Continue without vendor events */
-- 	}
-- 
--+	nl_cb_set(global->nl_cb, NL_CB_MSG_IN, NL_CB_CUSTOM, debug_handler, NULL);
-- 	nl_cb_set(global->nl_cb, NL_CB_SEQ_CHECK, NL_CB_CUSTOM,
-- 		  no_seq_check, NULL);
-- 	nl_cb_set(global->nl_cb, NL_CB_VALID, NL_CB_CUSTOM,
--@@ -2160,6 +2179,7 @@ static int nl80211_init_bss(struct i802_
-- 	if (!bss->nl_cb)
-- 		return -1;
-- 
--+	nl_cb_set(bss->nl_cb, NL_CB_MSG_IN, NL_CB_CUSTOM, debug_handler, NULL);
-- 	nl_cb_set(bss->nl_cb, NL_CB_SEQ_CHECK, NL_CB_CUSTOM,
-- 		  no_seq_check, NULL);
-- 	nl_cb_set(bss->nl_cb, NL_CB_VALID, NL_CB_CUSTOM,
--@@ -8432,6 +8452,7 @@ static void *i802_init(struct hostapd_da
-+@@ -8432,6 +8432,7 @@ static void *i802_init(struct hostapd_da
-  	char master_ifname[IFNAMSIZ];
-  	int ifindex, br_ifindex = 0;
-  	int br_added = 0;
-@@ -490,7 +421,7 @@
-  
-  	bss = wpa_driver_nl80211_drv_init(hapd, params->ifname,
-  					  params->global_priv, 1,
--@@ -8491,21 +8512,17 @@ static void *i802_init(struct hostapd_da
-+@@ -8491,21 +8492,17 @@ static void *i802_init(struct hostapd_da
-  	    (params->num_bridge == 0 || !params->bridge[0]))
-  		add_ifidx(drv, br_ifindex, drv->ifindex);
-  
-@@ -522,7 +453,7 @@
-  	}
-  
-  	if (drv->capa.flags2 & WPA_DRIVER_FLAGS2_CONTROL_PORT_RX) {
--@@ -8875,6 +8892,50 @@ static int wpa_driver_nl80211_if_remove(
-+@@ -8875,6 +8872,50 @@ static int wpa_driver_nl80211_if_remove(
-  	return 0;
-  }
-  
-@@ -573,7 +504,7 @@
-  
-  static int cookie_handler(struct nl_msg *msg, void *arg)
-  {
--@@ -10513,6 +10574,37 @@ static int driver_nl80211_if_remove(void
-+@@ -10513,6 +10554,37 @@ static int driver_nl80211_if_remove(void
-  }
-  
-  
-@@ -611,7 +542,7 @@
-  static int driver_nl80211_send_mlme(void *priv, const u8 *data,
-  				    size_t data_len, int noack,
-  				    unsigned int freq,
--@@ -13697,6 +13789,8 @@ const struct wpa_driver_ops wpa_driver_n
-+@@ -13697,6 +13769,8 @@ const struct wpa_driver_ops wpa_driver_n
-  	.set_acl = wpa_driver_nl80211_set_acl,
-  	.if_add = wpa_driver_nl80211_if_add,
-  	.if_remove = driver_nl80211_if_remove,
-@@ -620,52 +551,3 @@
-  	.send_mlme = driver_nl80211_send_mlme,
-  	.get_hw_feature_data = nl80211_get_hw_feature_data,
-  	.sta_add = wpa_driver_nl80211_sta_add,
----- a/src/utils/wpa_debug.c
--+++ b/src/utils/wpa_debug.c
--@@ -26,6 +26,10 @@ static FILE *wpa_debug_tracing_file = NU
-- #define WPAS_TRACE_PFX "wpas <%d>: "
-- #endif /* CONFIG_DEBUG_LINUX_TRACING */
-- 
--+void (*wpa_printf_hook)(int level, const char *fmt, va_list ap);
--+void (*wpa_hexdump_hook)(int level, const char *title, const void *buf,
--+			 size_t len);
--+void (*wpa_netlink_hook)(int tx, const void *data, size_t len);
-- 
-- int wpa_debug_level = MSG_INFO;
-- int wpa_debug_show_keys = 0;
--@@ -210,6 +214,12 @@ void _wpa_printf(int level, const char *
-- {
-- 	va_list ap;
-- 
--+	if (wpa_printf_hook) {
--+		va_start(ap, fmt);
--+		wpa_printf_hook(level, fmt, ap);
--+		va_end(ap);
--+	}
--+
-- 	if (level >= wpa_debug_level) {
-- #ifdef CONFIG_ANDROID_LOG
-- 		va_start(ap, fmt);
--@@ -260,6 +270,9 @@ void _wpa_hexdump(int level, const char
-- {
-- 	size_t i;
-- 
--+	if (wpa_hexdump_hook)
--+		wpa_hexdump_hook(level, title, buf, len);
--+
-- #ifdef CONFIG_DEBUG_LINUX_TRACING
-- 	if (wpa_debug_tracing_file != NULL) {
-- 		fprintf(wpa_debug_tracing_file,
----- a/src/utils/wpa_debug.h
--+++ b/src/utils/wpa_debug.h
--@@ -11,6 +11,10 @@
-- 
-- #include "wpabuf.h"
-- 
--+extern void (*wpa_printf_hook)(int level, const char *fmt, va_list ap);
--+extern void (*wpa_hexdump_hook)(int level, const char *title,
--+				const void *buf, size_t len);
--+extern void (*wpa_netlink_hook)(int tx, const void *data, size_t len);
-- extern int wpa_debug_level;
-- extern int wpa_debug_show_keys;
-- extern int wpa_debug_timestamp;
-diff --git a/package/network/services/hostapd/src/src/ap/ucode.c b/package/network/services/hostapd/src/src/ap/ucode.c
-index 16d1b515360..af97091be55 100644
---- a/package/network/services/hostapd/src/src/ap/ucode.c
-+++ b/package/network/services/hostapd/src/src/ap/ucode.c
-@@ -711,7 +711,6 @@ int hostapd_ucode_init(struct hapd_interfaces *ifaces)
- 		{ "freq_info", uc_wpa_freq_info },
- 		{ "add_iface", uc_hostapd_add_iface },
- 		{ "remove_iface", uc_hostapd_remove_iface },
--		{ "udebug_set", uc_wpa_udebug_set },
- 	};
- 	static const uc_function_list_t bss_fns[] = {
- 		{ "ctrl", uc_hostapd_bss_ctrl },
 diff --git a/package/network/services/hostapd/src/src/utils/ucode.c b/package/network/services/hostapd/src/src/utils/ucode.c
-index 14fd6bc5ec9..2beeb9a7ff6 100644
+index 29c753c3..14fd6bc5 100644
 --- a/package/network/services/hostapd/src/src/utils/ucode.c
 +++ b/package/network/services/hostapd/src/src/utils/ucode.c
-@@ -4,20 +4,12 @@
- #include "crypto/crypto.h"
- #include "crypto/sha1.h"
- #include "common/ieee802_11_common.h"
--#include <linux/netlink.h>
--#include <linux/genetlink.h>
--#include <linux/nl80211.h>
- #include <libubox/uloop.h>
- #include <ucode/compiler.h>
--#include <udebug.h>
- 
- static uc_value_t *registry;
- static uc_vm_t vm;
+@@ -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];
--
--#define UDEBUG_FLAG_RX_FRAME	(1ULL << 0)
+ 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)
  {
-@@ -259,115 +251,6 @@ int wpa_ucode_call_prepare(const char *fname)
- 	return 0;
- }
+@@ -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;
  
--static void udebug_printf_hook(int level, const char *fmt, va_list ap)
--{
--	udebug_entry_init(&ud_log);
--	udebug_entry_vprintf(&ud_log, fmt, ap);
--	udebug_entry_add(&ud_log);
--}
--
--static void udebug_hexdump_hook(int level, const char *title,
--                const void *data, size_t len)
--{
--	char *buf;
--
--	udebug_entry_init(&ud_log);
--	udebug_entry_printf(&ud_log, "%s - hexdump:", title);
--	buf = udebug_entry_append(&ud_log, NULL, 3 * len);
--	for (size_t i = 0; i < len; i++)
--		buf += sprintf(buf, " %02x", *(uint8_t *)(data + i));
--	udebug_entry_add(&ud_log);
--}
--
--static void udebug_netlink_hook(int tx, const void *data, size_t len)
--{
--	struct {
--		uint16_t pkttype;
--		uint16_t arphdr;
--		uint16_t _pad[5];
--		uint16_t proto;
--	} hdr = {
--		.pkttype = host_to_be16(tx ? 7 : 6),
--		.arphdr = host_to_be16(824),
--		.proto = host_to_be16(16),
--	};
--	const struct nlmsghdr *nlh = data;
--	const struct genlmsghdr *gnlh = data + NLMSG_HDRLEN;
--	struct udebug_buf *buf = &ud_nl[!!tx];
--
--	if (nlh->nlmsg_type == 0x10)
--		buf = &ud_nl[2];
--	else if (!tx && gnlh->cmd == NL80211_CMD_FRAME &&
--	         !(udebug_buf_flags(buf) & UDEBUG_FLAG_RX_FRAME))
+-	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);
--}
--
--uc_value_t *uc_wpa_udebug_set(uc_vm_t *vm, size_t nargs)
+ 	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)
 -{
--	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;
+-	udebug_ubus_apply_config(&ud, udebug_rings, ARRAY_SIZE(udebug_rings),
+-				 data, enabled);
 -
--	if (enabled == val)
--		return ucv_boolean_new(true);
--
--	enabled = val;
--	if (val) {
--		udebug_init(&ud);
--		udebug_auto_connect(&ud, NULL);
--		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);
--
+-	if (udebug_buf_valid(&ud_log)) {
 -		wpa_printf_hook = udebug_printf_hook;
 -		wpa_hexdump_hook = udebug_hexdump_hook;
--		wpa_netlink_hook = udebug_netlink_hook;
 -	} else {
--		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);
 -		wpa_printf_hook = NULL;
 -		wpa_hexdump_hook = NULL;
--		wpa_netlink_hook = NULL;
 -	}
 -
--	return ucv_boolean_new(true);
+-	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 *wpa_ucode_global_init(const char *name, uc_resource_type_t *global_type)
+ uc_value_t *uc_wpa_udebug_set(uc_vm_t *vm, size_t nargs)
  {
- 	uc_value_t *global = uc_resource_new(global_type, NULL);
-diff --git a/package/network/services/hostapd/src/src/utils/ucode.h b/package/network/services/hostapd/src/src/utils/ucode.h
-index c083241e079..2c1886976ee 100644
---- a/package/network/services/hostapd/src/src/utils/ucode.h
-+++ b/package/network/services/hostapd/src/src/utils/ucode.h
-@@ -21,7 +21,6 @@ int wpa_ucode_registry_add(uc_value_t *reg, uc_value_t *val);
- uc_value_t *wpa_ucode_registry_get(uc_value_t *reg, int idx);
- uc_value_t *wpa_ucode_registry_remove(uc_value_t *reg, int idx);
+-	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;
+ 	}
  
--uc_value_t *uc_wpa_udebug_set(uc_vm_t *vm, size_t nargs);
- uc_value_t *uc_wpa_printf(uc_vm_t *vm, size_t nargs);
- uc_value_t *uc_wpa_getpid(uc_vm_t *vm, size_t nargs);
- uc_value_t *uc_wpa_sha1(uc_vm_t *vm, size_t nargs);
-diff --git a/package/network/services/hostapd/src/wpa_supplicant/ucode.c b/package/network/services/hostapd/src/wpa_supplicant/ucode.c
-index 397f85bde7f..6cba73dcd53 100644
---- a/package/network/services/hostapd/src/wpa_supplicant/ucode.c
-+++ b/package/network/services/hostapd/src/wpa_supplicant/ucode.c
-@@ -262,7 +262,6 @@ int wpas_ucode_init(struct wpa_global *gl)
- 		{ "getpid", uc_wpa_getpid },
- 		{ "add_iface", uc_wpas_add_iface },
- 		{ "remove_iface", uc_wpas_remove_iface },
--		{ "udebug_set", uc_wpa_udebug_set },
- 	};
- 	static const uc_function_list_t iface_fns[] = {
- 		{ "status", uc_wpas_iface_status },
+ 	return ucv_boolean_new(true);
+-- 
+2.18.0
+
diff --git a/autobuild_mac80211_release/0008-wifi7-netifd-revert-udebug.patch b/autobuild_mac80211_release/0008-wifi7-netifd-revert-udebug.patch
deleted file mode 100644
index ef367e8..0000000
--- a/autobuild_mac80211_release/0008-wifi7-netifd-revert-udebug.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/package/network/config/netifd/Makefile b/package/network/config/netifd/Makefile
-index ccd566e0..936fdfbb 100644
---- a/package/network/config/netifd/Makefile
-+++ b/package/network/config/netifd/Makefile
-@@ -21,7 +21,7 @@ include $(INCLUDE_DIR)/cmake.mk
- define Package/netifd
-   SECTION:=base
-   CATEGORY:=Base system
--  DEPENDS:=+libuci +libnl-tiny +libubus +ubus +ubusd +jshn +libubox +libudebug
-+  DEPENDS:=+libuci +libnl-tiny +libubus +ubus +ubusd +jshn +libubox
-   TITLE:=OpenWrt Network Interface Configuration Daemon
- endef
- 
diff --git a/autobuild_mac80211_release/lede-build-sanity.sh b/autobuild_mac80211_release/lede-build-sanity.sh
index 9c939f6..bcd0bca 100755
--- a/autobuild_mac80211_release/lede-build-sanity.sh
+++ b/autobuild_mac80211_release/lede-build-sanity.sh
@@ -223,19 +223,34 @@
 		cp -fpR ${BUILD_DIR}/./../mac80211_package/package/network/config/netifd ${BUILD_DIR}/package/network/config
 		rm -rf  ${MTK_FEED_DIR}/autobuild_mac80211_release/package/network/config/netifd
 		cp -fpR ${MTK_FEED_DIR}/autobuild_mac80211_release/package/network/config/netifd_new ${MTK_FEED_DIR}/autobuild_mac80211_release/package/network/config/netifd
+		#ucode
+		rm -rf ${BUILD_DIR}/package/utils/ucode
+		cp -fpR ${BUILD_DIR}/./../mac80211_package/package/utils/ucode ${BUILD_DIR}/package/utils
+		#ubus
+		rm -rf ${BUILD_DIR}/package/system/ubus
+		cp -fpR ${BUILD_DIR}/./../mac80211_package/package/system/ubus ${BUILD_DIR}/package/system
+		#ubox & libubox
+		rm -rf ${BUILD_DIR}/package/system/ubox
+		cp -fpR ${BUILD_DIR}/./../mac80211_package/package/system/ubox ${BUILD_DIR}/package/system
+		rm -rf ${BUILD_DIR}/package/libs/libubox
+		cp -fpR ${BUILD_DIR}/./../mac80211_package/package/libs/libubox ${BUILD_DIR}/package/libs
+		#udebug
+		rm -rf ${BUILD_DIR}/package/libs/udebug
+		cp -fpR ${BUILD_DIR}/./../mac80211_package/package/libs/udebug ${BUILD_DIR}/package/libs
+		#umdns
+		rm -rf ${BUILD_DIR}/package/network/services/umdns
+		cp -fpR ${BUILD_DIR}/./../mac80211_package/package/network/services/umdns ${BUILD_DIR}/package/network/services
+		#rpcd
+		rm -rf ${BUILD_DIR}/package/system/rpcd
+		cp -fpR ${BUILD_DIR}/./../mac80211_package/package/system/rpcd ${BUILD_DIR}/package/system
+		rm -rf ${MTK_FEED_DIR}/autobuild_mac80211_release/package/system/rpcd
+		#procd
+		rm -rf ${BUILD_DIR}/package/system/procd
+		cp -fpR ${BUILD_DIR}/./../mac80211_package/package/system/procd ${BUILD_DIR}/package/system
 	else
 		echo "=========================Netifd OLD====================="
 	fi
 
-	rm -rf ${BUILD_DIR}/package/utils/ucode
-	cp -fpR ${BUILD_DIR}/./../mac80211_package/package/utils/ucode ${BUILD_DIR}/package/utils
-	rm -rf ${BUILD_DIR}/package/libs/libubox
-	cp -fpR ${BUILD_DIR}/./../mac80211_package/package/libs/libubox ${BUILD_DIR}/package/libs
-	rm -rf ${BUILD_DIR}/package/system/rpcd
-	cp -fpR ${BUILD_DIR}/./../mac80211_package/package/system/rpcd ${BUILD_DIR}/package/system
-	rm -rf ${BUILD_DIR}/package/system/procd
-	cp -fpR ${BUILD_DIR}/./../mac80211_package/package/system/procd ${BUILD_DIR}/package/system
-
 	rm -rf ${BUILD_DIR}/package/kernel/mac80211
 	if [ "$1" = "1" ]; then
 		echo "=========================MAC80211 v6.1==================="
@@ -319,6 +334,7 @@
 	# Hostapd Makefile
 	if [ "$2" = "1" ]; then
 			patch -f -p1 -i ${MTK_FEED_DIR}/autobuild_mac80211_release/0002-wifi7-hostapd-makefile-for-utils.patch || exit 1
+			patch -f -p1 -i ${MTK_FEED_DIR}/autobuild_mac80211_release/0007-wifi7-hostapd-revert-hostapd-udebug.patch || exit 1
 	else
 			patch -f -p1 -i ${MTK_FEED_DIR}/autobuild_mac80211_release/0002-wifi6-hostapd-makefile-for-utils.patch || exit 1
 	fi
diff --git a/autobuild_mac80211_release/mt7988_mt7996_mac80211/0002-add-EHT-config-for-hostapd.patch b/autobuild_mac80211_release/mt7988_mt7996_mac80211/0002-add-EHT-config-for-hostapd.patch
index 9c18b4c..d448233 100644
--- a/autobuild_mac80211_release/mt7988_mt7996_mac80211/0002-add-EHT-config-for-hostapd.patch
+++ b/autobuild_mac80211_release/mt7988_mt7996_mac80211/0002-add-EHT-config-for-hostapd.patch
@@ -33,7 +33,7 @@
 +  HOSTAPD_IEEE80211BE:=y
 +endif
 +
- CORE_DEPENDS = +ucode +libubus +libucode +ucode-mod-fs +ucode-mod-nl80211 +ucode-mod-rtnl +ucode-mod-ubus +ucode-mod-uloop +libblobmsg-json
+ CORE_DEPENDS = +ucode +libubus +libucode +ucode-mod-fs +ucode-mod-nl80211 +ucode-mod-rtnl +ucode-mod-ubus +ucode-mod-uloop +libblobmsg-json +libudebug
  
  DRIVER_MAKEOPTS= \
 @@ -88,6 +93,7 @@ DRIVER_MAKEOPTS= \
diff --git a/autobuild_mac80211_release/package/network/config/netifd_new/patches/0002-netifd-revert-udebug.patch b/autobuild_mac80211_release/package/network/config/netifd_new/patches/0002-netifd-revert-udebug.patch
deleted file mode 100644
index 963cea1..0000000
--- a/autobuild_mac80211_release/package/network/config/netifd_new/patches/0002-netifd-revert-udebug.patch
+++ /dev/null
@@ -1,223 +0,0 @@
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 28ab9ca..5ad8695 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -33,13 +33,11 @@ FIND_LIBRARY(uci NAMES uci)
- FIND_LIBRARY(ubox NAMES ubox)
- FIND_LIBRARY(ubus NAMES ubus)
- FIND_LIBRARY(json NAMES json-c json)
--FIND_LIBRARY(udebug NAMES udebug)
- FIND_LIBRARY(blobmsg_json NAMES blobmsg_json)
- 
--SET(LIBS ${ubox} ${ubus} ${uci} ${json} ${blobmsg_json} ${udebug})
-+SET(LIBS ${ubox} ${ubus} ${uci} ${json} ${blobmsg_json})
- 
- FIND_PATH(ubox_include_dir libubox/usock.h)
--FIND_PATH(udebug_include_dir udebug.h)
- INCLUDE_DIRECTORIES(${ubox_include_dir})
- 
- IF (NOT DEFINED LIBNL_LIBS)
-diff --git a/main.c b/main.c
-index 403dc12..ec7b1be 100644
---- a/main.c
-+++ b/main.c
-@@ -19,8 +19,6 @@
- #include <stdarg.h>
- #include <syslog.h>
- 
--#include <udebug.h>
--
- #include "netifd.h"
- #include "ubus.h"
- #include "config.h"
-@@ -37,9 +35,6 @@ const char *resolv_conf = DEFAULT_RESOLV_CONF;
- static char **global_argv;
- 
- static struct list_head process_list = LIST_HEAD_INIT(process_list);
--static struct udebug ud;
--static struct udebug_buf udb;
--static bool udebug_enabled;
- 
- #define DEFAULT_LOG_LEVEL L_NOTICE
- 
-@@ -68,49 +63,6 @@ netifd_delete_process(struct netifd_process *proc)
- 	close(proc->log.fd.fd);
- }
- 
--static void
--netifd_udebug_vprintf(const char *format, va_list ap)
--{
--	if (!udebug_enabled)
--		return;
--
--	udebug_entry_init(&udb);
--	udebug_entry_vprintf(&udb, format, ap);
--	udebug_entry_add(&udb);
--}
--
--void netifd_udebug_printf(const char *format, ...)
--{
--	va_list ap;
--
--	va_start(ap, format);
--	netifd_udebug_vprintf(format, ap);
--	va_end(ap);
--}
--
--void netifd_udebug_set_enabled(bool val)
--{
--	static const struct udebug_buf_meta meta = {
--		.name = "netifd_log",
--		.format = UDEBUG_FORMAT_STRING,
--	};
--
--	if (udebug_enabled == val)
--		return;
--
--	udebug_enabled = val;
--	if (!val) {
--		udebug_buf_free(&udb);
--		udebug_free(&ud);
--		return;
--	}
--
--	udebug_init(&ud);
--	udebug_auto_connect(&ud, NULL);
--	udebug_buf_init(&udb, 1024, 64 * 1024);
--	udebug_buf_add(&ud, &udb, &meta);
--}
--
- void
- __attribute__((format(printf, 2, 0)))
- netifd_log_message(int priority, const char *format, ...)
-@@ -121,7 +73,6 @@ netifd_log_message(int priority, const char *format, ...)
- 		return;
- 
- 	va_start(vl, format);
--	netifd_udebug_vprintf(format, vl);
- 	if (use_syslog)
- 		vsyslog(log_class[priority], format, vl);
- 	else
-diff --git a/netifd.h b/netifd.h
-index c579e7c..9645a0a 100644
---- a/netifd.h
-+++ b/netifd.h
-@@ -70,7 +70,6 @@ enum {
- #ifdef DEBUG
- #define DPRINTF(format, ...) fprintf(stderr, "%s(%d): " format, __func__, __LINE__, ## __VA_ARGS__)
- #define D(level, format, ...) do { \
--		netifd_udebug_printf("[" #level "] %s(%d): " format,  __func__, __LINE__, ## __VA_ARGS__); \
- 		if (debug_mask & (1 << (DEBUG_ ## level))) \
- 				DPRINTF(format, ##__VA_ARGS__); \
- 	} while (0)
-@@ -96,8 +95,6 @@ struct netifd_process {
- 	bool log_overflow;
- };
- 
--void netifd_udebug_printf(const char *format, ...);
--void netifd_udebug_set_enabled(bool val);
- void netifd_log_message(int priority, const char *format, ...);
- 
- int netifd_start_process(const char **argv, char **env, struct netifd_process *proc);
-diff --git a/ubus.c b/ubus.c
-index 55daec1..40fc9f4 100644
---- a/ubus.c
-+++ b/ubus.c
-@@ -27,7 +27,6 @@
- struct ubus_context *ubus_ctx = NULL;
- static struct blob_buf b;
- static const char *ubus_path;
--struct ubus_subscriber udebug_sub;
- 
- /* global object */
- 
-@@ -1366,74 +1365,9 @@ netifd_extdev_invoke(uint32_t id, const char *method, struct blob_attr *msg,
- 	return ubus_invoke(ubus_ctx, id, method, msg, data_cb, data, 3000);
- }
- 
--static struct blob_attr *
--find_attr(struct blob_attr *attr, const char *name, enum blobmsg_type type)
--{
--	struct blobmsg_policy policy = { name, type };
--	struct blob_attr *ret;
--
--	if (!attr)
--		return NULL;
--
--	blobmsg_parse_attr(&policy, 1, &ret, attr);
--
--	return ret;
--}
--
--static void
--netifd_udebug_config_cb(struct blob_attr *data)
--{
--	enum {
--		CFG_ATTR_ENABLED,
--		__CFG_ATTR_MAX
--	};
--	static const struct blobmsg_policy policy[__CFG_ATTR_MAX] = {
--		[CFG_ATTR_ENABLED] = { "enabled", BLOBMSG_TYPE_STRING },
--	};
--	struct blob_attr *tb[__CFG_ATTR_MAX];
--	bool en;
--
--	data = find_attr(data, "service", BLOBMSG_TYPE_TABLE);
--	data = find_attr(data, "netifd", BLOBMSG_TYPE_TABLE);
--	if (!data)
--		return;
--
--	blobmsg_parse_attr(policy, __CFG_ATTR_MAX, tb, data);
--	if (!tb[CFG_ATTR_ENABLED])
--		return;
--
--	en = !!atoi(blobmsg_get_string(tb[CFG_ATTR_ENABLED]));
--	netifd_udebug_set_enabled(en);
--}
--
--static int
--netifd_udebug_notify_cb(struct ubus_context *ctx, struct ubus_object *obj,
--			struct ubus_request_data *req, const char *method,
--			struct blob_attr *msg)
--{
--	netifd_udebug_config_cb(msg);
--
--	return 0;
--}
--
--static void
--netifd_udebug_req_cb(struct ubus_request *req, int type, struct blob_attr *msg)
--{
--	netifd_udebug_config_cb(msg);
--}
--
--static bool
--netifd_udebug_sub_cb(struct ubus_context *ctx, struct ubus_subscriber *sub,
--		     const char *path)
--{
--	return !strcmp(path, "udebug");
--}
--
- int
- netifd_ubus_init(const char *path)
- {
--	uint32_t id;
--
- 	uloop_init();
- 	ubus_path = path;
- 
-@@ -1450,14 +1384,6 @@ netifd_ubus_init(const char *path)
- 	netifd_add_object(&wireless_object);
- 	netifd_add_iface_object();
- 
--	udebug_sub.cb = netifd_udebug_notify_cb;
--	udebug_sub.new_obj_cb = netifd_udebug_sub_cb;
--	ubus_register_subscriber(ubus_ctx, &udebug_sub);
--	if (ubus_lookup_id(ubus_ctx, "udebug", &id) == 0) {
--		ubus_subscribe(ubus_ctx, &udebug_sub, id);
--		ubus_invoke(ubus_ctx, id, "get_config", NULL, netifd_udebug_req_cb, NULL, 1000);
--	}
--
- 	return 0;
- }
- 
diff --git a/autobuild_mac80211_release/package/system/rpcd/patches/0001-rpcd-iwinfo-constify-string-map-arg-for-rpc_iwinfo_call_int.patch b/autobuild_mac80211_release/package/system/rpcd/patches/0001-rpcd-iwinfo-constify-string-map-arg-for-rpc_iwinfo_call_int.patch
new file mode 100644
index 0000000..73272fa
--- /dev/null
+++ b/autobuild_mac80211_release/package/system/rpcd/patches/0001-rpcd-iwinfo-constify-string-map-arg-for-rpc_iwinfo_call_int.patch
@@ -0,0 +1,13 @@
+diff --git a/iwinfo.c b/iwinfo.c
+index ba4fc1e..e57ca8b 100644
+--- a/iwinfo.c
++++ b/iwinfo.c
+@@ -96,7 +96,7 @@ rpc_iwinfo_close(void)
+ 
+ static void
+ rpc_iwinfo_call_int(const char *name, int (*func)(const char *, int *),
+-                    const char **map)
++                    const char * const *map)
+ {
+ 	int rv;
+