diff --git a/autobuild_mac80211_release/package/kernel/mt76/patches/3006-mt76-mt7915-add-statistic-for-H-W-Rx-Path.patch b/autobuild_mac80211_release/package/kernel/mt76/patches/3006-mt76-mt7915-add-statistic-for-H-W-Rx-Path.patch
index d92030c..ec3a0a3 100644
--- a/autobuild_mac80211_release/package/kernel/mt76/patches/3006-mt76-mt7915-add-statistic-for-H-W-Rx-Path.patch
+++ b/autobuild_mac80211_release/package/kernel/mt76/patches/3006-mt76-mt7915-add-statistic-for-H-W-Rx-Path.patch
@@ -5,15 +5,12 @@
 
 Change-Id: Id94d663f08e91c83d296bd57e5e9b65a505ae1c7
 ---
- mt76.h            |  4 ++++
- mt76_connac.h     |  5 +++++
- mt76_connac_mcu.h | 35 +++++++++++++++++++++++++++++++++++
- mt7915/mac.c      | 25 +++++++++++++++++++++++++
- mt7915/main.c     |  9 ++++++++-
- mt7915/mcu.c      | 21 +++++++++++++++++++++
- mt7915/mmio.c     |  6 ++++++
- mt7915/mt7915.h   |  3 +++
- 8 files changed, 107 insertions(+), 1 deletion(-)
+ mt76.h          |  4 ++++
+ mt7915/mac.c    | 25 +++++++++++++++++++++++++
+ mt7915/main.c   |  9 ++++++++-
+ mt7915/mmio.c   | 17 +++++++++++++++++
+ mt7915/mt7915.h |  2 ++
+ 5 files changed, 56 insertions(+), 1 deletion(-)
 
 diff --git a/mt76.h b/mt76.h
 index 3530d213..47a92132 100644
