mesh: Make beacon interval configurable
authorMasashi Honma <masashi.honma@gmail.com>
Tue, 16 Dec 2014 09:52:25 +0000 (18:52 +0900)
committerJouni Malinen <j@w1.fi>
Sun, 21 Dec 2014 21:38:20 +0000 (23:38 +0200)
Signed-off-by: Masashi Honma <masashi.honma@gmail.com>
src/drivers/driver.h
src/drivers/driver_nl80211.c
wpa_supplicant/mesh.c

index f94f57a..4fcc648 100644 (file)
@@ -952,6 +952,7 @@ struct wpa_driver_mesh_join_params {
        const u8 *ies;
        int ie_len;
        int freq;
+       int beacon_int;
        enum ht_mode ht_mode;
        struct wpa_driver_mesh_bss_params conf;
 #define WPA_DRIVER_MESH_FLAG_USER_MPM  0x00000001
index c04286c..f7ab6fc 100644 (file)
@@ -7761,6 +7761,13 @@ wpa_driver_nl80211_join_mesh(void *priv,
                        goto fail;
        }
 
+       if (params->beacon_int > 0) {
+               wpa_printf(MSG_DEBUG, "  * beacon_int=%d", params->beacon_int);
+               if (nla_put_u32(msg, NL80211_ATTR_BEACON_INTERVAL,
+                               params->beacon_int))
+                       goto fail;
+       }
+
        wpa_printf(MSG_DEBUG, "  * flags=%08X", params->flags);
 
        container = nla_nest_start(msg, NL80211_ATTR_MESH_SETUP);
index 68187e0..7adfa63 100644 (file)
@@ -319,6 +319,10 @@ int wpa_supplicant_join_mesh(struct wpa_supplicant *wpa_s,
        params.meshid = ssid->ssid;
        params.meshid_len = ssid->ssid_len;
        params.freq = ssid->frequency;
+       if (ssid->beacon_int > 0)
+               params.beacon_int = ssid->beacon_int;
+       else if (wpa_s->conf->beacon_int > 0)
+               params.beacon_int = wpa_s->conf->beacon_int;
 #ifdef CONFIG_IEEE80211N
        params.ht_mode = ssid->mesh_ht_mode;
 #endif /* CONFIG_IEEE80211N */