From c71420db653aba30a234d1e4cf86dde376e604fa Mon Sep 17 00:00:00 2001 From: Johannes Berg Date: Wed, 15 Jun 2022 09:20:45 +0200 Subject: wifi: mac80211: RCU-ify link STA pointers We need to be able to access these in a race-free way under traffic while adding/removing them, so RCU-ify the pointers. This requires passing a link_sta to a lot of functions so we don't have to do the RCU handling everywhere. Signed-off-by: Johannes Berg --- net/mac80211/sta_info.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'net/mac80211/sta_info.h') diff --git a/net/mac80211/sta_info.h b/net/mac80211/sta_info.h index 8ec65bb7d13e..27c96c04b13f 100644 --- a/net/mac80211/sta_info.h +++ b/net/mac80211/sta_info.h @@ -516,6 +516,7 @@ struct ieee80211_fragment_cache { * @status_stats.last_ack_signal: last ACK signal * @status_stats.ack_signal_filled: last ACK signal validity * @status_stats.avg_ack_signal: average ACK signal + * @pub: public (driver visible) link STA data * TODO Move other link params from sta_info as required for MLD operation */ struct link_sta_info { @@ -561,6 +562,8 @@ struct link_sta_info { } tx_stats; enum ieee80211_sta_rx_bandwidth cur_max_bandwidth; + + struct ieee80211_link_sta *pub; }; /** @@ -708,7 +711,7 @@ struct sta_info { struct ieee80211_fragment_cache frags; struct link_sta_info deflink; - struct link_sta_info *link[IEEE80211_MLD_MAX_NUM_LINKS]; + struct link_sta_info __rcu *link[IEEE80211_MLD_MAX_NUM_LINKS]; /* keep last! */ struct ieee80211_sta sta; -- cgit v1.2.3