Message ID | 20210330230749.14097-1-greearb@candelatech.com (mailing list archive) |
---|---|
State | Accepted |
Delegated to: | Johannes Berg |
Headers | show |
Series | mac80211: fix time-is-after bug in mlme. | expand |
On 2021-03-31 01:07, greearb@candelatech.com wrote: > From: Ben Greear <greearb@candelatech.com> > > This fixes commit: mac80211: optimize station connection monitor > which came in in the 5.10 kernel. > > This incorrect timeout check caused probing to happen when it did > not need to happen. This in turn caused tx performance drop > for around 5 seconds in ath10k-ct driver. Possibly that tx drop > is due to a secondary issue, but fixing the probe to not happen > when traffic is running fixes the symptom. > > Signed-off-by: Ben Greear <greearb@candelatech.com> Acked-by: Felix Fietkau <nbd@nbd.name> - Felix
diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c index c137a8b5d8e1..b06c76116d86 100644 --- a/net/mac80211/mlme.c +++ b/net/mac80211/mlme.c @@ -4729,7 +4729,10 @@ static void ieee80211_sta_conn_mon_timer(struct timer_list *t) timeout = sta->rx_stats.last_rx; timeout += IEEE80211_CONNECTION_IDLE_TIME; - if (time_is_before_jiffies(timeout)) { + /* If timeout is after now, then update timer to fire at + * the later date, but do not actually probe at this time. + */ + if (time_is_after_jiffies(timeout)) { mod_timer(&ifmgd->conn_mon_timer, round_jiffies_up(timeout)); return; }