summaryrefslogtreecommitdiff
path: root/CORE/SAP/src
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2014-06-14 14:53:44 -0700
committerGerrit - the friendly Code Review server <code-review@localhost>2014-06-14 14:53:44 -0700
commit1610c8b8788a2be64308ea7643cd4e4b7cb9b663 (patch)
tree7266d50293df74498e29833bed0c199f3a8185cf /CORE/SAP/src
parent62e2c01e149d8d5f19951d1359d26e53044fd6e6 (diff)
parent2cb8f20554cc937f34e96b970823fa178d8477c4 (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.c67
-rw-r--r--CORE/SAP/src/sapModule.c46
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