diff --git a/dp/inc/cdp_txrx_stats_struct.h b/dp/inc/cdp_txrx_stats_struct.h index ed1748997d10..90e25ac28b1e 100644 --- a/dp/inc/cdp_txrx_stats_struct.h +++ b/dp/inc/cdp_txrx_stats_struct.h @@ -363,6 +363,7 @@ enum WDI_EVENT { WDI_EVENT_RX_MPDU, WDI_EVENT_HMWDS_AST_ADD_STATUS, WDI_EVENT_PEER_QOS_STATS, + WDI_EVENT_PKT_CAPTURE_TX_DATA, /* End of new event items */ WDI_EVENT_LAST }; diff --git a/dp/wifi3.0/dp_tx.c b/dp/wifi3.0/dp_tx.c index 19d383d7572c..bd66efa480fd 100644 --- a/dp/wifi3.0/dp_tx.c +++ b/dp/wifi3.0/dp_tx.c @@ -4015,6 +4015,25 @@ static inline void dp_tx_sojourn_stats_process(struct dp_pdev *pdev, } #endif +#ifdef WLAN_FEATURE_PKT_CAPTURE_LITHIUM +/** + * dp_send_completion_to_pkt_capture() - send tx completion to packet capture + * @soc: dp_soc handle + * @desc: Tx Descriptor + * @ts: HAL Tx completion descriptor contents + * + * This function is used to send tx completion to packet capture + */ +void dp_send_completion_to_pkt_capture(struct dp_soc *soc, + struct dp_tx_desc_s *desc, + struct hal_tx_completion_status *ts) +{ + dp_wdi_event_handler(WDI_EVENT_PKT_CAPTURE_TX_DATA, soc, + desc, ts->peer_id, + WDI_NO_VAL, desc->pdev->pdev_id); +} +#endif + /** * dp_tx_comp_process_desc() - Process tx descriptor and free associated nbuf * @soc: DP Soc handle @@ -4038,6 +4057,9 @@ dp_tx_comp_process_desc(struct dp_soc *soc, time_latency = (qdf_ktime_to_ms(qdf_ktime_real_get()) - desc->timestamp); } + + dp_send_completion_to_pkt_capture(soc, desc, ts); + if (!(desc->msdu_ext_desc)) { if (QDF_STATUS_SUCCESS == dp_tx_add_to_comp_queue(soc, desc, ts, peer)) { diff --git a/dp/wifi3.0/dp_tx.h b/dp/wifi3.0/dp_tx.h index 49f9b4db909f..a9cebd213c11 100644 --- a/dp/wifi3.0/dp_tx.h +++ b/dp/wifi3.0/dp_tx.h @@ -527,4 +527,17 @@ QDF_STATUS dp_peer_set_tx_capture_enabled(struct dp_pdev *pdev, #endif void dp_tx_desc_flush(struct dp_pdev *pdev, struct dp_vdev *vdev, bool force_free); + +#ifdef WLAN_FEATURE_PKT_CAPTURE_LITHIUM +void dp_send_completion_to_pkt_capture(struct dp_soc *soc, + struct dp_tx_desc_s *desc, + struct hal_tx_completion_status *ts); +#else +static inline void +dp_send_completion_to_pkt_capture(struct dp_soc *soc, + struct dp_tx_desc_s *desc, + struct hal_tx_completion_status *ts) +{ +} +#endif #endif