From: John Macias <dencity7@gmail.com>
To: johannes@sipsolutions.net, linux-wireless@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Subject: Re: [PATCH wireless] wifi: mac80211: use HT CCFS2 when computing the AP's HE and lower bandwidth
Date: Mon, 26 Oct 2026 13:15:29 -0700 [thread overview]
Message-ID: <20261026201529.3471565-1-dencity7@gmail.com> (raw)
In-Reply-To: <116e1f238e2d78817a2ac5b42b00e0faeabf16bc.camel@sipsolutions.net>
On Mon, 2026-10-26 at 12:07 +0100, Johannes Berg wrote:
> This, by itself, is wrong.
Thanks. I think I see why: CCFS2 only applies to a STA that can
interpret Extended NSS BW, and my patch applied it to every station.
Please drop it.
I looked further and may have found the actual cause, but I'm not
certain. Below I've separated what I measured from what I concluded
by reading code. Corrections are very welcome.
Setup: IPQ8074 (Netgear RAX120v1), ath11k, firmware
WLAN.HK.2.0-01792, HE160 BSS on channel 36. Clients: MT7925 and AX200.
What I measured:
- Before any change, "iw phy" on the AP reports VHT Capabilities
0x738f09fa, prints the Supported Channel Width as "(reserved)", and
shows "VHT extended NSS: not supported".
- In the beacon I captured for the original patch, the VHT Operation
element has Channel Width 1 and CCFS1 0, and the 160 MHz centre is
in the HT Operation CCFS2 field.
- Both clients report a 160 MHz link. On the AP side the peers were
set up as 11ax-he80 and the AP's transmit rate to them stayed at
80 MHz (MT7925 download about 810 Mb/s).
- With the change described below, "iw phy" prints "160 MHz, 80+80
MHz" and still "VHT extended NSS: not supported". The AP then
transmits to both clients at 160 MHz HE-MCS 11, with unmodified
mac80211 and without my earlier patch.
What I concluded from the code, without confirming every step on the
device:
1. My reading of 0x738f09fa is Supported Channel Width Set 2 with
Extended NSS BW Support 1. As I read Table 9-272, that combination
isn't defined, which would fit iw printing "reserved".
ath11k_create_vht_cap() copies the firmware's value unchanged.
2. ath11k sets SUPPORTS_VHT_EXT_NSS_BW and
IEEE80211_VHT_EXT_NSS_BW_CAPABLE only when the firmware reports an
NSS ratio. "extended NSS: not supported" suggests this firmware
doesn't. I didn't print nss_ratio_enabled itself.
3. hostapd_eid_vht_operation() moves the 160 MHz centre to CCFS2 when
the driver's capabilities include Extended NSS BW Support. That
would explain the beacon above. I didn't capture a beacon after the
change, so I'm assuming it now uses CCFS1 because the AP transmits
at 160 MHz.
4. ieee80211_calc_ap_he_and_lower() reads only CCFS1, so the AP limits
every station to 80 MHz. Since the hardware doesn't claim extended
NSS support, this looks correct to me, and my patch was the wrong
fix.
The change I tested clears IEEE80211_VHT_CAP_EXT_NSS_BW_MASK in
ath11k_create_vht_cap() when the firmware gives no NSS ratio.
Questions where I may still be wrong:
- Is ath11k the right place for this? Or should mac80211 or hostapd
ignore Extended NSS BW Support in the capabilities when the driver
doesn't set SUPPORTS_VHT_EXT_NSS_BW?
- I also tried applying CCFS2 per station (only for STAs that set
Extended NSS BW Capable). On this hardware it changed nothing: both
clients stayed at 80 MHz. As far as I can tell, that's because
mac80211 clears that bit for every station when the driver lacks
SUPPORTS_VHT_EXT_NSS_BW. On hardware that does support it, an AP
that signals 160 MHz through CCFS2 would still be limited to 80 MHz
by ieee80211_calc_ap_he_and_lower(). Is that expected, or is it
handled somewhere I missed?
If the ath11k change looks right to you, I'll send it to the ath11k
list. I can also capture the beacon after the change, or print the
firmware's NSS ratio, if that would help.
John
prev parent reply other threads:[~2026-10-26 20:16 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-26 4:01 John Macias
2026-10-26 11:07 ` Johannes Berg
2026-10-26 20:15 ` John Macias [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20261026201529.3471565-1-dencity7@gmail.com \
--to=dencity7@gmail.com \
--cc=johannes@sipsolutions.net \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-wireless@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®