qcacmn: Retrieve per PPDU phy tx duration

Add support to retrieve per PPDU phy tx duration without response time.
Add support to retrieve per User phy tx duration for MU-MIMO and OFDMA.

These metrics are useful for ATF stats feature. Stats processing done
only if atf stats flag is set.

CRs-Fixed: 2709102
Change-Id: I90db41aa45843808e07343a80750c154abbde9cd
This commit is contained in:
Subrat Mishra
2020-06-22 11:23:34 +05:30
committed by snandini
parent c4c0a179f6
commit 9b715c34c5
4 changed files with 93 additions and 0 deletions

View File

@@ -1019,6 +1019,7 @@ enum cdp_peer_param_type {
* @CDP_MONITOR_CHANNEL: monitor channel
* @CDP_MONITOR_FREQUENCY: monitor frequency
* @CDP_CONFIG_BSS_COLOR: configure bss color
* @CDP_SET_ATF_STATS_ENABLE: set ATF stats flag
*/
enum cdp_pdev_param_type {
CDP_CONFIG_DEBUG_SNIFFER,
@@ -1048,6 +1049,7 @@ enum cdp_pdev_param_type {
CDP_MONITOR_CHANNEL,
CDP_MONITOR_FREQUENCY,
CDP_CONFIG_BSS_COLOR,
CDP_SET_ATF_STATS_ENABLE,
};
/*
@@ -1104,6 +1106,7 @@ enum cdp_pdev_param_type {
* @cdp_pdev_param_fltr_mcast: filter multicast data
* @cdp_pdev_param_fltr_none: filter no data
* @cdp_pdev_param_monitor_chan: monitor channel
* @cdp_pdev_param_atf_stats_enable: ATF stats enable
*
* @cdp_psoc_param_en_rate_stats: set rate stats enable/disable
* @cdp_psoc_param_en_nss_cfg: set nss cfg
@@ -1165,6 +1168,7 @@ typedef union cdp_config_param_t {
uint32_t cdp_pdev_param_osif_drop;
uint32_t cdp_pdev_param_en_perpkt_txstats;
uint32_t cdp_pdev_param_tx_pending;
bool cdp_pdev_param_atf_stats_enable;
/* psoc params */
bool cdp_psoc_param_en_rate_stats;
@@ -1613,6 +1617,7 @@ struct cdp_delayed_tx_completion_ppdu_user {
* @mon_procd: to indicate user processed in ppdu of the sched cmd
* @debug_copied: flag to indicate bar frame copied
* @peer_last_delayed_ba: flag to indicate peer last delayed ba
* @phy_tx_time_us: Phy TX duration for the User
*/
struct cdp_tx_completion_ppdu_user {
uint32_t completion_status:8,
@@ -1708,6 +1713,8 @@ struct cdp_tx_completion_ppdu_user {
bool mon_procd;
bool debug_copied;
bool peer_last_delayed_ba;
uint16_t phy_tx_time_us;
};
/**
@@ -1853,12 +1860,15 @@ struct cdp_tx_mgmt_comp_info {
* @bss_color: 6 bit value for full bss color
* @doppler: value for doppler (will be 0 most of the times)
* @spatial_reuse: value for spatial reuse used in radiotap HE header
* @usr_nss_sum: Sum of user nss
* @usr_ru_tones_sum: Sum of user ru_tones
* @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
* @phy_ppdu_tx_time_us: Phy per PPDU TX duration
* @user: per-User stats (array of per-user structures)
*/
struct cdp_tx_completion_ppdu {
@@ -1894,12 +1904,15 @@ struct cdp_tx_completion_ppdu {
uint8_t bss_color;
uint8_t doppler;
uint8_t spatial_reuse;
uint8_t usr_nss_sum;
uint32_t usr_ru_tones_sum;
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;
uint16_t phy_ppdu_tx_time_us;
struct cdp_tx_completion_ppdu_user user[];
};