diff options
author | Beniamino Galvani <bgalvani@redhat.com> | 2024-04-22 17:59:50 +0200 |
---|---|---|
committer | Beniamino Galvani <bgalvani@redhat.com> | 2024-04-22 18:10:38 +0200 |
commit | f4467b477de803d03dec8e5d7c35b9891b38ef49 (patch) | |
tree | 421ad6f4ff6d15d83433c093f5a05247895301c9 | |
parent | 88818ff9e35e6d4155fcd31e5f1d6e1091ca5c0f (diff) |
wifi-p2p: consider if the device is enabled when adding pending actionbg/wifi-p2p-pending-action
If the device gets rfkill-blocked, remove the pending action
"waiting-for-supplicant", as it can prevent reaching
"startup-complete".
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/issues/1004
-rw-r--r-- | src/core/devices/wifi/nm-device-wifi-p2p.c | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/src/core/devices/wifi/nm-device-wifi-p2p.c b/src/core/devices/wifi/nm-device-wifi-p2p.c index 58fcd370e7..f06383b102 100644 --- a/src/core/devices/wifi/nm-device-wifi-p2p.c +++ b/src/core/devices/wifi/nm-device-wifi-p2p.c @@ -916,7 +916,7 @@ supplicant_interfaces_release(NMDeviceWifiP2P *self, gboolean set_is_waiting) supplicant_group_interface_release(self); - if (set_is_waiting) + if (set_is_waiting && priv->enabled) _set_is_waiting_for_supplicant(self, TRUE); } @@ -947,9 +947,10 @@ device_state_changed(NMDevice *device, case NM_DEVICE_STATE_UNMANAGED: break; case NM_DEVICE_STATE_UNAVAILABLE: - if (!priv->mgmt_iface - || !nm_supplicant_interface_state_is_operational( - nm_supplicant_interface_get_state(priv->mgmt_iface))) + if (priv->enabled + && (!priv->mgmt_iface + || !nm_supplicant_interface_state_is_operational( + nm_supplicant_interface_get_state(priv->mgmt_iface)))) _set_is_waiting_for_supplicant(self, TRUE); break; case NM_DEVICE_STATE_NEED_AUTH: @@ -1141,6 +1142,10 @@ set_enabled(NMDevice *device, gboolean enabled) priv->enabled = enabled; _LOGD(LOGD_DEVICE | LOGD_WIFI, "device now %s", enabled ? "enabled" : "disabled"); + + if (!enabled) { + _set_is_waiting_for_supplicant(self, FALSE); + } } /*****************************************************************************/ @@ -1193,10 +1198,12 @@ done: nm_device_queue_recheck_available(NM_DEVICE(self), NM_DEVICE_STATE_REASON_SUPPLICANT_AVAILABLE, NM_DEVICE_STATE_REASON_SUPPLICANT_FAILED); - _set_is_waiting_for_supplicant(self, - !priv->mgmt_iface - || !nm_supplicant_interface_state_is_operational( - nm_supplicant_interface_get_state(priv->mgmt_iface))); + _set_is_waiting_for_supplicant( + self, + priv->enabled + && (!priv->mgmt_iface + || !nm_supplicant_interface_state_is_operational( + nm_supplicant_interface_get_state(priv->mgmt_iface)))); } void |