wlan: Adding a new param "gEnableRXSTBC" in WCNSSqcom_cfg.ini to enable/disable STBC
Added a new cfg param "gEnableRXSTBC" in WCNSS_qcom_cfg.ini
to enable/disable Rx STBC.
Change-Id: I006dfa3fb4c1eafd6045f638c45af9634ae05f37
CR-Fixed: 422636
diff --git a/CORE/HDD/inc/wlan_hdd_cfg.h b/CORE/HDD/inc/wlan_hdd_cfg.h
index 2e4e7d4..2dfdca5 100644
--- a/CORE/HDD/inc/wlan_hdd_cfg.h
+++ b/CORE/HDD/inc/wlan_hdd_cfg.h
@@ -1390,6 +1390,12 @@
#define CFG_MCC_CONFIG_PARAM_MAX ( 0x01ff )
#define CFG_MCC_CONFIG_PARAM_DEFAULT ( 0x000C )
+#define CFG_ENABLE_RX_STBC "gEnableRXSTBC"
+#define CFG_ENABLE_RX_STBC_MIN ( 0 )
+#define CFG_ENABLE_RX_STBC_MAX ( 1 )
+#define CFG_ENABLE_RX_STBC_DEFAULT ( 1 )
+
+
/*---------------------------------------------------------------------------
Type declarations
-------------------------------------------------------------------------*/
@@ -1697,6 +1703,7 @@
v_U16_t configMccParam;
v_U32_t numBuffAdvert;
v_U8_t ignore_chan165;
+ v_BOOL_t enableRxSTBC;
} hdd_config_t;
/*---------------------------------------------------------------------------
Function declarations and documenation
diff --git a/CORE/HDD/src/wlan_hdd_cfg.c b/CORE/HDD/src/wlan_hdd_cfg.c
index e8356fa..87e3624 100644
--- a/CORE/HDD/src/wlan_hdd_cfg.c
+++ b/CORE/HDD/src/wlan_hdd_cfg.c
@@ -1691,6 +1691,12 @@
CFG_MCC_CONFIG_PARAM_DEFAULT,
CFG_MCC_CONFIG_PARAM_MIN,
CFG_MCC_CONFIG_PARAM_MAX ),
+REG_VARIABLE( CFG_ENABLE_RX_STBC, WLAN_PARAM_Integer,
+ hdd_config_t, enableRxSTBC,
+ VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
+ CFG_ENABLE_RX_STBC_DEFAULT,
+ CFG_ENABLE_RX_STBC_MIN,
+ CFG_ENABLE_RX_STBC_MAX ),
};
/*
@@ -2061,6 +2067,7 @@
VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [skipDfsChnlInP2pSearch] Value = [%u] ",pHddCtx->cfg_ini->skipDfsChnlInP2pSearch);
VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [ignoreDynamicDtimInP2pMode] Value = [%u] ",pHddCtx->cfg_ini->ignoreDynamicDtimInP2pMode);
VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gIgnore_Chan165] Value = [%u] ",pHddCtx->cfg_ini->ignore_chan165);
+ VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [enableRxSTBC] Value = [%u] ",pHddCtx->cfg_ini->enableRxSTBC);
}
@@ -2617,6 +2624,8 @@
v_BOOL_t fStatus = TRUE;
hdd_config_t *pConfig = pHddCtx->cfg_ini;
+ tSirMacHTCapabilityInfo htCapInfo;
+
if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_SHORT_GI_20MHZ,
pConfig->ShortGI20MhzEnable, NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
@@ -3085,6 +3094,33 @@
hddLog(LOGE, "Could not pass on WNI_CFG_NUM_BUFF_ADVERT to CCM\n");
}
+ if(ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_HT_RX_STBC,
+ pConfig->enableRxSTBC, NULL, eANI_BOOLEAN_FALSE)
+ ==eHAL_STATUS_FAILURE)
+ {
+ fStatus = FALSE;
+ hddLog(LOGE, "Could not pass on WNI_CFG_HT_RX_STBC to CCM\n");
+ }
+
+ ccmCfgGetInt(pHddCtx->hHal, WNI_CFG_HT_CAP_INFO, (tANI_U32 *)&htCapInfo);
+ htCapInfo.rxSTBC = pConfig->enableRxSTBC;
+
+ if(ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_HT_CAP_INFO,
+ *(tANI_U32 *)&htCapInfo, NULL, eANI_BOOLEAN_FALSE)
+ ==eHAL_STATUS_FAILURE)
+ {
+ fStatus = FALSE;
+ hddLog(LOGE, "Could not pass on WNI_CFG_HT_CAP_INFO to CCM\n");
+ }
+
+ if(ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_VHT_RXSTBC,
+ pConfig->enableRxSTBC, NULL, eANI_BOOLEAN_FALSE)
+ ==eHAL_STATUS_FAILURE)
+ {
+ fStatus = FALSE;
+ hddLog(LOGE, "Could not pass on WNI_CFG_VHT_RXSTBC to CCM\n");
+ }
+
return fStatus;
}
diff --git a/firmware_bin/WCNSS_qcom_cfg.ini b/firmware_bin/WCNSS_qcom_cfg.ini
index 928ae3f..9709da3 100644
--- a/firmware_bin/WCNSS_qcom_cfg.ini
+++ b/firmware_bin/WCNSS_qcom_cfg.ini
@@ -350,6 +350,9 @@
#If set to 0, MCC is not allowed.
gEnableMCCMode=1
+# 1=enable STBC; 0=disable STBC
+gEnableRXSTBC=1
+
END
# Note: Configuration parser would not read anything past the END marker