diff --git a/core/dp/txrx/ol_rx.c b/core/dp/txrx/ol_rx.c index dfb62b57db11..861215a2fddf 100644 --- a/core/dp/txrx/ol_rx.c +++ b/core/dp/txrx/ol_rx.c @@ -57,6 +57,7 @@ #include #include #include +#include #ifndef OL_RX_INDICATION_MAX_RECORDS #define OL_RX_INDICATION_MAX_RECORDS 2048 @@ -2002,11 +2003,12 @@ void ol_ath_add_vow_extstats(htt_pdev_handle pdev, qdf_nbuf_t msdu) #ifdef WLAN_CFR_ENABLE void ol_rx_cfr_capture_msg_handler(qdf_nbuf_t htt_t2h_msg) { + struct ol_txrx_soc_t *soc = cds_get_context(QDF_MODULE_ID_SOC); HTT_PEER_CFR_CAPTURE_MSG_TYPE cfr_type; struct htt_cfr_dump_compl_ind *cfr_dump; struct htt_cfr_dump_ind_type_1 cfr_ind; struct csi_cfr_header cfr_hdr = {}; - uint32_t mem_index, vdev_id; + uint32_t mem_index, req_id, vdev_id; uint32_t *msg_word; uint8_t *mac_addr; @@ -2023,6 +2025,11 @@ void ol_rx_cfr_capture_msg_handler(qdf_nbuf_t htt_t2h_msg) /* Second payload word */ msg_word++; + req_id = HTT_T2H_CFR_DUMP_TYPE1_MEM_REQ_ID_GET(*msg_word); + if (req_id != CFR_CAPTURE_HOST_MEM_REQ_ID) { + ol_txrx_err("Invalid req id in cfr capture msg"); + return; + } cfr_hdr.start_magic_num = 0xDEADBEAF; cfr_hdr.u.meta_v1.status = HTT_T2H_CFR_DUMP_TYPE1_STATUS_GET( *msg_word); @@ -2052,5 +2059,7 @@ void ol_rx_cfr_capture_msg_handler(qdf_nbuf_t htt_t2h_msg) cfr_hdr.u.meta_v1.timestamp = cfr_ind.timestamp; mem_index = cfr_ind.index; + + ucfg_cfr_capture_data((void *)soc->psoc, vdev_id, &cfr_hdr, mem_index); } #endif