wlan: Config parameter added to enable RTS protection
In HDD, Support to enable RTS protection for HT,VHT traffic
through a new config parameter "gEnableRtsCtsHtVht" in
WCNSS_qcom_cfg.ini is added.
Change-Id: If11224d39075778a82f72bd5dcf273b02b5d3b44
CRs-Fixed: 802376
diff --git a/CORE/HDD/inc/wlan_hdd_cfg.h b/CORE/HDD/inc/wlan_hdd_cfg.h
index 5b3decb..2f77918 100644
--- a/CORE/HDD/inc/wlan_hdd_cfg.h
+++ b/CORE/HDD/inc/wlan_hdd_cfg.h
@@ -269,6 +269,18 @@
#define CFG_ENABLE_DYNAMIC_RA_START_RATE_MAX ( 1 )
#define CFG_ENABLE_DYNAMIC_RA_START_RATE_DEFAULT ( 0 )
+/* Bit mask value to enable RTS/CTS for different modes
+ * for 2.4 GHz, HT20 - 0x0001, for 2.4 GHz, HT40 - 0x0002
+ * for 2.4 GHz, VHT20 - 0x0004, for 2.4 GHz, VHT40 - 0x0008
+ * for 5 GHz, HT20 - 0x0100, for 5 GHz, HT40 - 0x0200
+ * for 5 GHz, VHT20 - 0x0400, for 5 GHz, VHT40 - 0x0800
+ * for 5 GHz, VHT80 - 0x1000
+ */
+#define CFG_ENABLE_RTSCTS_HTVHT_NAME "gEnableRtsCtsHtVht"
+#define CFG_ENABLE_RTSCTS_HTVHT_MIN ( 0x0000 )
+#define CFG_ENABLE_RTSCTS_HTVHT_MAX ( 0x1f0f )
+#define CFG_ENABLE_RTSCTS_HTVHT_DEFAULT ( 0x0000 )
+
#define CFG_AUTO_BMPS_TIMER_VALUE_NAME "gAutoBmpsTimerValue"
#define CFG_AUTO_BMPS_TIMER_VALUE_MIN ( 1000 )
#define CFG_AUTO_BMPS_TIMER_VALUE_MAX ( 4294967295UL )
@@ -2904,6 +2916,7 @@
v_U8_t acsScanBandPreference;
v_U16_t acsBandSwitchThreshold;
v_U32_t enableDynamicRAStartRate;
+ v_U32_t enableRtsCtsHtVht;
#ifdef WLAN_FEATURE_AP_HT40_24G
v_BOOL_t apHT40_24GEnabled;
#endif
diff --git a/CORE/HDD/src/wlan_hdd_cfg.c b/CORE/HDD/src/wlan_hdd_cfg.c
index 7af897b..700255e 100644
--- a/CORE/HDD/src/wlan_hdd_cfg.c
+++ b/CORE/HDD/src/wlan_hdd_cfg.c
@@ -3257,6 +3257,14 @@
CFG_BTC_FAST_WLAN_CONN_PREF_MIN,
CFG_BTC_FAST_WLAN_CONN_PREF_MAX ),
+ REG_VARIABLE( CFG_ENABLE_RTSCTS_HTVHT_NAME, WLAN_PARAM_Integer,
+ hdd_config_t, enableRtsCtsHtVht,
+ VAR_FLAGS_OPTIONAL |
+ VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
+ CFG_ENABLE_RTSCTS_HTVHT_DEFAULT,
+ CFG_ENABLE_RTSCTS_HTVHT_MIN,
+ CFG_ENABLE_RTSCTS_HTVHT_MAX),
+
REG_VARIABLE( CFG_DXE_REPLENISH_RX_TIMER_VALUE, WLAN_PARAM_Integer,
hdd_config_t, dxeReplenishRXTimerVal,
VAR_FLAGS_OPTIONAL |
@@ -5191,6 +5199,15 @@
fStatus = FALSE;
hddLog(LOGE, "Could not pass on WNI_CFG_BTC_FAST_WLAN_CONN_PREF ");
}
+
+ if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_ENABLE_RTSCTS_HTVHT,
+ pConfig->enableRtsCtsHtVht,
+ NULL, eANI_BOOLEAN_FALSE) == eHAL_STATUS_FAILURE)
+ {
+ fStatus = FALSE;
+ hddLog(LOGE, "Could not pass on"
+ "WNI_CFG_ENABLE_RTSCTS_HTVHT to CCM");
+ }
return fStatus;
}
diff --git a/CORE/MAC/inc/wniCfg.h b/CORE/MAC/inc/wniCfg.h
index bc5a3af..7b9f140 100644
--- a/CORE/MAC/inc/wniCfg.h
+++ b/CORE/MAC/inc/wniCfg.h
@@ -379,7 +379,8 @@
WNI_CFG_ENABLE_DYNAMIC_WMMPS,
WNI_CFG_BURST_MODE_BE_TXOP_VALUE,
WNI_CFG_ENABLE_DYNAMIC_RA_START_RATE,
- WNI_CFG_BTC_FAST_WLAN_CONN_PREF
+ WNI_CFG_BTC_FAST_WLAN_CONN_PREF,
+ WNI_CFG_ENABLE_RTSCTS_HTVHT
};
/*
@@ -1849,8 +1850,19 @@
#define WNI_CFG_BTC_FAST_WLAN_CONN_PREF_STAMAX 1
#define WNI_CFG_BTC_FAST_WLAN_CONN_PREF_STADEF 1
-#define CFG_PARAM_MAX_NUM 346
-#define CFG_STA_IBUF_MAX_SIZE 280
+/* Bit mask value to enable RTS/CTS for different modes
+ * for 2.4 GHz, HT20 - 0x0001, for 2.4 GHz, HT40 - 0x0002
+ * for 2.4 GHz, VHT20 - 0x0004, for 2.4 GHz, VHT40 - 0x0008
+ * for 5 GHz, HT20 - 0x0100, for 5 GHz, HT40 - 0x0200
+ * for 5 GHz, VHT20 - 0x0400, for 5 GHz, VHT40 - 0x0800
+ * for 5 GHz, VHT80 - 0x1000
+ */
+#define WNI_CFG_ENABLE_RTSCTS_HTVHT_MIN 0x0000
+#define WNI_CFG_ENABLE_RTSCTS_HTVHT_MAX 0x1f0f
+#define WNI_CFG_ENABLE_RTSCTS_HTVHT_DEF 0x0000
+
+#define CFG_PARAM_MAX_NUM 347
+#define CFG_STA_IBUF_MAX_SIZE 281
#define CFG_STA_SBUF_MAX_SIZE 3389
#define CFG_STA_MAGIC_DWORD 0xbeefbeef
diff --git a/CORE/MAC/src/cfg/cfgProcMsg.c b/CORE/MAC/src/cfg/cfgProcMsg.c
index b28662f..321a3d6 100644
--- a/CORE/MAC/src/cfg/cfgProcMsg.c
+++ b/CORE/MAC/src/cfg/cfgProcMsg.c
@@ -1642,6 +1642,11 @@
WNI_CFG_BTC_FAST_WLAN_CONN_PREF_STAMIN,
WNI_CFG_BTC_FAST_WLAN_CONN_PREF_STAMAX,
WNI_CFG_BTC_FAST_WLAN_CONN_PREF_STADEF},
+ {WNI_CFG_ENABLE_RTSCTS_HTVHT,
+ CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_INT | CFG_CTL_NTF_HAL,
+ WNI_CFG_ENABLE_RTSCTS_HTVHT_MIN,
+ WNI_CFG_ENABLE_RTSCTS_HTVHT_MAX,
+ WNI_CFG_ENABLE_RTSCTS_HTVHT_DEF},
};
diff --git a/CORE/WDA/src/wlan_qct_wda.c b/CORE/WDA/src/wlan_qct_wda.c
index 50caad2..01a7788 100644
--- a/CORE/WDA/src/wlan_qct_wda.c
+++ b/CORE/WDA/src/wlan_qct_wda.c
@@ -2086,6 +2086,21 @@
tlvStruct = (tHalCfg *)( (tANI_U8 *) tlvStruct
+ sizeof(tHalCfg) + tlvStruct->length) ;
+ /* QWLAN_HAL_CFG_ENABLE_RTSCTS_HTVHT */
+ tlvStruct->type = QWLAN_HAL_CFG_ENABLE_RTSCTS_HTVHT;
+ tlvStruct->length = sizeof(tANI_U32);
+ configDataValue = (tANI_U32 *)(tlvStruct + 1);
+
+ if (wlan_cfgGetInt(pMac, WNI_CFG_ENABLE_RTSCTS_HTVHT,
+ configDataValue ) != eSIR_SUCCESS)
+ {
+ VOS_TRACE( VOS_MODULE_ID_WDA, VOS_TRACE_LEVEL_ERROR,
+ "Failed to get value for WNI_CFG_ENABLE_RTSCTS_HTVHT");
+ goto handle_failure;
+ }
+ tlvStruct = (tHalCfg *)( (tANI_U8 *) tlvStruct
+ + sizeof(tHalCfg) + tlvStruct->length) ;
+
wdiStartParams->usConfigBufferLen = (tANI_U8 *)tlvStruct - tlvStructStart ;
#ifdef WLAN_DEBUG
{
@@ -4721,6 +4736,8 @@
return QWLAN_HAL_CFG_ENABLE_CLOSE_LOOP;
case WNI_CFG_ENABLE_LPWR_IMG_TRANSITION:
return QWLAN_HAL_CFG_ENABLE_LPWR_IMG_TRANSITION;
+ case WNI_CFG_ENABLE_RTSCTS_HTVHT:
+ return QWLAN_HAL_CFG_ENABLE_RTSCTS_HTVHT;
default:
{
VOS_TRACE(VOS_MODULE_ID_WDA, VOS_TRACE_LEVEL_ERROR,
diff --git a/firmware_bin/WCNSS_qcom_cfg.ini b/firmware_bin/WCNSS_qcom_cfg.ini
index 8c9f7d7..e9d6727 100644
--- a/firmware_bin/WCNSS_qcom_cfg.ini
+++ b/firmware_bin/WCNSS_qcom_cfg.ini
@@ -453,6 +453,17 @@
#Enable/Disable TDLS Buffer Sta
gEnableTDLSBufferSta=1
+#Enable/Disable RTS-CTS for HT,VHT
+#Bit mask value to enable RTS/CTS for different modes
+#For 2.4 GHz, HT20 - 0x0001 i.e 1, for 2.4 GHz, HT40 - 0x0002 i.e 2
+#For 2.4 GHz, VHT20 - 0x0004 i.e 4, for 2.4 GHz, VHT40 - 0x0008 i.e 8
+#For 5 GHz, HT20 - 0x0100 i.e 256, for 5 GHz, HT40 - 0x0200 i.e 512
+#For 5 GHz, VHT20 - 0x0400 i.e 1024, for 5 GHz, VHT40 - 0x0800 i.e 2048
+#For 5 GHz, VHT80 - 0x1000 i.e 4096
+#Can be enabled for multiple modes
+#For enabling in both HT20 and HT40 of 2.4 GHz - 0x0003 i.e 3
+#Default is set to 0 (disable)
+gEnableRtsCtsHtVht=0
END