diff --git a/src/ap/beacon.c b/src/ap/beacon.c index 49dd03459..ce06d0b5c 100644 --- a/src/ap/beacon.c +++ b/src/ap/beacon.c @@ -403,6 +403,7 @@ void ieee802_11_set_beacon(struct hostapd_data *hapd) if ((hapd->conf->p2p & (P2P_ENABLED | P2P_GROUP_OWNER)) == P2P_ENABLED) goto no_beacon; #endif /* CONFIG_P2P */ + hapd->beacon_set_done = 1; #define BEACON_HEAD_BUF_SIZE 256 #define BEACON_TAIL_BUF_SIZE 512 diff --git a/src/ap/hostapd.h b/src/ap/hostapd.h index 8d12d8ba0..803776c28 100644 --- a/src/ap/hostapd.h +++ b/src/ap/hostapd.h @@ -115,6 +115,7 @@ struct hostapd_data { struct l2_packet_data *l2; struct wps_context *wps; + int beacon_set_done; struct wpabuf *wps_beacon_ie; struct wpabuf *wps_probe_resp_ie; #ifdef CONFIG_WPS diff --git a/src/ap/wps_hostapd.c b/src/ap/wps_hostapd.c index fdef1fd40..ff1048904 100644 --- a/src/ap/wps_hostapd.c +++ b/src/ap/wps_hostapd.c @@ -141,7 +141,8 @@ static int hostapd_wps_set_ie_cb(void *ctx, struct wpabuf *beacon_ie, hapd->wps_beacon_ie = beacon_ie; wpabuf_free(hapd->wps_probe_resp_ie); hapd->wps_probe_resp_ie = probe_resp_ie; - ieee802_11_set_beacon(hapd); + if (hapd->beacon_set_done) + ieee802_11_set_beacon(hapd); return hostapd_set_ap_wps_ie(hapd); }