summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2022-08-30 10:08:54 +0200
committerThomas Haller <thaller@redhat.com>2022-08-30 10:09:23 +0200
commitb336b249f5fafd4850b78b3c9df9ceb1bd7d9bc7 (patch)
tree04a4c84c2ca038f02e74e23392eb3dcc5d8f584f
parentade9e1766433d444e52c59611672670eb7144711 (diff)
downloadNetworkManager-b336b249f5fafd4850b78b3c9df9ceb1bd7d9bc7.tar.gz
wifi: use GSource instead of source ID for Wi-Fi scan_kickoff_timeout
-rw-r--r--src/core/devices/wifi/nm-device-wifi.c44
1 files changed, 23 insertions, 21 deletions
diff --git a/src/core/devices/wifi/nm-device-wifi.c b/src/core/devices/wifi/nm-device-wifi.c
index eed4f630ee..11aaf61c8f 100644
--- a/src/core/devices/wifi/nm-device-wifi.c
+++ b/src/core/devices/wifi/nm-device-wifi.c
@@ -99,13 +99,13 @@ typedef struct {
NMSupplMgrCreateIfaceHandle *sup_create_handle;
NMSupplicantInterface *sup_iface;
+ GSource *scan_kickoff_timeout_source;
+
gint64 scan_last_complete_msec;
gint64 scan_periodic_next_msec;
gint64 scan_last_request_started_at_msec;
- guint scan_kickoff_timeout_id;
-
guint ap_dump_id;
guint periodic_update_id;
@@ -662,7 +662,7 @@ supplicant_interface_release(NMDeviceWifi *self)
NM_PENDING_ACTION_WAITING_FOR_SUPPLICANT,
TRUE);
- nm_clear_g_source(&priv->scan_kickoff_timeout_id);
+ nm_clear_g_source_inst(&priv->scan_kickoff_timeout_source);
nm_clear_g_source_inst(&priv->scan_request_delay_source);
nm_clear_g_cancellable(&priv->scan_request_cancellable);
@@ -1721,9 +1721,9 @@ _scan_kickoff_timeout_cb(gpointer user_data)
NMDeviceWifi *self = user_data;
NMDeviceWifiPrivate *priv = NM_DEVICE_WIFI_GET_PRIVATE(self);
- priv->scan_kickoff_timeout_id = 0;
+ nm_clear_g_source_inst(&priv->scan_kickoff_timeout_source);
_scan_kickoff(self);
- return G_SOURCE_REMOVE;
+ return G_SOURCE_CONTINUE;
}
static void
@@ -1766,13 +1766,13 @@ _scan_kickoff(NMDeviceWifi *self)
/ 1000),
(int) ((priv->scan_last_request_started_at_msec + ratelimit_duration_msec - now_msec)
% 1000),
- !priv->scan_kickoff_timeout_id ? ", schedule timeout" : "");
- if (!priv->scan_kickoff_timeout_id
+ !priv->scan_kickoff_timeout_source ? ", schedule timeout" : "");
+ if (!priv->scan_kickoff_timeout_source
&& (priv->scan_explicit_allowed || priv->scan_periodic_allowed)) {
- priv->scan_kickoff_timeout_id = g_timeout_add(priv->scan_last_request_started_at_msec
- + ratelimit_duration_msec - now_msec,
- _scan_kickoff_timeout_cb,
- self);
+ priv->scan_kickoff_timeout_source = nm_g_timeout_add_source(
+ priv->scan_last_request_started_at_msec + ratelimit_duration_msec - now_msec,
+ _scan_kickoff_timeout_cb,
+ self);
}
return;
}
@@ -1789,14 +1789,16 @@ _scan_kickoff(NMDeviceWifi *self)
_LOGT_scan("kickoff: don't scan (rate limited for another %d.%03d sec after previous scan)",
timeout_msec / 1000,
timeout_msec % 1000);
- nm_clear_g_source(&priv->scan_kickoff_timeout_id);
- priv->scan_kickoff_timeout_id = g_timeout_add(timeout_msec, _scan_kickoff_timeout_cb, self);
+ nm_clear_g_source_inst(&priv->scan_kickoff_timeout_source);
+ priv->scan_kickoff_timeout_source =
+ nm_g_timeout_add_source(timeout_msec, _scan_kickoff_timeout_cb, self);
return;
}
if (priv->scan_explicit_requested) {
if (!priv->scan_explicit_allowed) {
- _LOGT_scan("kickoff: don't scan (explicit scan requested but not allowed)");
+ _LOGT_scan(
+ "kickoff: don't scan (explicit scan requested but not allowed at the moment)");
return;
}
priv->scan_explicit_requested = FALSE;
@@ -1806,7 +1808,7 @@ _scan_kickoff(NMDeviceWifi *self)
_LOGT_scan("kickoff: don't scan (periodic scan currently not allowed)");
priv->scan_periodic_next_msec = 0;
priv->scan_periodic_interval_sec = 0;
- nm_clear_g_source(&priv->scan_kickoff_timeout_id);
+ nm_clear_g_source_inst(&priv->scan_kickoff_timeout_source);
return;
}
@@ -1816,12 +1818,12 @@ _scan_kickoff(NMDeviceWifi *self)
_LOGT_scan("kickoff: don't scan (periodic scan waiting for another %d.%03d sec%s)",
(int) ((priv->scan_periodic_next_msec - now_msec) / 1000),
(int) ((priv->scan_periodic_next_msec - now_msec) % 1000),
- !priv->scan_kickoff_timeout_id ? ", schedule timeout" : "");
- if (!priv->scan_kickoff_timeout_id) {
- priv->scan_kickoff_timeout_id =
- g_timeout_add_seconds((priv->scan_periodic_next_msec - now_msec + 999) / 1000,
- _scan_kickoff_timeout_cb,
- self);
+ !priv->scan_kickoff_timeout_source ? ", schedule timeout" : "");
+ if (!priv->scan_kickoff_timeout_source) {
+ priv->scan_kickoff_timeout_source = nm_g_timeout_add_seconds_source(
+ (priv->scan_periodic_next_msec - now_msec + 999) / 1000,
+ _scan_kickoff_timeout_cb,
+ self);
}
return;
}