mirror of
https://github.com/outbackdingo/mt76.git
synced 2026-10-24 05:16:57 +00:00
wifi: mt76: mt7921: check drv_pmctrl return in the PCIe reset path
mt7921e_mac_reset() ignores the return value of mt792xe_mcu_drv_pmctrl(). When the driver-own handshake fails, __mt792xe_mcu_drv_pmctrl() returns -EIO without reinitialising WPDMA or clearing MT76_STATE_PM, and the reset carries on: it writes the interrupt enable registers, cycles NAPI, resets WPDMA and downloads firmware to a chip the driver does not own. Return the error instead. The call is the first statement in the function, before any teardown, so nothing needs unwinding. Reported-by: moosager <[email protected]> Link: https://lore.kernel.org/linux-wireless/[email protected]/ Fixes: dfc7743de1eb ("mt76: mt7921: refactor mcu.c to be bus independent") Signed-off-by: Devin Wittmayer <[email protected]> Tested-by: moosager <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: Felix Fietkau <[email protected]>
This commit is contained in:
committed by
Felix Fietkau
parent
699df2cec2
commit
8e856ad93d
+3
-1
@@ -57,7 +57,9 @@ int mt7921e_mac_reset(struct mt792x_dev *dev)
|
||||
{
|
||||
int i, err;
|
||||
|
||||
mt792xe_mcu_drv_pmctrl(dev);
|
||||
err = mt792xe_mcu_drv_pmctrl(dev);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
mt76_connac_free_pending_tx_skbs(&dev->pm, NULL);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user