From 3f9a8137f5f5e8ffe4102c7a8230d53dc0c3c7d4 Mon Sep 17 00:00:00 2001 From: Sujith Manoharan Date: Sat, 20 Jul 2013 17:20:43 +0300 Subject: [PATCH] hostapd: Add a config option to control beaconing In a AP/STA concurrent setup, if the STA interface is continually scanning, trying to connect to a network, the AP interface is basically broken since beaconing would be erratic. This option can be used in a WDS setup where one AP acts as a Client/AP-Repeater. The Repeater AP interface has to start beaconing only after the Client interface has established a WDS link with the "Root AP". Signed-hostap: Sujith Manoharan --- hostapd/config_file.c | 2 ++ hostapd/hostapd.conf | 3 +++ src/ap/ap_config.h | 1 + src/ap/hostapd.c | 3 ++- 4 files changed, 8 insertions(+), 1 deletion(-) diff --git a/hostapd/config_file.c b/hostapd/config_file.c index 8e6f35a5f..bf17abec3 100644 --- a/hostapd/config_file.c +++ b/hostapd/config_file.c @@ -1781,6 +1781,8 @@ static int hostapd_config_fill(struct hostapd_config *conf, } } else if (os_strcmp(buf, "wds_sta") == 0) { bss->wds_sta = atoi(pos); + } else if (os_strcmp(buf, "start_disabled") == 0) { + bss->start_disabled = atoi(pos); } else if (os_strcmp(buf, "ap_isolate") == 0) { bss->isolate = atoi(pos); } else if (os_strcmp(buf, "ap_max_inactivity") == 0) { diff --git a/hostapd/hostapd.conf b/hostapd/hostapd.conf index 68c406946..c46dff5d7 100644 --- a/hostapd/hostapd.conf +++ b/hostapd/hostapd.conf @@ -389,6 +389,9 @@ wmm_ac_vo_acm=0 # use a separate bridge. #wds_bridge=wds-br0 +# Start the AP with beaconing disabled by default. +#start_disabled=0 + # Client isolation can be used to prevent low-level bridging of frames between # associated stations in the BSS. By default, this bridging is allowed. #ap_isolate=1 diff --git a/src/ap/ap_config.h b/src/ap/ap_config.h index a744ba627..c9b25992c 100644 --- a/src/ap/ap_config.h +++ b/src/ap/ap_config.h @@ -243,6 +243,7 @@ struct hostapd_bss_config { int num_deny_mac; int wds_sta; int isolate; + int start_disabled; int auth_algs; /* bitfield of allowed IEEE 802.11 authentication * algorithms, WPA_AUTH_ALG_{OPEN,SHARED,LEAP} */ diff --git a/src/ap/hostapd.c b/src/ap/hostapd.c index 780b2e2ef..ac6700155 100644 --- a/src/ap/hostapd.c +++ b/src/ap/hostapd.c @@ -806,7 +806,8 @@ static int hostapd_setup_bss(struct hostapd_data *hapd, int first) return -1; } - ieee802_11_set_beacon(hapd); + if (!hapd->conf->start_disabled) + ieee802_11_set_beacon(hapd); if (hapd->wpa_auth && wpa_init_keys(hapd->wpa_auth) < 0) return -1;