/*========================================================================== FUNCTION WLANBAP_GetCurrentChannel DESCRIPTION Clear out all fields in the BAP context. DEPENDENCIES PARAMETERS IN pBtampCtx: pointer to the BAP control block channel: current configured channel number. activeFlag: flag indicating whether there is an active link. RETURN VALUE The result code associated with performing the operation VOS_STATUS_E_FAULT: pointer to return channel is NULL ; access would cause a page fault VOS_STATUS_SUCCESS: Everything is good :) SIDE EFFECTS ============================================================================*/ VOS_STATUS WLANBAP_GetCurrentChannel ( ptBtampContext pBtampCtx, v_U32_t *channel, // return current channel here v_U32_t *activeFlag // return active flag here ) { //v_U32_t cb_enabled; tHalHandle halHandle; /*------------------------------------------------------------------------ Sanity check BAP control block ------------------------------------------------------------------------*/ if (( NULL == pBtampCtx ) || (NULL == channel) || (NULL == activeFlag)) { VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, "Invalid BAP pointer in %s", __FUNCTION__); return VOS_STATUS_E_FAULT; } halHandle = VOS_GET_HAL_CB(pBtampCtx->pvosGCtx); if(NULL == halHandle) { VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, "halHandle is NULL in %s", __FUNCTION__); return VOS_STATUS_E_FAULT; } if (ccmCfgGetInt(halHandle, WNI_CFG_CURRENT_CHANNEL, channel) != eHAL_STATUS_SUCCESS ) { VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, "Get CFG failed in %s", __FUNCTION__); return VOS_STATUS_E_FAULT; } *activeFlag = FALSE; // return active flag here return VOS_STATUS_SUCCESS; }/* WLANBAP_GetCurrentChannel */
VOS_STATUS WLANBAP_GetCurrentChannel ( ptBtampContext pBtampCtx, v_U32_t *channel, v_U32_t *activeFlag ) { tHalHandle halHandle; if (( NULL == pBtampCtx ) || (NULL == channel) || (NULL == activeFlag)) { VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, "Invalid BAP pointer in %s", __func__); return VOS_STATUS_E_FAULT; } halHandle = VOS_GET_HAL_CB(pBtampCtx->pvosGCtx); if(NULL == halHandle) { VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, "halHandle is NULL in %s", __func__); return VOS_STATUS_E_FAULT; } if (ccmCfgGetInt(halHandle, WNI_CFG_CURRENT_CHANNEL, channel) != eHAL_STATUS_SUCCESS ) { VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, "Get CFG failed in %s", __func__); return VOS_STATUS_E_FAULT; } *activeFlag = FALSE; return VOS_STATUS_SUCCESS; }
/*========================================================================== FUNCTION WLANSAP_ScanCallback() DESCRIPTION Callback for Scan (scan results) Events DEPENDENCIES NA. PARAMETERS IN tHalHandle : tHalHandle passed in with the scan request *pContext : The second context pass in for the caller (sapContext) scanID : scanID got after the scan status : Status of scan -success, failure or abort RETURN VALUE The eHalStatus code associated with performing the operation eHAL_STATUS_SUCCESS: Success SIDE EFFECTS ============================================================================*/ eHalStatus WLANSAP_ScanCallback ( tHalHandle halHandle, void *pContext, /* Opaque SAP handle */ v_U8_t sessionId, v_U32_t scanID, eCsrScanStatus scanStatus ) { tScanResultHandle pResult = NULL; eHalStatus scanGetResultStatus = eHAL_STATUS_FAILURE; ptSapContext psapContext = (ptSapContext)pContext; tWLAN_SAPEvent sapEvent; /* State machine event */ v_U8_t operChannel = 0; VOS_STATUS sapstatus; #ifdef SOFTAP_CHANNEL_RANGE v_U32_t operatingBand; v_U32_t event; #endif if (psapContext->sapsMachine == eSAP_DISCONNECTED) { VOS_TRACE(VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_WARN, "In %s BSS already stopped", __func__); return eHAL_STATUS_FAILURE; } /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/ VOS_TRACE( VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_INFO_HIGH, "In %s, before switch on scanStatus = %d", __func__, scanStatus); switch (scanStatus) { case eCSR_SCAN_SUCCESS: // sapScanCompleteCallback with eCSR_SCAN_SUCCESS VOS_TRACE( VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_INFO_HIGH, "In %s, CSR scanStatus = %s (%d)", __func__, "eCSR_SCAN_SUCCESS", scanStatus); // Get scan results, Run channel selection algorithm, select channel and keep in pSapContext->Channel scanGetResultStatus = sme_ScanGetResult(halHandle, psapContext->sessionId, NULL, &pResult); if ((scanGetResultStatus != eHAL_STATUS_SUCCESS)&& (scanGetResultStatus != eHAL_STATUS_E_NULL_VALUE)) { // No scan results VOS_TRACE( VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_ERROR, "In %s, Get scan result failed! ret = %d", __func__, scanGetResultStatus); break; } #ifdef FEATURE_WLAN_AP_AP_ACS_OPTIMIZE if (scanID != 0) { VOS_TRACE( VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_INFO_HIGH, "%s: Sending ACS Scan skip event", __func__); sapSignalHDDevent(psapContext, NULL, eSAP_ACS_SCAN_SUCCESS_EVENT, (v_PVOID_t) eSAP_STATUS_SUCCESS); } else VOS_TRACE(VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_INFO_HIGH, "%s: ACS scan id: %d (skipped ACS SCAN)", __func__, scanID); #endif operChannel = sapSelectChannel(halHandle, psapContext, pResult); sme_ScanResultPurge(halHandle, pResult); event = eSAP_MAC_SCAN_COMPLETE; break; default: event = eSAP_CHANNEL_SELECTION_FAILED; VOS_TRACE( VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_INFO_HIGH, "In %s, CSR scanStatus = %s (%d)", __func__, "eCSR_SCAN_ABORT/FAILURE", scanStatus); } if (operChannel == SAP_CHANNEL_NOT_SELECTED) #ifdef SOFTAP_CHANNEL_RANGE { VOS_TRACE( VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_INFO, "%s: No suitable channel selected", __func__); if ( eCSR_BAND_ALL == psapContext->scanBandPreference || psapContext->allBandScanned == eSAP_TRUE) { if(psapContext->channelList != NULL) { psapContext->channel = psapContext->channelList[0]; } else { /* if the channel list is empty then there is no valid channel in the selected sub-band so select default channel in the BAND(2.4GHz/5GHZ) */ ccmCfgGetInt( halHandle, WNI_CFG_SAP_CHANNEL_SELECT_OPERATING_BAND, &operatingBand); if(eSAP_RF_SUBBAND_2_4_GHZ == operatingBand ) psapContext->channel = SAP_DEFAULT_CHANNEL; else psapContext->channel = SAP_DEFAULT_5GHZ_CHANNEL; } } else { VOS_TRACE( VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_INFO, "%s: Has scan band preference", __func__); if (eCSR_BAND_24 == psapContext->currentPreferredBand) psapContext->currentPreferredBand = eCSR_BAND_5G; else psapContext->currentPreferredBand = eCSR_BAND_24; psapContext->allBandScanned = eSAP_TRUE; //go back to DISCONNECT state, scan next band psapContext->sapsMachine = eSAP_DISCONNECTED; event = eSAP_CHANNEL_SELECTION_FAILED; } } #else psapContext->channel = SAP_DEFAULT_CHANNEL; #endif else {
/*========================================================================== FUNCTION WLANSAP_ScanCallback() DESCRIPTION Callback for Scan (scan results) Events DEPENDENCIES NA. PARAMETERS IN tHalHandle : tHalHandle passed in with the scan request *pContext : The second context pass in for the caller (sapContext) scanID : scanID got after the scan status : Status of scan -success, failure or abort RETURN VALUE The eHalStatus code associated with performing the operation eHAL_STATUS_SUCCESS: Success SIDE EFFECTS ============================================================================*/ eHalStatus WLANSAP_ScanCallback ( tHalHandle halHandle, void *pContext, /* Opaque SAP handle */ v_U32_t scanID, eCsrScanStatus scanStatus ) { tScanResultHandle pResult = NULL; eHalStatus scanGetResultStatus = eHAL_STATUS_FAILURE; ptSapContext psapContext = (ptSapContext)pContext; void *pTempHddCtx; tWLAN_SAPEvent sapEvent; /* State machine event */ v_U8_t operChannel = 0; VOS_STATUS sapstatus; #ifdef SOFTAP_CHANNEL_RANGE v_U32_t operatingBand; #endif /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/ pTempHddCtx = vos_get_context( VOS_MODULE_ID_HDD, psapContext->pvosGCtx); if (NULL == pTempHddCtx) { VOS_TRACE( VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_FATAL, "HDD context is NULL"); return eHAL_STATUS_FAILURE; } VOS_TRACE( VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_INFO_HIGH, "In %s, before switch on scanStatus = %d", __func__, scanStatus); switch (scanStatus) { case eCSR_SCAN_SUCCESS: // sapScanCompleteCallback with eCSR_SCAN_SUCCESS VOS_TRACE( VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_INFO_HIGH, "In %s, CSR scanStatus = %s (%d)", __func__, "eCSR_SCAN_SUCCESS", scanStatus); // Get scan results, Run channel selection algorithm, select channel and keep in pSapContext->Channel scanGetResultStatus = sme_ScanGetResult(halHandle, 0, NULL, &pResult); if ((NULL == pResult) || (scanGetResultStatus != eHAL_STATUS_SUCCESS)) { // No scan results VOS_TRACE( VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_ERROR, "In %s, sme_ScanGetResult = NULL", __func__); break; } operChannel = sapSelectChannel(halHandle, psapContext, pResult); sme_ScanResultPurge(halHandle, pResult); break; default: VOS_TRACE( VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_INFO_HIGH, "In %s, CSR scanStatus = %s (%d)", __func__, "eCSR_SCAN_ABORT/FAILURE", scanStatus); } if (operChannel == SAP_CHANNEL_NOT_SELECTED) #ifdef SOFTAP_CHANNEL_RANGE { if(psapContext->channelList != NULL) { psapContext->channel = psapContext->channelList[0]; } else { /* if the channel list is empty then there is no valid channel in the selected sub-band so select default channel in the BAND(2.4GHz/5GHZ) */ ccmCfgGetInt( halHandle, WNI_CFG_SAP_CHANNEL_SELECT_OPERATING_BAND, &operatingBand); if(RF_SUBBAND_2_4_GHZ == operatingBand ) psapContext->channel = SAP_DEFAULT_CHANNEL; else psapContext->channel = SAP_DEFAULT_5GHZ_CHANNEL; } } #else psapContext->channel = SAP_DEFAULT_CHANNEL; #endif else {
eHalStatus WLANSAP_ScanCallback ( tHalHandle halHandle, void *pContext, v_U32_t scanID, eCsrScanStatus scanStatus ) { tScanResultHandle pResult = NULL; eHalStatus scanGetResultStatus = eHAL_STATUS_FAILURE; ptSapContext psapContext = (ptSapContext)pContext; void *pTempHddCtx; tWLAN_SAPEvent sapEvent; v_U8_t operChannel = 0; VOS_STATUS sapstatus; #ifdef SOFTAP_CHANNEL_RANGE v_U32_t operatingBand; #endif pTempHddCtx = vos_get_context( VOS_MODULE_ID_HDD, psapContext->pvosGCtx); if (NULL == pTempHddCtx) { VOS_TRACE( VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_FATAL, "HDD context is NULL"); return eHAL_STATUS_FAILURE; } VOS_TRACE( VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_INFO_HIGH, "In %s, before switch on scanStatus = %d", __func__, scanStatus); switch (scanStatus) { case eCSR_SCAN_SUCCESS: VOS_TRACE( VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_INFO_HIGH, "In %s, CSR scanStatus = %s (%d)", __func__, "eCSR_SCAN_SUCCESS", scanStatus); scanGetResultStatus = sme_ScanGetResult(halHandle, 0, NULL, &pResult); if ((NULL == pResult) || (scanGetResultStatus != eHAL_STATUS_SUCCESS)) { VOS_TRACE( VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_ERROR, "In %s, sme_ScanGetResult = NULL", __func__); break; } operChannel = sapSelectChannel(halHandle, psapContext, pResult); sme_ScanResultPurge(halHandle, pResult); break; default: VOS_TRACE( VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_INFO_HIGH, "In %s, CSR scanStatus = %s (%d)", __func__, "eCSR_SCAN_ABORT/FAILURE", scanStatus); } if (operChannel == SAP_CHANNEL_NOT_SELECTED) #ifdef SOFTAP_CHANNEL_RANGE { if(psapContext->channelList != NULL) { psapContext->channel = psapContext->channelList[0]; } else { ccmCfgGetInt( halHandle, WNI_CFG_SAP_CHANNEL_SELECT_OPERATING_BAND, &operatingBand); if(RF_SUBBAND_2_4_GHZ == operatingBand ) psapContext->channel = SAP_DEFAULT_CHANNEL; else psapContext->channel = SAP_DEFAULT_5GHZ_CHANNEL; } } #else psapContext->channel = SAP_DEFAULT_CHANNEL; #endif else {
/*========================================================================== FUNCTION sapSelectChannel DESCRIPTION Runs a algorithm to select the best channel to operate in based on BSS rssi and bss count on each channel DEPENDENCIES NA. PARAMETERS IN halHandle : Pointer to HAL handle pResult : Pointer to tScanResultHandle RETURN VALUE v_U8_t : Success - channel number, Fail - zero SIDE EFFECTS ============================================================================*/ v_U8_t sapSelectChannel(tHalHandle halHandle, tScanResultHandle pScanResult) { // DFS param object holding all the data req by the algo tSapChSelSpectInfo oSpectInfoParams = {NULL,0}; tSapChSelSpectInfo *pSpectInfoParams = &oSpectInfoParams; // Memory? NB v_U8_t bestChNum = 0; #ifdef SOFTAP_CHANNEL_RANGE v_U32_t startChannelNum; v_U32_t endChannelNum; v_U32_t operatingBand; v_U8_t count = 0; #endif VOS_TRACE(VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_INFO_HIGH, "In %s, Running SAP Ch Select", __FUNCTION__); // Set to zero tSapChSelParams //vos_mem_zero(&sapChSelParams, sizeof(sapChSelParams)); // Initialize the structure pointed by pSpectInfoParams if(sapChanSelInit( halHandle, pSpectInfoParams) != eSAP_TRUE ) { VOS_TRACE(VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_ERROR, "In %s, Ch Select initialization failed", __FUNCTION__); return SAP_CHANNEL_NOT_SELECTED; } // Compute the weight of the entire spectrum in the operating band sapComputeSpectWeight( pSpectInfoParams, halHandle, pScanResult); // Sort the 20M channel list as per the computed weights, lesser weight first. sapSortChlWeight(pSpectInfoParams); #ifdef SOFTAP_CHANNEL_RANGE ccmCfgGetInt( halHandle, WNI_CFG_SAP_CHANNEL_SELECT_START_CHANNEL, &startChannelNum); ccmCfgGetInt( halHandle, WNI_CFG_SAP_CHANNEL_SELECT_END_CHANNEL, &endChannelNum); ccmCfgGetInt( halHandle, WNI_CFG_SAP_CHANNEL_SELECT_OPERATING_BAND, &operatingBand); /*Loop till get the best channel in the given range */ for(count=0; count < pSpectInfoParams->numSpectChans ; count++) { if((startChannelNum <= pSpectInfoParams->pSpectCh[count].chNum)&& ( endChannelNum >= pSpectInfoParams->pSpectCh[count].chNum)) { bestChNum = (v_U8_t)pSpectInfoParams->pSpectCh[count].chNum; break; } } #else // Get the first channel in sorted array as best 20M Channel bestChNum = (v_U8_t)pSpectInfoParams->pSpectCh[0].chNum; #endif // Free all the allocated memory sapChanSelExit(pSpectInfoParams); VOS_TRACE(VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_INFO_HIGH, "In %s, Running SAP Ch select Completed, Ch=%d", __FUNCTION__, bestChNum); if (bestChNum > 0 && bestChNum <= 252) return bestChNum; else return SAP_CHANNEL_NOT_SELECTED; }
/** * @function : limUpdateAssocStaDatas * * @brief : This function is called to Update the Station Descriptor (dph) Details from * Association / ReAssociation Response Frame * *LOGIC: * *ASSUMPTIONS: * *NOTE: * * @param pMac - Pointer to Global MAC structure * @param pStaDs - Station Descriptor in DPH * @param pAssocRsp - Pointer to Association Response Structure * * @return None */ void limUpdateAssocStaDatas(tpAniSirGlobal pMac, tpDphHashNode pStaDs, tpSirAssocRsp pAssocRsp,tpPESession psessionEntry) { tANI_U32 phyMode; tANI_BOOLEAN qosMode; tANI_U16 rxHighestRate = 0; uint32_t shortgi_20mhz_support; uint32_t shortgi_40mhz_support; limGetPhyMode(pMac, &phyMode, psessionEntry); pStaDs->staType= STA_ENTRY_SELF; limGetQosMode(psessionEntry, &qosMode); pStaDs->mlmStaContext.authType = psessionEntry->limCurrentAuthType; // Add capabilities information, rates and AID pStaDs->mlmStaContext.capabilityInfo = pAssocRsp->capabilityInfo; pStaDs->shortPreambleEnabled= (tANI_U8)pAssocRsp->capabilityInfo.shortPreamble; //Update HT Capabilites only when the self mode supports HT if(IS_DOT11_MODE_HT(psessionEntry->dot11mode)) { pStaDs->mlmStaContext.htCapability = pAssocRsp->HTCaps.present; if ( pAssocRsp->HTCaps.present ) { pStaDs->htGreenfield = ( tANI_U8 ) pAssocRsp->HTCaps.greenField; if (psessionEntry->htSupportedChannelWidthSet) { pStaDs->htSupportedChannelWidthSet = (tANI_U8)(pAssocRsp->HTCaps.supportedChannelWidthSet ? pAssocRsp->HTInfo.recommendedTxWidthSet : pAssocRsp->HTCaps.supportedChannelWidthSet); } else pStaDs->htSupportedChannelWidthSet = eHT_CHANNEL_WIDTH_20MHZ; pStaDs->htLsigTXOPProtection = ( tANI_U8 ) pAssocRsp->HTCaps.lsigTXOPProtection; pStaDs->htMIMOPSState = (tSirMacHTMIMOPowerSaveState)pAssocRsp->HTCaps.mimoPowerSave; pStaDs->htMaxAmsduLength = ( tANI_U8 ) pAssocRsp->HTCaps.maximalAMSDUsize; pStaDs->htAMpduDensity = pAssocRsp->HTCaps.mpduDensity; pStaDs->htDsssCckRate40MHzSupport = (tANI_U8)pAssocRsp->HTCaps.dsssCckMode40MHz; pStaDs->htMaxRxAMpduFactor = pAssocRsp->HTCaps.maxRxAMPDUFactor; limFillRxHighestSupportedRate(pMac, &rxHighestRate, pAssocRsp->HTCaps.supportedMCSSet); pStaDs->supportedRates.rxHighestDataRate = rxHighestRate; /* This is for AP as peer STA and we are INFRA STA. We will put APs offset in dph node which is peer STA */ pStaDs->htSecondaryChannelOffset = (tANI_U8)pAssocRsp->HTInfo.secondaryChannelOffset; //FIXME_AMPDU // In the future, may need to check for "assoc.HTCaps.delayedBA" // For now, it is IMMEDIATE BA only on ALL TID's pStaDs->baPolicyFlag = 0xFF; /* * Check if we have support for gShortGI20Mhz and * gShortGI40Mhz from ini file. */ if (HAL_STATUS_SUCCESS(ccmCfgGetInt(pMac, WNI_CFG_SHORT_GI_20MHZ, &shortgi_20mhz_support))) { if (VOS_TRUE == shortgi_20mhz_support) pStaDs->htShortGI20Mhz = (tANI_U8)pAssocRsp->HTCaps.shortGI20MHz; else pStaDs->htShortGI20Mhz = VOS_FALSE; } else { limLog(pMac, LOGE, FL("could not retrieve shortGI 20Mhz CFG, setting value to default")); pStaDs->htShortGI20Mhz = WNI_CFG_SHORT_GI_20MHZ_STADEF; } if (HAL_STATUS_SUCCESS(ccmCfgGetInt(pMac, WNI_CFG_SHORT_GI_40MHZ, &shortgi_40mhz_support))) { if (VOS_TRUE == shortgi_40mhz_support) pStaDs->htShortGI40Mhz = (tANI_U8)pAssocRsp->HTCaps.shortGI40MHz; else pStaDs->htShortGI40Mhz = VOS_FALSE; } else { limLog(pMac, LOGE, FL("could not retrieve shortGI 40Mhz CFG,setting value to default")); pStaDs->htShortGI40Mhz = WNI_CFG_SHORT_GI_40MHZ_STADEF; } } } #ifdef WLAN_FEATURE_11AC if(IS_DOT11_MODE_VHT(psessionEntry->dot11mode)) { pStaDs->mlmStaContext.vhtCapability = pAssocRsp->VHTCaps.present; if (pAssocRsp->VHTCaps.present && psessionEntry->htSupportedChannelWidthSet) pStaDs->vhtSupportedChannelWidthSet = pAssocRsp->VHTOperation.chanWidth; } // If 11ac is supported and if the peer is sending VHT capabilities, // then htMaxRxAMpduFactor should be overloaded with VHT maxAMPDULenExp if (pAssocRsp->VHTCaps.present) { pStaDs->htMaxRxAMpduFactor = pAssocRsp->VHTCaps.maxAMPDULenExp; } if (limPopulatePeerRateSet(pMac, &pStaDs->supportedRates, pAssocRsp->HTCaps.supportedMCSSet, false,psessionEntry , &pAssocRsp->VHTCaps) != eSIR_SUCCESS) #else if (limPopulatePeerRateSet(pMac, &pStaDs->supportedRates, pAssocRsp->HTCaps.supportedMCSSet, false,psessionEntry) != eSIR_SUCCESS) #endif { limLog(pMac, LOGP, FL("could not get rateset and extended rate set")); return; } #ifdef WLAN_FEATURE_11AC pStaDs->vhtSupportedRxNss = ((pStaDs->supportedRates.vhtRxMCSMap & MCSMAPMASK2x2) == MCSMAPMASK2x2) ? 1 : 2; #endif //If one of the rates is 11g rates, set the ERP mode. if ((phyMode == WNI_CFG_PHY_MODE_11G) && sirIsArate(pStaDs->supportedRates.llaRates[0] & 0x7f)) pStaDs->erpEnabled = eHAL_SET; pStaDs->qosMode = 0; pStaDs->lleEnabled = 0; // update TSID to UP mapping if (qosMode) { if (pAssocRsp->edcaPresent) { tSirRetStatus status; status = schBeaconEdcaProcess(pMac,&pAssocRsp->edca, psessionEntry); PELOG2(limLog(pMac, LOG2, "Edca set update based on AssocRsp: status %d", status);) if (status != eSIR_SUCCESS) { PELOGE(limLog(pMac, LOGE, FL("Edca error in AssocResp "));) } else { // update default tidmap based on ACM