aboutsummaryrefslogtreecommitdiffstats
path: root/net/mac80211/mlme.c
diff options
context:
space:
mode:
authorJohannes Berg <johannes@sipsolutions.net>2009-11-25 11:46:18 -0500
committerJohn W. Linville <linville@tuxdriver.com>2009-12-21 18:38:51 -0500
commitabe60632f311d515b082b450504ee24006023951 (patch)
treea51fc3b135fa8a31cc0d7953be43502ecc6433c6 /net/mac80211/mlme.c
parent15920d8afc87861672e16fa95ae2764b065d6dd3 (diff)
mac80211: make station management completely depend on vif
The station management currently uses the virtual interface, but you cannot add the same station to multiple virtual interfaces if you're communicating with it in multiple ways. This restriction should be lifted so that in the future we can, for instance, support bluetooth 3 with an access point that mac80211 is already associated to. We can do that by requiring all sta_info_get users to provide the virtual interface and making the RX code aware that an address may match more than one station struct. Thanks to the previous patches this one isn't all that large and except for the RX and TX status paths changes has low complexity. Signed-off-by: Johannes Berg <johannes@sipsolutions.net> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net/mac80211/mlme.c')
-rw-r--r--net/mac80211/mlme.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c
index 6dc7b5ad9a41..c16667a7c8df 100644
--- a/net/mac80211/mlme.c
+++ b/net/mac80211/mlme.c
@@ -202,7 +202,7 @@ static u32 ieee80211_enable_ht(struct ieee80211_sub_if_data *sdata,
202 ieee80211_hw_config(local, 0); 202 ieee80211_hw_config(local, 0);
203 203
204 rcu_read_lock(); 204 rcu_read_lock();
205 sta = sta_info_get(local, bssid); 205 sta = sta_info_get(sdata, bssid);
206 if (sta) 206 if (sta)
207 rate_control_rate_update(local, sband, sta, 207 rate_control_rate_update(local, sband, sta,
208 IEEE80211_RC_HT_CHANGED); 208 IEEE80211_RC_HT_CHANGED);
@@ -1070,7 +1070,7 @@ static void ieee80211_set_disassoc(struct ieee80211_sub_if_data *sdata,
1070 netif_carrier_off(sdata->dev); 1070 netif_carrier_off(sdata->dev);
1071 1071
1072 rcu_read_lock(); 1072 rcu_read_lock();
1073 sta = sta_info_get(local, bssid); 1073 sta = sta_info_get(sdata, bssid);
1074 if (sta) 1074 if (sta)
1075 ieee80211_sta_tear_down_BA_sessions(sta); 1075 ieee80211_sta_tear_down_BA_sessions(sta);
1076 rcu_read_unlock(); 1076 rcu_read_unlock();
@@ -1109,7 +1109,7 @@ static void ieee80211_set_disassoc(struct ieee80211_sub_if_data *sdata,
1109 1109
1110 rcu_read_lock(); 1110 rcu_read_lock();
1111 1111
1112 sta = sta_info_get(local, bssid); 1112 sta = sta_info_get(sdata, bssid);
1113 if (!sta) { 1113 if (!sta) {
1114 rcu_read_unlock(); 1114 rcu_read_unlock();
1115 return; 1115 return;
@@ -1489,7 +1489,7 @@ ieee80211_rx_mgmt_assoc_resp(struct ieee80211_sub_if_data *sdata,
1489 rcu_read_lock(); 1489 rcu_read_lock();
1490 1490
1491 /* Add STA entry for the AP */ 1491 /* Add STA entry for the AP */
1492 sta = sta_info_get(local, wk->bss->cbss.bssid); 1492 sta = sta_info_get(sdata, wk->bss->cbss.bssid);
1493 if (!sta) { 1493 if (!sta) {
1494 newsta = true; 1494 newsta = true;
1495 1495
@@ -1857,7 +1857,7 @@ static void ieee80211_rx_mgmt_beacon(struct ieee80211_sub_if_data *sdata,
1857 1857
1858 rcu_read_lock(); 1858 rcu_read_lock();
1859 1859
1860 sta = sta_info_get(local, bssid); 1860 sta = sta_info_get(sdata, bssid);
1861 if (WARN_ON(!sta)) { 1861 if (WARN_ON(!sta)) {
1862 rcu_read_unlock(); 1862 rcu_read_unlock();
1863 return; 1863 return;