diff options
author | Johannes Berg <johannes@sipsolutions.net> | 2008-10-09 06:18:51 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2008-10-31 19:00:07 -0400 |
commit | e8975581f63870be42ff4662b293d1b0c8c21350 (patch) | |
tree | 3d0d67e73d009ea6480b459585c0a70fc35fa9da /net/mac80211/scan.c | |
parent | 0f4ac38b5999c3d51adad52d61c56c1b99c247ec (diff) |
mac80211: introduce hw config change flags
This makes mac80211 notify the driver which configuration
actually changed, e.g. channel etc.
No driver changes, this is just plumbing, driver authors are
expected to act on this if they want to.
Also remove the HW CONFIG debug printk, it's incorrect, often
we configure something else.
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net/mac80211/scan.c')
-rw-r--r-- | net/mac80211/scan.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/net/mac80211/scan.c b/net/mac80211/scan.c index 0989b1c062e3..7372d7abb8c0 100644 --- a/net/mac80211/scan.c +++ b/net/mac80211/scan.c | |||
@@ -448,12 +448,17 @@ void ieee80211_scan_completed(struct ieee80211_hw *hw) | |||
448 | 448 | ||
449 | if (local->hw_scanning) { | 449 | if (local->hw_scanning) { |
450 | local->hw_scanning = false; | 450 | local->hw_scanning = false; |
451 | ieee80211_hw_config(local); | 451 | /* |
452 | * Somebody might have requested channel change during scan | ||
453 | * that we won't have acted upon, try now. ieee80211_hw_config | ||
454 | * will set the flag based on actual changes. | ||
455 | */ | ||
456 | ieee80211_hw_config(local, 0); | ||
452 | goto done; | 457 | goto done; |
453 | } | 458 | } |
454 | 459 | ||
455 | local->sw_scanning = false; | 460 | local->sw_scanning = false; |
456 | ieee80211_hw_config(local); | 461 | ieee80211_hw_config(local, IEEE80211_CONF_CHANGE_CHANNEL); |
457 | 462 | ||
458 | netif_tx_lock_bh(local->mdev); | 463 | netif_tx_lock_bh(local->mdev); |
459 | netif_addr_lock(local->mdev); | 464 | netif_addr_lock(local->mdev); |
@@ -540,7 +545,8 @@ void ieee80211_scan_work(struct work_struct *work) | |||
540 | 545 | ||
541 | if (!skip) { | 546 | if (!skip) { |
542 | local->scan_channel = chan; | 547 | local->scan_channel = chan; |
543 | if (ieee80211_hw_config(local)) | 548 | if (ieee80211_hw_config(local, |
549 | IEEE80211_CONF_CHANGE_CHANNEL)) | ||
544 | skip = 1; | 550 | skip = 1; |
545 | } | 551 | } |
546 | 552 | ||