Browse Source

qcacld-3.0: remove wma_send_time_stamp_sync_cmd

qcacld-2.0 to qcacld-3.0 Propagation.

the wma_send_time_stamp_sync_cmd will not be processed by fw,
so remove this wma_send_time_stamp_sync_cmd.

CRs-Fixed: 2280656
Change-Id: I3aee6e2da4783772ad9acf3fc20c3669829f9397
Ke Huang 6 years ago
parent
commit
ae49ad0d7c

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

@@ -5098,6 +5098,24 @@ enum hdd_link_speed_rpt_type {
 #define CFG_CHANGE_CHANNEL_BANDWIDTH_MAX     (1)
 #define CFG_CHANGE_CHANNEL_BANDWIDTH_DEFAULT (0)
 
+/*
+ * <ini>
+ * gRemoveTimeStampSyncCmd - Enable/Disable to remove time stamp sync cmd
+ * @Min: 0
+ * @Max: 1
+ * @Default: 0
+ *
+ * This ini is used to enable/disable the removal of time stamp sync cmd
+ *
+ * Usage: External
+ *
+ * </ini>
+ */
+#define CFG_REMOVE_TIME_STAMP_SYNC_CMD_NAME    "gRemoveTimeStampSyncCmd"
+#define CFG_REMOVE_TIME_STAMP_SYNC_CMD_MIN     (0)
+#define CFG_REMOVE_TIME_STAMP_SYNC_CMD_MAX     (1)
+#define CFG_REMOVE_TIME_STAMP_SYNC_CMD_DEFAULT (0)
+
 /*
  * Type declarations
  */
@@ -5481,6 +5499,7 @@ struct hdd_config {
 	uint8_t num_vdevs;
 	uint8_t enable_concurrent_sta[CFG_CONCURRENT_IFACE_MAX_LEN];
 	uint8_t dbs_scan_selection[CFG_DBS_SCAN_PARAM_LENGTH];
+	uint8_t remove_time_stamp_sync_cmd;
 };
 
 #define VAR_OFFSET(_Struct, _Var) (offsetof(_Struct, _Var))

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

@@ -1434,6 +1434,13 @@ struct reg_table_entry g_registry_table[] = {
 		     CFG_MWS_COEX_5G_NR_PWR_LIMIT_MIN,
 		     CFG_MWS_COEX_5G_NR_PWR_LIMIT_MAX),
 #endif
+
+	REG_VARIABLE(CFG_REMOVE_TIME_STAMP_SYNC_CMD_NAME, WLAN_PARAM_Integer,
+		     struct hdd_config, remove_time_stamp_sync_cmd,
+		     VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
+		     CFG_REMOVE_TIME_STAMP_SYNC_CMD_DEFAULT,
+		     CFG_REMOVE_TIME_STAMP_SYNC_CMD_MIN,
+		     CFG_REMOVE_TIME_STAMP_SYNC_CMD_MAX),
 };
 
 
@@ -2753,6 +2760,15 @@ bool hdd_update_config_cfg(struct hdd_context *hdd_ctx)
 		status = false;
 		hdd_err("Couldn't pass on WNI_CFG_ENABLE_MCC_ADAPTIVE_SCHED to CFG");
 	}
+
+	if (sme_cfg_set_int(mac_handle,
+				WNI_CFG_REMOVE_TIME_SYNC_CMD,
+				config->remove_time_stamp_sync_cmd)
+				== QDF_STATUS_E_FAILURE) {
+		status = false;
+		hdd_err("Couldn't pass on WNI_CFG_REMOVE_TIME_SYNC_CMD to CFG");
+	}
+
 	return status;
 }
 

+ 5 - 0
core/mac/inc/wni_cfg.h

@@ -49,6 +49,7 @@ enum {
 	WNI_CFG_PS_WOW_DATA_INACTIVITY_TIMEOUT,
 	WNI_CFG_OBSS_DETECTION_OFFLOAD,
 	WNI_CFG_OBSS_COLOR_COLLISION_OFFLOAD,
+	WNI_CFG_REMOVE_TIME_SYNC_CMD,
 	/* Any new items to be added should be above this strictly */
 	CFG_PARAM_MAX_NUM
 };
@@ -418,6 +419,10 @@ enum {
 #define WNI_CFG_PS_WOW_DATA_INACTIVITY_TIMEOUT_STAMAX    255
 #define WNI_CFG_PS_WOW_DATA_INACTIVITY_TIMEOUT_STADEF    50
 
+#define WNI_CFG_REMOVE_TIME_SYNC_CMD_STAMIN 0
+#define WNI_CFG_REMOVE_TIME_SYNC_CMD_STAMAX 1
+#define WNI_CFG_REMOVE_TIME_SYNC_CMD_STADEF 0
+
 #define CFG_STA_MAGIC_DWORD    0xbeefbeef
 
 #endif

+ 5 - 0
core/mac/src/cfg/cfg_proc_msg.c

@@ -142,6 +142,11 @@ cgstatic cfg_static[CFG_PARAM_MAX_NUM] = {
 	{WNI_CFG_OBSS_COLOR_COLLISION_OFFLOAD,
 	 CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_INT,
 	 0, 1, 0},
+	{WNI_CFG_REMOVE_TIME_SYNC_CMD,
+	 CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_INT,
+	 WNI_CFG_REMOVE_TIME_SYNC_CMD_STAMIN,
+	 WNI_CFG_REMOVE_TIME_SYNC_CMD_STAMAX,
+	 WNI_CFG_REMOVE_TIME_SYNC_CMD_STADEF},
 };
 
 

+ 40 - 19
core/wma/src/wma_main.c

@@ -4298,6 +4298,8 @@ QDF_STATUS wma_start(void)
 	tp_wma_handle wma_handle;
 	int status;
 	struct wmi_unified *wmi_handle;
+	struct mac_context *mac = NULL;
+	uint32_t cfg_val;
 
 	WMA_LOGD("%s: Enter", __func__);
 
@@ -4316,6 +4318,12 @@ QDF_STATUS wma_start(void)
 		goto end;
 	}
 
