wifi: mac80211: add ieee80211_tdls_sta_link_id()
authorJohannes Berg <johannes.berg@intel.com>
Wed, 12 Jun 2024 12:35:56 +0000 (14:35 +0200)
committerJohannes Berg <johannes.berg@intel.com>
Wed, 26 Jun 2024 08:22:04 +0000 (10:22 +0200)
We've open-coded this twice and will need it again,
add ieee80211_tdls_sta_link_id() to get the one link
ID for a TDLS STA.

Reviewed-by: Miriam Rachel Korenblit <miriam.rachel.korenblit@intel.com>
Link: https://patch.msgid.link/20240612143707.9f8141ae1725.I343822bbba0ae08dedb2f54a0ce87f2ae5ebeb2b@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
net/mac80211/sta_info.h
net/mac80211/tx.c

index bd5e2f7146f67ec266167b67ece13b0ae1ceb321..9195d5a2de0a865c6992e47aa964a747e6787ca2 100644 (file)
@@ -727,6 +727,12 @@ struct sta_info {
        struct ieee80211_sta sta;
 };
 
+static inline int ieee80211_tdls_sta_link_id(struct sta_info *sta)
+{
+       /* TDLS STA can only have a single link */
+       return sta->sta.valid_links ? __ffs(sta->sta.valid_links) : 0;
+}
+
 static inline enum nl80211_plink_state sta_plink_state(struct sta_info *sta)
 {
 #ifdef CONFIG_MAC80211_MESH
index f861d99e5f055d696ca3a2ec162b5c2ac6801e22..72a9ba8bc5fd9764068e00d42755f3ba922418de 100644 (file)
@@ -2774,8 +2774,7 @@ static struct sk_buff *ieee80211_build_hdr(struct ieee80211_sub_if_data *sdata,
 
                if (tdls_peer) {
                        /* For TDLS only one link can be valid with peer STA */
-                       int tdls_link_id = sta->sta.valid_links ?
-                                          __ffs(sta->sta.valid_links) : 0;
+                       int tdls_link_id = ieee80211_tdls_sta_link_id(sta);
                        struct ieee80211_link_data *link;
 
                        /* DA SA BSSID */
@@ -3101,8 +3100,7 @@ void ieee80211_check_fast_xmit(struct sta_info *sta)
        case NL80211_IFTYPE_STATION:
                if (test_sta_flag(sta, WLAN_STA_TDLS_PEER)) {
                        /* For TDLS only one link can be valid with peer STA */
-                       int tdls_link_id = sta->sta.valid_links ?
-                                          __ffs(sta->sta.valid_links) : 0;
+                       int tdls_link_id = ieee80211_tdls_sta_link_id(sta);
                        struct ieee80211_link_data *link;
 
                        /* DA SA BSSID */