Contributed by Peter N. M. Hansteen on from the Puffy gaping at APs dept.
Now Stefan Sperling (stsp@
) is airing a possible improvement in compatibility checks via a message to tech@
titled "fix net80211 802.11g compatibility check", saying
List: openbsd-tech Subject: fix net80211 802.11g compatibility check From: Stefan Sperling <stsp () stsp ! name> Date: 2025-07-31 10:26:18 I have a WIP fix for qwx which relies on ieee80211_iserp_sta() to detect whether an AP supports 802.11g, rather than 802.11b only. And I encountered an access point which qwx could not connect to when my WIP fix is applied.
This AP allows 11g clients but blocks 11b clients by not announcing support for 11b rates in its beacons. ieee80211_iserp_sta() is supposed to detect whether a peer supports ERP/11g. Yet it will return false for APs which do not announce support for any of the 11b (pre-11g) data rates in their beacons. This code seems to be based on the last sentence in this paragraph from the 802.11 standard (I am from quoting from the 2012 / 11n version): 18. Extended Rate PHY (ERP) specification [...] 18.1.2 Introduction The ERP builds on the payload data rates of 1 and 2 Mb/s, as described in Clause 15, that use DSSS modulation and builds on the payload data rates of 1, 2, 5.5, and 11 Mb/s, as described in Clause 16, that use DSSS and CCK. The ERP draws from Clause 17 to provide additional payload data rates of 6, 9, 12, 18, 24, 36, 48, and 54 Mb/s. Of these rates, transmission and reception capability for 1, 2, 5.5, 6, 11, 12, and 24 Mb/s data rates is mandatory. To summarize: ERP rates are the OFDM rates: 6, 9, 12, 18, 24, 36, 48, and 54 Mb/s. These rates were introduced with 11g. The mandatory ones are: 6, 12, and 24. The CCK rates are 1, 2, 5.5, and 11. These were already present in 11b. They are not relevant when checking for EP/11g support. The mandatory ones are 1, 2, and 5. Current APs may choose to disable support even for the mandatory ones, which makes ieee80211_iserp_sta() return false even though the AP supports ERP/11g. Fix below. ok? (Rate arrays in beacons and in our code represent data rates in units of 512Kb/s. Divide by 2 to get Mbit/s: 12 -> 6, 24 -> 12, 48 -> 24) (Clause 18 used to be called Clause 19 in earlier standard revisions.) M sys/net80211/ieee80211_node.c | 7+ 3- 1 file changed, 7 insertions(+), 3 deletions(-)
and the rest of the
message
contains the diff -- against a fairly fresh -current
-- for testing by those who are able and willing.
If you are able to test and provide useful feedback, your input will be appreciated!