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
This commit is contained in:
Ratnam Rachuri 2016-11-04 16:58:53 +05:30 committed by qcabuildsw
parent 491021c2a1
commit b7595a383d
3 changed files with 10 additions and 6 deletions

View File

@ -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;

View File

@ -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;

View File

@ -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);
}