[PATCH 20/42] AP: MLO: Add helper to iterate all links of an MLD AP

Andrei Otcheretianski andrei.otcheretianski at intel.com
Mon Nov 20 15:51:34 PST 2023


From: Benjamin Berg <benjamin.berg at intel.com>

This adds a simple for_each_mld_link helper that sets first variable to
the hapd data for every link. It takes the interfaces and MLD ID as
arguments and two extra integers as scratch variables (for the interface
and bss offsets).

Signed-off-by: Benjamin Berg <benjamin.berg at intel.com>
---
 src/ap/hostapd.h | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/src/ap/hostapd.h b/src/ap/hostapd.h
index 6f0c0fc66d..cbfd352eee 100644
--- a/src/ap/hostapd.h
+++ b/src/ap/hostapd.h
@@ -776,4 +776,24 @@ int hostapd_mbssid_get_bss_index(struct hostapd_data *hapd);
 struct hostapd_data * hostapd_mld_get_link_bss(struct hostapd_data *hapd,
 					       u8 link_id);
 int hostapd_link_remove(struct hostapd_data *hapd, u32 count);
+
+#ifdef CONFIG_IEEE80211BE
+#define for_each_mld_link(_link, _bss_idx, _iface_idx, _ifaces, _mld_id) \
+	for (_iface_idx = 0;						\
+	     _iface_idx < (_ifaces)->count;				\
+	     _iface_idx++)						\
+		for (_bss_idx = 0;					\
+		     _bss_idx <						\
+			(_ifaces)->iface[_iface_idx]->num_bss;		\
+		     _bss_idx++)					\
+			for (_link =					\
+			     (_ifaces)->iface[_iface_idx]->bss[_bss_idx]; \
+			    _link && _link->conf->mld_ap &&		\
+				_link->conf->mld_id == _mld_id;		\
+			    _link = NULL)
+#else
+#define for_each_mld_link(_link, _bss_idx, _iface_idx, _ifaces, _mld_id) \
+	if (false)
+#endif /* CONFIG_IEEE80211BE */
+
 #endif /* HOSTAPD_H */
-- 
2.38.1




More information about the Hostap mailing list