From cb2892ff3cd508460ee9a0eccf1b7658bc9c6da0 Mon Sep 17 00:00:00 2001 From: Grazvydas Ignotas Date: Sat, 5 Jul 2014 23:12:38 +0300 Subject: [PATCH] networkmanager: patch out scanning while associated behavior --- .../no_scan_while_associated.patch | 60 +++++++++++++++++++ .../networkmanager/networkmanager_0.8.1.bb | 3 +- 2 files changed, 62 insertions(+), 1 deletion(-) create mode 100644 recipes/networkmanager/networkmanager-0.8.1/no_scan_while_associated.patch diff --git a/recipes/networkmanager/networkmanager-0.8.1/no_scan_while_associated.patch b/recipes/networkmanager/networkmanager-0.8.1/no_scan_while_associated.patch new file mode 100644 index 0000000000..37f0512d8c --- /dev/null +++ b/recipes/networkmanager/networkmanager-0.8.1/no_scan_while_associated.patch @@ -0,0 +1,60 @@ +diff -ur /tmp/NetworkManager-0.8.1.orig/src/main.c NetworkManager-0.8.1/src/main.c +--- /tmp/NetworkManager-0.8.1.orig/src/main.c 2014-07-05 20:37:39.690690118 +0300 ++++ NetworkManager-0.8.1/src/main.c 2014-07-05 22:39:14.250961545 +0300 +@@ -299,6 +299,8 @@ + return nm_running; + } + ++gboolean g_pandora_hacks; ++ + static gboolean + parse_config_file (const char *filename, + char **plugins, +@@ -329,6 +331,12 @@ + *log_level = g_key_file_get_value (config, "logging", "level", NULL); + *log_domains = g_key_file_get_value (config, "logging", "domains", NULL); + ++ g_pandora_hacks = g_key_file_get_boolean (config, "main", "pandora_hacks", error); ++ if (*error) { ++ g_pandora_hacks = TRUE; ++ g_clear_error (error); ++ } ++ + g_key_file_free (config); + return TRUE; + } +diff -ur /tmp/NetworkManager-0.8.1.orig/src/nm-device-wifi.c NetworkManager-0.8.1/src/nm-device-wifi.c +--- /tmp/NetworkManager-0.8.1.orig/src/nm-device-wifi.c 2014-07-05 20:37:39.690690118 +0300 ++++ NetworkManager-0.8.1/src/nm-device-wifi.c 2014-07-05 22:37:53.966958511 +0300 +@@ -1847,8 +1847,30 @@ + NMDeviceWifi *self = NM_DEVICE_WIFI (user_data); + NMDeviceWifiPrivate *priv = NM_DEVICE_WIFI_GET_PRIVATE (self); + gboolean backoff = FALSE; ++ extern gboolean g_pandora_hacks; ++ NMDeviceState nmstate; ++ gboolean allow = TRUE; + +- if (check_scanning_allowed (self)) { ++ if (priv->scan_interval == 0) ++ priv->scan_interval = 3; ++ ++ nmstate = nm_device_get_state (NM_DEVICE (self)); ++ if (g_pandora_hacks) { ++ switch (nmstate) { ++ case NM_DEVICE_STATE_PREPARE: ++ case NM_DEVICE_STATE_CONFIG: ++ case NM_DEVICE_STATE_NEED_AUTH: ++ case NM_DEVICE_STATE_IP_CONFIG: ++ case NM_DEVICE_STATE_ACTIVATED: ++ allow = FALSE; ++ break; ++ } ++ } ++ ++ nm_log_info (LOGD_WIFI, "(%s): scan request, allow=%d, nmstate=%d, interval=%u", ++ nm_device_get_iface (NM_DEVICE (self)), allow, nmstate, priv->scan_interval); ++ ++ if (check_scanning_allowed (self) && allow) { + nm_log_dbg (LOGD_WIFI_SCAN, "(%s): scanning requested", + nm_device_get_iface (NM_DEVICE (self))); + diff --git a/recipes/networkmanager/networkmanager_0.8.1.bb b/recipes/networkmanager/networkmanager_0.8.1.bb index 6af873b3ed..922017b3d2 100644 --- a/recipes/networkmanager/networkmanager_0.8.1.bb +++ b/recipes/networkmanager/networkmanager_0.8.1.bb @@ -1,6 +1,6 @@ require networkmanager-0.7.inc -PR = "r3" +PR = "r4" #DEFAULT_PREFERENCE = "-1" @@ -11,6 +11,7 @@ SRC_URI += " \ file://NetworkManager \ file://gtk-doc.make \ file://nm_dhclient_v3.patch;patch=1 \ + file://no_scan_while_associated.patch;patch=1 \ " SRC_URI[md5sum] = "96e551149dda8f6e0a5621f77468ba79" -- 2.39.5