diff options
Diffstat (limited to 'net/mac80211/scan.c')
-rw-r--r-- | net/mac80211/scan.c | 19 |
1 files changed, 8 insertions, 11 deletions
diff --git a/net/mac80211/scan.c b/net/mac80211/scan.c index 5f4f7869d050..74820656dc89 100644 --- a/net/mac80211/scan.c +++ b/net/mac80211/scan.c | |||
@@ -294,16 +294,13 @@ void ieee80211_scan_completed(struct ieee80211_hw *hw, bool aborted) | |||
294 | if (was_hw_scan) | 294 | if (was_hw_scan) |
295 | goto done; | 295 | goto done; |
296 | 296 | ||
297 | netif_tx_lock_bh(local->mdev); | 297 | spin_lock_bh(&local->filter_lock); |
298 | netif_addr_lock(local->mdev); | ||
299 | local->filter_flags &= ~FIF_BCN_PRBRESP_PROMISC; | 298 | local->filter_flags &= ~FIF_BCN_PRBRESP_PROMISC; |
300 | drv_configure_filter(local, FIF_BCN_PRBRESP_PROMISC, | 299 | drv_configure_filter(local, FIF_BCN_PRBRESP_PROMISC, |
301 | &local->filter_flags, | 300 | &local->filter_flags, |
302 | local->mdev->mc_count, | 301 | local->mc_count, |
303 | local->mdev->mc_list); | 302 | local->mc_list); |
304 | 303 | spin_unlock_bh(&local->filter_lock); | |
305 | netif_addr_unlock(local->mdev); | ||
306 | netif_tx_unlock_bh(local->mdev); | ||
307 | 304 | ||
308 | drv_sw_scan_complete(local); | 305 | drv_sw_scan_complete(local); |
309 | 306 | ||
@@ -382,13 +379,13 @@ static int ieee80211_start_sw_scan(struct ieee80211_local *local) | |||
382 | local->scan_state = SCAN_SET_CHANNEL; | 379 | local->scan_state = SCAN_SET_CHANNEL; |
383 | local->scan_channel_idx = 0; | 380 | local->scan_channel_idx = 0; |
384 | 381 | ||
385 | netif_addr_lock_bh(local->mdev); | 382 | spin_lock_bh(&local->filter_lock); |
386 | local->filter_flags |= FIF_BCN_PRBRESP_PROMISC; | 383 | local->filter_flags |= FIF_BCN_PRBRESP_PROMISC; |
387 | drv_configure_filter(local, FIF_BCN_PRBRESP_PROMISC, | 384 | drv_configure_filter(local, FIF_BCN_PRBRESP_PROMISC, |
388 | &local->filter_flags, | 385 | &local->filter_flags, |
389 | local->mdev->mc_count, | 386 | local->mc_count, |
390 | local->mdev->mc_list); | 387 | local->mc_list); |
391 | netif_addr_unlock_bh(local->mdev); | 388 | spin_unlock_bh(&local->filter_lock); |
392 | 389 | ||
393 | /* TODO: start scan as soon as all nullfunc frames are ACKed */ | 390 | /* TODO: start scan as soon as all nullfunc frames are ACKed */ |
394 | queue_delayed_work(local->hw.workqueue, &local->scan_work, | 391 | queue_delayed_work(local->hw.workqueue, &local->scan_work, |