]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
wifi: mt76: sdio: poll sta stat when device transmits data
authorSean Wang <sean.wang@mediatek.com>
Thu, 21 Jul 2022 22:39:36 +0000 (06:39 +0800)
committerFelix Fietkau <nbd@nbd.name>
Thu, 15 Sep 2022 10:53:58 +0000 (12:53 +0200)
It is not meaningful to poll sta stat when there is no data traffic.
So polling sta stat when the device has transmitted data instead to save
CPU power.

That implies that it is unallowed the stat_work to work while MCU is being
initialized in the really early stage to fix the possible time to time MCU
initialization failure.

Fixes: d39b52e31aa6 ("mt76: introduce mt76_sdio module")
Signed-off-by: Sean Wang <sean.wang@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
drivers/net/wireless/mediatek/mt76/sdio.c

index fb2caeae6dbabcb67981d6d7858fbb60428ff2a0..ece4e4bb94a11ea23952e899e68c629a5ce104d7 100644 (file)
@@ -478,7 +478,7 @@ static void mt76s_status_worker(struct mt76_worker *w)
                if (ndata_frames > 0)
                        resched = true;
 
-               if (dev->drv->tx_status_data &&
+               if (dev->drv->tx_status_data && ndata_frames > 0 &&
                    !test_and_set_bit(MT76_READING_STATS, &dev->phy.state) &&
                    !test_bit(MT76_STATE_SUSPEND, &dev->phy.state))
                        ieee80211_queue_work(dev->hw, &dev->sdio.stat_work);