aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--hostapd/config_file.c15
-rw-r--r--hostapd/hostapd.conf6
-rw-r--r--src/ap/ap_config.h2
-rw-r--r--src/ap/wps_hostapd.c10
4 files changed, 31 insertions, 2 deletions
diff --git a/hostapd/config_file.c b/hostapd/config_file.c
index 107d37a..5eb7b49 100644
--- a/hostapd/config_file.c
+++ b/hostapd/config_file.c
@@ -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) {
diff --git a/hostapd/hostapd.conf b/hostapd/hostapd.conf
index 7571f45..2a54518 100644
--- a/hostapd/hostapd.conf
+++ b/hostapd/hostapd.conf
@@ -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
diff --git a/src/ap/ap_config.h b/src/ap/ap_config.h
index 32c8292..2b201df 100644
--- a/src/ap/ap_config.h
+++ b/src/ap/ap_config.h
@@ -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_*) */
};
diff --git a/src/ap/wps_hostapd.c b/src/ap/wps_hostapd.c
index 87bbd37..60961fd 100644
--- a/src/ap/wps_hostapd.c
+++ b/src/ap/wps_hostapd.c
@@ -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)