From 546934dacfd4e5e72b0c24fc12608c3b24ccee6f Mon Sep 17 00:00:00 2001 From: Deren Wu Date: Tue, 14 Feb 2023 10:49:57 +0800 Subject: [PATCH] wifi: mt76: mt7921: fix PCI DMA hang after reboot mt7921 just stop some workers and clean up chip status before reboot. In stress test, there are working activities still running at the period of .shutdown callback and that would cause some hosts cannot recover DMA after reboot. To avoid the floating state in reboot, we use mt7921_pci_remove() to fully deinit all resources. Fixes: f23a0cea8bd6 ("wifi: mt76: mt7921e: add pci .shutdown() support") Signed-off-by: Deren Wu Reviewed-by: AngeloGioacchino Del Regno Signed-off-by: Felix Fietkau --- mt7921/pci.c | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/mt7921/pci.c b/mt7921/pci.c index 71e81096..d4b69221 100644 --- a/mt7921/pci.c +++ b/mt7921/pci.c @@ -512,17 +512,7 @@ failed: static void mt7921_pci_shutdown(struct pci_dev *pdev) { - struct mt76_dev *mdev = pci_get_drvdata(pdev); - struct mt7921_dev *dev = container_of(mdev, struct mt7921_dev, mt76); - struct mt76_connac_pm *pm = &dev->pm; - - cancel_delayed_work_sync(&pm->ps_work); - cancel_work_sync(&pm->wake_work); - - /* chip cleanup before reboot */ - mt7921_mcu_drv_pmctrl(dev); - mt7921_dma_cleanup(dev); - mt7921_wfsys_reset(dev); + mt7921_pci_remove(pdev); } static DEFINE_SIMPLE_DEV_PM_OPS(mt7921_pm_ops, mt7921_pci_suspend, mt7921_pci_resume);