+	mac = cds_get_context(QDF_MODULE_ID_PE);
+	if (!mac) {
+		WMA_LOGE("%s: Invalid mac context", __func__);
+		goto end;
+	}
+
 	status = wmi_unified_register_event_handler(wmi_handle,
 						    wmi_roam_event_id,
 						    wma_roam_event_callback,
@@ -4455,22 +4463,25 @@ QDF_STATUS wma_start(void)
 		goto end;
 	}
 
-	if (cds_get_conparam() != QDF_GLOBAL_FTM_MODE) {
-		/* Initialize firmware time stamp sync timer */
-		qdf_status =
-			qdf_mc_timer_init(&wma_handle->wma_fw_time_sync_timer,
-					  QDF_TIMER_TYPE_SW,
-					  wma_send_time_stamp_sync_cmd,
-					  wma_handle);
-		if (QDF_IS_STATUS_ERROR(qdf_status)) {
-			WMA_LOGE(FL("Failed to initialize firmware time stamp sync timer"));
-			goto end;
-		}
+	if (wlan_cfg_get_int(mac, WNI_CFG_REMOVE_TIME_SYNC_CMD,
+		&cfg_val) == QDF_STATUS_SUCCESS) {
+		if (cfg_val == 0 && cds_get_conparam() != QDF_GLOBAL_FTM_MODE) {
+			/* Initialize firmware time stamp sync timer */
+			qdf_status =
+				qdf_mc_timer_init(
+					&wma_handle->wma_fw_time_sync_timer,
+					QDF_TIMER_TYPE_SW,
+					wma_send_time_stamp_sync_cmd,
+					wma_handle);
+			if (QDF_IS_STATUS_ERROR(qdf_status)) {
+				WMA_LOGE("Failed to init fw time sync timer");
+				goto end;
+			}
 
-		/* Start firmware time stamp sync timer */
-		wma_send_time_stamp_sync_cmd(wma_handle);
+			/* Start firmware time stamp sync timer */
+			wma_send_time_stamp_sync_cmd(wma_handle);
+		}
 	}
-
 	/* Initialize log completion timeout */
 	qdf_status = qdf_mc_timer_init(&wma_handle->log_completion_timer,
 			QDF_TIMER_TYPE_SW,
@@ -4570,6 +4581,8 @@ QDF_STATUS wma_stop(void)
 	tp_wma_handle wma_handle;
 	QDF_STATUS qdf_status = QDF_STATUS_SUCCESS;
 	int i;
+	struct mac_context *mac = NULL;
+	uint32_t cfg_val;
 
 	wma_handle = cds_get_context(QDF_MODULE_ID_WMA);
 	WMA_LOGD("%s: Enter", __func__);
@@ -4579,6 +4592,11 @@ QDF_STATUS wma_stop(void)
 		qdf_status = QDF_STATUS_E_INVAL;
 		goto end;
 	}
+	mac = cds_get_context(QDF_MODULE_ID_PE);
+	if (!mac) {
+		WMA_LOGE("%s: Invalid mac context", __func__);
+		goto end;
+	}
 #ifdef QCA_WIFI_FTM
 	/*
 	 * Tx mgmt detach requires TXRX context which is not created
@@ -4611,12 +4629,15 @@ QDF_STATUS wma_stop(void)
 		}
 	}
 
-	if (cds_get_conparam() != QDF_GLOBAL_FTM_MODE) {
-		/* Destroy firmware time stamp sync timer */
-		qdf_status = qdf_mc_timer_destroy(
+	if (wlan_cfg_get_int(mac, WNI_CFG_REMOVE_TIME_SYNC_CMD,
+		&cfg_val) == QDF_STATUS_SUCCESS) {
+		if (cfg_val == 0 && cds_get_conparam() != QDF_GLOBAL_FTM_MODE) {
+			/* Destroy firmware time stamp sync timer */
+			qdf_status = qdf_mc_timer_destroy(
 					&wma_handle->wma_fw_time_sync_timer);
-		if (QDF_IS_STATUS_ERROR(qdf_status))
-			WMA_LOGE(FL("Failed to destroy the fw time sync timer"));
+			if (QDF_IS_STATUS_ERROR(qdf_status))
+				WMA_LOGE("Failed to destory fw sync timer");
+		}
 	}
 
 	qdf_status = wma_tx_detach(wma_handle);