mesh: Join an existing MBSS instead of creating a new one
If scan results show a matching existing MBSS, join it instead of creating a new MBSS. Signed-off-by: Masashi Honma <masashi.honma@gmail.com>
This commit is contained in:
parent
58fe015a32
commit
7035162311
1 changed files with 12 additions and 9 deletions
|
@ -1014,8 +1014,10 @@ struct wpa_ssid * wpa_scan_res_match(struct wpa_supplicant *wpa_s,
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!bss_is_ess(bss) && !bss_is_pbss(bss)) {
|
if (ssid->mode != IEEE80211_MODE_MESH && !bss_is_ess(bss) &&
|
||||||
wpa_dbg(wpa_s, MSG_DEBUG, " skip - neither ESS nor PBSS network");
|
!bss_is_pbss(bss)) {
|
||||||
|
wpa_dbg(wpa_s, MSG_DEBUG,
|
||||||
|
" skip - not ESS, PBSS, or MBSS");
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1624,6 +1626,14 @@ static int wpas_select_network_from_last_scan(struct wpa_supplicant *wpa_s,
|
||||||
|
|
||||||
selected = wpa_supplicant_pick_network(wpa_s, &ssid);
|
selected = wpa_supplicant_pick_network(wpa_s, &ssid);
|
||||||
|
|
||||||
|
#ifdef CONFIG_MESH
|
||||||
|
if (wpa_s->ifmsh) {
|
||||||
|
wpa_msg(wpa_s, MSG_INFO,
|
||||||
|
"Avoiding join because we already joined a mesh group");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif /* CONFIG_MESH */
|
||||||
|
|
||||||
if (selected) {
|
if (selected) {
|
||||||
int skip;
|
int skip;
|
||||||
skip = !wpa_supplicant_need_to_roam(wpa_s, selected, ssid);
|
skip = !wpa_supplicant_need_to_roam(wpa_s, selected, ssid);
|
||||||
|
@ -1652,13 +1662,6 @@ static int wpas_select_network_from_last_scan(struct wpa_supplicant *wpa_s,
|
||||||
*/
|
*/
|
||||||
return 1;
|
return 1;
|
||||||
} else {
|
} else {
|
||||||
#ifdef CONFIG_MESH
|
|
||||||
if (wpa_s->ifmsh) {
|
|
||||||
wpa_msg(wpa_s, MSG_INFO,
|
|
||||||
"Avoiding join because we already joined a mesh group");
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
#endif /* CONFIG_MESH */
|
|
||||||
wpa_dbg(wpa_s, MSG_DEBUG, "No suitable network found");
|
wpa_dbg(wpa_s, MSG_DEBUG, "No suitable network found");
|
||||||
ssid = wpa_supplicant_pick_new_network(wpa_s);
|
ssid = wpa_supplicant_pick_new_network(wpa_s);
|
||||||
if (ssid) {
|
if (ssid) {
|
||||||
|
|
Loading…
Reference in a new issue