diff --git a/recipes-wifi/linux-mt76/files/0001-mt76-add-internal-wed_tiny-header-file.patch b/recipes-wifi/linux-mt76/files/0001-mt76-add-internal-wed_tiny-header-file.patch
deleted file mode 100644
index 7f0b3c8..0000000
--- a/recipes-wifi/linux-mt76/files/0001-mt76-add-internal-wed_tiny-header-file.patch
+++ /dev/null
@@ -1,77 +0,0 @@
-From 1430e7a7a3d5ae7693d6fa8e795524ee4c78c0ef Mon Sep 17 00:00:00 2001
-From: Shayne Chen <shayne.chen@mediatek.com>
-Date: Mon, 7 Nov 2022 23:05:51 +0800
-Subject: [PATCH] mt76: add internal wed_tiny header file
-
-To prevent build fail of WED related parts.
-
-Change-Id: I907cae30e0775337a0c670010b450be15b510e18
----
- mt76.h     |  4 ++++
- wed_tiny.h | 31 +++++++++++++++++++++++++++++++
- 2 files changed, 35 insertions(+)
- create mode 100644 wed_tiny.h
-
-diff --git a/mt76.h b/mt76.h
-index a3cf0d95..5edb986b 100755
---- a/mt76.h
-+++ b/mt76.h
-@@ -13,7 +13,11 @@
- #include <linux/leds.h>
- #include <linux/usb.h>
- #include <linux/average.h>
-+#ifdef CONFIG_NET_MEDIATEK_SOC_WED
- #include <linux/soc/mediatek/mtk_wed.h>
-+#else
-+#include "wed_tiny.h"
-+#endif
- #include <net/mac80211.h>
- #include "util.h"
- #include "testmode.h"
-diff --git a/wed_tiny.h b/wed_tiny.h
-new file mode 100644
-index 00000000..91c98e7d
---- /dev/null
-+++ b/wed_tiny.h
-@@ -0,0 +1,41 @@
-+#ifndef __WED_TINY_H
-+#define __WED_TINY_H
-+
-+#include <linux/pci.h>
-+
-+struct mtk_wed_device {
-+};
-+
-+static inline int
-+mtk_wed_device_attach(struct mtk_wed_device *dev)
-+{
-+        int ret = -ENODEV;
-+        return ret;
-+}
-+
-+static inline bool mtk_wed_device_active(struct mtk_wed_device *dev)
-+{
-+        return false;
-+}
-+
-+static inline bool
-+mtk_wed_get_rx_capa(struct mtk_wed_device *dev)
-+{
-+	return false;
-+}
-+
-+#define mtk_wed_device_detach(_dev) do {} while (0)
-+#define mtk_wed_device_start(_dev, _mask) do {} while (0)
-+#define mtk_wed_device_stop(_dev, _reset) do {} while (0)
-+#define mtk_wed_device_tx_ring_setup(_dev, _ring, _regs, _reset) -ENODEV
-+#define mtk_wed_device_txfree_ring_setup(_dev, _ring, _regs) -ENODEV
-+#define mtk_wed_device_rx_ring_setup(_dev, _ring, _regs, _reset) -ENODEV
-+#define mtk_wed_device_reg_read(_dev, _reg) 0
-+#define mtk_wed_device_reg_write(_dev, _reg, _val) do {} while (0)
-+#define mtk_wed_device_irq_get(_dev, _mask) 0
-+#define mtk_wed_device_irq_set_mask(_dev, _mask) do {} while (0)
-+#define mtk_wed_device_dma_reset(_dev) do {} while (0)
-+#define mtk_wed_device_ppe_check(_dev, _skb, _reason, _hash) do {} while (0)
-+#define mtk_wed_device_update_msg(_dev, _id, _msg, _len) -ENODEV
-+
-+#endif
diff --git a/recipes-wifi/linux-mt76/files/5000-mt76-add-internal-wed_tiny-header-file.patch b/recipes-wifi/linux-mt76/files/5000-mt76-add-internal-wed_tiny-header-file.patch
new file mode 100644
index 0000000..f2fa3fc
--- /dev/null
+++ b/recipes-wifi/linux-mt76/files/5000-mt76-add-internal-wed_tiny-header-file.patch
@@ -0,0 +1,161 @@
+From 1430e7a7a3d5ae7693d6fa8e795524ee4c78c0ef Mon Sep 17 00:00:00 2001
+From: Shayne Chen <shayne.chen@mediatek.com>
+Date: Mon, 7 Nov 2022 23:05:51 +0800
+Subject: [PATCH] mt76: add internal wed_tiny header file
+
+To prevent build fail of WED related parts.
+
+Change-Id: I907cae30e0775337a0c670010b450be15b510e18
+---
+ mt76.h     |  4 ++++
+ wed_tiny.h | 31 +++++++++++++++++++++++++++++++
+ 2 files changed, 35 insertions(+)
+ create mode 100644 wed_tiny.h
+
+diff --git a/mt76.h b/mt76.h
+index a3cf0d95..5edb986b 100755
+--- a/mt76.h
++++ b/mt76.h
+@@ -13,7 +13,11 @@
+ #include <linux/leds.h>
+ #include <linux/usb.h>
+ #include <linux/average.h>
++#ifdef CONFIG_NET_MEDIATEK_SOC_WED
+ #include <linux/soc/mediatek/mtk_wed.h>
++#else
++#include "wed_tiny.h"
++#endif
+ #include <net/mac80211.h>
+ #include "util.h"
+ #include "testmode.h"
+diff --git a/wed_tiny.h b/wed_tiny.h
+new file mode 100644
+index 00000000..91c98e7d
+--- /dev/null
++++ b/wed_tiny.h
+@@ -0,0 +1,110 @@
++#ifndef __WED_TINY_H
++#define __WED_TINY_H
++
++#include <linux/pci.h>
++
++#define MTK_WED_TX_QUEUES		2
++#define MTK_WED_RX_QUEUES		2
++
++struct mtk_wed_device {
++	const struct mtk_wed_ops *ops;
++	struct device *dev;
++	struct mtk_wed_hw *hw;
++	bool init_done, running;
++	int wdma_idx;
++	int irq;
++	u8 ver;
++	u32 rev_id;
++
++	struct {
++		int size;
++		struct page_frag_cache rx_page;
++		struct mtk_rxbm_desc *desc;
++		dma_addr_t desc_phys;
++	} rx_buf_ring;
++
++	struct {
++		
++		void __iomem *rro_desc;
++		dma_addr_t miod_desc_phys;
++		dma_addr_t fdbk_desc_phys;
++		u32 mcu_view_miod;
++	} rro;
++
++	/* filled by driver: */
++	struct {
++		union {
++			struct platform_device *platform_dev;
++			struct pci_dev *pci_dev;
++		};
++		void __iomem *base;
++		u32 bus_type;
++		u32 phy_base;
++
++		u32 wpdma_phys;
++		u32 wpdma_int;
++		u32 wpdma_mask;
++		u32 wpdma_tx;
++		u32 wpdma_txfree;
++		u32 wpdma_rx_glo;
++		u32 wpdma_rx;
++
++		u8 tx_tbit[MTK_WED_TX_QUEUES];
++		u8 rx_tbit[MTK_WED_RX_QUEUES];
++		u8 txfree_tbit;
++
++		u16 token_start;
++		unsigned int nbuf;
++		unsigned int rx_nbuf;
++		unsigned int rx_npkt;
++		unsigned int rx_size;
++
++		bool wcid_512;
++
++		u32 (*init_buf)(void *ptr, dma_addr_t phys, int token_id);
++		int (*offload_enable)(struct mtk_wed_device *wed);
++		void (*offload_disable)(struct mtk_wed_device *wed);
++		u32 (*init_rx_buf)(struct mtk_wed_device *wed,
++				   int pkt_num);
++		void (*release_rx_buf)(struct mtk_wed_device *wed);
++
++		void (*ser_trigger)(struct mtk_wed_device *wed);
++	} wlan;
++	struct completion fe_reset_done;
++	struct completion wlan_reset_done;
++	atomic_t fe_reset;
++};
++
++static inline int
++mtk_wed_device_attach(struct mtk_wed_device *dev)
++{
++        int ret = -ENODEV;
++        return ret;
++}
++
++static inline bool mtk_wed_device_active(struct mtk_wed_device *dev)
++{
++        return false;
++}
++
++static inline bool
++mtk_wed_get_rx_capa(struct mtk_wed_device *dev)
++{
++	return false;
++}
++
++#define mtk_wed_device_detach(_dev) do {} while (0)
++#define mtk_wed_device_start(_dev, _mask) do {} while (0)
++#define mtk_wed_device_stop(_dev, _reset) do {} while (0)
++#define mtk_wed_device_tx_ring_setup(_dev, _ring, _regs, _reset) -ENODEV
++#define mtk_wed_device_txfree_ring_setup(_dev, _ring, _regs) -ENODEV
++#define mtk_wed_device_rx_ring_setup(_dev, _ring, _regs, _reset) -ENODEV
++#define mtk_wed_device_reg_read(_dev, _reg) 0
++#define mtk_wed_device_reg_write(_dev, _reg, _val) do {} while (0)
++#define mtk_wed_device_irq_get(_dev, _mask) 0
++#define mtk_wed_device_irq_set_mask(_dev, _mask) do {} while (0)
++#define mtk_wed_device_dma_reset(_dev) do {} while (0)
++#define mtk_wed_device_ppe_check(_dev, _skb, _reason, _hash) do {} while (0)
++#define mtk_wed_device_update_msg(_dev, _id, _msg, _len) -ENODEV
++
++#endif
+diff --git a/mt7915/mmio.c b/mt7915/mmio.c
+index e30a8d4c..57c56918 100644
+--- a/mt7915/mmio.c
++++ b/mt7915/mmio.c
+@@ -11,7 +11,11 @@
+ #include "../trace.h"
+ #include "../dma.h"
+ 
++#ifdef CONFIG_NET_MEDIATEK_SOC_WED
+ static bool wed_enable = true;
++#else
++static bool wed_enable;
++#endif	
+ module_param(wed_enable, bool, 0644);
+ MODULE_PARM_DESC(wed_enable, "Enable Wireless Ethernet Dispatch support");
\ No newline at end of file
diff --git a/recipes-wifi/linux-mt76/linux-mt76_2.x.bb b/recipes-wifi/linux-mt76/linux-mt76_2.x.bb
index 970937d..bbbc47d 100644
--- a/recipes-wifi/linux-mt76/linux-mt76_2.x.bb
+++ b/recipes-wifi/linux-mt76/linux-mt76_2.x.bb
@@ -9,7 +9,6 @@
 SRC_URI = " \
     git://git@github.com/openwrt/mt76.git;protocol=https \
     file://COPYING;subdir=git \
-    file://0001-mt76-add-internal-wed_tiny-header-file.patch;apply=no \
     "
 SRC_URI += " \
     file://src \
@@ -23,39 +22,11 @@
 FILESEXTRAPATHS_prepend := "${THISDIR}/files/patches:"
 FILESEXTRAPATHS_prepend := "${THISDIR}/src:"
 
