diff --git a/autobuild_mac80211_release/0002-wifi6-hostapd-makefile-for-utils.patch b/autobuild_mac80211_release/0002-wifi6-hostapd-makefile-for-utils.patch
index a00e143..4ddd8b1 100644
--- a/autobuild_mac80211_release/0002-wifi6-hostapd-makefile-for-utils.patch
+++ b/autobuild_mac80211_release/0002-wifi6-hostapd-makefile-for-utils.patch
@@ -1,20 +1,3 @@
-diff --git a/package/network/config/netifd/Makefile b/package/network/config/netifd/Makefile
-index 8084327..8fd4c85 100644
---- a/package/network/config/netifd/Makefile
-+++ b/package/network/config/netifd/Makefile
-@@ -5,9 +5,9 @@ PKG_RELEASE:=3
- 
- PKG_SOURCE_PROTO:=git
- PKG_SOURCE_URL=$(PROJECT_GIT)/project/netifd.git
--PKG_SOURCE_DATE:=2023-08-31
--PKG_SOURCE_VERSION:=1a07f1dff32b3af49e39533e33e8964b59535662
--PKG_MIRROR_HASH:=dc621dd04c3c9631002f929cf10a4620f57af8b0baf614c590bda17957fa6201
-+PKG_SOURCE_DATE:=2023-07-17
-+PKG_SOURCE_VERSION:=0ff22a6a68ce942d4c9e7d58355d128dd3793b06
-+PKG_MIRROR_HASH:=4cc81829fa6eb571d67f6879c78d2f514b757a34cc963b7627d55a7a8deffb75
- PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name>
- 
- PKG_LICENSE:=GPL-2.0
 diff --git a/package/network/services/hostapd/Makefile b/package/network/services/hostapd/Makefile
 index f184830..3af18c6 100644
 --- a/package/network/services/hostapd/Makefile
diff --git a/autobuild_mac80211_release/0002-wifi7-hostapd-makefile-for-utils.patch b/autobuild_mac80211_release/0002-wifi7-hostapd-makefile-for-utils.patch
index 2cda6e4..b07a7e4 100644
--- a/autobuild_mac80211_release/0002-wifi7-hostapd-makefile-for-utils.patch
+++ b/autobuild_mac80211_release/0002-wifi7-hostapd-makefile-for-utils.patch
@@ -1,20 +1,3 @@
-diff --git a/package/network/config/netifd/Makefile b/package/network/config/netifd/Makefile
-index 8084327..8fd4c85 100644
---- a/package/network/config/netifd/Makefile
-+++ b/package/network/config/netifd/Makefile
-@@ -5,9 +5,9 @@ PKG_RELEASE:=3
- 
- PKG_SOURCE_PROTO:=git
- PKG_SOURCE_URL=$(PROJECT_GIT)/project/netifd.git
--PKG_SOURCE_DATE:=2023-08-31
--PKG_SOURCE_VERSION:=1a07f1dff32b3af49e39533e33e8964b59535662
--PKG_MIRROR_HASH:=dc621dd04c3c9631002f929cf10a4620f57af8b0baf614c590bda17957fa6201
-+PKG_SOURCE_DATE:=2023-07-17
-+PKG_SOURCE_VERSION:=0ff22a6a68ce942d4c9e7d58355d128dd3793b06
-+PKG_MIRROR_HASH:=4cc81829fa6eb571d67f6879c78d2f514b757a34cc963b7627d55a7a8deffb75
- PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name>
- 
- PKG_LICENSE:=GPL-2.0
 diff --git a/package/network/services/hostapd/Makefile b/package/network/services/hostapd/Makefile
 index 4bc1b94..348c94d 100644
 --- a/package/network/services/hostapd/Makefile
diff --git a/autobuild_mac80211_release/lede-build-sanity.sh b/autobuild_mac80211_release/lede-build-sanity.sh
index 76cf284..02f2292 100755
--- a/autobuild_mac80211_release/lede-build-sanity.sh
+++ b/autobuild_mac80211_release/lede-build-sanity.sh
@@ -211,6 +211,15 @@
 	cp -fpR ${BUILD_DIR}/./../mac80211_package/package/network/utils/iwinfo ${BUILD_DIR}/package/network/utils
 
 	rm -rf ${BUILD_DIR}/package/network/config/netifd
+	if [ $2 = "1" ]; then
+		echo "=========================Netifd NEW====================="
+		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
+	else
+		echo "=========================Netifd OLD====================="
+	fi
+
 	cp -fpR ${BUILD_DIR}/./../mac80211_package/package/network/config/netifd ${BUILD_DIR}/package/network/config
 
 	rm -rf ${BUILD_DIR}/package/kernel/mac80211
