From nobody Wed Jun 11 09:14:06 2025 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4bHKjB3bkWz5yysQ; Wed, 11 Jun 2025 09:14:06 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R11" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bHKjB13syz3lJ9; Wed, 11 Jun 2025 09:14:06 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1749633246; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=z56cxfc/3fRAKEUpJxre8KXlrTQSTavQxsF4L6EBT/4=; b=uEwlKNXPCuYJAOeKoJiQ/eJgVkjv0ze3+Bg73ha0/3Egpcq88w+UCq62qTIF+7E/x3uurO O5EL3fsgy9wi6o8O4pVGrX5Occf+mFyjiPWzMaI4d92ZhN9RDhaGGubG+9zirmDNt7JHmZ qxNANhEHoqr5EKu0/YI97x0EAfxLM9EOP24EbzcXPjmMwNxiocYnmCag/jh4fFcs88/MSZ YqKkoIBzSg0U+rVZfirxEb7IOQNH2VvZZxYsd0xW93nitrzhZUo7qrhLxejzV9PVE7sJjw axSNo80pL4geFvpH1pPdkObwnMdXr+47dMjQPjPqdJqrJ7NpVKwgWkdPr+TtHg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1749633246; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=z56cxfc/3fRAKEUpJxre8KXlrTQSTavQxsF4L6EBT/4=; b=frZa8R4qbN83p1eHDmkwHGfAIampS2bnq8PoyUR+4ANnPAojaZZb3O2SJtxrEjpF5EuxBa 464/EF4+FmXQ1ISPNIh7YnIldLqdZdJerH4yWYoRQhkFQRODB2of46RlYS5LhmVM+V1o4H h0vUQnFCFUPgG5muwJ5acJZJxjt3kiu+nGv4WUtHBFDEI43gSbf41fz5Aoy2bGjskN2y4G jjGLbkG8FLfbL9lquRGlCN9qypeyz+z3GMCAPWppHp4Z4OF48HXVD4wZ3NauBSxmuxFmKz lTj99SCjQn8EedJcrs8RSWf8AiyXsSzVodtLJMVrjXxhOvwFhSFEuYuGiV+PWA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1749633246; a=rsa-sha256; cv=none; b=omQC1dupRSrSxmhwcqAv8d99vFl1YNPP+cK4LG6fq+tMwq4XdzDT7WKUzYwJAstg8QE/0E 8gBdZaLsUINUZ/CccYHQDcUARk3Wn3pHzl8jWAIhbhZOL2oTGNpxXAiNp2yQR6l9zBxjeb bwWL6qyxVw2dIjh1eTqZf6l8xcKdV8Ux51ONx0nqTLuLbrnq8pewIkBub6+0Uiv9DCT7eu rqgu94QGPHNs94+AJpkQRzPiQDEBGFS5lP5mCiJN1sxnc2KtterhXDufwQ8JYsziR9G9Sm XXnZYJBRoh68nSkuDifpDl8/AhcOazq4PVL7rO/YyIOjFY6xkhvvuSUqjBmviA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bHKjB0d6Sz528; Wed, 11 Jun 2025 09:14:06 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 55B9E6Q5061651; Wed, 11 Jun 2025 09:14:06 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 55B9E67G061648; Wed, 11 Jun 2025 09:14:06 GMT (envelope-from git) Date: Wed, 11 Jun 2025 09:14:06 GMT Message-Id: <202506110914.55B9E67G061648@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: "Bjoern A. Zeeb" Subject: git: 5c6453c588e8 - stable/14 - LinuxKPI: 802.11: ensure bandwidth <= channel bandwidth List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: bz X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 5c6453c588e8e1bad37d7dc5ad1cdb7e04576814 Auto-Submitted: auto-generated The branch stable/14 has been updated by bz: URL: https://cgit.FreeBSD.org/src/commit/?id=5c6453c588e8e1bad37d7dc5ad1cdb7e04576814 commit 5c6453c588e8e1bad37d7dc5ad1cdb7e04576814 Author: Bjoern A. Zeeb AuthorDate: 2025-04-23 23:15:12 +0000 Commit: Bjoern A. Zeeb CommitDate: 2025-06-10 23:37:28 +0000 LinuxKPI: 802.11: ensure bandwidth <= channel bandwidth While we could select our own channel width and station bandwidth indepedent of net80211 that is not a good idea and will lead to trouble. Make sure the station bandwidth we select does not exceed the bandwidth of the channel we are tuned into. Now that VHT160 work we may locally disable it (-vht160) and the AP may still support it but we would be on a 80Mhz channel. Or we do support VHT160 but the AP does not. Again we would be on a 80Mhz channel and not support 160Mhz. Sponsored by: The FreeBSD Foundation (cherry picked from commit 9df0d1f3d1f3dd8823800210dd49e40170d5abd8) --- sys/compat/linuxkpi/common/src/linux_80211.c | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/sys/compat/linuxkpi/common/src/linux_80211.c b/sys/compat/linuxkpi/common/src/linux_80211.c index da4342b0c479..ca7f80069225 100644 --- a/sys/compat/linuxkpi/common/src/linux_80211.c +++ b/sys/compat/linuxkpi/common/src/linux_80211.c @@ -522,6 +522,7 @@ static void lkpi_sta_sync_vht_from_ni(struct ieee80211_vif *vif, struct ieee80211_sta *sta, struct ieee80211_node *ni) { + enum ieee80211_sta_rx_bw bw; uint32_t width; int rx_nss; uint16_t rx_mcs_map; @@ -545,19 +546,38 @@ lkpi_sta_sync_vht_from_ni(struct ieee80211_vif *vif, struct ieee80211_sta *sta, if (ni->ni_vht_chanwidth == IEEE80211_VHT_CHANWIDTH_USE_HT) goto skip_bw; + bw = sta->deflink.bandwidth; width = (sta->deflink.vht_cap.cap & IEEE80211_VHT_CAP_SUPP_CHAN_WIDTH_MASK); switch (width) { + /* Deprecated. */ case IEEE80211_VHT_CAP_SUPP_CHAN_WIDTH_160MHZ: case IEEE80211_VHT_CAP_SUPP_CHAN_WIDTH_160_80PLUS80MHZ: - sta->deflink.bandwidth = IEEE80211_STA_RX_BW_160; + bw = IEEE80211_STA_RX_BW_160; break; default: /* Check if we do support 160Mhz somehow after all. */ if ((sta->deflink.vht_cap.cap & IEEE80211_VHT_CAP_EXT_NSS_BW_MASK) != 0) - sta->deflink.bandwidth = IEEE80211_STA_RX_BW_160; + bw = IEEE80211_STA_RX_BW_160; else - sta->deflink.bandwidth = IEEE80211_STA_RX_BW_80; + bw = IEEE80211_STA_RX_BW_80; } + /* + * While we can set what is possibly supported we also need to be + * on a channel which supports that bandwidth; e.g., we can support + * VHT160 but the AP only does VHT80. + * Further ni_chan will also have filtered out what we disabled + * by configuration. + * Once net80211 channel selection is fixed for 802.11-2020 and + * VHT160 we can possibly spare ourselves the above. + */ + if (bw == IEEE80211_STA_RX_BW_160 && + !IEEE80211_IS_CHAN_VHT160(ni->ni_chan) && + !IEEE80211_IS_CHAN_VHT80P80(ni->ni_chan)) + bw = IEEE80211_STA_RX_BW_80; + if (bw == IEEE80211_STA_RX_BW_80 && + !IEEE80211_IS_CHAN_VHT80(ni->ni_chan)) + bw = sta->deflink.bandwidth; + sta->deflink.bandwidth = bw; skip_bw: rx_nss = 0;