Ver Fonte

qcacld-3.0: Send scan abort notification to Supplicant on band change

qcacld-2.0 to qcacld-3.0 propagation

Current implementation does not handle to send a SCAN ABORT indication
to upper layers, on a Band change when a scan is in progress

Changes are made on SME layer by configuring a 'abortScanIndication'
flag which is a part of the scan command, so that the necessary
action is taken care based on the flag value.

Change-Id: Iffe7e65dc1e8c7951ce3c4be3c21ef2103091d13
CRs-Fixed: 879520
Ratnam Rachuri há 8 anos atrás
pai
commit
b7595a383d
3 ficheiros alterados com 10 adições e 6 exclusões
  1. 1 1
      core/sme/inc/csr_api.h
  2. 1 1
      core/sme/inc/csr_internal.h
  3. 8 4
      core/sme/src/csr/csr_api_scan.c

+ 1 - 1
core/sme/inc/csr_api.h

@@ -186,7 +186,7 @@ typedef enum {
  * to upper layer or not
  */
 typedef enum {
-	eCSR_SCAN_ABORT_DEFAULT,
+	eCSR_SCAN_ABORT_DEFAULT = 1,
 	eCSR_SCAN_ABORT_DUE_TO_BAND_CHANGE, /* Scan abort due to band change */
 	eCSR_SCAN_ABORT_SSID_ONLY
 } eCsrAbortReason;

+ 1 - 1
core/sme/inc/csr_internal.h

@@ -377,7 +377,7 @@ typedef struct tagScanCmd {
 		/* tCsrBGScanRequest bgScanRequest is no longer used */
 	} u;
 	/* This flag will be set while aborting the scan due to band change */
-	bool abortScanDueToBandChange;
+	eCsrAbortReason        abort_scan_indication;
 	qdf_mc_timer_t csr_scan_timer;
 } tScanCmd;
 

+ 8 - 4
core/sme/src/csr/csr_api_scan.c

@@ -4233,7 +4233,8 @@ bool csr_scan_complete(tpAniSirGlobal pMac, tSirSmeScanRsp *pScanRsp)
 		fSuccess = (!csr_ll_is_list_empty(&pMac->scan.tempScanResults,
 						  LL_ACCESS_LOCK));
 	}
-	if (pCommand->u.scanCmd.abortScanDueToBandChange) {
+	if (pCommand->u.scanCmd.abort_scan_indication &
+	    eCSR_SCAN_ABORT_DUE_TO_BAND_CHANGE) {
 		/*
 		 * Scan aborted due to band change
 		 * The scan results need to be flushed
@@ -4246,7 +4247,6 @@ bool csr_scan_complete(tpAniSirGlobal pMac, tSirSmeScanRsp *pScanRsp)
 			sms_log(pMac, LOG1,
 				FL("11d_scan_done, flushing the scan results"));
 		}
-		pCommand->u.scanCmd.abortScanDueToBandChange = false;
 	}
 	csr_save_scan_results(pMac, pCommand->u.scanCmd.reason, sessionId);
 
@@ -5695,6 +5695,10 @@ void csr_scan_call_callback(tpAniSirGlobal pMac, tSmeCmd *pCommand,
 			    eCsrScanStatus scanStatus)
 {
 	if (pCommand->u.scanCmd.callback) {
+		if (pCommand->u.scanCmd.abort_scan_indication) {
+			sms_log(pMac, LOG1, FL("scanDone due to abort"));
+			scanStatus = eCSR_SCAN_ABORT;
+		}
 		pCommand->u.scanCmd.callback(pMac, pCommand->u.scanCmd.pContext,
 					     pCommand->sessionId,
 					     pCommand->u.scanCmd.scanID,
@@ -6878,8 +6882,8 @@ QDF_STATUS csr_abort_scan_from_active_list(tpAniSirGlobal mac_ctx,
 				(eCsrScanForSsid != cmd->u.scanCmd.reason))
 					continue;
 			if (abort_reason == eCSR_SCAN_ABORT_DUE_TO_BAND_CHANGE)
-				cmd->u.scanCmd.abortScanDueToBandChange =
-					true;
+				cmd->u.scanCmd.abort_scan_indication =
+					eCSR_SCAN_ABORT_DUE_TO_BAND_CHANGE;
 			csr_send_scan_abort(mac_ctx, cmd->sessionId,
 						cmd->u.scanCmd.scanID);
 		}