diff options
author | stsp <stsp@openbsd.org> | 2020-04-11 13:44:06 +0000 |
---|---|---|
committer | stsp <stsp@openbsd.org> | 2020-04-11 13:44:06 +0000 |
commit | 9d2cc14c898547090e2b159f1e2a29798d63dfbf (patch) | |
tree | ceeb5b933f38c0456f0e1e1d838271913bdb8713 /sys/net80211 | |
parent | Update MiRA probing interval of probed rates which are worse than the (diff) | |
download | wireguard-openbsd-9d2cc14c898547090e2b159f1e2a29798d63dfbf.tar.xz wireguard-openbsd-9d2cc14c898547090e2b159f1e2a29798d63dfbf.zip |
Skip MiRA's event-based probing if we're already at the minimum or
maximum rate of our current rateset.
ok tb@
Diffstat (limited to 'sys/net80211')
-rw-r--r-- | sys/net80211/ieee80211_mira.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/sys/net80211/ieee80211_mira.c b/sys/net80211/ieee80211_mira.c index a38280e9f3e..303957d9899 100644 --- a/sys/net80211/ieee80211_mira.c +++ b/sys/net80211/ieee80211_mira.c @@ -1,4 +1,4 @@ -/* $OpenBSD: ieee80211_mira.c,v 1.26 2020/04/11 13:43:34 stsp Exp $ */ +/* $OpenBSD: ieee80211_mira.c,v 1.27 2020/04/11 13:44:06 stsp Exp $ */ /* * Copyright (c) 2016 Stefan Sperling <stsp@openbsd.org> @@ -1141,9 +1141,8 @@ ieee80211_mira_choose(struct ieee80211_mira_node *mn, struct ieee80211com *ic, { struct ieee80211_mira_goodput_stats *g = &mn->g[ni->ni_txmcs]; int s; -#ifdef MIRA_AGGRESSIVE_DOWNWARDS_PROBING int sgi = (ni->ni_flags & IEEE80211_NODE_HT_SGI20) ? 1 : 0; -#endif + const struct ieee80211_ht_rateset *rs; s = splnet(); @@ -1187,7 +1186,9 @@ ieee80211_mira_choose(struct ieee80211_mira_node *mn, struct ieee80211com *ic, } /* Check if event-based probing should be triggered. */ - if (g->measured < g->average - 2 * g->stddeviation) { + rs = ieee80211_mira_get_rateset(ni->ni_txmcs, sgi); + if (g->measured < g->average - 2 * g->stddeviation && + ni->ni_txmcs != rs->min_mcs) { /* Channel becomes bad. Probe downwards. */ DPRINTFN(2, ("channel becomes bad; probe downwards\n")); DPRINTFN(3, ("measured: %s Mbit/s\n", @@ -1208,7 +1209,8 @@ ieee80211_mira_choose(struct ieee80211_mira_node *mn, struct ieee80211com *ic, (1 << ieee80211_mira_next_lower_intra_rate(mn, ni)); #endif ieee80211_mira_cancel_timeouts(mn); - } else if (g->measured > g->average + 2 * g->stddeviation) { + } else if (g->measured > g->average + 2 * g->stddeviation && + ni->ni_txmcs != rs->max_mcs) { /* Channel becomes good. */ DPRINTFN(2, ("channel becomes good; probe upwards\n")); DPRINTFN(3, ("measured: %s Mbit/s\n", |