wlan: Add VHT_TXSTBC support in INI and WNI
Currently VHT_TXSTBC support is disabled and it doesn't advertise
as a part of wiphy VHT capabilities from wlan host driver to userspace,
as a result when userspace configured TX-STBC-2BY1 in hostapd, it
compares it with wiphy capabilities and hostapd fails to start.
Added VHT_TXSTBC support in INI and WNI and advertised wiphy VHT
capabilities based on INI "gEnableTXSTBC".
Change-Id: Ic1822d1e9e45c0749baaee6fa89c2b272624c436
CRs-fixed: 2935994
diff --git a/CORE/HDD/inc/wlan_hdd_cfg.h b/CORE/HDD/inc/wlan_hdd_cfg.h
index 0b5b8fe..bd58455 100644
--- a/CORE/HDD/inc/wlan_hdd_cfg.h
+++ b/CORE/HDD/inc/wlan_hdd_cfg.h
@@ -2110,6 +2110,11 @@
#define CFG_ENABLE_RX_STBC_MAX ( 1 )
#define CFG_ENABLE_RX_STBC_DEFAULT ( 1 )
+#define CFG_ENABLE_TX_STBC "gEnableTXSTBC"
+#define CFG_ENABLE_TX_STBC_MIN ( 0 )
+#define CFG_ENABLE_TX_STBC_MAX ( 1 )
+#define CFG_ENABLE_TX_STBC_DEFAULT ( 1 )
+
/*
* Enable/Disable vsta based on MAX Assoc limit
* defined in WCNSS_qcom_cfg.ini.
@@ -3695,6 +3700,7 @@
v_U16_t configMccParam;
v_U32_t numBuffAdvert;
v_BOOL_t enableRxSTBC;
+ v_BOOL_t enableTxSTBC;
#ifdef FEATURE_WLAN_TDLS
v_BOOL_t fEnableTDLSSupport;
v_BOOL_t fEnableTDLSImplicitTrigger;
diff --git a/CORE/HDD/src/wlan_hdd_cfg.c b/CORE/HDD/src/wlan_hdd_cfg.c
index 02586ab..b16c3d4 100644
--- a/CORE/HDD/src/wlan_hdd_cfg.c
+++ b/CORE/HDD/src/wlan_hdd_cfg.c
@@ -2493,6 +2493,12 @@
CFG_ENABLE_RX_STBC_DEFAULT,
CFG_ENABLE_RX_STBC_MIN,
CFG_ENABLE_RX_STBC_MAX ),
+ REG_VARIABLE( CFG_ENABLE_TX_STBC, WLAN_PARAM_Integer,
+ hdd_config_t, enableTxSTBC,
+ VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
+ CFG_ENABLE_TX_STBC_DEFAULT,
+ CFG_ENABLE_TX_STBC_MIN,
+ CFG_ENABLE_TX_STBC_MAX ),
#ifdef FEATURE_WLAN_TDLS
REG_VARIABLE( CFG_TDLS_SUPPORT_ENABLE, WLAN_PARAM_Integer,
hdd_config_t, fEnableTDLSSupport,
@@ -5928,6 +5934,14 @@
hddLog(LOGE, "Could not pass on WNI_CFG_VHT_RXSTBC to CCM");
}
+ if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_VHT_TXSTBC,
+ pConfig->enableTxSTBC, NULL, eANI_BOOLEAN_FALSE)
+ == eHAL_STATUS_FAILURE)
+ {
+ fStatus = FALSE;
+ hddLog(LOGE, "Could not pass on WNI_CFG_VHT_TXSTBC to CCM");
+ }
+
#ifdef WLAN_SOFTAP_VSTA_FEATURE
if(pConfig->fEnableVSTASupport)
{
diff --git a/CORE/HDD/src/wlan_hdd_cfg80211.c b/CORE/HDD/src/wlan_hdd_cfg80211.c
index 70b3413..c8035f9 100644
--- a/CORE/HDD/src/wlan_hdd_cfg80211.c
+++ b/CORE/HDD/src/wlan_hdd_cfg80211.c
@@ -9503,6 +9503,11 @@
{
wlan_hdd_band_5_GHZ.ht_cap.cap &= ~IEEE80211_HT_CAP_SUP_WIDTH_20_40;
}
+ if (pCfg->enableTxSTBC)
+ {
+ wlan_hdd_band_2_4_GHZ.vht_cap.cap |= IEEE80211_VHT_CAP_TXSTBC;
+ wlan_hdd_band_5_GHZ.vht_cap.cap |= IEEE80211_VHT_CAP_TXSTBC;
+ }
/*
* In case of static linked driver at the time of driver unload,
* module exit doesn't happens. Module cleanup helps in cleaning
diff --git a/CORE/MAC/inc/wniCfg.h b/CORE/MAC/inc/wniCfg.h
index 0666539..527035c 100644
--- a/CORE/MAC/inc/wniCfg.h
+++ b/CORE/MAC/inc/wniCfg.h
@@ -1199,7 +1199,7 @@
#define WNI_CFG_VHT_TXSTBC_STAMIN 0
#define WNI_CFG_VHT_TXSTBC_STAMAX 1
-#define WNI_CFG_VHT_TXSTBC_STADEF 0
+#define WNI_CFG_VHT_TXSTBC_STADEF 1
#define WNI_CFG_VHT_RXSTBC_STAMIN 0
#define WNI_CFG_VHT_RXSTBC_STAMAX 1