diff options
Diffstat (limited to 'package/mac80211/patches/550-vlan_sta_lookup.patch')
-rw-r--r-- | package/mac80211/patches/550-vlan_sta_lookup.patch | 98 |
1 files changed, 0 insertions, 98 deletions
diff --git a/package/mac80211/patches/550-vlan_sta_lookup.patch b/package/mac80211/patches/550-vlan_sta_lookup.patch deleted file mode 100644 index ad15ca9..0000000 --- a/package/mac80211/patches/550-vlan_sta_lookup.patch +++ /dev/null @@ -1,98 +0,0 @@ ---- a/net/mac80211/sta_info.c -+++ b/net/mac80211/sta_info.c -@@ -119,6 +119,27 @@ struct sta_info *sta_info_get(struct iee - return sta; - } - -+/* -+ * Get sta info either from the specified interface -+ * or from one of its vlans -+ */ -+struct sta_info *sta_info_get_bss(struct ieee80211_sub_if_data *sdata, -+ const u8 *addr) -+{ -+ struct ieee80211_local *local = sdata->local; -+ struct sta_info *sta; -+ -+ sta = rcu_dereference(local->sta_hash[STA_HASH(addr)]); -+ while (sta) { -+ if ((sta->sdata == sdata || -+ sta->sdata->bss == sdata->bss) && -+ memcmp(sta->sta.addr, addr, ETH_ALEN) == 0) -+ break; -+ sta = rcu_dereference(sta->hnext); -+ } -+ return sta; -+} -+ - struct sta_info *sta_info_get_by_idx(struct ieee80211_sub_if_data *sdata, - int idx) - { ---- a/net/mac80211/sta_info.h -+++ b/net/mac80211/sta_info.h -@@ -408,6 +408,9 @@ static inline u32 get_sta_flags(struct s - struct sta_info *sta_info_get(struct ieee80211_sub_if_data *sdata, - const u8 *addr); - -+struct sta_info *sta_info_get_bss(struct ieee80211_sub_if_data *sdata, -+ const u8 *addr); -+ - static inline - void for_each_sta_info_type_check(struct ieee80211_local *local, - const u8 *addr, ---- a/net/mac80211/cfg.c -+++ b/net/mac80211/cfg.c -@@ -148,7 +148,7 @@ static int ieee80211_add_key(struct wiph - rcu_read_lock(); - - if (mac_addr) { -- sta = sta_info_get(sdata, mac_addr); -+ sta = sta_info_get_bss(sdata, mac_addr); - if (!sta) { - ieee80211_key_free(key); - err = -ENOENT; -@@ -179,7 +179,7 @@ static int ieee80211_del_key(struct wiph - if (mac_addr) { - ret = -ENOENT; - -- sta = sta_info_get(sdata, mac_addr); -+ sta = sta_info_get_bss(sdata, mac_addr); - if (!sta) - goto out_unlock; - -@@ -226,7 +226,7 @@ static int ieee80211_get_key(struct wiph - rcu_read_lock(); - - if (mac_addr) { -- sta = sta_info_get(sdata, mac_addr); -+ sta = sta_info_get_bss(sdata, mac_addr); - if (!sta) - goto out; - -@@ -419,7 +419,7 @@ static int ieee80211_get_station(struct - - rcu_read_lock(); - -- sta = sta_info_get(sdata, mac); -+ sta = sta_info_get_bss(sdata, mac); - if (sta) { - ret = 0; - sta_set_sinfo(sta, sinfo); -@@ -775,7 +775,7 @@ static int ieee80211_del_station(struct - if (mac) { - rcu_read_lock(); - -- sta = sta_info_get(sdata, mac); -+ sta = sta_info_get_bss(sdata, mac); - if (!sta) { - rcu_read_unlock(); - return -ENOENT; -@@ -803,7 +803,7 @@ static int ieee80211_change_station(stru - - rcu_read_lock(); - -- sta = sta_info_get(sdata, mac); -+ sta = sta_info_get_bss(sdata, mac); - if (!sta) { - rcu_read_unlock(); - return -ENOENT; |