networkmanager: patch out scanning while associated behavior
authorGrazvydas Ignotas <notasas@gmail.com>
Sat, 5 Jul 2014 20:12:38 +0000 (23:12 +0300)
committerGrazvydas Ignotas <notasas@gmail.com>
Sat, 5 Jul 2014 20:12:38 +0000 (23:12 +0300)
recipes/networkmanager/networkmanager-0.8.1/no_scan_while_associated.patch [new file with mode: 0644]
recipes/networkmanager/networkmanager_0.8.1.bb

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 (file)
index 0000000..37f0512
--- /dev/null
@@ -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)));
index 6af873b..922017b 100644 (file)
@@ -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"