Bug 278017 - Wireless 11a high channels not available for use (missing in lib/lib80211/regdomain.xml)
Summary: Wireless 11a high channels not available for use (missing in lib/lib80211/reg...
Status: Open
Alias: None
Product: Base System
Classification: Unclassified
Component: wireless (show other bugs)
Version: CURRENT
Hardware: Any Any
: --- Affects Some People
Assignee: freebsd-wireless (Nobody)
URL:
Keywords:
Depends on:
Blocks: 283171
  Show dependency treegraph
 
Reported: 2024-03-29 00:03 UTC by Bjoern A. Zeeb
Modified: 2024-12-07 01:00 UTC (History)
4 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Bjoern A. Zeeb freebsd_committer freebsd_triage 2024-03-29 00:03:08 UTC
Printing all channels supported by HW (in this case from LinuxKPI with iwlwifi) I see the full set of 5GHz high channels.

iwlwifi0: [2 100020 2147423703] lkpi_ic_getradiocaps: Channel [1/2412/0]                                                                                                                                                                                                                                             
iwlwifi0: [2 100020 2147423703] lkpi_ic_getradiocaps: Channel [2/2417/0]                                                                                                                                                                                                                                             
iwlwifi0: [2 100020 2147423704] lkpi_ic_getradiocaps: Channel [3/2422/0]                                                                                  
iwlwifi0: [2 100020 2147423704] lkpi_ic_getradiocaps: Channel [4/2427/0]                                                                                  
iwlwifi0: [2 100020 2147423705] lkpi_ic_getradiocaps: Channel [5/2432/0]                                                                                                                                                                                                                                             
iwlwifi0: [2 100020 2147423705] lkpi_ic_getradiocaps: Channel [6/2437/0]                                                                                  
iwlwifi0: [2 100020 2147423705] lkpi_ic_getradiocaps: Channel [7/2442/0]                                                                                                                                                                                                                                             
iwlwifi0: [2 100020 2147423705] lkpi_ic_getradiocaps: Channel [8/2447/0]                                                                                  
iwlwifi0: [2 100020 2147423706] lkpi_ic_getradiocaps: Channel [9/2452/0]                                                                                                                                                                                                                                             
iwlwifi0: [2 100020 2147423706] lkpi_ic_getradiocaps: Channel [10/2457/0]                                                                                                                                                                                                                                            
iwlwifi0: [2 100020 2147423706] lkpi_ic_getradiocaps: Channel [11/2462/0]                                                                                 
iwlwifi0: [2 100020 2147423706] lkpi_ic_getradiocaps: Channel [12/2467/0]                                                                                                                                                                                                                                            
iwlwifi0: [2 100020 2147423706] lkpi_ic_getradiocaps: Channel [13/2472/0]                                                                                                                                                                                                                                            
iwlwifi0: [2 100020 2147423706] lkpi_ic_getradiocaps: Channel [14/2484/0]                                                                                                                                                                                                                                            
iwlwifi0: [2 100020 2147423707] lkpi_ic_getradiocaps: Channel [36/5180/0]                                                                                 
iwlwifi0: [2 100020 2147423707] lkpi_ic_getradiocaps: Channel [40/5200/0]                                                                                 
iwlwifi0: [2 100020 2147423707] lkpi_ic_getradiocaps: Channel [44/5220/0]                                                                                 
iwlwifi0: [2 100020 2147423707] lkpi_ic_getradiocaps: Channel [48/5240/0]                                                                                                                                                                                                                                            
iwlwifi0: [2 100020 2147423707] lkpi_ic_getradiocaps: Channel [52/5260/0]                                                                                 
iwlwifi0: [2 100020 2147423707] lkpi_ic_getradiocaps: Channel [56/5280/0]                                                                                                                                                                                                                                            
iwlwifi0: [2 100020 2147423708] lkpi_ic_getradiocaps: Channel [60/5300/0]                                                                                                                                                                                                                                            
iwlwifi0: [2 100020 2147423708] lkpi_ic_getradiocaps: Channel [64/5320/0]                                                                                 
iwlwifi0: [2 100020 2147423708] lkpi_ic_getradiocaps: Channel [68/5340/0]                                                                                                                                                                                                                                            
iwlwifi0: [2 100020 2147423708] lkpi_ic_getradiocaps: Channel [72/5360/0]                                                                                 
iwlwifi0: [2 100020 2147423709] lkpi_ic_getradiocaps: Channel [76/5380/0]                                                                                 
iwlwifi0: [2 100020 2147423709] lkpi_ic_getradiocaps: Channel [80/5400/0]                                                                                 
iwlwifi0: [2 100020 2147423709] lkpi_ic_getradiocaps: Channel [84/5420/0]                                                                                 
iwlwifi0: [2 100020 2147423709] lkpi_ic_getradiocaps: Channel [88/5440/0]
iwlwifi0: [2 100020 2147423709] lkpi_ic_getradiocaps: Channel [92/5460/0]
iwlwifi0: [2 100020 2147423709] lkpi_ic_getradiocaps: Channel [96/5480/0]
iwlwifi0: [2 100020 2147423710] lkpi_ic_getradiocaps: Channel [100/5500/0]
iwlwifi0: [2 100020 2147423710] lkpi_ic_getradiocaps: Channel [104/5520/0]
iwlwifi0: [2 100020 2147423710] lkpi_ic_getradiocaps: Channel [108/5540/0]
iwlwifi0: [2 100020 2147423710] lkpi_ic_getradiocaps: Channel [112/5560/0]
iwlwifi0: [2 100020 2147423710] lkpi_ic_getradiocaps: Channel [116/5580/0]
iwlwifi0: [2 100020 2147423710] lkpi_ic_getradiocaps: Channel [120/5600/0]
iwlwifi0: [2 100020 2147423711] lkpi_ic_getradiocaps: Channel [124/5620/0]
iwlwifi0: [2 100020 2147423711] lkpi_ic_getradiocaps: Channel [128/5640/0]
iwlwifi0: [2 100020 2147423711] lkpi_ic_getradiocaps: Channel [132/5660/0]
iwlwifi0: [2 100020 2147423711] lkpi_ic_getradiocaps: Channel [136/5680/0]
iwlwifi0: [2 100020 2147423711] lkpi_ic_getradiocaps: Channel [140/5700/0]
iwlwifi0: [2 100020 2147423712] lkpi_ic_getradiocaps: Channel [144/5720/0]
iwlwifi0: [2 100020 2147423712] lkpi_ic_getradiocaps: Channel [149/5745/0]
iwlwifi0: [2 100020 2147423712] lkpi_ic_getradiocaps: Channel [153/5765/0]
iwlwifi0: [2 100020 2147423712] lkpi_ic_getradiocaps: Channel [157/5785/0]
iwlwifi0: [2 100020 2147423712] lkpi_ic_getradiocaps: Channel [161/5805/0]
iwlwifi0: [2 100020 2147423713] lkpi_ic_getradiocaps: Channel [165/5825/0]
iwlwifi0: [2 100020 2147423713] lkpi_ic_getradiocaps: Channel [169/5845/0]
iwlwifi0: [2 100020 2147423713] lkpi_ic_getradiocaps: Channel [173/5865/0]
iwlwifi0: [2 100020 2147423713] lkpi_ic_getradiocaps: Channel [177/5885/0]
iwlwifi0: [2 100020 2147423713] lkpi_ic_getradiocaps: Channel [181/5905/0]

But in ifconfig they do not show up.

# ifconfig -v wlan0 list chan                                                                                                                                                                                                                                                                   
Channel   1 : 2412      MHz 11b          Channel  12 : 2467      MHz 11g                                                                                                                                                                                                                                             
Channel   1 : 2412      MHz 11g          Channel  13 : 2472      MHz 11b                                                                                                                                                                                                                                             
Channel   2 : 2417      MHz 11b          Channel  13 : 2472      MHz 11g                                                                                                                                                                                                                                             
Channel   2 : 2417      MHz 11g          Channel  36 : 5180      MHz 11a                                                                                                                                                                                                                                             
Channel   3 : 2422      MHz 11b          Channel  40 : 5200      MHz 11a                                                                                                                                                                                                                                             
Channel   3 : 2422      MHz 11g          Channel  44 : 5220      MHz 11a                                                                                                                                                                                                                                             
Channel   4 : 2427      MHz 11b          Channel  48 : 5240      MHz 11a                                                                                                                                                                                                                                             
Channel   4 : 2427      MHz 11g          Channel  52 : 5260*D    MHz 11a                                                                                                                                                                                                                                             
Channel   5 : 2432      MHz 11b          Channel  56 : 5280*D    MHz 11a                                                                                                                                                                                                                                             
Channel   5 : 2432      MHz 11g          Channel  60 : 5300*D    MHz 11a                                                                                                                                                                                                                                             
Channel   6 : 2437      MHz 11b          Channel  64 : 5320*D    MHz 11a                                                                                                                                                                                                                                             
Channel   6 : 2437      MHz 11g          Channel 100 : 5500*D    MHz 11a                                                                                                                                                                                                                                             
Channel   7 : 2442      MHz 11b          Channel 104 : 5520*D    MHz 11a                                                                                                                                                                                                                                             
Channel   7 : 2442      MHz 11g          Channel 108 : 5540*D    MHz 11a                                                                                                                                                                                                                                             
Channel   8 : 2447      MHz 11b          Channel 112 : 5560*D    MHz 11a                                                                                                                                                                                                                                             
Channel   8 : 2447      MHz 11g          Channel 116 : 5580*D    MHz 11a                                                                                                                                                                                                                                             
Channel   9 : 2452      MHz 11b          Channel 120 : 5600*D    MHz 11a                                                                                                                                                                                                                                             
Channel   9 : 2452      MHz 11g          Channel 124 : 5620*D    MHz 11a                                                                                                                                                                                                                                             
Channel  10 : 2457      MHz 11b          Channel 128 : 5640*D    MHz 11a                                                                                                                                                                                                                                             
Channel  10 : 2457      MHz 11g          Channel 132 : 5660*D    MHz 11a                                                                                                                                                                                                                                             
Channel  11 : 2462      MHz 11b          Channel 136 : 5680*D    MHz 11a                                                                                                                                                                                                                                             
Channel  11 : 2462      MHz 11g          Channel 140 : 5700*D    MHz 11a                                                                                                                                                                                                                                             
Channel  12 : 2467      MHz 11b

Check where we filter them out (MAXCHAN number from ifconfig down to regdomain.xml, etc.).
Comment 1 Bjoern A. Zeeb freebsd_committer freebsd_triage 2024-03-29 00:21:46 UTC
Just trying to change the topic again as it is not just ifconfig but also other logic.  ifconfig is just the far end on one side, the kernel driver the other end.  In the end it is what we make net80211 think which matters.
Comment 2 Bjoern A. Zeeb freebsd_committer freebsd_triage 2024-03-29 00:40:40 UTC
I just checked.
Someone needs to update regdomain.xml for them and they'll show up.

We need to think how to continue on some other bits as well for 6Ghz likely if we start it.
Comment 3 Piotr Pawel Stefaniak freebsd_committer freebsd_triage 2024-03-29 06:21:25 UTC
Hi, thanks for looking into it.
I'd like to update regdomain.xml but how do I do that? And isn't it a bit strange that users are expected to update it? Mine under /etc seems to be the same as /lib/lib80211/regdomain.xml in the main branch.
Comment 4 Bjoern A. Zeeb freebsd_committer freebsd_triage 2024-03-29 15:46:13 UTC
(In reply to Piotr Pawel Stefaniak from comment #3)

The lib/ version gets installed into /etc and etcupdate will update it.

"Users" are not supposed to maintain it; "we are" like with any other bit FreeBSD is distributing.  It's a lot of regulations to check sadly.  Need to figure out a way to do a full once over check probably by now.

While people in the past were also not entirely keen on the road Linux went down  the wireless-regdb is ISC licensed and they do have references for the individual countries/parts of the world, so the links there are probably a good start as well:
https://git.kernel.org/pub/scm/linux/kernel/git/wens/wireless-regdb.git/tree/

I also still feel like I want more indentation or "including" on our XML file to make it more readable.

The other thing I would love to find out is why we do split them up with the individual mode/flags.  I once asked Sam and he said he had a good reason but could not remember.  Maybe someone else knows.  As the "duplication" as-is also makes it harder to maintain and the permutations we then generate go into the 100(s) if not 1000(s) by now and will only grow.
Comment 5 Bjoern A. Zeeb freebsd_committer freebsd_triage 2024-03-29 15:47:03 UTC
Assign to wireless for the moment in case someone thinks they want to do the update (so they are not waiting on me to do it).
Comment 6 Adrian Chadd freebsd_committer freebsd_triage 2024-03-29 16:09:05 UTC
So the regdomain.xml file basically is a copy of the ath_hal regdomain database in it's almost entirety, flags, layouts and all.

It made searching easier (same as the ah_regdomain code) as you're looking for highest op mode, frequency width within bounds, flags matching some mask, etc. You didn't need to put anything other than range/mask operations in your regdomain code.

I am however not married to it at all. Honestly, I'd rather we had a way to convert the wireless reg.db stuff to xml in the short term and then find a way to replace it entirely.

Also when reporting bugs like this, please do list which regdomain you ARE in so we can see whether it's just lacking or missing. I know it's likely lacking in a lot of places, but eg FCC vs FCC3 are different regdomains because of how APs vs STAs behave (FCC3 includes the AP channels that require DFS, for example..)