diff options
Diffstat (limited to 'net/wireless/scan.c')
-rw-r--r-- | net/wireless/scan.c | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/net/wireless/scan.c b/net/wireless/scan.c index ef2955c89a00..0358e12be54b 100644 --- a/net/wireless/scan.c +++ b/net/wireless/scan.c | |||
@@ -3,6 +3,7 @@ | |||
3 | * | 3 | * |
4 | * Copyright 2008 Johannes Berg <johannes@sipsolutions.net> | 4 | * Copyright 2008 Johannes Berg <johannes@sipsolutions.net> |
5 | * Copyright 2013-2014 Intel Mobile Communications GmbH | 5 | * Copyright 2013-2014 Intel Mobile Communications GmbH |
6 | * Copyright 2016 Intel Deutschland GmbH | ||
6 | */ | 7 | */ |
7 | #include <linux/kernel.h> | 8 | #include <linux/kernel.h> |
8 | #include <linux/slab.h> | 9 | #include <linux/slab.h> |
@@ -194,7 +195,7 @@ void ___cfg80211_scan_done(struct cfg80211_registered_device *rdev, | |||
194 | if (wdev->netdev) | 195 | if (wdev->netdev) |
195 | cfg80211_sme_scan_done(wdev->netdev); | 196 | cfg80211_sme_scan_done(wdev->netdev); |
196 | 197 | ||
197 | if (!request->aborted && | 198 | if (!request->info.aborted && |
198 | request->flags & NL80211_SCAN_FLAG_FLUSH) { | 199 | request->flags & NL80211_SCAN_FLAG_FLUSH) { |
199 | /* flush entries from previous scans */ | 200 | /* flush entries from previous scans */ |
200 | spin_lock_bh(&rdev->bss_lock); | 201 | spin_lock_bh(&rdev->bss_lock); |
@@ -202,10 +203,10 @@ void ___cfg80211_scan_done(struct cfg80211_registered_device *rdev, | |||
202 | spin_unlock_bh(&rdev->bss_lock); | 203 | spin_unlock_bh(&rdev->bss_lock); |
203 | } | 204 | } |
204 | 205 | ||
205 | msg = nl80211_build_scan_msg(rdev, wdev, request->aborted); | 206 | msg = nl80211_build_scan_msg(rdev, wdev, request->info.aborted); |
206 | 207 | ||
207 | #ifdef CONFIG_CFG80211_WEXT | 208 | #ifdef CONFIG_CFG80211_WEXT |
208 | if (wdev->netdev && !request->aborted) { | 209 | if (wdev->netdev && !request->info.aborted) { |
209 | memset(&wrqu, 0, sizeof(wrqu)); | 210 | memset(&wrqu, 0, sizeof(wrqu)); |
210 | 211 | ||
211 | wireless_send_event(wdev->netdev, SIOCGIWSCAN, &wrqu, NULL); | 212 | wireless_send_event(wdev->netdev, SIOCGIWSCAN, &wrqu, NULL); |
@@ -236,12 +237,13 @@ void __cfg80211_scan_done(struct work_struct *wk) | |||
236 | rtnl_unlock(); | 237 | rtnl_unlock(); |
237 | } | 238 | } |
238 | 239 | ||
239 | void cfg80211_scan_done(struct cfg80211_scan_request *request, bool aborted) | 240 | void cfg80211_scan_done(struct cfg80211_scan_request *request, |
241 | struct cfg80211_scan_info *info) | ||
240 | { | 242 | { |
241 | trace_cfg80211_scan_done(request, aborted); | 243 | trace_cfg80211_scan_done(request, info); |
242 | WARN_ON(request != wiphy_to_rdev(request->wiphy)->scan_req); | 244 | WARN_ON(request != wiphy_to_rdev(request->wiphy)->scan_req); |
243 | 245 | ||
244 | request->aborted = aborted; | 246 | request->info = *info; |
245 | request->notified = true; | 247 | request->notified = true; |
246 | queue_work(cfg80211_wq, &wiphy_to_rdev(request->wiphy)->scan_done_wk); | 248 | queue_work(cfg80211_wq, &wiphy_to_rdev(request->wiphy)->scan_done_wk); |
247 | } | 249 | } |
@@ -843,6 +845,8 @@ cfg80211_bss_update(struct cfg80211_registered_device *rdev, | |||
843 | found->pub.capability = tmp->pub.capability; | 845 | found->pub.capability = tmp->pub.capability; |
844 | found->ts = tmp->ts; | 846 | found->ts = tmp->ts; |
845 | found->ts_boottime = tmp->ts_boottime; | 847 | found->ts_boottime = tmp->ts_boottime; |
848 | found->parent_tsf = tmp->parent_tsf; | ||
849 | ether_addr_copy(found->parent_bssid, tmp->parent_bssid); | ||
846 | } else { | 850 | } else { |
847 | struct cfg80211_internal_bss *new; | 851 | struct cfg80211_internal_bss *new; |
848 | struct cfg80211_internal_bss *hidden; | 852 | struct cfg80211_internal_bss *hidden; |
@@ -1086,6 +1090,8 @@ cfg80211_inform_bss_frame_data(struct wiphy *wiphy, | |||
1086 | tmp.pub.beacon_interval = le16_to_cpu(mgmt->u.probe_resp.beacon_int); | 1090 | tmp.pub.beacon_interval = le16_to_cpu(mgmt->u.probe_resp.beacon_int); |
1087 | tmp.pub.capability = le16_to_cpu(mgmt->u.probe_resp.capab_info); | 1091 | tmp.pub.capability = le16_to_cpu(mgmt->u.probe_resp.capab_info); |
1088 | tmp.ts_boottime = data->boottime_ns; | 1092 | tmp.ts_boottime = data->boottime_ns; |
1093 | tmp.parent_tsf = data->parent_tsf; | ||
1094 | ether_addr_copy(tmp.parent_bssid, data->parent_bssid); | ||
1089 | 1095 | ||
1090 | signal_valid = abs(data->chan->center_freq - channel->center_freq) <= | 1096 | signal_valid = abs(data->chan->center_freq - channel->center_freq) <= |
1091 | wiphy->max_adj_channel_rssi_comp; | 1097 | wiphy->max_adj_channel_rssi_comp; |