blob: 25ebb8d28fa8f7f008a44785422d7db50bbc2907 [file] [log] [blame]
From 5c98aa22412e70461ebc2e0cf0db53beb8653a20 Mon Sep 17 00:00:00 2001
From: Henry Yen <henry.yen@mediatek.com>
Date: Thu, 22 Feb 2024 11:24:46 +0800
Subject: [PATCH 14/15] wifi: mt76: mt7915: fix unusual Tx/Rx airtime duration
values
Fix unusual Tx/Rx airtime duration values when running
"iw dev <devname> station dump".
Signed-off-by: Henry.Yen <henry.yen@mediatek.com>
---
mt7915/mac.c | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/mt7915/mac.c b/mt7915/mac.c
index e819815a..faa5ed36 100644
--- a/mt7915/mac.c
+++ b/mt7915/mac.c
@@ -140,8 +140,15 @@ static void mt7915_mac_sta_poll(struct mt7915_dev *dev)
msta->airtime_ac[i] = mt76_rr(dev, addr);
msta->airtime_ac[i + 4] = mt76_rr(dev, addr + 4);
- tx_time[i] = msta->airtime_ac[i] - tx_last;
- rx_time[i] = msta->airtime_ac[i + 4] - rx_last;
+ if (msta->airtime_ac[i] <= tx_last)
+ tx_time[i] = 0;
+ else
+ tx_time[i] = msta->airtime_ac[i] - tx_last;
+
+ if (msta->airtime_ac[i + 4] <= rx_last)
+ rx_time[i] = 0;
+ else
+ rx_time[i] = msta->airtime_ac[i + 4] - rx_last;
if ((tx_last | rx_last) & BIT(30))
clear = true;
--
2.18.0