diff options
author | Johannes Berg <johannes.berg@intel.com> | 2012-06-18 13:17:03 -0400 |
---|---|---|
committer | Johannes Berg <johannes.berg@intel.com> | 2012-07-12 06:10:41 -0400 |
commit | fd0142844efa85d89017c89227a0f03de1eee327 (patch) | |
tree | 2b9977f712df0caa3ecda6dd59fe5b34932e2ab6 /net/wireless/scan.c | |
parent | 1c90f9d404a45a1677c1e5791f5a2a8aaee0370a (diff) |
nl80211: move scan API to wdev
The new P2P Device will have to be able to scan for
P2P search, so move scanning to use struct wireless_dev
instead of struct net_device.
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'net/wireless/scan.c')
-rw-r--r-- | net/wireless/scan.c | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/net/wireless/scan.c b/net/wireless/scan.c index af2b1caa37fa..848523a2b22f 100644 --- a/net/wireless/scan.c +++ b/net/wireless/scan.c | |||
@@ -23,7 +23,7 @@ | |||
23 | void ___cfg80211_scan_done(struct cfg80211_registered_device *rdev, bool leak) | 23 | void ___cfg80211_scan_done(struct cfg80211_registered_device *rdev, bool leak) |
24 | { | 24 | { |
25 | struct cfg80211_scan_request *request; | 25 | struct cfg80211_scan_request *request; |
26 | struct net_device *dev; | 26 | struct wireless_dev *wdev; |
27 | #ifdef CONFIG_CFG80211_WEXT | 27 | #ifdef CONFIG_CFG80211_WEXT |
28 | union iwreq_data wrqu; | 28 | union iwreq_data wrqu; |
29 | #endif | 29 | #endif |
@@ -35,29 +35,31 @@ void ___cfg80211_scan_done(struct cfg80211_registered_device *rdev, bool leak) | |||
35 | if (!request) | 35 | if (!request) |
36 | return; | 36 | return; |
37 | 37 | ||
38 | dev = request->dev; | 38 | wdev = request->wdev; |
39 | 39 | ||
40 | /* | 40 | /* |
41 | * This must be before sending the other events! | 41 | * This must be before sending the other events! |
42 | * Otherwise, wpa_supplicant gets completely confused with | 42 | * Otherwise, wpa_supplicant gets completely confused with |
43 | * wext events. | 43 | * wext events. |
44 | */ | 44 | */ |
45 | cfg80211_sme_scan_done(dev); | 45 | if (wdev->netdev) |
46 | cfg80211_sme_scan_done(wdev->netdev); | ||
46 | 47 | ||
47 | if (request->aborted) | 48 | if (request->aborted) |
48 | nl80211_send_scan_aborted(rdev, dev); | 49 | nl80211_send_scan_aborted(rdev, wdev); |
49 | else | 50 | else |
50 | nl80211_send_scan_done(rdev, dev); | 51 | nl80211_send_scan_done(rdev, wdev); |
51 | 52 | ||
52 | #ifdef CONFIG_CFG80211_WEXT | 53 | #ifdef CONFIG_CFG80211_WEXT |
53 | if (!request->aborted) { | 54 | if (wdev->netdev && !request->aborted) { |
54 | memset(&wrqu, 0, sizeof(wrqu)); | 55 | memset(&wrqu, 0, sizeof(wrqu)); |
55 | 56 | ||
56 | wireless_send_event(dev, SIOCGIWSCAN, &wrqu, NULL); | 57 | wireless_send_event(wdev->netdev, SIOCGIWSCAN, &wrqu, NULL); |
57 | } | 58 | } |
58 | #endif | 59 | #endif |
59 | 60 | ||
60 | dev_put(dev); | 61 | if (wdev->netdev) |
62 | dev_put(wdev->netdev); | ||
61 | 63 | ||
62 | rdev->scan_req = NULL; | 64 | rdev->scan_req = NULL; |
63 | 65 | ||
@@ -955,7 +957,7 @@ int cfg80211_wext_siwscan(struct net_device *dev, | |||
955 | } | 957 | } |
956 | 958 | ||
957 | creq->wiphy = wiphy; | 959 | creq->wiphy = wiphy; |
958 | creq->dev = dev; | 960 | creq->wdev = dev->ieee80211_ptr; |
959 | /* SSIDs come after channels */ | 961 | /* SSIDs come after channels */ |
960 | creq->ssids = (void *)&creq->channels[n_channels]; | 962 | creq->ssids = (void *)&creq->channels[n_channels]; |
961 | creq->n_channels = n_channels; | 963 | creq->n_channels = n_channels; |
@@ -1024,12 +1026,12 @@ int cfg80211_wext_siwscan(struct net_device *dev, | |||
1024 | creq->rates[i] = (1 << wiphy->bands[i]->n_bitrates) - 1; | 1026 | creq->rates[i] = (1 << wiphy->bands[i]->n_bitrates) - 1; |
1025 | 1027 | ||
1026 | rdev->scan_req = creq; | 1028 | rdev->scan_req = creq; |
1027 | err = rdev->ops->scan(wiphy, dev, creq); | 1029 | err = rdev->ops->scan(wiphy, creq); |
1028 | if (err) { | 1030 | if (err) { |
1029 | rdev->scan_req = NULL; | 1031 | rdev->scan_req = NULL; |
1030 | /* creq will be freed below */ | 1032 | /* creq will be freed below */ |
1031 | } else { | 1033 | } else { |
1032 | nl80211_send_scan_start(rdev, dev); | 1034 | nl80211_send_scan_start(rdev, dev->ieee80211_ptr); |
1033 | /* creq now owned by driver */ | 1035 | /* creq now owned by driver */ |
1034 | creq = NULL; | 1036 | creq = NULL; |
1035 | dev_hold(dev); | 1037 | dev_hold(dev); |