| From cfde773b13a759b669f93140abec1ef518a44dfe Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Tue, 18 Nov 2025 19:54:54 +0800 |
| Subject: wifi: mt76: mt792x: fix wifi init fail by setting MCU_RUNNING after |
| CLC load |
| |
| From: Quan Zhou <quan.zhou@mediatek.com> |
| |
| [ Upstream commit 066f417be5fd8c7fe581c5550206364735dad7a3 ] |
| |
| Set the MT76_STATE_MCU_RUNNING bit only after mt7921_load_clc() |
| has successfully completed. Previously, the MCU_RUNNING state |
| was set before loading CLC, which could cause conflict between |
| chip mcu_init retry and mac_reset flow, result in chip init fail |
| and chip abnormal status. By moving the state set after CLC load, |
| firmware initialization becomes robust and resolves init fail issue. |
| |
| Signed-off-by: Quan Zhou <quan.zhou@mediatek.com> |
| Reviewed-by: druth@chromium.org |
| Link: https://patch.msgid.link/19ec8e4465142e774f17801025accd0ae2214092.1763465933.git.quan.zhou@mediatek.com |
| Signed-off-by: Felix Fietkau <nbd@nbd.name> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/net/wireless/mediatek/mt76/mt7921/mcu.c | 2 +- |
| drivers/net/wireless/mediatek/mt76/mt7925/mcu.c | 2 +- |
| 2 files changed, 2 insertions(+), 2 deletions(-) |
| |
| diff --git a/drivers/net/wireless/mediatek/mt76/mt7921/mcu.c b/drivers/net/wireless/mediatek/mt76/mt7921/mcu.c |
| index 02c1de8620a7f..8d3f3c8b1a889 100644 |
| --- a/drivers/net/wireless/mediatek/mt76/mt7921/mcu.c |
| +++ b/drivers/net/wireless/mediatek/mt76/mt7921/mcu.c |
| @@ -637,10 +637,10 @@ int mt7921_run_firmware(struct mt792x_dev *dev) |
| if (err) |
| return err; |
| |
| - set_bit(MT76_STATE_MCU_RUNNING, &dev->mphy.state); |
| err = mt7921_load_clc(dev, mt792x_ram_name(dev)); |
| if (err) |
| return err; |
| + set_bit(MT76_STATE_MCU_RUNNING, &dev->mphy.state); |
| |
| return mt7921_mcu_fw_log_2_host(dev, 1); |
| } |
| diff --git a/drivers/net/wireless/mediatek/mt76/mt7925/mcu.c b/drivers/net/wireless/mediatek/mt76/mt7925/mcu.c |
| index e42b4f0abbe7a..c42b3b376f77e 100644 |
| --- a/drivers/net/wireless/mediatek/mt76/mt7925/mcu.c |
| +++ b/drivers/net/wireless/mediatek/mt76/mt7925/mcu.c |
| @@ -958,10 +958,10 @@ int mt7925_run_firmware(struct mt792x_dev *dev) |
| if (err) |
| return err; |
| |
| - set_bit(MT76_STATE_MCU_RUNNING, &dev->mphy.state); |
| err = mt7925_load_clc(dev, mt792x_ram_name(dev)); |
| if (err) |
| return err; |
| + set_bit(MT76_STATE_MCU_RUNNING, &dev->mphy.state); |
| |
| return mt7925_mcu_fw_log_2_host(dev, 1); |
| } |
| -- |
| 2.51.0 |
| |