diff options
author | Johannes Berg <johannes.berg@intel.com> | 2012-07-06 16:19:27 -0400 |
---|---|---|
committer | Johannes Berg <johannes.berg@intel.com> | 2012-07-12 06:10:44 -0400 |
commit | d48b296850f25cb559cb9b907d6d8c09eca3e89d (patch) | |
tree | ca2603b4ebfa210dda48c1a311996d826084835e /net/mac80211/ieee80211_i.h | |
parent | 5260a5b2c3524f198ea062fe0a6a4faa724e6a9d (diff) |
mac80211: redesign scan RX
Scan receive is rather inefficient when there are
multiple virtual interfaces. We iterate all of the
virtual interfaces and then notify cfg80211 about
each beacon many times.
Redesign scan RX to happen before everything else.
Then we can also get rid of IEEE80211_RX_IN_SCAN
since we don't have to accept frames into the RX
handlers for scanning or scheduled scanning any
more. Overall, this simplifies the code.
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'net/mac80211/ieee80211_i.h')
-rw-r--r-- | net/mac80211/ieee80211_i.h | 6 |
1 files changed, 1 insertions, 5 deletions
diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h index e973a8f96c9b..2a97d668d2da 100644 --- a/net/mac80211/ieee80211_i.h +++ b/net/mac80211/ieee80211_i.h | |||
@@ -207,7 +207,6 @@ typedef unsigned __bitwise__ ieee80211_rx_result; | |||
207 | * enum ieee80211_packet_rx_flags - packet RX flags | 207 | * enum ieee80211_packet_rx_flags - packet RX flags |
208 | * @IEEE80211_RX_RA_MATCH: frame is destined to interface currently processed | 208 | * @IEEE80211_RX_RA_MATCH: frame is destined to interface currently processed |
209 | * (incl. multicast frames) | 209 | * (incl. multicast frames) |
210 | * @IEEE80211_RX_IN_SCAN: received while scanning | ||
211 | * @IEEE80211_RX_FRAGMENTED: fragmented frame | 210 | * @IEEE80211_RX_FRAGMENTED: fragmented frame |
212 | * @IEEE80211_RX_AMSDU: a-MSDU packet | 211 | * @IEEE80211_RX_AMSDU: a-MSDU packet |
213 | * @IEEE80211_RX_MALFORMED_ACTION_FRM: action frame is malformed | 212 | * @IEEE80211_RX_MALFORMED_ACTION_FRM: action frame is malformed |
@@ -217,7 +216,6 @@ typedef unsigned __bitwise__ ieee80211_rx_result; | |||
217 | * @rx_flags field of &struct ieee80211_rx_status. | 216 | * @rx_flags field of &struct ieee80211_rx_status. |
218 | */ | 217 | */ |
219 | enum ieee80211_packet_rx_flags { | 218 | enum ieee80211_packet_rx_flags { |
220 | IEEE80211_RX_IN_SCAN = BIT(0), | ||
221 | IEEE80211_RX_RA_MATCH = BIT(1), | 219 | IEEE80211_RX_RA_MATCH = BIT(1), |
222 | IEEE80211_RX_FRAGMENTED = BIT(2), | 220 | IEEE80211_RX_FRAGMENTED = BIT(2), |
223 | IEEE80211_RX_AMSDU = BIT(3), | 221 | IEEE80211_RX_AMSDU = BIT(3), |
@@ -1014,7 +1012,6 @@ struct ieee80211_local { | |||
1014 | unsigned int rx_handlers_drop_nullfunc; | 1012 | unsigned int rx_handlers_drop_nullfunc; |
1015 | unsigned int rx_handlers_drop_defrag; | 1013 | unsigned int rx_handlers_drop_defrag; |
1016 | unsigned int rx_handlers_drop_short; | 1014 | unsigned int rx_handlers_drop_short; |
1017 | unsigned int rx_handlers_drop_passive_scan; | ||
1018 | unsigned int tx_expand_skb_head; | 1015 | unsigned int tx_expand_skb_head; |
1019 | unsigned int tx_expand_skb_head_cloned; | 1016 | unsigned int tx_expand_skb_head_cloned; |
1020 | unsigned int rx_expand_skb_head; | 1017 | unsigned int rx_expand_skb_head; |
@@ -1247,8 +1244,7 @@ int ieee80211_request_scan(struct ieee80211_sub_if_data *sdata, | |||
1247 | struct cfg80211_scan_request *req); | 1244 | struct cfg80211_scan_request *req); |
1248 | void ieee80211_scan_cancel(struct ieee80211_local *local); | 1245 | void ieee80211_scan_cancel(struct ieee80211_local *local); |
1249 | void ieee80211_run_deferred_scan(struct ieee80211_local *local); | 1246 | void ieee80211_run_deferred_scan(struct ieee80211_local *local); |
1250 | ieee80211_rx_result | 1247 | void ieee80211_scan_rx(struct ieee80211_local *local, struct sk_buff *skb); |
1251 | ieee80211_scan_rx(struct ieee80211_sub_if_data *sdata, struct sk_buff *skb); | ||
1252 | 1248 | ||
1253 | void ieee80211_mlme_notify_scan_completed(struct ieee80211_local *local); | 1249 | void ieee80211_mlme_notify_scan_completed(struct ieee80211_local *local); |
1254 | struct ieee80211_bss * | 1250 | struct ieee80211_bss * |