SCAN-OFFLOAD: sessionize CSR for eWNI_SME_GET_SCANNED_CHANNEL_REQ.
Sessionizing the CSR for the command
eWNI_SME_GET_SCANNED_CHANNEL_REQ.
Change-Id: I9feac1c38ead616c8aec7d1019ee870efcf8ca78
CRs-fixed: 500914
diff --git a/CORE/MAC/inc/sirApi.h b/CORE/MAC/inc/sirApi.h
index 967ba30..0dd3e66 100644
--- a/CORE/MAC/inc/sirApi.h
+++ b/CORE/MAC/inc/sirApi.h
@@ -889,6 +889,14 @@
-----------------------------*/
} tSirSmeScanReq, *tpSirSmeScanReq;
+typedef struct sSirSmeScanChanReq
+{
+ tANI_U16 type;
+ tANI_U16 msgLen;
+ tANI_U8 sessionId;
+ tANI_U16 transcationId;
+} tSirSmeGetScanChanReq, *tpSirSmeGetScanChanReq;
+
#ifdef FEATURE_OEM_DATA_SUPPORT
#ifndef OEM_DATA_REQ_SIZE
diff --git a/CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c b/CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c
index 34bf65e..385a58a 100644
--- a/CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c
+++ b/CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c
@@ -3105,6 +3105,8 @@
tSirMsgQ mmhMsg;
tpSmeGetScanChnRsp pSirSmeRsp;
tANI_U16 len = 0;
+ tANI_U8 sessionId;
+ tANI_U16 transactionId;
if(pMac->lim.scanChnInfo.numChnInfo > SIR_MAX_SUPPORTED_CHANNEL_LIST)
{
@@ -3131,7 +3133,14 @@
pSirSmeRsp->mesgType = eWNI_SME_GET_SCANNED_CHANNEL_RSP;
pSirSmeRsp->mesgLen = len;
- pSirSmeRsp->sessionId = 0;
+
+ if (pMac->fScanOffload)
+ {
+ limGetSessionInfo(pMac,(tANI_U8 *)pMsgBuf,&sessionId,&transactionId);
+ pSirSmeRsp->sessionId = sessionId;
+ }
+ else
+ pSirSmeRsp->sessionId = 0;
if(pMac->lim.scanChnInfo.numChnInfo)
{
diff --git a/CORE/SME/src/csr/csrApiScan.c b/CORE/SME/src/csr/csrApiScan.c
index 0455e8d..be49909 100644
--- a/CORE/SME/src/csr/csrApiScan.c
+++ b/CORE/SME/src/csr/csrApiScan.c
@@ -1148,7 +1148,8 @@
}
-eHalStatus csrScanGetScanChnInfo(tpAniSirGlobal pMac, void *callback, void *pContext)
+eHalStatus csrScanGetScanChnInfo(tpAniSirGlobal pMac, tANI_U8 sessionId,
+ void *pContext, void *callback)
{
eHalStatus status = eHAL_STATUS_SUCCESS;
tSmeCmd *pScanCmd;
@@ -1165,6 +1166,7 @@
pScanCmd->u.scanCmd.reason = eCsrScanGetScanChnInfo;
//Need to make the following atomic
pScanCmd->u.scanCmd.scanID = pMac->scan.nextScanID++; //let it wrap around
+ pScanCmd->sessionId = sessionId;
status = csrQueueSmeCommand(pMac, pScanCmd, eANI_BOOLEAN_FALSE);
if( !HAL_STATUS_SUCCESS( status ) )
{
@@ -4857,11 +4859,15 @@
//Get the list of channels scanned
if( pCommand->u.scanCmd.reason != eCsrScanUserRequest)
{
- csrScanGetScanChnInfo(pMac, NULL, NULL);
+ csrScanGetScanChnInfo(pMac, pCommand->sessionId,
+ NULL, NULL);
}
else
{
- csrScanGetScanChnInfo(pMac, pCommand->u.scanCmd.callback, pCommand->u.scanCmd.pContext);
+ csrScanGetScanChnInfo(pMac,
+ pCommand->sessionId,
+ pCommand->u.scanCmd.pContext,
+ pCommand->u.scanCmd.callback);
pCommand->u.scanCmd.callback = NULL;
}
}
@@ -5438,7 +5444,7 @@
status = csrSetCfgBackgroundScanPeriod(pMac, pMac->roam.configParam.bgScanInterval);
break;
case eCsrScanGetScanChnInfo:
- status = csrScanGetScanChannelInfo(pMac);
+ status = csrScanGetScanChannelInfo(pMac, pCommand->sessionId);
break;
case eCsrScanUserRequest:
if(pMac->roam.configParam.fScanTwice)
@@ -7465,19 +7471,25 @@
}
-eHalStatus csrScanGetScanChannelInfo(tpAniSirGlobal pMac)
+eHalStatus csrScanGetScanChannelInfo(tpAniSirGlobal pMac, tANI_U8 sessionId)
{
eHalStatus status = eHAL_STATUS_SUCCESS;
tSirMbMsg *pMsg;
tANI_U16 msgLen;
- msgLen = (tANI_U16)(sizeof( tSirMbMsg ));
+ if (pMac->fScanOffload)
+ msgLen = (tANI_U16)(sizeof(tSirSmeGetScanChanReq));
+ else
+ msgLen = (tANI_U16)(sizeof(tSirMbMsg));
+
status = palAllocateMemory(pMac->hHdd, (void **)&pMsg, msgLen);
if(HAL_STATUS_SUCCESS(status))
{
palZeroMemory(pMac->hHdd, pMsg, msgLen);
pMsg->type = eWNI_SME_GET_SCANNED_CHANNEL_REQ;
pMsg->msgLen = msgLen;
+ if (pMac->fScanOffload)
+ ((tSirSmeGetScanChanReq *)pMsg)->sessionId = sessionId;
status = palSendMBMessage(pMac->hHdd, pMsg);
}
diff --git a/CORE/SME/src/csr/csrInsideApi.h b/CORE/SME/src/csr/csrInsideApi.h
index 766e866..d15a02f 100644
--- a/CORE/SME/src/csr/csrInsideApi.h
+++ b/CORE/SME/src/csr/csrInsideApi.h
@@ -285,7 +285,7 @@
void csrRemoveCmdFromPendingList(tpAniSirGlobal pMac, tDblLinkList *pList,
eSmeCommandType commandType );
eHalStatus csrScanAbortMacScanNotForConnect(tpAniSirGlobal pMac);
-eHalStatus csrScanGetScanChannelInfo(tpAniSirGlobal pMac);
+eHalStatus csrScanGetScanChannelInfo(tpAniSirGlobal pMac, tANI_U8 sessionId);
//To age out scan results base. tSmeGetScanChnRsp is a pointer returned by LIM that
//has the information regarding scanned channels.
//The logic is that whenever CSR add a BSS to scan result, it set the age count to