diff options
| author | Linux Build Service Account <lnxbuild@localhost> | 2014-06-14 14:53:44 -0700 |
|---|---|---|
| committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2014-06-14 14:53:44 -0700 |
| commit | 1610c8b8788a2be64308ea7643cd4e4b7cb9b663 (patch) | |
| tree | 7266d50293df74498e29833bed0c199f3a8185cf /CORE/SAP/src | |
| parent | 62e2c01e149d8d5f19951d1359d26e53044fd6e6 (diff) | |
| parent | 2cb8f20554cc937f34e96b970823fa178d8477c4 (diff) | |
Merge "Release 1.0.0.124 & 1.0.0.125 QCACLD WLAN Driver"
Diffstat (limited to 'CORE/SAP/src')
| -rw-r--r-- | CORE/SAP/src/sapFsm.c | 67 | ||||
| -rw-r--r-- | CORE/SAP/src/sapModule.c | 46 |
2 files changed, 92 insertions, 21 deletions
diff --git a/CORE/SAP/src/sapFsm.c b/CORE/SAP/src/sapFsm.c index ba9f118dd763..553ba85aa59f 100644 --- a/CORE/SAP/src/sapFsm.c +++ b/CORE/SAP/src/sapFsm.c @@ -215,7 +215,7 @@ static v_U8_t sapRandomChannelSel(ptSapContext sapContext) } total_num_channels = sapContext->SapAllChnlList.numChannel; - for (i = 0, available_chan_count = 0; i< total_num_channels; i++) + for (i = 0, available_chan_count = 0; i < total_num_channels; i++) { /* * Now Check if the channel is DFS and if @@ -1189,11 +1189,17 @@ sapFsm if (msg == eSAP_MAC_SCAN_COMPLETE) { tHalHandle hHal = VOS_GET_HAL_CB(sapContext->pvosGCtx); + if (NULL == hHal) + { + VOS_TRACE( VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_ERROR, + "In %s, NULL hHal in state %s, msg %d ", __func__, + "eSAP_CH_SELECT", msg); + return VOS_STATUS_E_FAULT; + } #ifdef FEATURE_WLAN_MCC_TO_SCC_SWITCH - v_U16_t cc_ch; - if (NULL != hHal && - sapContext->cc_switch_mode != VOS_MCC_TO_SCC_SWITCH_DISABLE) + if (sapContext->cc_switch_mode != VOS_MCC_TO_SCC_SWITCH_DISABLE) { + v_U16_t cc_ch; cc_ch = sme_CheckConcurrentChannelOverlap(hHal, sapContext->channel, sapConvertSapPhyModeToCsrPhyMode( @@ -1692,6 +1698,17 @@ sapconvertToCsrProfile(tsap_Config_t *pconfig_params, eCsrRoamBssType bssType, t profile->MFPRequired = pconfig_params->mfpRequired ? 1 : 0; #endif + if (pconfig_params->addnIEsBufferLen > 0 && + pconfig_params->addnIEsBuffer != NULL) + { + profile->addIeParams.dataLen = pconfig_params->addnIEsBufferLen; + profile->addIeParams.data_buff = pconfig_params->addnIEsBuffer; + } + else + { + profile->addIeParams.dataLen = 0; + profile->addIeParams.data_buff = NULL; + } return eSAP_STATUS_SUCCESS; /* Success. */ } @@ -2190,10 +2207,12 @@ static VOS_STATUS sapGet5GHzChannelList(ptSapContext sapContext) * dfs_event - Dfs information from DFS * return - channel to which AP wishes to switch */ -v_U8_t sapIndicateRadar(ptSapContext sapContext,tSirSmeDfsEventInd *dfs_event) +v_U8_t sapIndicateRadar(ptSapContext sapContext, tSirSmeDfsEventInd *dfs_event) { v_U8_t target_channel = 0; - int i; + int i, j; + tSapDfsNolInfo *psapDfsChannelNolList = NULL; + v_U8_t nRegDomainDfsChannels; if (NULL == sapContext || NULL == dfs_event) { @@ -2228,22 +2247,28 @@ v_U8_t sapIndicateRadar(ptSapContext sapContext,tSirSmeDfsEventInd *dfs_event) * in the NOL list as eSAP_DFS_CHANNEL_UNAVAILABLE. */ - for (i = 0; i<= sapContext->SapDfsInfo.numCurrentRegDomainDfsChannels; i++) - { - if (sapContext->SapDfsInfo.sapDfsChannelNolList[i] - .dfs_channel_number == - dfs_event->ieee_chan_number) + psapDfsChannelNolList = sapContext->SapDfsInfo.sapDfsChannelNolList; + nRegDomainDfsChannels = sapContext->SapDfsInfo.numCurrentRegDomainDfsChannels; + for (i = 0; i < dfs_event->chan_list.nchannels; i++) { + for (j = 0; j <= nRegDomainDfsChannels; j++) { - // Capture the Radar Found timestamp on the Current Channel in ms. - sapContext->SapDfsInfo.sapDfsChannelNolList[i] - .radar_found_timestamp = vos_timer_get_system_time(); - // Mark the Channel to be UNAVAILABLE for next 30 mins. - sapContext->SapDfsInfo.sapDfsChannelNolList[i] - .radar_status_flag = eSAP_DFS_CHANNEL_UNAVAILABLE; - - VOS_TRACE(VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_INFO_HIGH, - "%s[%d]: Channel = %d Added to NOL LIST", - __func__, __LINE__, dfs_event->ieee_chan_number); + if (psapDfsChannelNolList[j].dfs_channel_number == + dfs_event->chan_list.channels[i]) + { + /* + * Capture the Radar Found timestamp on the Current Channel in + * ms. + */ + psapDfsChannelNolList[j].radar_found_timestamp = + vos_timer_get_system_time(); + /* Mark the Channel to be UNAVAILABLE for next 30 mins */ + psapDfsChannelNolList[j].radar_status_flag = + eSAP_DFS_CHANNEL_UNAVAILABLE; + + VOS_TRACE(VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_INFO_HIGH, + FL("Channel = %d Added to NOL LIST"), + dfs_event->chan_list.channels[i]); + } } } diff --git a/CORE/SAP/src/sapModule.c b/CORE/SAP/src/sapModule.c index 50bcb2591c8d..a48e1e92ac32 100644 --- a/CORE/SAP/src/sapModule.c +++ b/CORE/SAP/src/sapModule.c @@ -2770,6 +2770,52 @@ VOS_STATUS WLANSAP_Set_Dfs_Ignore_CAC(v_PVOID_t pvosGCtx, v_U8_t ignore_cac) return VOS_STATUS_SUCCESS; } +VOS_STATUS WLANSAP_UpdateSapConfigAddIE(tsap_Config_t *pConfig, + const tANI_U8 *pAdditionIEBuffer, + tANI_U16 additionIELength) +{ + VOS_STATUS status = VOS_STATUS_SUCCESS; + + if (NULL == pConfig) { + return VOS_STATUS_E_FAULT; + } + if ( (pAdditionIEBuffer != NULL) && (additionIELength != 0) ) { + /* initialize the buffer pointer so that pe can copy*/ + if (additionIELength > 0) { + pConfig->addnIEsBufferLen = additionIELength; + pConfig->addnIEsBuffer = vos_mem_malloc(additionIELength); + if (NULL == pConfig->addnIEsBuffer) { + VOS_TRACE(VOS_MODULE_ID_SME, VOS_TRACE_LEVEL_ERROR, + "%s: Could not copy PROBE_RSP_ADDNIE", __func__); + return VOS_STATUS_E_NOMEM; + } + vos_mem_copy(pConfig->addnIEsBuffer, + pAdditionIEBuffer, additionIELength); + } + } else { + vos_mem_free(pConfig->addnIEsBuffer); + pConfig->addnIEsBufferLen = 0; + pConfig->addnIEsBuffer = NULL; + + VOS_TRACE(VOS_MODULE_ID_SME, VOS_TRACE_LEVEL_INFO, + "%s: No Probe Response IE received in set beacon", __func__); + } + + return (status); +} + + +VOS_STATUS WLANSAP_ResetSapConfigAddIE(tsap_Config_t *pConfig ) +{ + if (NULL == pConfig) { + return VOS_STATUS_E_FAULT; + } + vos_mem_free( pConfig->addnIEsBuffer); + pConfig->addnIEsBufferLen = 0; + pConfig->addnIEsBuffer = NULL; + return VOS_STATUS_SUCCESS; +} + /*========================================================================== FUNCTION WLANSAP_Get_DfsNol |
