Re: [PATCH] wiphy: check if ht_capabilities are actually set

berend <[email protected]> Sat, 27 Dec 2025 05:01:14 +0000
Newsgroups dev.linux.lists.iwd
Message-ID <[email protected]>
On Fri, 2025-12-26 at 10:02 +0500, Paul Menzel wrote:
> It’d be great if you documented one of those devices in the commit
> message.

Done.

> > 
> > diff --git a/src/wiphy.c b/src/wiphy.c
> > index b6774f69..85e31cf1 100644
> > --- a/src/wiphy.c
> > +++ b/src/wiphy.c
> 
> […]
> 
> It looks like you pasted the output of `git show` into the message.
> That
> format is harder to apply with the git tools. Could you please resend
> with `git send-email` which uses the output of `git format-patch`.

Done.

I don't know if it's a hardware or firmware limitation on a Raspberry
Pi.  The HT capabilities did change with the firmware versions, but the
40MHz channels never actually worked.

Old firmware:

2.4GHz Band
        Bitrates (non-HT)
                 1.0 Mbps
                 2.0 Mbps
                 5.5 Mbps
                11.0 Mbps
                 6.0 Mbps
                 9.0 Mbps
                12.0 Mbps
                18.0 Mbps
                24.0 Mbps
                36.0 Mbps
                48.0 Mbps
                54.0 Mbps
        HT Capabilities
                HT40
                Short GI for 20Mhz
                Short GI for 40Mhz
        HT RX MCS indexes
                0-7


New firmware:

2.4GHz Band
        Bitrates (non-HT)
                 1.0 Mbps
                 2.0 Mbps
                 5.5 Mbps
                11.0 Mbps
                 6.0 Mbps
                 9.0 Mbps
                12.0 Mbps
                18.0 Mbps
                24.0 Mbps
                36.0 Mbps
                48.0 Mbps
                54.0 Mbps
        HT Capabilities
                HT20
                Short GI for 20Mhz
        HT RX MCS indexes
                0-7


$ iw list:

