diff options
author | Johannes Berg <johannes.berg@intel.com> | 2012-01-20 07:55:21 -0500 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2012-02-06 14:48:24 -0500 |
commit | f09603a259ffef69ad4516a04eb06cd65ac522fe (patch) | |
tree | 3f826769c697eb15a76771e25291bbb54f9f58ab /net/mac80211/util.c | |
parent | 71ec375c75095002f36f083ceb32bbb8725734ae (diff) |
mac80211: add sta_state callback
(based on Eliad's patch)
Add a callback to notify the low-level driver whenever
the state of a station changes. The driver is only
notified when the station is actually in the mac80211
hash table, not for pre-insert state transitions.
To allow the driver to replace sta_add/remove calls
with this, call extra transitions with the NOTEXIST
state.
This callback can fail, so we need to be careful in
handling it when a station is inserted, particularly
in the IBSS case where we still keep the station entry
around for mac80211 purposes.
Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net/mac80211/util.c')
-rw-r--r-- | net/mac80211/util.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/net/mac80211/util.c b/net/mac80211/util.c index d4966e88aa49..8f8b4ecc776f 100644 --- a/net/mac80211/util.c +++ b/net/mac80211/util.c | |||
@@ -1184,8 +1184,16 @@ int ieee80211_reconfig(struct ieee80211_local *local) | |||
1184 | /* add STAs back */ | 1184 | /* add STAs back */ |
1185 | mutex_lock(&local->sta_mtx); | 1185 | mutex_lock(&local->sta_mtx); |
1186 | list_for_each_entry(sta, &local->sta_list, list) { | 1186 | list_for_each_entry(sta, &local->sta_list, list) { |
1187 | if (sta->uploaded) | 1187 | if (sta->uploaded) { |
1188 | enum ieee80211_sta_state state; | ||
1189 | |||
1188 | WARN_ON(drv_sta_add(local, sta->sdata, &sta->sta)); | 1190 | WARN_ON(drv_sta_add(local, sta->sdata, &sta->sta)); |
1191 | |||
1192 | for (state = IEEE80211_STA_NOTEXIST; | ||
1193 | state < sta->sta_state - 1; state++) | ||
1194 | WARN_ON(drv_sta_state(local, sta->sdata, sta, | ||
1195 | state, state + 1)); | ||
1196 | } | ||
1189 | } | 1197 | } |
1190 | mutex_unlock(&local->sta_mtx); | 1198 | mutex_unlock(&local->sta_mtx); |
1191 | 1199 | ||