[PATCH 2/2] wifi: stop doing periodic scanning when supplicant bgscan is used
- From: Stanislaw Gruszka <sgruszka redhat com>
- To: networkmanager-list gnome org
- Subject: [PATCH 2/2] wifi: stop doing periodic scanning when supplicant bgscan is used
- Date: Thu, 8 Aug 2013 13:20:02 +0200
NM schedule scan on intervals between 20 and 120 seconds. Don't do this
when wpa_supplicant background scanning is used.
---
src/devices/nm-device-wifi.c | 14 ++++++++++++--
src/supplicant-manager/nm-supplicant-config.c | 5 ++++-
src/supplicant-manager/nm-supplicant-config.h | 3 ++-
src/supplicant-manager/tests/test-supplicant-config.c | 8 ++++++--
4 files changed, 24 insertions(+), 6 deletions(-)
diff --git a/src/devices/nm-device-wifi.c b/src/devices/nm-device-wifi.c
index 2935e27..d92a75b 100644
--- a/src/devices/nm-device-wifi.c
+++ b/src/devices/nm-device-wifi.c
@@ -146,6 +146,7 @@ struct _NMDeviceWifiPrivate {
Supplicant supplicant;
WifiData * wifi_data;
gboolean ssid_found;
+ gboolean bgscan_enabled;
NM80211Mode mode;
guint32 failed_link_count;
@@ -1739,8 +1740,14 @@ schedule_scan (NMDeviceWifi *self, gboolean backoff)
guint factor = 2, next_scan = priv->scan_interval;
if ( nm_device_is_activating (NM_DEVICE (self))
- || (nm_device_get_state (NM_DEVICE (self)) == NM_DEVICE_STATE_ACTIVATED))
+ || (nm_device_get_state (NM_DEVICE (self)) == NM_DEVICE_STATE_ACTIVATED)) {
factor = 1;
+ if (priv->bgscan_enabled) {
+ nm_log_dbg (LOGD_WIFI_SCAN, "(%s): do not schedule scan as scanning in
background is enabled",
+ nm_device_get_iface (NM_DEVICE (self)));
+ return;
+ }
+ }
priv->pending_scan_id = g_timeout_add_seconds (next_scan,
request_wireless_scan,
@@ -2742,6 +2749,8 @@ build_supplicant_config (NMDeviceWifi *self,
goto error;
}
+ priv->bgscan_enabled = FALSE;
+
s_wireless_sec = nm_connection_get_setting_wireless_security (connection);
if (s_wireless_sec) {
NMSetting8021x *s_8021x;
@@ -2752,7 +2761,8 @@ build_supplicant_config (NMDeviceWifi *self,
if (!nm_supplicant_config_add_setting_wireless_security (config,
s_wireless_sec,
s_8021x,
- con_uuid)) {
+ con_uuid,
+ &priv->bgscan_enabled)) {
nm_log_err (LOGD_WIFI, "Couldn't add 802-11-wireless-security setting to "
"supplicant config.");
goto error;
diff --git a/src/supplicant-manager/nm-supplicant-config.c b/src/supplicant-manager/nm-supplicant-config.c
index 446dc21..6305f1b 100644
--- a/src/supplicant-manager/nm-supplicant-config.c
+++ b/src/supplicant-manager/nm-supplicant-config.c
@@ -573,7 +573,8 @@ gboolean
nm_supplicant_config_add_setting_wireless_security (NMSupplicantConfig *self,
NMSettingWirelessSecurity *setting,
NMSetting8021x *setting_8021x,
- const char *con_uuid)
+ const char *con_uuid,
+ gboolean *bgscan)
{
char *value;
gboolean success;
@@ -692,6 +693,8 @@ nm_supplicant_config_add_setting_wireless_security (NMSupplicantConfig *self,
*/
if (!nm_supplicant_config_add_option (self, "bgscan", "simple:30:-65:300", -1, FALSE))
nm_log_warn (LOGD_SUPPLICANT, "Error enabling background scanning for ESS
roaming");
+ else
+ *bgscan = TRUE;
/* When using WPA-Enterprise, we want to use Proactive Key Caching (also
* called Opportunistic Key Caching) to avoid full EAP exchanges when
diff --git a/src/supplicant-manager/nm-supplicant-config.h b/src/supplicant-manager/nm-supplicant-config.h
index a8d3047..19a6dc1 100644
--- a/src/supplicant-manager/nm-supplicant-config.h
+++ b/src/supplicant-manager/nm-supplicant-config.h
@@ -72,7 +72,8 @@ gboolean nm_supplicant_config_add_setting_wireless (NMSupplicantConfig *self,
gboolean nm_supplicant_config_add_setting_wireless_security (NMSupplicantConfig *self,
NMSettingWirelessSecurity *setting,
NMSetting8021x *setting_8021x,
- const char *con_uuid);
+ const char *con_uuid,
+ gboolean *bgscan);
gboolean nm_supplicant_config_add_no_security (NMSupplicantConfig *self);
diff --git a/src/supplicant-manager/tests/test-supplicant-config.c
b/src/supplicant-manager/tests/test-supplicant-config.c
index 5c6795c..3990043 100644
--- a/src/supplicant-manager/tests/test-supplicant-config.c
+++ b/src/supplicant-manager/tests/test-supplicant-config.c
@@ -215,6 +215,7 @@ test_wifi_wep_key (const char *detail,
GByteArray *bssid;
const unsigned char bssid_data[] = { 0x11, 0x22, 0x33, 0x44, 0x55, 0x66 };
const char *bssid_str = "11:22:33:44:55:66";
+ gboolean dummy;
connection = nm_connection_new ();
@@ -280,7 +281,8 @@ test_wifi_wep_key (const char *detail,
success = nm_supplicant_config_add_setting_wireless_security (config,
s_wsec,
NULL,
- "376aced7-b28c-46be-9a62-fcdf072571da");
+ "376aced7-b28c-46be-9a62-fcdf072571da",
+ &dummy);
ASSERT (success == TRUE,
detail, "failed to add wireless security to supplicant config.");
@@ -343,6 +345,7 @@ test_wifi_wpa_psk (const char *detail,
GByteArray *bssid;
const unsigned char bssid_data[] = { 0x11, 0x22, 0x33, 0x44, 0x55, 0x66 };
const char *bssid_str = "11:22:33:44:55:66";
+ gboolean dummy;
connection = nm_connection_new ();
@@ -414,7 +417,8 @@ test_wifi_wpa_psk (const char *detail,
success = nm_supplicant_config_add_setting_wireless_security (config,
s_wsec,
NULL,
- "376aced7-b28c-46be-9a62-fcdf072571da");
+ "376aced7-b28c-46be-9a62-fcdf072571da",
+ &dummy);
ASSERT (success == TRUE,
detail, "failed to add wireless security to supplicant config.");
--
1.8.1.4
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]