From 54fcad86b5aa1b8f847bbdfacb7822d2befaeb73 Mon Sep 17 00:00:00 2001 From: Manikandan Mohan Date: Mon, 17 Nov 2014 12:25:40 -0800 Subject: qcacld SAP: Fail SAP Start BSS on ACS fail When no channel could be selected by Auto channel select due to DFS, LTE-Coex and concurrent mode restrictions, we used to return first channel in given ACS range or ACS band. Changed this behavior to fail BSS startup if ACS failed to find a channel. Change-Id: I423ddda9d1b0c3b4eabcc21d487cfd2e0e895d40 CRs-fixed: 758178 --- CORE/SAP/src/sapApiLinkCntl.c | 44 ++++++------------------------------------- CORE/SAP/src/sapFsm.c | 8 +++++++- CORE/SAP/src/sapFsm_ext.h | 1 + 3 files changed, 14 insertions(+), 39 deletions(-) diff --git a/CORE/SAP/src/sapApiLinkCntl.c b/CORE/SAP/src/sapApiLinkCntl.c index 2f84fe876850..a6970407d638 100644 --- a/CORE/SAP/src/sapApiLinkCntl.c +++ b/CORE/SAP/src/sapApiLinkCntl.c @@ -142,10 +142,6 @@ WLANSAP_ScanCallback tpAniSirGlobal pMac = NULL; v_U32_t vhtChannelWidth; #ifdef SOFTAP_CHANNEL_RANGE -#if !defined(FEATURE_WLAN_STA_AP_MODE_DFS_DISABLE) && \ - !defined(WLAN_FEATURE_MBSSID) - v_U32_t operatingBand; -#endif v_U32_t event; #endif @@ -204,43 +200,15 @@ WLANSAP_ScanCallback 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__); + VOS_TRACE( VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_INFO_HIGH, + "%s: No suitable channel selected due to DFS, LTE-Coex and " + "Concurrent mode restrictions", __func__); if ( eCSR_BAND_ALL == psapContext->scanBandPreference || psapContext->allBandScanned == eSAP_TRUE) { -#if defined(FEATURE_WLAN_STA_AP_MODE_DFS_DISABLE) || \ - defined(WLAN_FEATURE_MBSSID) - VOS_TRACE( VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_ERROR, - "%s: ACS failed due to concurrent mode restrictions.. \n" - "Setting SAP channel to default ch (%d)", __func__, - SAP_DEFAULT_24GHZ_CHANNEL); - /* If there is no valid channel in the selected ACS range select - * default 2.4GHz channel only. 5GHz channels were purposely - * avoided due to DFS and Concurrent mode restrictions - */ - psapContext->channel = SAP_DEFAULT_24GHZ_CHANNEL; -#else - - 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_24GHZ_CHANNEL; - else - psapContext->channel = SAP_DEFAULT_5GHZ_CHANNEL; - } -#endif + psapContext->sapsMachine = eSAP_CH_SELECT; + event = eSAP_CHANNEL_SELECTION_FAILED; } else { @@ -255,7 +223,7 @@ WLANSAP_ScanCallback psapContext->allBandScanned = eSAP_TRUE; //go back to DISCONNECT state, scan next band psapContext->sapsMachine = eSAP_DISCONNECTED; - event = eSAP_CHANNEL_SELECTION_FAILED; + event = eSAP_CHANNEL_SELECTION_RETRY; } } #else diff --git a/CORE/SAP/src/sapFsm.c b/CORE/SAP/src/sapFsm.c index 7241c5a8f4f2..dd78a44146de 100644 --- a/CORE/SAP/src/sapFsm.c +++ b/CORE/SAP/src/sapFsm.c @@ -3224,7 +3224,7 @@ sapFsm vosStatus = sap_CacStartNotify(hHal); } - else if (msg == eSAP_CHANNEL_SELECTION_FAILED) + else if (msg == eSAP_CHANNEL_SELECTION_RETRY) { /* Set SAP device role */ sapContext->sapsMachine = eSAP_CH_SELECT; @@ -3418,6 +3418,12 @@ sapFsm } vosStatus = sapGotoStarting( sapContext, sapEvent, eCSR_BSS_TYPE_INFRA_AP); } + else if (msg == eSAP_CHANNEL_SELECTION_FAILED) { + sapContext->sapsMachine = eSAP_DISCONNECTED; + VOS_TRACE(VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_ERROR, + "\n\n***In %s, Cannot start BSS, ACS Fail***\n\n", + __func__); + } else { VOS_TRACE( VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_ERROR, "In %s, in state %s, invalid event msg %d", diff --git a/CORE/SAP/src/sapFsm_ext.h b/CORE/SAP/src/sapFsm_ext.h index 58d77e527428..23c806d0de24 100644 --- a/CORE/SAP/src/sapFsm_ext.h +++ b/CORE/SAP/src/sapFsm_ext.h @@ -55,6 +55,7 @@ typedef enum eSAP_DFS_CHANNEL_CAC_END, eSAP_DFS_CHNL_SWITCH_ANNOUNCEMENT_START, eSAP_OPERATING_CHANNEL_CHANGED, + eSAP_CHANNEL_SELECTION_RETRY, eSAP_NO_MSG }eSapMsg_t; -- cgit v1.2.3