Procházet zdrojové kódy

qcacld-3.0: Add ini parameter for chain selection optimization

Add ini support to Enable/Disable chain selection optimization
for one chain dtim.

Change-Id: I95999a4204f2d978abc9951688332400b9670f0e
CRs-Fixed: 2189150
Ashish Kumar Dhanotiya před 7 roky
rodič
revize
191d164636

+ 19 - 0
core/hdd/inc/wlan_hdd_cfg.h

@@ -14341,6 +14341,24 @@ enum hdd_external_acs_freq_band {
 #define CFG_WMI_WQ_WATCHDOG_MIN      (0)
 #define CFG_WMI_WQ_WATCHDOG_MAX      (30) /* 30s */
 #define CFG_WMI_WQ_WATCHDOG_DEFAULT  (20) /* 20s */
+
+/*
+ * <ini>
+ * gEnableDTIMSelectionDiversity - Enable/Disable chain
+ * selection optimization for one chain dtim
+ * @Min: 0
+ * @Max: 30
+ * @Default: 5
+ *
+ * Usage: External
+ *
+ * </ini>
+ */
+#define CFG_DTIM_SELECTION_DIVERSITY_NAME    "gEnableDTIMSelectionDiversity"
+#define CFG_DTIM_SELECTION_DIVERSITY_MIN     (0)
+#define CFG_DTIM_SELECTION_DIVERSITY_MAX     (30)
+#define CFG_DTIM_SELECTION_DIVERSITY_DEFAULT (5)
+
 /*
  * Type declarations
  */
@@ -15251,6 +15269,7 @@ struct hdd_config {
 	uint32_t neighbor_report_offload_cache_timeout;
 	uint32_t neighbor_report_offload_max_req_cap;
 	uint16_t wmi_wq_watchdog_timeout;
+	bool enable_dtim_selection_diversity;
 };
 
 #define VAR_OFFSET(_Struct, _Var) (offsetof(_Struct, _Var))

+ 11 - 0
core/hdd/src/wlan_hdd_cfg.c

@@ -5526,6 +5526,14 @@ struct reg_table_entry g_registry_table[] = {
 		     CFG_WMI_WQ_WATCHDOG_DEFAULT,
 		     CFG_WMI_WQ_WATCHDOG_MIN,
 		     CFG_WMI_WQ_WATCHDOG_MAX),
+
+	REG_VARIABLE(CFG_DTIM_SELECTION_DIVERSITY_NAME,
+		     WLAN_PARAM_Integer,
+		     struct hdd_config, enable_dtim_selection_diversity,
+		     VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
+		     CFG_DTIM_SELECTION_DIVERSITY_DEFAULT,
+		     CFG_DTIM_SELECTION_DIVERSITY_MIN,
+		     CFG_DTIM_SELECTION_DIVERSITY_MAX),
 };
 
 
@@ -7416,6 +7424,9 @@ void hdd_cfg_print(struct hdd_context *hdd_ctx)
 	hdd_debug("Name = [%s] value = [%d]",
 		  CFG_ENABLE_GCMP_NAME,
 		  hdd_ctx->config->gcmp_enabled);
+	hdd_debug("Name = [%s] value = [%d]",
+		  CFG_DTIM_SELECTION_DIVERSITY_NAME,
+		  hdd_ctx->config->enable_dtim_selection_diversity);
 
 	hdd_cfg_print_11k_offload_params(hdd_ctx);
 }

+ 11 - 0
core/hdd/src/wlan_hdd_main.c

@@ -4256,6 +4256,17 @@ int hdd_set_fw_params(struct hdd_adapter *adapter)
 		goto error;
 	}
 
+
+	ret = sme_cli_set_command(
+			adapter->session_id,
+			WMI_PDEV_PARAM_1CH_DTIM_OPTIMIZED_CHAIN_SELECTION,
+			hdd_ctx->config->enable_dtim_selection_diversity,
+			PDEV_CMD);
+	if (ret) {
+		hdd_err("Failed to set DTIM_OPTIMIZED_CHAIN_SELECTION");
+		goto error;
+	}
+
 	if (adapter->device_mode == QDF_STA_MODE) {
 		sme_set_smps_cfg(adapter->session_id,
 					HDD_STA_SMPS_PARAM_UPPER_BRSSI_THRESH,