qcacmn: Support MU in tx capture mode

Support fix for MU related data frame in tx capture mode.

Change-Id: I8b63eaf320463a3a068beb589089582cafe05001
CRs-Fixed: 2656346
This commit is contained in:
nobelj
2020-02-12 14:36:29 -08:00
committed by nshrivas
parent 0150333a89
commit 01dcfedca1
8 changed files with 185 additions and 82 deletions

View File

@@ -1503,6 +1503,8 @@ struct cdp_tx_sojourn_stats {
* @is_mcast: MCAST or UCAST
* @user_pos: user position
* @mu_group_id: mu group id
* @ppdu_start_timestamp: 64 bits ppdu start timestamp
* @ppdu_end_timestamp: 64 bits ppdu end timestamp
*/
struct cdp_delayed_tx_completion_ppdu_user {
uint32_t frame_ctrl:16,
@@ -1526,6 +1528,8 @@ struct cdp_delayed_tx_completion_ppdu_user {
bool is_mcast;
uint32_t user_pos;
uint32_t mu_group_id;
uint64_t ppdu_start_timestamp;
uint64_t ppdu_end_timestamp;
};
/**
@@ -1561,6 +1565,7 @@ struct cdp_delayed_tx_completion_ppdu_user {
* @dcm: dcm
* @ldpc: ldpc
* @delayed_ba: delayed ba bit
* @ack_ba_tlv: ack ba recv tlv bit
* @ppdu_type: SU/MU_MIMO/MU_OFDMA/MU_MIMO_OFDMA/UL_TRIG/BURST_BCN/UL_BSR_RESP/
* UL_BSR_TRIG/UNKNOWN
* @ba_seq_no: Block Ack sequence number
@@ -1584,6 +1589,11 @@ struct cdp_delayed_tx_completion_ppdu_user {
* @sa_goodput: smart antenna tx feedback info goodput
* @current_rate_per: Moving average per
* @last_enq_seq: last equeue sequence number
* @mpdu_q: queue of mpdu in a ppdu
* @mpdus: MPDU list based on enqueue sequence bitmap
* @pending_retries: pending MPDUs (retries)
* @tlv_bitmap: per user tlv bitmap
* @skip: tx capture skip flag
*/
struct cdp_tx_completion_ppdu_user {
uint32_t completion_status:8,
@@ -1620,7 +1630,8 @@ struct cdp_tx_completion_ppdu_user {
gi:4,
dcm:1,
ldpc:1,
delayed_ba:1;
delayed_ba:1,
ack_ba_tlv:1;
uint32_t ba_seq_no;
uint32_t ba_bitmap[CDP_BA_256_BIT_MAP_SIZE_DWORDS];
uint32_t start_seq;
@@ -1669,6 +1680,12 @@ struct cdp_tx_completion_ppdu_user {
*/
uint32_t current_rate_per;
uint32_t last_enq_seq;
qdf_nbuf_queue_t mpdu_q;
qdf_nbuf_t *mpdus;
uint32_t pending_retries;
uint32_t tlv_bitmap;
bool skip;
};
/**
@@ -1713,6 +1730,7 @@ struct cdp_tx_completion_ppdu_user {
* @long_retries: long retries
* @short_retries: short retries
* @completion_status: completion status - OK/Filter/Abort/Timeout
* @usr_idx: user index
*/
struct cdp_tx_indication_mpdu_info {
uint32_t ppdu_id;
@@ -1750,6 +1768,7 @@ struct cdp_tx_indication_mpdu_info {
mprot_type:3,
rts_success:1,
rts_failure:1;
uint8_t usr_idx;
};
/**
@@ -1786,7 +1805,6 @@ struct cdp_tx_mgmt_comp_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)
* @drop_reason: drop reason from flush status
* @is_flush: is_flush is set based on flush tlv
* @flow_type: tx flow type from flush status
@@ -1813,12 +1831,12 @@ struct cdp_tx_mgmt_comp_info {
* @doppler: value for doppler (will be 0 most of the times)
* @spatial_reuse: value for spatial reuse used in radiotap HE header
* @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
* @bar_ppdu_id: BAR ppdu_id
* @bar_tx_duration: BAR tx duration
* @bar_ppdu_start_timestamp: BAR start timestamp
* @bar_ppdu_end_timestamp: BAR end timestamp
* @tlv_bitmap: tlv_bitmap for the PPDU
* @sched_cmdid: schedule command id
*/
struct cdp_tx_completion_ppdu {
uint32_t ppdu_id;
@@ -1827,7 +1845,6 @@ 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 drop_reason;
uint32_t is_flush:1,
flow_type:8,
@@ -1854,12 +1871,12 @@ struct cdp_tx_completion_ppdu {
uint8_t doppler;
uint8_t spatial_reuse;
struct cdp_tx_completion_ppdu_user user[CDP_MU_MAX_USERS];
qdf_nbuf_queue_t mpdu_q;
qdf_nbuf_t *mpdus;
uint32_t bar_ppdu_id;
uint32_t bar_tx_duration;
uint32_t bar_ppdu_start_timestamp;
uint32_t bar_ppdu_end_timestamp;
uint32_t tlv_bitmap;
uint16_t sched_cmdid;
};
/**