--- /dev/null
+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)));
+