wifi: mac80211: Add link iteration macro for link data with rcu_dereference
authorMaharaja Kennadyrajan <maharaja.kennadyrajan@oss.qualcomm.com>
Fri, 18 Jul 2025 06:08:35 +0000 (11:38 +0530)
committerJohannes Berg <johannes.berg@intel.com>
Fri, 18 Jul 2025 12:08:11 +0000 (14:08 +0200)
commit4e1916dec9850cd49dd5792200ab649061cbedc1
treefbcdd09d5df0e409d83327d0742b6baf388dabd2
parentf562f6a5899d91940fd5ef78e3f6042f56abe3e2
wifi: mac80211: Add link iteration macro for link data with rcu_dereference

Currently, the existing macro for_each_link_data() uses sdata_dereference()
which requires the wiphy lock. This lock cannot be used in atomic or RCU
read-side contexts, such as in the RX path.

Introduce a new macro, for_each_link_data_rcu(), that iterates over link of
sdata using rcu_dereference(), making it safe to use in RCU contexts. This
allows callers to access link data without requiring the wiphy lock.

The macro takes into account the vif.valid_links bitmap and ensures only
valid links are accessed safely. Callers are responsible for ensuring that
rcu_read_lock() is held when using this macro.

Signed-off-by: Maharaja Kennadyrajan <maharaja.kennadyrajan@oss.qualcomm.com>
Link: https://patch.msgid.link/20250718060837.59371-3-maharaja.kennadyrajan@oss.qualcomm.com
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
net/mac80211/ieee80211_i.h