diff mbox series

mac80211: Fix station dump inactive time after sta connection

Message ID 1588702126-11364-1-git-send-email-seevalam@codeaurora.org (mailing list archive)
State Changes Requested
Delegated to: Johannes Berg
Headers show
Series mac80211: Fix station dump inactive time after sta connection | expand

Commit Message

Seevalamuthu Mariappan May 5, 2020, 6:08 p.m. UTC
When USES_RSS is enabled, last_rx becomes zero in first few
minutes after sta connection in sta_get_last_rx_stats. This
leads to inactive time showing current jiffies in msecs.

Station 8c:fd:f0:02:10:dd (on wlan0)
        inactive time:  4294701656 ms
          .
          .
        connected time: 2 seconds

Fix this by avoid overwriting last_rx with percpu_stat's last_rx
if it is zero.

Signed-off-by: Seevalamuthu Mariappan <seevalam@codeaurora.org>
---
 net/mac80211/sta_info.c | 3 +++
 1 file changed, 3 insertions(+)

Comments

Johannes Berg May 25, 2020, 8:35 a.m. UTC | #1
On Tue, 2020-05-05 at 23:38 +0530, Seevalamuthu Mariappan wrote:
> When USES_RSS is enabled, last_rx becomes zero in first few
> minutes after sta connection

This is wrong - it's something like "in the first few minutes after
system boot" or something?

>  in sta_get_last_rx_stats. This
> leads to inactive time showing current jiffies in msecs.
> 
> Station 8c:fd:f0:02:10:dd (on wlan0)
>         inactive time:  4294701656 ms
>           .
>           .
>         connected time: 2 seconds
> 
> Fix this by avoid overwriting last_rx with percpu_stat's last_rx
> if it is zero.

This doesn't seem like the right fix - shouldn't we just initialize
last_rx better so the wrap won't cause any trouble?

johannes
diff mbox series

Patch

diff --git a/net/mac80211/sta_info.c b/net/mac80211/sta_info.c
index f8d5c25..df40c0a 100644
--- a/net/mac80211/sta_info.c
+++ b/net/mac80211/sta_info.c
@@ -2089,6 +2089,9 @@  u8 sta_info_tx_streams(struct sta_info *sta)
 
 		cpustats = per_cpu_ptr(sta->pcpu_rx_stats, cpu);
 
+		if (!cpustats->last_rx)
+			continue;
+
 		if (time_after(cpustats->last_rx, stats->last_rx))
 			stats = cpustats;
 	}