git: e36fd5d2b60f - stable/14 - LinuxKPI: 802.11: try to limit VHT (11ac) to 5Ghz
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Fri, 18 Apr 2025 14:37:15 UTC
The branch stable/14 has been updated by bz:
URL: https://cgit.FreeBSD.org/src/commit/?id=e36fd5d2b60ff816e3f56253460de5c370e1d5c4
commit e36fd5d2b60ff816e3f56253460de5c370e1d5c4
Author: Bjoern A. Zeeb <bz@FreeBSD.org>
AuthorDate: 2025-04-09 19:22:25 +0000
Commit: Bjoern A. Zeeb <bz@FreeBSD.org>
CommitDate: 2025-04-18 14:36:01 +0000
LinuxKPI: 802.11: try to limit VHT (11ac) to 5Ghz
We have multiple reports for iwlwifi firmware crashes where net80211
logged:
ieee80211_sta_join: BSS xx:xx:xx:xx:xx:xx: 2GHz channel, VHT info; ignoring
Make sure when we sync from net80211 or set state that we only do
VHT if we are on the 5Ghz band. This change is likely helpful
whether it fixes the originally reported problems or not.
Sponsored by: The FreeBSD Foundation
Reported by: Jonathan Vasquez (jon xyinn.org)
Reported by: Michael Butler (imb protected-networks.net)
Reported by: others (fw crash w/o net80211 logging)
Tested by: Eirik Øverby (ltning-freebsd-wireless anduin.net)
Tested by: lwhsu
Tested by: Michael Butler (imb protected-networks.net)
Differential Revision: https://reviews.freebsd.org/D49761
(cherry picked from commit 5393cd34854e1fe23ab214e9f741879fa6bf1193)
---
sys/compat/linuxkpi/common/src/linux_80211.c | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/sys/compat/linuxkpi/common/src/linux_80211.c b/sys/compat/linuxkpi/common/src/linux_80211.c
index edd3b91dcecf..1eff90a1d93e 100644
--- a/sys/compat/linuxkpi/common/src/linux_80211.c
+++ b/sys/compat/linuxkpi/common/src/linux_80211.c
@@ -442,7 +442,8 @@ lkpi_sta_sync_vht_from_ni(struct ieee80211_sta *sta, struct ieee80211_node *ni)
uint16_t rx_mcs_map;
uint8_t mcs;
- if ((ni->ni_flags & IEEE80211_NODE_VHT) == 0) {
+ if ((ni->ni_flags & IEEE80211_NODE_VHT) == 0 ||
+ !IEEE80211_IS_CHAN_VHT_5GHZ(ni->ni_chan)) {
sta->deflink.vht_cap.vht_supported = false;
return;
}
@@ -1874,7 +1875,7 @@ lkpi_sta_scan_to_auth(struct ieee80211vap *vap, enum ieee80211_state nstate, int
}
#endif
#ifdef LKPI_80211_VHT
- if (IEEE80211_IS_CHAN_VHT(ni->ni_chan)) {
+ if (IEEE80211_IS_CHAN_VHT_5GHZ(ni->ni_chan)) {
#ifdef __notyet__
if (IEEE80211_IS_CHAN_VHT80P80(ni->ni_chan))
chanctx_conf->def.width = NL80211_CHAN_WIDTH_80P80;
@@ -3864,7 +3865,8 @@ lkpi_scan_ies_add(uint8_t *p, struct ieee80211_scan_ies *scan_ies,
}
#endif
#if defined(LKPI_80211_VHT)
- if ((vap->iv_vht_flags & IEEE80211_FVHT_VHT) != 0) {
+ if (band == NL80211_BAND_5GHZ &&
+ (vap->iv_vht_flags & IEEE80211_FVHT_VHT) != 0) {
struct ieee80211_channel *c;
c = ieee80211_ht_adjust_channel(ic, ic->ic_curchan,
@@ -5366,7 +5368,7 @@ lkpi_ic_getradiocaps(struct ieee80211com *ic, int maxchan,
NL80211_BAND_5GHZ);
#ifdef LKPI_80211_VHT
- if (hw->wiphy->bands[NL80211_BAND_5GHZ]->vht_cap.vht_supported){
+ if (hw->wiphy->bands[NL80211_BAND_5GHZ]->vht_cap.vht_supported) {
ic->ic_flags_ext |= IEEE80211_FEXT_VHT;
ic->ic_vht_cap.vht_cap_info =