mirror of
https://github.com/outbackdingo/mt76.git
synced 2026-10-24 13:26:48 +00:00
wifi: mt76: mt7925: check drv_pmctrl return in the PCIe reset path
mt7925e_mac_reset() ignores the return value of
mt792xe_mcu_drv_pmctrl(), unlike the two pmctrl calls later in the same
function. 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 calls
mt7925_run_firmware() on a chip the driver does not own.
Return the error instead. The call is the first statement in the
function, before MT76_RESET is set and before the TX worker and NAPI
are disabled, so nothing needs unwinding.
Fixes: c948b5da6bbe ("wifi: mt76: mt7925: add Mediatek Wi-Fi7 driver for mt7925 chips")
Signed-off-by: Devin Wittmayer <[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
8e856ad93d
commit
4f2aa9910e
+3
-1
@@ -73,7 +73,9 @@ int mt7925e_mac_reset(struct mt792x_dev *dev)
|
|||||||
const struct mt792x_irq_map *irq_map = dev->irq_map;
|
const struct mt792x_irq_map *irq_map = dev->irq_map;
|
||||||
int i, err;
|
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);
|
mt76_connac_free_pending_tx_skbs(&dev->pm, NULL);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user