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