summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorManjeet Singh <manjee@codeaurora.org>2016-09-03 12:34:53 +0530
committerqcabuildsw <qcabuildsw@localhost>2016-09-10 19:05:52 -0700
commite7ecb7cbb8f2fe5945d010c7d6473bfbf65a1f67 (patch)
tree3cc424e2f7550cd86d38414c2d2e28997e00680f
parent01327cc3ec6c96bd9bc3f6d8d6e898feb2cb3de7 (diff)
qcacld-3.0: Add support for sifs burst duration ini
qcacld-2.0 to qcacld-3.0 propagation. 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 (cherry picked from commit 7a367f1535299b73d1886529e0a557853d943518)
-rw-r--r--core/hdd/inc/wlan_hdd_cfg.h11
-rw-r--r--core/hdd/inc/wlan_hdd_main.h4
-rw-r--r--core/hdd/src/wlan_hdd_cfg.c7
-rw-r--r--core/hdd/src/wlan_hdd_main.c10
4 files changed, 32 insertions, 0 deletions
diff --git a/core/hdd/inc/wlan_hdd_cfg.h b/core/hdd/inc/wlan_hdd_cfg.h
index a222f0965574..01b6443accc9 100644
--- a/core/hdd/inc/wlan_hdd_cfg.h
+++ b/core/hdd/inc/wlan_hdd_cfg.h
@@ -3491,6 +3491,15 @@ enum dot11p_mode {
#define CFG_FILTER_MULTICAST_REPLAY_MAX (1)
#define CFG_FILTER_MULTICAST_REPLAY_DEFAULT (1)
+/*
+ * 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
@@ -4151,6 +4160,8 @@ struct hdd_config {
enum cfg_sub_20_channel_width enable_sub_20_channel_width;
bool indoor_channel_support;
bool multicast_replay_filter;
+ /* parameter for indicating sifs burst duration to fw */
+ uint8_t sifs_burst_duration;
};
#define VAR_OFFSET(_Struct, _Var) (offsetof(_Struct, _Var))
diff --git a/core/hdd/inc/wlan_hdd_main.h b/core/hdd/inc/wlan_hdd_main.h
index c2085d7dfdc3..38bac4b2ce5a 100644
--- a/core/hdd/inc/wlan_hdd_main.h
+++ b/core/hdd/inc/wlan_hdd_main.h
@@ -241,6 +241,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 IPA UC data path is enabled, target should reserve extra tx descriptors
* for IPA data path.
* Then host data path should allow less TX packet pumping in case
diff --git a/core/hdd/src/wlan_hdd_cfg.c b/core/hdd/src/wlan_hdd_cfg.c
index 6316d019e7ec..d526431f545c 100644
--- a/core/hdd/src/wlan_hdd_cfg.c
+++ b/core/hdd/src/wlan_hdd_cfg.c
@@ -4003,6 +4003,13 @@ REG_TABLE_ENTRY g_registry_table[] = {
CFG_FILTER_MULTICAST_REPLAY_DEFAULT,
CFG_FILTER_MULTICAST_REPLAY_MIN,
CFG_FILTER_MULTICAST_REPLAY_MAX),
+
+ REG_VARIABLE(CFG_SIFS_BURST_DURATION_NAME, WLAN_PARAM_Integer,
+ struct hdd_config, 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 11493ce89af9..9ef23490ee54 100644
--- a/core/hdd/src/wlan_hdd_main.c
+++ b/core/hdd/src/wlan_hdd_main.c
@@ -7410,6 +7410,7 @@ int hdd_wlan_startup(struct device *dev)
int ret;
void *hif_sc;
bool rtnl_held;
+ int set_value;
ENTER();
@@ -7524,6 +7525,15 @@ int hdd_wlan_startup(struct device *dev)
if (hdd_ctx->config->fIsImpsEnabled)
hdd_set_idle_ps_config(hdd_ctx, true);
+ if (hdd_ctx->config->sifs_burst_duration) {
+ set_value = (SIFS_BURST_DUR_MULTIPLIER) *
+ hdd_ctx->config->sifs_burst_duration;
+
+ if ((set_value > 0) && (set_value <= SIFS_BURST_DUR_MAX))
+ wma_cli_set_command(0, (int)WMI_PDEV_PARAM_BURST_DUR,
+ set_value, PDEV_CMD);
+ }
+
qdf_mc_timer_start(&hdd_ctx->iface_change_timer,
hdd_ctx->config->iface_change_wait_time * 5000);
goto success;