diff options
Diffstat (limited to 'drivers/net/wireless/ath')
| -rw-r--r-- | drivers/net/wireless/ath/ath10k/mac.c | 14 | ||||
| -rw-r--r-- | drivers/net/wireless/ath/ath6kl/cfg80211.c | 17 | ||||
| -rw-r--r-- | drivers/net/wireless/ath/ath9k/channel.c | 5 | ||||
| -rw-r--r-- | drivers/net/wireless/ath/wil6210/cfg80211.c | 6 | ||||
| -rw-r--r-- | drivers/net/wireless/ath/wil6210/main.c | 12 | ||||
| -rw-r--r-- | drivers/net/wireless/ath/wil6210/p2p.c | 6 | ||||
| -rw-r--r-- | drivers/net/wireless/ath/wil6210/wmi.c | 8 |
7 files changed, 52 insertions, 16 deletions
diff --git a/drivers/net/wireless/ath/ath10k/mac.c b/drivers/net/wireless/ath/ath10k/mac.c index d4b7a168f7c0..ebc12c521fe0 100644 --- a/drivers/net/wireless/ath/ath10k/mac.c +++ b/drivers/net/wireless/ath/ath10k/mac.c | |||
| @@ -3858,12 +3858,16 @@ void __ath10k_scan_finish(struct ath10k *ar) | |||
| 3858 | break; | 3858 | break; |
| 3859 | case ATH10K_SCAN_RUNNING: | 3859 | case ATH10K_SCAN_RUNNING: |
| 3860 | case ATH10K_SCAN_ABORTING: | 3860 | case ATH10K_SCAN_ABORTING: |
| 3861 | if (!ar->scan.is_roc) | 3861 | if (!ar->scan.is_roc) { |
| 3862 | ieee80211_scan_completed(ar->hw, | 3862 | struct cfg80211_scan_info info = { |
| 3863 | (ar->scan.state == | 3863 | .aborted = (ar->scan.state == |
| 3864 | ATH10K_SCAN_ABORTING)); | 3864 | ATH10K_SCAN_ABORTING), |
| 3865 | else if (ar->scan.roc_notify) | 3865 | }; |
| 3866 | |||
| 3867 | ieee80211_scan_completed(ar->hw, &info); | ||
| 3868 | } else if (ar->scan.roc_notify) { | ||
| 3866 | ieee80211_remain_on_channel_expired(ar->hw); | 3869 | ieee80211_remain_on_channel_expired(ar->hw); |
| 3870 | } | ||
| 3867 | /* fall through */ | 3871 | /* fall through */ |
| 3868 | case ATH10K_SCAN_STARTING: | 3872 | case ATH10K_SCAN_STARTING: |
| 3869 | ar->scan.state = ATH10K_SCAN_IDLE; | 3873 | ar->scan.state = ATH10K_SCAN_IDLE; |
diff --git a/drivers/net/wireless/ath/ath6kl/cfg80211.c b/drivers/net/wireless/ath/ath6kl/cfg80211.c index 4e11ba06f089..ef5b40ef6d67 100644 --- a/drivers/net/wireless/ath/ath6kl/cfg80211.c +++ b/drivers/net/wireless/ath/ath6kl/cfg80211.c | |||
| @@ -859,7 +859,11 @@ void ath6kl_cfg80211_disconnect_event(struct ath6kl_vif *vif, u8 reason, | |||
| 859 | struct ath6kl *ar = vif->ar; | 859 | struct ath6kl *ar = vif->ar; |
| 860 | 860 | ||
| 861 | if (vif->scan_req) { | 861 | if (vif->scan_req) { |
| 862 | cfg80211_scan_done(vif->scan_req, true); | 862 | struct cfg80211_scan_info info = { |
| 863 | .aborted = true, | ||
| 864 | }; | ||
| 865 | |||
| 866 | cfg80211_scan_done(vif->scan_req, &info); | ||
| 863 | vif->scan_req = NULL; | 867 | vif->scan_req = NULL; |
| 864 | } | 868 | } |
| 865 | 869 | ||
| @@ -1069,6 +1073,9 @@ static int ath6kl_cfg80211_scan(struct wiphy *wiphy, | |||
| 1069 | void ath6kl_cfg80211_scan_complete_event(struct ath6kl_vif *vif, bool aborted) | 1073 | void ath6kl_cfg80211_scan_complete_event(struct ath6kl_vif *vif, bool aborted) |
| 1070 | { | 1074 | { |
| 1071 | struct ath6kl *ar = vif->ar; | 1075 | struct ath6kl *ar = vif->ar; |
| 1076 | struct cfg80211_scan_info info = { | ||
| 1077 | .aborted = aborted, | ||
| 1078 | }; | ||
| 1072 | int i; | 1079 | int i; |
| 1073 | 1080 | ||
| 1074 | ath6kl_dbg(ATH6KL_DBG_WLAN_CFG, "%s: status%s\n", __func__, | 1081 | ath6kl_dbg(ATH6KL_DBG_WLAN_CFG, "%s: status%s\n", __func__, |
| @@ -1089,7 +1096,7 @@ void ath6kl_cfg80211_scan_complete_event(struct ath6kl_vif *vif, bool aborted) | |||
| 1089 | } | 1096 | } |
| 1090 | 1097 | ||
| 1091 | out: | 1098 | out: |
| 1092 | cfg80211_scan_done(vif->scan_req, aborted); | 1099 | cfg80211_scan_done(vif->scan_req, &info); |
| 1093 | vif->scan_req = NULL; | 1100 | vif->scan_req = NULL; |
| 1094 | } | 1101 | } |
| 1095 | 1102 | ||
| @@ -3614,7 +3621,11 @@ void ath6kl_cfg80211_vif_stop(struct ath6kl_vif *vif, bool wmi_ready) | |||
| 3614 | } | 3621 | } |
| 3615 | 3622 | ||
| 3616 | if (vif->scan_req) { | 3623 | if (vif->scan_req) { |
| 3617 | cfg80211_scan_done(vif->scan_req, true); | 3624 | struct cfg80211_scan_info info = { |
| 3625 | .aborted = true, | ||
| 3626 | }; | ||
| 3627 | |||
| 3628 | cfg80211_scan_done(vif->scan_req, &info); | ||
| 3618 | vif->scan_req = NULL; | 3629 | vif->scan_req = NULL; |
| 3619 | } | 3630 | } |
| 3620 | 3631 | ||
diff --git a/drivers/net/wireless/ath/ath9k/channel.c b/drivers/net/wireless/ath/ath9k/channel.c index e56bafcf5864..57e26a640477 100644 --- a/drivers/net/wireless/ath/ath9k/channel.c +++ b/drivers/net/wireless/ath/ath9k/channel.c | |||
| @@ -960,6 +960,9 @@ void ath_roc_complete(struct ath_softc *sc, enum ath_roc_complete_reason reason) | |||
| 960 | void ath_scan_complete(struct ath_softc *sc, bool abort) | 960 | void ath_scan_complete(struct ath_softc *sc, bool abort) |
| 961 | { | 961 | { |
| 962 | struct ath_common *common = ath9k_hw_common(sc->sc_ah); | 962 | struct ath_common *common = ath9k_hw_common(sc->sc_ah); |
| 963 | struct cfg80211_scan_info info = { | ||
| 964 | .aborted = abort, | ||
| 965 | }; | ||
| 963 | 966 | ||
| 964 | if (abort) | 967 | if (abort) |
| 965 | ath_dbg(common, CHAN_CTX, "HW scan aborted\n"); | 968 | ath_dbg(common, CHAN_CTX, "HW scan aborted\n"); |
| @@ -969,7 +972,7 @@ void ath_scan_complete(struct ath_softc *sc, bool abort) | |||
| 969 | sc->offchannel.scan_req = NULL; | 972 | sc->offchannel.scan_req = NULL; |
| 970 | sc->offchannel.scan_vif = NULL; | 973 | sc->offchannel.scan_vif = NULL; |
| 971 | sc->offchannel.state = ATH_OFFCHANNEL_IDLE; | 974 | sc->offchannel.state = ATH_OFFCHANNEL_IDLE; |
| 972 | ieee80211_scan_completed(sc->hw, abort); | 975 | ieee80211_scan_completed(sc->hw, &info); |
| 973 | clear_bit(ATH_OP_SCANNING, &common->op_flags); | 976 | clear_bit(ATH_OP_SCANNING, &common->op_flags); |
| 974 | spin_lock_bh(&sc->chan_lock); | 977 | spin_lock_bh(&sc->chan_lock); |
| 975 | if (test_bit(ATH_OP_MULTI_CHANNEL, &common->op_flags)) | 978 | if (test_bit(ATH_OP_MULTI_CHANNEL, &common->op_flags)) |
diff --git a/drivers/net/wireless/ath/wil6210/cfg80211.c b/drivers/net/wireless/ath/wil6210/cfg80211.c index 62bf9331bd7f..f0e1175fb76a 100644 --- a/drivers/net/wireless/ath/wil6210/cfg80211.c +++ b/drivers/net/wireless/ath/wil6210/cfg80211.c | |||
| @@ -1369,7 +1369,11 @@ static void wil_cfg80211_stop_p2p_device(struct wiphy *wiphy, | |||
| 1369 | mutex_lock(&wil->mutex); | 1369 | mutex_lock(&wil->mutex); |
| 1370 | started = wil_p2p_stop_discovery(wil); | 1370 | started = wil_p2p_stop_discovery(wil); |
| 1371 | if (started && wil->scan_request) { | 1371 | if (started && wil->scan_request) { |
| 1372 | cfg80211_scan_done(wil->scan_request, 1); | 1372 | struct cfg80211_scan_info info = { |
| 1373 | .aborted = true, | ||
| 1374 | }; | ||
| 1375 | |||
| 1376 | cfg80211_scan_done(wil->scan_request, &info); | ||
| 1373 | wil->scan_request = NULL; | 1377 | wil->scan_request = NULL; |
| 1374 | wil->radio_wdev = wil->wdev; | 1378 | wil->radio_wdev = wil->wdev; |
| 1375 | } | 1379 | } |
diff --git a/drivers/net/wireless/ath/wil6210/main.c b/drivers/net/wireless/ath/wil6210/main.c index 8e31d755bbee..4bc92e54984a 100644 --- a/drivers/net/wireless/ath/wil6210/main.c +++ b/drivers/net/wireless/ath/wil6210/main.c | |||
| @@ -850,10 +850,14 @@ int wil_reset(struct wil6210_priv *wil, bool load_fw) | |||
| 850 | mutex_unlock(&wil->wmi_mutex); | 850 | mutex_unlock(&wil->wmi_mutex); |
| 851 | 851 | ||
| 852 | if (wil->scan_request) { | 852 | if (wil->scan_request) { |
| 853 | struct cfg80211_scan_info info = { | ||
| 854 | .aborted = true, | ||
| 855 | }; | ||
| 856 | |||
| 853 | wil_dbg_misc(wil, "Abort scan_request 0x%p\n", | 857 | wil_dbg_misc(wil, "Abort scan_request 0x%p\n", |
| 854 | wil->scan_request); | 858 | wil->scan_request); |
| 855 | del_timer_sync(&wil->scan_timer); | 859 | del_timer_sync(&wil->scan_timer); |
| 856 | cfg80211_scan_done(wil->scan_request, true); | 860 | cfg80211_scan_done(wil->scan_request, &info); |
| 857 | wil->scan_request = NULL; | 861 | wil->scan_request = NULL; |
| 858 | } | 862 | } |
| 859 | 863 | ||
| @@ -1049,10 +1053,14 @@ int __wil_down(struct wil6210_priv *wil) | |||
| 1049 | (void)wil_p2p_stop_discovery(wil); | 1053 | (void)wil_p2p_stop_discovery(wil); |
| 1050 | 1054 | ||
| 1051 | if (wil->scan_request) { | 1055 | if (wil->scan_request) { |
| 1056 | struct cfg80211_scan_info info = { | ||
| 1057 | .aborted = true, | ||
| 1058 | }; | ||
| 1059 | |||
| 1052 | wil_dbg_misc(wil, "Abort scan_request 0x%p\n", | 1060 | wil_dbg_misc(wil, "Abort scan_request 0x%p\n", |
| 1053 | wil->scan_request); | 1061 | wil->scan_request); |
| 1054 | del_timer_sync(&wil->scan_timer); | 1062 | del_timer_sync(&wil->scan_timer); |
| 1055 | cfg80211_scan_done(wil->scan_request, true); | 1063 | cfg80211_scan_done(wil->scan_request, &info); |
| 1056 | wil->scan_request = NULL; | 1064 | wil->scan_request = NULL; |
| 1057 | } | 1065 | } |
| 1058 | 1066 | ||
diff --git a/drivers/net/wireless/ath/wil6210/p2p.c b/drivers/net/wireless/ath/wil6210/p2p.c index 213b8259638c..e0f8aa0ebfac 100644 --- a/drivers/net/wireless/ath/wil6210/p2p.c +++ b/drivers/net/wireless/ath/wil6210/p2p.c | |||
| @@ -252,8 +252,12 @@ void wil_p2p_search_expired(struct work_struct *work) | |||
| 252 | mutex_unlock(&wil->mutex); | 252 | mutex_unlock(&wil->mutex); |
| 253 | 253 | ||
| 254 | if (started) { | 254 | if (started) { |
| 255 | struct cfg80211_scan_info info = { | ||
| 256 | .aborted = false, | ||
| 257 | }; | ||
| 258 | |||
| 255 | mutex_lock(&wil->p2p_wdev_mutex); | 259 | mutex_lock(&wil->p2p_wdev_mutex); |
| 256 | cfg80211_scan_done(wil->scan_request, 0); | 260 | cfg80211_scan_done(wil->scan_request, &info); |
| 257 | wil->scan_request = NULL; | 261 | wil->scan_request = NULL; |
| 258 | wil->radio_wdev = wil->wdev; | 262 | wil->radio_wdev = wil->wdev; |
| 259 | mutex_unlock(&wil->p2p_wdev_mutex); | 263 | mutex_unlock(&wil->p2p_wdev_mutex); |
diff --git a/drivers/net/wireless/ath/wil6210/wmi.c b/drivers/net/wireless/ath/wil6210/wmi.c index b80c5d850e1e..4d92541913c0 100644 --- a/drivers/net/wireless/ath/wil6210/wmi.c +++ b/drivers/net/wireless/ath/wil6210/wmi.c | |||
| @@ -426,15 +426,17 @@ static void wmi_evt_scan_complete(struct wil6210_priv *wil, int id, | |||
| 426 | { | 426 | { |
| 427 | if (wil->scan_request) { | 427 | if (wil->scan_request) { |
| 428 | struct wmi_scan_complete_event *data = d; | 428 | struct wmi_scan_complete_event *data = d; |
| 429 | bool aborted = (data->status != WMI_SCAN_SUCCESS); | 429 | struct cfg80211_scan_info info = { |
| 430 | .aborted = (data->status != WMI_SCAN_SUCCESS), | ||
| 431 | }; | ||
| 430 | 432 | ||
| 431 | wil_dbg_wmi(wil, "SCAN_COMPLETE(0x%08x)\n", data->status); | 433 | wil_dbg_wmi(wil, "SCAN_COMPLETE(0x%08x)\n", data->status); |
| 432 | wil_dbg_misc(wil, "Complete scan_request 0x%p aborted %d\n", | 434 | wil_dbg_misc(wil, "Complete scan_request 0x%p aborted %d\n", |
| 433 | wil->scan_request, aborted); | 435 | wil->scan_request, info.aborted); |
| 434 | 436 | ||
| 435 | del_timer_sync(&wil->scan_timer); | 437 | del_timer_sync(&wil->scan_timer); |
| 436 | mutex_lock(&wil->p2p_wdev_mutex); | 438 | mutex_lock(&wil->p2p_wdev_mutex); |
| 437 | cfg80211_scan_done(wil->scan_request, aborted); | 439 | cfg80211_scan_done(wil->scan_request, &info); |
| 438 | wil->radio_wdev = wil->wdev; | 440 | wil->radio_wdev = wil->wdev; |
| 439 | mutex_unlock(&wil->p2p_wdev_mutex); | 441 | mutex_unlock(&wil->p2p_wdev_mutex); |
| 440 | wil->scan_request = NULL; | 442 | wil->scan_request = NULL; |
