@ -986,8 +986,8 @@ enum hostapd_hw_mode ieee80211_freq_to_channel_ext(unsigned int freq,
return HOSTAPD_MODE_IEEE80211A ;
return HOSTAPD_MODE_IEEE80211A ;
}
}
/* 5 GHz, channels 149..1 69 */
/* 5 GHz, channels 149..1 77 */
if ( freq > = 5745 & & freq < = 58 4 5) {
if ( freq > = 5745 & & freq < = 58 8 5) {
if ( ( freq - 5000 ) % 5 )
if ( ( freq - 5000 ) % 5 )
return NUM_HOSTAPD_MODES ;
return NUM_HOSTAPD_MODES ;
@ -1417,22 +1417,22 @@ static int ieee80211_chan_to_freq_global(u8 op_class, u8 chan)
return - 1 ;
return - 1 ;
return 5000 + 5 * chan ;
return 5000 + 5 * chan ;
case 124 : /* channels 149,153,157,161 */
case 124 : /* channels 149,153,157,161 */
case 126 : /* channels 149,157; 40 MHz */
case 127 : /* channels 153,161; 40 MHz */
if ( chan < 149 | | chan > 161 )
if ( chan < 149 | | chan > 161 )
return - 1 ;
return - 1 ;
return 5000 + 5 * chan ;
return 5000 + 5 * chan ;
case 125 : /* channels 149,153,157,161,165,169 */
case 125 : /* channels 149,153,157,161,165,169,173,177 */
if ( chan < 149 | | chan > 169 )
case 126 : /* channels 149,157,165,173; 40 MHz */
case 127 : /* channels 153,161,169,177; 40 MHz */
if ( chan < 149 | | chan > 177 )
return - 1 ;
return - 1 ;
return 5000 + 5 * chan ;
return 5000 + 5 * chan ;
case 128 : /* center freqs 42, 58, 106, 122, 138, 155 ; 80 MHz */
case 128 : /* center freqs 42, 58, 106, 122, 138, 155 , 171 ; 80 MHz */
case 130 : /* center freqs 42, 58, 106, 122, 138, 155 ; 80 MHz */
case 130 : /* center freqs 42, 58, 106, 122, 138, 155 , 171 ; 80 MHz */
if ( chan < 36 | | chan > 1 61 )
if ( chan < 36 | | chan > 1 77 )
return - 1 ;
return - 1 ;
return 5000 + 5 * chan ;
return 5000 + 5 * chan ;
case 129 : /* center freqs 50, 114 ; 160 MHz */
case 129 : /* center freqs 50, 114 , 163 ; 160 MHz */
if ( chan < 36 | | chan > 1 28 )
if ( chan < 36 | | chan > 1 77 )
return - 1 ;
return - 1 ;
return 5000 + 5 * chan ;
return 5000 + 5 * chan ;
case 131 : /* UHB channels, 20 MHz: 1, 5, 9.. */
case 131 : /* UHB channels, 20 MHz: 1, 5, 9.. */
@ -1876,20 +1876,20 @@ const struct oper_class_map global_op_class[] = {
{ HOSTAPD_MODE_IEEE80211A , 122 , 100 , 132 , 8 , BW40PLUS , 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 , 123 , 104 , 136 , 8 , BW40MINUS , NO_P2P_SUPP } ,
{ HOSTAPD_MODE_IEEE80211A , 124 , 149 , 161 , 4 , BW20 , P2P_SUPP } ,
{ HOSTAPD_MODE_IEEE80211A , 124 , 149 , 161 , 4 , BW20 , P2P_SUPP } ,
{ HOSTAPD_MODE_IEEE80211A , 125 , 149 , 1 69 , 4 , BW20 , P2P_SUPP } ,
{ HOSTAPD_MODE_IEEE80211A , 125 , 149 , 1 77 , 4 , BW20 , P2P_SUPP } ,
{ HOSTAPD_MODE_IEEE80211A , 126 , 149 , 1 5 7, 8 , BW40PLUS , P2P_SUPP } ,
{ HOSTAPD_MODE_IEEE80211A , 126 , 149 , 1 73 , 8 , BW40PLUS , P2P_SUPP } ,
{ HOSTAPD_MODE_IEEE80211A , 127 , 153 , 1 61 , 8 , BW40MINUS , P2P_SUPP } ,
{ HOSTAPD_MODE_IEEE80211A , 127 , 153 , 1 77 , 8 , BW40MINUS , P2P_SUPP } ,
/*
/*
* IEEE P802 .11 a c/ D7 .0 Table E - 4 actually talks about channel center
* IEEE P802 .11 a x/ D8 .0 Table E - 4 actually talks about channel center
* frequency index 42 , 58 , 106 , 122 , 138 , 155 with channel spacing of
* frequency index 42 , 58 , 106 , 122 , 138 , 155 , 171 with channel spacing
* 80 MHz , but currently use the following definition for simplicity
* of 80 MHz , but currently use the following definition for simplicity
* ( these center frequencies are not actual channels , which makes
* ( these center frequencies are not actual channels , which makes
* wpas_p2p_verify_channel ( ) fail ) . wpas_p2p_verify_80mhz ( ) should take
* wpas_p2p_verify_channel ( ) fail ) . wpas_p2p_verify_80mhz ( ) should take
* care of removing invalid channels .
* care of removing invalid channels .
*/
*/
{ HOSTAPD_MODE_IEEE80211A , 128 , 36 , 1 61 , 4 , BW80 , P2P_SUPP } ,
{ HOSTAPD_MODE_IEEE80211A , 128 , 36 , 1 77 , 4 , BW80 , P2P_SUPP } ,
{ HOSTAPD_MODE_IEEE80211A , 129 , 36 , 1 28 , 4 , BW160 , P2P_SUPP } ,
{ HOSTAPD_MODE_IEEE80211A , 129 , 36 , 1 77 , 4 , BW160 , P2P_SUPP } ,
{ HOSTAPD_MODE_IEEE80211A , 131 , 1 , 233 , 4 , BW20 , NO_P2P_SUPP } ,
{ HOSTAPD_MODE_IEEE80211A , 131 , 1 , 233 , 4 , BW20 , NO_P2P_SUPP } ,
{ HOSTAPD_MODE_IEEE80211A , 132 , 1 , 233 , 8 , BW40 , NO_P2P_SUPP } ,
{ HOSTAPD_MODE_IEEE80211A , 132 , 1 , 233 , 8 , BW40 , NO_P2P_SUPP } ,
{ HOSTAPD_MODE_IEEE80211A , 133 , 1 , 233 , 16 , BW80 , NO_P2P_SUPP } ,
{ HOSTAPD_MODE_IEEE80211A , 133 , 1 , 233 , 16 , BW80 , NO_P2P_SUPP } ,
@ -1911,7 +1911,7 @@ const struct oper_class_map global_op_class[] = {
* the OneHundredAndThirty Delimiter value used in the Supported
* the OneHundredAndThirty Delimiter value used in the Supported
* Operating Classes element to indicate the end of the Operating
* Operating Classes element to indicate the end of the Operating
* Classes field . */
* Classes field . */
{ HOSTAPD_MODE_IEEE80211A , 130 , 36 , 1 61 , 4 , BW80P80 , P2P_SUPP } ,
{ HOSTAPD_MODE_IEEE80211A , 130 , 36 , 1 77 , 4 , BW80P80 , P2P_SUPP } ,
{ - 1 , 0 , 0 , 0 , 0 , BW20 , NO_P2P_SUPP }
{ - 1 , 0 , 0 , 0 , 0 , BW20 , NO_P2P_SUPP }
} ;
} ;
@ -2493,16 +2493,16 @@ int op_class_to_bandwidth(u8 op_class)
case 123 : /* channels 104-136; 40 MHz */
case 123 : /* channels 104-136; 40 MHz */
return 40 ;
return 40 ;
case 124 : /* channels 149,153,157,161 */
case 124 : /* channels 149,153,157,161 */
case 125 : /* channels 149,153,157,161,165,169 */
case 125 : /* channels 149,153,157,161,165,169 ,173,177 */
return 20 ;
return 20 ;
case 126 : /* channels 149,157 ; 40 MHz */
case 126 : /* channels 149,157 ,161,165,169,173 ; 40 MHz */
case 127 : /* channels 153 ,161 ; 40 MHz */
case 127 : /* channels 153 ..177 ; 40 MHz */
return 40 ;
return 40 ;
case 128 : /* center freqs 42, 58, 106, 122, 138, 155 ; 80 MHz */
case 128 : /* center freqs 42, 58, 106, 122, 138, 155 , 171 ; 80 MHz */
return 80 ;
return 80 ;
case 129 : /* center freqs 50, 114 ; 160 MHz */
case 129 : /* center freqs 50, 114 , 163 ; 160 MHz */
return 160 ;
return 160 ;
case 130 : /* center freqs 42, 58, 106, 122, 138, 155 ; 80+80 MHz */
case 130 : /* center freqs 42, 58, 106, 122, 138, 155 , 171 ; 80+80 MHz */
return 80 ;
return 80 ;
case 131 : /* UHB channels, 20 MHz: 1, 5, 9.. */
case 131 : /* UHB channels, 20 MHz: 1, 5, 9.. */
return 20 ;
return 20 ;
@ -2554,16 +2554,16 @@ int op_class_to_ch_width(u8 op_class)
case 123 : /* channels 104-136; 40 MHz */
case 123 : /* channels 104-136; 40 MHz */
return CHANWIDTH_USE_HT ;
return CHANWIDTH_USE_HT ;
case 124 : /* channels 149,153,157,161 */
case 124 : /* channels 149,153,157,161 */
case 125 : /* channels 149,153,157,161,165,169 */
case 125 : /* channels 149,153,157,161,165,169 ,171 */
return CHANWIDTH_USE_HT ;
return CHANWIDTH_USE_HT ;
case 126 : /* channels 149,157 ; 40 MHz */
case 126 : /* channels 149,157 ,165, 173 ; 40 MHz */
case 127 : /* channels 153,161 ; 40 MHz */
case 127 : /* channels 153,161 ,169,177 ; 40 MHz */
return CHANWIDTH_USE_HT ;
return CHANWIDTH_USE_HT ;
case 128 : /* center freqs 42, 58, 106, 122, 138, 155 ; 80 MHz */
case 128 : /* center freqs 42, 58, 106, 122, 138, 155 , 171 ; 80 MHz */
return CHANWIDTH_80MHZ ;
return CHANWIDTH_80MHZ ;
case 129 : /* center freqs 50, 114 ; 160 MHz */
case 129 : /* center freqs 50, 114 , 163 ; 160 MHz */
return CHANWIDTH_160MHZ ;
return CHANWIDTH_160MHZ ;
case 130 : /* center freqs 42, 58, 106, 122, 138, 155 ; 80+80 MHz */
case 130 : /* center freqs 42, 58, 106, 122, 138, 155 , 171 ; 80+80 MHz */
return CHANWIDTH_80P80MHZ ;
return CHANWIDTH_80P80MHZ ;
case 131 : /* UHB channels, 20 MHz: 1, 5, 9.. */
case 131 : /* UHB channels, 20 MHz: 1, 5, 9.. */
return CHANWIDTH_USE_HT ;
return CHANWIDTH_USE_HT ;