diff -pur a/src/ap/hw_features.c b/src/ap/hw_features.c --- a/src/ap/hw_features.c 2017-01-27 00:09:12.314728000 +0100 +++ b/src/ap/hw_features.c 2017-01-27 02:56:05.813277300 +0100 @@ -911,10 +911,7 @@ int hostapd_select_hw_mode(struct hostap if ((iface->conf->hw_mode == HOSTAPD_MODE_IEEE80211G || iface->conf->ieee80211n || iface->conf->ieee80211ac) && iface->conf->channel == 14) { - wpa_printf(MSG_INFO, "Disable OFDM/HT/VHT on channel 14"); - iface->conf->hw_mode = HOSTAPD_MODE_IEEE80211B; - iface->conf->ieee80211n = 0; - iface->conf->ieee80211ac = 0; + iface->conf->hw_mode = HOSTAPD_MODE_IEEE80211G; } iface->current_mode = NULL; diff -pur a/src/common/ieee802_11_common.c b/src/common/ieee802_11_common.c --- a/src/common/ieee802_11_common.c 2017-01-27 02:01:29.732186000 +0100 +++ b/src/common/ieee802_11_common.c 2017-01-27 02:59:54.902397265 +0100 @@ -629,13 +629,498 @@ enum hostapd_hw_mode ieee80211_freq_to_c return HOSTAPD_MODE_IEEE80211G; } - if (freq == 2484) { - if (sec_channel || vht) - return NUM_HOSTAPD_MODES; + if (freq == 2192) { + if (sec_channel == 1) + *op_class = 83; + else if (sec_channel == -1) + *op_class = 84; + else + *op_class = 81; + *channel = 213; + return HOSTAPD_MODE_IEEE80211G; + } - *op_class = 82; /* channel 14 */ - *channel = 14; + if (freq == 2197) { + if (sec_channel == 1) + *op_class = 83; + else if (sec_channel == -1) + *op_class = 84; + else + *op_class = 81; + *channel = 214; + return HOSTAPD_MODE_IEEE80211G; + } + + if (freq == 2202) { + if (sec_channel == 1) + *op_class = 83; + else if (sec_channel == -1) + *op_class = 84; + else + *op_class = 81; + *channel = 215; + return HOSTAPD_MODE_IEEE80211G; + } + + if (freq == 2207) { + if (sec_channel == 1) + *op_class = 83; + else if (sec_channel == -1) + *op_class = 84; + else + *op_class = 81; + *channel = 216; + return HOSTAPD_MODE_IEEE80211G; + } + + if (freq == 2212) { + if (sec_channel == 1) + *op_class = 83; + else if (sec_channel == -1) + *op_class = 84; + else + *op_class = 81; + *channel = 217; + return HOSTAPD_MODE_IEEE80211G; + } + + if (freq == 2217) { + if (sec_channel == 1) + *op_class = 83; + else if (sec_channel == -1) + *op_class = 84; + else + *op_class = 81; + *channel = 218; + return HOSTAPD_MODE_IEEE80211G; + } + + if (freq == 2222) { + if (sec_channel == 1) + *op_class = 83; + else if (sec_channel == -1) + *op_class = 84; + else + *op_class = 81; + *channel = 219; + return HOSTAPD_MODE_IEEE80211G; + } + + if (freq == 2227) { + if (sec_channel == 1) + *op_class = 83; + else if (sec_channel == -1) + *op_class = 84; + else + *op_class = 81; + *channel = 220; + return HOSTAPD_MODE_IEEE80211G; + } + + if (freq == 2232) { + if (sec_channel == 1) + *op_class = 83; + else if (sec_channel == -1) + *op_class = 84; + else + *op_class = 81; + *channel = 221; + return HOSTAPD_MODE_IEEE80211G; + } + + if (freq == 2237) { + if (sec_channel == 1) + *op_class = 83; + else if (sec_channel == -1) + *op_class = 84; + else + *op_class = 81; + *channel = 222; + return HOSTAPD_MODE_IEEE80211G; + } + + if (freq == 2242) { + if (sec_channel == 1) + *op_class = 83; + else if (sec_channel == -1) + *op_class = 84; + else + *op_class = 81; + *channel = 223; + return HOSTAPD_MODE_IEEE80211G; + } + + if (freq == 2247) { + if (sec_channel == 1) + *op_class = 83; + else if (sec_channel == -1) + *op_class = 84; + else + *op_class = 81; + *channel = 224; + return HOSTAPD_MODE_IEEE80211G; + } + + if (freq == 2252) { + if (sec_channel == 1) + *op_class = 83; + else if (sec_channel == -1) + *op_class = 84; + else + *op_class = 81; + *channel = 225; + return HOSTAPD_MODE_IEEE80211G; + } + + if (freq == 2257) { + if (sec_channel == 1) + *op_class = 83; + else if (sec_channel == -1) + *op_class = 84; + else + *op_class = 81; + *channel = 226; + return HOSTAPD_MODE_IEEE80211G; + } + + if (freq == 2262) { + if (sec_channel == 1) + *op_class = 83; + else if (sec_channel == -1) + *op_class = 84; + else + *op_class = 81; + *channel = 227; + return HOSTAPD_MODE_IEEE80211G; + } + + if (freq == 2267) { + if (sec_channel == 1) + *op_class = 83; + else if (sec_channel == -1) + *op_class = 84; + else + *op_class = 81; + *channel = 228; + return HOSTAPD_MODE_IEEE80211G; + } + + if (freq == 2272) { + if (sec_channel == 1) + *op_class = 83; + else if (sec_channel == -1) + *op_class = 84; + else + *op_class = 81; + *channel = 229; + return HOSTAPD_MODE_IEEE80211G; + } + + if (freq == 2277) { + if (sec_channel == 1) + *op_class = 83; + else if (sec_channel == -1) + *op_class = 84; + else + *op_class = 81; + *channel = 230; + return HOSTAPD_MODE_IEEE80211G; + } + + if (freq == 2282) { + if (sec_channel == 1) + *op_class = 83; + else if (sec_channel == -1) + *op_class = 84; + else + *op_class = 81; + *channel = 231; + return HOSTAPD_MODE_IEEE80211G; + } + + if (freq == 2287) { + if (sec_channel == 1) + *op_class = 83; + else if (sec_channel == -1) + *op_class = 84; + else + *op_class = 81; + *channel = 232; + return HOSTAPD_MODE_IEEE80211G; + } + + if (freq == 2292) { + if (sec_channel == 1) + *op_class = 83; + else if (sec_channel == -1) + *op_class = 84; + else + *op_class = 81; + *channel = 233; + return HOSTAPD_MODE_IEEE80211G; + } + + if (freq == 2297) { + if (sec_channel == 1) + *op_class = 83; + else if (sec_channel == -1) + *op_class = 84; + else + *op_class = 81; + *channel = 234; + return HOSTAPD_MODE_IEEE80211G; + } + + if (freq == 2302) { + if (sec_channel == 1) + *op_class = 83; + else if (sec_channel == -1) + *op_class = 84; + else + *op_class = 81; + *channel = 235; + return HOSTAPD_MODE_IEEE80211G; + } + + if (freq == 2307) { + if (sec_channel == 1) + *op_class = 83; + else if (sec_channel == -1) + *op_class = 84; + else + *op_class = 81; + *channel = 236; + return HOSTAPD_MODE_IEEE80211G; + } + + if (freq == 2312) { + if (sec_channel == 1) + *op_class = 83; + else if (sec_channel == -1) + *op_class = 84; + else + *op_class = 81; + *channel = 237; + return HOSTAPD_MODE_IEEE80211G; + } + + if (freq == 2317) { + if (sec_channel == 1) + *op_class = 83; + else if (sec_channel == -1) + *op_class = 84; + else + *op_class = 81; + *channel = 238; + return HOSTAPD_MODE_IEEE80211G; + } + + if (freq == 2322) { + if (sec_channel == 1) + *op_class = 83; + else if (sec_channel == -1) + *op_class = 84; + else + *op_class = 81; + *channel = 239; + return HOSTAPD_MODE_IEEE80211G; + } + + if (freq == 2327) { + if (sec_channel == 1) + *op_class = 83; + else if (sec_channel == -1) + *op_class = 84; + else + *op_class = 81; + *channel = 240; + return HOSTAPD_MODE_IEEE80211G; + } + if (freq == 2332) { + if (sec_channel == 1) + *op_class = 83; + else if (sec_channel == -1) + *op_class = 84; + else + *op_class = 81; + *channel = 241; + return HOSTAPD_MODE_IEEE80211G; + } + + if (freq == 2337) { + if (sec_channel == 1) + *op_class = 83; + else if (sec_channel == -1) + *op_class = 84; + else + *op_class = 81; + *channel = 242; + return HOSTAPD_MODE_IEEE80211G; + } + + if (freq == 2342) { + if (sec_channel == 1) + *op_class = 83; + else if (sec_channel == -1) + *op_class = 84; + else + *op_class = 81; + *channel = 243; + return HOSTAPD_MODE_IEEE80211G; + } + + if (freq == 2347) { + if (sec_channel == 1) + *op_class = 83; + else if (sec_channel == -1) + *op_class = 84; + else + *op_class = 81; + *channel = 244; + return HOSTAPD_MODE_IEEE80211G; + } + + if (freq == 2352) { + if (sec_channel == 1) + *op_class = 83; + else if (sec_channel == -1) + *op_class = 84; + else + *op_class = 81; + *channel = 245; + return HOSTAPD_MODE_IEEE80211G; + } + + if (freq == 2357) { + if (sec_channel == 1) + *op_class = 83; + else if (sec_channel == -1) + *op_class = 84; + else + *op_class = 81; + *channel = 246; + return HOSTAPD_MODE_IEEE80211G; + } + + if (freq == 2362) { + if (sec_channel == 1) + *op_class = 83; + else if (sec_channel == -1) + *op_class = 84; + else + *op_class = 81; + *channel = 247; + return HOSTAPD_MODE_IEEE80211G; + } + + if (freq == 2367) { + if (sec_channel == 1) + *op_class = 83; + else if (sec_channel == -1) + *op_class = 84; + else + *op_class = 81; + *channel = 248; + return HOSTAPD_MODE_IEEE80211G; + } + + if (freq == 2372) { + if (sec_channel == 1) + *op_class = 83; + else if (sec_channel == -1) + *op_class = 84; + else + *op_class = 81; + *channel = 249; + return HOSTAPD_MODE_IEEE80211G; + } + + if (freq == 2377) { + if (sec_channel == 1) + *op_class = 83; + else if (sec_channel == -1) + *op_class = 84; + else + *op_class = 81; + *channel = 250; + return HOSTAPD_MODE_IEEE80211G; + } + + if (freq == 2382) { + if (sec_channel == 1) + *op_class = 83; + else if (sec_channel == -1) + *op_class = 84; + else + *op_class = 81; + *channel = 251; + return HOSTAPD_MODE_IEEE80211G; + } + + if (freq == 2387) { + if (sec_channel == 1) + *op_class = 83; + else if (sec_channel == -1) + *op_class = 84; + else + *op_class = 81; + *channel = 252; + return HOSTAPD_MODE_IEEE80211G; + } + + if (freq == 2392) { + if (sec_channel == 1) + *op_class = 83; + else if (sec_channel == -1) + *op_class = 84; + else + *op_class = 81; + *channel = 253; + return HOSTAPD_MODE_IEEE80211G; + } + + if (freq == 2397) { + if (sec_channel == 1) + *op_class = 83; + else if (sec_channel == -1) + *op_class = 84; + else + *op_class = 81; + *channel = 254; + return HOSTAPD_MODE_IEEE80211G; + } + + if (freq == 2402) { + if (sec_channel == 1) + *op_class = 83; + else if (sec_channel == -1) + *op_class = 84; + else + *op_class = 81; + *channel = 255; + return HOSTAPD_MODE_IEEE80211G; + } + + if (freq == 2407) { + if (sec_channel == 1) + *op_class = 83; + else if (sec_channel == -1) + *op_class = 84; + else + *op_class = 81; + *channel = 0; + return HOSTAPD_MODE_IEEE80211G; + } + + if (freq == 2484) { + if (sec_channel == 1) + *op_class = 83; + else if (sec_channel == -1) + *op_class = 84; + else + *op_class = 81; + *channel = 14; return HOSTAPD_MODE_IEEE80211G; } @@ -1188,12 +1673,12 @@ struct wpabuf * mb_ies_by_info(struct mb const struct oper_class_map global_op_class[] = { - { HOSTAPD_MODE_IEEE80211G, 81, 1, 13, 1, BW20, P2P_SUPP }, - { HOSTAPD_MODE_IEEE80211G, 82, 14, 14, 1, BW20, NO_P2P_SUPP }, + { HOSTAPD_MODE_IEEE80211G, 81, 1, 14, 1, BW20, P2P_SUPP }, + { HOSTAPD_MODE_IEEE80211G, 82, 14, 14, 1, BW20, P2P_SUPP }, /* Do not enable HT40 on 2.4 GHz for P2P use for now */ - { HOSTAPD_MODE_IEEE80211G, 83, 1, 9, 1, BW40PLUS, NO_P2P_SUPP }, - { HOSTAPD_MODE_IEEE80211G, 84, 5, 13, 1, BW40MINUS, NO_P2P_SUPP }, + { HOSTAPD_MODE_IEEE80211G, 83, 1, 14, 1, BW40PLUS, P2P_SUPP }, + { HOSTAPD_MODE_IEEE80211G, 84, 1, 14, 1, BW40MINUS, P2P_SUPP }, { HOSTAPD_MODE_IEEE80211A, 115, 36, 48, 4, BW20, P2P_SUPP }, { HOSTAPD_MODE_IEEE80211A, 116, 36, 44, 8, BW40PLUS, P2P_SUPP },