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 <c_manoha@qca.qualcomm.com>
This commit is contained in:
Sujith Manoharan 2013-07-20 17:20:43 +03:00 committed by Jouni Malinen
parent 182b2e535c
commit 3f9a8137f5
4 changed files with 8 additions and 1 deletions

View file

@ -1781,6 +1781,8 @@ static int hostapd_config_fill(struct hostapd_config *conf,
} }
} else if (os_strcmp(buf, "wds_sta") == 0) { } else if (os_strcmp(buf, "wds_sta") == 0) {
bss->wds_sta = atoi(pos); 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) { } else if (os_strcmp(buf, "ap_isolate") == 0) {
bss->isolate = atoi(pos); bss->isolate = atoi(pos);
} else if (os_strcmp(buf, "ap_max_inactivity") == 0) { } else if (os_strcmp(buf, "ap_max_inactivity") == 0) {

View file

@ -389,6 +389,9 @@ wmm_ac_vo_acm=0
# use a separate bridge. # use a separate bridge.
#wds_bridge=wds-br0 #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 # Client isolation can be used to prevent low-level bridging of frames between
# associated stations in the BSS. By default, this bridging is allowed. # associated stations in the BSS. By default, this bridging is allowed.
#ap_isolate=1 #ap_isolate=1

View file

@ -243,6 +243,7 @@ struct hostapd_bss_config {
int num_deny_mac; int num_deny_mac;
int wds_sta; int wds_sta;
int isolate; int isolate;
int start_disabled;
int auth_algs; /* bitfield of allowed IEEE 802.11 authentication int auth_algs; /* bitfield of allowed IEEE 802.11 authentication
* algorithms, WPA_AUTH_ALG_{OPEN,SHARED,LEAP} */ * algorithms, WPA_AUTH_ALG_{OPEN,SHARED,LEAP} */

View file

@ -806,6 +806,7 @@ static int hostapd_setup_bss(struct hostapd_data *hapd, int first)
return -1; return -1;
} }
if (!hapd->conf->start_disabled)
ieee802_11_set_beacon(hapd); ieee802_11_set_beacon(hapd);
if (hapd->wpa_auth && wpa_init_keys(hapd->wpa_auth) < 0) if (hapd->wpa_auth && wpa_init_keys(hapd->wpa_auth) < 0)