diff --git a/autobuild_mac80211_release/package/network/config/netifd/Makefile b/autobuild_mac80211_release/package/network/config/netifd/Makefile
new file mode 100644
index 0000000..8fd4c85
--- /dev/null
+++ b/autobuild_mac80211_release/package/network/config/netifd/Makefile
@@ -0,0 +1,49 @@
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=netifd
+PKG_RELEASE:=3
+
+PKG_SOURCE_PROTO:=git
+PKG_SOURCE_URL=$(PROJECT_GIT)/project/netifd.git
+PKG_SOURCE_DATE:=2023-07-17
+PKG_SOURCE_VERSION:=0ff22a6a68ce942d4c9e7d58355d128dd3793b06
+PKG_MIRROR_HASH:=4cc81829fa6eb571d67f6879c78d2f514b757a34cc963b7627d55a7a8deffb75
+PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name>
+
+PKG_LICENSE:=GPL-2.0
+PKG_LICENSE_FILES:=
+
+PKG_BUILD_FLAGS:=lto
+
+include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/cmake.mk
+
+define Package/netifd
+  SECTION:=base
+  CATEGORY:=Base system
+  DEPENDS:=+libuci +libnl-tiny +libubus +ubus +ubusd +jshn +libubox
+  TITLE:=OpenWrt Network Interface Configuration Daemon
+endef
+
+define Package/netifd/conffiles
+/etc/udhcpc.user
+/etc/udhcpc.user.d/
+endef
+
+TARGET_CFLAGS += \
+	-I$(STAGING_DIR)/usr/include/libnl-tiny \
+	-I$(STAGING_DIR)/usr/include
+
+CMAKE_OPTIONS += \
+	-DLIBNL_LIBS=-lnl-tiny \
+	-DDEBUG=1
+
+define Package/netifd/install
+	$(INSTALL_DIR) $(1)/sbin
+	$(INSTALL_BIN) $(PKG_BUILD_DIR)/netifd $(1)/sbin/
+	$(CP) ./files/* $(1)/
+	$(INSTALL_DIR) $(1)/etc/udhcpc.user.d/
+	$(CP) $(PKG_BUILD_DIR)/scripts/* $(1)/lib/netifd/
+endef
+
+$(eval $(call BuildPackage,netifd))
diff --git a/autobuild_mac80211_release/package/network/config/netifd/files/etc/hotplug.d/iface/00-netstate b/autobuild_mac80211_release/package/network/config/netifd/files/etc/hotplug.d/iface/00-netstate
new file mode 100644
index 0000000..71ccb01
--- /dev/null
+++ b/autobuild_mac80211_release/package/network/config/netifd/files/etc/hotplug.d/iface/00-netstate
@@ -0,0 +1,6 @@
+[ ifup = "$ACTION" ] && {
+	uci_toggle_state network "$INTERFACE" up 1
+	[ -n "$DEVICE" ] && {
+		uci_toggle_state network "$INTERFACE" ifname "$DEVICE"
+	}
+}
diff --git a/autobuild_mac80211_release/package/network/config/netifd/files/etc/init.d/network b/autobuild_mac80211_release/package/network/config/netifd/files/etc/init.d/network
new file mode 100755
index 0000000..dc208c4
--- /dev/null
+++ b/autobuild_mac80211_release/package/network/config/netifd/files/etc/init.d/network
@@ -0,0 +1,144 @@
+#!/bin/sh /etc/rc.common
+
+START=20
+STOP=90
+
+USE_PROCD=1
+
+init_switch() {
+	setup_switch() { return 0; }
+
+	include /lib/network
+	setup_switch
+}
+
+start_service() {
+	init_switch
+
+	procd_open_instance
+	procd_set_param command /sbin/netifd
+	procd_set_param respawn
+	procd_set_param watch network.interface
+	[ -e /proc/sys/kernel/core_pattern ] && {
+		procd_set_param limits core="unlimited"
+	}
+	procd_close_instance
+}
+
+reload_service() {
+	local rv=0
+
+	init_switch
+	ubus call network reload || rv=1
+	/sbin/wifi reload_legacy
+	return $rv
+}
+
+stop_service() {
+	/sbin/wifi down
+	ifdown -a
+	sleep 1
+}
+
+validate_atm_bridge_section()
+{
+	uci_validate_section network "atm-bridge" "${1}" \
+		'unit:uinteger:0' \
+		'vci:range(32, 65535):35' \
+		'vpi:range(0, 255):8' \
+		'atmdev:uinteger:0' \
+		'encaps:or("llc", "vc"):llc' \
+		'payload:or("bridged", "routed"):bridged'
+}
+
+validate_route_section()
+{
+	uci_validate_section network route "${1}" \
+		'interface:string' \
+		'target:cidr4' \
+		'netmask:netmask4' \
+		'gateway:ip4addr' \
+		'metric:uinteger' \
+		'mtu:uinteger' \
+		'table:or(range(0,65535),string)'
+}
+
+validate_route6_section()
+{
+	uci_validate_section network route6 "${1}" \
+		'interface:string' \
+		'target:cidr6' \
+		'gateway:ip6addr' \
+		'metric:uinteger' \
+		'mtu:uinteger' \
+		'table:or(range(0,65535),string)'
+}
+
+validate_rule_section()
+{
+	uci_validate_section network rule "${1}" \
+		'in:string' \
+		'out:string' \
+		'src:cidr4' \
+		'dest:cidr4' \
+		'tos:range(0,31)' \
+		'mark:string' \
+		'invert:bool' \
+		'lookup:or(range(0,65535),string)' \
+		'goto:range(0,65535)' \
+		'action:or("prohibit", "unreachable", "blackhole", "throw")'
+}
+
+validate_rule6_section()
+{
+	uci_validate_section network rule6 "${1}" \
+		'in:string' \
+		'out:string' \
+		'src:cidr6' \
+		'dest:cidr6' \
+		'tos:range(0,31)' \
+		'mark:string' \
+		'invert:bool' \
+		'lookup:or(range(0,65535),string)' \
+		'goto:range(0,65535)' \
+		'action:or("prohibit", "unreachable", "blackhole", "throw")'
+}
+
+validate_switch_section()
+{
+	uci_validate_section network switch "${1}" \
+		'name:string' \
+		'enable:bool' \
+		'enable_vlan:bool' \
+		'reset:bool' \
+		'ar8xxx_mib_poll_interval:uinteger' \
+		'ar8xxx_mib_type:range(0,1)'
+}
+
+validate_switch_vlan()
+{
+	uci_validate_section network switch_vlan "${1}" \
+		'device:string' \
+		'vlan:uinteger' \
+		'ports:list(ports)'
+}
+
+service_triggers()
+{
+	procd_add_reload_trigger network wireless
+
+	procd_open_validate
+	validate_atm_bridge_section
+	validate_route_section
+	[ -e /proc/sys/net/ipv6 ] && validate_route6_section
+	validate_rule_section
+	[ -e /proc/sys/net/ipv6 ] && validate_rule6_section
+	validate_switch_section
+	validate_switch_vlan
+	procd_close_validate
+}
+
+shutdown() {
+	ifdown -a
+	sleep 1
+}
diff --git a/autobuild_mac80211_release/package/network/config/netifd/files/etc/init.d/packet_steering b/autobuild_mac80211_release/package/network/config/netifd/files/etc/init.d/packet_steering
new file mode 100755
index 0000000..9d8f791
--- /dev/null
+++ b/autobuild_mac80211_release/package/network/config/netifd/files/etc/init.d/packet_steering
@@ -0,0 +1,18 @@
+#!/bin/sh /etc/rc.common
+
+START=25
+USE_PROCD=1
+
+start_service() {
+	reload_service
+}
+
+service_triggers() {
+	procd_add_reload_trigger "network"
+	procd_add_reload_trigger "firewall"
+	procd_add_raw_trigger "interface.*" 1000 /etc/init.d/packet_steering reload
+}
+
+reload_service() {
+	/usr/libexec/network/packet-steering.sh
+}
diff --git a/autobuild_mac80211_release/package/network/config/netifd/files/etc/uci-defaults/14_migrate-dhcp-release b/autobuild_mac80211_release/package/network/config/netifd/files/etc/uci-defaults/14_migrate-dhcp-release
new file mode 100644
index 0000000..f1b384e
--- /dev/null
+++ b/autobuild_mac80211_release/package/network/config/netifd/files/etc/uci-defaults/14_migrate-dhcp-release
@@ -0,0 +1,23 @@
+. /lib/functions.sh
+
+migrate_release() {
+	local config="$1"
+	local proto
+	local release
+
+	config_get proto "$config" proto
+	config_get release "$config" release
+
+	[ "$proto" = "dhcp" ] && [ -n "$release" ] && {
+		norelease="$((!$release))"
+		uci_set network "$config" norelease "$norelease"
+		uci_remove network "$config" release
+	}
+
+}
+
+config_load network
+config_foreach migrate_release interface
+uci commit network
+
+exit 0
diff --git a/autobuild_mac80211_release/package/network/config/netifd/files/etc/udhcpc.user b/autobuild_mac80211_release/package/network/config/netifd/files/etc/udhcpc.user
new file mode 100644
index 0000000..78e2ba5
--- /dev/null
+++ b/autobuild_mac80211_release/package/network/config/netifd/files/etc/udhcpc.user
@@ -0,0 +1 @@
+# This script is sourced by udhcpc's dhcp.script at every DHCP event.
diff --git a/autobuild_mac80211_release/package/network/config/netifd/files/lib/netifd/dhcp.script b/autobuild_mac80211_release/package/network/config/netifd/files/lib/netifd/dhcp.script
new file mode 100755
index 0000000..6fcf139
--- /dev/null
+++ b/autobuild_mac80211_release/package/network/config/netifd/files/lib/netifd/dhcp.script
@@ -0,0 +1,120 @@
+#!/bin/sh
+[ -z "$1" ] && echo "Error: should be run by udhcpc" && exit 1
+
+. /lib/functions.sh
+. /lib/netifd/netifd-proto.sh
+
+set_classless_routes() {
+	local max=128
+	while [ -n "$1" -a -n "$2" -a $max -gt 0 ]; do
+		proto_add_ipv4_route "${1%%/*}" "${1##*/}" "$2" "$ip"
+		max=$(($max-1))
+		shift 2
+	done
+}
+
+setup_interface () {
+	proto_init_update "*" 1
+	proto_add_ipv4_address "$ip" "${subnet:-255.255.255.0}"
+	# TODO: apply $broadcast
+
+	local ip_net
+	eval "$(ipcalc.sh "$ip/$mask")";ip_net="$NETWORK"
+
+	local i
+	for i in $router; do
+		local gw_net
+		eval "$(ipcalc.sh "$i/$mask")";gw_net="$NETWORK"
+
+		[ "$ip_net" != "$gw_net" ] && proto_add_ipv4_route "$i" 32 "" "$ip"
+		proto_add_ipv4_route 0.0.0.0 0 "$i" "$ip"
+
+		local r
+		for r in $CUSTOMROUTES; do
+			proto_add_ipv4_route "${r%%/*}" "${r##*/}" "$i" "$ip"
+		done
+	done
+
+	# CIDR STATIC ROUTES (rfc3442)
+	[ -n "$staticroutes" ] && set_classless_routes $staticroutes
+	[ -n "$msstaticroutes" ] && set_classless_routes $msstaticroutes
+
+	for i in $dns; do
+		proto_add_dns_server "$i"
+	done
+	for i in $domain; do
+		proto_add_dns_search "$i"
+	done
+
+	# TODO: Deprecate timesvr in favor of timesrv
+	if [ -n "$timesvr" -a -z "$timesrv" ]; then
+		timesrv="$timesvr"
+		echo "Environment variable 'timesvr' will be deprecated; use 'timesrv' instead."
+	fi
+
+	proto_add_data
+	[ -n "$ZONE" ]     && json_add_string zone "$ZONE"
+	[ -n "$ntpsrv" ]   && json_add_string ntpserver "$ntpsrv"
+	[ -n "$timesrv" ]  && json_add_string timeserver "$timesrv"
+	[ -n "$hostname" ] && json_add_string hostname "$hostname"
+	[ -n "$message" ]  && json_add_string message "$message"
+	[ -n "$timezone" ] && json_add_int timezone "$timezone"
+	[ -n "$lease" ]    && json_add_int leasetime "$lease"
+	[ -n "$serverid" ] && json_add_string dhcpserver "$serverid"
+	proto_close_data
+
+	proto_send_update "$INTERFACE"
+
+
+	if [ "$IFACE6RD" != 0 -a -n "$ip6rd" ]; then
+		local v4mask="${ip6rd%% *}"
+		ip6rd="${ip6rd#* }"
+		local ip6rdprefixlen="${ip6rd%% *}"
+		ip6rd="${ip6rd#* }"
+		local ip6rdprefix="${ip6rd%% *}"
+		ip6rd="${ip6rd#* }"
+		local ip6rdbr="${ip6rd%% *}"
+
+		[ -n "$ZONE" ] || ZONE=$(fw3 -q network $INTERFACE 2>/dev/null)
+		[ -z "$IFACE6RD" -o "$IFACE6RD" = 1 ] && IFACE6RD=${INTERFACE}_6
+
+		json_init
+		json_add_string name "$IFACE6RD"
+		json_add_string ifname "@$INTERFACE"
+		json_add_string proto "6rd"
+		json_add_string peeraddr "$ip6rdbr"
+		json_add_int ip4prefixlen "$v4mask"
+		json_add_string ip6prefix "$ip6rdprefix"
+		json_add_int ip6prefixlen "$ip6rdprefixlen"
+		json_add_string tunlink "$INTERFACE"
+		[ -n "$IFACE6RD_DELEGATE" ] && json_add_boolean delegate "$IFACE6RD_DELEGATE"
+		[ -n "$ZONE6RD" ] || ZONE6RD=$ZONE
+		[ -n "$ZONE6RD" ] && json_add_string zone "$ZONE6RD"
+		[ -n "$MTU6RD" ] && json_add_string mtu "$MTU6RD"
+		json_close_object
+
+		ubus call network add_dynamic "$(json_dump)"
+	fi
+}
+
+deconfig_interface() {
+	proto_init_update "*" 0
+	proto_send_update "$INTERFACE"
+}
+
+case "$1" in
+	deconfig)
+		deconfig_interface
+	;;
+	renew|bound)
+		setup_interface
+	;;
+esac
+
+# user rules
+[ -f /etc/udhcpc.user ] && . /etc/udhcpc.user "$@"
+for f in /etc/udhcpc.user.d/*; do
+	[ -f "$f" ] && (. "$f" "$@")
+done
+
+exit 0
diff --git a/autobuild_mac80211_release/package/network/config/netifd/files/lib/netifd/proto/dhcp.sh b/autobuild_mac80211_release/package/network/config/netifd/files/lib/netifd/proto/dhcp.sh
new file mode 100755
index 0000000..636b465
--- /dev/null
+++ b/autobuild_mac80211_release/package/network/config/netifd/files/lib/netifd/proto/dhcp.sh
@@ -0,0 +1,88 @@
+#!/bin/sh
+
+[ -x /sbin/udhcpc ] || exit 0
+
+. /lib/functions.sh
+. ../netifd-proto.sh
+init_proto "$@"
+
+proto_dhcp_init_config() {
+	renew_handler=1
+
+	proto_config_add_string 'ipaddr:ipaddr'
+	proto_config_add_string 'hostname:hostname'
+	proto_config_add_string clientid
+	proto_config_add_string vendorid
+	proto_config_add_boolean 'broadcast:bool'
+	proto_config_add_boolean 'norelease:bool'
+	proto_config_add_string 'reqopts:list(string)'
+	proto_config_add_boolean 'defaultreqopts:bool'
+	proto_config_add_string iface6rd
+	proto_config_add_array 'sendopts:list(string)'
+	proto_config_add_boolean delegate
+	proto_config_add_string zone6rd
+	proto_config_add_string zone
+	proto_config_add_string mtu6rd
+	proto_config_add_string customroutes
+	proto_config_add_boolean classlessroute
+}
+
+proto_dhcp_add_sendopts() {
+	[ -n "$1" ] && append "$3" "-x $1"
+}
+
+proto_dhcp_setup() {
+	local config="$1"
+	local iface="$2"
+
+	local ipaddr hostname clientid vendorid broadcast norelease reqopts defaultreqopts iface6rd sendopts delegate zone6rd zone mtu6rd customroutes classlessroute
+	json_get_vars ipaddr hostname clientid vendorid broadcast norelease reqopts defaultreqopts iface6rd delegate zone6rd zone mtu6rd customroutes classlessroute
+
+	local opt dhcpopts
+	for opt in $reqopts; do
+		append dhcpopts "-O $opt"
+	done
+
+	json_for_each_item proto_dhcp_add_sendopts sendopts dhcpopts
+
+	[ -z "$hostname" ] && hostname="$(cat /proc/sys/kernel/hostname)"
+	[ "$hostname" = "*" ] && hostname=
+
+	[ "$defaultreqopts" = 0 ] && defaultreqopts="-o" || defaultreqopts=
+	[ "$broadcast" = 1 ] && broadcast="-B" || broadcast=
+	[ "$norelease" = 1 ] && norelease="" || norelease="-R"
+	[ -n "$clientid" ] && clientid="-x 0x3d:${clientid//:/}" || clientid="-C"
+	[ -n "$iface6rd" ] && proto_export "IFACE6RD=$iface6rd"
+	[ "$iface6rd" != 0 -a -f /lib/netifd/proto/6rd.sh ] && append dhcpopts "-O 212"
+	[ -n "$zone6rd" ] && proto_export "ZONE6RD=$zone6rd"
+	[ -n "$zone" ] && proto_export "ZONE=$zone"
+	[ -n "$mtu6rd" ] && proto_export "MTU6RD=$mtu6rd"
+	[ -n "$customroutes" ] && proto_export "CUSTOMROUTES=$customroutes"
+	[ "$delegate" = "0" ] && proto_export "IFACE6RD_DELEGATE=0"
+	# Request classless route option (see RFC 3442) by default
+	[ "$classlessroute" = "0" ] || append dhcpopts "-O 121"
+
+	proto_export "INTERFACE=$config"
+	proto_run_command "$config" udhcpc \
+		-p /var/run/udhcpc-$iface.pid \
+		-s /lib/netifd/dhcp.script \
+		-f -t 0 -i "$iface" \
+		${ipaddr:+-r ${ipaddr/\/*/}} \
+		${hostname:+-x "hostname:$hostname"} \
+		${vendorid:+-V "$vendorid"} \
+		$clientid $defaultreqopts $broadcast $norelease $dhcpopts
+}
+
+proto_dhcp_renew() {
+	local interface="$1"
+	# SIGUSR1 forces udhcpc to renew its lease
+	local sigusr1="$(kill -l SIGUSR1)"
+	[ -n "$sigusr1" ] && proto_kill_command "$interface" $sigusr1
+}
+
+proto_dhcp_teardown() {
+	local interface="$1"
+	proto_kill_command "$interface"
+}
+
+add_protocol dhcp
diff --git a/autobuild_mac80211_release/package/network/config/netifd/files/lib/network/config.sh b/autobuild_mac80211_release/package/network/config/netifd/files/lib/network/config.sh
new file mode 100755
index 0000000..4cd28e4
--- /dev/null
+++ b/autobuild_mac80211_release/package/network/config/netifd/files/lib/network/config.sh
@@ -0,0 +1,76 @@
+#!/bin/sh
+# Copyright (C) 2011 OpenWrt.org
+
+. /usr/share/libubox/jshn.sh
+
+find_config() {
+	local device="$1"
+	local ifdev ifl3dev ifobj
+	for ifobj in $(ubus list network.interface.\*); do
+		interface="${ifobj##network.interface.}"
+		(
+			json_load "$(ifstatus $interface)"
+			json_get_var ifdev device
+			json_get_var ifl3dev l3_device
+			if [ "$device" = "$ifdev" ] || [ "$device" = "$ifl3dev" ]; then
+				echo "$interface"
+				exit 0
+			else
+				exit 1
+			fi
+		) && return
+	done
+}
+
+unbridge() {
+	return
+}
+
+ubus_call() {
+	json_init
+	local _data="$(ubus -S call "$1" "$2")"
+	[ -z "$_data" ] && return 1
+	json_load "$_data"
+	return 0
+}
+
+
+fixup_interface() {
+	local config="$1"
+	local ifname type device l3dev
+
+	config_get type "$config" type
+	config_get ifname "$config" ifname
+	[ "bridge" = "$type" ] && ifname="br-$config"
+	ubus_call "network.interface.$config" status || return 0
+	json_get_var l3dev l3_device
+	[ -n "$l3dev" ] && ifname="$l3dev"
+	json_init
+	config_set "$config" ifname "$ifname"
+}
+
+scan_interfaces() {
+	config_load network
+	config_foreach fixup_interface interface
+}
+
+prepare_interface_bridge() {
+	local config="$1"
+
+	[ -n "$config" ] || return 0
+	ubus call network.interface."$config" prepare
+}
+
+setup_interface() {
+	local iface="$1"
+	local config="$2"
+
+	[ -n "$config" ] || return 0
+	ubus call network.interface."$config" add_device "{ \"name\": \"$iface\" }"
+}
+
+do_sysctl() {
+	[ -n "$2" ] && \
+		sysctl -n -e -w "$1=$2" >/dev/null || \
+		sysctl -n -e "$1"
+}
diff --git a/autobuild_mac80211_release/package/network/config/netifd/files/sbin/devstatus b/autobuild_mac80211_release/package/network/config/netifd/files/sbin/devstatus
new file mode 100755
index 0000000..3c35b26
--- /dev/null
+++ b/autobuild_mac80211_release/package/network/config/netifd/files/sbin/devstatus
@@ -0,0 +1,12 @@
+#!/bin/sh
+. /usr/share/libubox/jshn.sh
+DEVICE="$1"
+
+[ -n "$DEVICE" ] || {
+	echo "Usage: $0 <device>"
+	exit 1
+}
+
+json_init
+json_add_string name "$DEVICE"
+ubus call network.device status "$(json_dump)"
diff --git a/autobuild_mac80211_release/package/network/config/netifd/files/sbin/ifdown b/autobuild_mac80211_release/package/network/config/netifd/files/sbin/ifdown
new file mode 120000
index 0000000..a0e5c17
--- /dev/null
+++ b/autobuild_mac80211_release/package/network/config/netifd/files/sbin/ifdown
@@ -0,0 +1 @@
+ifup
\ No newline at end of file
diff --git a/autobuild_mac80211_release/package/network/config/netifd/files/sbin/ifstatus b/autobuild_mac80211_release/package/network/config/netifd/files/sbin/ifstatus
new file mode 100755
index 0000000..8a951e6
--- /dev/null
+++ b/autobuild_mac80211_release/package/network/config/netifd/files/sbin/ifstatus
@@ -0,0 +1,13 @@
+#!/bin/sh
+INTERFACE="$1"
+
+[ -n "$INTERFACE" ] || {
+	echo "Usage: $0 <interface>"
+	exit 1
+}
+
+ubus -S list "network.interface.$INTERFACE" >/dev/null || {
+	echo "Interface $INTERFACE not found"
+	exit 1
+}
+ubus call network.interface status "{ \"interface\" : \"$INTERFACE\" }"
diff --git a/autobuild_mac80211_release/package/network/config/netifd/files/sbin/ifup b/autobuild_mac80211_release/package/network/config/netifd/files/sbin/ifup
new file mode 100755
index 0000000..15be535
--- /dev/null
+++ b/autobuild_mac80211_release/package/network/config/netifd/files/sbin/ifup
@@ -0,0 +1,77 @@
+#!/bin/sh
+
+ifup_all=
+setup_wifi=
+
+if_call() {
+	local interface="$1"
+	for mode in $modes; do
+		ubus call network.interface $mode "{ \"interface\" : \"$interface\" }"
+	done
+}
+
+case "$0" in
+	*ifdown) modes=down;;
+	*ifup)
+		modes="down up"
+		setup_wifi=1
+	;;
+	*) echo "Invalid command: $0";;
+esac
+
+while :; do
+	case "$1" in
+		-a)
+			ifup_all=1
+			shift
+		;;
+		-w)
+			setup_wifi=
+			shift
+		;;
+		*)
+			break
+		;;
+	esac
+done
+
+[ "$modes" = "down up" ] && ubus call network reload
+if [ -n "$ifup_all" ]; then
+	for interface in $(ubus -S list 'network.interface.*'); do
+		if_call "${interface##network.interface.}"
+	done
+	[ -n "$setup_wifi" ] && /sbin/wifi up
+	exit
+else
+	ubus -S list "network.interface.$1" > /dev/null || {
+		echo "Interface $1 not found"
+		exit
+	}
+	if_call "$1"
+fi
+
+if [ -n "$setup_wifi" ] && grep -sq config /etc/config/wireless; then
+	. /lib/functions.sh
+
+	find_related_radios() {
+		local wdev wnet
+		config_get wdev "$1" device
+		config_get wnet "$1" network
+
+		if [ -n "$wdev" ]; then
+			for wnet in $wnet; do
+				if [ "$wnet" = "$network" ]; then
+					append radio_devs "$wdev" "$N"
+				fi
+			done
+		fi
+	}
+
+	network="$1"
+	config_load wireless
+	config_foreach find_related_radios wifi-iface
+
+	for dev in $(echo "$radio_devs" | sort -u); do
+		/sbin/wifi up "$dev"
+	done
+fi
diff --git a/autobuild_mac80211_release/package/network/config/netifd/files/usr/libexec/network/packet-steering.sh b/autobuild_mac80211_release/package/network/config/netifd/files/usr/libexec/network/packet-steering.sh
new file mode 100755
index 0000000..799c080
--- /dev/null
+++ b/autobuild_mac80211_release/package/network/config/netifd/files/usr/libexec/network/packet-steering.sh
@@ -0,0 +1,70 @@
+#!/bin/sh
+NPROCS="$(grep -c "^processor.*:" /proc/cpuinfo)"
+[ "$NPROCS" -gt 1 ] || exit
+
+PROC_MASK="$(( (1 << $NPROCS) - 1 ))"
+
+find_irq_cpu() {
+	local dev="$1"
+	local match="$(grep -m 1 "$dev\$" /proc/interrupts)"
+	local cpu=0
+
+	[ -n "$match" ] && {
+		set -- $match
+		shift
+		for cur in $(seq 1 $NPROCS); do
+			[ "$1" -gt 0 ] && {
+				cpu=$(($cur - 1))
+				break
+			}
+			shift
+		done
+	}
+
+	echo "$cpu"
+}
+
+set_hex_val() {
+	local file="$1"
+	local val="$2"
+	val="$(printf %x "$val")"
+	[ -n "$DEBUG" ] && echo "$file = $val"
+	echo "$val" > "$file"
+}
+
+packet_steering="$(uci get "network.@globals[0].packet_steering")"
+[ "$packet_steering" != 1 ] && exit 0
+
+exec 512>/var/lock/smp_tune.lock
+flock 512 || exit 1
+
+[ -e "/usr/libexec/platform/packet-steering.sh" ] && {
+	/usr/libexec/platform/packet-steering.sh
+	exit 0
+}
+
+for dev in /sys/class/net/*; do
+	[ -d "$dev" ] || continue
+
+	# ignore virtual interfaces
+	[ -n "$(ls "${dev}/" | grep '^lower_')" ] && continue
+	[ -d "${dev}/device" ] || continue
+
+	device="$(readlink "${dev}/device")"
+	device="$(basename "$device")"
+	irq_cpu="$(find_irq_cpu "$device")"
+	irq_cpu_mask="$((1 << $irq_cpu))"
+
+	for q in ${dev}/queues/tx-*; do
+		set_hex_val "$q/xps_cpus" "$PROC_MASK"
+	done
+
+	# ignore dsa slave ports for RPS
+	subsys="$(readlink "${dev}/device/subsystem")"
+	subsys="$(basename "$subsys")"
+	[ "$subsys" = "mdio_bus" ] && continue
+
+	for q in ${dev}/queues/rx-*; do
+		set_hex_val "$q/rps_cpus" "$PROC_MASK"
+	done
+done
diff --git a/autobuild_mac80211_release/package/network/config/netifd/files/usr/share/udhcpc/default.script b/autobuild_mac80211_release/package/network/config/netifd/files/usr/share/udhcpc/default.script
new file mode 100755
index 0000000..0a9eb01
--- /dev/null
+++ b/autobuild_mac80211_release/package/network/config/netifd/files/usr/share/udhcpc/default.script
@@ -0,0 +1,57 @@
+#!/bin/sh
+[ -z "$1" ] && echo "Error: should be run by udhcpc" && exit 1
+
+set_classless_routes() {
+	local max=128
+	local type
+	while [ -n "$1" -a -n "$2" -a $max -gt 0 ]; do
+		[ ${1##*/} -eq 32 ] && type=host || type=net
+		echo "udhcpc: adding route for $type $1 via $2"
+		route add -$type "$1" gw "$2" dev "$interface"
+		max=$(($max-1))
+		shift 2
+	done
+}
+
+setup_interface() {
+	echo "udhcpc: ip addr add $ip/${subnet:-255.255.255.0} broadcast ${broadcast:-+} dev $interface"
+	ip addr add $ip/${subnet:-255.255.255.0} broadcast ${broadcast:-+} dev $interface
+
+	[ -n "$router" ] && [ "$router" != "0.0.0.0" ] && [ "$router" != "255.255.255.255" ] && {
+		echo "udhcpc: setting default routers: $router"
+
+		local valid_gw=""
+		for i in $router ; do
+			route add default gw $i dev $interface
+			valid_gw="${valid_gw:+$valid_gw|}$i"
+		done
+		
+		eval $(route -n | awk '
+			/^0.0.0.0\W{9}('$valid_gw')\W/ {next}
+			/^0.0.0.0/ {print "route del -net "$1" gw "$2";"}
+		')
+	}
+
+	# CIDR STATIC ROUTES (rfc3442)
+	[ -n "$staticroutes" ] && set_classless_routes $staticroutes
+	[ -n "$msstaticroutes" ] && set_classless_routes $msstaticroutes
+}
+
+
+applied=
+case "$1" in
+	deconfig)
+		ip -4 addr flush dev "$interface"
+	;;
+	renew)
+		setup_interface update
+	;;
+	bound)
+		setup_interface ifup
+	;;
+esac
+
+# user rules
+[ -f /etc/udhcpc.user ] && . /etc/udhcpc.user
+
+exit 0
diff --git a/autobuild_mac80211_release/package/network/config/netifd_new/patches/0001-netifd-revert-commit-can-t-work-for-Kernel5.4.patch b/autobuild_mac80211_release/package/network/config/netifd_new/patches/0001-netifd-revert-commit-can-t-work-for-Kernel5.4.patch
new file mode 100644
index 0000000..591f7e7
--- /dev/null
+++ b/autobuild_mac80211_release/package/network/config/netifd_new/patches/0001-netifd-revert-commit-can-t-work-for-Kernel5.4.patch
@@ -0,0 +1,687 @@
+From f73e9179da805301affa628de794046ef8ef2ff0 Mon Sep 17 00:00:00 2001
+From: Evelyn Tsai <evelyn.tsai@mediatek.com>
+Date: Sun, 17 Sep 2023 12:28:35 +0800
+Subject: [PATCH 1/4] netifd: revert: commit can't work for Kernel5.4
+
+Revert "make_ethtool_modes_h.sh: apply anti-bashism"
+This reverts commit 1a07f1dff32b3af49e39533e33e8964b59535662.
+Revert "system-linux: switch to new ETHTOOL_xLINKSETTINGS API"
+This reverts commit f429bd94f99e55548bf4fa8156c165017ce3c41c.
+---
+ CMakeLists.txt          |   8 -
+ device.c                |  35 ----
+ device.h                |  15 --
+ make_ethtool_modes_h.sh |  66 -------
+ system-linux.c          | 404 +++++++++-------------------------------
+ 5 files changed, 87 insertions(+), 441 deletions(-)
+ delete mode 100755 make_ethtool_modes_h.sh
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 8064485..5ad8695 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -49,13 +49,6 @@ IF (NOT DEFINED LIBNL_LIBS)
+ 	ENDIF()
+ ENDIF()
+ 
+-ADD_CUSTOM_COMMAND(
+-	OUTPUT ethtool-modes.h
+-	COMMAND ./make_ethtool_modes_h.sh ${CMAKE_C_COMPILER} > ./ethtool-modes.h
+-	DEPENDS ./make_ethtool_modes_h.sh
+-)
+-ADD_CUSTOM_TARGET(ethtool-modes-h DEPENDS ethtool-modes.h)
+-
+ IF("${CMAKE_SYSTEM_NAME}" MATCHES "Linux" AND NOT DUMMY_MODE)
+ 	SET(SOURCES ${SOURCES} system-linux.c)
+ 	SET(LIBS ${LIBS} ${LIBNL_LIBS})
+@@ -79,4 +72,3 @@ TARGET_LINK_LIBRARIES(netifd ${LIBS})
+ INSTALL(TARGETS netifd
+ 	RUNTIME DESTINATION sbin
+ )
+-ADD_DEPENDENCIES(netifd ethtool-modes-h)
+diff --git a/device.c b/device.c
+index 2417556..92c814c 100644
+--- a/device.c
++++ b/device.c
+@@ -64,11 +64,6 @@ static const struct blobmsg_policy dev_attrs[__DEV_ATTR_MAX] = {
+ 	[DEV_ATTR_SPEED] = { .name = "speed", .type = BLOBMSG_TYPE_INT32 },
+ 	[DEV_ATTR_DUPLEX] = { .name = "duplex", .type = BLOBMSG_TYPE_BOOL },
+ 	[DEV_ATTR_VLAN] = { .name = "vlan", .type = BLOBMSG_TYPE_ARRAY },
+-	[DEV_ATTR_PAUSE] = { .name = "pause", .type = BLOBMSG_TYPE_BOOL },
+-	[DEV_ATTR_ASYM_PAUSE] = { .name = "asym_pause", .type = BLOBMSG_TYPE_BOOL },
+-	[DEV_ATTR_RXPAUSE] = { .name = "rxpause", .type = BLOBMSG_TYPE_BOOL },
+-	[DEV_ATTR_TXPAUSE] = { .name = "txpause", .type = BLOBMSG_TYPE_BOOL },
+-	[DEV_ATTR_AUTONEG] = { .name = "autoneg", .type = BLOBMSG_TYPE_BOOL },
+ };
+ 
+ const struct uci_blob_param_list device_attr_list = {
+@@ -286,11 +281,6 @@ device_merge_settings(struct device *dev, struct device_settings *n)
+ 	n->auth = s->flags & DEV_OPT_AUTH ? s->auth : os->auth;
+ 	n->speed = s->flags & DEV_OPT_SPEED ? s->speed : os->speed;
+ 	n->duplex = s->flags & DEV_OPT_DUPLEX ? s->duplex : os->duplex;
+-	n->pause = s->flags & DEV_OPT_PAUSE ? s->pause : os->pause;
+-	n->asym_pause = s->flags & DEV_OPT_ASYM_PAUSE ? s->asym_pause : os->asym_pause;
+-	n->rxpause = s->flags & DEV_OPT_RXPAUSE ? s->rxpause : os->rxpause;
+-	n->txpause = s->flags & DEV_OPT_TXPAUSE ? s->txpause : os->txpause;
+-	n->autoneg = s->flags & DEV_OPT_AUTONEG ? s->autoneg : os->autoneg;
+ 	n->flags = s->flags | os->flags | os->valid_flags;
+ }
+ 
+@@ -515,31 +505,6 @@ device_init_settings(struct device *dev, struct blob_attr **tb)
+ 		s->duplex = blobmsg_get_bool(cur);
+ 		s->flags |= DEV_OPT_DUPLEX;
+ 	}
+-
+-	if ((cur = tb[DEV_ATTR_PAUSE])) {
+-		s->pause = blobmsg_get_bool(cur);
+-		s->flags |= DEV_OPT_PAUSE;
+-	}
+-
+-	if ((cur = tb[DEV_ATTR_ASYM_PAUSE])) {
+-		s->asym_pause = blobmsg_get_bool(cur);
+-		s->flags |= DEV_OPT_ASYM_PAUSE;
+-	}
+-
+-	if ((cur = tb[DEV_ATTR_RXPAUSE])) {
+-		s->rxpause = blobmsg_get_bool(cur);
+-		s->flags |= DEV_OPT_RXPAUSE;
+-	}
+-
+-	if ((cur = tb[DEV_ATTR_TXPAUSE])) {
+-		s->txpause = blobmsg_get_bool(cur);
+-		s->flags |= DEV_OPT_TXPAUSE;
+-	}
+-
+-	if ((cur = tb[DEV_ATTR_AUTONEG])) {
+-		s->autoneg = blobmsg_get_bool(cur);
+-		s->flags |= DEV_OPT_AUTONEG;
+-	}
+ 	device_set_extra_vlans(dev, tb[DEV_ATTR_VLAN]);
+ 	device_set_disabled(dev, disabled);
+ }
+diff --git a/device.h b/device.h
+index 14d7486..aa4da18 100644
+--- a/device.h
++++ b/device.h
+@@ -63,11 +63,6 @@ enum {
+ 	DEV_ATTR_SPEED,
+ 	DEV_ATTR_DUPLEX,
+ 	DEV_ATTR_VLAN,
+-	DEV_ATTR_PAUSE,
+-	DEV_ATTR_ASYM_PAUSE,
+-	DEV_ATTR_RXPAUSE,
+-	DEV_ATTR_TXPAUSE,
+-	DEV_ATTR_AUTONEG,
+ 	__DEV_ATTR_MAX,
+ };
+ 
+@@ -132,11 +127,6 @@ enum {
+ 	DEV_OPT_ARP_ACCEPT		= (1ULL << 29),
+ 	DEV_OPT_SPEED			= (1ULL << 30),
+ 	DEV_OPT_DUPLEX			= (1ULL << 31),
+-	DEV_OPT_PAUSE			= (1ULL << 32),
+-	DEV_OPT_ASYM_PAUSE		= (1ULL << 33),
+-	DEV_OPT_RXPAUSE			= (1ULL << 34),
+-	DEV_OPT_TXPAUSE			= (1ULL << 35),
+-	DEV_OPT_AUTONEG			= (1ULL << 36),
+ };
+ 
+ /* events broadcasted to all users of a device */
+@@ -214,11 +204,6 @@ struct device_settings {
+ 	bool auth;
+ 	unsigned int speed;
+ 	bool duplex;
+-	bool pause;
+-	bool asym_pause;
+-	bool rxpause;
+-	bool txpause;
+-	bool autoneg;
+ };
+ 
+ struct device_vlan_range {
+diff --git a/make_ethtool_modes_h.sh b/make_ethtool_modes_h.sh
+deleted file mode 100755
+index 7f5ac7b..0000000
+--- a/make_ethtool_modes_h.sh
++++ /dev/null
+@@ -1,66 +0,0 @@
+-#!/bin/sh
+-
+-CC="$1"
+-[ -n "$TARGET_CC_NOCACHE" ] && CC="$TARGET_CC_NOCACHE"
+-
+-cat <<EOF
+-#include <linux/ethtool.h>
+-
+-#define ETHTOOL_MODE_FULL(_speed, _mode) {					\\
+-	.speed = (_speed),							\\
+-	.bit_half = -1,								\\
+-	.bit_full = ETHTOOL_LINK_MODE_ ## _speed ## base ## _mode ## _Full_BIT,	\\
+-	.name = #_speed "base" #_mode,						\\
+-}
+-
+-#define ETHTOOL_MODE_HALF(_speed, _mode) {					\\
+-	.speed = (_speed),							\\
+-	.bit_half = ETHTOOL_LINK_MODE_ ## _speed ## base ## _mode ## _Half_BIT,	\\
+-	.bit_full = -1,								\\
+-	.name = #_speed "base" #_mode,						\\
+-}
+-
+-#define ETHTOOL_MODE_BOTH(_speed, _mode) {					\\
+-	.speed = (_speed),							\\
+-	.bit_half = ETHTOOL_LINK_MODE_ ## _speed ## base ## _mode ## _Half_BIT,	\\
+-	.bit_full = ETHTOOL_LINK_MODE_ ## _speed ## base ## _mode ## _Full_BIT,	\\
+-	.name = #_speed "base" #_mode,						\\
+-}
+-
+-static const struct {
+-	unsigned int speed;
+-	int bit_half;
+-	int bit_full;
+-	const char *name;
+-} ethtool_modes[] = {
+-EOF
+-
+-echo "#include <linux/ethtool.h>" | "$CC" -E - | \
+-	grep "ETHTOOL_LINK_MODE_[0-9]*base[A-Za-z0-9]*_...._BIT.*" | \
+-	sed -r 's/.*ETHTOOL_LINK_MODE_([0-9]*)base([A-Za-z0-9]*)_(....)_BIT.*/\1 \2 \3/' | \
+-	sort -u | LC_ALL=C sort -r -g | ( gothalf=0 ; while read -r speed mode duplex; do
+-		if [ "$duplex" = "Half" ]; then
+-			if [ "$gothalf" = "1" ]; then
+-				printf "%s" "$speed \tETHTOOL_MODE_HALF($p_speed, $p_mode),\n"
+-			fi
+-			gothalf=1
+-		elif [ "$duplex" = "Full" ]; then
+-			if [ "$gothalf" = "1" ]; then
+-				if [ "$p_speed" = "$speed" ] && [ "$p_mode" = "$mode" ]; then
+-					printf "%d \t%s\n" "$speed" "ETHTOOL_MODE_BOTH($speed, $mode),"
+-				else
+-					printf "%d \t%s\n" "$p_speed" "ETHTOOL_MODE_HALF($p_speed, $p_mode),"
+-					printf "%d \t%s\n" "$speed" "ETHTOOL_MODE_FULL($speed, $mode),"
+-				fi
+-				gothalf=0
+-			else
+-				printf "%d \t%s\n" "$speed" "ETHTOOL_MODE_FULL($speed, $mode),"
+-			fi
+-		else
+-			continue
+-		fi
+-		p_speed="$speed"
+-		p_mode="$mode"
+-	done ; [ "$gothalf" = "1" ] && printf "%d \t%s\n" "$p_speed" "ETHTOOL_MODE_HALF($p_speed, $p_mode)," ) | \
+-	LC_ALL=C sort -g | sed -r 's/[0-9]* (.*)/\1/'
+-echo "};"
+diff --git a/system-linux.c b/system-linux.c
+index e437377..0760e73 100644
+--- a/system-linux.c
++++ b/system-linux.c
+@@ -48,8 +48,6 @@
+ 
+ #include <sched.h>
+ 
+-#include "ethtool-modes.h"
+-
+ #ifndef RTN_FAILED_POLICY
+ #define RTN_FAILED_POLICY 12
+ #endif
+@@ -1704,149 +1702,54 @@ int system_vlandev_del(struct device *vlandev)
+ 	return system_link_del(vlandev->ifname);
+ }
+ 
+-static void ethtool_link_mode_clear_bit(__s8 nwords, int nr, __u32 *mask)
+-{
+-	if (nr < 0)
+-		return;
+-
+-	if (nr >= (nwords * 32))
+-		return;
+-
+-	mask[nr / 32] &= ~(1U << (nr % 32));
+-}
+-
+-static bool ethtool_link_mode_test_bit(__s8 nwords, int nr, const __u32 *mask)
+-{
+-	if (nr < 0)
+-		return false;
+-
+-	if (nr >= (nwords * 32))
+-		return false;
+-
+-	return !!(mask[nr / 32] & (1U << (nr % 32)));
+-}
+-
+-static void
+-system_set_ethtool_pause(struct device *dev, struct device_settings *s)
+-{
+-	struct ethtool_pauseparam pp;
+-	struct ifreq ifr = {
+-		.ifr_data = (caddr_t)&pp,
+-	};
+-
+-	strncpy(ifr.ifr_name, dev->ifname, sizeof(ifr.ifr_name) - 1);
+-	memset(&pp, 0, sizeof(pp));
+-	pp.cmd = ETHTOOL_GPAUSEPARAM;
+-	if (ioctl(sock_ioctl, SIOCETHTOOL, &ifr))
+-		return;
+-
+-	if (s->flags & DEV_OPT_RXPAUSE || s->flags & DEV_OPT_TXPAUSE) {
+-		pp.autoneg = AUTONEG_DISABLE;
+-
+-		if (s->flags & DEV_OPT_PAUSE) {
+-			if (s->flags & DEV_OPT_RXPAUSE)
+-				pp.rx_pause = s->rxpause && s->pause;
+-			else
+-				pp.rx_pause = s->pause;
+-
+-			if (s->flags & DEV_OPT_TXPAUSE)
+-				pp.tx_pause = s->txpause && s->pause;
+-			else
+-				pp.tx_pause = s->pause;
+-		} else {
+-			if (s->flags & DEV_OPT_RXPAUSE)
+-				pp.rx_pause = s->rxpause;
+-
+-			if (s->flags & DEV_OPT_TXPAUSE)
+-				pp.tx_pause = s->txpause;
+-		}
+-
+-		if (s->flags & DEV_OPT_ASYM_PAUSE &&
+-		    !s->asym_pause && (pp.rx_pause != pp.tx_pause))
+-			pp.rx_pause = pp.tx_pause = false;
+-	} else {
+-		pp.autoneg = AUTONEG_ENABLE;
+-		/* Pause and Asym_Pause advertising bits will be set via
+-		 * ETHTOOL_SLINKSETTINGS in system_set_ethtool_settings()
+-		 */
+-	}
+-
+-	pp.cmd = ETHTOOL_SPAUSEPARAM;
+-	ioctl(sock_ioctl, SIOCETHTOOL, &ifr);
+-}
+-
+ static void
+ system_set_ethtool_settings(struct device *dev, struct device_settings *s)
+ {
+-	struct {
+-		struct ethtool_link_settings req;
+-		__u32 link_mode_data[3 * 127];
+-	} ecmd;
++	struct ethtool_cmd ecmd = {
++		.cmd = ETHTOOL_GSET,
++	};
+ 	struct ifreq ifr = {
+ 		.ifr_data = (caddr_t)&ecmd,
+ 	};
++	static const struct {
++		unsigned int speed;
++		uint8_t bit_half;
++		uint8_t bit_full;
++	} speed_mask[] = {
++		{ 10, ETHTOOL_LINK_MODE_10baseT_Half_BIT, ETHTOOL_LINK_MODE_10baseT_Full_BIT },
++		{ 100, ETHTOOL_LINK_MODE_100baseT_Half_BIT, ETHTOOL_LINK_MODE_100baseT_Full_BIT },
++		{ 1000, ETHTOOL_LINK_MODE_1000baseT_Half_BIT, ETHTOOL_LINK_MODE_1000baseT_Full_BIT },
++	};
++	uint32_t adv;
+ 	size_t i;
+-	__s8 nwords;
+-	__u32 *supported, *advertising;
+ 
+-	system_set_ethtool_pause(dev, s);
+-
+-	memset(&ecmd, 0, sizeof(ecmd));
+-	ecmd.req.cmd = ETHTOOL_GLINKSETTINGS;
+ 	strncpy(ifr.ifr_name, dev->ifname, sizeof(ifr.ifr_name) - 1);
+ 
+-	if (ioctl(sock_ioctl, SIOCETHTOOL, &ifr) < 0 ||
+-	    ecmd.req.link_mode_masks_nwords >= 0 ||
+-	    ecmd.req.cmd != ETHTOOL_GLINKSETTINGS)
+-		return;
+-
+-	ecmd.req.link_mode_masks_nwords = -ecmd.req.link_mode_masks_nwords;
+-
+-	if (ioctl(sock_ioctl, SIOCETHTOOL, &ifr) < 0 ||
+-	    ecmd.req.link_mode_masks_nwords <= 0 ||
+-	    ecmd.req.cmd != ETHTOOL_GLINKSETTINGS)
++	if (ioctl(sock_ioctl, SIOCETHTOOL, &ifr) != 0)
+ 		return;
+ 
+-	nwords = ecmd.req.link_mode_masks_nwords;
+-	supported = &ecmd.link_mode_data[0];
+-	advertising = &ecmd.link_mode_data[nwords];
+-	memcpy(advertising, supported, sizeof(__u32) * nwords);
+-
+-	for (i = 0; i < ARRAY_SIZE(ethtool_modes); i++) {
++	adv = ecmd.supported;
++	for (i = 0; i < ARRAY_SIZE(speed_mask); i++) {
+ 		if (s->flags & DEV_OPT_DUPLEX) {
+-			if (s->duplex)
+-				ethtool_link_mode_clear_bit(nwords, ethtool_modes[i].bit_half, advertising);
+-			else
+-				ethtool_link_mode_clear_bit(nwords, ethtool_modes[i].bit_full, advertising);
++			int bit = s->duplex ? speed_mask[i].bit_half : speed_mask[i].bit_full;
++			adv &= ~(1 << bit);
+ 		}
++
+ 		if (!(s->flags & DEV_OPT_SPEED) ||
+-		    s->speed == ethtool_modes[i].speed)
++		    s->speed == speed_mask[i].speed)
+ 			continue;
+ 
+-		ethtool_link_mode_clear_bit(nwords, ethtool_modes[i].bit_full, advertising);
+-		ethtool_link_mode_clear_bit(nwords, ethtool_modes[i].bit_half, advertising);
++		adv &= ~(1 << speed_mask[i].bit_full);
++		adv &= ~(1 << speed_mask[i].bit_half);
+ 	}
+ 
+-	if (s->flags & DEV_OPT_PAUSE)
+-		if (!s->pause)
+-			ethtool_link_mode_clear_bit(nwords, ETHTOOL_LINK_MODE_Pause_BIT, advertising);
+ 
+-	if (s->flags & DEV_OPT_ASYM_PAUSE)
+-		if (!s->asym_pause)
+-			ethtool_link_mode_clear_bit(nwords, ETHTOOL_LINK_MODE_Asym_Pause_BIT, advertising);
+-
+-	if (s->flags & DEV_OPT_AUTONEG) {
+-		ecmd.req.autoneg = s->autoneg ? AUTONEG_ENABLE : AUTONEG_DISABLE;
+-		if (!s->autoneg) {
+-			if (s->flags & DEV_OPT_SPEED)
+-				ecmd.req.speed = s->speed;
+-
+-			if (s->flags & DEV_OPT_DUPLEX)
+-				ecmd.req.duplex = s->duplex ? DUPLEX_FULL : DUPLEX_HALF;
+-		}
+-	}
++	if (ecmd.autoneg && ecmd.advertising == adv)
++		return;
+ 
+-	ecmd.req.cmd = ETHTOOL_SLINKSETTINGS;
++	ecmd.autoneg = 1;
++	ecmd.advertising = adv;
++	ecmd.cmd = ETHTOOL_SSET;
+ 	ioctl(sock_ioctl, SIOCETHTOOL, &ifr);
+ }
+ 
+@@ -2429,6 +2332,45 @@ read_uint64_file(int dir_fd, const char *file, uint64_t *val)
+ 	return ret;
+ }
+ 
++/* Assume advertised flags == supported flags */
++static const struct {
++	uint32_t mask;
++	const char *name;
++} ethtool_link_modes[] = {
++	{ ADVERTISED_10baseT_Half, "10baseT-H" },
++	{ ADVERTISED_10baseT_Full, "10baseT-F" },
++	{ ADVERTISED_100baseT_Half, "100baseT-H" },
++	{ ADVERTISED_100baseT_Full, "100baseT-F" },
++	{ ADVERTISED_1000baseT_Half, "1000baseT-H" },
++	{ ADVERTISED_1000baseT_Full, "1000baseT-F" },
++	{ ADVERTISED_1000baseKX_Full, "1000baseKX-F" },
++	{ ADVERTISED_2500baseX_Full, "2500baseX-F" },
++	{ ADVERTISED_10000baseT_Full, "10000baseT-F" },
++	{ ADVERTISED_10000baseKX4_Full, "10000baseKX4-F" },
++	{ ADVERTISED_10000baseKR_Full, "10000baseKR-F" },
++	{ ADVERTISED_20000baseMLD2_Full, "20000baseMLD2-F" },
++	{ ADVERTISED_20000baseKR2_Full, "20000baseKR2-F" },
++	{ ADVERTISED_40000baseKR4_Full, "40000baseKR4-F" },
++	{ ADVERTISED_40000baseCR4_Full, "40000baseCR4-F" },
++	{ ADVERTISED_40000baseSR4_Full, "40000baseSR4-F" },
++	{ ADVERTISED_40000baseLR4_Full, "40000baseLR4-F" },
++#ifdef ADVERTISED_56000baseKR4_Full
++	{ ADVERTISED_56000baseKR4_Full, "56000baseKR4-F" },
++	{ ADVERTISED_56000baseCR4_Full, "56000baseCR4-F" },
++	{ ADVERTISED_56000baseSR4_Full, "56000baseSR4-F" },
++	{ ADVERTISED_56000baseLR4_Full, "56000baseLR4-F" },
++#endif
++};
++
++static void system_add_link_modes(struct blob_buf *b, __u32 mask)
++{
++	size_t i;
++	for (i = 0; i < ARRAY_SIZE(ethtool_link_modes); i++) {
++		if (mask & ethtool_link_modes[i].mask)
++			blobmsg_add_string(b, NULL, ethtool_link_modes[i].name);
++	}
++}
++
+ bool
+ system_if_force_external(const char *ifname)
+ {
+@@ -2603,213 +2545,41 @@ ethtool_feature_value(const char *ifname, const char *keyname)
+ 	return active;
+ }
+ 
+-static void
+-system_add_link_mode_name(struct blob_buf *b, int i, bool half)
+-{
+-	char *buf;
+-
+-	/* allocate string buffer large enough for the mode name and a suffix
+-	 * "-F" or "-H" indicating full duplex or half duplex.
+-	 */
+-	buf = blobmsg_alloc_string_buffer(b, NULL, strlen(ethtool_modes[i].name) + 3);
+-	if (!buf)
+-		return;
+-
+-	strcpy(buf, ethtool_modes[i].name);
+-	if (half)
+-		strcat(buf, "-H");
+-	else
+-		strcat(buf, "-F");
+-
+-	blobmsg_add_string_buffer(b);
+-}
+-
+-static void
+-system_add_link_modes(__s8 nwords, struct blob_buf *b, __u32 *mask)
+-{
+-	size_t i;
+-
+-	for (i = 0; i < ARRAY_SIZE(ethtool_modes); i++) {
+-		if (ethtool_link_mode_test_bit(nwords, ethtool_modes[i].bit_half, mask))
+-			system_add_link_mode_name(b, i, true);
+-
+-		if (ethtool_link_mode_test_bit(nwords, ethtool_modes[i].bit_full, mask))
+-			system_add_link_mode_name(b, i, false);
+-	}
+-}
+-
+-static void
+-system_add_pause_modes(__s8 nwords, struct blob_buf *b, __u32 *mask)
+-{
+-	if (ethtool_link_mode_test_bit(nwords, ETHTOOL_LINK_MODE_Pause_BIT, mask))
+-		blobmsg_add_string(b, NULL, "pause");
+-
+-	if (ethtool_link_mode_test_bit(nwords, ETHTOOL_LINK_MODE_Asym_Pause_BIT, mask))
+-		blobmsg_add_string(b, NULL, "asym_pause");
+-}
+-
+-
+-static void
+-system_add_ethtool_pause_an(struct blob_buf *b, __s8 nwords,
+-			    __u32 *advertising, __u32 *lp_advertising)
+-{
+-	bool an_rx = false, an_tx = false;
+-	void *d;
+-
+-	d = blobmsg_open_array(b, "negotiated");
+-
+-	/* Work out negotiated pause frame usage per
+-	 * IEEE 802.3-2005 table 28B-3.
+-	 */
+-	if (ethtool_link_mode_test_bit(nwords,
+-				       ETHTOOL_LINK_MODE_Pause_BIT,
+-				       advertising) &&
+-	    ethtool_link_mode_test_bit(nwords,
+-				       ETHTOOL_LINK_MODE_Pause_BIT,
+-				       lp_advertising)) {
+-		an_tx = true;
+-		an_rx = true;
+-	} else if (ethtool_link_mode_test_bit(nwords,
+-					      ETHTOOL_LINK_MODE_Asym_Pause_BIT,
+-					      advertising) &&
+-		   ethtool_link_mode_test_bit(nwords,
+-					      ETHTOOL_LINK_MODE_Asym_Pause_BIT,
+-					      lp_advertising)) {
+-		if (ethtool_link_mode_test_bit(nwords,
+-					       ETHTOOL_LINK_MODE_Pause_BIT,
+-					       advertising))
+-			an_rx = true;
+-		else if (ethtool_link_mode_test_bit(nwords,
+-						    ETHTOOL_LINK_MODE_Pause_BIT,
+-						    lp_advertising))
+-			an_tx = true;
+-	}
+-	if (an_tx)
+-		blobmsg_add_string(b, NULL, "rx");
+-
+-	if (an_rx)
+-		blobmsg_add_string(b, NULL, "tx");
+-
+-	blobmsg_close_array(b, d);
+-}
+-
+-static void
+-system_get_ethtool_pause(struct device *dev, bool *rx_pause, bool *tx_pause, bool *pause_autoneg)
+-{
+-	struct ethtool_pauseparam pp;
+-	struct ifreq ifr = {
+-		.ifr_data = (caddr_t)&pp,
+-	};
+-
+-	strncpy(ifr.ifr_name, dev->ifname, sizeof(ifr.ifr_name) - 1);
+-	memset(&pp, 0, sizeof(pp));
+-	pp.cmd = ETHTOOL_GPAUSEPARAM;
+-
+-	/* may fail */
+-	if (ioctl(sock_ioctl, SIOCETHTOOL, &ifr) == -1) {
+-		*pause_autoneg = true;
+-		return;
+-	}
+-
+-	*rx_pause = pp.rx_pause;
+-	*tx_pause = pp.tx_pause;
+-	*pause_autoneg = pp.autoneg;
+-}
+-
+ int
+ system_if_dump_info(struct device *dev, struct blob_buf *b)
+ {
+-	__u32 *supported, *advertising, *lp_advertising;
+-	bool rx_pause, tx_pause, pause_autoneg;
+-	struct {
+-		struct ethtool_link_settings req;
+-		__u32 link_mode_data[3 * 127];
+-	} ecmd;
+-	struct ifreq ifr = {
+-		.ifr_data = (caddr_t)&ecmd,
+-	};
+-	__s8 nwords;
+-	void *c, *d;
++	struct ethtool_cmd ecmd;
++	struct ifreq ifr;
+ 	char *s;
+-
+-	system_get_ethtool_pause(dev, &rx_pause, &tx_pause, &pause_autoneg);
++	void *c;
+ 
+ 	memset(&ecmd, 0, sizeof(ecmd));
+-	ecmd.req.cmd = ETHTOOL_GLINKSETTINGS;
++	memset(&ifr, 0, sizeof(ifr));
+ 	strncpy(ifr.ifr_name, dev->ifname, sizeof(ifr.ifr_name) - 1);
++	ifr.ifr_data = (caddr_t) &ecmd;
++	ecmd.cmd = ETHTOOL_GSET;
+ 
+-	if (ioctl(sock_ioctl, SIOCETHTOOL, &ifr) < 0 ||
+-	    ecmd.req.link_mode_masks_nwords >= 0 ||
+-	    ecmd.req.cmd != ETHTOOL_GLINKSETTINGS)
+-		return -EOPNOTSUPP;
+-
+-	ecmd.req.link_mode_masks_nwords = -ecmd.req.link_mode_masks_nwords;
+-
+-	if (ioctl(sock_ioctl, SIOCETHTOOL, &ifr) < 0 ||
+-	    ecmd.req.link_mode_masks_nwords <= 0 ||
+-	    ecmd.req.cmd != ETHTOOL_GLINKSETTINGS)
+-		return -EIO;
+-
+-	nwords = ecmd.req.link_mode_masks_nwords;
+-	supported = &ecmd.link_mode_data[0];
+-	advertising = &ecmd.link_mode_data[nwords];
+-	lp_advertising = &ecmd.link_mode_data[2 * nwords];
+-
+-	c = blobmsg_open_array(b, "link-advertising");
+-	system_add_link_modes(nwords, b, advertising);
+-	blobmsg_close_array(b, c);
+-
+-	c = blobmsg_open_array(b, "link-partner-advertising");
+-	system_add_link_modes(nwords, b, lp_advertising);
+-	blobmsg_close_array(b, c);
+-
+-	c = blobmsg_open_array(b, "link-supported");
+-	system_add_link_modes(nwords, b, supported);
+-	blobmsg_close_array(b, c);
+-
+-	if (ethtool_validate_speed(ecmd.req.speed) &&
+-	    (ecmd.req.speed != (__u32)SPEED_UNKNOWN) &&
+-	    (ecmd.req.speed != 0)) {
+-		s = blobmsg_alloc_string_buffer(b, "speed", 10);
+-		snprintf(s, 8, "%d%c", ecmd.req.speed,
+-			ecmd.req.duplex == DUPLEX_HALF ? 'H' : 'F');
+-		blobmsg_add_string_buffer(b);
+-	}
+-	blobmsg_add_u8(b, "autoneg", !!ecmd.req.autoneg);
++	if (ioctl(sock_ioctl, SIOCETHTOOL, &ifr) == 0) {
++		c = blobmsg_open_array(b, "link-advertising");
++		system_add_link_modes(b, ecmd.advertising);
++		blobmsg_close_array(b, c);
+ 
+-	c = blobmsg_open_table(b, "flow-control");
+-	blobmsg_add_u8(b, "autoneg", pause_autoneg);
++		c = blobmsg_open_array(b, "link-partner-advertising");
++		system_add_link_modes(b, ecmd.lp_advertising);
++		blobmsg_close_array(b, c);
+ 
+-	d = blobmsg_open_array(b, "supported");
+-	system_add_pause_modes(nwords, b, supported);
+-	blobmsg_close_array(b, d);
++		c = blobmsg_open_array(b, "link-supported");
++		system_add_link_modes(b, ecmd.supported);
++		blobmsg_close_array(b, c);
+ 
+-	if (pause_autoneg) {
+-		d = blobmsg_open_array(b, "link-advertising");
+-		system_add_pause_modes(nwords, b, advertising);
+-		blobmsg_close_array(b, d);
+-	}
+-
+-	d = blobmsg_open_array(b, "link-partner-advertising");
+-	system_add_pause_modes(nwords, b, lp_advertising);
+-	blobmsg_close_array(b, d);
+-
+-	if (pause_autoneg) {
+-		system_add_ethtool_pause_an(b, nwords, advertising,
+-					    lp_advertising);
+-	} else {
+-		d = blobmsg_open_array(b, "selected");
+-		if (rx_pause)
+-			blobmsg_add_string(b, NULL, "rx");
+-
+-		if (tx_pause)
+-			blobmsg_add_string(b, NULL, "tx");
++		s = blobmsg_alloc_string_buffer(b, "speed", 8);
++		snprintf(s, 8, "%d%c", ethtool_cmd_speed(&ecmd),
++			ecmd.duplex == DUPLEX_HALF ? 'H' : 'F');
++		blobmsg_add_string_buffer(b);
+ 
+-		blobmsg_close_array(b, d);
++		blobmsg_add_u8(b, "autoneg", !!ecmd.autoneg);
+ 	}
+ 
+-	blobmsg_close_table(b, c);
+-
+ 	blobmsg_add_u8(b, "hw-tc-offload",
+ 		ethtool_feature_value(dev->ifname, "hw-tc-offload"));
+ 
+-- 
+2.18.0
+
diff --git a/autobuild_mac80211_release/package/network/config/netifd_new/patches/mtk-0001-netifd-mtk-Fix-the-AP-sequence-is-out-of-order-when-.patch b/autobuild_mac80211_release/package/network/config/netifd_new/patches/mtk-0001-netifd-mtk-Fix-the-AP-sequence-is-out-of-order-when-.patch
new file mode 100644
index 0000000..0bc420d
--- /dev/null
+++ b/autobuild_mac80211_release/package/network/config/netifd_new/patches/mtk-0001-netifd-mtk-Fix-the-AP-sequence-is-out-of-order-when-.patch
@@ -0,0 +1,26 @@
+From 89dd694e33b2b1c23ca8e0a5178075f9198abb83 Mon Sep 17 00:00:00 2001
+From: "Allen.Ye" <allen.ye@mediatek.com>
+Date: Thu, 23 Feb 2023 14:15:07 +0800
+Subject: [PATCH] netifd: mtk: Fix the AP sequence is out of order when set
+ over 10 Aps
+
+---
+ wireless.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/wireless.c b/wireless.c
+index 705d6dd..43c6e3c 100644
+--- a/wireless.c
++++ b/wireless.c
+@@ -1192,7 +1192,7 @@ struct wireless_interface* wireless_interface_create(struct wireless_device *wde
+ 	if (cur && blobmsg_get_bool(cur))
+ 		return NULL;
+ 
+-	sprintf(name, "%d", wdev->vif_idx++);
++	sprintf(name, "%02d", wdev->vif_idx++);
+ 
+ 	vif = calloc_a(sizeof(*vif),
+ 		       &name_buf, strlen(name) + 1);
+-- 
+2.18.0
+
diff --git a/autobuild_mac80211_release/package/network/config/netifd_new/patches/mtk-0002-Add-sleep-to-prevent-for-ubus-race-condition.patch b/autobuild_mac80211_release/package/network/config/netifd_new/patches/mtk-0002-Add-sleep-to-prevent-for-ubus-race-condition.patch
new file mode 100644
index 0000000..6922175
--- /dev/null
+++ b/autobuild_mac80211_release/package/network/config/netifd_new/patches/mtk-0002-Add-sleep-to-prevent-for-ubus-race-condition.patch
@@ -0,0 +1,26 @@
+From ef0b42d6421e56a49ac44d9b2ed727905e2a35fc Mon Sep 17 00:00:00 2001
+From: "Allen.Ye" <allen.ye@mediatek.com>
+Date: Tue, 2 May 2023 10:44:27 +0800
+Subject: [PATCH] Add sleep to prevent for ubus race condition
+
+---
+ wireless.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/wireless.c b/wireless.c
+index 027a57c..f0fc0a8 100644
+--- a/wireless.c
++++ b/wireless.c
+@@ -459,6 +459,9 @@ wireless_device_run_handler(struct wireless_device *wdev, bool up)
+ 
+ 	netifd_start_process(argv, NULL, &wdev->script_task);
+ 
++	// sleep to prevent ubus call hostapd race condition
++	sleep(1);
++
+ 	if (fds[1] >= 0)
+ 		close(fds[1]);
+ 
+-- 
+2.18.0
+
