Commit 0f320333 authored by Kristian Klausen's avatar Kristian Klausen Committed by Lubomir Rintel

wifi: roam aggressively if we on a multi-AP network

A multi-AP network isn't always WPA Enterprise or Dynamic WEP.
I have seen multi-AP WPA-PSK networks, so lets try to detect them
and use a shorter bgscan interval. We can detect them by checking
if seen-bssids > 1.

!279
#248
parent 18f890d4
Pipeline #66398 canceled with stages
......@@ -561,6 +561,7 @@ nm_supplicant_config_add_bgscan (NMSupplicantConfig *self,
NMSettingWireless *s_wifi;
NMSettingWirelessSecurity *s_wsec;
const char *bgscan;
gsize num_seen_bssids;
s_wifi = nm_connection_get_setting_wireless (connection);
g_assert (s_wifi);
......@@ -587,14 +588,16 @@ nm_supplicant_config_add_bgscan (NMSupplicantConfig *self,
*/
bgscan = "simple:30:-70:86400";
/* If using WPA Enterprise or Dynamic WEP use a shorter bgscan interval on
* the assumption that this is a multi-AP ESS in which we want more reliable
* roaming between APs. Thus trigger scans when the signal is still somewhat
* OK so we have an up-to-date roam candidate list when the signal gets bad.
/* If using WPA Enterprise, Dynamic WEP or we have seen more than one AP use
* a shorter bgscan interval on the assumption that this is a multi-AP ESS
* in which we want more reliable roaming between APs. Thus trigger scans
* when the signal is still somewhat OK so we have an up-to-date roam
* candidate list when the signal gets bad.
*/
num_seen_bssids = nm_setting_wireless_get_num_seen_bssids (s_wifi);
s_wsec = nm_connection_get_setting_wireless_security (connection);
if (s_wsec) {
if (NM_IN_STRSET (nm_setting_wireless_security_get_key_mgmt (s_wsec),
if (num_seen_bssids > 1 || s_wsec) {
if (num_seen_bssids > 1 || NM_IN_STRSET (nm_setting_wireless_security_get_key_mgmt (s_wsec),
"ieee8021x",
"wpa-eap"))
bgscan = "simple:30:-65:300";
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment