Jelajahi Sumber

qcacld-3.0: Use common scan api to wait on scan to get completed

Add changes to use common scan api to wait on scan to get completed

Change-Id: I45181908a6a81de21e4ba906f54ae3190aa212d0
CRs-Fixed: 2038093
Abhishek Singh 8 tahun lalu
induk
melakukan
69ccb5164f

+ 2 - 3
core/hdd/src/wlan_hdd_cfg80211.c

@@ -14756,9 +14756,8 @@ static int __wlan_hdd_cfg80211_disconnect(struct wiphy *wiphy,
 		pScanInfo = &pAdapter->scan_info;
 		if (pScanInfo->mScanPending) {
 			hdd_debug("Disconnect is in progress, Aborting Scan");
-			hdd_abort_mac_scan(pHddCtx, pAdapter->sessionId,
-					   INVALID_SCAN_ID,
-					   eCSR_SCAN_ABORT_DEFAULT);
+			wlan_abort_scan(pHddCtx->hdd_pdev, INVAL_PDEV_ID,
+				pAdapter->sessionId, INVALID_SCAN_ID, false);
 		}
 		wlan_hdd_cleanup_remain_on_channel_ctx(pAdapter);
 #ifdef FEATURE_WLAN_TDLS

+ 4 - 17
core/hdd/src/wlan_hdd_hostapd.c

@@ -1675,9 +1675,8 @@ QDF_STATUS hdd_hostapd_sap_event_cb(tpSap_Event pSapEvent,
 		pScanInfo = &pHostapdAdapter->scan_info;
 		/* Lets abort scan to ensure smooth authentication for client */
 		if ((pScanInfo != NULL) && pScanInfo->mScanPending) {
-			hdd_abort_mac_scan(pHddCtx, pHostapdAdapter->sessionId,
-					   INVALID_SCAN_ID,
-					   eCSR_SCAN_ABORT_DEFAULT);
+			wlan_abort_scan(pHddCtx->hdd_pdev, INVAL_PDEV_ID,
+				pHostapdAdapter->sessionId, INVALID_SCAN_ID, false);
 		}
 		if (pHostapdAdapter->device_mode == QDF_P2P_GO_MODE) {
 			/* send peer status indication to oem app */
@@ -8042,7 +8041,6 @@ static int __wlan_hdd_cfg80211_stop_ap(struct wiphy *wiphy,
 	tSirUpdateIE updateIE;
 	beacon_data_t *old;
 	int ret;
-	unsigned long rc;
 	hdd_adapter_list_node_t *pAdapterNode = NULL;
 	hdd_adapter_list_node_t *pNext = NULL;
 
@@ -8101,19 +8099,8 @@ static int __wlan_hdd_cfg80211_stop_ap(struct wiphy *wiphy,
 			if (pScanInfo && pScanInfo->mScanPending) {
 				hdd_debug("Aborting pending scan for device mode:%d",
 				       staAdapter->device_mode);
-				INIT_COMPLETION(pScanInfo->abortscan_event_var);
-				hdd_abort_mac_scan(staAdapter->pHddCtx,
-						   staAdapter->sessionId,
-						   INVALID_SCAN_ID,
-						   eCSR_SCAN_ABORT_DEFAULT);
-				rc = wait_for_completion_timeout(
-					&pScanInfo->abortscan_event_var,
-					msecs_to_jiffies(
-						WLAN_WAIT_TIME_ABORTSCAN));
-				if (!rc) {
-					hdd_err("Timeout occurred while waiting for abortscan");
-					QDF_ASSERT(pScanInfo->mScanPending);
-				}
+				wlan_abort_scan(pHddCtx->hdd_pdev, INVAL_PDEV_ID,
+					staAdapter->sessionId, INVALID_SCAN_ID, true);
 			}
 		}
 

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

@@ -438,19 +438,8 @@ static int __hdd_netdev_notifier_call(struct notifier_block *nb,
 
 	case NETDEV_GOING_DOWN:
 		if (adapter->scan_info.mScanPending != false) {
-			unsigned long rc;
-
-			INIT_COMPLETION(adapter->scan_info.
-					abortscan_event_var);
-			hdd_abort_mac_scan(adapter->pHddCtx,
-					   adapter->sessionId,
-					   INVALID_SCAN_ID,
-					   eCSR_SCAN_ABORT_DEFAULT);
-			rc = wait_for_completion_timeout(
-				&adapter->scan_info.abortscan_event_var,
-				msecs_to_jiffies(WLAN_WAIT_TIME_ABORTSCAN));
-			if (!rc)
-				hdd_err("Timeout occurred while waiting for abortscan");
+			wlan_abort_scan(hdd_ctx->hdd_pdev, INVAL_PDEV_ID,
+				adapter->sessionId, INVALID_SCAN_ID, true);
 		} else {
 			hdd_debug("Scan is not Pending from user");
 		}
@@ -4898,9 +4887,8 @@ QDF_STATUS hdd_abort_mac_scan_all_adapters(hdd_context_t *hdd_ctx)
 		    (adapter->device_mode == QDF_P2P_DEVICE_MODE) ||
 		    (adapter->device_mode == QDF_SAP_MODE) ||
 		    (adapter->device_mode == QDF_P2P_GO_MODE)) {
-			hdd_abort_mac_scan(hdd_ctx, adapter->sessionId,
-					   INVALID_SCAN_ID,
-					   eCSR_SCAN_ABORT_DEFAULT);
+		    wlan_abort_scan(hdd_ctx->hdd_pdev, INVAL_PDEV_ID,
+				adapter->sessionId, INVALID_SCAN_ID, false);
 		}
 		status = hdd_get_next_adapter(hdd_ctx, adapterNode, &pNext);
 		adapterNode = pNext;

+ 2 - 3
core/hdd/src/wlan_hdd_p2p.c

@@ -2289,9 +2289,8 @@ struct wireless_dev *__wlan_hdd_add_virtual_intf(struct wiphy *wiphy,
 		!(wlan_hdd_validate_session_id(pAdapter->sessionId))) {
 		scan_info = &pAdapter->scan_info;
 		if (scan_info->mScanPending) {
-			hdd_abort_mac_scan(pHddCtx, pAdapter->sessionId,
-					   INVALID_SCAN_ID,
-					   eCSR_SCAN_ABORT_DEFAULT);
+			wlan_abort_scan(pHddCtx->hdd_pdev, INVAL_PDEV_ID,
+				pAdapter->sessionId, INVALID_SCAN_ID, false);
 			hdd_debug("Abort Scan while adding virtual interface");
 		}
 	}

+ 3 - 17
core/hdd/src/wlan_hdd_power.c

@@ -1832,23 +1832,9 @@ next_adapter:
 			return -EAGAIN;
 		}
 
-		if (pScanInfo->mScanPending) {
-			INIT_COMPLETION(pScanInfo->abortscan_event_var);
-			hdd_abort_mac_scan(pHddCtx, pAdapter->sessionId,
-					   INVALID_SCAN_ID,
-					   eCSR_SCAN_ABORT_DEFAULT);
-
-			status =
-				wait_for_completion_timeout(&pScanInfo->
-				    abortscan_event_var,
-				    msecs_to_jiffies(WLAN_WAIT_TIME_ABORTSCAN));
-			if (!status) {
-				hdd_err("Timeout occurred while waiting for abort scan");
-				wlan_hdd_inc_suspend_stats(pHddCtx,
-							   SUSPEND_FAIL_SCAN);
-				return -ETIME;
-			}
-		}
+		if (pScanInfo->mScanPending)
+			wlan_abort_scan(pHddCtx->hdd_pdev, INVAL_PDEV_ID,
+				pAdapter->sessionId, INVALID_SCAN_ID, true);
 		status = hdd_get_next_adapter(pHddCtx, pAdapterNode, &pNext);
 		pAdapterNode = pNext;
 	}

+ 7 - 19
core/hdd/src/wlan_hdd_scan.c

@@ -1031,7 +1031,8 @@ void hdd_abort_mac_scan(hdd_context_t *pHddCtx, uint8_t sessionId,
 #ifndef NAPIER_SCAN
 	sme_abort_mac_scan(pHddCtx->hHal, sessionId, scan_id, reason);
 #else
-	wlan_abort_scan(pHddCtx->hdd_pdev, INVAL_PDEV_ID, sessionId, scan_id);
+	wlan_abort_scan(pHddCtx->hdd_pdev, INVAL_PDEV_ID,
+		sessionId, scan_id, false);
 #endif
 }
 /**
@@ -2430,10 +2431,8 @@ static int __wlan_hdd_vendor_abort_scan(
 					  cookie);
 		if (ret != 0)
 			return ret;
-		hdd_abort_mac_scan(hdd_ctx,
-				   HDD_SESSION_ID_INVALID,
-				   scan_id,
-				   eCSR_SCAN_ABORT_DEFAULT);
+		wlan_abort_scan(hdd_ctx->hdd_pdev, INVAL_PDEV_ID,
+				HDD_SESSION_ID_INVALID, scan_id, false);
 	}
 #else
 	wlan_vendor_abort_scan(hdd_ctx->hdd_pdev, data,
@@ -2480,23 +2479,12 @@ int wlan_hdd_scan_abort(hdd_adapter_t *pAdapter)
 {
 	hdd_context_t *pHddCtx = WLAN_HDD_GET_CTX(pAdapter);
 	hdd_scaninfo_t *pScanInfo = NULL;
-	unsigned long rc;
 
 	pScanInfo = &pAdapter->scan_info;
 
-	if (pScanInfo->mScanPending) {
-		INIT_COMPLETION(pScanInfo->abortscan_event_var);
-		hdd_abort_mac_scan(pHddCtx, pAdapter->sessionId,
-				   INVALID_SCAN_ID, eCSR_SCAN_ABORT_DEFAULT);
-
-		rc = wait_for_completion_timeout(
-			&pScanInfo->abortscan_event_var,
-				msecs_to_jiffies(5000));
-		if (!rc) {
-			hdd_err("Timeout occurred while waiting for abort scan");
-			return -ETIME;
-		}
-	}
+	if (pScanInfo->mScanPending)
+		wlan_abort_scan(pHddCtx->hdd_pdev, INVAL_PDEV_ID,
+				pAdapter->sessionId, INVALID_SCAN_ID, true);
 	return 0;
 }
 

+ 2 - 3
core/hdd/src/wlan_hdd_wext.c

@@ -12374,9 +12374,8 @@ int hdd_set_band(struct net_device *dev, u8 ui_band)
 		while (NULL != pAdapterNode && QDF_STATUS_SUCCESS == status) {
 			pAdapter = pAdapterNode->pAdapter;
 			hHal = WLAN_HDD_GET_HAL_CTX(pAdapter);
-			hdd_abort_mac_scan(pHddCtx, pAdapter->sessionId,
-					   INVALID_SCAN_ID,
-					   eCSR_SCAN_ABORT_DUE_TO_BAND_CHANGE);
+			wlan_abort_scan(pHddCtx->hdd_pdev, INVAL_PDEV_ID,
+				pAdapter->sessionId, INVALID_SCAN_ID, false);
 			connectedBand =
 				hdd_conn_get_connected_band
 					(WLAN_HDD_GET_STATION_CTX_PTR(pAdapter));