summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorc_manjee <c_manjee@qti.qualcomm.com>2016-07-26 11:11:37 +0530
committerAnjaneedevi Kapparapu <akappa@codeaurora.org>2016-07-26 14:41:14 +0530
commit401486f74f693ecb198b5c8abe8b69ed586c2ec1 (patch)
tree31aecdd4c624fb46b07459bdae3c6ccfb50d4dba
parent5f8abb08fb36994ab85b223fffb39f5b7762c8df (diff)
qcacld-2.0: Add support for sifs burst duration ini
Add code for implementing sifs burst duration ini to be sent to be FW as part of WMI_PDEV_PARAM_BURST_DUR command. Change-Id: I96ccda760045ecd54592b649116f3e7fe4a4f31b CRs-Fixed: 1028623
-rw-r--r--CORE/HDD/inc/wlan_hdd_cfg.h12
-rw-r--r--CORE/HDD/inc/wlan_hdd_main.h4
-rw-r--r--CORE/HDD/src/wlan_hdd_cfg.c7
-rwxr-xr-xCORE/HDD/src/wlan_hdd_main.c11
4 files changed, 34 insertions, 0 deletions
diff --git a/CORE/HDD/inc/wlan_hdd_cfg.h b/CORE/HDD/inc/wlan_hdd_cfg.h
index 194cd253b406..e09c4977833b 100644
--- a/CORE/HDD/inc/wlan_hdd_cfg.h
+++ b/CORE/HDD/inc/wlan_hdd_cfg.h
@@ -3981,6 +3981,16 @@ enum dot11p_mode {
#define CFG_ACTIVE_MODE_OFFLOAD_DEFAULT (0)
+/*
+ * This parameter will control SIFS burst duration in FW from 0 to 12 ms.
+ * Default value is set to 8ms.
+ */
+
+#define CFG_SIFS_BURST_DURATION_NAME "g_sifs_burst_duration"
+#define CFG_SIFS_BURST_DURATION_MIN (0)
+#define CFG_SIFS_BURST_DURATION_MAX (12)
+#define CFG_SIFS_BURST_DURATION_DEFAULT (8)
+
/*---------------------------------------------------------------------------
Type declarations
-------------------------------------------------------------------------*/
@@ -4762,6 +4772,8 @@ struct hdd_config {
bool sap_force_11n_for_11ac;
uint8_t sap_max_inactivity_override;
bool active_mode_offload;
+ /* parameter for indicating sifs burst duration to fw */
+ uint8_t sifs_burst_duration;
};
typedef struct hdd_config hdd_config_t;
diff --git a/CORE/HDD/inc/wlan_hdd_main.h b/CORE/HDD/inc/wlan_hdd_main.h
index 74e5c4822131..fa492163fce5 100644
--- a/CORE/HDD/inc/wlan_hdd_main.h
+++ b/CORE/HDD/inc/wlan_hdd_main.h
@@ -243,6 +243,10 @@
#define HDD_MIN_TX_POWER (-100) // minimum tx power
#define HDD_MAX_TX_POWER (+100) // maximum tx power
+/* FW expects burst duration in 1020*ms */
+#define SIFS_BURST_DUR_MULTIPLIER 1020
+#define SIFS_BURST_DUR_MAX 12240
+
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,14,0))
#ifdef CONFIG_CNSS
#define cfg80211_vendor_cmd_reply(skb) vos_vendor_cmd_reply(skb)
diff --git a/CORE/HDD/src/wlan_hdd_cfg.c b/CORE/HDD/src/wlan_hdd_cfg.c
index b7562ad986d6..7cf165cf4bb5 100644
--- a/CORE/HDD/src/wlan_hdd_cfg.c
+++ b/CORE/HDD/src/wlan_hdd_cfg.c
@@ -4674,6 +4674,13 @@ REG_TABLE_ENTRY g_registry_table[] =
CFG_ACTIVE_MODE_OFFLOAD_DEFAULT,
CFG_ACTIVE_MODE_OFFLOAD_MIN,
CFG_ACTIVE_MODE_OFFLOAD_MAX),
+
+ REG_VARIABLE(CFG_SIFS_BURST_DURATION_NAME, WLAN_PARAM_Integer,
+ hdd_config_t, sifs_burst_duration,
+ VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
+ CFG_SIFS_BURST_DURATION_DEFAULT,
+ CFG_SIFS_BURST_DURATION_MIN,
+ CFG_SIFS_BURST_DURATION_MAX),
};
diff --git a/CORE/HDD/src/wlan_hdd_main.c b/CORE/HDD/src/wlan_hdd_main.c
index cfab6ccb2d81..c180e64c7f88 100755
--- a/CORE/HDD/src/wlan_hdd_main.c
+++ b/CORE/HDD/src/wlan_hdd_main.c
@@ -14546,6 +14546,7 @@ int hdd_wlan_startup(struct device *dev, v_VOID_t *hif_sc)
#ifdef QCA_ARP_SPOOFING_WAR
adf_os_device_t adf_ctx;
#endif
+ int set_value;
ENTER();
@@ -15519,6 +15520,16 @@ int hdd_wlan_startup(struct device *dev, v_VOID_t *hif_sc)
if (eHAL_STATUS_SUCCESS != hal_status)
hddLog(LOGE, FL("Failed to disable Chan Avoidance Indcation"));
}
+
+ if (pHddCtx->cfg_ini->sifs_burst_duration) {
+ set_value = (SIFS_BURST_DUR_MULTIPLIER) *
+ pHddCtx->cfg_ini->sifs_burst_duration;
+
+ if ((set_value > 0) && (set_value <= SIFS_BURST_DUR_MAX))
+ process_wma_set_command(0, (int)WMI_PDEV_PARAM_BURST_DUR,
+ set_value, PDEV_CMD);
+ }
+
wlan_comp.status = 0;
complete(&wlan_comp.wlan_start_comp);
goto success;