diff mbox series

[v4,2/2] netdev: fix potential command ID overwrite setting CQM threshold

Message ID 20240903180653.205405-2-prestwoj@gmail.com (mailing list archive)
State Accepted, archived
Headers show
Series [v4,1/2] netdev: fall back to RSSI polling if SET_CQM fails | expand

Checks

Context Check Description
tedd_an/pre-ci_am success Success
prestwoj/iwd-ci-gitlint success GitLint

Commit Message

James Prestwood Sept. 3, 2024, 6:06 p.m. UTC
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 mbox series

Patch

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)