about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMichael Biebl <biebl@debian.org>2016-08-08 23:44:24 +0200
committerMichael Biebl <biebl@debian.org>2016-08-09 09:13:21 +0200
commit959245f9c90f16774e139c5249bc53c098e3789b (patch)
treec21283c8def9bcb298bf072541ba96f3c3812c42
parent31bf695cc438fa57869ed7fe5b6199b7fd4ce71c (diff)
Clear WiFi requested_scan if wpa_supplicant exits or goes inactive
Patches cherry-picked from upstream Git.
-rw-r--r--debian/changelog2
-rw-r--r--debian/patches/series2
-rw-r--r--debian/patches/wifi-clear-WiFi-requested_scan-if-suppl-exits.patch29
-rw-r--r--debian/patches/wifi-clear-WiFi-requested_scan-if-suppl-goes-INACTIVE.patch31
4 files changed, 64 insertions, 0 deletions
diff --git a/debian/changelog b/debian/changelog
index 928115bb..dd66957d 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -6,6 +6,8 @@ network-manager (1.2.4-1) UNRELEASED; urgency=medium
   * Replace /etc/resolv.conf symlink with an empty file on package removal
     to signal other packages that NetworkManager is no longer controlling the
     file. (Closes: #826366)
+  * Clear WiFi requested_scan if wpa_supplicant exits or goes inactive.
+    Patches cherry-picked from upstream Git.
 
  -- Michael Biebl <biebl@debian.org>  Wed, 03 Aug 2016 23:01:13 +0200
 
diff --git a/debian/patches/series b/debian/patches/series
index e74194c5..4cc519bd 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -5,3 +5,5 @@ Check-at-runtime-whether-to-start-ModemManager.patch
 Don-t-make-NetworkManager-D-Bus-activatable.patch
 systemd-Don-t-enable-NetworkManager-wait-online.service-s.patch
 Fix-iscsiadm-path.patch
+wifi-clear-WiFi-requested_scan-if-suppl-exits.patch
+wifi-clear-WiFi-requested_scan-if-suppl-goes-INACTIVE.patch
diff --git a/debian/patches/wifi-clear-WiFi-requested_scan-if-suppl-exits.patch b/debian/patches/wifi-clear-WiFi-requested_scan-if-suppl-exits.patch
new file mode 100644
index 00000000..974c24fd
--- /dev/null
+++ b/debian/patches/wifi-clear-WiFi-requested_scan-if-suppl-exits.patch
@@ -0,0 +1,29 @@
+From: Tony Espy <espy@canonical.com>
+Date: Thu, 16 Jun 2016 15:07:33 -0400
+Subject: wifi: clear WiFi requested_scan if suppl exits
+
+It's possible for wpa_supplicant to exit with an
+outstanding requested_scan pending.  This can lead
+to a stall condition where scanning no longer occurs.
+
+https://mail.gnome.org/archives/networkmanager-list/2016-June/msg00117.html
+---
+ src/devices/wifi/nm-device-wifi.c | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/src/devices/wifi/nm-device-wifi.c b/src/devices/wifi/nm-device-wifi.c
+index 82b12a1..cce2f26 100644
+--- a/src/devices/wifi/nm-device-wifi.c
++++ b/src/devices/wifi/nm-device-wifi.c
+@@ -246,6 +246,11 @@ supplicant_interface_release (NMDeviceWifi *self)
+ 
+ 	priv = NM_DEVICE_WIFI_GET_PRIVATE (self);
+ 
++	if (priv->requested_scan) {
++		priv->requested_scan = FALSE;
++		nm_device_remove_pending_action (NM_DEVICE (self), "scan", TRUE);
++	}
++
+ 	nm_clear_g_source (&priv->pending_scan_id);
+ 
+ 	/* Reset the scan interval to be pretty frequent when disconnected */
diff --git a/debian/patches/wifi-clear-WiFi-requested_scan-if-suppl-goes-INACTIVE.patch b/debian/patches/wifi-clear-WiFi-requested_scan-if-suppl-goes-INACTIVE.patch
new file mode 100644
index 00000000..2882f85f
--- /dev/null
+++ b/debian/patches/wifi-clear-WiFi-requested_scan-if-suppl-goes-INACTIVE.patch
@@ -0,0 +1,31 @@
+From: Tony Espy <espy@canonical.com>
+Date: Thu, 16 Jun 2016 15:07:32 -0400
+Subject: wifi: clear WiFi requested_scan if suppl goes INACTIVE
+
+It's possible for wpa_supplicant to transition to INACTIVE
+state with an outstanding requested_scan pending.  This can
+lead to a stall condition where scanning no longer occurs.
+
+[thaller@redhat.com: added break statement to avoid fall-through]
+
+https://mail.gnome.org/archives/networkmanager-list/2016-June/msg00116.html
+---
+ src/devices/wifi/nm-device-wifi.c | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/src/devices/wifi/nm-device-wifi.c b/src/devices/wifi/nm-device-wifi.c
+index cce2f26..17f5b14 100644
+--- a/src/devices/wifi/nm-device-wifi.c
++++ b/src/devices/wifi/nm-device-wifi.c
+@@ -1956,6 +1956,11 @@ supplicant_iface_state_cb (NMSupplicantInterface *iface,
+ 		else
+ 			_LOGI (LOGD_DEVICE | LOGD_WIFI, "supplicant interface keeps failing, giving up");
+ 		break;
++	case NM_SUPPLICANT_INTERFACE_STATE_INACTIVE:
++		priv->requested_scan = FALSE;
++		nm_clear_g_source (&priv->pending_scan_id);
++		request_wireless_scan (self, NULL);
++		break;
+ 	default:
+ 		break;
+ 	}