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
This commit is contained in:
Vivek
2022-02-23 21:50:20 +05:30
committed by Madan Koyyalamudi
parent c49c432096
commit 3cf850fbf1
2 changed files with 32 additions and 2 deletions

View File

@@ -4584,10 +4584,30 @@ struct ftm_time_sync_offset {
* struct wmi_host_tsf_event_- Get tsf event info * struct wmi_host_tsf_event_- Get tsf event info
* @vdev_id: vdev id * @vdev_id: vdev id
* @tsf: tsf * @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 { struct wmi_host_tsf_event {
uint32_t vdev_id; uint32_t vdev_id;
uint64_t tsf; 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 #define WMI_EVENT_ID_INVALID 0

View File

@@ -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_TAG_STRUC_wmi_vdev_tsf_tstamp_action_cmd_fixed_param,
WMITLV_GET_STRUCT_TLVLEN(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->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); wmi_mtrace(WMI_VDEV_TSF_TSTAMP_ACTION_CMDID, cmd->vdev_id, 0);
if (wmi_unified_cmd_send(wmi, buf, len, if (wmi_unified_cmd_send(wmi, buf, len,
WMI_VDEV_TSF_TSTAMP_ACTION_CMDID)) { 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; evt = param_buf->fixed_param;
param->tsf = ((uint64_t)(evt->tsf_high) << 32) | evt->tsf_low;
param->vdev_id = evt->vdev_id; 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; return QDF_STATUS_SUCCESS;
} }