[PATCH] wifi: don't request new PSK for locally-generated WLAN_REASON_DISASSOC_DUE_TO_INACTIVITY errors
- From: Dan Williams <dcbw redhat com>
- To: networkmanager-list gnome org
- Subject: [PATCH] wifi: don't request new PSK for locally-generated WLAN_REASON_DISASSOC_DUE_TO_INACTIVITY errors
- Date: Fri, 16 Dec 2016 11:49:32 -0600
This usually indicates that the driver missed beacons from the AP, due to driver bugs
or faulty power-save management. It doesn't mean that the PSK is wrong.
Reported-by: Jonathan Kang <jonathankang gnome org>
---
src/devices/wifi/nm-device-wifi.c | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/src/devices/wifi/nm-device-wifi.c b/src/devices/wifi/nm-device-wifi.c
index 0ec9fe8..bae3fbf 100644
--- a/src/devices/wifi/nm-device-wifi.c
+++ b/src/devices/wifi/nm-device-wifi.c
@@ -1846,6 +1846,7 @@ need_new_8021x_secrets (NMDeviceWifi *self,
static gboolean
need_new_wpa_psk (NMDeviceWifi *self,
guint32 old_state,
+ gint disconnect_reason,
const char **setting_name)
{
NMSettingWirelessSecurity *s_wsec;
@@ -1866,6 +1867,15 @@ need_new_wpa_psk (NMDeviceWifi *self,
key_mgmt = nm_setting_wireless_security_get_key_mgmt (s_wsec);
if (g_strcmp0 (key_mgmt, "wpa-psk") == 0) {
+ /* -4 (locally-generated WLAN_REASON_DISASSOC_DUE_TO_INACTIVITY) usually
+ * means the driver missed beacons from the AP. This usually happens
+ * due to driver bugs or faulty power-save management. It doesn't
+ * indicate that the PSK is wrong.
+ */
+ #define LOCAL_WLAN_REASON_DISASSOC_DUE_TO_INACTIVITY -4
+ if (disconnect_reason == LOCAL_WLAN_REASON_DISASSOC_DUE_TO_INACTIVITY)
+ return FALSE;
+
*setting_name = NM_SETTING_WIRELESS_SECURITY_SETTING_NAME;
return TRUE;
}
@@ -1891,7 +1901,7 @@ handle_8021x_or_psk_auth_fail (NMDeviceWifi *self,
g_return_val_if_fail (req != NULL, FALSE);
if ( need_new_8021x_secrets (self, old_state, &setting_name)
- || need_new_wpa_psk (self, old_state, &setting_name)) {
+ || need_new_wpa_psk (self, old_state, disconnect_reason, &setting_name)) {
nm_act_request_clear_secrets (req);
--
2.7.4
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]