mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-02-15 02:10:32 +01:00
device: use GSource for tracking carrier-defer timeout
Also no longer log the g_source_get_id(). It's not useful, because per device there must be only one timeout pending at any time.
This commit is contained in:
parent
7009789e85
commit
adc3263920
1 changed files with 12 additions and 16 deletions
|
|
@ -536,10 +536,10 @@ typedef struct _NMDevicePrivate {
|
|||
/* Link stuff */
|
||||
guint link_connected_id;
|
||||
guint link_disconnected_id;
|
||||
guint carrier_defer_id;
|
||||
guint carrier_wait_id;
|
||||
gulong config_changed_id;
|
||||
gulong ifindex_changed_id;
|
||||
GSource *carrier_defer_source;
|
||||
guint32 mtu;
|
||||
guint32 ip6_mtu; /* FIXME(l3cfg) */
|
||||
guint32 mtu_initial;
|
||||
|
|
@ -6639,24 +6639,20 @@ carrier_disconnected_action_cb(gpointer user_data)
|
|||
NMDevice *self = NM_DEVICE(user_data);
|
||||
NMDevicePrivate *priv = NM_DEVICE_GET_PRIVATE(self);
|
||||
|
||||
_LOGD(LOGD_DEVICE,
|
||||
"carrier: link disconnected (calling deferred action) (id=%u)",
|
||||
priv->carrier_defer_id);
|
||||
_LOGD(LOGD_DEVICE, "carrier: link disconnected (calling deferred action)");
|
||||
|
||||
priv->carrier_defer_id = 0;
|
||||
nm_clear_g_source_inst(&priv->carrier_defer_source);
|
||||
carrier_changed(self, FALSE);
|
||||
return FALSE;
|
||||
return G_SOURCE_CONTINUE;
|
||||
}
|
||||
|
||||
static void
|
||||
carrier_disconnected_action_cancel(NMDevice *self)
|
||||
{
|
||||
NMDevicePrivate *priv = NM_DEVICE_GET_PRIVATE(self);
|
||||
guint id = priv->carrier_defer_id;
|
||||
|
||||
if (nm_clear_g_source(&priv->carrier_defer_id)) {
|
||||
_LOGD(LOGD_DEVICE, "carrier: link disconnected (canceling deferred action) (id=%u)", id);
|
||||
}
|
||||
if (nm_clear_g_source_inst(&priv->carrier_defer_source))
|
||||
_LOGD(LOGD_DEVICE, "carrier: link disconnected (canceling deferred action)");
|
||||
}
|
||||
|
||||
void
|
||||
|
|
@ -6696,16 +6692,16 @@ nm_device_set_carrier(NMDevice *self, gboolean carrier)
|
|||
_LOGD(LOGD_DEVICE, "carrier: link disconnected");
|
||||
carrier_changed(self, FALSE);
|
||||
} else {
|
||||
gint64 now_ms, until_ms;
|
||||
gint64 until_ms;
|
||||
gint64 now_ms;
|
||||
|
||||
now_ms = nm_utils_get_monotonic_timestamp_msec();
|
||||
until_ms = NM_MAX(now_ms + _get_carrier_wait_ms(self), priv->carrier_wait_until_ms);
|
||||
priv->carrier_defer_id =
|
||||
g_timeout_add(until_ms - now_ms, carrier_disconnected_action_cb, self);
|
||||
priv->carrier_defer_source =
|
||||
nm_g_timeout_add_source(until_ms - now_ms, carrier_disconnected_action_cb, self);
|
||||
_LOGD(LOGD_DEVICE,
|
||||
"carrier: link disconnected (deferring action for %ld milliseconds) (id=%u)",
|
||||
(long) (until_ms - now_ms),
|
||||
priv->carrier_defer_id);
|
||||
"carrier: link disconnected (deferring action for %ld milliseconds)",
|
||||
(long) (until_ms - now_ms));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue