Force OFDM/HT/VHT to be disabled on channel 14
authorJouni Malinen <jouni@qca.qualcomm.com>
Tue, 25 Feb 2014 11:52:26 +0000 (13:52 +0200)
committerJouni Malinen <j@w1.fi>
Tue, 25 Feb 2014 11:55:10 +0000 (13:55 +0200)
The regulatory rules in Japan do not allow OFDM to be used on channel
14. While this was to some extend assumed to be enforced by drivers
(many of which apparently don't), it is safer to make hostapd enforce
this by disabling any OFDM-related functionality. This tries to avoid
backwards compatibility issues by downgrading the mode rather than
rejecting the invalid configuration.

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
src/ap/hw_features.c

index 4e66379..7d36790 100644 (file)
@@ -943,6 +943,15 @@ int hostapd_select_hw_mode(struct hostapd_iface *iface)
        if (iface->num_hw_features < 1)
                return -1;
 
+       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->current_mode = NULL;
        for (i = 0; i < iface->num_hw_features; i++) {
                struct hostapd_hw_modes *mode = &iface->hw_features[i];