WPS: Do not update Beacon IEs before initial IE set
authorJouni Malinen <jouni@qca.qualcomm.com>
Tue, 9 Aug 2011 11:40:06 +0000 (14:40 +0300)
committerJouni Malinen <j@w1.fi>
Tue, 9 Aug 2011 11:40:06 +0000 (14:40 +0300)
This avoids a request to the driver to first start beaconing before
the WPA/RSN IE has been generated and then immediately changing the
beacon IEs once the WPA/RSN IE is ready.

src/ap/beacon.c
src/ap/hostapd.h
src/ap/wps_hostapd.c

index 49dd034..ce06d0b 100644 (file)
@@ -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
index 8d12d8b..803776c 100644 (file)
@@ -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
index fdef1fd..ff10489 100644 (file)
@@ -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);
 }