qcacmn: Use PPDU duration to find end time stamp

Use the PPDU duration given by FW to find the end time
stamp of management frames.

CRs-Fixed: 3181500
Change-Id: Ibabe82c8e2d3cd7e494e764a9a2baeded89a7300
This commit is contained in:
Edayilliam Jayadev
2022-04-27 16:22:43 +05:30
committed by Madan Koyyalamudi
parent f1373c7ace
commit 1c9f82f0ec
3 changed files with 60 additions and 0 deletions

View File

@@ -685,6 +685,52 @@ mgmt_rx_reo_get_global_ts(struct mgmt_rx_event_params *rx_params)
return rx_params->reo_params->global_timestamp;
}
/**
* mgmt_rx_reo_get_start_ts() - Helper API to get start time stamp of the frame
* @rx_params: Management rx event params
*
* Return: start time stamp of the frame
*/
static inline uint32_t
mgmt_rx_reo_get_start_ts(struct mgmt_rx_event_params *rx_params)
{
qdf_assert_always(rx_params);
qdf_assert_always(rx_params->reo_params);
return rx_params->reo_params->start_timestamp;
}
/**
* mgmt_rx_reo_get_end_ts() - Helper API to get end time stamp of the frame
* @rx_params: Management rx event params
*
* Return: end time stamp of the frame
*/
static inline uint32_t
mgmt_rx_reo_get_end_ts(struct mgmt_rx_event_params *rx_params)
{
qdf_assert_always(rx_params);
qdf_assert_always(rx_params->reo_params);
return rx_params->reo_params->end_timestamp;
}
/**
* mgmt_rx_reo_get_duration_us() - Helper API to get the duration of the frame
* in us
* @rx_params: Management rx event params
*
* Return: Duration of the frame in us
*/
static inline uint32_t
mgmt_rx_reo_get_duration_us(struct mgmt_rx_event_params *rx_params)
{
qdf_assert_always(rx_params);
qdf_assert_always(rx_params->reo_params);
return rx_params->reo_params->duration_us;
}
/**
* mgmt_rx_reo_get_pkt_counter() - Helper API to get packet counter
* corresponding to the mgmt rx event

View File

@@ -100,6 +100,9 @@ struct mgmt_rx_reo_shared_snapshot {
* @link_id: link ID for which FW consumed event is received
* @mgmt_pkt_ctr: MGMT packet counter of the frame that is consumed
* @global_timestamp: Global timestamp of the frame that is consumed
* @duration_us: duration in us
* @start_timestamp: start time stamp
* @end_timestamp: end time stamp
*/
struct mgmt_rx_reo_params {
bool valid;
@@ -107,6 +110,9 @@ struct mgmt_rx_reo_params {
uint8_t link_id;
uint16_t mgmt_pkt_ctr;
uint32_t global_timestamp;
uint16_t duration_us;
uint32_t start_timestamp;
uint32_t end_timestamp;
};
/*

View File

@@ -11499,6 +11499,10 @@ extract_mgmt_rx_fw_consumed_tlv(wmi_unified_t wmi_handle,
params->global_timestamp = ev_hdr->global_timestamp;
params->mgmt_pkt_ctr = WMI_MGMT_RX_FW_CONSUMED_PARAM_MGMT_PKT_CTR_GET(
ev_hdr->mgmt_pkt_ctr_info);
params->duration_us = ev_hdr->rx_ppdu_duration_us;
params->start_timestamp = params->global_timestamp;
params->end_timestamp = params->start_timestamp +
params->duration_us;
return QDF_STATUS_SUCCESS;
}
@@ -11550,6 +11554,10 @@ static QDF_STATUS extract_mgmt_rx_reo_params_tlv(wmi_unified_t wmi_handle,
reo_params->global_timestamp = reo_params_tlv->global_timestamp;
reo_params->mgmt_pkt_ctr = WMI_MGMT_RX_REO_PARAM_MGMT_PKT_CTR_GET(
reo_params_tlv->mgmt_pkt_ctr_link_info);
reo_params->duration_us = reo_params_tlv->rx_ppdu_duration_us;
reo_params->start_timestamp = reo_params->global_timestamp;
reo_params->end_timestamp = reo_params->start_timestamp +
reo_params->duration_us;
return QDF_STATUS_SUCCESS;
}