summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorstsp <stsp@openbsd.org>2016-12-08 17:25:28 +0000
committerstsp <stsp@openbsd.org>2016-12-08 17:25:28 +0000
commit0502b803cafc01b4a154868d91c70abb7efa8d6b (patch)
treece2a4407c7e78f3da1c32c0f0e3e8a9e461ce799
parentiwm(4) was stripping some bits from the MCS index value before passing (diff)
downloadwireguard-openbsd-0502b803cafc01b4a154868d91c70abb7efa8d6b.tar.xz
wireguard-openbsd-0502b803cafc01b4a154868d91c70abb7efa8d6b.zip
Fix mira's next intra-rate calculations for MCS >= 8.
ok tb@ phessler@
-rw-r--r--sys/net80211/ieee80211_mira.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/sys/net80211/ieee80211_mira.c b/sys/net80211/ieee80211_mira.c
index 45e8944ab50..0568ca5b206 100644
--- a/sys/net80211/ieee80211_mira.c
+++ b/sys/net80211/ieee80211_mira.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ieee80211_mira.c,v 1.2 2016/12/06 02:41:28 jsg Exp $ */
+/* $OpenBSD: ieee80211_mira.c,v 1.3 2016/12/08 17:25:28 stsp Exp $ */
/*
* Copyright (c) 2016 Stefan Sperling <stsp@openbsd.org>
@@ -518,8 +518,8 @@ ieee80211_mira_next_lower_intra_rate(struct ieee80211_mira_node *mn,
for (i = rs->nrates - 1; i >= 0; i--) {
if ((mn->valid_rates & (1 << (i + rs->min_mcs))) == 0)
continue;
- if (i < ni->ni_txmcs) {
- next = i;
+ if (i + rs->min_mcs < ni->ni_txmcs) {
+ next = i + rs->min_mcs;
break;
}
}
@@ -542,8 +542,8 @@ ieee80211_mira_next_intra_rate(struct ieee80211_mira_node *mn,
for (i = 0; i < rs->nrates; i++) {
if ((mn->valid_rates & (1 << (i + rs->min_mcs))) == 0)
continue;
- if (i > ni->ni_txmcs) {
- next = i;
+ if (i + rs->min_mcs > ni->ni_txmcs) {
+ next = i + rs->min_mcs;
break;
}
}