Pārlūkot izejas kodu

qcacmn: Handle all params of TSF action cmd

Extract all the parameter provided as a response from the firmware
for the TSF action command.

This could be used to calculate the difference between the TSF
and TQM clocks

CRs-Fixed: 3136492
Change-Id: I8377bd177f5ea246c9b7939315509ab0b6f2051c
Vivek 3 gadi atpakaļ
vecāks
revīzija
3cf850fbf1
2 mainītis faili ar 32 papildinājumiem un 2 dzēšanām
  1. 20 0
      wmi/inc/wmi_unified_param.h
  2. 12 2
      wmi/src/wmi_unified_tlv.c

+ 20 - 0
wmi/inc/wmi_unified_param.h

@@ -4584,10 +4584,30 @@ struct ftm_time_sync_offset {
  * struct wmi_host_tsf_event_- Get tsf event info
  * @vdev_id: vdev id
  * @tsf: tsf
+ * @tsf_low: low 32bit of tsf
+ * @tsf_high: high 32 bit of tsf
+ * @qtimer_low: low 32 bits of qtimer
+ * @qtimer_high: high 32 bits of qtimer
+ * @tsf_id: TSF ID for the current vdev
+ * @tsf_id_valid: is TSF valid
+ * @mac_id: MAC identifier
+ * @mac_id_valid: is MAC id valid
+ * @wlan_global_tsf_low: low 32 bits of wlan global tsf
+ * @wlan_global_tsf_high: high 32 bits of wlan global tsf
  */
 struct wmi_host_tsf_event {
 	uint32_t vdev_id;
 	uint64_t tsf;
+	uint32_t tsf_low;
+	uint32_t tsf_high;
+	uint32_t qtimer_low;
+	uint32_t qtimer_high;
+	uint32_t tsf_id;
+	uint32_t tsf_id_valid;
+	uint32_t mac_id;
+	uint32_t mac_id_valid;
+	uint32_t wlan_global_tsf_low;
+	uint32_t wlan_global_tsf_high;
 };
 
 #define WMI_EVENT_ID_INVALID 0

+ 12 - 2
wmi/src/wmi_unified_tlv.c

@@ -16583,7 +16583,7 @@ send_vdev_tsf_tstamp_action_cmd_tlv(wmi_unified_t wmi, uint8_t vdev_id)
 		       WMITLV_TAG_STRUC_wmi_vdev_tsf_tstamp_action_cmd_fixed_param,
 		       WMITLV_GET_STRUCT_TLVLEN(wmi_vdev_tsf_tstamp_action_cmd_fixed_param));
 	cmd->vdev_id = vdev_id;
-	cmd->tsf_action = TSF_TSTAMP_READ_VALUE;
+	cmd->tsf_action = TSF_TSTAMP_QTIMER_CAPTURE_REQ;
 	wmi_mtrace(WMI_VDEV_TSF_TSTAMP_ACTION_CMDID, cmd->vdev_id, 0);
 	if (wmi_unified_cmd_send(wmi, buf, len,
 				 WMI_VDEV_TSF_TSTAMP_ACTION_CMDID)) {
@@ -16618,8 +16618,18 @@ extract_vdev_tsf_report_event_tlv(wmi_unified_t wmi_handle, void *evt_buf,
 	}
 
 	evt = param_buf->fixed_param;
-	param->tsf = ((uint64_t)(evt->tsf_high) << 32) | evt->tsf_low;
 	param->vdev_id = evt->vdev_id;
+	param->tsf = ((uint64_t)(evt->tsf_high) << 32) | evt->tsf_low;
+	param->tsf_low = evt->tsf_low;
+	param->tsf_high = evt->tsf_high;
+	param->qtimer_low = evt->qtimer_low;
+	param->qtimer_high = evt->qtimer_high;
+	param->tsf_id = evt->tsf_id;
+	param->tsf_id_valid = evt->tsf_id_valid;
+	param->mac_id = evt->mac_id;
+	param->mac_id_valid = evt->mac_id_valid;
+	param->wlan_global_tsf_low = evt->wlan_global_tsf_low;
+	param->wlan_global_tsf_high = evt->wlan_global_tsf_high;
 
 	return QDF_STATUS_SUCCESS;
 }