]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
wcn36xx: handle scan cancellation when firmware support is missing
authorDaniel Mack <daniel@zonque.org>
Tue, 17 Apr 2018 13:23:35 +0000 (15:23 +0200)
committerKalle Valo <kvalo@codeaurora.org>
Tue, 24 Apr 2018 06:06:13 +0000 (09:06 +0300)
For firmwares that don't have the SCAN_OFFLOAD feature bit set, do
not call into wcn36xx_smd_stop_hw_scan(). Instead, stop the asynchronous
work and call into ieee80211_scan_completed() immediately.

Signed-off-by: Daniel Mack <daniel@zonque.org>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
drivers/net/wireless/ath/wcn36xx/main.c

index 08b6939d3f5751dd22eead03be436bb5a2d90df1..e3b91b3b38efe939bfa3ebcb4391f3a022f28a8d 100644 (file)
@@ -687,10 +687,18 @@ static void wcn36xx_cancel_hw_scan(struct ieee80211_hw *hw,
        wcn->scan_aborted = true;
        mutex_unlock(&wcn->scan_lock);
 
-       /* ieee80211_scan_completed will be called on FW scan indication */
-       wcn36xx_smd_stop_hw_scan(wcn);
+       if (get_feat_caps(wcn->fw_feat_caps, SCAN_OFFLOAD)) {
+               /* ieee80211_scan_completed will be called on FW scan
+                * indication */
+               wcn36xx_smd_stop_hw_scan(wcn);
+       } else {
+               struct cfg80211_scan_info scan_info = {
+                       .aborted = true,
+               };
 
-       cancel_work_sync(&wcn->scan_work);
+               cancel_work_sync(&wcn->scan_work);
+               ieee80211_scan_completed(wcn->hw, &scan_info);
+       }
 }
 
 static void wcn36xx_update_allowed_rates(struct ieee80211_sta *sta,