| From 621094035e8e53132d74f6549bf89a47dd89e96c Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Thu, 25 Mar 2021 16:06:02 +0800 |
| Subject: mt76: mt7615: cleanup mcu tx queue in mt7615_dma_reset() |
| |
| From: Ryder Lee <ryder.lee@mediatek.com> |
| |
| [ Upstream commit 69e74d7f23d515fb559b2e0bebfdf4c458d9507d ] |
| |
| With this patch, mt7615_mac_reset_work() can recover system back. |
| |
| Fixes: e637763b606b ("mt76: move mcu queues to mt76_dev q_mcu array") |
| Signed-off-by: Ryder Lee <ryder.lee@mediatek.com> |
| Signed-off-by: Felix Fietkau <nbd@nbd.name> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/net/wireless/mediatek/mt76/mt7615/mac.c | 8 +++++--- |
| 1 file changed, 5 insertions(+), 3 deletions(-) |
| |
| diff --git a/drivers/net/wireless/mediatek/mt76/mt7615/mac.c b/drivers/net/wireless/mediatek/mt76/mt7615/mac.c |
| index 052d96f6fd66..2cb24c26a074 100644 |
| --- a/drivers/net/wireless/mediatek/mt76/mt7615/mac.c |
| +++ b/drivers/net/wireless/mediatek/mt76/mt7615/mac.c |
| @@ -2032,15 +2032,17 @@ void mt7615_dma_reset(struct mt7615_dev *dev) |
| mt76_clear(dev, MT_WPDMA_GLO_CFG, |
| MT_WPDMA_GLO_CFG_RX_DMA_EN | MT_WPDMA_GLO_CFG_TX_DMA_EN | |
| MT_WPDMA_GLO_CFG_TX_WRITEBACK_DONE); |
| + |
| usleep_range(1000, 2000); |
| |
| - mt76_queue_tx_cleanup(dev, dev->mt76.q_mcu[MT_MCUQ_WM], true); |
| for (i = 0; i < __MT_TXQ_MAX; i++) |
| mt76_queue_tx_cleanup(dev, dev->mphy.q_tx[i], true); |
| |
| - mt76_for_each_q_rx(&dev->mt76, i) { |
| + for (i = 0; i < __MT_MCUQ_MAX; i++) |
| + mt76_queue_tx_cleanup(dev, dev->mt76.q_mcu[i], true); |
| + |
| + mt76_for_each_q_rx(&dev->mt76, i) |
| mt76_queue_rx_reset(dev, i); |
| - } |
| |
| mt76_set(dev, MT_WPDMA_GLO_CFG, |
| MT_WPDMA_GLO_CFG_RX_DMA_EN | MT_WPDMA_GLO_CFG_TX_DMA_EN | |
| -- |
| 2.30.2 |
| |