wifi: update the list of 5GHz channels

Update the list of Wi-Fi channels in the 5GHz band:

 - remove channels 7–16, which were part of 802.11j but were revoked
   in 2017;

 - remove the entries that are not valid as primary 20MHz channels but
   only as the center of bonded channels, e.g. 38, 42, etc.

 - add channel 144, introduced in the 802.11ac standard

Also restrict list of default channels for a 5GHz hotspot to those
that are available everywhere and without DFS.
This commit is contained in:
Beniamino Galvani 2026-01-08 15:46:46 +01:00
parent c39b967a47
commit 499427a84e
2 changed files with 55 additions and 11 deletions

View file

@ -3257,7 +3257,11 @@ act_stage1_prepare(NMDevice *device, NMDeviceStateReason *out_failure_reason)
static void
ensure_hotspot_frequency(NMDeviceWifi *self, NMSettingWireless *s_wifi, NMWifiAP *ap)
{
guint32 freqs_a[] = {5180, 5200, 5220, 5745, 5765, 5785, 5805, 0};
guint32 freqs_a[] = {5180, /* only U-NII-1 channels: non-DFS and available everywhere */
5200,
5220,
5240,
0};
guint32 freqs_bg[] = {2412, 2437, 2462, 2472, 0};
guint32 freqs_6ghz[] = {5975, /* only U-NII-5 PSC channels, for better compatibility */
6055,

View file

@ -3699,18 +3699,58 @@ struct cf_pair {
};
static const struct cf_pair table_5ghz[] = {
{7, 5035}, {8, 5040}, {9, 5045}, {11, 5055}, {12, 5060}, {16, 5080}, {34, 5170},
{36, 5180}, {38, 5190}, {40, 5200}, {42, 5210}, {44, 5220}, {46, 5230}, {48, 5240},
{50, 5250}, {52, 5260}, {56, 5280}, {58, 5290}, {60, 5300}, {64, 5320}, {100, 5500},
{104, 5520}, {108, 5540}, {112, 5560}, {116, 5580}, {120, 5600}, {124, 5620}, {128, 5640},
{132, 5660}, {136, 5680}, {140, 5700}, {149, 5745}, {152, 5760}, {153, 5765}, {157, 5785},
{160, 5800}, {161, 5805}, {165, 5825}, {183, 4915}, {184, 4920}, {185, 4925}, {187, 4935},
{188, 4945}, {192, 4960}, {196, 4980}, {0, 0}};
/* Special, 20MHz only */
{32, 5160},
/* UNII-1 (Indoor) */
{36, 5180},
{40, 5200},
{44, 5220},
{48, 5240},
/* UNII-2 (DFS) */
{52, 5260},
{56, 5280},
{60, 5300},
{64, 5320},
/* UNII-2C (DFS) */
{100, 5500},
{104, 5520},
{108, 5540},
{112, 5560},
{116, 5580},
{120, 5600},
{124, 5620},
{128, 5640},
{132, 5660},
{136, 5680},
{140, 5700},
{144, 5720},
/* UNII-3 */
{149, 5745},
{153, 5765},
{157, 5785},
{161, 5805},
{165, 5825},
/* 4.9 GHz Public Safety Band (802.11y/j) */
{183, 4915},
{184, 4920},
{185, 4925},
{187, 4935},
{188, 4940},
{189, 4945},
{192, 4960},
{196, 4980},
{0, 0}};
static const guint table_5ghz_freqs[G_N_ELEMENTS(table_5ghz)] = {
5035, 5040, 5045, 5055, 5060, 5080, 5170, 5180, 5190, 5200, 5210, 5220, 5230, 5240, 5250, 5260,
5280, 5290, 5300, 5320, 5500, 5520, 5540, 5560, 5580, 5600, 5620, 5640, 5660, 5680, 5700, 5745,
5760, 5765, 5785, 5800, 5805, 5825, 4915, 4920, 4925, 4935, 4945, 4960, 4980, 0,
5160, 5180, 5200, 5220, 5240, 5260, 5280, 5300, 5320, 5500, 5520, 5540,
5560, 5580, 5600, 5620, 5640, 5660, 5680, 5700, 5720, 5745, 5765, 5785,
5805, 5825, 4915, 4920, 4925, 4935, 4940, 4945, 4960, 4980, 0,
};
static const struct cf_pair table_2ghz[] = {{1, 2412},