aboutsummaryrefslogtreecommitdiffstats
path: root/net/mac80211/rx.c
diff options
context:
space:
mode:
authorJohannes Berg <johannes.berg@intel.com>2012-07-06 15:55:11 -0400
committerJohannes Berg <johannes.berg@intel.com>2012-07-12 06:10:43 -0400
commit5260a5b2c3524f198ea062fe0a6a4faa724e6a9d (patch)
tree9524bf3dbcb65b6a0125e6a276e313527fd4d4d2 /net/mac80211/rx.c
parente2fd5dbc1c7031be5b5de043bcc0a18c7a59a68a (diff)
mac80211: track scheduled scan virtual interface
Instead of tracking whether or not we're in a scheduled scan, track the virtual interface (sdata) in an RCU-protected pointer to make it usable from RX to check the MAC address. Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'net/mac80211/rx.c')
-rw-r--r--net/mac80211/rx.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c
index f8cf9e7477a3..17a56151be7f 100644
--- a/net/mac80211/rx.c
+++ b/net/mac80211/rx.c
@@ -421,13 +421,13 @@ ieee80211_rx_h_passive_scan(struct ieee80211_rx_data *rx)
421 struct sk_buff *skb = rx->skb; 421 struct sk_buff *skb = rx->skb;
422 422
423 if (likely(!(status->rx_flags & IEEE80211_RX_IN_SCAN) && 423 if (likely(!(status->rx_flags & IEEE80211_RX_IN_SCAN) &&
424 !local->sched_scanning)) 424 !rcu_access_pointer(local->sched_scan_sdata)))
425 return RX_CONTINUE; 425 return RX_CONTINUE;
426 426
427 if (test_bit(SCAN_HW_SCANNING, &local->scanning) || 427 if (test_bit(SCAN_HW_SCANNING, &local->scanning) ||
428 test_bit(SCAN_SW_SCANNING, &local->scanning) || 428 test_bit(SCAN_SW_SCANNING, &local->scanning) ||
429 test_bit(SCAN_ONCHANNEL_SCANNING, &local->scanning) || 429 test_bit(SCAN_ONCHANNEL_SCANNING, &local->scanning) ||
430 local->sched_scanning) 430 rcu_access_pointer(local->sched_scan_sdata))
431 return ieee80211_scan_rx(rx->sdata, skb); 431 return ieee80211_scan_rx(rx->sdata, skb);
432 432
433 /* scanning finished during invoking of handlers */ 433 /* scanning finished during invoking of handlers */