From 163c2ebd37712160622670a971bb8cb9bc5c0d09 Mon Sep 17 00:00:00 2001 From: James Prestwood Date: Tue, 3 Sep 2024 11:06:53 -0700 Subject: [PATCH] netdev: fix potential command ID overwrite setting CQM threshold With the introduction of affinities the CQM threshold can be toggled by a DBus call. There was no check if there was already a pending call which would cause the command ID to be overwritten and lose any potential to cancel it, e.g. if netdev went down. --- src/netdev.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/netdev.c b/src/netdev.c index 14fe41b4..d95a2a1e 100644 --- a/src/netdev.c +++ b/src/netdev.c @@ -3715,6 +3715,9 @@ static int netdev_cqm_rssi_update(struct netdev *netdev) l_debug(""); + if (netdev->set_cqm_cmd_id) + return -EBUSY; + if (!wiphy_has_ext_feature(netdev->wiphy, NL80211_EXT_FEATURE_CQM_RSSI_LIST)) msg = netdev_build_cmd_cqm_rssi_update(netdev, NULL, 0); @@ -3752,9 +3755,7 @@ static int netdev_set_signal_thresholds(struct netdev *netdev, int threshold, netdev->low_signal_threshold = threshold; netdev->low_signal_threshold_5ghz = threshold_5ghz; - netdev_cqm_rssi_update(netdev); - - return 0; + return netdev_cqm_rssi_update(netdev); } int netdev_lower_signal_threshold(struct netdev *netdev)