diff mbox series

nl80211: Pass "global" events to all interfaces

Message ID a09ffc7170804bd6a81f5298a4b51857@joynext.com
State Superseded
Headers show
Series nl80211: Pass "global" events to all interfaces | expand

Commit Message

Cermak Dominik Aug. 29, 2024, 7:28 a.m. UTC
Extending commit f136837202393a7e1f3182e9efdbf1aaa0c1a5c2.

We got connection failures because of outdated channel information.
That's because the NL80211_CMD_REG_CHANGE event is important for all
interfaces, but the early termination still kicks in because it is not
directed to a specific wiphy.
Therefore from three interfaces, only one got the updated channel list.

Fix this by changing the early termination logic to only apply to events
directed either to a specific interface index for wdev.

Signed-off-by: Dominik Cermak <dominik.cermak@joynext.com>
---
 src/drivers/driver_nl80211_event.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

Comments

Cermak Dominik Aug. 29, 2024, 7:50 a.m. UTC | #1
Wrong patch obviously. Should have been "ifidx != -1", sorry about that.
Sent a v2 with the correct patch.

Best regards
Dominik Cermak |  Software Engineer
diff mbox series

Patch

diff --git a/src/drivers/driver_nl80211_event.c b/src/drivers/driver_nl80211_event.c
index 903207067..8e79b5848 100644
--- a/src/drivers/driver_nl80211_event.c
+++ b/src/drivers/driver_nl80211_event.c
@@ -4257,7 +4257,13 @@  int process_global_event(struct nl_msg *msg, void *arg)
 			     wdev_id == bss->wdev_id)) {
 				processed = true;
 				do_process_drv_event(bss, gnlh->cmd, tb);
-				if (!wiphy_idx_set)
+				/* There are two types of events that may need to be
+				 * delivered to multiple interfaces:
+				 * 1. Events for a wiphy, as it can have multiple interfaces.
+				 * 2. "Global" events, like NL80211_CMD_REG_CHANGE.
+				 * Or in other words, terminate early only if it is
+				 * directed to a specific interface or wdev. */
+				if (ifidx != 1 || wdev_id_set)
 					return NL_SKIP;
 				/* The driver instance could have been removed,
 				 * e.g., due to NL80211_CMD_RADAR_DETECT event,