wifi: mt76: mt7921e: stop chip reset worker in unregister hook
authorQuan Zhou <quan.zhou@mediatek.com>
Wed, 12 Apr 2023 21:11:14 +0000 (05:11 +0800)
committerFelix Fietkau <nbd@nbd.name>
Mon, 17 Apr 2023 15:46:07 +0000 (17:46 +0200)
commit3d78c46423c6567ed25ca033e086865b1b4d5ae1
tree57ec4a71ec248abde2051f7e22b61e1cffe803bd
parent87714bf6ed1589813e473db5471e6e9857755764
wifi: mt76: mt7921e: stop chip reset worker in unregister hook

If the chip reset worker is triggered during the remove process, the chip
DMA may not be properly pushed back to the idle state. This can lead to
corruption of the DMA flow due to the chip reset. Therefore, it is
necessary to stop the chip reset before the DMA is finalized.

To avoid resetting the chip after the reset worker is cancelled, use
__mt7921_mcu_drv_pmctrl() instead of mt7921_mcu_drv_pmctrl(). It is safe to
ignore the pm mutex because the pm worker and wake worker have already been
cancelled.

Fixes: 033ae79b3830 ("mt76: mt7921: refactor init.c to be bus independent")
Co-developed-by: Sean Wang <sean.wang@mediatek.com>
Signed-off-by: Sean Wang <sean.wang@mediatek.com>
Co-developed-by: Deren Wu <deren.wu@mediatek.com>
Signed-off-by: Deren Wu <deren.wu@mediatek.com>
Co-developed-by: Wang Zhao <wang.zhao@mediatek.com>
Signed-off-by: Wang Zhao <wang.zhao@mediatek.com>
Signed-off-by: Quan Zhou <quan.zhou@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
drivers/net/wireless/mediatek/mt76/mt7921/pci.c