Browse Source

qcacld-3.0: Cleanup scan request when calling stop adapter

It doesn't record current scan request and won't cleanup being
process scan request. In some Rome platform, host driver just load one
time, scan request status mismatch to cfg80211 if didn't cleanup scan
request, and then cause crash.

Change-Id: I000db80bdf5175775f2415130ee3a2974aefa4ea
CRs-Fixed: 2111330
Wu Gao 7 years ago
parent
commit
aceec6c1fc
2 changed files with 3 additions and 9 deletions
  1. 1 4
      core/hdd/src/wlan_hdd_main.c
  2. 2 5
      core/hdd/src/wlan_hdd_scan.c

+ 1 - 4
core/hdd/src/wlan_hdd_main.c

@@ -4306,11 +4306,9 @@ QDF_STATUS hdd_stop_adapter(struct hdd_context *hdd_ctx, struct hdd_adapter *ada
 	union iwreq_data wrqu;
 	tSirUpdateIE updateIE;
 	unsigned long rc;
-	struct hdd_scan_info *scan_info = NULL;
 
 	ENTER();
 
-	scan_info = &adapter->scan_info;
 	hdd_debug("Disabling queues");
 	wlan_hdd_netif_queue_control(adapter,
 				     WLAN_STOP_ALL_NETIF_QUEUE_N_CARRIER,
@@ -4370,8 +4368,7 @@ QDF_STATUS hdd_stop_adapter(struct hdd_context *hdd_ctx, struct hdd_adapter *ada
 			wireless_send_event(adapter->dev, SIOCGIWAP, &wrqu,
 					    NULL);
 		}
-		if (scan_info != NULL && scan_info->mScanPending)
-			wlan_hdd_scan_abort(adapter);
+		wlan_hdd_scan_abort(adapter);
 
 		wlan_hdd_cleanup_remain_on_channel_ctx(adapter);
 		hdd_clear_fils_connection_info(adapter);

+ 2 - 5
core/hdd/src/wlan_hdd_scan.c

@@ -1433,13 +1433,10 @@ int wlan_hdd_vendor_abort_scan(
 int wlan_hdd_scan_abort(struct hdd_adapter *adapter)
 {
 	struct hdd_context *hdd_ctx = WLAN_HDD_GET_CTX(adapter);
-	struct hdd_scan_info *pScanInfo = NULL;
 
-	pScanInfo = &adapter->scan_info;
+	wlan_abort_scan(hdd_ctx->hdd_pdev, INVAL_PDEV_ID,
+			adapter->sessionId, INVALID_SCAN_ID, true);
 
-	if (pScanInfo->mScanPending)
-		wlan_abort_scan(hdd_ctx->hdd_pdev, INVAL_PDEV_ID,
-				adapter->sessionId, INVALID_SCAN_ID, true);
 	return 0;
 }