aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShuibing Dai <shuibing@google.com>2023-09-18 20:02:23 -0700
committerShuibing Dai <shuibing@google.com>2023-09-20 17:32:20 +0000
commitdf142cd62bf35e9160039d6ed509dbc81461a86b (patch)
tree477f20eaa255116cf9dbf7db78262717ea16d161
parente45d2dc09a2b0973ded25305ef2d866af138c12b (diff)
downloadwpa_supplicant_8-df142cd62bf35e9160039d6ed509dbc81461a86b.tar.gz
Fix the issue of p2p GO not starting on channel 144 (freq:5720)
Based on IEEE Std 802.11-2020 Table E-3 (Operating classes in Japan) and Table E-4 (Global operating classes), we update channel 144 for those corresponding operating classes. Bug: 295130819 Test: manually verified it by p2p tool and nearby sharing Change-Id: I32e8c5f50952bbe0cfebd2be676e0cae0b817b16
-rw-r--r--src/common/ieee802_11_common.c47
1 files changed, 24 insertions, 23 deletions
diff --git a/src/common/ieee802_11_common.c b/src/common/ieee802_11_common.c
index abe3a6a0..dcadfbe5 100644
--- a/src/common/ieee802_11_common.c
+++ b/src/common/ieee802_11_common.c
@@ -1800,6 +1800,7 @@ static int ieee80211_chan_to_freq_eu(u8 op_class, u8 chan)
static int ieee80211_chan_to_freq_jp(u8 op_class, u8 chan)
{
+ /* Table E-3 in IEEE Std 802.11-2020 - Operating classes in Japan */
switch (op_class) {
case 30: /* channels 1..13 */
case 56: /* channels 1..9; 40 MHz */
@@ -1823,14 +1824,14 @@ static int ieee80211_chan_to_freq_jp(u8 op_class, u8 chan)
if (chan < 34 || chan > 64)
return -1;
return 5000 + 5 * chan;
- case 34: /* channels 100-140 */
- case 35: /* channels 100-140 */
- case 39: /* channels 100-132; 40 MHz */
- case 40: /* channels 100-132; 40 MHz */
- case 44: /* channels 104-136; 40 MHz */
- case 45: /* channels 104-136; 40 MHz */
- case 58: /* channels 100-140 */
- if (chan < 100 || chan > 140)
+ case 34: /* channels 100-144 */
+ case 35: /* reserved */
+ case 39: /* channels 100-140; 40 MHz */
+ case 40: /* reserved */
+ case 44: /* channels 104-144; 40 MHz */
+ case 45: /* reserved */
+ case 58: /* channels 100-144 */
+ if (chan < 100 || chan > 144)
return -1;
return 5000 + 5 * chan;
case 59: /* 60 GHz band, channels 1..6 */
@@ -1884,7 +1885,7 @@ static int ieee80211_chan_to_freq_cn(u8 op_class, u8 chan)
static int ieee80211_chan_to_freq_global(u8 op_class, u8 chan)
{
- /* Table E-4 in IEEE Std 802.11-2012 - Global operating classes */
+ /* Table E-4 in IEEE Std 802.11-2020 - Global operating classes */
switch (op_class) {
case 81:
/* channels 1..13 */
@@ -1910,10 +1911,10 @@ static int ieee80211_chan_to_freq_global(u8 op_class, u8 chan)
if (chan < 36 || chan > 64)
return -1;
return 5000 + 5 * chan;
- case 121: /* channels 100-140 */
- case 122: /* channels 100-142; 40 MHz */
- case 123: /* channels 104-136; 40 MHz */
- if (chan < 100 || chan > 140)
+ case 121: /* channels 100-144 */
+ case 122: /* channels 100-140; 40 MHz */
+ case 123: /* channels 104-144; 40 MHz */
+ if (chan < 100 || chan > 144)
return -1;
return 5000 + 5 * chan;
case 124: /* channels 149,153,157,161 */
@@ -2015,7 +2016,7 @@ int ieee80211_is_dfs(int freq, const struct hostapd_hw_modes *modes,
if (!modes || !num_modes)
return (freq >= 5260 && freq <= 5320) ||
- (freq >= 5500 && freq <= 5700);
+ (freq >= 5500 && freq <= 5720);
for (i = 0; i < num_modes; i++) {
for (j = 0; j < modes[i].num_channels; j++) {
@@ -2388,9 +2389,9 @@ const struct oper_class_map global_op_class[] = {
{ HOSTAPD_MODE_IEEE80211A, 118, 52, 64, 4, BW20, NO_P2P_SUPP },
{ HOSTAPD_MODE_IEEE80211A, 119, 52, 60, 8, BW40PLUS, NO_P2P_SUPP },
{ HOSTAPD_MODE_IEEE80211A, 120, 56, 64, 8, BW40MINUS, NO_P2P_SUPP },
- { HOSTAPD_MODE_IEEE80211A, 121, 100, 140, 4, BW20, NO_P2P_SUPP },
- { HOSTAPD_MODE_IEEE80211A, 122, 100, 132, 8, BW40PLUS, NO_P2P_SUPP },
- { HOSTAPD_MODE_IEEE80211A, 123, 104, 136, 8, BW40MINUS, NO_P2P_SUPP },
+ { HOSTAPD_MODE_IEEE80211A, 121, 100, 144, 4, BW20, NO_P2P_SUPP },
+ { HOSTAPD_MODE_IEEE80211A, 122, 100, 140, 8, BW40PLUS, NO_P2P_SUPP },
+ { HOSTAPD_MODE_IEEE80211A, 123, 104, 144, 8, BW40MINUS, NO_P2P_SUPP },
{ HOSTAPD_MODE_IEEE80211A, 124, 149, 161, 4, BW20, P2P_SUPP },
{ HOSTAPD_MODE_IEEE80211A, 125, 149, 177, 4, BW20, P2P_SUPP },
{ HOSTAPD_MODE_IEEE80211A, 126, 149, 173, 8, BW40PLUS, P2P_SUPP },
@@ -3065,10 +3066,10 @@ int op_class_to_bandwidth(u8 op_class)
case 119: /* channels 52,60; 40 MHz; dfs */
case 120: /* channels 56,64; 40 MHz; dfs */
return 40;
- case 121: /* channels 100-140 */
+ case 121: /* channels 100-144 */
return 20;
- case 122: /* channels 100-142; 40 MHz */
- case 123: /* channels 104-136; 40 MHz */
+ case 122: /* channels 100-140; 40 MHz */
+ case 123: /* channels 104-144; 40 MHz */
return 40;
case 124: /* channels 149,153,157,161 */
case 125: /* channels 149,153,157,161,165,169,173,177 */
@@ -3128,10 +3129,10 @@ enum oper_chan_width op_class_to_ch_width(u8 op_class)
case 119: /* channels 52,60; 40 MHz; dfs */
case 120: /* channels 56,64; 40 MHz; dfs */
return CONF_OPER_CHWIDTH_USE_HT;
- case 121: /* channels 100-140 */
+ case 121: /* channels 100-144 */
return CONF_OPER_CHWIDTH_USE_HT;
- case 122: /* channels 100-142; 40 MHz */
- case 123: /* channels 104-136; 40 MHz */
+ case 122: /* channels 100-140; 40 MHz */
+ case 123: /* channels 104-144; 40 MHz */
return CONF_OPER_CHWIDTH_USE_HT;
case 124: /* channels 149,153,157,161 */
case 125: /* channels 149,153,157,161,165,169,171 */