From 634293371532d412fce8254f569f5878c91ed31f Mon Sep 17 00:00:00 2001 From: Karunakar Dasineni Date: Tue, 15 Oct 2019 18:49:33 -0700 Subject: [PATCH] qcacmn: Support SW retries in Tx capture Changes to include SW retries in Tx capture. Change-Id: I2bee277107356a6dca6f8a6cc52cded73aca6c7a --- dp/inc/cdp_txrx_cmn_struct.h | 8 ++++++++ dp/wifi3.0/dp_htt.c | 2 ++ dp/wifi3.0/dp_types.h | 2 ++ 3 files changed, 12 insertions(+) diff --git a/dp/inc/cdp_txrx_cmn_struct.h b/dp/inc/cdp_txrx_cmn_struct.h index c1ab0fdd9d..291448d122 100644 --- a/dp/inc/cdp_txrx_cmn_struct.h +++ b/dp/inc/cdp_txrx_cmn_struct.h @@ -1272,6 +1272,7 @@ struct cdp_delayed_tx_completion_ppdu_user { * @completion_status: completion status - OK/Filter/Abort/Timeout * @tid: TID number * @peer_id: Peer ID + * @ba_size: Block-Ack size * @frame_ctrl: frame control field in 802.11 header * @qos_ctrl: QoS control field in 802.11 header * @mpdu_tried: number of mpdus tried @@ -1321,12 +1322,14 @@ struct cdp_delayed_tx_completion_ppdu_user { * @sa_max_rates: smart antenna tx feedback info max rates * @sa_goodput: smart antenna tx feedback info goodput * @current_rate_per: Moving average per + * @last_enq_seq: last equeue sequence number */ struct cdp_tx_completion_ppdu_user { uint32_t completion_status:8, tid:8, peer_id:16; uint8_t mac_addr[6]; + uint16_t ba_size; uint32_t frame_ctrl:16, qos_ctrl:16; uint32_t mpdu_tried_ucast:16, @@ -1404,6 +1407,7 @@ struct cdp_tx_completion_ppdu_user { * of no use. It is just for Host computation. */ uint32_t current_rate_per; + uint32_t last_enq_seq; }; /** @@ -1491,6 +1495,7 @@ struct cdp_tx_indication_info { * @vdev_id: VAP Id * @bar_num_users: BA response user count, based on completion common TLV * @num_users: Number of users + * @pending_retries: pending MPDUs (retries) * @num_mpdu: Number of MPDUs in PPDU * @num_msdu: Number of MSDUs in PPDU * @frame_type: frame SU or MU @@ -1504,6 +1509,7 @@ struct cdp_tx_indication_info { * @delayed_ba: Delayed ba flag * @user: per-User stats (array of per-user structures) * @mpdu_q: queue of mpdu in a ppdu + * @mpdus: MPDU list based on enqueue sequence bitmap */ struct cdp_tx_completion_ppdu { uint32_t ppdu_id; @@ -1512,6 +1518,7 @@ struct cdp_tx_completion_ppdu { uint16_t bar_num_users; uint32_t num_users; uint8_t last_usr_index; + uint32_t pending_retries; uint32_t num_mpdu:9, num_msdu:16; uint16_t frame_type; @@ -1526,6 +1533,7 @@ struct cdp_tx_completion_ppdu { bool delayed_ba; struct cdp_tx_completion_ppdu_user user[CDP_MU_MAX_USERS]; qdf_nbuf_queue_t mpdu_q; + qdf_nbuf_t *mpdus; }; /** diff --git a/dp/wifi3.0/dp_htt.c b/dp/wifi3.0/dp_htt.c index c87f4ff6f6..b73d4bcf7b 100644 --- a/dp/wifi3.0/dp_htt.c +++ b/dp/wifi3.0/dp_htt.c @@ -2500,6 +2500,7 @@ static void dp_process_ppdu_stats_user_compltn_ba_bitmap_64_tlv( ppdu_user_desc->ba_seq_no = dp_stats_buf->ba_seq_no; qdf_mem_copy(&ppdu_user_desc->ba_bitmap, &dp_stats_buf->ba_bitmap, sizeof(uint32_t) * CDP_BA_64_BIT_MAP_SIZE_DWORDS); + ppdu_user_desc->ba_size = CDP_BA_64_BIT_MAP_SIZE_DWORDS * 32; } /* @@ -2540,6 +2541,7 @@ static void dp_process_ppdu_stats_user_compltn_ba_bitmap_256_tlv( ppdu_user_desc->ba_seq_no = dp_stats_buf->ba_seq_no; qdf_mem_copy(&ppdu_user_desc->ba_bitmap, &dp_stats_buf->ba_bitmap, sizeof(uint32_t) * CDP_BA_256_BIT_MAP_SIZE_DWORDS); + ppdu_user_desc->ba_size = CDP_BA_256_BIT_MAP_SIZE_DWORDS * 32; } /* diff --git a/dp/wifi3.0/dp_types.h b/dp/wifi3.0/dp_types.h index 068bdd0944..d427ce6a7c 100644 --- a/dp/wifi3.0/dp_types.h +++ b/dp/wifi3.0/dp_types.h @@ -1318,6 +1318,7 @@ struct ppdu_info { * @last_msdu - last msdu indication * @msdu_part_of_amsdu - msdu part of amsdu * @transmit_cnt - retried count + * @status - transmit status * @tsf - timestamp which it transmitted */ struct msdu_completion_info { @@ -1328,6 +1329,7 @@ struct msdu_completion_info { last_msdu:1, msdu_part_of_amsdu:1; uint8_t transmit_cnt; + uint8_t status; uint32_t tsf; };