]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
wifi: mt76: mt792x: fix wifi init fail by setting MCU_RUNNING after CLC load
authorQuan Zhou <quan.zhou@mediatek.com>
Tue, 18 Nov 2025 11:54:54 +0000 (19:54 +0800)
committerFelix Fietkau <nbd@nbd.name>
Mon, 24 Nov 2025 14:01:30 +0000 (15:01 +0100)
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>
drivers/net/wireless/mediatek/mt76/mt7921/mcu.c
drivers/net/wireless/mediatek/mt76/mt7925/mcu.c

index 8c5e6bdc0fc9aea200b8930e86a11e52d5aa89c4..833d0ab6423034bc1079e3db3c4e15741d229305 100644 (file)
@@ -646,10 +646,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);
 }
index d8f5ecebf5dc29b5769e18e2be1cea47e3658fa7..cf0fdea45cf735c1e910352e0d394c0441500d4c 100644 (file)
@@ -1054,10 +1054,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);
 }