From f76b84e83212b04b2a6bae0e9a976faeba87d59d Mon Sep 17 00:00:00 2001 From: Yue Ma Date: Thu, 30 Apr 2015 18:38:21 -0700 Subject: qca_cld: Add support to ignore CAC for both SAP and P2P GO mode Currently CAC can only be ignored for SAP. Add support to ignore CAC for P2P GO also. Change-Id: I9490bf19f27177bbb9d97d9f9240df3f6337cf89 CRs-fixed: 848661 --- CORE/HDD/src/wlan_hdd_cfg80211.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CORE/HDD/src/wlan_hdd_cfg80211.c b/CORE/HDD/src/wlan_hdd_cfg80211.c index ddfcdeb25622..c7db9f310667 100644 --- a/CORE/HDD/src/wlan_hdd_cfg80211.c +++ b/CORE/HDD/src/wlan_hdd_cfg80211.c @@ -9473,7 +9473,6 @@ static int wlan_hdd_cfg80211_start_bss(hdd_adapter_t *pHostapdAdapter, hddLog(LOGE, FL("not allowed to start SAP on DFS channel")); return -EOPNOTSUPP; } - WLANSAP_Set_Dfs_Ignore_CAC(hHal, iniConfig->ignoreCAC); /* * Set the JAPAN W53 disabled INI param @@ -9510,6 +9509,8 @@ static int wlan_hdd_cfg80211_start_bss(hdd_adapter_t *pHostapdAdapter, pConfig->ieee80211d = 0; } + WLANSAP_Set_Dfs_Ignore_CAC(hHal, iniConfig->ignoreCAC); + capab_info = pMgmt_frame->u.beacon.capab_info; pConfig->privacy = (pMgmt_frame->u.beacon.capab_info & -- cgit v1.2.3 From a83a212970df917533bd91481cba555734fe2e97 Mon Sep 17 00:00:00 2001 From: Subhani Shaik Date: Thu, 4 Jun 2015 12:10:24 -0700 Subject: qcacld: Fix invalid file pointer issue. The file pointer if not true is not handled correctly. Fixing the issue determined by KW. Change-Id: I86e109557a03acb548df4347074115588edd4002 CRs-Fixed: 848720 --- tools/fwdebuglog/parser.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tools/fwdebuglog/parser.c b/tools/fwdebuglog/parser.c index a98364b78794..a73bfc97701f 100644 --- a/tools/fwdebuglog/parser.c +++ b/tools/fwdebuglog/parser.c @@ -93,6 +93,8 @@ diag_print_legacy_logs(const char *buf) record++; if (log_out) fprintf(log_out, "%s\n", buf); + else + return; if (record == max_records) { record = 0; fseek(log_out, record, SEEK_SET); -- cgit v1.2.3 From 8a1cf92e74fefe3db2cbad28e944bfa41074b009 Mon Sep 17 00:00:00 2001 From: Yue Ma Date: Wed, 3 Jun 2015 13:59:24 +0530 Subject: qcacld-2.0: ini support for FW hash check for secure firmware Feature Add ini parameter support to enable/disable FW hash check for the secure firmware feature. Change-Id: I1eabbde98c9494cf477be861dcfe9425c6a0e759 CRs-Fixed: 847630 --- CORE/HDD/inc/wlan_hdd_cfg.h | 10 ++++++++++ CORE/HDD/src/wlan_hdd_cfg.c | 15 +++++++++++++-- CORE/SERVICES/BMI/ol_fw.c | 4 ++-- CORE/SERVICES/COMMON/ol_if_athvar.h | 3 +++ CORE/VOSS/src/vos_api.c | 17 +++++++++++++++++ Kbuild | 5 +++++ firmware_bin/WCNSS_qcom_cfg.ini | 3 +++ 7 files changed, 53 insertions(+), 4 deletions(-) diff --git a/CORE/HDD/inc/wlan_hdd_cfg.h b/CORE/HDD/inc/wlan_hdd_cfg.h index da06491635a6..a92176063f19 100644 --- a/CORE/HDD/inc/wlan_hdd_cfg.h +++ b/CORE/HDD/inc/wlan_hdd_cfg.h @@ -1154,6 +1154,13 @@ typedef enum #define CFG_RUNTIME_PM_AUTO_DEFAULT ( 500 ) #endif +#ifdef FEATURE_SECURE_FIRMWARE +#define CFG_ENABLE_FW_HASH_CHECK_NAME "gEnableFWHashCheck" +#define CFG_ENABLE_FW_HASH_CHECK_MIN ( 0 ) +#define CFG_ENABLE_FW_HASH_CHECK_MAX ( 1 ) +#define CFG_ENABLE_FW_HASH_CHECK_DEFAULT ( 1 ) +#endif + #define CFG_ENABLE_HOST_NSOFFLOAD_NAME "hostNSOffload" #define CFG_ENABLE_HOST_NSOFFLOAD_MIN ( 0 ) #define CFG_ENABLE_HOST_NSOFFLOAD_MAX ( 1 ) @@ -3441,6 +3448,9 @@ typedef struct uint32_t tsf_gpio_pin; uint8_t multicast_host_fw_msgs; uint32_t fine_time_meas_cap; +#ifdef FEATURE_SECURE_FIRMWARE + bool enable_fw_hash_check; +#endif } hdd_config_t; #ifdef WLAN_FEATURE_MBSSID diff --git a/CORE/HDD/src/wlan_hdd_cfg.c b/CORE/HDD/src/wlan_hdd_cfg.c index 3558a4dc7a48..8978cc8de1b9 100644 --- a/CORE/HDD/src/wlan_hdd_cfg.c +++ b/CORE/HDD/src/wlan_hdd_cfg.c @@ -1703,6 +1703,15 @@ REG_TABLE_ENTRY g_registry_table[] = CFG_RUNTIME_PM_AUTO_MAX ), #endif +#ifdef FEATURE_SECURE_FIRMWARE + REG_VARIABLE(CFG_ENABLE_FW_HASH_CHECK_NAME, WLAN_PARAM_Integer, + hdd_config_t, enable_fw_hash_check, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_ENABLE_FW_HASH_CHECK_DEFAULT, + CFG_ENABLE_FW_HASH_CHECK_MIN, + CFG_ENABLE_FW_HASH_CHECK_MAX), +#endif + REG_VARIABLE( CFG_ENABLE_HOST_NSOFFLOAD_NAME, WLAN_PARAM_Integer, hdd_config_t, fhostNSOffload, VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, @@ -4019,8 +4028,10 @@ void print_hdd_cfg(hdd_context_t *pHddCtx) VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [runtime_pm] Value = [%u] ", pHddCtx->cfg_ini->runtime_pm); VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [runtime_pm_delay] Value = [%u] ", pHddCtx->cfg_ini->runtime_pm_delay); #endif - - +#ifdef FEATURE_SECURE_FIRMWARE + hddLog(LOG2, "Name = [enable_fw_hash_check] Value = [%u]", + pHddCtx->cfg_ini->enable_fw_hash_check); +#endif #ifdef FEATURE_WLAN_RA_FILTERING VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [RArateLimitInterval] Value = [%u] ", pHddCtx->cfg_ini->RArateLimitInterval); VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [IsRArateLimitEnabled] Value = [%u] ", pHddCtx->cfg_ini->IsRArateLimitEnabled); diff --git a/CORE/SERVICES/BMI/ol_fw.c b/CORE/SERVICES/BMI/ol_fw.c index 4d2295fdbf92..ca03adb5d192 100644 --- a/CORE/SERVICES/BMI/ol_fw.c +++ b/CORE/SERVICES/BMI/ol_fw.c @@ -610,8 +610,8 @@ static int __ol_transfer_bin_file(struct ol_softc *scn, ATH_BIN_FILE file, tempEeprom = NULL; #ifdef FEATURE_SECURE_FIRMWARE - - if (ol_check_fw_hash(fw_entry->data, fw_entry_size, file)) { + if (scn->enable_fw_hash_check && + ol_check_fw_hash(fw_entry->data, fw_entry_size, file)) { pr_err("Hash Check failed for file:%s\n", filename); status = A_ERROR; goto end; diff --git a/CORE/SERVICES/COMMON/ol_if_athvar.h b/CORE/SERVICES/COMMON/ol_if_athvar.h index 13a8f7a3a64c..002e8fa1a7fc 100644 --- a/CORE/SERVICES/COMMON/ol_if_athvar.h +++ b/CORE/SERVICES/COMMON/ol_if_athvar.h @@ -296,6 +296,9 @@ struct ol_softc { bool enable_runtime_pm; u_int32_t runtime_pm_delay; #endif +#ifdef FEATURE_SECURE_FIRMWARE + bool enable_fw_hash_check; +#endif }; #ifdef PERE_IP_HDR_ALIGNMENT_WAR diff --git a/CORE/VOSS/src/vos_api.c b/CORE/VOSS/src/vos_api.c index e7b4ff2b96e8..06a09ec64ea2 100644 --- a/CORE/VOSS/src/vos_api.c +++ b/CORE/VOSS/src/vos_api.c @@ -233,6 +233,22 @@ static inline void vos_runtime_pm_config(struct ol_softc *scn, hdd_context_t *pHddCtx) { } #endif +#if defined (FEATURE_SECURE_FIRMWARE) && defined (FEATURE_FW_HASH_CHECK) +static inline void vos_fw_hash_check_config(struct ol_softc *scn, + hdd_context_t *pHddCtx) +{ + scn->enable_fw_hash_check = pHddCtx->cfg_ini->enable_fw_hash_check; +} +#elif defined (FEATURE_SECURE_FIRMWARE) +static inline void vos_fw_hash_check_config(struct ol_softc *scn, + hdd_context_t *pHddCtx) +{ + scn->enable_fw_hash_check = true; +} +#else +static inline void vos_fw_hash_check_config(struct ol_softc *scn, + hdd_context_t *pHddCtx) { } +#endif /*--------------------------------------------------------------------------- @@ -371,6 +387,7 @@ VOS_STATUS vos_open( v_CONTEXT_t *pVosContext, v_SIZE_t hddContextSize ) #endif scn->enableRamdumpCollection = pHddCtx->cfg_ini->is_ramdump_enabled; + vos_fw_hash_check_config(scn, pHddCtx); vos_runtime_pm_config(scn, pHddCtx); /* Initialize BMI and Download firmware */ diff --git a/Kbuild b/Kbuild index f49bc6bb4185..765eb81ecf91 100644 --- a/Kbuild +++ b/Kbuild @@ -1317,6 +1317,11 @@ ifeq ($(CONFIG_CNSS_SECURE_FW), y) CDEFINES += -DFEATURE_SECURE_FIRMWARE endif +#Enable/disable FW hash check for secure firmware feature +ifeq ($(CONFIG_CLD_DEBUG), y) +CDEFINES += -DFEATURE_FW_HASH_CHECK +endif + ifeq ($(CONFIG_ATH_PCIE_ACCESS_DEBUG), 1) CDEFINES += -DCONFIG_ATH_PCIE_ACCESS_DEBUG endif diff --git a/firmware_bin/WCNSS_qcom_cfg.ini b/firmware_bin/WCNSS_qcom_cfg.ini index 9edba1980088..51f8a672fc85 100755 --- a/firmware_bin/WCNSS_qcom_cfg.ini +++ b/firmware_bin/WCNSS_qcom_cfg.ini @@ -631,6 +631,9 @@ gRuntimePM=1 gRuntimePMDelay=500 +# Enable to check FW hash if secure FW feature is enabled. It's for defconfig +# builds only since it will be ignored in performance/release builds. +gEnableFWHashCheck=1 END # Note: Configuration parser would not read anything past the END marker -- cgit v1.2.3 From 9e8dcaa00882296c6e81e475e039bfcae148ca13 Mon Sep 17 00:00:00 2001 From: Rajeev Kumar Date: Wed, 3 Jun 2015 13:14:20 -0700 Subject: qcacld: Enable user space logging for all host modules - Increase kernel log buffer size to accomodate more logs to debug complex issues - Enable all log levels for all modules during driver load Change-Id: I0894242286c972fb0c7b15bc8d043ae590d4a62a CRs-Fixed: 847962 --- CORE/HDD/inc/wlan_hdd_cfg.h | 4 ++-- CORE/SVC/src/logging/wlan_logging_sock_svc.c | 14 +++++--------- 2 files changed, 7 insertions(+), 11 deletions(-) diff --git a/CORE/HDD/inc/wlan_hdd_cfg.h b/CORE/HDD/inc/wlan_hdd_cfg.h index a92176063f19..f318c018d973 100644 --- a/CORE/HDD/inc/wlan_hdd_cfg.h +++ b/CORE/HDD/inc/wlan_hdd_cfg.h @@ -2499,8 +2499,8 @@ This feature requires the dependent cfg.ini "gRoamPrefer5GHz" set to 1 */ /* Number of buffers to be used for WLAN logging */ #define CFG_WLAN_LOGGING_NUM_BUF_NAME "wlanLoggingNumBuf" #define CFG_WLAN_LOGGING_NUM_BUF_MIN ( 4 ) -#define CFG_WLAN_LOGGING_NUM_BUF_MAX ( 64 ) -#define CFG_WLAN_LOGGING_NUM_BUF_DEFAULT ( 32 ) +#define CFG_WLAN_LOGGING_NUM_BUF_MAX ( 512 ) +#define CFG_WLAN_LOGGING_NUM_BUF_DEFAULT ( 256 ) #endif /* WLAN_LOGGING_SOCK_SVC_ENABLE */ #define CFG_ENABLE_SIFS_BURST "gEnableSifsBurst" diff --git a/CORE/SVC/src/logging/wlan_logging_sock_svc.c b/CORE/SVC/src/logging/wlan_logging_sock_svc.c index 71aa45cf2f11..bea69f6cac50 100644 --- a/CORE/SVC/src/logging/wlan_logging_sock_svc.c +++ b/CORE/SVC/src/logging/wlan_logging_sock_svc.c @@ -161,15 +161,11 @@ static int wlan_send_sock_msg_to_app(tAniHdr *wmsg, int radio, static void set_default_logtoapp_log_level(void) { - vos_trace_setValue(VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ALL, VOS_TRUE); - vos_trace_setValue(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_ALL, VOS_TRUE); - vos_trace_setValue(VOS_MODULE_ID_SME, VOS_TRACE_LEVEL_ALL, VOS_TRUE); - vos_trace_setValue(VOS_MODULE_ID_PE, VOS_TRACE_LEVEL_ALL, VOS_TRUE); - vos_trace_setValue(VOS_MODULE_ID_WDA, VOS_TRACE_LEVEL_ALL, VOS_TRUE); - vos_trace_setValue(VOS_MODULE_ID_HDD_SOFTAP, VOS_TRACE_LEVEL_ALL, - VOS_TRUE); - vos_trace_setValue(VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_ALL, VOS_TRUE); - vos_trace_setValue(VOS_MODULE_ID_PMC, VOS_TRACE_LEVEL_ALL, VOS_TRUE); + int i; + + /* module id 0 is reserved */ + for (i = 1; i < VOS_MODULE_ID_MAX; i++) + vos_trace_setValue(i, VOS_TRACE_LEVEL_ALL, VOS_TRUE); } static void clear_default_logtoapp_log_level(void) -- cgit v1.2.3 From 4bf482c90b595108d3533c2bf63dc57c46d2fdee Mon Sep 17 00:00:00 2001 From: Rajeev Kumar Date: Thu, 4 Jun 2015 11:14:12 -0700 Subject: qcacld: Remove redundant logs from tx data path Remove redundant logs from tx data path Change-Id: I609c883c57550cc78a52886c7efe18b439b2b285 CRs-Fixed: 847962 --- CORE/CLD_TXRX/TLSHIM/tl_shim.c | 1 - CORE/VOSS/src/vos_sched.c | 2 -- 2 files changed, 3 deletions(-) diff --git a/CORE/CLD_TXRX/TLSHIM/tl_shim.c b/CORE/CLD_TXRX/TLSHIM/tl_shim.c index 5eed10d095e9..80a2b5a4eef8 100644 --- a/CORE/CLD_TXRX/TLSHIM/tl_shim.c +++ b/CORE/CLD_TXRX/TLSHIM/tl_shim.c @@ -1132,7 +1132,6 @@ adf_nbuf_t WLANTL_SendSTA_DataFrame(void *vos_ctx, u_int8_t sta_id, adf_nbuf_t ret; struct ol_txrx_peer_t *peer; - ENTER(); if (!tl_shim) { TLSHIM_LOGE("tl_shim is NULL"); return skb; diff --git a/CORE/VOSS/src/vos_sched.c b/CORE/VOSS/src/vos_sched.c index 0e9944d1c14e..66435336495e 100644 --- a/CORE/VOSS/src/vos_sched.c +++ b/CORE/VOSS/src/vos_sched.c @@ -1014,8 +1014,6 @@ VosMCThread v_BOOL_t isWDresetInProgress(void) { - VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_INFO, - "%s: Reset is in Progress...",__func__); if(gpVosWatchdogContext!=NULL) { return gpVosWatchdogContext->resetInProgress; -- cgit v1.2.3 From e0b5f0de932cf33abae2327cf0c84b789371fdfc Mon Sep 17 00:00:00 2001 From: "Masti, Narayanraddi" Date: Tue, 19 May 2015 15:37:45 +0530 Subject: qcacld-2.0: Suspicious Null pointer dereference PopulateDot11fExtCap invoked in limSendProbeReqMgmtFrame with Suspicious Null pointer as argument. To mitigate include Null check in limSendProbeReqMgmtFrame Change-Id: I9a27c1756bf548fa278d3573507111d588a418de CRs-Fixed: 839324 --- CORE/MAC/src/pe/lim/limSendManagementFrames.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/CORE/MAC/src/pe/lim/limSendManagementFrames.c b/CORE/MAC/src/pe/lim/limSendManagementFrames.c index 23c13801305c..762dbfa6c7d6 100644 --- a/CORE/MAC/src/pe/lim/limSendManagementFrames.c +++ b/CORE/MAC/src/pe/lim/limSendManagementFrames.c @@ -514,7 +514,12 @@ limSendProbeReqMgmtFrame(tpAniSirGlobal pMac, } } #endif - PopulateDot11fExtCap(pMac, isVHTEnabled, &pr.ExtCap, psessionEntry); + + if (psessionEntry != NULL) + PopulateDot11fExtCap(pMac, isVHTEnabled, &pr.ExtCap, psessionEntry); + else + limLog(pMac, LOGE, + FL("session entry null, ext capabilities will not be populated")); // That's it-- now we pack it. First, how much space are we going to // need? -- cgit v1.2.3 From 6e79dbb41168fcb903e83e29b676fc5893076597 Mon Sep 17 00:00:00 2001 From: Rajesh Chauhan Date: Thu, 4 Jun 2015 10:06:21 -0700 Subject: qcacld: Set max number of TDLS peers to 1 when offchannel is enabled When TDLS offchannel is enabled then only one TDLS connection is allowed. Set max number of TDLS peers to 1 when TDLS offchannel is enabled. Change-Id: I28aa39774a4a3c6ed2315bc060bee13d4104fbbe CRs-Fixed: 848623 --- CORE/HDD/inc/wlan_hdd_assoc.h | 2 +- CORE/HDD/src/wlan_hdd_tdls.c | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/CORE/HDD/inc/wlan_hdd_assoc.h b/CORE/HDD/inc/wlan_hdd_assoc.h index 72a1641cb898..2bf38aa511d6 100644 --- a/CORE/HDD/inc/wlan_hdd_assoc.h +++ b/CORE/HDD/inc/wlan_hdd_assoc.h @@ -33,7 +33,7 @@ #define HDD_MAX_NUM_IBSS_STA ( 32 ) #ifdef FEATURE_WLAN_TDLS #define HDD_MAX_NUM_TDLS_STA ( 8 ) -#define HDD_MAX_NUM_TDLS_STA_P_UAPSD ( 1 ) +#define HDD_MAX_NUM_TDLS_STA_P_UAPSD_OFFCHAN ( 1 ) #define TDLS_STA_INDEX_VALID(staId) \ (((staId) >= 1) && ((staId) < 0xFF)) #endif diff --git a/CORE/HDD/src/wlan_hdd_tdls.c b/CORE/HDD/src/wlan_hdd_tdls.c index 4b2f5d385f49..9eb772d54e6d 100644 --- a/CORE/HDD/src/wlan_hdd_tdls.c +++ b/CORE/HDD/src/wlan_hdd_tdls.c @@ -728,8 +728,9 @@ int wlan_hdd_tdls_init(hdd_adapter_t *pAdapter) pHddCtx->tdls_scan_ctxt.scan_request = NULL; if (pHddCtx->cfg_ini->fEnableTDLSSleepSta || - pHddCtx->cfg_ini->fEnableTDLSBufferSta) - pHddCtx->max_num_tdls_sta = HDD_MAX_NUM_TDLS_STA_P_UAPSD; + pHddCtx->cfg_ini->fEnableTDLSBufferSta || + pHddCtx->cfg_ini->fEnableTDLSOffChannel) + pHddCtx->max_num_tdls_sta = HDD_MAX_NUM_TDLS_STA_P_UAPSD_OFFCHAN; else pHddCtx->max_num_tdls_sta = HDD_MAX_NUM_TDLS_STA; -- cgit v1.2.3 From 09a0828bc7c5e81674726131baa0bbd685feba4a Mon Sep 17 00:00:00 2001 From: Komal Seelam Date: Mon, 16 Mar 2015 16:44:04 +0530 Subject: qcacld: Increase the MAX FTIE size prima to qcacld propagation Currently FTIE is defined as 256bytes and the size of the received FTIE during 11r roamng is greater than 256 bytes which caused crash while accessing the unallocated memory. Increased MAX FTIE size to 384 bytess to accomidate bigger size FTIE's as per specification. Change-Id: I73a0b4b4b9c7943d71231048953058dd339eb804 CRs-Fixed: 808231 --- CORE/MAC/src/pe/include/limFTDefs.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CORE/MAC/src/pe/include/limFTDefs.h b/CORE/MAC/src/pe/include/limFTDefs.h index d6a5afb40faf..9d3ba2a9dad8 100644 --- a/CORE/MAC/src/pe/include/limFTDefs.h +++ b/CORE/MAC/src/pe/include/limFTDefs.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013-2014 The Linux Foundation. All rights reserved. + * Copyright (c) 2013-2015 The Linux Foundation. All rights reserved. * * Previously licensed under the ISC license by Qualcomm Atheros, Inc. * @@ -43,7 +43,7 @@ Preprocessor definitions and constants ------------------------------------------------------------------------*/ #define SIR_MDIE_SIZE 3 // MD ID(2 bytes), Capability(1 byte) -#define MAX_FTIE_SIZE 256 // Max size limited to 256, on acct. of IW custom events +#define MAX_FTIE_SIZE 384 // Max size limited to 384, on acct. of IW custom events /*-------------------------------------------------------------------------- -- cgit v1.2.3 From 58cd82000dab2afefad74af97303857b490e83c6 Mon Sep 17 00:00:00 2001 From: Komal Seelam Date: Mon, 16 Mar 2015 16:12:40 +0530 Subject: qcacld: Enable spectrum management when operating on DFS channel prima to qcacld propagation Some buggy AP's do not set the Spectrum mgmt bit in capability field even though they support CSA. Due to this, the host driver is not configuring the firmware with "spectrum management" capability enabled. This is causing the firmware to enable "beacon early termination" which is resulting in the dropage of channel switch announcement. The fix is to enable the spectrum management when we are operating on a DFS channel in the host driver. This will cause the firmware to disable "beacon early termination" and allows it to process the channel switch announcement when a radar is detected. Change-Id: I6e733f3f2546f6d953f77a2efd434f97f38f97bd CRs-Fixed: 808220 --- CORE/MAC/src/pe/include/limSession.h | 2 ++ CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c | 11 +++++++++++ CORE/MAC/src/pe/lim/limPropExtsUtils.c | 4 ++++ 3 files changed, 17 insertions(+) diff --git a/CORE/MAC/src/pe/include/limSession.h b/CORE/MAC/src/pe/include/limSession.h index 7ec1dccfadb3..5a62dfe24f62 100644 --- a/CORE/MAC/src/pe/include/limSession.h +++ b/CORE/MAC/src/pe/include/limSession.h @@ -491,6 +491,8 @@ typedef struct sPESession // Added to Support BT-AMP #ifdef FEATURE_WLAN_ESE uint8_t is_ese_version_ie_present; #endif + /* flag to indicate country code in beacon */ + tANI_U8 countryInfoPresent; } tPESession, *tpPESession; /*------------------------------------------------------------------------- diff --git a/CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c b/CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c index 6eaa92299ad6..86e989749aa6 100644 --- a/CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c +++ b/CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c @@ -2204,6 +2204,12 @@ __limProcessSmeJoinReq(tpAniSirGlobal pMac, tANI_U32 *pMsgBuf) /* Indicate whether spectrum management is enabled*/ psessionEntry->spectrumMgtEnabled = pSmeJoinReq->spectrumMgtIndicator; + + /* Enable the spectrum management if this is a DFS channel */ + if (psessionEntry->countryInfoPresent && + limIsconnectedOnDFSChannel(psessionEntry->currentOperChannel)) + psessionEntry->spectrumMgtEnabled = TRUE; + psessionEntry->isOSENConnection = pSmeJoinReq->isOSENConnection; @@ -2570,6 +2576,11 @@ __limProcessSmeReassocReq(tpAniSirGlobal pMac, tANI_U32 *pMsgBuf) /* Indicate whether spectrum management is enabled*/ psessionEntry->spectrumMgtEnabled = pReassocReq->spectrumMgtIndicator; + /* Enable the spectrum management if this is a DFS channel */ + if (psessionEntry->countryInfoPresent && + limIsconnectedOnDFSChannel(psessionEntry->currentOperChannel)) + psessionEntry->spectrumMgtEnabled = TRUE; + psessionEntry->limPrevSmeState = psessionEntry->limSmeState; psessionEntry->limSmeState = eLIM_SME_WT_REASSOC_STATE; diff --git a/CORE/MAC/src/pe/lim/limPropExtsUtils.c b/CORE/MAC/src/pe/lim/limPropExtsUtils.c index 1017ddea7044..0b8f1a53d7c0 100644 --- a/CORE/MAC/src/pe/lim/limPropExtsUtils.c +++ b/CORE/MAC/src/pe/lim/limPropExtsUtils.c @@ -197,6 +197,10 @@ limExtractApCapability(tpAniSirGlobal pMac, tANI_U8 *pIE, tANI_U16 ieLen, limLog(pMac, LOGP, FL("Could not update local power constraint to cfg.")); } #endif + psessionEntry->countryInfoPresent = FALSE; + /* Initializing before first use */ + if (pBeaconStruct->countryInfoPresent) + psessionEntry->countryInfoPresent = TRUE; } vos_mem_free(pBeaconStruct); return; -- cgit v1.2.3 From 4f0910ae2818d3f1239725a33c174a4bc9c1e567 Mon Sep 17 00:00:00 2001 From: AnjaneeDevi Kapparapu Date: Fri, 5 Jun 2015 15:15:05 +0530 Subject: Cafstaging Release 4.0.10.112 Cafstaging Release 4.0.10.112 Change-Id: Id55ff540b3c0fe4ebd7d3925b1c0fd64db7b3b8f CRs-Fixed: 688141 --- CORE/MAC/inc/qwlan_version.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CORE/MAC/inc/qwlan_version.h b/CORE/MAC/inc/qwlan_version.h index 8b53b46868bd..fa4bacbd5cc5 100644 --- a/CORE/MAC/inc/qwlan_version.h +++ b/CORE/MAC/inc/qwlan_version.h @@ -43,9 +43,9 @@ BRIEF DESCRIPTION: #define QWLAN_VERSION_MINOR 0 #define QWLAN_VERSION_PATCH 10 #define QWLAN_VERSION_EXTRA "" -#define QWLAN_VERSION_BUILD 111 +#define QWLAN_VERSION_BUILD 112 -#define QWLAN_VERSIONSTR "4.0.10.111" +#define QWLAN_VERSIONSTR "4.0.10.112" #define AR6320_REV1_VERSION 0x5000000 -- cgit v1.2.3