diff options
| author | Bjoern A. Zeeb <bz@FreeBSD.org> | 2026-03-08 00:57:33 +0000 |
|---|---|---|
| committer | Bjoern A. Zeeb <bz@FreeBSD.org> | 2026-03-08 13:50:02 +0000 |
| commit | 6cfd2b93e68061c7831016b91c2e308d01658764 (patch) | |
| tree | d4eacff1a7afae7274617316ab50c5b408fd4d31 | |
| parent | 53c69fd933dc49f69d5603fb27ce51064ebe681e (diff) | |
net80211: fix VHT160/80P80/80 chanwidth selection in the "40-" case
Depending on the base channel ni_vht_chan2 - ni_vht_chan1 can be
negative. Apply abs() as indicated in the comments right above
| CCFS1 - CCFS0 | = 8 or > 16
in order to fix the channel width selection.
Sponsored by: The FreeBSD Foundation
PR: 293645
Fixes: 4bf049bfeefd9
MFC after: 3 days
Reviewed by: adrian
Differential Revision: https://reviews.freebsd.org/D55717
| -rw-r--r-- | sys/net80211/ieee80211_ht.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/sys/net80211/ieee80211_ht.c b/sys/net80211/ieee80211_ht.c index 38568674a792..9b2b0df33785 100644 --- a/sys/net80211/ieee80211_ht.c +++ b/sys/net80211/ieee80211_ht.c @@ -34,6 +34,7 @@ #include <sys/param.h> #include <sys/kernel.h> +#include <sys/libkern.h> #include <sys/malloc.h> #include <sys/systm.h> #include <sys/endian.h> @@ -2038,11 +2039,11 @@ do { \ } /* CCFS1 > 0 and | CCFS1 - CCFS0 | = 8 */ - if (ni->ni_vht_chan2 > 0 && (ni->ni_vht_chan2 - ni->ni_vht_chan1) == 8) + if (ni->ni_vht_chan2 > 0 && abs(ni->ni_vht_chan2 - ni->ni_vht_chan1) == 8) can_vht160 = can_vht80 = true; /* CCFS1 > 0 and | CCFS1 - CCFS0 | > 16 */ - if (ni->ni_vht_chan2 > 0 && (ni->ni_vht_chan2 - ni->ni_vht_chan1) > 16) + if (ni->ni_vht_chan2 > 0 && abs(ni->ni_vht_chan2 - ni->ni_vht_chan1) > 16) can_vht80p80 = can_vht80 = true; /* CFFS1 == 0 */ |