@@ -30,68 +27,6 @@
  };
  
  enum mt76_wcid_flags {
-diff --git a/mt76_connac.h b/mt76_connac.h
-index 9a468878..7ecc7253 100644
---- a/mt76_connac.h
-+++ b/mt76_connac.h
-@@ -224,6 +224,11 @@ static inline bool is_mt76_fw_txp(struct mt76_dev *dev)
- 	}
- }
- 
-+static inline bool is_wo_mcu(struct mt76_dev *dev)
-+{
-+	return is_mt7986(dev);
-+}
-+
- static inline u8 mt76_connac_chan_bw(struct cfg80211_chan_def *chandef)
- {
- 	static const u8 width_to_bw[] = {
-diff --git a/mt76_connac_mcu.h b/mt76_connac_mcu.h
-index 27a36241..475c3910 100644
---- a/mt76_connac_mcu.h
-+++ b/mt76_connac_mcu.h
-@@ -1211,6 +1211,41 @@ enum {
- 	MCU_CE_CMD_GET_TXPWR = 0xd0,
- };
- 
-+enum wo_event_id {
-+	WO_EVT_LOG_DUMP = 0x1,
-+	WO_EVT_PROFILING = 0x2,
-+	WO_EVT_RXCNT_INFO = 0x3
-+};
-+
-+enum wo_cmd_id {
-+	WO_CMD_WED_CFG = 0,
-+	WO_CMD_WED_RX_STAT,
-+	WO_CMD_RRO_SER,
-+	WO_CMD_DBG_INFO,
-+	WO_CMD_DEV_INFO,
-+	WO_CMD_BSS_INFO,
-+	WO_CMD_STA_REC,
-+	WO_CMD_DEV_INFO_DUMP,
-+	WO_CMD_BSS_INFO_DUMP,
-+	WO_CMD_STA_REC_DUMP,
-+	WO_CMD_BA_INFO_DUMP,
-+	WO_CMD_FBCMD_Q_DUMP,
-+	WO_CMD_FW_LOG_CTRL,
-+	WO_CMD_LOG_FLUSH,
-+	WO_CMD_CHANGE_STATE,
-+	WO_CMD_CPU_STATS_ENABLE,
-+	WO_CMD_CPU_STATS_DUMP,
-+	WO_CMD_EXCEPTION_INIT,
-+	WO_CMD_PROF_CTRL,
-+	WO_CMD_STA_BA_DUMP,
-+	WO_CMD_BA_CTRL_DUMP,
-+	WO_CMD_RXCNT_CTRL,
-+	WO_CMD_RXCNT_INFO,
-+	WO_CMD_SET_CAP,
-+	WO_CMD_CCIF_RING_DUMP,
-+	WO_CMD_WED_END
-+};
-+
- enum {
- 	PATCH_SEM_RELEASE,
- 	PATCH_SEM_GET
 diff --git a/mt7915/mac.c b/mt7915/mac.c
 index e78f30fc..7fb161db 100644
 --- a/mt7915/mac.c
@@ -155,38 +90,6 @@
  	}
  }
  
-diff --git a/mt7915/mcu.c b/mt7915/mcu.c
-index 6603effd..87e02de7 100644
---- a/mt7915/mcu.c
-+++ b/mt7915/mcu.c
-@@ -293,6 +293,27 @@ int mt7915_mcu_wa_cmd(struct mt7915_dev *dev, int cmd, u32 a1, u32 a2, u32 a3)
- 	return mt76_mcu_send_msg(&dev->mt76, cmd, &req, sizeof(req), false);
- }
- 
-+int mt7915_mcu_wo_cmd(struct mt7915_dev *dev, int cmd, u32 a1, u32 a2)
-+{
-+	struct mtk_wed_device *wed = &dev->mt76.mmio.wed;
-+	struct {
-+		__le32 args[2];
-+	} req = {
-+		.args = {
-+			cpu_to_le32(a1),
-+			cpu_to_le32(a2),
-+		},
-+	};
-+
-+	if (!mtk_wed_device_active(wed))
-+		return -1;
-+
-+	if (!is_wo_mcu(&dev->mt76))
-+		return -1;
-+
-+	return mtk_soc_wed_ops->msg_update(wed, cmd, (void *)&req, sizeof(req));
-+}
-+
- static void
- mt7915_mcu_csa_finish(void *priv, u8 *mac, struct ieee80211_vif *vif)
- {
 diff --git a/mt7915/mmio.c b/mt7915/mmio.c
 index 6a1877d4..cd8326b0 100644
 --- a/mt7915/mmio.c
@@ -208,12 +111,23 @@
  	dev->mt76.rx_token_size = wed->wlan.rx_pkt;
  	if (mtk_wed_device_attach(wed))
  		return 0;
-@@ -630,6 +633,9 @@ int mt7915_mmio_wed_init(struct mt7915_dev *dev, void *pdev_ptr,
+@@ -630,6 +633,20 @@ int mt7915_mmio_wed_init(struct mt7915_dev *dev, void *pdev_ptr,
  	if (ret)
  		return ret;
  
-+	if (is_wo_mcu(&dev->mt76))
-+		mt7915_mcu_wo_cmd(dev, WO_CMD_RXCNT_CTRL, 1, 6);
++	if (wed->ver != 1) {
++		struct {
++		__le32 args[2];
++		} req = {
++			.args = {
++				cpu_to_le32(1),
++				cpu_to_le32(6),
++			},
++		};
++
++		mtk_wed_device_update_msg(wed, WED_WO_RXCNT_CTRL,
++					  (void *)&req, sizeof(req));
++	}
 +
  	return 1;
  #else
@@ -231,14 +145,6 @@
  int mt7915_register_device(struct mt7915_dev *dev);
  void mt7915_unregister_device(struct mt7915_dev *dev);
  void mt7915_eeprom_rebonding(struct mt7915_dev *dev);
-@@ -633,6 +635,7 @@ int mt7915_mcu_rdd_background_enable(struct mt7915_phy *phy,
- 				     struct cfg80211_chan_def *chandef);
- int mt7915_mcu_rf_regval(struct mt7915_dev *dev, u32 regidx, u32 *val, bool set);
- int mt7915_mcu_wa_cmd(struct mt7915_dev *dev, int cmd, u32 a1, u32 a2, u32 a3);
-+int mt7915_mcu_wo_cmd(struct mt7915_dev *dev, int cmd, u32 a1, u32 a2);
- int mt7915_mcu_fw_log_2_host(struct mt7915_dev *dev, u8 type, u8 ctrl);
- int mt7915_mcu_fw_dbg_ctrl(struct mt7915_dev *dev, u32 module, u8 level);
- void mt7915_mcu_rx_event(struct mt7915_dev *dev, struct sk_buff *skb);
 -- 
 2.25.1
 
diff --git a/autobuild_mac80211_release/target/linux/mediatek/patches-5.4/9997-add-wed-rx-support-for-mt7896.patch b/autobuild_mac80211_release/target/linux/mediatek/patches-5.4/9997-add-wed-rx-support-for-mt7896.patch
index 00909d5..b05f862 100644
--- a/autobuild_mac80211_release/target/linux/mediatek/patches-5.4/9997-add-wed-rx-support-for-mt7896.patch
+++ b/autobuild_mac80211_release/target/linux/mediatek/patches-5.4/9997-add-wed-rx-support-for-mt7896.patch
@@ -14,11 +14,11 @@
  drivers/net/ethernet/mediatek/mtk_wed_ccif.h  |  45 ++
  .../net/ethernet/mediatek/mtk_wed_debugfs.c   |  90 +++
  drivers/net/ethernet/mediatek/mtk_wed_mcu.c   | 586 ++++++++++++++++
- drivers/net/ethernet/mediatek/mtk_wed_mcu.h   | 125 ++++
+ drivers/net/ethernet/mediatek/mtk_wed_mcu.h   |  96 +++
  drivers/net/ethernet/mediatek/mtk_wed_regs.h  | 144 +++-
  drivers/net/ethernet/mediatek/mtk_wed_wo.c    | 564 ++++++++++++++++
  drivers/net/ethernet/mediatek/mtk_wed_wo.h    | 324 +++++++++
- include/linux/soc/mediatek/mtk_wed.h          |  74 ++-
+ include/linux/soc/mediatek/mtk_wed.h          | 101 ++-
  14 files changed, 2796 insertions(+), 75 deletions(-)
  create mode 100644 drivers/net/ethernet/mediatek/mtk_wed_ccif.c
  create mode 100644 drivers/net/ethernet/mediatek/mtk_wed_ccif.h
@@ -280,7 +280,7 @@
 +
 +	mtk_wed_reset(dev, MTK_WED_RESET_WED);
 +
-+	mtk_wed_mcu_send_msg(wo, MODULE_ID_WO, WO_CMD_CHANGE_STATE,
++	mtk_wed_mcu_send_msg(wo, MODULE_ID_WO, WED_WO_CHANGE_STATE,
 +			     &state, sizeof(state), false);
 +
 +	do {
@@ -937,7 +937,7 @@
 +		.wed = 0,
 +	};
 +
-+	return mtk_wed_mcu_send_msg(wo, MODULE_ID_WO, WO_CMD_WED_CFG,
++	return mtk_wed_mcu_send_msg(wo, MODULE_ID_WO, WED_WO_CFG,
 +				    &req, sizeof(req), true);
 +}
 +
@@ -1711,7 +1711,7 @@
 +	req.arg0 = (u32)exp->phys;
 +	req.arg1 = (u32)exp->log_size;
 +
-+	return mtk_wed_mcu_send_msg(wo, MODULE_ID_WO, WO_CMD_EXCEPTION_INIT,
++	return mtk_wed_mcu_send_msg(wo, MODULE_ID_WO, WED_WO_EXCEPTION_INIT,
 +				    &req, sizeof(req), false);
 +
 +free:
@@ -1774,7 +1774,7 @@
 +
 +		for (i = 0; i < cnt; i++)
 +			if (wed->wlan.update_wo_rxcnt)
-+				wed->wlan.update_wo_rxcnt(wed, rxcnt);
++				wed->wlan.update_wo_rxcnt(wed, &rxcnt[i]);
 +		break;
 +	default:
 +		break;
@@ -1967,13 +1967,13 @@
 +	skb_pull(skb, sizeof(struct wed_cmd_hdr));
 +
 +	switch (cmd) {
-+	case WO_CMD_RXCNT_INFO:
++	case WED_WO_RXCNT_INFO:
 +		cnt = *(u32 *)skb->data;
 +		rxcnt = (struct wo_cmd_rxcnt_t *)((u32 *)skb->data+1);
 +
 +		for (i = 0; i < cnt; i++)
 +			if (wed->wlan.update_wo_rxcnt)
-+				wed->wlan.update_wo_rxcnt(wed, rxcnt);
++				wed->wlan.update_wo_rxcnt(wed, &rxcnt[i]);
 +		break;
 +	default:
 +		break;
@@ -2057,22 +2057,22 @@
 +	cmd = input[0];
 +	if (input_total == 1 && cmd) {
 +		if (strncmp(cmd, "bainfo", strlen(cmd)) == 0) {
-+			cmd_id = WO_CMD_BA_INFO_DUMP;
++			cmd_id = WED_WO_BA_INFO_DUMP;
 +		} else if (strncmp(cmd, "bactrl", strlen(cmd)) == 0) {
-+			cmd_id = WO_CMD_BA_CTRL_DUMP;
++			cmd_id = WED_WO_BA_CTRL_DUMP;
 +		} else if (strncmp(cmd, "fbcmdq", strlen(cmd)) == 0) {
-+			cmd_id = WO_CMD_FBCMD_Q_DUMP;
++			cmd_id = WED_WO_FBCMD_Q_DUMP;
 +		} else if (strncmp(cmd, "logflush", strlen(cmd)) == 0) {
-+			cmd_id = WO_CMD_LOG_FLUSH;
++			cmd_id = WED_WO_LOG_FLUSH;
 +		} else if (strncmp(cmd, "cpustat.dump", strlen(cmd)) == 0) {
-+			cmd_id = WO_CMD_CPU_STATS_DUMP;
++			cmd_id = WED_WO_CPU_STATS_DUMP;
 +		} else if (strncmp(cmd, "state", strlen(cmd)) == 0) {
-+			cmd_id = WO_CMD_WED_RX_STAT;
++			cmd_id = WED_WO_RX_STAT;
 +		} else if (strncmp(cmd, "prof_hit_dump", strlen(cmd)) == 0) {
 +			//wo_profiling_report();
 +			return count;
 +		} else if (strncmp(cmd, "rxcnt_info", strlen(cmd)) == 0) {
-+			cmd_id = WO_CMD_RXCNT_INFO;
++			cmd_id = WED_WO_RXCNT_INFO;
 +			wait = true;
 +		} else {
 +			pr_info("(%s) unknown comand string(%s)!\n", __func__, cmd);
@@ -2088,23 +2088,23 @@
 +			}
 +		}
 +		if(strncmp(cmd, "devinfo", strlen(cmd)) == 0) {
-+			cmd_id = WO_CMD_DEV_INFO_DUMP;
++			cmd_id = WED_WO_DEV_INFO_DUMP;
 +		} else if (strncmp(cmd, "bssinfo", strlen(cmd)) == 0) {
-+			cmd_id = WO_CMD_BSS_INFO_DUMP;
++			cmd_id = WED_WO_BSS_INFO_DUMP;
 +		} else if (strncmp(cmd, "starec", strlen(cmd)) == 0) {
-+			cmd_id = WO_CMD_STA_REC_DUMP;
++			cmd_id = WED_WO_STA_REC_DUMP;
 +		} else if (strncmp(cmd, "starec_ba", strlen(cmd)) == 0) {
-+			cmd_id = WO_CMD_STA_BA_DUMP;
++			cmd_id = WED_WO_STA_BA_DUMP;
 +		} else if (strncmp(cmd, "logctrl", strlen(cmd)) == 0) {
-+			cmd_id = WO_CMD_FW_LOG_CTRL;
++			cmd_id = WED_WO_FW_LOG_CTRL;
 +		} else if (strncmp(cmd, "cpustat.en", strlen(cmd)) == 0) {
-+			cmd_id = WO_CMD_CPU_STATS_ENABLE;
++			cmd_id = WED_WO_CPU_STATS_ENABLE;
 +		} else if (strncmp(cmd, "prof_conf", strlen(cmd)) == 0) {
-+			cmd_id = WO_CMD_PROF_CTRL;
++			cmd_id = WED_WO_PROF_CTRL;
 +		} else if (strncmp(cmd, "rxcnt_ctrl", strlen(cmd)) == 0) {
-+			cmd_id = WO_CMD_RXCNT_CTRL;
++			cmd_id = WED_WO_RXCNT_CTRL;
 +		} else if (strncmp(cmd, "dbg_set", strlen(cmd)) == 0) {
-+			cmd_id = WO_CMD_DBG_INFO;
++			cmd_id = WED_WO_DBG_INFO;
 +		}
 +	} else {
 +		dev_info(hw->dev, "usage: echo cmd='cmd_str' > wo_write\n");
@@ -2153,7 +2153,7 @@
 index 0000000..6a5ac76
 --- /dev/null
 +++ b/drivers/net/ethernet/mediatek/mtk_wed_mcu.h
-@@ -0,0 +1,125 @@
+@@ -0,0 +1,96 @@
 +// SPDX-License-Identifier: GPL-2.0-only
 +
 +#ifndef __MTK_WED_MCU_H
@@ -2209,35 +2209,6 @@
 +	WO_EVT_RXCNT_INFO = 0x3
 +};
 +
-+enum wo_cmd_id {
-+	WO_CMD_WED_CFG = 0,
-+	WO_CMD_WED_RX_STAT,
-+	WO_CMD_RRO_SER,
-+	WO_CMD_DBG_INFO,
-+	WO_CMD_DEV_INFO,
-+	WO_CMD_BSS_INFO,
-+	WO_CMD_STA_REC,
-+	WO_CMD_DEV_INFO_DUMP,
-+	WO_CMD_BSS_INFO_DUMP,
-+	WO_CMD_STA_REC_DUMP,
-+	WO_CMD_BA_INFO_DUMP,
-+	WO_CMD_FBCMD_Q_DUMP,
-+	WO_CMD_FW_LOG_CTRL,
-+	WO_CMD_LOG_FLUSH,
-+	WO_CMD_CHANGE_STATE,
-+	WO_CMD_CPU_STATS_ENABLE,
-+	WO_CMD_CPU_STATS_DUMP,
-+	WO_CMD_EXCEPTION_INIT,
-+	WO_CMD_PROF_CTRL,
-+	WO_CMD_STA_BA_DUMP,
-+	WO_CMD_BA_CTRL_DUMP,
-+	WO_CMD_RXCNT_CTRL,
-+	WO_CMD_RXCNT_INFO,
-+	WO_CMD_SET_CAP,
-+	WO_CMD_CCIF_RING_DUMP,
-+	WO_CMD_WED_END
-+};
-+
 +enum wo_state {
 +	WO_STATE_UNDEFINED 	= 0x0,
 +	WO_STATE_INIT 		= 0x1,
@@ -3438,17 +3409,44 @@
 index e914cb4..cfa1120 100644
 --- a/include/linux/soc/mediatek/mtk_wed.h
 +++ b/include/linux/soc/mediatek/mtk_wed.h
-@@ -7,6 +7,9 @@
+@@ -7,6 +7,36 @@
  #include <linux/pci.h>
  
  #define MTK_WED_TX_QUEUES		2
 +#define MTK_WED_RX_QUEUES		2
 +
-+#define WED_WO_STA_REC			0x6
++enum wo_cmd_id {
++	WED_WO_CFG = 0,
++	WED_WO_RX_STAT,
++	WED_WO_RRO_SER,
++	WED_WO_DBG_INFO,
++	WED_WO_DEV_INFO,
++	WED_WO_BSS_INFO,
++	WED_WO_STA_REC,
++	WED_WO_DEV_INFO_DUMP,
++	WED_WO_BSS_INFO_DUMP,
++	WED_WO_STA_REC_DUMP,
++	WED_WO_BA_INFO_DUMP,
++	WED_WO_FBCMD_Q_DUMP,
++	WED_WO_FW_LOG_CTRL,
++	WED_WO_LOG_FLUSH,
++	WED_WO_CHANGE_STATE,
++	WED_WO_CPU_STATS_ENABLE,
++	WED_WO_CPU_STATS_DUMP,
++	WED_WO_EXCEPTION_INIT,
++	WED_WO_PROF_CTRL,
++	WED_WO_STA_BA_DUMP,
++	WED_WO_BA_CTRL_DUMP,
++	WED_WO_RXCNT_CTRL,
++	WED_WO_RXCNT_INFO,
++	WED_WO_SET_CAP,
++	WED_WO_CCIF_RING_DUMP,
++	WED_WO_WED_END
++};
  
  enum {
  	MTK_NO_WED,
-@@ -33,6 +36,33 @@ struct mtk_wed_ring {
+@@ -33,6 +63,33 @@ struct mtk_wed_ring {
  	void __iomem *wpdma;
  };
  
@@ -3482,7 +3480,7 @@
  struct mtk_wed_device {
  #ifdef CONFIG_NET_MEDIATEK_SOC_WED
  	const struct mtk_wed_ops *ops;
-@@ -47,37 +77,56 @@ struct mtk_wed_device {
+@@ -47,37 +104,56 @@ struct mtk_wed_device {
  	struct mtk_wed_ring tx_ring[MTK_WED_TX_QUEUES];
  	struct mtk_wed_ring txfree_ring;
  	struct mtk_wed_ring tx_wdma[MTK_WED_TX_QUEUES];
@@ -3544,7 +3542,7 @@
  	} wlan;
  #endif
  };
-@@ -88,6 +137,10 @@ struct mtk_wed_ops {
+@@ -88,6 +164,10 @@ struct mtk_wed_ops {
  			     void __iomem *regs);
  	int (*txfree_ring_setup)(struct mtk_wed_device *dev,
  				 void __iomem *regs);
@@ -3555,7 +3553,7 @@
  	void (*detach)(struct mtk_wed_device *dev);
  
  	void (*stop)(struct mtk_wed_device *dev);
-@@ -99,6 +152,8 @@ struct mtk_wed_ops {
+@@ -99,6 +179,8 @@ struct mtk_wed_ops {
  
  	u32 (*irq_get)(struct mtk_wed_device *dev, u32 mask);
  	void (*irq_set_mask)(struct mtk_wed_device *dev, u32 mask);
@@ -3564,7 +3562,7 @@
  };
  
  extern const struct mtk_wed_ops __rcu *mtk_soc_wed_ops;
-@@ -131,6 +186,10 @@ mtk_wed_device_attach(struct mtk_wed_device *dev)
+@@ -131,6 +213,10 @@ mtk_wed_device_attach(struct mtk_wed_device *dev)
  	(_dev)->ops->tx_ring_setup(_dev, _ring, _regs)
  #define mtk_wed_device_txfree_ring_setup(_dev, _regs) \
  	(_dev)->ops->txfree_ring_setup(_dev, _regs)
@@ -3575,7 +3573,7 @@
  #define mtk_wed_device_reg_read(_dev, _reg) \
  	(_dev)->ops->reg_read(_dev, _reg)
  #define mtk_wed_device_reg_write(_dev, _reg, _val) \
-@@ -139,6 +198,8 @@ mtk_wed_device_attach(struct mtk_wed_device *dev)
+@@ -139,6 +225,8 @@ mtk_wed_device_attach(struct mtk_wed_device *dev)
  	(_dev)->ops->irq_get(_dev, _mask)
  #define mtk_wed_device_irq_set_mask(_dev, _mask) \
  	(_dev)->ops->irq_set_mask(_dev, _mask)
@@ -3584,7 +3582,7 @@
  #else
  static inline bool mtk_wed_device_active(struct mtk_wed_device *dev)
  {
-@@ -148,10 +209,13 @@ static inline bool mtk_wed_device_active(struct mtk_wed_device *dev)
+@@ -148,10 +236,13 @@ static inline bool mtk_wed_device_active(struct mtk_wed_device *dev)
  #define mtk_wed_device_start(_dev, _mask) do {} while (0)
  #define mtk_wed_device_tx_ring_setup(_dev, _ring, _regs) -ENODEV
  #define mtk_wed_device_txfree_ring_setup(_dev, _ring, _regs) -ENODEV
diff --git a/autobuild_mac80211_release/target/linux/mediatek/patches-5.4/9999-add-wed-ser-support.patch b/autobuild_mac80211_release/target/linux/mediatek/patches-5.4/9999-add-wed-ser-support.patch
index 32daccb..94956b3 100755
--- a/autobuild_mac80211_release/target/linux/mediatek/patches-5.4/9999-add-wed-ser-support.patch
+++ b/autobuild_mac80211_release/target/linux/mediatek/patches-5.4/9999-add-wed-ser-support.patch
@@ -269,7 +269,7 @@
 +	bool busy = false;
 +	int i;
 +
-+	mtk_wed_mcu_send_msg(wo, MODULE_ID_WO, WO_CMD_CHANGE_STATE,
++	mtk_wed_mcu_send_msg(wo, MODULE_ID_WO, WED_WO_CHANGE_STATE,
 +			     &state, sizeof(state), true);
 +
 +	wed_clr(dev, MTK_WED_WPDMA_RX_D_GLO_CFG, MTK_WED_WPDMA_RX_D_RX_DRV_EN);
@@ -346,7 +346,7 @@
 +
 +	/* wo change to enable state */
 +	state = WO_STATE_ENABLE;
-+	mtk_wed_mcu_send_msg(wo, MODULE_ID_WO, WO_CMD_CHANGE_STATE,
++	mtk_wed_mcu_send_msg(wo, MODULE_ID_WO, WED_WO_CHANGE_STATE,
 +			     &state, sizeof(state), true);
 +
 +	/* wed_rx_ring_reset */
