summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBeniamino Galvani <bgalvani@redhat.com>2024-04-22 17:59:50 +0200
committerBeniamino Galvani <bgalvani@redhat.com>2024-04-22 18:10:38 +0200
commitf4467b477de803d03dec8e5d7c35b9891b38ef49 (patch)
tree421ad6f4ff6d15d83433c093f5a05247895301c9
parent88818ff9e35e6d4155fcd31e5f1d6e1091ca5c0f (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.c23
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