qcacmn: support 64 bits timestamp in wmi mgmt completion
added support for 64 bits timestamp that come for each tx wmi mgmt completion Change-Id: I70d66bcbe04aebad507a872faa97df8ab9752657
This commit is contained in:
@@ -1501,6 +1501,20 @@ struct cdp_tx_indication_info {
|
|||||||
qdf_nbuf_t mpdu_nbuf;
|
qdf_nbuf_t mpdu_nbuf;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* struct cdp_tx_mgmt_comp_info - Tx mgmt comp info
|
||||||
|
* @ppdu_id: ppdu_id
|
||||||
|
* @is_sgen_pkt: payload recevied from wmi or htt path
|
||||||
|
* @retries_count: retries count
|
||||||
|
* @tx_tsf: 64 bit timestamp
|
||||||
|
*/
|
||||||
|
struct cdp_tx_mgmt_comp_info {
|
||||||
|
uint32_t ppdu_id;
|
||||||
|
bool is_sgen_pkt;
|
||||||
|
uint16_t retries_count;
|
||||||
|
uint64_t tx_tsf;
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* struct cdp_tx_completion_ppdu - Tx PPDU completion information
|
* struct cdp_tx_completion_ppdu - Tx PPDU completion information
|
||||||
* @completion_status: completion status - OK/Filter/Abort/Timeout
|
* @completion_status: completion status - OK/Filter/Abort/Timeout
|
||||||
|
@@ -2772,6 +2772,8 @@ dp_process_ppdu_stats_tx_mgmtctrl_payload_tlv(struct dp_pdev *pdev,
|
|||||||
{
|
{
|
||||||
uint32_t *nbuf_ptr;
|
uint32_t *nbuf_ptr;
|
||||||
uint8_t trim_size;
|
uint8_t trim_size;
|
||||||
|
size_t head_size;
|
||||||
|
struct cdp_tx_mgmt_comp_info *ptr_mgmt_comp_info;
|
||||||
|
|
||||||
if ((!pdev->tx_sniffer_enable) && (!pdev->mcopy_mode) &&
|
if ((!pdev->tx_sniffer_enable) && (!pdev->mcopy_mode) &&
|
||||||
(!pdev->bpr_enable) && (!pdev->tx_capture_enabled))
|
(!pdev->bpr_enable) && (!pdev->tx_capture_enabled))
|
||||||
@@ -2787,9 +2789,24 @@ dp_process_ppdu_stats_tx_mgmtctrl_payload_tlv(struct dp_pdev *pdev,
|
|||||||
qdf_nbuf_trim_tail(tag_buf, qdf_nbuf_len(tag_buf) -
|
qdf_nbuf_trim_tail(tag_buf, qdf_nbuf_len(tag_buf) -
|
||||||
pdev->mgmtctrl_frm_info.mgmt_buf_len);
|
pdev->mgmtctrl_frm_info.mgmt_buf_len);
|
||||||
|
|
||||||
nbuf_ptr = (uint32_t *)qdf_nbuf_push_head(
|
if (pdev->tx_capture_enabled) {
|
||||||
tag_buf, sizeof(ppdu_id));
|
head_size = sizeof(struct cdp_tx_mgmt_comp_info);
|
||||||
|
if (qdf_unlikely(qdf_nbuf_headroom(tag_buf) < head_size)) {
|
||||||
|
qdf_err("Fail to get headroom h_sz %d h_avail %d\n",
|
||||||
|
head_size, qdf_nbuf_headroom(tag_buf));
|
||||||
|
qdf_assert_always(0);
|
||||||
|
return QDF_STATUS_E_NOMEM;
|
||||||
|
}
|
||||||
|
ptr_mgmt_comp_info = (struct cdp_tx_mgmt_comp_info *)
|
||||||
|
qdf_nbuf_push_head(tag_buf, head_size);
|
||||||
|
qdf_assert_always(ptr_mgmt_comp_info);
|
||||||
|
ptr_mgmt_comp_info->ppdu_id = ppdu_id;
|
||||||
|
ptr_mgmt_comp_info->is_sgen_pkt = true;
|
||||||
|
} else {
|
||||||
|
head_size = sizeof(ppdu_id);
|
||||||
|
nbuf_ptr = (uint32_t *)qdf_nbuf_push_head(tag_buf, head_size);
|
||||||
*nbuf_ptr = ppdu_id;
|
*nbuf_ptr = ppdu_id;
|
||||||
|
}
|
||||||
|
|
||||||
if (pdev->bpr_enable) {
|
if (pdev->bpr_enable) {
|
||||||
dp_wdi_event_handler(WDI_EVENT_TX_BEACON, pdev->soc,
|
dp_wdi_event_handler(WDI_EVENT_TX_BEACON, pdev->soc,
|
||||||
|
@@ -5585,12 +5585,16 @@ typedef struct {
|
|||||||
* @status: WMI_MGMT_TX_COMP_STATUS_TYPE
|
* @status: WMI_MGMT_TX_COMP_STATUS_TYPE
|
||||||
* @pdev_id: pdev_id
|
* @pdev_id: pdev_id
|
||||||
* @ppdu_id: ppdu_id
|
* @ppdu_id: ppdu_id
|
||||||
|
* @retries_count: retries count
|
||||||
|
* @tx_tsf: 64 bits completion timestamp
|
||||||
*/
|
*/
|
||||||
typedef struct {
|
typedef struct {
|
||||||
uint32_t desc_id;
|
uint32_t desc_id;
|
||||||
uint32_t status;
|
uint32_t status;
|
||||||
uint32_t pdev_id;
|
uint32_t pdev_id;
|
||||||
uint32_t ppdu_id;
|
uint32_t ppdu_id;
|
||||||
|
uint32_t retries_count;
|
||||||
|
uint64_t tx_tsf;
|
||||||
} wmi_host_mgmt_tx_compl_event;
|
} wmi_host_mgmt_tx_compl_event;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Reference in New Issue
Block a user