Wiphy phy1
	wiphy index: 1
	max # scan SSIDs: 10
	max scan IEs length: 2048 bytes
	max # sched scan SSIDs: 16
	max # match sets: 16
	Retry short limit: 7
	Retry long limit: 4
	Coverage class: 0 (up to 0m)
	Supported Ciphers:
		* WEP40 (00-0f-ac:1)
		* WEP104 (00-0f-ac:5)
		* TKIP (00-0f-ac:2)
		* CCMP-128 (00-0f-ac:4)
		* CMAC (00-0f-ac:6)
	Available Antennas: TX 0 RX 0
	Supported interface modes:
		 * IBSS
		 * managed
		 * AP
		 * P2P-client
		 * P2P-GO
		 * P2P-device
	Band 1:
		Capabilities: 0x1020
			HT20
			Static SM Power Save
			RX HT20 SGI
			No RX STBC
			Max AMSDU length: 3839 bytes
			DSSS/CCK HT40
		Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
		Minimum RX AMPDU time spacing: 16 usec (0x07)
		HT TX/RX MCS rate indexes supported: 0-7
		Bitrates (non-HT):
			* 1.0 Mbps
			* 2.0 Mbps (short preamble supported)
			* 5.5 Mbps (short preamble supported)
			* 11.0 Mbps (short preamble supported)
			* 6.0 Mbps
			* 9.0 Mbps
			* 12.0 Mbps
			* 18.0 Mbps
			* 24.0 Mbps
			* 36.0 Mbps
			* 48.0 Mbps
			* 54.0 Mbps
		Frequencies:
			* 2412.0 MHz [1] (20.0 dBm)
			* 2417.0 MHz [2] (20.0 dBm)
			* 2422.0 MHz [3] (20.0 dBm)
			* 2427.0 MHz [4] (20.0 dBm)
			* 2432.0 MHz [5] (20.0 dBm)
			* 2437.0 MHz [6] (20.0 dBm)
			* 2442.0 MHz [7] (20.0 dBm)
			* 2447.0 MHz [8] (20.0 dBm)
			* 2452.0 MHz [9] (20.0 dBm)
			* 2457.0 MHz [10] (20.0 dBm)
			* 2462.0 MHz [11] (20.0 dBm)
			* 2467.0 MHz [12] (20.0 dBm)
			* 2472.0 MHz [13] (20.0 dBm)
			* 2484.0 MHz [14] (disabled)
	Band 2:
		Capabilities: 0x1062
			HT20/HT40
			Static SM Power Save
			RX HT20 SGI
			RX HT40 SGI
			No RX STBC
			Max AMSDU length: 3839 bytes
			DSSS/CCK HT40
		Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
		Minimum RX AMPDU time spacing: 16 usec (0x07)
		HT TX/RX MCS rate indexes supported: 0-7
		VHT Capabilities (0x00001020):
			Max MPDU length: 3895
			Supported Channel Width: neither 160 nor 80+80
			short GI (80 MHz)
			SU Beamformee
		VHT RX MCS set:
			1 streams: MCS 0-9
			2 streams: not supported
			3 streams: not supported
			4 streams: not supported
			5 streams: not supported
			6 streams: not supported
			7 streams: not supported
			8 streams: not supported
		VHT RX highest supported: 0 Mbps
		VHT TX MCS set:
			1 streams: MCS 0-9
			2 streams: not supported
			3 streams: not supported
			4 streams: not supported
			5 streams: not supported
			6 streams: not supported
			7 streams: not supported
			8 streams: not supported
		VHT TX highest supported: 0 Mbps
		VHT extended NSS: not supported
		Bitrates (non-HT):
			* 6.0 Mbps
			* 9.0 Mbps
			* 12.0 Mbps
			* 18.0 Mbps
			* 24.0 Mbps
			* 36.0 Mbps
			* 48.0 Mbps
			* 54.0 Mbps
		Frequencies:
			* 5170.0 MHz [34] (20.0 dBm)
			* 5180.0 MHz [36] (20.0 dBm)
			* 5190.0 MHz [38] (20.0 dBm)
			* 5200.0 MHz [40] (20.0 dBm)
			* 5210.0 MHz [42] (20.0 dBm)
			* 5220.0 MHz [44] (20.0 dBm)
			* 5230.0 MHz [46] (20.0 dBm)
			* 5240.0 MHz [48] (20.0 dBm)
			* 5260.0 MHz [52] (20.0 dBm) (radar detection)
			* 5280.0 MHz [56] (20.0 dBm) (radar detection)
			* 5300.0 MHz [60] (20.0 dBm) (radar detection)
			* 5320.0 MHz [64] (20.0 dBm) (radar detection)
			* 5500.0 MHz [100] (20.0 dBm) (radar
detection)
			* 5520.0 MHz [104] (20.0 dBm) (radar
detection)
			* 5540.0 MHz [108] (20.0 dBm) (radar
detection)
			* 5560.0 MHz [112] (20.0 dBm) (radar
detection)
			* 5580.0 MHz [116] (20.0 dBm) (radar
detection)
			* 5600.0 MHz [120] (20.0 dBm) (radar
detection)
			* 5620.0 MHz [124] (20.0 dBm) (radar
detection)
			* 5640.0 MHz [128] (20.0 dBm) (radar
detection)
			* 5660.0 MHz [132] (20.0 dBm) (radar
detection)
			* 5680.0 MHz [136] (20.0 dBm) (radar
detection)
			* 5700.0 MHz [140] (20.0 dBm) (radar
detection)
			* 5720.0 MHz [144] (13.0 dBm) (radar
detection)
			* 5745.0 MHz [149] (13.0 dBm)
			* 5765.0 MHz [153] (13.0 dBm)
			* 5785.0 MHz [157] (13.0 dBm)
			* 5805.0 MHz [161] (13.0 dBm)
			* 5825.0 MHz [165] (13.0 dBm)
	Supported commands:
		 * new_interface
		 * set_interface
		 * new_key
		 * start_ap
		 * join_ibss
		 * set_pmksa
		 * del_pmksa
		 * flush_pmksa
		 * remain_on_channel
		 * frame
		 * set_wiphy_netns
		 * set_channel
		 * start_sched_scan
		 * start_p2p_device
		 * connect
		 * disconnect
		 * crit_protocol_start
		 * crit_protocol_stop
	software interface modes (can always be added):
	valid interface combinations:
		 * #{ managed } <= 2, #{ P2P-device } <= 1, #{ P2P-
