const u8 *addr,
                                               const u8 *localaddr);
 
+/**
+ * ieee80211_find_sta_by_link_addrs - find STA by link addresses
+ * @hw: pointer as obtained from ieee80211_alloc_hw()
+ * @addr: remote station's link address
+ * @localaddr: local link address, use %NULL for any (but avoid that)
+ * @link_id: pointer to obtain the link ID if the STA is found,
+ *     may be %NULL if the link ID is not needed
+ *
+ * Obtain the STA by link address, must use RCU protection.
+ */
+struct ieee80211_sta *
+ieee80211_find_sta_by_link_addrs(struct ieee80211_hw *hw,
+                                const u8 *addr,
+                                const u8 *localaddr,
+                                unsigned int *link_id);
+
 /**
  * ieee80211_sta_block_awake - block station from waking up
  * @hw: the hardware
 
        return NULL;
 }
 
+struct ieee80211_sta *
+ieee80211_find_sta_by_link_addrs(struct ieee80211_hw *hw,
+                                const u8 *addr,
+                                const u8 *localaddr,
+                                unsigned int *link_id)
+{
+       struct ieee80211_local *local = hw_to_local(hw);
+       struct link_sta_info *link_sta;
+       struct rhlist_head *tmp;
+
+       for_each_link_sta_info(local, addr, link_sta, tmp) {
+               struct sta_info *sta = link_sta->sta;
+               struct ieee80211_link_data *link;
+               u8 _link_id = link_sta->link_id;
+
+               if (!localaddr) {
+                       if (link_id)
+                               *link_id = _link_id;
+                       return &sta->sta;
+               }
+
+               link = rcu_dereference(sta->sdata->link[_link_id]);
+               if (!link)
+                       continue;
+
+               if (memcmp(link->conf->addr, localaddr, ETH_ALEN))
+                       continue;
+
+               if (link_id)
+                       *link_id = _link_id;
+               return &sta->sta;
+       }
+
+       return NULL;
+}
+EXPORT_SYMBOL_GPL(ieee80211_find_sta_by_link_addrs);
+
 struct sta_info *sta_info_get_by_addrs(struct ieee80211_local *local,
                                       const u8 *sta_addr, const u8 *vif_addr)
 {