Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 18 Apr 2025 14:37:15 GMT
From:      "Bjoern A. Zeeb" <bz@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
Subject:   git: e36fd5d2b60f - stable/14 - LinuxKPI: 802.11: try to limit VHT (11ac) to 5Ghz
Message-ID:  <202504181437.53IEbFtZ091906@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
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 =



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202504181437.53IEbFtZ091906>