]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
WPS: Allow RF Bands value to be overridden
authorBharat Chakravarty <bchakrav@qca.qualcomm.com>
Wed, 30 Nov 2011 15:44:43 +0000 (17:44 +0200)
committerJouni Malinen <j@w1.fi>
Wed, 30 Nov 2011 15:44:43 +0000 (17:44 +0200)
A new hostapd.conf parameter, wps_rf_bands, can now be used to fix the
RF Bands value in cases where hw_mode is not set or when operating a
dual band dual concurrent AP.

Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>

hostapd/config_file.c
hostapd/hostapd.conf
src/ap/ap_config.h
src/ap/wps_hostapd.c

index 107d37ab8cdae7fb84559547a43fb2eb13b8802d..5eb7b499234fbd21a08ea8dfc9ad72d84b3b17cb 100644 (file)
@@ -1768,6 +1768,21 @@ struct hostapd_config * hostapd_config_read(const char *fname)
                                           "hw_mode '%s'", line, pos);
                                errors++;
                        }
+               } else if (os_strcmp(buf, "wps_rf_bands") == 0) {
+                       if (os_strcmp(pos, "a") == 0)
+                               bss->wps_rf_bands = WPS_RF_50GHZ;
+                       else if (os_strcmp(pos, "g") == 0 ||
+                                os_strcmp(pos, "b") == 0)
+                               bss->wps_rf_bands = WPS_RF_24GHZ;
+                       else if (os_strcmp(pos, "ag") == 0 ||
+                                os_strcmp(pos, "ga") == 0)
+                               bss->wps_rf_bands =
+                                       WPS_RF_24GHZ | WPS_RF_50GHZ;
+                       else {
+                               wpa_printf(MSG_ERROR, "Line %d: unknown "
+                                          "wps_rf_band '%s'", line, pos);
+                               errors++;
+                       }
                } else if (os_strcmp(buf, "channel") == 0) {
                        conf->channel = atoi(pos);
                } else if (os_strcmp(buf, "beacon_int") == 0) {
index 7571f4586546565b14fb47f239dc2f6d84fbb9b3..2a545180d9886605724c0643ba94995ca6fa7a29 100644 (file)
@@ -1011,6 +1011,12 @@ own_ip_addr=127.0.0.1
 # 12-digit, all-numeric code that identifies the consumer package.
 #upc=123456789012
 
+# WPS RF Bands (a = 5G, b = 2.4G, g = 2.4G, ag = dual band)
+# This value should be set according to RF band(s) supported by the AP if
+# hw_mode is not set. For dual band dual concurrent devices, this needs to be
+# set to ag to allow both RF bands to be advertized.
+#wps_rf_bands=ag
+
 ##### Wi-Fi Direct (P2P) ######################################################
 
 # Enable P2P Device management
index 32c829298b84c3e94cfb9cc8ae2ac336269f5d9f..2b201df7e1cd53ac79c8cd456366a54cff4cfb35 100644 (file)
@@ -360,6 +360,8 @@ struct hostapd_bss_config {
        /* IEEE 802.11u - Roaming Consortium list */
        unsigned int roaming_consortium_count;
        struct hostapd_roaming_consortium *roaming_consortium;
+
+       u8 wps_rf_bands; /* RF bands for WPS (WPS_RF_*) */
 };
 
 
index 87bbd3763c52f1f6026b03b81b9a6e250fb835a6..60961fd0b172982b42f0f271054bb2d19041fb4e 100644 (file)
@@ -800,8 +800,14 @@ int hostapd_init_wps(struct hostapd_data *hapd,
        }
 
        wps->dev.os_version = WPA_GET_BE32(hapd->conf->os_version);
-       wps->dev.rf_bands = hapd->iconf->hw_mode == HOSTAPD_MODE_IEEE80211A ?
-               WPS_RF_50GHZ : WPS_RF_24GHZ; /* FIX: dualband AP */
+
+       if (conf->wps_rf_bands) {
+               wps->dev.rf_bands = conf->wps_rf_bands;
+       } else {
+               wps->dev.rf_bands =
+                       hapd->iconf->hw_mode == HOSTAPD_MODE_IEEE80211A ?
+                       WPS_RF_50GHZ : WPS_RF_24GHZ; /* FIX: dualband AP */
+       }
 
        if (conf->wpa & WPA_PROTO_RSN) {
                if (conf->wpa_key_mgmt & WPA_KEY_MGMT_PSK)