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. https://gitlab.freedesktop.org/NetworkManager/NetworkManager/merge_requests/279 https://gitlab.freedesktop.org/NetworkManager/NetworkManager/issues/248
This commit is contained in:

committed by
Lubomir Rintel

parent
18f890d491
commit
0f3203338c
@@ -561,6 +561,7 @@ nm_supplicant_config_add_bgscan (NMSupplicantConfig *self,
|
|||||||
NMSettingWireless *s_wifi;
|
NMSettingWireless *s_wifi;
|
||||||
NMSettingWirelessSecurity *s_wsec;
|
NMSettingWirelessSecurity *s_wsec;
|
||||||
const char *bgscan;
|
const char *bgscan;
|
||||||
|
gsize num_seen_bssids;
|
||||||
|
|
||||||
s_wifi = nm_connection_get_setting_wireless (connection);
|
s_wifi = nm_connection_get_setting_wireless (connection);
|
||||||
g_assert (s_wifi);
|
g_assert (s_wifi);
|
||||||
@@ -587,14 +588,16 @@ nm_supplicant_config_add_bgscan (NMSupplicantConfig *self,
|
|||||||
*/
|
*/
|
||||||
bgscan = "simple:30:-70:86400";
|
bgscan = "simple:30:-70:86400";
|
||||||
|
|
||||||
/* If using WPA Enterprise or Dynamic WEP use a shorter bgscan interval on
|
/* If using WPA Enterprise, Dynamic WEP or we have seen more than one AP use
|
||||||
* the assumption that this is a multi-AP ESS in which we want more reliable
|
* a shorter bgscan interval on the assumption that this is a multi-AP ESS
|
||||||
* roaming between APs. Thus trigger scans when the signal is still somewhat
|
* in which we want more reliable roaming between APs. Thus trigger scans
|
||||||
* OK so we have an up-to-date roam candidate list when the signal gets bad.
|
* 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);
|
s_wsec = nm_connection_get_setting_wireless_security (connection);
|
||||||
if (s_wsec) {
|
if (num_seen_bssids > 1 || s_wsec) {
|
||||||
if (NM_IN_STRSET (nm_setting_wireless_security_get_key_mgmt (s_wsec),
|
if (num_seen_bssids > 1 || NM_IN_STRSET (nm_setting_wireless_security_get_key_mgmt (s_wsec),
|
||||||
"ieee8021x",
|
"ieee8021x",
|
||||||
"wpa-eap"))
|
"wpa-eap"))
|
||||||
bgscan = "simple:30:-65:300";
|
bgscan = "simple:30:-65:300";
|
||||||
|
Reference in New Issue
Block a user