client, P2P-GO } <= 1,
		   total <= 3, #channels <= 2
		 * #{ managed } <= 1, #{ AP } <= 1, #{ P2P-client } <=
1, #{ P2P-device } <= 1,
		   total <= 4, #channels <= 1
	Device supports SAE with AUTHENTICATE command
	Device supports scan flush.
	Device supports randomizing MAC-addr in sched scans.
	max # scan plans: 1
	max scan plan interval: 508
	max scan plan iterations: 0
	Supported TX frame types:
		 * managed: 0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70
0x80 0x90 0xa0 0xb0 0xc0 0xd0 0xe0 0xf0
		 * AP: 0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70 0x80
0x90 0xa0 0xb0 0xc0 0xd0 0xe0 0xf0
		 * P2P-client: 0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70
0x80 0x90 0xa0 0xb0 0xc0 0xd0 0xe0 0xf0
		 * P2P-GO: 0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70
0x80 0x90 0xa0 0xb0 0xc0 0xd0 0xe0 0xf0
		 * P2P-device: 0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70
0x80 0x90 0xa0 0xb0 0xc0 0xd0 0xe0 0xf0
	Supported RX frame types:
		 * managed: 0x40 0xb0 0xd0
		 * AP: 0x00 0x20 0x40 0xa0 0xb0 0xc0 0xd0
		 * P2P-client: 0x40 0xd0
		 * P2P-GO: 0x00 0x20 0x40 0xa0 0xb0 0xc0 0xd0
		 * P2P-device: 0x40 0xd0
	Supported extended features:
		* [ CQM_RSSI_LIST ]: multiple CQM_RSSI_THOLD records
		* [ DFS_OFFLOAD ]: DFS offload
publickey - Berend De Schouwer - 0x128CD671.asc (application/pgp-keys, 3.1 KB)
-----BEGIN PGP PUBLIC KEY BLOCK-----
Comment: https://gopenpgp.org
Version: GopenPGP 2.8.2

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
i4ZPyDBc3n68rqs=
=9SXl
-----END PGP PUBLIC KEY BLOCK-----
signature.asc (application/pgp-signature, 928 B)
-----BEGIN PGP SIGNATURE-----
Version: ProtonMail

wsGpBAEBCABdBYJpT2gYCZDbbuBxk4Cg6TUUAAAAAAAcABBzYWx0QG5vdGF0
aW9ucy5vcGVucGdwanMub3Jn24clVdpmHKGgvXNxtpZ9fhYhBBKM1nGLSON6
q6UFAttu4HGTgKDpAAD1qA//ahpbwGnpCa4+TjWBVuLtM56D4q5DjV6PcL4J
X9Pss29hY7qCEAYfDqo8nir4VyK9xgWWRLISM1iekrIFOzWjRWVu7CNGfMjM
ol9YN+ZMihTWhNULwu56wi2xXtw2zQ724pKIoX5UpcAHo1ZMV8oCqtncONN+
cUZ6/4HmKEXvLyZqa/l3n7KB3wELRFarriQTkQKdIFf8I0QaHOISld/NfLBE
Ecu7t4/ubwbck6ZUtGn5Kke7XpqhWAmGwGpzy7/1dYCF3gqWS0726c6RtW7B
RbENXbalHaRR5zwszy/1DXAxPfmink8rkEZ9bG3igw0U+3XC/v/9LjPh55Oa
RDAS7sZOwVTlQ9mJ9OhXj27+spXu2xpxthIMRwEpSwGzIUamO3AWQ/0TN5KY
49IsySQKtCT/gmsT1KPsDftwL/XaV2kc3dHCWtWJkzSLWtn5WhqNUGofOohX
YdSMdAQ/kU/TaAmmSKn3/NCzGmlH7Xub8b0aAEZMpIDSwmcapwcW4BE9Xq5e
qsLPyBtA/ay2oyJ8ONNVHCKsFNnfke7gWaQpLR6ZPYNLPy9jQIMMLGYyynQm
qAYlfyurAi0Hl042tmFhDlxqMoAWUKOuVak2c8Ax7v+4hv8jcE2kozM+I/g/
tXTSiYGzx1AGtWtaR7fCr82q6qunot+E4vPvqxadoz1r8As=
=eYqv
-----END PGP SIGNATURE-----