aboutsummaryrefslogtreecommitdiffstats
path: root/net/mac80211/ieee80211_i.h
diff options
context:
space:
mode:
authorJohannes Berg <johannes.berg@intel.com>2012-07-06 16:19:27 -0400
committerJohannes Berg <johannes.berg@intel.com>2012-07-12 06:10:44 -0400
commitd48b296850f25cb559cb9b907d6d8c09eca3e89d (patch)
treeca2603b4ebfa210dda48c1a311996d826084835e /net/mac80211/ieee80211_i.h
parent5260a5b2c3524f198ea062fe0a6a4faa724e6a9d (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.h6
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 */
219enum ieee80211_packet_rx_flags { 218enum 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);
1248void ieee80211_scan_cancel(struct ieee80211_local *local); 1245void ieee80211_scan_cancel(struct ieee80211_local *local);
1249void ieee80211_run_deferred_scan(struct ieee80211_local *local); 1246void ieee80211_run_deferred_scan(struct ieee80211_local *local);
1250ieee80211_rx_result 1247void ieee80211_scan_rx(struct ieee80211_local *local, struct sk_buff *skb);
1251ieee80211_scan_rx(struct ieee80211_sub_if_data *sdata, struct sk_buff *skb);
1252 1248
1253void ieee80211_mlme_notify_scan_completed(struct ieee80211_local *local); 1249void ieee80211_mlme_notify_scan_completed(struct ieee80211_local *local);
1254struct ieee80211_bss * 1250struct ieee80211_bss *