diff options
author | Johannes Berg <johannes.berg@intel.com> | 2011-12-15 05:17:37 -0500 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2011-12-15 14:46:34 -0500 |
commit | 8bf11d8d081106c3cce8281a0150e716f8ac5d22 (patch) | |
tree | 2b026b9638f7acad90d4712f1675d80f3247a0d1 /net/mac80211/ieee80211_i.h | |
parent | 56544160d44c3043c0a7faffa506f616c1bb45f0 (diff) |
mac80211: delay IBSS station insertion
In order to notify drivers and simplify the station
management code, defer IBSS station insertion to a
work item and don't do it directly while receiving
a frame.
This increases the complexity in IBSS a little bit,
but it's pretty straight forward and it allows us
to reduce the station management complexity (next
patch) considerably.
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net/mac80211/ieee80211_i.h')
-rw-r--r-- | net/mac80211/ieee80211_i.h | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h index 9516c3088fba..eca6063e287c 100644 --- a/net/mac80211/ieee80211_i.h +++ b/net/mac80211/ieee80211_i.h | |||
@@ -482,6 +482,9 @@ struct ieee80211_if_ibss { | |||
482 | struct sk_buff __rcu *presp; | 482 | struct sk_buff __rcu *presp; |
483 | struct sk_buff *skb; | 483 | struct sk_buff *skb; |
484 | 484 | ||
485 | spinlock_t incomplete_lock; | ||
486 | struct list_head incomplete_stations; | ||
487 | |||
485 | enum { | 488 | enum { |
486 | IEEE80211_IBSS_MLME_SEARCH, | 489 | IEEE80211_IBSS_MLME_SEARCH, |
487 | IEEE80211_IBSS_MLME_JOINED, | 490 | IEEE80211_IBSS_MLME_JOINED, |
@@ -1172,9 +1175,8 @@ void ieee80211_sta_reset_conn_monitor(struct ieee80211_sub_if_data *sdata); | |||
1172 | /* IBSS code */ | 1175 | /* IBSS code */ |
1173 | void ieee80211_ibss_notify_scan_completed(struct ieee80211_local *local); | 1176 | void ieee80211_ibss_notify_scan_completed(struct ieee80211_local *local); |
1174 | void ieee80211_ibss_setup_sdata(struct ieee80211_sub_if_data *sdata); | 1177 | void ieee80211_ibss_setup_sdata(struct ieee80211_sub_if_data *sdata); |
1175 | struct sta_info *ieee80211_ibss_add_sta(struct ieee80211_sub_if_data *sdata, | 1178 | void ieee80211_ibss_rx_no_sta(struct ieee80211_sub_if_data *sdata, |
1176 | u8 *bssid, u8 *addr, u32 supp_rates, | 1179 | const u8 *bssid, const u8 *addr, u32 supp_rates); |
1177 | gfp_t gfp); | ||
1178 | int ieee80211_ibss_join(struct ieee80211_sub_if_data *sdata, | 1180 | int ieee80211_ibss_join(struct ieee80211_sub_if_data *sdata, |
1179 | struct cfg80211_ibss_params *params); | 1181 | struct cfg80211_ibss_params *params); |
1180 | int ieee80211_ibss_leave(struct ieee80211_sub_if_data *sdata); | 1182 | int ieee80211_ibss_leave(struct ieee80211_sub_if_data *sdata); |