OSDN Git Service

wifi: mac80211: add macros to loop over active links
authorGregory Greenman <gregory.greenman@intel.com>
Tue, 12 Jul 2022 09:22:50 +0000 (12:22 +0300)
committerJohannes Berg <johannes.berg@intel.com>
Fri, 22 Jul 2022 12:28:47 +0000 (14:28 +0200)
Add a preliminary version which will be updated later
to loop over vif's and sta's active links.

Signed-off-by: Gregory Greenman <gregory.greenman@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
include/net/mac80211.h

index 1e04961..f198af6 100644 (file)
@@ -1856,6 +1856,13 @@ struct ieee80211_vif {
        u8 drv_priv[] __aligned(sizeof(void *));
 };
 
+/* FIXME: for now loop over all the available links; later will be changed
+ * to loop only over the active links.
+ */
+#define for_each_vif_active_link(vif, link, link_id)                        \
+       for (link_id = 0; link_id < ARRAY_SIZE((vif)->link_conf); link_id++) \
+               if ((link = rcu_dereference((vif)->link_conf[link_id])))
+
 static inline bool ieee80211_vif_is_mesh(struct ieee80211_vif *vif)
 {
 #ifdef CONFIG_MAC80211_MESH
@@ -2248,6 +2255,14 @@ struct ieee80211_sta {
        u8 drv_priv[] __aligned(sizeof(void *));
 };
 
+/* FIXME: need to loop only over links which are active and check the actual
+ * lock
+ */
+#define for_each_sta_active_link(sta, link_sta, link_id)                        \
+       for (link_id = 0; link_id < ARRAY_SIZE((sta)->link); link_id++)          \
+               if (((link_sta) = rcu_dereference_protected((sta)->link[link_id],\
+                                                           1)))                 \
+
 /**
  * enum sta_notify_cmd - sta notify command
  *