git: dc32c7133921 - main - net80211: VHT correct check/option in ieee80211_vht_adjust_channel()
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Fri, 29 Jul 2022 15:15:14 UTC
The branch main has been updated by bz: URL: https://cgit.FreeBSD.org/src/commit/?id=dc32c7133921a34f3144a4b5fc4f7c1f6cddbd1f commit dc32c7133921a34f3144a4b5fc4f7c1f6cddbd1f Author: Bjoern A. Zeeb <bz@FreeBSD.org> AuthorDate: 2022-07-29 00:12:34 +0000 Commit: Bjoern A. Zeeb <bz@FreeBSD.org> CommitDate: 2022-07-29 15:10:45 +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 MFC after: 1 week Reviewed by: adrian Differential Revision: https://reviews.freebsd.org/D35977 --- 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);