summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/core/devices/nm-device.c2
-rw-r--r--src/core/nm-manager.c10
2 files changed, 9 insertions, 3 deletions
diff --git a/src/core/devices/nm-device.c b/src/core/devices/nm-device.c
index 42c0d067f6..14a47a013c 100644
--- a/src/core/devices/nm-device.c
+++ b/src/core/devices/nm-device.c
@@ -5385,11 +5385,11 @@ device_link_changed(NMDevice *self)
/* Ensure the assume check is queued before any queued state changes
* from the transition to UNAVAILABLE.
*/
- nm_device_queue_recheck_assume(self);
reason = NM_DEVICE_STATE_REASON_CONNECTION_ASSUMED;
}
}
+ nm_device_queue_recheck_assume(self);
nm_device_set_unmanaged_by_flags(self, NM_UNMANAGED_PLATFORM_INIT, FALSE, reason);
}
diff --git a/src/core/nm-manager.c b/src/core/nm-manager.c
index 75a0a076e5..8024513959 100644
--- a/src/core/nm-manager.c
+++ b/src/core/nm-manager.c
@@ -2839,7 +2839,10 @@ recheck_assume_connection(NMManager *self, NMDevice *device)
g_return_val_if_fail(NM_IS_DEVICE(device), FALSE);
if (!nm_device_get_managed(device, FALSE)) {
- nm_device_assume_state_reset(device);
+ /* If the device is only unmanaged by NM_UNMANAGED_PLATFORM_INIT,
+ * don't reset the state now but wait until it becomes managed. */
+ if (nm_device_get_unmanaged_flags(device, NM_UNMANAGED_ALL) != NM_UNMANAGED_PLATFORM_INIT)
+ nm_device_assume_state_reset(device);
_LOG2D(LOGD_DEVICE, device, "assume: don't assume because %s", "not managed");
return FALSE;
}
@@ -3161,7 +3164,10 @@ _device_realize_finish(NMManager *self, NMDevice *device, const NMPlatformLink *
nm_device_realize_finish(device, plink);
if (!nm_device_get_managed(device, FALSE)) {
- nm_device_assume_state_reset(device);
+ /* If the device is only unmanaged by NM_UNMANAGED_PLATFORM_INIT,
+ * don't reset the state now but wait until it becomes managed. */
+ if (nm_device_get_unmanaged_flags(device, NM_UNMANAGED_ALL) != NM_UNMANAGED_PLATFORM_INIT)
+ nm_device_assume_state_reset(device);
return;
}