mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-07-23 23:32:14 +00:00
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>
This commit is contained in:
parent
1c90f9d404
commit
fd0142844e
14 changed files with 57 additions and 47 deletions
|
@ -23,7 +23,7 @@
|
|||
void ___cfg80211_scan_done(struct cfg80211_registered_device *rdev, bool leak)
|
||||
{
|
||||
struct cfg80211_scan_request *request;
|
||||
struct net_device *dev;
|
||||
struct wireless_dev *wdev;
|
||||
#ifdef CONFIG_CFG80211_WEXT
|
||||
union iwreq_data wrqu;
|
||||
#endif
|
||||
|
@ -35,29 +35,31 @@ void ___cfg80211_scan_done(struct cfg80211_registered_device *rdev, bool leak)
|
|||
if (!request)
|
||||
return;
|
||||
|
||||
dev = request->dev;
|
||||
wdev = request->wdev;
|
||||
|
||||
/*
|
||||
* This must be before sending the other events!
|
||||
* Otherwise, wpa_supplicant gets completely confused with
|
||||
* wext events.
|
||||
*/
|
||||
cfg80211_sme_scan_done(dev);
|
||||
if (wdev->netdev)
|
||||
cfg80211_sme_scan_done(wdev->netdev);
|
||||
|
||||
if (request->aborted)
|
||||
nl80211_send_scan_aborted(rdev, dev);
|
||||
nl80211_send_scan_aborted(rdev, wdev);
|
||||
else
|
||||
nl80211_send_scan_done(rdev, dev);
|
||||
nl80211_send_scan_done(rdev, wdev);
|
||||
|
||||
#ifdef CONFIG_CFG80211_WEXT
|
||||
if (!request->aborted) {
|
||||
if (wdev->netdev && !request->aborted) {
|
||||
memset(&wrqu, 0, sizeof(wrqu));
|
||||
|
||||
wireless_send_event(dev, SIOCGIWSCAN, &wrqu, NULL);
|
||||
wireless_send_event(wdev->netdev, SIOCGIWSCAN, &wrqu, NULL);
|
||||
}
|
||||
#endif
|
||||
|
||||
dev_put(dev);
|
||||
if (wdev->netdev)
|
||||
dev_put(wdev->netdev);
|
||||
|
||||
rdev->scan_req = NULL;
|
||||
|
||||
|
@ -955,7 +957,7 @@ int cfg80211_wext_siwscan(struct net_device *dev,
|
|||
}
|
||||
|
||||
creq->wiphy = wiphy;
|
||||
creq->dev = dev;
|
||||
creq->wdev = dev->ieee80211_ptr;
|
||||
/* SSIDs come after channels */
|
||||
creq->ssids = (void *)&creq->channels[n_channels];
|
||||
creq->n_channels = n_channels;
|
||||
|
@ -1024,12 +1026,12 @@ int cfg80211_wext_siwscan(struct net_device *dev,
|
|||
creq->rates[i] = (1 << wiphy->bands[i]->n_bitrates) - 1;
|
||||
|
||||
rdev->scan_req = creq;
|
||||
err = rdev->ops->scan(wiphy, dev, creq);
|
||||
err = rdev->ops->scan(wiphy, creq);
|
||||
if (err) {
|
||||
rdev->scan_req = NULL;
|
||||
/* creq will be freed below */
|
||||
} else {
|
||||
nl80211_send_scan_start(rdev, dev);
|
||||
nl80211_send_scan_start(rdev, dev->ieee80211_ptr);
|
||||
/* creq now owned by driver */
|
||||
creq = NULL;
|
||||
dev_hold(dev);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue