summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorstsp <stsp@openbsd.org>2020-03-05 11:49:26 +0000
committerstsp <stsp@openbsd.org>2020-03-05 11:49:26 +0000
commitc43fed7076be788ab74af3df1b4307d98631d3a4 (patch)
tree5de77f208333c48fb5e74d6277f1159ae2d801e8 /sys
parentfix build without MIRA_AGGRESSIVE_DOWNWARDS_PROBING (diff)
downloadwireguard-openbsd-c43fed7076be788ab74af3df1b4307d98631d3a4.tar.xz
wireguard-openbsd-c43fed7076be788ab74af3df1b4307d98631d3a4.zip
Cancel MiRA probing timeouts if a channel quality change triggers probing.
Avoids unnecessary re-probing in case a timeout had been scheduled already. tweak + ok tb@
Diffstat (limited to 'sys')
-rw-r--r--sys/net80211/ieee80211_mira.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/sys/net80211/ieee80211_mira.c b/sys/net80211/ieee80211_mira.c
index e69b02d42b2..34bee05d88a 100644
--- a/sys/net80211/ieee80211_mira.c
+++ b/sys/net80211/ieee80211_mira.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ieee80211_mira.c,v 1.20 2020/03/05 10:13:52 stsp Exp $ */
+/* $OpenBSD: ieee80211_mira.c,v 1.21 2020/03/05 11:49:26 stsp Exp $ */
/*
* Copyright (c) 2016 Stefan Sperling <stsp@openbsd.org>
@@ -1212,6 +1212,7 @@ ieee80211_mira_choose(struct ieee80211_mira_node *mn, struct ieee80211com *ic,
mn->candidate_rates =
(1 << ieee80211_mira_next_lower_intra_rate(mn, ni));
#endif
+ ieee80211_mira_cancel_timeouts(mn);
} else if (g->measured >= g->average + 2 * g->stddeviation) {
/* Channel becomes good. */
DPRINTFN(2, ("channel becomes good; probe upwards\n"));
@@ -1226,6 +1227,7 @@ ieee80211_mira_choose(struct ieee80211_mira_node *mn, struct ieee80211com *ic,
/* Probe the upper candidate rate to see if it's any better. */
mn->candidate_rates =
(1 << ieee80211_mira_next_intra_rate(mn, ni));
+ ieee80211_mira_cancel_timeouts(mn);
} else {
/* Remain at current rate. */
mn->probing = IEEE80211_MIRA_NOT_PROBING;