-#require files/patches/patches.inc
-SRC_URI += "file://*.patch;apply=no"
+require files/patches/patches.inc
+SRC_URI_append += "file://5000-mt76-add-internal-wed_tiny-header-file.patch"
 
 S = "${WORKDIR}/git"
 
-do_mtk_patches() {
-    cd ${S}
-
-    DISTRO_FlowBlock_ENABLED="${@bb.utils.contains('DISTRO_FEATURES','flow_offload','true','false',d)}"
-    
-    if [ ! -e mtk_wifi_patch_applied ]; then
-        for i in ${WORKDIR}/*.patch
-        do
-        if [ $DISTRO_FlowBlock_ENABLED = 'true' ]; then
-            patch -p1 < $i;
-        else 
-            prefix=$(echo -n "${WORKDIR}"|wc -c)
-            patch_number_start=$(expr $prefix + 2)
-            patch_number_end=$(expr $patch_number_start + 3 )
-            patch_number=$(echo "$i" | cut -c"$patch_number_start"-"$patch_number_end")
-
-            if [ "$patch_number" -ge "3000" ]; then
-                continue;
-            else
-                patch -p1 < $i;
-            fi
-        fi
-        done
-    fi
-    touch mtk_wifi_patch_applied
-}
-addtask mtk_patches after do_patch before do_configure
-
 NOSTDINC_FLAGS = " \
     -I${B} \
     -I${STAGING_KERNEL_BUILDDIR}/usr/include/mac80211-backport/uapi \
diff --git a/recipes-wifi/linux-mt76/linux-mt76_3.x.bb b/recipes-wifi/linux-mt76/linux-mt76_3.x.bb
index a6618c0..34a44d1 100644
--- a/recipes-wifi/linux-mt76/linux-mt76_3.x.bb
+++ b/recipes-wifi/linux-mt76/linux-mt76_3.x.bb
@@ -9,7 +9,6 @@
 SRC_URI = " \
     git://git@github.com/openwrt/mt76.git;protocol=https \
     file://COPYING;subdir=git \
-    file://0001-mt76-add-internal-wed_tiny-header-file.patch;apply=no \
     "
 SRC_URI += " \
     file://src \
@@ -23,37 +22,11 @@
 FILESEXTRAPATHS_prepend := "${THISDIR}/files/patches-${PV}:"
 FILESEXTRAPATHS_prepend := "${THISDIR}/src:"
 
-SRC_URI += "file://*.patch;apply=no"
+require files/patches-${PV}/patches.inc
+SRC_URI_append += "file://5000-mt76-add-internal-wed_tiny-header-file.patch"
 
 S = "${WORKDIR}/git"
 
-do_mtk_patches() {
-    cd ${S}
-
-    DISTRO_FlowBlock_ENABLED="${@bb.utils.contains('DISTRO_FEATURES','flow_offload','true','false',d)}"
-    
-    if [ ! -e mtk_wifi_patch_applied ]; then
-        for i in ${WORKDIR}/*.patch
-        do
-        if [ $DISTRO_FlowBlock_ENABLED = 'true' ]; then
-            patch -p1 < $i;
-        else 
-            prefix=$(echo -n "${WORKDIR}"|wc -c)
-            patch_number_start=$(expr $prefix + 2)
-            patch_number_end=$(expr $patch_number_start + 3 )
-            patch_number=$(echo "$i" | cut -c"$patch_number_start"-"$patch_number_end")
-
-            if [ "$patch_number" -ge "3000" ]; then
-                continue;
-            else
-                patch -p1 < $i;
-            fi
-        fi
-        done
-    fi
-    touch mtk_wifi_patch_applied
-}
-addtask mtk_patches after do_patch before do_configure
 
 NOSTDINC_FLAGS = " \
     -I${B} \
diff --git a/recipes-wifi/linux-mt76/mt76-test.bb b/recipes-wifi/linux-mt76/mt76-test.bb
index 6af254f..2f768bd 100644
--- a/recipes-wifi/linux-mt76/mt76-test.bb
+++ b/recipes-wifi/linux-mt76/mt76-test.bb
@@ -13,7 +13,7 @@
 SRC_URI = " \
     git://git@github.com/openwrt/mt76.git;protocol=https \
     file://COPYING;subdir=git \
-    file://0001-mt76-add-internal-wed_tiny-header-file.patch;apply=no \
+    file://5000-mt76-add-internal-wed_tiny-header-file.patch;apply=no\
     "
 
 
@@ -34,26 +34,9 @@
 
 do_mtk_patches() {
 	cd ${S}/../
-    DISTRO_FlowBlock_ENABLED="${@bb.utils.contains('DISTRO_FEATURES','flow_offload','true','false',d)}"
     
 	if [ ! -e mtk_wifi_patch_applied ]; then
-		for i in ${WORKDIR}/*.patch
-        do
-        if [ $DISTRO_FlowBlock_ENABLED = 'true' ]; then
-            patch -p1 < $i;
-        else 
-            prefix=$(echo -n "${WORKDIR}"|wc -c)
-            patch_number_start=$(expr $prefix + 2)
-            patch_number_end=$(expr $patch_number_start + 3 )
-            patch_number=$(echo "$i" | cut -c"$patch_number_start"-"$patch_number_end")
-
-            if [ "$patch_number" -ge "3000" ]; then
-                continue;
-            else
-                patch -p1 < $i;
-            fi
-        fi
-        done
+        for i in ${WORKDIR}/*.patch; do patch -p1 < $i; done
 	fi
 	touch mtk_wifi_patch_applied
 }
