From d3a6d13d9f13c58a72046b74c8faecf3a6703412 Mon Sep 17 00:00:00 2001 From: nobelj Date: Sun, 23 Feb 2020 19:17:40 -0800 Subject: [PATCH] qcacmn: Fix to support ack ba status tlv comes twice Sometimes ack ba status tlv comes twice which cause ppdu desc to be hold as waiting for some more tlv as mpdu ack ba tlv is not matching with completion common tlv mpdu count. Change-Id: Id946ecd53018ee7abe93aa6c5f62e69d41b750e8 --- dp/wifi3.0/dp_htt.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/dp/wifi3.0/dp_htt.c b/dp/wifi3.0/dp_htt.c index eac5517896..2c186fd9c5 100644 --- a/dp/wifi3.0/dp_htt.c +++ b/dp/wifi3.0/dp_htt.c @@ -3241,6 +3241,7 @@ struct ppdu_info *dp_get_ppdu_desc(struct dp_pdev *pdev, uint32_t ppdu_id, uint8_t tlv_type) { struct ppdu_info *ppdu_info = NULL; + struct cdp_tx_completion_ppdu *ppdu_desc = NULL; /* * Find ppdu_id node exists or not @@ -3266,13 +3267,18 @@ struct ppdu_info *dp_get_ppdu_desc(struct dp_pdev *pdev, uint32_t ppdu_id, (1 << HTT_PPDU_STATS_SCH_CMD_STATUS_TLV))) return ppdu_info; + ppdu_desc = (struct cdp_tx_completion_ppdu *) + qdf_nbuf_data(ppdu_info->nbuf); + /** * apart from ACK BA STATUS TLV rest all comes in order * so if tlv type not ACK BA STATUS TLV we can deliver * ppdu_info */ - if (tlv_type == - HTT_PPDU_STATS_USR_COMPLTN_ACK_BA_STATUS_TLV) + if ((tlv_type == + HTT_PPDU_STATS_USR_COMPLTN_ACK_BA_STATUS_TLV) && + (ppdu_desc->htt_frame_type == + HTT_STATS_FTYPE_SGEN_MU_BAR)) return ppdu_info; dp_ppdu_desc_deliver(pdev, ppdu_info);