]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
wifi: mac80211: Add link iteration macro for link data
authorMuna Sinada <muna.sinada@oss.qualcomm.com>
Tue, 25 Mar 2025 21:31:23 +0000 (14:31 -0700)
committerJohannes Berg <johannes.berg@intel.com>
Wed, 23 Apr 2025 14:56:15 +0000 (16:56 +0200)
Currently before iterating through valid links we are utilizing
open-coding when checking if vif valid_links is a non-zero value.

Add new macro, for_each_link_data(), which iterates through link_id
and checks if it is set on vif valid_links. If it is a valid link then
access link data for that link id.

Signed-off-by: Muna Sinada <muna.sinada@oss.qualcomm.com>
Link: https://patch.msgid.link/20250325213125.1509362-2-muna.sinada@oss.qualcomm.com
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
net/mac80211/ieee80211_i.h

index bf8d8a4145fc5c59c245aaabfeec7172db934cd6..c797513f58e03a7511a2f7459d8ca25c2926f602 100644 (file)
@@ -1226,6 +1226,15 @@ struct ieee80211_sub_if_data *vif_to_sdata(struct ieee80211_vif *p)
        if ((_link = wiphy_dereference((_local)->hw.wiphy,              \
                                       ___sdata->link[___link_id])))
 
+#define for_each_link_data(sdata, __link)                                      \
+       struct ieee80211_sub_if_data *__sdata = sdata;                          \
+       for (int __link_id = 0;                                                 \
+            __link_id < ARRAY_SIZE((__sdata)->link); __link_id++)              \
+               if ((!(__sdata)->vif.valid_links ||                             \
+                    (__sdata)->vif.valid_links & BIT(__link_id)) &&            \
+                   ((__link) = sdata_dereference((__sdata)->link[__link_id],   \
+                                                 (__sdata))))
+
 static inline int
 ieee80211_get_mbssid_beacon_len(struct cfg80211_mbssid_elems *elems,
                                struct cfg80211_rnr_elems *rnr_elems,