Update operating classes and channels for the 60 GHz band

Update new channels in Channel Bonding (CB2 ... CB4) in the 60 GHz band
for different regulatory regions according to the latest draft amendment
IEEE P802.11ay/D5.0.

Signed-off-by: Ahmad Masri <amasri@codeaurora.org>
This commit is contained in:
Ahmad Masri 2019-12-04 16:40:22 +02:00 committed by Jouni Malinen
parent a19277a28b
commit f86e34168e
2 changed files with 64 additions and 6 deletions

View File

@ -1052,10 +1052,22 @@ static int ieee80211_chan_to_freq_us(u8 op_class, u8 chan)
if (chan < 149 || chan > 165) if (chan < 149 || chan > 165)
return -1; return -1;
return 5000 + 5 * chan; return 5000 + 5 * chan;
case 34: /* 60 GHz band, channels 1..6 */ case 34: /* 60 GHz band, channels 1..8 */
if (chan < 1 || chan > 6) if (chan < 1 || chan > 8)
return -1; return -1;
return 56160 + 2160 * chan; return 56160 + 2160 * chan;
case 37: /* 60 GHz band, EDMG CB2, channels 9..15 */
if (chan < 9 || chan > 15)
return -1;
return 56160 + 2160 * (chan - 8);
case 38: /* 60 GHz band, EDMG CB3, channels 17..22 */
if (chan < 17 || chan > 22)
return -1;
return 56160 + 2160 * (chan - 16);
case 39: /* 60 GHz band, EDMG CB4, channels 25..29 */
if (chan < 25 || chan > 29)
return -1;
return 56160 + 2160 * (chan - 24);
} }
return -1; return -1;
} }
@ -1094,6 +1106,18 @@ static int ieee80211_chan_to_freq_eu(u8 op_class, u8 chan)
if (chan < 1 || chan > 6) if (chan < 1 || chan > 6)
return -1; return -1;
return 56160 + 2160 * chan; return 56160 + 2160 * chan;
case 21: /* 60 GHz band, EDMG CB2, channels 9..11 */
if (chan < 9 || chan > 11)
return -1;
return 56160 + 2160 * (chan - 8);
case 22: /* 60 GHz band, EDMG CB3, channels 17..18 */
if (chan < 17 || chan > 18)
return -1;
return 56160 + 2160 * (chan - 16);
case 23: /* 60 GHz band, EDMG CB4, channels 25 */
if (chan != 25)
return -1;
return 56160 + 2160 * (chan - 24);
} }
return -1; return -1;
} }
@ -1138,6 +1162,18 @@ static int ieee80211_chan_to_freq_jp(u8 op_class, u8 chan)
if (chan < 1 || chan > 6) if (chan < 1 || chan > 6)
return -1; return -1;
return 56160 + 2160 * chan; return 56160 + 2160 * chan;
case 62: /* 60 GHz band, EDMG CB2, channels 9..11 */
if (chan < 9 || chan > 11)
return -1;
return 56160 + 2160 * (chan - 8);
case 63: /* 60 GHz band, EDMG CB3, channels 17..18 */
if (chan < 17 || chan > 18)
return -1;
return 56160 + 2160 * (chan - 16);
case 64: /* 60 GHz band, EDMG CB4, channel 25 */
if (chan != 25)
return -1;
return 56160 + 2160 * (chan - 24);
} }
return -1; return -1;
} }
@ -1230,10 +1266,22 @@ static int ieee80211_chan_to_freq_global(u8 op_class, u8 chan)
if (chan < 1 || chan > 233) if (chan < 1 || chan > 233)
return -1; return -1;
return 5940 + chan * 5; return 5940 + chan * 5;
case 180: /* 60 GHz band, channels 1..6 */ case 180: /* 60 GHz band, channels 1..8 */
if (chan < 1 || chan > 6) if (chan < 1 || chan > 8)
return -1; return -1;
return 56160 + 2160 * chan; return 56160 + 2160 * chan;
case 181: /* 60 GHz band, EDMG CB2, channels 9..15 */
if (chan < 9 || chan > 15)
return -1;
return 56160 + 2160 * (chan - 8);
case 182: /* 60 GHz band, EDMG CB3, channels 17..22 */
if (chan < 17 || chan > 22)
return -1;
return 56160 + 2160 * (chan - 16);
case 183: /* 60 GHz band, EDMG CB4, channel 25..29 */
if (chan < 25 || chan > 29)
return -1;
return 56160 + 2160 * (chan - 24);
} }
return -1; return -1;
} }
@ -1661,7 +1709,16 @@ const struct oper_class_map global_op_class[] = {
{ HOSTAPD_MODE_IEEE80211A, 129, 50, 114, 16, BW160, P2P_SUPP }, { HOSTAPD_MODE_IEEE80211A, 129, 50, 114, 16, BW160, P2P_SUPP },
{ HOSTAPD_MODE_IEEE80211A, 130, 36, 161, 4, BW80P80, P2P_SUPP }, { HOSTAPD_MODE_IEEE80211A, 130, 36, 161, 4, BW80P80, P2P_SUPP },
{ HOSTAPD_MODE_IEEE80211A, 131, 1, 233, 4, BW20, P2P_SUPP }, { HOSTAPD_MODE_IEEE80211A, 131, 1, 233, 4, BW20, P2P_SUPP },
{ HOSTAPD_MODE_IEEE80211AD, 180, 1, 4, 1, BW2160, P2P_SUPP },
/*
* IEEE Std 802.11ad-2012 and P802.ay/D5.0 60 GHz operating classes.
* Class 180 has the legacy channels 1-6. Classes 181-183 include
* channels which implement channel bonding features.
*/
{ HOSTAPD_MODE_IEEE80211AD, 180, 1, 6, 1, BW2160, P2P_SUPP },
{ HOSTAPD_MODE_IEEE80211AD, 181, 9, 13, 1, BW4320, P2P_SUPP },
{ HOSTAPD_MODE_IEEE80211AD, 182, 17, 20, 1, BW6480, P2P_SUPP },
{ HOSTAPD_MODE_IEEE80211AD, 183, 25, 27, 1, BW8640, P2P_SUPP },
{ -1, 0, 0, 0, 0, BW20, NO_P2P_SUPP } { -1, 0, 0, 0, 0, BW20, NO_P2P_SUPP }
}; };

View File

@ -198,7 +198,8 @@ struct oper_class_map {
u8 min_chan; u8 min_chan;
u8 max_chan; u8 max_chan;
u8 inc; u8 inc;
enum { BW20, BW40PLUS, BW40MINUS, BW80, BW2160, BW160, BW80P80 } bw; enum { BW20, BW40PLUS, BW40MINUS, BW80, BW2160, BW160, BW80P80, BW4320,
BW6480, BW8640} bw;
enum { P2P_SUPP, NO_P2P_SUPP } p2p; enum { P2P_SUPP, NO_P2P_SUPP } p2p;
}; };