diff options
Diffstat (limited to 'sta_dk_4_0_4_32/common')
23 files changed, 613 insertions, 205 deletions
diff --git a/sta_dk_4_0_4_32/common/inc/paramOut.h b/sta_dk_4_0_4_32/common/inc/paramOut.h index 7bc0265..89e29f3 100644 --- a/sta_dk_4_0_4_32/common/inc/paramOut.h +++ b/sta_dk_4_0_4_32/common/inc/paramOut.h @@ -860,6 +860,29 @@ typedef struct{ } content; } paramInfo_t; + +/* paramInfoPartial_t is part of paramInfo_t it is implemented to reduce stack usage */ +typedef struct{ + UINT32 paramType; + UINT32 paramLength; + + union + { + TspecConfigure_t TspecConfigure; + BOOL rsnPreAuthStatus; + macAddress_t rsnApMac; + cipherSuite_e rsnEncryptionStatus; + BOOL rsnMixedMode; + + /* Application Config Parameters Manager */ + applicationConfigBuffer_t applicationConfigBuffer; + + /* ctrl data section */ + preamble_e ctrlDataCurrentPreambleType; + + } content; +}paramInfoPartial_t; + /* Set/get params function prototype */ typedef TI_STATUS (*paramFunc_t)(TI_HANDLE handle, paramInfo_t *pParam); @@ -1224,16 +1247,16 @@ typedef struct UINT32 beaconReceiveTime; UINT8 hangoverPeriod; UINT8 beaconListenInterval; - UINT8 dtimListenInterval; + UINT8 dtimListenInterval; UINT8 nConsecutiveBeaconsMissed; UINT8 EnterTo802_11PsRetries; UINT8 HwPsPollResponseTimeout; - UINT16 autoModeInterval; - UINT16 autoModeActiveTH; - UINT16 autoModeDozeTH; + UINT16 autoModeInterval; + UINT16 autoModeActiveTH; + UINT16 autoModeDozeTH; PowerMgr_PowerMode_e autoModeDozeMode; - powerAutho_PowerPolicy_e defaultPowerLevel; + powerAutho_PowerPolicy_e defaultPowerLevel; powerAutho_PowerPolicy_e PowerSavePowerLevel; @@ -1254,7 +1277,7 @@ typedef struct UINT8 listenInterval; /* BET */ - UINT32 MaximalFullBeaconReceptionInterval; /* maximal time between full beacon reception */ + UINT32 MaximalFullBeaconReceptionInterval; /* maximal "beacon periods" between full beacon reception */ UINT8 BetEnableThreshold; UINT8 BetDisableThreshold; UINT8 BetEnable; diff --git a/sta_dk_4_0_4_32/common/inc/wspVer.h b/sta_dk_4_0_4_32/common/inc/wspVer.h index 637a82b..47c6348 100644 --- a/sta_dk_4_0_4_32/common/inc/wspVer.h +++ b/sta_dk_4_0_4_32/common/inc/wspVer.h @@ -51,9 +51,9 @@ /* base version */ -#define SW_RELEASE_MONTH 2 -#define SW_RELEASE_DAY 14 -#define SW_RELEASE_YEAR 2008 +#define SW_RELEASE_MONTH 6 +#define SW_RELEASE_DAY 5 +#define SW_RELEASE_YEAR 2008 #endif /* _WSP_VER_H_ */ diff --git a/sta_dk_4_0_4_32/common/src/Application/Roaming/roamingMngr.c b/sta_dk_4_0_4_32/common/src/Application/Roaming/roamingMngr.c index f046f44..7df98f2 100644 --- a/sta_dk_4_0_4_32/common/src/Application/Roaming/roamingMngr.c +++ b/sta_dk_4_0_4_32/common/src/Application/Roaming/roamingMngr.c @@ -426,6 +426,10 @@ TI_STATUS roamingMngr_init(TI_HANDLE hRoamingMngr, { roamingMngr_t *pRoamingMngr; TI_STATUS status; +#ifdef ENABLE_ROAMING_BY_DEFAULT + roamingMngrConfigParams_t InitRoamingParams; + paramInfo_t param; +#endif #ifdef TI_DBG UINT8 index; #endif @@ -520,15 +524,7 @@ TI_STATUS roamingMngr_init(TI_HANDLE hRoamingMngr, /* Init intrenal variables */ pRoamingMngr->currentState = ROAMING_STATE_IDLE; -#ifdef ENABLE_ROAMING_BY_DEFAULT - pRoamingMngr->roamingMngrConfig.enableDisable = ROAMING_ENABLED; - apConn_registerRoamMngrCallb(pRoamingMngr->hAPConnection, - roamingMngr_triggerRoamingCb, - roamingMngr_connStatusCb, - roamingMngr_updateNeighborApListCb); -#else pRoamingMngr->roamingMngrConfig.enableDisable = ROAMING_DISABLED; -#endif pRoamingMngr->roamingTrigger = ROAMING_TRIGGER_NONE; pRoamingMngr->maskRoamingEvents= TRUE; pRoamingMngr->scanType = ROAMING_NO_SCAN; @@ -564,7 +560,36 @@ TI_STATUS roamingMngr_init(TI_HANDLE hRoamingMngr, ROAMING_MNGR_NUM_STATES, ROAMING_MNGR_NUM_EVENTS, roamingMngr_smEvent, pRoamingMngr->hOs); - +#ifdef ENABLE_ROAMING_BY_DEFAULT + if (status != OK) + { + return status; + } + + param.paramType = ROAMING_MNGR_APPLICATION_CONFIGURATION; + param.content.applicationConfigBuffer.bufferSize = sizeof(roamingMngrConfigParams_t); + param.content.applicationConfigBuffer.buffer = (UINT8 *)¶m; + InitRoamingParams.roamingMngrConfig.enableDisable = ROAMING_ENABLED; + + InitRoamingParams.roamingMngrConfig.lowPassFilterRoamingAttempt = 30; + InitRoamingParams.roamingMngrConfig.apQualityThreshold = -70; + + InitRoamingParams.roamingMngrThresholdsConfig.dataRetryThreshold = 20; + InitRoamingParams.roamingMngrThresholdsConfig.numExpectedTbttForBSSLoss = 10; + InitRoamingParams.roamingMngrThresholdsConfig.txRateThreshold = 2; + InitRoamingParams.roamingMngrThresholdsConfig.lowRssiThreshold = -80; + InitRoamingParams.roamingMngrThresholdsConfig.lowSnrThreshold = 0; + InitRoamingParams.roamingMngrThresholdsConfig.lowQualityForBackgroungScanCondition = -60; + InitRoamingParams.roamingMngrThresholdsConfig.normalQualityForBackgroungScanCondition = -50; + InitRoamingParams.roamingMngrThresholdsConfig.rssiFilterWeight = 10; + InitRoamingParams.roamingMngrThresholdsConfig.snrFilterWeight = 10; + + param.paramType = ROAMING_MNGR_APPLICATION_CONFIGURATION; + param.content.applicationConfigBuffer.bufferSize = sizeof(roamingMngrConfigParams_t); + param.content.applicationConfigBuffer.buffer = (UINT8 *)&InitRoamingParams; + + roamingMngr_setParam (hRoamingMngr,¶m); +#endif return status; } @@ -680,7 +705,16 @@ TI_STATUS roamingMngr_setParam(TI_HANDLE hRoamingMngr, paramInfo_t *pParam) WLAN_REPORT_INFORMATION(pRoamingMngr->hReport, ROAMING_MANAGER_MODULE_LOG, ("roamingMngr_setParam TRIGGER_EVENT= %d \n", pParam->content.roamingTriggerType)); - apConn_reportRoamingEvent(pRoamingMngr->hAPConnection, (apConn_roamingTrigger_e)pParam->content.roamingTriggerType, NULL); + + if ((apConn_roamingTrigger_e)pParam->content.roamingTriggerType == ROAMING_TRIGGER_AP_DISCONNECT) + { + /* DeAuth packet with status code of deauth/disassoc packet equal to 1 */ + apConn_reportRoamingEventDisconnect(pRoamingMngr->hAPConnection ,1 ,TRUE); + } + else + { + apConn_reportRoamingEvent(pRoamingMngr->hAPConnection, (apConn_roamingTrigger_e)pParam->content.roamingTriggerType, NULL); + } break; case ROAMING_MNGR_CONN_STATUS: @@ -1286,7 +1320,7 @@ TI_STATUS roamingMngr_updateNewBssList(TI_HANDLE hRoamingMngr, bssList_t *bssLis ("roamingMngr_updateNewBssList, No Pre-Auth is required\n")); return OK; } - apConn_preAuthenticate(pRoamingMngr->hAPConnection, bssList); + apConn_preAuthenticate(pRoamingMngr->hAPConnection, bssList, bssList->numOfEntries); return OK; @@ -1408,7 +1442,11 @@ static TI_STATUS roamingMngr_smRoamTrigger(TI_HANDLE hRoamingMngr) apConn_prepareToRoaming(pRoamingMngr->hAPConnection, pRoamingMngr->roamingTrigger); /* Get the current BSSIDs from ScanMngr */ +#if 0 pRoamingMngr->pListOfAPs = scanMngr_getBSSList(pRoamingMngr->hScanMngr); +#else + pRoamingMngr->pListOfAPs = NULL; /* force immediate scan */ +#endif if ((pRoamingMngr->pListOfAPs != NULL) && (pRoamingMngr->pListOfAPs->numOfEntries > 0)) { /* No need to SCAN, start SELECTING */ roamingEvent = ROAMING_EVENT_SELECT; @@ -1466,6 +1504,8 @@ static TI_STATUS roamingMngr_smInvokeScan(TI_HANDLE hRoamingMngr) return NOK; } + scanMngrClearBSSListEntry(pRoamingMngr->hScanMngr); + /* check which scan should be performed: Partial on list of channels, or full scan */ if ((pRoamingMngr->scanType == ROAMING_PARTIAL_SCAN) || (pRoamingMngr->scanType == ROAMING_PARTIAL_SCAN_RETRY)) @@ -1832,12 +1872,11 @@ static TI_STATUS roamingMngr_smSuccHandover(TI_HANDLE hRoamingMngr) for the current AP */ if (pRoamingMngr->staCapabilities.authMode==os802_11AuthModeWPA2) { /* No Pre-Auth is required */ - bssList_t bssList; + UINT8 dummy; WLAN_REPORT_INFORMATION(pRoamingMngr->hReport, ROAMING_MANAGER_MODULE_LOG, ("roamingMngr_smStartIdle, Pre-Auth to cur AP\n")); - bssList.numOfEntries = 0; - apConn_preAuthenticate(pRoamingMngr->hAPConnection, &bssList); + apConn_preAuthenticate(pRoamingMngr->hAPConnection, (bssList_t *)&dummy, 0); } return OK; @@ -2025,12 +2064,10 @@ static TI_STATUS roamingMngr_smStartIdle(void *pData) for the current AP */ if (pRoamingMngr->staCapabilities.authMode==os802_11AuthModeWPA2) { /* No Pre-Auth is required */ - bssList_t bssList; - + UINT8 dummy; WLAN_REPORT_INFORMATION(pRoamingMngr->hReport, ROAMING_MANAGER_MODULE_LOG, ("roamingMngr_smStartIdle, Pre-Auth to cur AP\n")); - bssList.numOfEntries = 0; - apConn_preAuthenticate(pRoamingMngr->hAPConnection, &bssList); + apConn_preAuthenticate(pRoamingMngr->hAPConnection, (bssList_t *)&dummy, 0); } return OK; diff --git a/sta_dk_4_0_4_32/common/src/Application/ScanMngr/scanMngr.c b/sta_dk_4_0_4_32/common/src/Application/ScanMngr/scanMngr.c index de3a388..c65742c 100644 --- a/sta_dk_4_0_4_32/common/src/Application/ScanMngr/scanMngr.c +++ b/sta_dk_4_0_4_32/common/src/Application/ScanMngr/scanMngr.c @@ -3363,6 +3363,15 @@ void scanMngrAddNormalChannel( TI_HANDLE hScanMngr, scan_Method_t* scanMethod, U MAC_ADDR_LEN ); } +/* Clear all candidate BSSList for Roaming */ +void scanMngrClearBSSListEntry( TI_HANDLE hScanMngr ) +{ + scanMngr_t* pScanMngr = (scanMngr_t*)hScanMngr; + + while(pScanMngr->BSSList.numOfEntries) + scanMngrRemoveBSSListEntry(hScanMngr, pScanMngr->BSSList.numOfEntries-1); +} + /** * \author Ronen Kalish\n * \date 02-Mar-2005\n diff --git a/sta_dk_4_0_4_32/common/src/Application/inc/scanMngrApi.h b/sta_dk_4_0_4_32/common/src/Application/inc/scanMngrApi.h index 3a129be..50fc482 100644 --- a/sta_dk_4_0_4_32/common/src/Application/inc/scanMngrApi.h +++ b/sta_dk_4_0_4_32/common/src/Application/inc/scanMngrApi.h @@ -300,6 +300,9 @@ TI_STATUS scanMngr_setParam( TI_HANDLE hScanMngr, paramInfo_t *pParam ); */ void scanMngr_setScanPolicy( TI_HANDLE hScanMngr, scan_Policy_t* scanPolicy ); +/* Clear all candidate BSSList for Roaming */ +void scanMngrClearBSSListEntry( TI_HANDLE hScanMngr ); + #ifdef TI_DBG /** * \author Ronen Kalish\n diff --git a/sta_dk_4_0_4_32/common/src/Management/QOS/Inc/qosMngr_API.h b/sta_dk_4_0_4_32/common/src/Management/QOS/Inc/qosMngr_API.h index 3335715..46d9021 100644 --- a/sta_dk_4_0_4_32/common/src/Management/QOS/Inc/qosMngr_API.h +++ b/sta_dk_4_0_4_32/common/src/Management/QOS/Inc/qosMngr_API.h @@ -104,8 +104,12 @@ TI_STATUS qosMngr_connect(TI_HANDLE hQosMngr); TI_STATUS qosMngr_setParams(TI_HANDLE hQosMngr,paramInfo_t *pParamInfo); +TI_STATUS qosMngr_setParamsPartial(TI_HANDLE hQosMngr,paramInfoPartial_t *pParamInfo); + TI_STATUS qosMngr_getParams(TI_HANDLE hQosMngr,paramInfo_t *pParamInfo); +TI_STATUS qosMngr_getParamsPatial(TI_HANDLE hQosMngr,paramInfoPartial_t *pParamInfo); + TI_STATUS qosMngr_assocReqBuild(TI_HANDLE hQosMngr, UINT8 *pQosIe, UINT8 *pLen); TI_STATUS qosMngr_setSite(TI_HANDLE hQosMngr, assocRsp_t *assocRsp); diff --git a/sta_dk_4_0_4_32/common/src/Management/QOS/qosMngr.c b/sta_dk_4_0_4_32/common/src/Management/QOS/qosMngr.c index 05d9841..48afd4e 100644 --- a/sta_dk_4_0_4_32/common/src/Management/QOS/qosMngr.c +++ b/sta_dk_4_0_4_32/common/src/Management/QOS/qosMngr.c @@ -735,7 +735,93 @@ UINT8 qosMngr_evalSite(TI_HANDLE hQosMngr, BOOL siteAPSDSupport) return 0; } +/************************************************************************ + * qosMngr_getParamsPatial * + ************************************************************************ +DESCRIPTION: The function is an API for external modules to qet qos parameters + +INPUT: hQosMngr - Qos Manager handle. + pParamInfo - qos parameters information. + + +OUTPUT: + +RETURN: OK on success, NOK otherwise + +************************************************************************/ + +TI_STATUS qosMngr_getParamsPatial(TI_HANDLE hQosMngr,paramInfoPartial_t *pParamInfo) +{ + qosMngr_t *pQosMngr = (qosMngr_t *)hQosMngr; + + if(pQosMngr == NULL) + return NOK; + + WLAN_REPORT_INFORMATION(pQosMngr->hReport, QOS_MANAGER_MODULE_LOG, ("qosMngr_getParams: %x\n", pParamInfo->paramType)); + + switch(pParamInfo->paramType) + { + + case QOS_MNGR_VOICE_RE_NEGOTIATE_TSPEC: + /* Check if voice call present. If so, store current TSPEC configuration */ + pParamInfo->content.TspecConfigure.voiceTspecConfigure = (UINT8)pQosMngr->voiceTspecConfigured; + pParamInfo->content.TspecConfigure.videoTspecConfigure = (UINT8)pQosMngr->videoTspecConfigured; + + WLAN_REPORT_INFORMATION(pQosMngr->hReport, QOS_MANAGER_MODULE_LOG, ("qosMngr_getParams: QOS_MNGR_VOICE_RE_NEGOTIATE_TSPEC=%d\n", pQosMngr->voiceTspecConfigured)); + + if (pQosMngr->voiceTspecConfigured == TRUE) + { + OS_802_11_QOS_TSPEC_PARAMS *pTspecParams; + tspecInfo_t *pConfiguredParams; + + /* Store voice TSPEC params - must be configured */ + pTspecParams = &pQosMngr->tspecRenegotiationParams[USER_PRIORITY_6]; + pConfiguredParams = &pQosMngr->resourceMgmtTable.candidateTspecInfo[USER_PRIORITY_6]; + + pTspecParams->uUserPriority = pConfiguredParams->userPriority; + pTspecParams->uNominalMSDUsize = pConfiguredParams->nominalMsduSize; + pTspecParams->uMeanDataRate = pConfiguredParams->meanDataRate; + pTspecParams->uMinimumPHYRate = pConfiguredParams->minimumPHYRate; + pTspecParams->uSurplusBandwidthAllowance = pConfiguredParams->surplausBwAllowance; + pTspecParams->uAPSDFlag = pConfiguredParams->UPSDFlag; + pTspecParams->uMediumTime = pConfiguredParams->mediumTime; + } + else + { + pQosMngr->tspecRenegotiationParams[USER_PRIORITY_6].uUserPriority = MAX_USER_PRIORITY; + } + + if (pQosMngr->videoTspecConfigured == TRUE) + { + OS_802_11_QOS_TSPEC_PARAMS *pTspecParams; + tspecInfo_t *pConfiguredParams; + + /* Store signalling TSPEC params if configured in user priority 4 */ + pTspecParams = &pQosMngr->tspecRenegotiationParams[USER_PRIORITY_4]; + pConfiguredParams = &pQosMngr->resourceMgmtTable.candidateTspecInfo[USER_PRIORITY_4]; + + pTspecParams->uUserPriority = pConfiguredParams->userPriority; + pTspecParams->uNominalMSDUsize = pConfiguredParams->nominalMsduSize; + pTspecParams->uMeanDataRate = pConfiguredParams->meanDataRate; + pTspecParams->uMinimumPHYRate = pConfiguredParams->minimumPHYRate; + pTspecParams->uSurplusBandwidthAllowance = pConfiguredParams->surplausBwAllowance; + pTspecParams->uAPSDFlag = pConfiguredParams->UPSDFlag; + pTspecParams->uMediumTime = pConfiguredParams->mediumTime; + } + else + { + pQosMngr->tspecRenegotiationParams[USER_PRIORITY_4].uUserPriority = MAX_USER_PRIORITY; + } + break; + + default: + WLAN_REPORT_ERROR(pQosMngr->hReport, QOS_MANAGER_MODULE_LOG, + ("qosMngr_getParamsExtend Error: unknown paramType 0x%x!\n",pParamInfo->paramType)); + return (PARAM_NOT_SUPPORTED); + } + return OK; +} /************************************************************************ * qosMngr_getACparams * @@ -1207,6 +1293,43 @@ TI_STATUS qosMngr_setParams(TI_HANDLE hQosMngr,paramInfo_t *pParamInfo) } +TI_STATUS qosMngr_setParamsPartial(TI_HANDLE hQosMngr,paramInfoPartial_t *pParamInfo) +{ + qosMngr_t *pQosMngr = (qosMngr_t *)hQosMngr; + + if(pQosMngr == NULL) + return NOK; + + if(pParamInfo == NULL) + { + WLAN_REPORT_ERROR(pQosMngr->hReport, QOS_MANAGER_MODULE_LOG, + ("qosMngr_setParams :Error trying to set NULL params!\n")); + return NOK; + } + + WLAN_REPORT_INFORMATION(pQosMngr->hReport, QOS_MANAGER_MODULE_LOG, ("qosMngr_setParams: %x\n", pParamInfo->paramType)); + + switch(pParamInfo->paramType) + { + case QOS_MNGR_VOICE_RE_NEGOTIATE_TSPEC: + if( pParamInfo->content.TspecConfigure.voiceTspecConfigure || pParamInfo->content.TspecConfigure.videoTspecConfigure) + pQosMngr->performTSPECRenegotiation = TRUE; + else + pQosMngr->performTSPECRenegotiation = FALSE; + + WLAN_REPORT_INFORMATION(pQosMngr->hReport, QOS_MANAGER_MODULE_LOG, + ("qosMngr_setParams: QOS_MNGR_VOICE_RE_NEGOTIATE_TSPEC=%d\n", pQosMngr->performTSPECRenegotiation)); + break; + + default: + WLAN_REPORT_ERROR(pQosMngr->hReport, QOS_MANAGER_MODULE_LOG, + ("qosMngr_getParams Error: unknown paramType 0x%x!\n",pParamInfo->paramType)); + return (PARAM_NOT_SUPPORTED); + } + + return OK; +} + /************************************************************************ * verifyAndConfigTrafficParams * ************************************************************************ @@ -2283,7 +2406,6 @@ TI_STATUS qosMngr_requestAdmission(TI_HANDLE hQosMngr, } /* check msdu size validity */ - if( (addTspecParams->uNominalMSDUsize & !FIX_MSDU_SIZE) > MAX_DATA_BODY_LENGTH) { WLAN_REPORT_ERROR(pQosMngr->hReport, QOS_MANAGER_MODULE_LOG,("uNominalMSDUsize = %d > 2312, !!!\n",addTspecParams->uNominalMSDUsize)); diff --git a/sta_dk_4_0_4_32/common/src/Management/apConn/apConn.c b/sta_dk_4_0_4_32/common/src/Management/apConn/apConn.c index 26df7d9..d025f8e 100644 --- a/sta_dk_4_0_4_32/common/src/Management/apConn/apConn.c +++ b/sta_dk_4_0_4_32/common/src/Management/apConn/apConn.c @@ -1204,13 +1204,13 @@ BOOL apConn_getPreAuthAPStatus(TI_HANDLE hAPConnection, macAddress_t *givenAp) { apConn_t *pAPConnection = (apConn_t *)hAPConnection; - paramInfo_t param; + paramInfoPartial_t param; AP_CONN_VALIDATE_HANDLE(hAPConnection); param.paramType = RSN_PRE_AUTH_STATUS; os_memoryCopy(pAPConnection->hOs, (void *)param.content.rsnApMac.addr, (void *)givenAp->addr, MAC_ADDR_LEN); - rsn_getParam(pAPConnection->hPrivacy, ¶m); + rsn_getParamPartial(pAPConnection->hPrivacy, ¶m); return param.content.rsnPreAuthStatus; } @@ -1237,7 +1237,7 @@ BOOL apConn_getPreAuthAPStatus(TI_HANDLE hAPConnection, * * \sa */ -TI_STATUS apConn_preAuthenticate(TI_HANDLE hAPConnection, bssList_t *listAPs) +TI_STATUS apConn_preAuthenticate(TI_HANDLE hAPConnection, bssList_t *listAPs, UINT8 listAPs_numOfEntries) { apConn_t *pAPConnection = (apConn_t *)hAPConnection; bssidList4PreAuth_t apList; @@ -1255,27 +1255,34 @@ TI_STATUS apConn_preAuthenticate(TI_HANDLE hAPConnection, bssList_t *listAPs) WLAN_REPORT_INFORMATION(pAPConnection->hReport, SITE_MGR_MODULE_LOG, ("apConn_reserveResources \n")); #endif - for (listIndex=0, apListIndex=0; listIndex<listAPs->numOfEntries; listIndex++) - { - os_memoryCopy(pAPConnection->hOs, &(apList.bssidList[apListIndex].bssId), - (void *)listAPs->BSSList[listIndex].BSSID.addr, MAC_ADDR_LEN); - - /* search in the buffer pointer to the beginning of the - RSN IE according to the IE ID */ - if (!parseIeBuffer(pAPConnection->hOs, listAPs->BSSList[listIndex].pBuffer, listAPs->BSSList[listIndex].bufferLength, RSN_IE_ID, &pRsnIEs, NULL, 0)) + if (listAPs_numOfEntries != 0) { + for (listIndex=0, apListIndex=0; listIndex<listAPs->numOfEntries; listIndex++) + { + os_memoryCopy(pAPConnection->hOs, &(apList.bssidList[apListIndex].bssId), + (void *)listAPs->BSSList[listIndex].BSSID.addr, MAC_ADDR_LEN); + + /* search in the buffer pointer to the beginning of the + RSN IE according to the IE ID */ + if (!parseIeBuffer(pAPConnection->hOs, listAPs->BSSList[listIndex].pBuffer, listAPs->BSSList[listIndex].bufferLength, RSN_IE_ID, &pRsnIEs, NULL, 0)) + { + WLAN_REPORT_INFORMATION(pAPConnection->hReport, ROAMING_MANAGER_MODULE_LOG, + ("apConn_preAuthenticate, no RSN IE was found \n")); + WLAN_REPORT_HEX_INFORMATION(pAPConnection->hReport, ROAMING_MANAGER_MODULE_LOG, + listAPs->BSSList[listIndex].pBuffer, listAPs->BSSList[listIndex].bufferLength); + + continue; + } + + apList.bssidList[apListIndex].pRsnIEs = (dot11_RSN_t*)pRsnIEs; + apList.bssidList[apListIndex].rsnIeLen = apList.bssidList[apListIndex].pRsnIEs->hdr.eleLen+2; + apListIndex++; + } + } + else { - WLAN_REPORT_INFORMATION(pAPConnection->hReport, ROAMING_MANAGER_MODULE_LOG, - ("apConn_preAuthenticate, no RSN IE was found \n")); - WLAN_REPORT_HEX_INFORMATION(pAPConnection->hReport, ROAMING_MANAGER_MODULE_LOG, - listAPs->BSSList[listIndex].pBuffer, listAPs->BSSList[listIndex].bufferLength); - - continue; - } - - apList.bssidList[apListIndex].pRsnIEs = (dot11_RSN_t*)pRsnIEs; - apList.bssidList[apListIndex].rsnIeLen = apList.bssidList[apListIndex].pRsnIEs->hdr.eleLen+2; - apListIndex++; - } + listIndex=0; + apListIndex=0; + } /* Start pre-auth after any Conn succ (including first), and not only when a New BSSID was added, in order to save/refresh @@ -1472,6 +1479,37 @@ TI_STATUS apConn_stop(TI_HANDLE hAPConnection, BOOLEAN removeKeys, BOOLEAN immed return OK; } +/** +* +* apConn_reportRoamingEventDisconnect +* +* \b Description: +* +* Called by Roaming Manager to inform of Disconnect +* uStatusCode - status code of deauth/disassoc packet +* bDeAuthenticate - Whether this packet is DeAuth ( if +* DisAssoc than FALSE) +* +* \b ARGS: +* +* +* \b RETURNS: +* +* OK if successful, NOK otherwise. +* +* \sa +*/ +TI_STATUS apConn_reportRoamingEventDisconnect(TI_HANDLE hAPConnection,UINT16 uStatusCode,BOOLEAN bDeAuthenticate ) +{ + apConn_t *pAPConnection = (apConn_t *)hAPConnection; + roamingEventData_u RoamingEventData; + + RoamingEventData.APDisconnect.uStatusCode = uStatusCode ; /* status code of deauth/disassoc packet */ + RoamingEventData.APDisconnect.bDeAuthenticate = bDeAuthenticate; /* TRUE state that it is DeAuth packet */ + apConn_reportRoamingEvent(pAPConnection, ROAMING_TRIGGER_AP_DISCONNECT, &RoamingEventData); + return( TI_OK ); +} + /** * @@ -1618,19 +1656,14 @@ TI_STATUS apConn_reportRoamingEvent(TI_HANDLE hAPConnection, return OK; } - if (roamingEventType == ROAMING_TRIGGER_LOW_QUALITY) - { - EvHandlerSendEvent(pAPConnection->hEvHandler, IPC_EVENT_LOW_RSSI, NULL,0); - } - else if (roamingEventType == ROAMING_TRIGGER_LOW_SNR) - { - EvHandlerSendEvent(pAPConnection->hEvHandler, IPC_EVENT_LOW_SNR, NULL,0); - } - /* 5. Report Roaming Manager */ if ((pAPConnection->roamingEnabled == TRUE) && (pAPConnection->roamEventCallb != NULL)) { WLAN_REPORT_INFORMATION(pAPConnection->hReport, ROAMING_MANAGER_MODULE_LOG, ("Roaming event raised: ev = %d\n", roamingEventType)); + if (roamingEventType == ROAMING_TRIGGER_LOW_QUALITY) + { + EvHandlerSendEvent(pAPConnection->hEvHandler, IPC_EVENT_LOW_RSSI, NULL,0); + } /* Report to Roaming Manager */ pAPConnection->roamEventCallb(pAPConnection->hRoamMng, &roamingEventType); } @@ -1789,6 +1822,28 @@ void apConn_resetRoamingStatistics(TI_HANDLE hAPConnection) /** * +* apConn_stopRoamingStatistics +* +* \b Description: +* +* Called from Measurement CCX sub-module in order to stop roaming statistics. +* +* \b ARGS: AP Connection handle +* +* \b RETURNS: +* +* \sa +*/ +void apConn_stopRoamingStatistics(TI_HANDLE hAPConnection) +{ + apConn_t *pAPConnection = (apConn_t *)hAPConnection; + + pAPConnection->resetReportedRoamingStatistics = FALSE; +} + + +/** +* * apConn_printStatistics * * \b Description: @@ -1815,7 +1870,7 @@ void apConn_printStatistics(TI_HANDLE hAPConnection) WLAN_OS_REPORT(("- AP Disconnect = %d\n", ((apConn_t *)hAPConnection)->roamingTriggerEvents[ROAMING_TRIGGER_AP_DISCONNECT])); WLAN_OS_REPORT(("- SEC attack = %d\n", ((apConn_t *)hAPConnection)->roamingTriggerEvents[ROAMING_TRIGGER_SECURITY_ATTACK])); WLAN_OS_REPORT(("\n")); - WLAN_OS_REPORT(("- Succesfull roaming = %d\n", ((apConn_t *)hAPConnection)->roamingSuccesfulHandoverTotalNum)); + WLAN_OS_REPORT(("- Succesfull Total roaming = %d\n", ((apConn_t *)hAPConnection)->roamingSuccesfulHandoverTotalNum)); WLAN_OS_REPORT(("- Unsuccesfull roaming = %d\n", ((apConn_t *)hAPConnection)->roamingFailedHandoverNum)); WLAN_OS_REPORT(("- Giving up roaming = %d\n", ((apConn_t *)hAPConnection)->retainCurrAPNum)); WLAN_OS_REPORT(("- Disconnect cmd from roaming manager = %d\n", ((apConn_t *)hAPConnection)->disconnectFromRoamMngrNum)); @@ -1985,7 +2040,7 @@ static TI_STATUS apConn_startWaitingForTriggers(void *pData) { apConn_t *pAPConnection; apConn_connStatus_t reportStatus; - paramInfo_t param; + paramInfoPartial_t param; pAPConnection = (apConn_t *)pData; @@ -1993,7 +2048,7 @@ static TI_STATUS apConn_startWaitingForTriggers(void *pData) { param.paramType = ASSOC_ASSOCIATION_RESP_PARAM; - assoc_getParam(pAPConnection->hAssoc, ¶m); + assoc_getParamPartial(pAPConnection->hAssoc, ¶m); reportStatus.dataBuf = (char *)(param.content.applicationConfigBuffer.buffer); reportStatus.dataBufLength = param.content.applicationConfigBuffer.bufferSize; @@ -2034,7 +2089,7 @@ static TI_STATUS apConn_connectedToNewAP(void *pData) { apConn_t *pAPConnection; apConn_connStatus_t reportStatus; - paramInfo_t param; + paramInfoPartial_t param; pAPConnection = (apConn_t *)pData; @@ -2055,7 +2110,7 @@ static TI_STATUS apConn_connectedToNewAP(void *pData) { param.paramType = ASSOC_ASSOCIATION_RESP_PARAM; - assoc_getParam(pAPConnection->hAssoc, ¶m); + assoc_getParamPartial(pAPConnection->hAssoc, ¶m); reportStatus.dataBuf = (char *)(param.content.applicationConfigBuffer.buffer); reportStatus.dataBufLength = param.content.applicationConfigBuffer.bufferSize; @@ -2378,7 +2433,7 @@ static TI_STATUS apConn_invokeConnectionToNewAp(void *data) { apConn_t *pAPConnection; connType_e connType; - paramInfo_t param; + paramInfoPartial_t param; UINT8 staPrivacySupported, apPrivacySupported; BOOL renegotiateTspec = FALSE; @@ -2388,7 +2443,7 @@ static TI_STATUS apConn_invokeConnectionToNewAp(void *data) /* Check privacy compatibility */ param.paramType = RSN_ENCRYPTION_STATUS_PARAM; - rsn_getParam(pAPConnection->hPrivacy, ¶m); + rsn_getParamPartial(pAPConnection->hPrivacy, ¶m); staPrivacySupported = (param.content.rsnEncryptionStatus == RSN_CIPHER_NONE) ? FALSE : TRUE; apPrivacySupported = ((pAPConnection->newAP->capabilities >> CAP_PRIVACY_SHIFT) & CAP_PRIVACY_MASK) ? TRUE : FALSE; @@ -2396,7 +2451,7 @@ static TI_STATUS apConn_invokeConnectionToNewAp(void *data) if (staPrivacySupported != apPrivacySupported) { param.paramType = RSN_MIXED_MODE; - rsn_getParam(pAPConnection->hPrivacy, ¶m); + rsn_getParamPartial(pAPConnection->hPrivacy, ¶m); if (apPrivacySupported || (!param.content.rsnMixedMode && staPrivacySupported)) @@ -2477,7 +2532,7 @@ static TI_STATUS apConn_reportConnFail(void *data) { apConn_t *pAPConnection; apConn_connStatus_t reportStatus; - paramInfo_t param; + paramInfoPartial_t param; pAPConnection = (apConn_t *)data; @@ -2492,7 +2547,7 @@ static TI_STATUS apConn_reportConnFail(void *data) { param.paramType = ASSOC_ASSOCIATION_RESP_PARAM; - assoc_getParam(pAPConnection->hAssoc, ¶m); + assoc_getParamPartial(pAPConnection->hAssoc, ¶m); reportStatus.dataBuf = (char *)(param.content.applicationConfigBuffer.buffer); reportStatus.dataBufLength = param.content.applicationConfigBuffer.bufferSize; @@ -2526,12 +2581,12 @@ static TI_STATUS apConn_reportConnFail(void *data) static TI_STATUS apConn_configureDriverBeforeRoaming(void *pData) { apConn_t *pAPConnection = (apConn_t*)pData; - paramInfo_t param; + paramInfoPartial_t param; /* Configure SCR group of allowed clients according to 'Roaming' rule */ scr_setGroup (pAPConnection->hScr, SCR_GID_ROAMING); param.paramType = QOS_MNGR_VOICE_RE_NEGOTIATE_TSPEC; - qosMngr_getParams(pAPConnection->hQos, ¶m); + qosMngr_getParamsPatial(pAPConnection->hQos, ¶m); pAPConnection->voiceTspecConfigured = param.content.TspecConfigure.voiceTspecConfigure; pAPConnection->videoTspecConfigured = param.content.TspecConfigure.videoTspecConfigure; pAPConnection->resetReportedRoamingStatistics = FALSE; diff --git a/sta_dk_4_0_4_32/common/src/TNETW_Driver/MacServices/src/PowerAuthorization/PowerAuthorization.c b/sta_dk_4_0_4_32/common/src/TNETW_Driver/MacServices/src/PowerAuthorization/PowerAuthorization.c index fe9471a..f22c1e4 100644 --- a/sta_dk_4_0_4_32/common/src/TNETW_Driver/MacServices/src/PowerAuthorization/PowerAuthorization.c +++ b/sta_dk_4_0_4_32/common/src/TNETW_Driver/MacServices/src/PowerAuthorization/PowerAuthorization.c @@ -212,7 +212,6 @@ int powerAutho_CalcMinPowerLevel(TI_HANDLE hPowerAutho) { powerAutho_t *pPowerAutho = (powerAutho_t*)hPowerAutho; powerAutho_PowerPolicy_e newMinPowerLevel; - whalParamInfo_t ParamInfo; /* calc the new MinPowerLevel */ if(pPowerAutho->m_AwakeRequired > 0) @@ -235,10 +234,7 @@ int powerAutho_CalcMinPowerLevel(TI_HANDLE hPowerAutho) whalCtrl_ElpCtrl_SetMode(pPowerAutho->hHalCtrl, pPowerAutho->m_ElpCtrl_Mode_LUT[newMinPowerLevel]); /* Send MIB with PowerPolicy */ - ParamInfo.paramType = (UINT32)HAL_CTRL_MIN_POWER_LEVEL; - ParamInfo.paramLength = sizeof(powerAutho_PowerPolicy_e); - ParamInfo.content.minPowerPolicy = newMinPowerLevel; - whalCtrl_SetParam(pPowerAutho->hHalCtrl, &ParamInfo); + whalCtrl_SetMinPowerLevel(pPowerAutho->hHalCtrl, newMinPowerLevel); return OK; } } @@ -297,13 +293,12 @@ int powerAutho_Restart(TI_HANDLE hMacServices) { powerAutho_t *pPowerAutho = (powerAutho_t*)(((MacServices_t*)hMacServices)->hPowerAutho); - /* set as 'before init complete' */ + /* set as 'before init complete' */ pPowerAutho->initComplete = FALSE; pPowerAutho->m_PowerPolicy = POWERAUTHO_POLICY_AWAKE; pPowerAutho->m_MinPowerLevel = POWERAUTHO_POLICY_AWAKE; - return pPowerAutho->m_MinPowerLevel; } diff --git a/sta_dk_4_0_4_32/common/src/TNETW_Driver/TNETWIF/BusTxn/whalHwAccess.c b/sta_dk_4_0_4_32/common/src/TNETW_Driver/TNETWIF/BusTxn/whalHwAccess.c index 500a11a..9f3c601 100644 --- a/sta_dk_4_0_4_32/common/src/TNETW_Driver/TNETWIF/BusTxn/whalHwAccess.c +++ b/sta_dk_4_0_4_32/common/src/TNETW_Driver/TNETWIF/BusTxn/whalHwAccess.c @@ -117,7 +117,7 @@ #else /* ifdef _WINDOWS */ #endif /* ifdef _WINDOWS */ -#elif HW_ACCESS_WSPI +#elif defined(HW_ACCESS_WSPI) #include "wspi.h" @@ -357,7 +357,7 @@ TI_HANDLE whal_hwAccess_Create(TI_HANDLE hOs) status = SDIO_Init(&configParams, &pHwAccess->hDriver); -#elif HW_ACCESS_WSPI +#elif defined(HW_ACCESS_WSPI) pHwAccess->AsyncMode = TRUE; @@ -403,7 +403,7 @@ int whal_hwAccess_Destroy(TI_HANDLE hHwAccess) SDIO_Stop(pHwAccess->hDriver, 0); SDIO_Shutdown(pHwAccess->hDriver); -#elif HW_ACCESS_WSPI +#elif defined(HW_ACCESS_WSPI) WSPI_Close(pHwAccess->hDriver); @@ -463,7 +463,7 @@ int whal_hwAccess_Config(TI_HANDLE hHwAccess, TI_HANDLE hReport,UINT32 RegBaseAd status = (status == SDIO_SUCCESS) ? TNETWIF_COMPLETE : TNETWIF_ERROR; -#elif HW_ACCESS_WSPI +#elif defined(HW_ACCESS_WSPI) wspi_config.isFixedAddress = FALSE; wspi_config.fixedBusyLength = HW_ACCESS_WSPI_FIXED_BUSY_LEN; @@ -509,7 +509,7 @@ int whal_hwAccess_ReConfig(TI_HANDLE hHwAccess) #ifdef HW_ACCESS_SDIO SDIO_Stop (pHwAccess->hDriver, 0); SDIO_Start (pHwAccess->hDriver); -#elif HW_ACCESS_WSPI +#elif defined(HW_ACCESS_WSPI) /* TODO*/ #endif #endif /* _WINDOWS */ @@ -539,7 +539,7 @@ int whal_hwAccess_WriteELP (TI_HANDLE hHwAccess, UINT32 data) #ifdef HW_ACCESS_SDIO status = SDIO_TNETW_Set_ELP_Reg(pHwAccess->hDriver, HW_ACCESS_ELP_CTRL_REG_ADDR, data); -#elif HW_ACCESS_WSPI +#elif defined(HW_ACCESS_WSPI) status = WSPI_WriteSync (pHwAccess->hDriver, HW_ACCESS_ELP_CTRL_REG_ADDR, (UINT8*)&data, HW_ACCESS_REGISTER_SIZE); #endif @@ -738,7 +738,7 @@ int whal_hwAccess_ReadMem_Align(TI_HANDLE hHwAccess, UINT32 addr, UINT8* os_profile (pHwAccess->hOs, 3, 0); -#elif HW_ACCESS_WSPI +#elif defined(HW_ACCESS_WSPI) /* check address */ if (((addr+len) > pHwAccess->workingPartUpperLimit) || (addr < pHwAccess->MemRegionAddr)) @@ -839,7 +839,7 @@ int whal_hwAccess_WriteMem_Align(TI_HANDLE hHwAccess, UINT32 addr, UINT8 os_profile (pHwAccess->hOs, 3, 0); -#elif HW_ACCESS_WSPI +#elif defined(HW_ACCESS_WSPI) /* check address */ if (((addr+len) > pHwAccess->workingPartUpperLimit) || (addr < pHwAccess->MemRegionAddr)) @@ -1123,7 +1123,7 @@ int whal_hwAccess_ReadMem(TI_HANDLE hHwAccess, UINT32 addr, UINT8* data, #ifdef HW_ACCESS_SDIO struct SDIO_Request request; -#elif HW_ACCESS_WSPI +#elif defined(HW_ACCESS_WSPI) int reminder = len%HW_ACCESS_WSPI_ALIGNED_SIZE; int tempLen = len - reminder; UINT32 mask = 0; @@ -1189,7 +1189,7 @@ int whal_hwAccess_ReadMem(TI_HANDLE hHwAccess, UINT32 addr, UINT8* data, return status; } -#elif HW_ACCESS_WSPI +#elif defined(HW_ACCESS_WSPI) /* check address */ if (((addr+len) > pHwAccess->workingPartUpperLimit) || (addr < pHwAccess->MemRegionAddr)) @@ -1297,7 +1297,7 @@ int whal_hwAccess_WriteMem(TI_HANDLE hHwAccess, UINT32 addr, UINT8* data #ifdef HW_ACCESS_SDIO struct SDIO_Request request; -#elif HW_ACCESS_WSPI +#elif defined(HW_ACCESS_WSPI) int reminder = len % HW_ACCESS_WSPI_ALIGNED_SIZE; int tempLen = len - reminder; UINT32 mask = 0; @@ -1360,7 +1360,7 @@ int whal_hwAccess_WriteMem(TI_HANDLE hHwAccess, UINT32 addr, UINT8* data return status; } -#elif HW_ACCESS_WSPI +#elif defined(HW_ACCESS_WSPI) /* check address */ if (((addr+len) > pHwAccess->workingPartUpperLimit) || (addr < pHwAccess->MemRegionAddr)) @@ -1705,7 +1705,7 @@ int whal_hwAccess_ReadMemAsync (TI_HANDLE hHwAccess, UINT32 addr, UINT8* data, U return TNETWIF_COMPLETE; } -#elif HW_ACCESS_WSPI +#elif defined(HW_ACCESS_WSPI) os_profile (pHwAccess->hOs, 2, 0); @@ -1779,7 +1779,7 @@ int whal_hwAccess_ReadReg(TI_HANDLE hHwAccess, UINT32 addr, UINT32* data os_profile (pHwAccess->hOs, 3, 0); -#elif HW_ACCESS_WSPI +#elif defined(HW_ACCESS_WSPI) status = whal_hwAccess_ReadRegAsync(hHwAccess, addr, data); if (status == TNETWIF_COMPLETE) @@ -1856,7 +1856,7 @@ int whal_hwAccess_Stop(TI_HANDLE hHwAccess) #ifdef HW_ACCESS_SDIO SDIO_Stop(pHwAccess->hDriver,0); -#elif defined (HW_ACCESS_WSPI) +#elif defined(HW_ACCESS_WSPI) /* TODO*/ #endif return OK; @@ -1914,7 +1914,7 @@ int whal_hwAccess_WriteReg(TI_HANDLE hHwAccess, UINT32 addr, UINT32 data os_profile (pHwAccess->hOs, 3, 0); -#elif HW_ACCESS_WSPI +#elif defined(HW_ACCESS_WSPI) status = whal_hwAccess_WriteRegAsync(hHwAccess, addr, data); if (status == TNETWIF_COMPLETE) { @@ -2176,7 +2176,7 @@ int whal_hwAccess_SetPartitions (TI_HANDLE hHwAccess, TNETIF_HwAccess_SetPartiti status = (status == SDIO_SUCCESS) ? SDIO_TNETWConfig(pHwAccess->hDriver, &cfg) : status; status = (status == SDIO_SUCCESS) ? TNETWIF_COMPLETE : TNETWIF_ERROR; -#elif HW_ACCESS_WSPI +#elif defined(HW_ACCESS_WSPI) /* * IMPORTANT NOTE (TODO): the ASYNC API is used here assuming the call will always * be completed synchronously. This is done because only the Async API is wokring @@ -2272,7 +2272,7 @@ int whal_hwAccess_SetPartitionsAsync (TI_HANDLE hHwAccess, TNETIF_HwAccess_SetPa status = (status == SDIO_SUCCESS) ? SDIO_TNETWConfig(pHwAccess->hDriver, &cfg) : status; status = (status == SDIO_SUCCESS) ? TNETWIF_COMPLETE : TNETWIF_ERROR; -#elif HW_ACCESS_WSPI +#elif defined(HW_ACCESS_WSPI) /* May use only one write because the addresses in the firmware are sequential */ status = WSPI_WriteAsync (pHwAccess->hDriver, @@ -2867,7 +2867,7 @@ void whal_hwAccess_Print(TI_HANDLE hHwAccess) return (status == SDIO_SUCCESS) ? OK : NOK; } -#elif defined (HW_ACCESS_WSPI) +#elif defined(HW_ACCESS_WSPI) TI_STATUS whal_hwAccess_RecreateInterface(TI_HANDLE hHwAccess) { HwAccess_T_new *pHwAccess = (HwAccess_T_new*)hHwAccess; diff --git a/sta_dk_4_0_4_32/common/src/core/ExpInc/apConnApi.h b/sta_dk_4_0_4_32/common/src/core/ExpInc/apConnApi.h index b064aca..75d6669 100644 --- a/sta_dk_4_0_4_32/common/src/core/ExpInc/apConnApi.h +++ b/sta_dk_4_0_4_32/common/src/core/ExpInc/apConnApi.h @@ -177,8 +177,9 @@ BOOL apConn_isSiteBanned(TI_HANDLE hAPConnection, macAddress_t * bssid); BOOL apConn_getPreAuthAPStatus(TI_HANDLE hAPConnection, macAddress_t *givenAp); -TI_STATUS apConn_preAuthenticate(TI_HANDLE hAPConnection, bssList_t *listAPs); +TI_STATUS apConn_preAuthenticate(TI_HANDLE hAPConnection, bssList_t *listAPs, UINT8 listAPs_numOfEntries); TI_STATUS apConn_prepareToRoaming(TI_HANDLE hAPConnection, apConn_roamingTrigger_e reason); +TI_STATUS apConn_reportRoamingEventDisconnect(TI_HANDLE hAPConnection,UINT16 uStatusCode,BOOLEAN bDeAuthenticate ); #endif /* _AP_CONNECTION_API_H_*/ diff --git a/sta_dk_4_0_4_32/common/src/core/data_ctrl/Ctrl/Ctrl.c b/sta_dk_4_0_4_32/common/src/core/data_ctrl/Ctrl/Ctrl.c index ac72e51..bcf57e1 100644 --- a/sta_dk_4_0_4_32/common/src/core/data_ctrl/Ctrl/Ctrl.c +++ b/sta_dk_4_0_4_32/common/src/core/data_ctrl/Ctrl/Ctrl.c @@ -220,7 +220,6 @@ TI_STATUS ctrlData_config(TI_HANDLE hCtrlData, pCtrlData->disassocSentCBObj = disassocSentCBObj; pCtrlData->disassocSentCBFunc = disassocSentCBFunc; - /* set Control module parameters */ pCtrlData->ctrlDataRateControlEnable = ctrlDataInitParams->ctrlDataRateControlEnable; pCtrlData->ctrlDataIbssProtectionType = ctrlDataInitParams->ctrlDataDesiredIbssProtection; @@ -491,6 +490,39 @@ TI_STATUS ctrlData_getParam(TI_HANDLE hCtrlData, paramInfo_t *pParamInfo) return (OK); } + +/*************************************************************************** +* ctrlData_getParam * +**************************************************************************** +* DESCRIPTION: get a specific parameter +* +* INPUTS: hCtrlData - the object +* +* +* OUTPUT: pParamInfo - structure which include the value of +* the requested parameter +* +* RETURNS: OK +* NOK +***************************************************************************/ +/* note: ctrlData_getParamPartial() is part of ctrlData_getParam() it was implemented to reduce Stack usage */ +TI_STATUS ctrlData_getParamPartial(TI_HANDLE hCtrlData, paramInfoPartial_t *pParamInfo) +{ + ctrlData_t *pCtrlData = (ctrlData_t *)hCtrlData; + + switch (pParamInfo->paramType) + { + case CTRL_DATA_CURRENT_PREAMBLE_TYPE_PARAM: + pParamInfo->content.ctrlDataCurrentPreambleType = pCtrlData->ctrlDataCurrentPreambleType; + break; + + default: + return (PARAM_NOT_SUPPORTED); + } + + return (OK); +} + /*************************************************************************** * ctrlData_buildSupportedHwRates * **************************************************************************** @@ -1374,6 +1406,7 @@ void ctrlData_txCompleteStatus( TI_HANDLE hCtrlData, ("De Auth TxCmplt: txStatus = %d, txActualRate = %d \n",pTxCompleteAttr->status,pTxCompleteAttr->rate)); pCtrlData->disassocSentCBFunc( pCtrlData->disassocSentCBObj ); } + if(txData_isQueueUseMediumTime(pCtrlData->hTxData , qId) == TRUE ) { WLAN_REPORT_INFORMATION(pCtrlData->hReport, CTRL_DATA_MODULE_LOG, diff --git a/sta_dk_4_0_4_32/common/src/core/inc/DataCtrl_Api.h b/sta_dk_4_0_4_32/common/src/core/inc/DataCtrl_Api.h index d376a39..d17061b 100644 --- a/sta_dk_4_0_4_32/common/src/core/inc/DataCtrl_Api.h +++ b/sta_dk_4_0_4_32/common/src/core/inc/DataCtrl_Api.h @@ -86,7 +86,7 @@ TI_STATUS rxData_config(TI_HANDLE hRxData, TI_HANDLE hCtrlData, TI_HANDLE hTxData, TI_HANDLE hTnetwDrv, - TI_HANDLE hHalCtrl, + TI_HANDLE hHalCtrl, TI_HANDLE hMlme, TI_HANDLE hRsn, TI_HANDLE hSiteMgr, @@ -94,8 +94,8 @@ TI_STATUS rxData_config(TI_HANDLE hRxData, TI_HANDLE hOs, TI_HANDLE hReport, TI_HANDLE hMemMngr, - TI_HANDLE hEvHandler, - rxDataInitParams_t * rxDataInitParams); + TI_HANDLE hEvHandler, + rxDataInitParams_t * rxDataInitParams); void rxData_receiveMsduFromWlan(TI_HANDLE hRxData, mem_MSDU_T *pMsdu, Rx_attr_t* pRxAttr); @@ -326,6 +326,8 @@ TI_STATUS ctrlData_unLoad(TI_HANDLE hCtrlData); TI_STATUS ctrlData_getParam(TI_HANDLE hCtrlData, paramInfo_t *pParamInfo); +TI_STATUS ctrlData_getParamPartial(TI_HANDLE hCtrlData, paramInfoPartial_t *pParamInfo); + TI_STATUS ctrlData_setParam(TI_HANDLE hCtrlData, paramInfo_t *pParamInfo); TI_STATUS ctrlData_start(TI_HANDLE hCtrlData); diff --git a/sta_dk_4_0_4_32/common/src/core/inc/mlmeApi.h b/sta_dk_4_0_4_32/common/src/core/inc/mlmeApi.h index c15079b..ffd458d 100644 --- a/sta_dk_4_0_4_32/common/src/core/inc/mlmeApi.h +++ b/sta_dk_4_0_4_32/common/src/core/inc/mlmeApi.h @@ -232,6 +232,8 @@ TI_STATUS assoc_setParam(TI_HANDLE hCtrlData, paramInfo_t *pParam); TI_STATUS assoc_getParam(TI_HANDLE hCtrlData, paramInfo_t *pParam); +TI_STATUS assoc_getParamPartial(TI_HANDLE hAssoc, paramInfoPartial_t *pParam); + /* Authentication SM API */ TI_HANDLE auth_create(TI_HANDLE hOs); diff --git a/sta_dk_4_0_4_32/common/src/core/inc/rsnApi.h b/sta_dk_4_0_4_32/common/src/core/inc/rsnApi.h index eb06c0a..beb90c5 100644 --- a/sta_dk_4_0_4_32/common/src/core/inc/rsnApi.h +++ b/sta_dk_4_0_4_32/common/src/core/inc/rsnApi.h @@ -171,6 +171,8 @@ TI_STATUS rsn_setParam(TI_HANDLE hCtrlData, paramInfo_t *pParam); TI_STATUS rsn_getParam(TI_HANDLE hCtrlData, paramInfo_t *pParam); +TI_STATUS rsn_getParamPartial(TI_HANDLE hRsn, paramInfoPartial_t *pParam); + TI_STATUS rsn_evalSite(TI_HANDLE hRsn, rsnData_t *pRsnData, bssType_e bssType, macAddress_t bssid, UINT32 *pMetric); TI_STATUS rsn_setSite(TI_HANDLE hRsn, rsnData_t *pRsnData, UINT8 *pAssocIe, UINT8 *pAssocIeLen); diff --git a/sta_dk_4_0_4_32/common/src/core/mlme/Assoc/assocSM.c b/sta_dk_4_0_4_32/common/src/core/mlme/Assoc/assocSM.c index 48acd72..d9b9668 100644 --- a/sta_dk_4_0_4_32/common/src/core/mlme/Assoc/assocSM.c +++ b/sta_dk_4_0_4_32/common/src/core/mlme/Assoc/assocSM.c @@ -767,6 +767,55 @@ TI_STATUS assoc_getParam(TI_HANDLE hAssoc, paramInfo_t *pParam) /** * +* assoc_getParamPartial - Get a specific parameter from the association SM +* +* \b Description: +* +* Get a specific parameter from the association SM. +* +* \b ARGS: +* +* I - hAssoc - Association SM context \n +* I/O - pParam - Parameter \n +* +* \b RETURNS: +* +* OK if successful, NOK otherwise. +* +* \sa assoc_Start, assoc_Stop +*/ +/* note: assoc_getParamPartial() is part of assoc_getParam() it was implemented to reduce Stack usage */ +TI_STATUS assoc_getParamPartial(TI_HANDLE hAssoc, paramInfoPartial_t *pParam) +{ + assoc_t *pHandle; + + pHandle = (assoc_t*)hAssoc; + + if ((pHandle == NULL) || (pParam == NULL)) + { + return NOK; + } + + /* serch parameter type */ + switch (pParam->paramType) + { + case ASSOC_ASSOCIATION_RESP_PARAM: + pParam->content.applicationConfigBuffer.buffer = pHandle->assocRespBuffer; + pParam->content.applicationConfigBuffer.bufferSize = pHandle->assocRespLen; + break; + + default: + WLAN_REPORT_ERROR(pHandle->hReport, ASSOC_MODULE_LOG, + ("assoc_getParamPartial no such entry %d\n",pParam->paramType)); + return NOK; + } + + return OK; +} + + +/** +* * assoc_setParam - Set a specific parameter to the association SM * * \b Description: @@ -963,7 +1012,7 @@ TI_STATUS assoc_smFailureWait(assoc_t *pAssoc) else /* (uRspStatus == 0) how did we get here ? */ { WLAN_REPORT_ERROR(pAssoc->hReport, ASSOC_MODULE_LOG, - ("%s while Response status is OK (0) !!! \n")); + ("assoc_smFailureWait: while Response status is OK (0) !!! \n")); status = assoc_smReportFailure(pAssoc, (UINT16)NOK); } diff --git a/sta_dk_4_0_4_32/common/src/core/rsn/admCtrlWpa.c b/sta_dk_4_0_4_32/common/src/core/rsn/admCtrlWpa.c index c878cf1..66a705f 100644 --- a/sta_dk_4_0_4_32/common/src/core/rsn/admCtrlWpa.c +++ b/sta_dk_4_0_4_32/common/src/core/rsn/admCtrlWpa.c @@ -73,6 +73,15 @@ #define MAX_WPA_CIPHER_SUITE 7 +/**************************************************************/ +/* reduce stack usage (admCtrlWpa_setSite)*/ +/**************************************************************/ +static paramInfo_t param; +static whalParamInfo_t whalParam; +static wpaIeData_t gWpaDataIE; +/**************************************************************/ + + /* Enumerations */ @@ -711,9 +720,6 @@ TI_STATUS admCtrlWpa_getInfoElement(admCtrl_t *pAdmCtrl, UINT8 *pIe, UINT8 *pLen TI_STATUS admCtrlWpa_setSite(admCtrl_t *pAdmCtrl, rsnData_t *pRsnData, UINT8 *pAssocIe, UINT8 *pAssocIeLen) { TI_STATUS status; - paramInfo_t param; - whalParamInfo_t whalParam; - wpaIeData_t wpaData; cipherSuite_e encryptionStatus; admCtrlWpa_validity_t *pAdmCtrlWpa_validity=NULL; UINT8 *pWpaIe; @@ -763,23 +769,23 @@ TI_STATUS admCtrlWpa_setSite(admCtrl_t *pAdmCtrl, rsnData_t *pRsnData, UINT8 *pA { return status; } - status = admCtrlWpa_parseIe(pAdmCtrl, pWpaIe, &wpaData); + status = admCtrlWpa_parseIe(pAdmCtrl, pWpaIe, &gWpaDataIE); if (status != OK) { return status; } - if ((wpaData.unicastSuite[0]>=MAX_WPA_CIPHER_SUITE) || - (wpaData.broadcastSuite>=MAX_WPA_CIPHER_SUITE) || + if ((gWpaDataIE.unicastSuite[0]>=MAX_WPA_CIPHER_SUITE) || + (gWpaDataIE.broadcastSuite>=MAX_WPA_CIPHER_SUITE) || (pAdmCtrl->unicastSuite>=MAX_WPA_CIPHER_SUITE)) { return NOK; } - pAdmCtrl->encrInSw = wpaData.excKp; - pAdmCtrl->micInSw = wpaData.excMic; + pAdmCtrl->encrInSw = gWpaDataIE.excKp; + pAdmCtrl->micInSw = gWpaDataIE.excMic; /*Because ckip is a proprietary encryption for Cisco then a different validity check is needed */ - if(wpaData.broadcastSuite == RSN_CIPHER_CKIP || wpaData.unicastSuite[0] == RSN_CIPHER_CKIP) + if(gWpaDataIE.broadcastSuite == RSN_CIPHER_CKIP || gWpaDataIE.unicastSuite[0] == RSN_CIPHER_CKIP) { pAdmCtrl->getCipherSuite(pAdmCtrl, &encryptionStatus); /*Funk supplicant can support CCKM only if it configures the driver to TKIP encryption. */ @@ -791,15 +797,15 @@ TI_STATUS admCtrlWpa_setSite(admCtrl_t *pAdmCtrl, rsnData_t *pRsnData, UINT8 *pA else { /* Check validity of Group suite */ - if (!broadcastCipherSuiteValidity[pAdmCtrl->networkMode][wpaData.broadcastSuite]) + if (!broadcastCipherSuiteValidity[pAdmCtrl->networkMode][gWpaDataIE.broadcastSuite]) { /* check Group suite validity */ return NOK; } pAdmCtrl->getCipherSuite(pAdmCtrl, &encryptionStatus); - for (index=0; index<wpaData.unicastSuiteCnt; index++) + for (index=0; index<gWpaDataIE.unicastSuiteCnt; index++) { - pAdmCtrlWpa_validity = &admCtrlWpa_validityTable[wpaData.unicastSuite[index]][wpaData.broadcastSuite][encryptionStatus]; + pAdmCtrlWpa_validity = &admCtrlWpa_validityTable[gWpaDataIE.unicastSuite[index]][gWpaDataIE.broadcastSuite][encryptionStatus]; if (pAdmCtrlWpa_validity->status ==OK) { break; @@ -812,11 +818,11 @@ TI_STATUS admCtrlWpa_setSite(admCtrl_t *pAdmCtrl, rsnData_t *pRsnData, UINT8 *pA } /* set cipher suites */ - wpaData.unicastSuite[0] = pAdmCtrlWpa_validity->unicast ;/*wpaData.unicastSuite[0];*/ - wpaData.broadcastSuite = pAdmCtrlWpa_validity->broadcast; /*wpaData.broadcastSuite;*/ + gWpaDataIE.unicastSuite[0] = pAdmCtrlWpa_validity->unicast ;/*wpaData.unicastSuite[0];*/ + gWpaDataIE.broadcastSuite = pAdmCtrlWpa_validity->broadcast; /*wpaData.broadcastSuite;*/ } /* set external auth mode according to the key Mng Suite */ - switch (wpaData.KeyMngSuite[0]) + switch (gWpaDataIE.KeyMngSuite[0]) { case WPA_IE_KEY_MNG_NONE: pAdmCtrl->externalAuthMode = RSN_EXT_AUTH_MODE_OPEN; @@ -839,16 +845,16 @@ TI_STATUS admCtrlWpa_setSite(admCtrl_t *pAdmCtrl, rsnData_t *pRsnData, UINT8 *pA #ifdef EXC_MODULE_INCLUDED param.paramType = EXC_CCKM_EXISTS; - param.content.excCckmExists = (wpaData.KeyMngSuite[0]==WPA_IE_KEY_MNG_CCKM) ? TRUE : FALSE; + param.content.excCckmExists = (gWpaDataIE.KeyMngSuite[0]==WPA_IE_KEY_MNG_CCKM) ? TRUE : FALSE; excMngr_setParam(pAdmCtrl->hExcMngr, ¶m); #endif /* set replay counter */ - pAdmCtrl->replayCnt = wpaData.replayCounters; + pAdmCtrl->replayCnt = gWpaDataIE.replayCounters; *pAssocIeLen = pRsnData->ieLen; if (pAssocIe != NULL) { - os_memoryCopy(pAdmCtrl->hOs, pAssocIe, &wpaData, sizeof(wpaIeData_t)); + os_memoryCopy(pAdmCtrl->hOs, pAssocIe, &gWpaDataIE, sizeof(wpaIeData_t)); } @@ -883,7 +889,7 @@ TI_STATUS admCtrlWpa_setSite(admCtrl_t *pAdmCtrl, rsnData_t *pRsnData, UINT8 *pA /* Configure privacy status in HAL so that HW is prepared to recieve keys */ whalParam.paramType = HAL_CTRL_RSN_SECURITY_MODE_PARAM; - whalParam.content.rsnEncryptionStatus = (halCtrl_CipherSuite_e)wpaData.unicastSuite[0]; + whalParam.content.rsnEncryptionStatus = (halCtrl_CipherSuite_e)gWpaDataIE.unicastSuite[0]; status = whalCtrl_SetParam(pAdmCtrl->pRsn->hWhalCtrl, &whalParam); if (status != OK) { @@ -894,14 +900,14 @@ TI_STATUS admCtrlWpa_setSite(admCtrl_t *pAdmCtrl, rsnData_t *pRsnData, UINT8 *pA /* set MIC and KP in HAL */ whalParam.paramType = HAL_CTRL_RSN_EXC_SW_ENC_ENABLE_PARAM; - whalParam.content.rsnExcSwEncFlag = wpaData.excKp; + whalParam.content.rsnExcSwEncFlag = gWpaDataIE.excKp; status = whalCtrl_SetParam(pAdmCtrl->pRsn->hWhalCtrl, &whalParam); if (status != OK) { return status; } whalParam.paramType = HAL_CTRL_RSN_EXC_MIC_FIELD_ENABLE_PARAM; - whalParam.content.rsnExcMicFieldFlag = wpaData.excMic; + whalParam.content.rsnExcMicFieldFlag = gWpaDataIE.excMic; status = whalCtrl_SetParam(pAdmCtrl->pRsn->hWhalCtrl, &whalParam); if (status != OK) @@ -911,7 +917,7 @@ TI_STATUS admCtrlWpa_setSite(admCtrl_t *pAdmCtrl, rsnData_t *pRsnData, UINT8 *pA #endif /*EXC_MODULE_INCLUDED*/ /* re-config PAE */ - status = admCtrlWpa_dynamicConfig(pAdmCtrl,&wpaData); + status = admCtrlWpa_dynamicConfig(pAdmCtrl,&gWpaDataIE); if (status != OK) { return status; diff --git a/sta_dk_4_0_4_32/common/src/core/rsn/admCtrlWpa2.c b/sta_dk_4_0_4_32/common/src/core/rsn/admCtrlWpa2.c index f83b762..9e3fb36 100644 --- a/sta_dk_4_0_4_32/common/src/core/rsn/admCtrlWpa2.c +++ b/sta_dk_4_0_4_32/common/src/core/rsn/admCtrlWpa2.c @@ -93,6 +93,14 @@ /* Global variables */ static UINT8 wpa2IeOuiIe[3] = { 0x00, 0x0f, 0xac}; +/**************************************************************/ +/* reduce stack usage (admCtrlWpa_setSite)*/ +/**************************************************************/ +static paramInfo_t param; +static whalParamInfo_t whalParam; +static wpa2IeData_t wpa2DataIE; +/**************************************************************/ + static BOOL broadcastCipherSuiteValidity[MAX_NETWORK_MODE][MAX_WPA2_CIPHER_SUITE]= { /* RSN_IBSS */ { @@ -716,9 +724,6 @@ TI_STATUS admCtrlWpa2_getInfoElement(admCtrl_t *pAdmCtrl, UINT8 *pIe, UINT8 *pLe TI_STATUS admCtrlWpa2_setSite(admCtrl_t *pAdmCtrl, rsnData_t *pRsnData, UINT8 *pAssocIe, UINT8 *pAssocIeLen) { TI_STATUS status; - paramInfo_t param; - whalParamInfo_t whalParam; - wpa2IeData_t wpa2Data; rsn_paeConfig_t paeConfig; UINT8 *pWpa2Ie; cipherSuite_e uSuite, bSuite; @@ -769,34 +774,34 @@ TI_STATUS admCtrlWpa2_setSite(admCtrl_t *pAdmCtrl, rsnData_t *pRsnData, UINT8 *p WLAN_REPORT_INFORMATION(pAdmCtrl->hReport, RSN_MODULE_LOG, ("admCtrlWpa2_setSite: RSN_IE=\n")); WLAN_REPORT_HEX_INFORMATION(pAdmCtrl->hReport, RSN_MODULE_LOG, pRsnData->pIe, pRsnData->ieLen); - status = admCtrlWpa2_parseIe(pAdmCtrl, pWpa2Ie, &wpa2Data); + status = admCtrlWpa2_parseIe(pAdmCtrl, pWpa2Ie, &wpa2DataIE); if (status != OK) { return status; } - if ((wpa2Data.unicastSuite[0]>=MAX_WPA2_CIPHER_SUITE) || - (wpa2Data.broadcastSuite>=MAX_WPA2_CIPHER_SUITE) || + if ((wpa2DataIE.unicastSuite[0]>=MAX_WPA2_CIPHER_SUITE) || + (wpa2DataIE.broadcastSuite>=MAX_WPA2_CIPHER_SUITE) || (pAdmCtrl->unicastSuite>=MAX_WPA2_CIPHER_SUITE)) { return NOK; } /* Check validity of Group suite */ - if (!broadcastCipherSuiteValidity[pAdmCtrl->networkMode][wpa2Data.broadcastSuite]) + if (!broadcastCipherSuiteValidity[pAdmCtrl->networkMode][wpa2DataIE.broadcastSuite]) { /* check Group suite validity */ return NOK; } - if(admCtrlWpa2_getCipherSuiteMetric (pAdmCtrl, &wpa2Data, NULL, &uSuite, &bSuite) != OK) + if(admCtrlWpa2_getCipherSuiteMetric (pAdmCtrl, &wpa2DataIE, NULL, &uSuite, &bSuite) != OK) return NOK; /* set replay counter */ - pAdmCtrl->replayCnt = wpa2Data.ptkReplayCounters; + pAdmCtrl->replayCnt = wpa2DataIE.ptkReplayCounters; *pAssocIeLen = pRsnData->ieLen; if (pAssocIe != NULL) { - os_memoryCopy(pAdmCtrl->hOs, pAssocIe, &wpa2Data, sizeof(wpa2IeData_t)); + os_memoryCopy(pAdmCtrl->hOs, pAssocIe, &wpa2DataIE, sizeof(wpa2IeData_t)); } /* re-config PAE with updated unicast and broadcast suite values */ diff --git a/sta_dk_4_0_4_32/common/src/core/rsn/rsn.c b/sta_dk_4_0_4_32/common/src/core/rsn/rsn.c index 713b25c..e49d733 100644 --- a/sta_dk_4_0_4_32/common/src/core/rsn/rsn.c +++ b/sta_dk_4_0_4_32/common/src/core/rsn/rsn.c @@ -765,6 +765,63 @@ TI_STATUS rsn_getParam(TI_HANDLE hRsn, paramInfo_t *pParam) /** * +* rsn_getParamPartial - Get a specific parameter from the rsniation SM +* +* \b Description: +* +* Get a specific parameter from the rsniation SM. +* +* \b ARGS: +* +* I - hRsn - Rsniation SM context \n +* I/O - pParam - Parameter \n +* +* \b RETURNS: +* +* OK if successful, NOK otherwise. +* +* \sa rsn_Start, rsn_Stop +*/ + +/* note: rsn_getParamPartial() is part of rsn_getParam() it was implemented to reduce Stack usage */ +TI_STATUS rsn_getParamPartial(TI_HANDLE hRsn, paramInfoPartial_t *pParam) +{ + rsn_t *pRsn; + TI_STATUS status = OK; + + pRsn = (rsn_t*)hRsn; + + if ((pRsn == NULL) || (pParam == NULL)) + { + return NOK; + } + + switch (pParam->paramType) + { + case RSN_PRE_AUTH_STATUS: + { + UINT8 cacheIndex; + + pParam->content.rsnPreAuthStatus = pRsn->pAdmCtrl->getPreAuthStatus (pRsn->pAdmCtrl, &pParam->content.rsnApMac, &cacheIndex); + } + break; + + case RSN_ENCRYPTION_STATUS_PARAM: + status = pRsn->pAdmCtrl->getCipherSuite (pRsn->pAdmCtrl, &pParam->content.rsnEncryptionStatus); + break; + + case RSN_MIXED_MODE: + status = pRsn->pAdmCtrl->getMixedMode (pRsn->pAdmCtrl, &pParam->content.rsnMixedMode); + break; + + default: + return NOK; + } + + return status; +} +/** +* * rsn_SetParam - Set a specific parameter to the rsniation SM * * \b Description: diff --git a/sta_dk_4_0_4_32/common/src/core/sme/conn/conn.c b/sta_dk_4_0_4_32/common/src/core/sme/conn/conn.c index df26ad9..0ee57d9 100644 --- a/sta_dk_4_0_4_32/common/src/core/sme/conn/conn.c +++ b/sta_dk_4_0_4_32/common/src/core/sme/conn/conn.c @@ -383,7 +383,7 @@ TI_STATUS conn_start(TI_HANDLE hConn, connType_e connType, BOOL reNegotiateTspec) { conn_t *pConn = (conn_t *)hConn; - paramInfo_t param; + paramInfoPartial_t param; pConn->pConnStatusCB = pConnStatusCB; pConn->connStatCbObj = connStatCbObj; @@ -399,7 +399,7 @@ TI_STATUS conn_start(TI_HANDLE hConn, connType_e connType, param.paramType = QOS_MNGR_VOICE_RE_NEGOTIATE_TSPEC; param.content.TspecConfigure.voiceTspecConfigure = reNegotiateTspec; param.content.TspecConfigure.videoTspecConfigure = reNegotiateTspec; - qosMngr_setParams(pConn->hQosMngr, ¶m); + qosMngr_setParamsPartial(pConn->hQosMngr, ¶m); switch(pConn->currentConnType) { @@ -671,7 +671,7 @@ static void release_module(conn_t *pConn, UINT32 initVec) if (initVec & (1 << TIMER_INIT_BIT)) utils_nullTimerDestroy(pConn->hOs, pConn->pTimer); - if (initVec & (1 << CONN_INIT_BIT)) + if (initVec & (1 << CONN_INIT_BIT)) utils_nullMemoryFree(pConn->hOs, pConn, sizeof(conn_t)); initVec = 0; diff --git a/sta_dk_4_0_4_32/common/src/core/sme/siteMgr/select.c b/sta_dk_4_0_4_32/common/src/core/sme/siteMgr/select.c index 0872bfa..16e444c 100644 --- a/sta_dk_4_0_4_32/common/src/core/sme/siteMgr/select.c +++ b/sta_dk_4_0_4_32/common/src/core/sme/siteMgr/select.c @@ -177,6 +177,14 @@ static TI_STATUS sendProbeResponse(siteMgr_t *pSiteMgr, macAddress_t *pBssid); /* Interface functions Implementation */ +/**************************************************************/ +/* DEBUG CLI CRASH (systemConfig stack usage reduction) */ +/**************************************************************/ + +static paramInfo_t gSystemCfgParam; +static UINT8 curRsnData[255]; +/**************************************************************/ + /*********************************************************************** * siteMgr_disSelectSite *********************************************************************** @@ -1150,13 +1158,11 @@ RETURN: OK ************************************************************************/ TI_STATUS systemConfig(siteMgr_t *pSiteMgr) { - paramInfo_t param; siteEntry_t *pPrimarySite = pSiteMgr->pSitesMgmtParams->pPrimarySite; rsnData_t rsnData; UINT8 rsnAssocIeLen; dot11_RSN_t *pRsnIe; UINT8 rsnIECount=0; - UINT8 curRsnData[255]; UINT16 length; UINT16 capabilities; UINT16 PktLength=0; @@ -1269,21 +1275,21 @@ TI_STATUS systemConfig(siteMgr_t *pSiteMgr) pSiteMgr->currentDataModulation = pSiteMgr->chosenModulation; /***************** Config Data CTRL *************************/ - param.paramType = CTRL_DATA_CURRENT_BSSID_PARAM; /* Current BSSID */ - os_memoryCopy(pSiteMgr->hOs, &(param.content.ctrlDataCurrentBSSID), &(pPrimarySite->bssid), sizeof(macAddress_t)); - ctrlData_setParam(pSiteMgr->hCtrlData, ¶m); + gSystemCfgParam.paramType = CTRL_DATA_CURRENT_BSSID_PARAM; /* Current BSSID */ + os_memoryCopy(pSiteMgr->hOs, &(gSystemCfgParam.content.ctrlDataCurrentBSSID), &(pPrimarySite->bssid), sizeof(macAddress_t)); + ctrlData_setParam(pSiteMgr->hCtrlData, &gSystemCfgParam); - param.paramType = CTRL_DATA_CURRENT_BSS_TYPE_PARAM; /* Current BSS Type */ - param.content.ctrlDataCurrentBssType = pPrimarySite->bssType; - ctrlData_setParam(pSiteMgr->hCtrlData, ¶m); + gSystemCfgParam.paramType = CTRL_DATA_CURRENT_BSS_TYPE_PARAM; /* Current BSS Type */ + gSystemCfgParam.content.ctrlDataCurrentBssType = pPrimarySite->bssType; + ctrlData_setParam(pSiteMgr->hCtrlData, &gSystemCfgParam); - param.paramType = CTRL_DATA_CURRENT_PREAMBLE_TYPE_PARAM; /* Current Preamble Type */ + gSystemCfgParam.paramType = CTRL_DATA_CURRENT_PREAMBLE_TYPE_PARAM; /* Current Preamble Type */ if ((pSiteMgr->pDesiredParams->siteMgrDesiredPreambleType == PREAMBLE_SHORT) && (pPrimarySite->currentPreambleType == PREAMBLE_SHORT)) - param.content.ctrlDataCurrentPreambleType = PREAMBLE_SHORT; + gSystemCfgParam.content.ctrlDataCurrentPreambleType = PREAMBLE_SHORT; else - param.content.ctrlDataCurrentPreambleType = PREAMBLE_LONG; - ctrlData_setParam(pSiteMgr->hCtrlData, ¶m); + gSystemCfgParam.content.ctrlDataCurrentPreambleType = PREAMBLE_LONG; + ctrlData_setParam(pSiteMgr->hCtrlData, &gSystemCfgParam); /* Mutual Rates Matching */ StaTotalRates = pSiteMgr->pDesiredParams->siteMgrCurrentDesiredRateMask.basicRateMask | @@ -1307,29 +1313,27 @@ TI_STATUS systemConfig(siteMgr_t *pSiteMgr) pSiteMgr->pDesiredParams->siteMgrMatchedMaxActiveRate = MAX(pSiteMgr->pDesiredParams->siteMgrMatchedMaxBasicRate,pSiteMgr->pDesiredParams->siteMgrMatchedMaxActiveRate); - param.paramType = CTRL_DATA_CURRENT_BASIC_RATE_PARAM; /* Current Basic Rate */ - param.content.ctrlDataCurrentBasicRate = (rate_e)pSiteMgr->pDesiredParams->siteMgrMatchedMaxBasicRate; - ctrlData_setParam(pSiteMgr->hCtrlData, ¶m); + gSystemCfgParam.paramType = CTRL_DATA_CURRENT_BASIC_RATE_PARAM; /* Current Basic Rate */ + gSystemCfgParam.content.ctrlDataCurrentBasicRate = (rate_e)pSiteMgr->pDesiredParams->siteMgrMatchedMaxBasicRate; + ctrlData_setParam(pSiteMgr->hCtrlData, &gSystemCfgParam); - param.paramType = CTRL_DATA_CURRENT_BASIC_RATE_MASK_PARAM; - param.content.ctrlDataBasicRateBitMask = pSiteMgr->pDesiredParams->siteMgrMatchedBasicRateMask; - ctrlData_setParam(pSiteMgr->hCtrlData, ¶m); - - param.paramType = CTRL_DATA_CURRENT_BASIC_MODULATION_PARAM; /* Current Mgmt Rate */ + gSystemCfgParam.paramType = CTRL_DATA_CURRENT_BASIC_RATE_MASK_PARAM; + gSystemCfgParam.content.ctrlDataBasicRateBitMask = pSiteMgr->pDesiredParams->siteMgrMatchedBasicRateMask; + ctrlData_setParam(pSiteMgr->hCtrlData, &gSystemCfgParam); + gSystemCfgParam.paramType = CTRL_DATA_CURRENT_BASIC_MODULATION_PARAM; /* Current Mgmt Rate */ if ((pPrimarySite->maxBasicRate == DRV_RATE_1M) || (pPrimarySite->maxBasicRate == DRV_RATE_2M)) - param.content.ctrlDataCurrentBasicModulationType = DRV_MODULATION_QPSK; + gSystemCfgParam.content.ctrlDataCurrentBasicModulationType = DRV_MODULATION_QPSK; else if (pPrimarySite->maxBasicRate == DRV_RATE_22M) - param.content.ctrlDataCurrentBasicModulationType = DRV_MODULATION_PBCC; + gSystemCfgParam.content.ctrlDataCurrentBasicModulationType = DRV_MODULATION_PBCC; else if (pPrimarySite->maxBasicRate < DRV_RATE_22M) - param.content.ctrlDataCurrentBasicModulationType = DRV_MODULATION_CCK; + gSystemCfgParam.content.ctrlDataCurrentBasicModulationType = DRV_MODULATION_CCK; else - param.content.ctrlDataCurrentBasicModulationType = DRV_MODULATION_OFDM; - - ctrlData_setParam(pSiteMgr->hCtrlData, ¶m); + gSystemCfgParam.content.ctrlDataCurrentBasicModulationType = DRV_MODULATION_OFDM; - param.paramType = CTRL_DATA_CURRENT_PROTECTION_STATUS_PARAM; - param.content.ctrlDataProtectionEnabled = pPrimarySite->useProtection; - ctrlData_setParam(pSiteMgr->hCtrlData, ¶m); + ctrlData_setParam(pSiteMgr->hCtrlData, &gSystemCfgParam); + gSystemCfgParam.paramType = CTRL_DATA_CURRENT_PROTECTION_STATUS_PARAM; + gSystemCfgParam.content.ctrlDataProtectionEnabled = pPrimarySite->useProtection; + ctrlData_setParam(pSiteMgr->hCtrlData, &gSystemCfgParam); ctrlData_setSite(pSiteMgr->hCtrlData, &pPrimarySite->fourXParams); @@ -1341,30 +1345,30 @@ TI_STATUS systemConfig(siteMgr_t *pSiteMgr) status = siteMgr_getWMEParamsSite(pSiteMgr,&p_ACParametersDummy); if(status == OK) { - param.content.qosSiteProtocol = WME; + gSystemCfgParam.content.qosSiteProtocol = WME; } else { - param.content.qosSiteProtocol = NONE_QOS; + gSystemCfgParam.content.qosSiteProtocol = NONE_QOS; } WLAN_REPORT_DEBUG_TX(pSiteMgr->hReport, - (" systemConfigt() : param.content.qosSiteProtoco %d\n", param.content.qosSiteProtocol)); + (" systemConfigt() : param.content.qosSiteProtoco %d\n", gSystemCfgParam.content.qosSiteProtocol)); - param.paramType = QOS_MNGR_SET_SITE_PROTOCOL; - qosMngr_setParams(pSiteMgr->hQosMngr,¶m); + gSystemCfgParam.paramType = QOS_MNGR_SET_SITE_PROTOCOL; + qosMngr_setParams(pSiteMgr->hQosMngr,&gSystemCfgParam); /* Set active protocol in qosMngr according to station desired mode and site capabilities Must be called BEFORE setting the "CURRENT_PS_MODE" into the QosMngr */ qosMngr_selectActiveProtocol(pSiteMgr->hQosMngr); /* set PS capability parameter */ - param.paramType = QOS_MNGR_CURRENT_PS_MODE; + gSystemCfgParam.paramType = QOS_MNGR_CURRENT_PS_MODE; if(pPrimarySite->APSDSupport == TRUE) - param.content.currentPsMode = PS_SCHEME_UPSD_TRIGGER; + gSystemCfgParam.content.currentPsMode = PS_SCHEME_UPSD_TRIGGER; else - param.content.currentPsMode = PS_SCHEME_LEGACY_PSPOLL; - qosMngr_setParams(pSiteMgr->hQosMngr,¶m); + gSystemCfgParam.content.currentPsMode = PS_SCHEME_LEGACY_PSPOLL; + qosMngr_setParams(pSiteMgr->hQosMngr,&gSystemCfgParam); /* Set upsd/ps_poll configuration */ /* Must be done AFTER setting the active Protocol */ @@ -1406,9 +1410,9 @@ TI_STATUS systemConfig(siteMgr_t *pSiteMgr) { WLAN_REPORT_INFORMATION(pSiteMgr->hReport, SITE_MGR_MODULE_LOG, ("Select Exc_ParseClientTP == OK: Dbm = %d\n",ExternTxPower)); - param.paramType = REGULATORY_DOMAIN_EXTERN_TX_POWER_PREFERRED; - param.content.ExternTxPowerPreferred = ExternTxPower; - regulatoryDomain_setParam(pSiteMgr->hRegulatoryDomain,¶m); + gSystemCfgParam.paramType = REGULATORY_DOMAIN_EXTERN_TX_POWER_PREFERRED; + gSystemCfgParam.content.ExternTxPowerPreferred = ExternTxPower; + regulatoryDomain_setParam(pSiteMgr->hRegulatoryDomain,&gSystemCfgParam); } /* Parse and save the EXC Version Number if exists */ excMngr_parseExcVer(pSiteMgr->hExcMngr, pIeBuffer, PktLength); @@ -1418,9 +1422,9 @@ TI_STATUS systemConfig(siteMgr_t *pSiteMgr) /* Note: TX Power Control adjustment is now done through siteMgr_assocReport() */ if (pPrimarySite->powerConstraint>0) { /* setting power constraint */ - param.paramType = REGULATORY_DOMAIN_SET_POWER_CONSTRAINT_PARAM; - param.content.powerConstraint = pPrimarySite->powerConstraint; - regulatoryDomain_setParam(pSiteMgr->hRegulatoryDomain,¶m); + gSystemCfgParam.paramType = REGULATORY_DOMAIN_SET_POWER_CONSTRAINT_PARAM; + gSystemCfgParam.content.powerConstraint = pPrimarySite->powerConstraint; + regulatoryDomain_setParam(pSiteMgr->hRegulatoryDomain,&gSystemCfgParam); } diff --git a/sta_dk_4_0_4_32/common/src/core/sme/siteMgr/siteMgr.c b/sta_dk_4_0_4_32/common/src/core/sme/siteMgr/siteMgr.c index 18ea43e..61099c9 100644 --- a/sta_dk_4_0_4_32/common/src/core/sme/siteMgr/siteMgr.c +++ b/sta_dk_4_0_4_32/common/src/core/sme/siteMgr/siteMgr.c @@ -207,7 +207,16 @@ static void siteMgr_externalConfigurationParametersSet(TI_HANDLE hSiteMgr); void siteMgr_gotFirstBcn(TI_HANDLE hSiteMgr); - +/**************************************************************/ +/* DEBUG CLI CRASH */ +/**************************************************************/ +static whalCtrl_joinBss_t joinParams; +static whalCtrl_setTemplate_t templateStruct; +static probeRspTemplate_t probeRspTemplate; +static nullDataTemplate_t nullDataTemplate; +static psPollTemplate_t psPollTemplate; +static QosNullDataTemplate_t QosNullDataTemplate; +/**************************************************************/ #define CHAN_FREQ_TABLE_SIZE (sizeof(ChanFreq) / sizeof(struct CHAN_FREQ)) @@ -1434,7 +1443,7 @@ TI_STATUS siteMgr_getParam(TI_HANDLE hSiteMgr, break; case SITE_MGR_DESIRED_DOT11_MODE_PARAM: - pParam->content.siteMgrDot11Mode = pSiteMgr->pDesiredParams->siteMgrDesiredDot11Mode; + pParam->content.siteMgrDot11Mode = pSiteMgr->pDesiredParams->siteMgrDesiredDot11Mode; break; case SITE_MGR_NETWORK_TYPE_IN_USE: @@ -1636,16 +1645,9 @@ RETURN: OK on success, NOK otherwise TI_STATUS siteMgr_join(TI_HANDLE hSiteMgr) { siteMgr_t *pSiteMgr = (siteMgr_t *)hSiteMgr; - whalCtrl_joinBss_t joinParams; - whalCtrl_setTemplate_t templateStruct; - probeRspTemplate_t probeRspTemplate; - nullDataTemplate_t nullDataTemplate; - psPollTemplate_t psPollTemplate; - QosNullDataTemplate_t QosNullDataTemplate; siteEntry_t *pPrimarySite = pSiteMgr->pSitesMgmtParams->pPrimarySite; rate_e rate; - paramInfo_t param; - + paramInfoPartial_t param; if (pPrimarySite == NULL) { @@ -1679,7 +1681,7 @@ TI_STATUS siteMgr_join(TI_HANDLE hSiteMgr) joinParams.hwGenCtrlTxRate = rate; param.paramType = CTRL_DATA_CURRENT_PREAMBLE_TYPE_PARAM; - ctrlData_getParam(pSiteMgr->hCtrlData, ¶m); + ctrlData_getParamPartial(pSiteMgr->hCtrlData, ¶m); joinParams.preamble = param.content.ctrlDataCurrentPreambleType; /*set the preamble before the join*/ whalCtrl_SetPreamble(pSiteMgr->hHalCtrl, joinParams.preamble); @@ -2543,15 +2545,14 @@ static void updateSiteInfo(siteMgr_t *pSiteMgr, mlmeFrameInfo_t *pFrameInfo, sit UPDATE_CAPABILITIES(pSite, pFrameInfo); - if (utils_isIESSID_Broadcast(pFrameInfo->content.iePacket.pSsid) == FALSE) - { /* And the SSID is not Broadcast */ + if (utils_isIESSID_Broadcast(pFrameInfo->content.iePacket.pSsid) == FALSE) + { /* And the SSID is not Broadcast */ ssidUpdated = TRUE; UPDATE_SSID(pSite, pFrameInfo); - } + } if (ssidUpdated) { - UPDATE_PRIVACY(pSite, pFrameInfo); } @@ -2593,7 +2594,6 @@ static void updateSiteInfo(siteMgr_t *pSiteMgr, mlmeFrameInfo_t *pFrameInfo, sit /* Updating QoS params */ updateBeaconQosParams(pSiteMgr, pSite, pFrameInfo); - /* updating CountryIE */ if ((pFrameInfo->content.iePacket.country != NULL) && (pFrameInfo->content.iePacket.country->hdr.eleLen != 0)) @@ -2790,7 +2790,7 @@ static void updateSiteInfo(siteMgr_t *pSiteMgr, mlmeFrameInfo_t *pFrameInfo, sit param.paramType = REGULATORY_DOMAIN_COUNTRY_PARAM; param.content.pCountry = (country_t *)pFrameInfo->content.iePacket.country; regulatoryDomain_setParam(pSiteMgr->hRegulatoryDomain,¶m); - } + } UPDATE_LOCAL_TIME_STAMP(pSiteMgr, pSite, pFrameInfo); diff --git a/sta_dk_4_0_4_32/common/src/utils/utils.c b/sta_dk_4_0_4_32/common/src/utils/utils.c index cd9ad9f..cf3c672 100644 --- a/sta_dk_4_0_4_32/common/src/utils/utils.c +++ b/sta_dk_4_0_4_32/common/src/utils/utils.c @@ -1617,9 +1617,10 @@ BOOL utils_isJunkSSID(ssid_t *pSsid) if (pSsid->len > 2) { - if ((pSsid->ssidString[0] < FIRST_VALID_CHAR) && - (pSsid->ssidString[1] < FIRST_VALID_CHAR) && - (pSsid->ssidString[2] < FIRST_VALID_CHAR)) + unsigned char *ssidString = (unsigned char *)pSsid->ssidString; + if ((ssidString[0] < FIRST_VALID_CHAR) && + (ssidString[1] < FIRST_VALID_CHAR) && + (ssidString[2] < FIRST_VALID_CHAR)) { return TRUE; } @@ -2015,5 +2016,3 @@ void util_printProfile(void) #endif /* UTIL_DEBUG_PROFILE */ - - |