summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZhang Qian <zhangq@codeaurora.org>2019-03-01 16:09:52 +0800
committerZhang Qian <zhangq@codeaurora.org>2019-03-04 18:18:12 +0800
commit112b05aa02ea75e581b69a5ab3154acde2b1fa44 (patch)
tree393e1df10b6356e6fce68bf40664eb495a5012db
parent63ea3bbf4d588a0e9130b7aa3b2b11b6b7b10292 (diff)
qcacld-2.0: Add register key per_chain_stats
Add register key per_chain_stats and disable per antenna stats by default. Change-Id: I20e713fbc7cacc0c2b424340e095a09fa1695df5 CRs-Fixed: 2407762
-rw-r--r--CORE/HDD/inc/wlan_hdd_cfg.h25
-rw-r--r--CORE/HDD/src/wlan_hdd_cfg.c6
-rw-r--r--CORE/HDD/src/wlan_hdd_cfg80211.c13
3 files changed, 42 insertions, 2 deletions
diff --git a/CORE/HDD/inc/wlan_hdd_cfg.h b/CORE/HDD/inc/wlan_hdd_cfg.h
index 5eef84e603ef..284b6455e373 100644
--- a/CORE/HDD/inc/wlan_hdd_cfg.h
+++ b/CORE/HDD/inc/wlan_hdd_cfg.h
@@ -5592,6 +5592,29 @@ FG_BTC_BT_INTERVAL_PAGE_P2P_STA_DEFAULT
#define CFG_IS_SAE_ENABLED_MIN (0)
#define CFG_IS_SAE_ENABLED_MAX (1)
+/*
+ * <ini>
+ * per_chain_stats - Enable/Disable per antenna LL stats
+ * @Min: 0
+ * @Max: 1
+ * @Default: 0
+ *
+ * This ini is used to enable/disable per antenna LL stats.
+ * When antenna diversity is enabled this should be set to 1.
+ *
+ * Related: None
+ *
+ * Supported Feature: antenna diversity
+ * Usage: External
+ *
+ * </ini>
+ */
+
+#define CFG_IS_PER_CHAIN_STATS_ENABLED_NAME "per_chain_stats"
+#define CFG_IS_PER_CHAIN_STATS_ENABLED_DEFAULT (0)
+#define CFG_IS_PER_CHAIN_STATS_ENABLED_MIN (0)
+#define CFG_IS_PER_CHAIN_STATS_ENABLED_MAX (1)
+
/*---------------------------------------------------------------------------
Type declarations
-------------------------------------------------------------------------*/
@@ -6522,6 +6545,8 @@ struct hdd_config {
#ifdef WLAN_FEATURE_SAE
bool is_sae_enabled;
#endif
+
+ bool per_chain_stats_enabled;
};
typedef struct hdd_config hdd_config_t;
diff --git a/CORE/HDD/src/wlan_hdd_cfg.c b/CORE/HDD/src/wlan_hdd_cfg.c
index be633249f250..c6283f308c77 100644
--- a/CORE/HDD/src/wlan_hdd_cfg.c
+++ b/CORE/HDD/src/wlan_hdd_cfg.c
@@ -5446,6 +5446,12 @@ REG_TABLE_ENTRY g_registry_table[] =
CFG_IS_SAE_ENABLED_MIN,
CFG_IS_SAE_ENABLED_MAX),
#endif
+ REG_VARIABLE(CFG_IS_PER_CHAIN_STATS_ENABLED_NAME, WLAN_PARAM_Integer,
+ struct hdd_config, per_chain_stats_enabled,
+ VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
+ CFG_IS_SAE_ENABLED_DEFAULT,
+ CFG_IS_SAE_ENABLED_MIN,
+ CFG_IS_SAE_ENABLED_MAX),
};
diff --git a/CORE/HDD/src/wlan_hdd_cfg80211.c b/CORE/HDD/src/wlan_hdd_cfg80211.c
index 388a7517b109..306285d9fbd4 100644
--- a/CORE/HDD/src/wlan_hdd_cfg80211.c
+++ b/CORE/HDD/src/wlan_hdd_cfg80211.c
@@ -7131,13 +7131,22 @@ static int put_wifi_signal_info(struct sir_wifi_peer_signal_stats *peer_signal,
{
uint32_t i, chain_count;
struct nlattr *chains, *att;
+ v_CONTEXT_t vos_context = vos_get_global_context(0, NULL);
+ hdd_context_t *hdd_ctx;
+
+ hdd_ctx = vos_get_context(VOS_MODULE_ID_HDD, vos_context);
/* There might be no signal info for a peer */
if (peer_signal == NULL)
return 0;
- chain_count = peer_signal->num_chain < WIFI_MAX_CHAINS ?
- peer_signal->num_chain : WIFI_MAX_CHAINS;
+ if ((!hdd_ctx) || (hdd_ctx->cfg_ini->per_chain_stats_enabled == 0))
+ chain_count = WIFI_MAX_CHAINS;
+ else
+ chain_count = peer_signal->num_chain < WIFI_MAX_CHAINS ?
+ peer_signal->num_chain : WIFI_MAX_CHAINS;
+
+ hddLog(LOG2, FL("chain_count=%d"), chain_count);
if (nla_put_u32(skb,
QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_PEER_ANT_NUM,
chain_count)) {