From da95696a44524198e69212aff3173aa657420592 Mon Sep 17 00:00:00 2001 From: nobelj Date: Fri, 13 Dec 2019 13:00:17 -0800 Subject: [PATCH] qca-wifi: support flush tlv in tx capture all pending excess retries ppdu desc are handled for flush tlv Change-Id: Id34664eec0680cd3712d14e9abd6329f7d1b10aa --- dp/wifi3.0/dp_tx_capture.c | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/dp/wifi3.0/dp_tx_capture.c b/dp/wifi3.0/dp_tx_capture.c index 229bf36a89..9617d50c71 100644 --- a/dp/wifi3.0/dp_tx_capture.c +++ b/dp/wifi3.0/dp_tx_capture.c @@ -1797,6 +1797,35 @@ dp_tx_mon_proc_pending_ppdus(struct dp_pdev *pdev, struct dp_tx_tid *tx_tid, } } +/** + * dp_tx_ppdu_stats_flush(): Function to flush pending retried ppdu desc + * @pdev: DP pdev handle + * @nbuf: ppdu_desc + * + * return: void + */ +static void +dp_tx_ppdu_stats_flush(struct dp_pdev *pdev, + struct cdp_tx_completion_ppdu *ppdu_desc) +{ + struct dp_peer *peer; + + peer = dp_peer_find_by_id(pdev->soc, + ppdu_desc->user[0].peer_id); + + if (!peer) + return; + + /* + * for all drop reason we are invoking + * proc xretries + */ + dp_tx_mon_proc_xretries(pdev, peer, ppdu_desc->user[0].tid); + + dp_peer_unref_del_find_by_id(peer); + return; +} + /** * dp_check_ppdu_and_deliver(): Check PPDUs for any holes and deliver * to upper layer if complete @@ -1834,6 +1863,14 @@ dp_check_ppdu_and_deliver(struct dp_pdev *pdev, ppdu_id = ppdu_desc->ppdu_id; + if (ppdu_desc->is_flush) { + dp_tx_ppdu_stats_flush(pdev, ppdu_desc); + tmp_nbuf = nbuf_ppdu_desc_list[desc_cnt]; + nbuf_ppdu_desc_list[desc_cnt] = NULL; + qdf_nbuf_free(tmp_nbuf); + continue; + } + if (ppdu_desc->frame_type == CDP_PPDU_FTYPE_CTRL || ppdu_desc->htt_frame_type == HTT_STATS_FTYPE_SGEN_QOS_NULL) {