projects
/
mech_eap.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Remove disconnected APs from BSS table if likely out-of-range
[mech_eap.git]
/
wpa_supplicant
/
mesh.c
diff --git
a/wpa_supplicant/mesh.c
b/wpa_supplicant/mesh.c
index
bf9beb2
..
d67d3b2
100644
(file)
--- a/
wpa_supplicant/mesh.c
+++ b/
wpa_supplicant/mesh.c
@@
-178,6
+178,7
@@
static int wpa_supplicant_mesh_init(struct wpa_supplicant *wpa_s,
ifmsh->bss[0] = bss = os_zalloc(sizeof(struct hostapd_data));
if (!bss)
goto out_free;
ifmsh->bss[0] = bss = os_zalloc(sizeof(struct hostapd_data));
if (!bss)
goto out_free;
+ dl_list_init(&bss->nr_db);
os_memcpy(bss->own_addr, wpa_s->own_addr, ETH_ALEN);
bss->driver = wpa_s->driver;
os_memcpy(bss->own_addr, wpa_s->own_addr, ETH_ALEN);
bss->driver = wpa_s->driver;
@@
-400,7
+401,11
@@
int wpa_supplicant_join_mesh(struct wpa_supplicant *wpa_s,
params.beacon_int = ssid->beacon_int;
else if (wpa_s->conf->beacon_int > 0)
params.beacon_int = wpa_s->conf->beacon_int;
params.beacon_int = ssid->beacon_int;
else if (wpa_s->conf->beacon_int > 0)
params.beacon_int = wpa_s->conf->beacon_int;
- params.max_peer_links = wpa_s->conf->max_peer_links;
+ if (ssid->dtim_period > 0)
+ params.dtim_period = ssid->dtim_period;
+ else if (wpa_s->conf->dtim_period > 0)
+ params.dtim_period = wpa_s->conf->dtim_period;
+ params.conf.max_peer_links = wpa_s->conf->max_peer_links;
if (ssid->key_mgmt & WPA_KEY_MGMT_SAE) {
params.flags |= WPA_DRIVER_MESH_FLAG_SAE_AUTH;
if (ssid->key_mgmt & WPA_KEY_MGMT_SAE) {
params.flags |= WPA_DRIVER_MESH_FLAG_SAE_AUTH;
@@
-410,10
+415,10
@@
int wpa_supplicant_join_mesh(struct wpa_supplicant *wpa_s,
if (wpa_s->conf->user_mpm) {
params.flags |= WPA_DRIVER_MESH_FLAG_USER_MPM;
if (wpa_s->conf->user_mpm) {
params.flags |= WPA_DRIVER_MESH_FLAG_USER_MPM;
- params.conf.
flags &= ~WPA_DRIVER_MESH_CONF_FLAG_AUTO_PLINKS
;
+ params.conf.
auto_plinks = 0
;
} else {
params.flags |= WPA_DRIVER_MESH_FLAG_DRIVER_MPM;
} else {
params.flags |= WPA_DRIVER_MESH_FLAG_DRIVER_MPM;
- params.conf.
flags |= WPA_DRIVER_MESH_CONF_FLAG_AUTO_PLINKS
;
+ params.conf.
auto_plinks = 1
;
}
params.conf.peer_link_timeout = wpa_s->conf->mesh_max_inactivity;
}
params.conf.peer_link_timeout = wpa_s->conf->mesh_max_inactivity;
@@
-434,6
+439,8
@@
int wpa_supplicant_join_mesh(struct wpa_supplicant *wpa_s,
params.ies = wpa_s->ifmsh->mconf->rsn_ie;
params.ie_len = wpa_s->ifmsh->mconf->rsn_ie_len;
params.basic_rates = wpa_s->ifmsh->basic_rates;
params.ies = wpa_s->ifmsh->mconf->rsn_ie;
params.ie_len = wpa_s->ifmsh->mconf->rsn_ie_len;
params.basic_rates = wpa_s->ifmsh->basic_rates;
+ params.conf.flags |= WPA_DRIVER_MESH_CONF_FLAG_HT_OP_MODE;
+ params.conf.ht_opmode = wpa_s->ifmsh->bss[0]->iface->ht_op_mode;
}
wpa_msg(wpa_s, MSG_INFO, "joining mesh %s",
}
wpa_msg(wpa_s, MSG_INFO, "joining mesh %s",
@@
-445,6
+452,9
@@
int wpa_supplicant_join_mesh(struct wpa_supplicant *wpa_s,
/* hostapd sets the interface down until we associate */
wpa_drv_set_operstate(wpa_s, 1);
/* hostapd sets the interface down until we associate */
wpa_drv_set_operstate(wpa_s, 1);
+ if (!ret)
+ wpa_supplicant_set_state(wpa_s, WPA_COMPLETED);
+
out:
return ret;
}
out:
return ret;
}