git: 3463de63b3a0 - stable/13 - net80211: VHT correct check/option in ieee80211_vht_adjust_channel()
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Wed, 21 Sep 2022 14:01:06 UTC
The branch stable/13 has been updated by bz: URL: https://cgit.FreeBSD.org/src/commit/?id=3463de63b3a05edc1f6052e6a6da3889b28c17ca commit 3463de63b3a05edc1f6052e6a6da3889b28c17ca Author: Bjoern A. Zeeb <bz@FreeBSD.org> AuthorDate: 2022-07-29 00:12:34 +0000 Commit: Bjoern A. Zeeb <bz@FreeBSD.org> CommitDate: 2022-09-21 11:39:37 +0000 net80211: VHT correct check/option in ieee80211_vht_adjust_channel() In ieee80211_vht_adjust_channel() we have to check for all possible IEEE80211_FVHT_VHT* options using the mask rather than just checking for IEEE80211_FVHT_VHT; ieee80211_vhtchanflags() (contrary to its HT counterpart) only returns the "highest" flag nor or-ing them together with the base flag. For the moment this seems to make sense as with more width options we'd add a pyramid. Later on, in the same function when we get VHT160 actually go and look for VHT160 and not VHT80. Sponsored by: The FreeBSD Foundation Reviewed by: adrian Differential Revision: https://reviews.freebsd.org/D35977 (cherry picked from commit dc32c7133921a34f3144a4b5fc4f7c1f6cddbd1f) --- sys/net80211/ieee80211_vht.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/sys/net80211/ieee80211_vht.c b/sys/net80211/ieee80211_vht.c index b023c6de6e95..b4eb901f0f13 100644 --- a/sys/net80211/ieee80211_vht.c +++ b/sys/net80211/ieee80211_vht.c @@ -797,7 +797,7 @@ ieee80211_vht_adjust_channel(struct ieee80211com *ic, struct ieee80211_channel *c; /* First case - handle channel demotion - if VHT isn't set */ - if ((flags & IEEE80211_FVHT_VHT) == 0) { + if ((flags & IEEE80211_FVHT_MASK) == 0) { #if 0 printf("%s: demoting channel %d/0x%08x\n", __func__, chan->ic_ieee, chan->ic_flags); @@ -819,10 +819,9 @@ ieee80211_vht_adjust_channel(struct ieee80211com *ic, * Note: we don't clear the HT flags, these are the hints * for HT40U/HT40D when selecting VHT40 or larger channels. */ - /* Start with VHT80 */ c = NULL; if ((c == NULL) && (flags & IEEE80211_FVHT_USEVHT160)) - c = findvhtchan(ic, chan, IEEE80211_CHAN_VHT80); + c = findvhtchan(ic, chan, IEEE80211_CHAN_VHT160); if ((c == NULL) && (flags & IEEE80211_FVHT_USEVHT80P80)) c = findvhtchan(ic, chan, IEEE80211_CHAN_VHT80P80);