0001
0002
0003
0004
0005 #ifndef __RTW_UTIL_H__
0006 #define __RTW_UTIL_H__
0007
0008 struct rtw_dev;
0009
0010 #define rtw_iterate_vifs(rtwdev, iterator, data) \
0011 ieee80211_iterate_active_interfaces(rtwdev->hw, \
0012 IEEE80211_IFACE_ITER_NORMAL, iterator, data)
0013 #define rtw_iterate_vifs_atomic(rtwdev, iterator, data) \
0014 ieee80211_iterate_active_interfaces_atomic(rtwdev->hw, \
0015 IEEE80211_IFACE_ITER_NORMAL, iterator, data)
0016 #define rtw_iterate_stas_atomic(rtwdev, iterator, data) \
0017 ieee80211_iterate_stations_atomic(rtwdev->hw, iterator, data)
0018 #define rtw_iterate_keys(rtwdev, vif, iterator, data) \
0019 ieee80211_iter_keys(rtwdev->hw, vif, iterator, data)
0020 #define rtw_iterate_keys_rcu(rtwdev, vif, iterator, data) \
0021 ieee80211_iter_keys_rcu((rtwdev)->hw, vif, iterator, data)
0022
0023 static inline u8 *get_hdr_bssid(struct ieee80211_hdr *hdr)
0024 {
0025 __le16 fc = hdr->frame_control;
0026 u8 *bssid;
0027
0028 if (ieee80211_has_tods(fc))
0029 bssid = hdr->addr1;
0030 else if (ieee80211_has_fromds(fc))
0031 bssid = hdr->addr2;
0032 else
0033 bssid = hdr->addr3;
0034
0035 return bssid;
0036 }
0037
0038 #endif