summaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/mediatek/mt76/sdio.c
diff options
context:
space:
mode:
authorSean Wang <sean.wang@mediatek.com>2021-11-20 00:22:11 +0100
committerFelix Fietkau <nbd@nbd.name>2021-12-19 15:24:00 +0100
commit5ad4faca7690a88b4529238c757b6b8ead8056ec (patch)
tree797716d5c4374ac5ca21547e167a70dade5c5ecb /drivers/net/wireless/mediatek/mt76/sdio.c
parentmt76: mt7921: move mt76_connac_mcu_set_hif_suspend to bus-related files (diff)
downloadlinux-5ad4faca7690a88b4529238c757b6b8ead8056ec.tar.xz
linux-5ad4faca7690a88b4529238c757b6b8ead8056ec.zip
mt76: mt7921s: fix the device cannot sleep deeply in suspend
According to the MT7921S firmware, the cmd MCU_UNI_CMD_HIF_CTRL have to be last MCU command to execute in suspend handler and all data traffic have to be stopped before the cmd MCU_UNI_CMD_HIF_CTRL starts as well in order that mt7921 can successfully fall into the deep sleep mode. Where we reuse the flag MT76_STATE_SUSPEND and avoid creating another global flag to stop all of the traffic onto the SDIO bus. Fixes: 48fab5bbef40 ("mt76: mt7921: introduce mt7921s support") Reported-by: Leon Yen <leon.yen@mediatek.com> Signed-off-by: Sean Wang <sean.wang@mediatek.com> Signed-off-by: Felix Fietkau <nbd@nbd.name>
Diffstat (limited to 'drivers/net/wireless/mediatek/mt76/sdio.c')
-rw-r--r--drivers/net/wireless/mediatek/mt76/sdio.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/net/wireless/mediatek/mt76/sdio.c b/drivers/net/wireless/mediatek/mt76/sdio.c
index c99acc21225e..b0bc7be0fb1f 100644
--- a/drivers/net/wireless/mediatek/mt76/sdio.c
+++ b/drivers/net/wireless/mediatek/mt76/sdio.c
@@ -479,7 +479,8 @@ static void mt76s_status_worker(struct mt76_worker *w)
resched = true;
if (dev->drv->tx_status_data &&
- !test_and_set_bit(MT76_READING_STATS, &dev->phy.state))
+ !test_and_set_bit(MT76_READING_STATS, &dev->phy.state) &&
+ !test_bit(MT76_STATE_SUSPEND, &dev->phy.state))
queue_work(dev->wq, &dev->sdio.stat_work);
} while (nframes > 0);