Blob Blame History Raw
From a323e5f041dd11af5e3de19ed7ea95a97d588c11 Mon Sep 17 00:00:00 2001
From: Sean Wang <sean.wang@mediatek.com>
Date: Fri, 22 Jul 2022 06:39:36 +0800
Subject: [PATCH] wifi: mt76: sdio: poll sta stat when device transmits data
Git-commit: a323e5f041dd11af5e3de19ed7ea95a97d588c11
References: git-fixes
Patch-mainline: v6.1-rc1

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>
Signed-off-by: Oliver Neukum <oneukum@suse.com>
---
 drivers/net/wireless/mediatek/mt76/sdio.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- a/drivers/net/wireless/mediatek/mt76/sdio.c
+++ b/drivers/net/wireless/mediatek/mt76/sdio.c
@@ -207,7 +207,7 @@ static void mt76s_status_worker(struct m
 		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))
 			ieee80211_queue_work(dev->hw, &dev->sdio.stat_work);
 	} while (nframes > 0);