qcacmn: Support SW retries in Tx capture
Changes to include SW retries in Tx capture.
Change-Id: I2bee277107356a6dca6f8a6cc52cded73aca6c7a
diff --git a/dp/inc/cdp_txrx_cmn_struct.h b/dp/inc/cdp_txrx_cmn_struct.h
index c1ab0fd..291448d 100644
--- a/dp/inc/cdp_txrx_cmn_struct.h
+++ b/dp/inc/cdp_txrx_cmn_struct.h
@@ -1272,6 +1272,7 @@
* @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 @@
* @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 @@
* of no use. It is just for Host computation.
*/
uint32_t current_rate_per;
+ uint32_t last_enq_seq;
};
/**
@@ -1491,6 +1495,7 @@
* @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 @@
* @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 @@
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 @@
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 c87f4ff..b73d4bc 100644
--- a/dp/wifi3.0/dp_htt.c
+++ b/dp/wifi3.0/dp_htt.c
@@ -2500,6 +2500,7 @@
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 @@
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 068bdd0..d427ce6 100644
--- a/dp/wifi3.0/dp_types.h
+++ b/dp/wifi3.0/dp_types.h
@@ -1318,6 +1318,7 @@
* @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 @@
last_msdu:1,
msdu_part_of_amsdu:1;
uint8_t transmit_cnt;
+ uint8_t status;
uint32_t tsf;
};