qcacmn: CFR: Update RCC specific debug statistics

Move RCC specific debug statistics to Data path
to avoid allocating nbuf for the PPDUs for which
MAC has not sent a Freeze TLV. Instead just update the
debug statistics at an earlier point irrespective of
MAC sending Freeze to PHY, to gather below information:
Status of number of PPDUs being captured by PHY
Status of MAC sending freeze TLV for the PPDUs
Update freeze reason for the number of PPDUs received

Add support to clear debug statistics at user's will.

Change-Id: I8def3ce1f3ecc0b169030704db3fb1fb1c0a20ee
CRs-Fixed: 2609604
This commit is contained in:
Adwait Nayak
2020-01-28 18:29:15 +05:30
committed by nshrivas
parent fc8337d5de
commit 48d23f29a1
5 changed files with 335 additions and 71 deletions

View File

@@ -1553,6 +1553,82 @@ struct cdp_htt_rx_pdev_stats {
#define OFDMA_NUM_RU_SIZE 7
#define OFDMA_NUM_USERS 37
#if defined(WLAN_CFR_ENABLE) && defined(WLAN_ENH_CFR_ENABLE)
/*
* mac_freeze_capture_reason - capture reason counters
* @FREEZE_REASON_TM: When m_directed_ftm is enabled, this CFR data is
* captured for a Timing Measurement (TM) frame.
* @FREEZE_REASON_FTM: When m_directed_ftm is enabled, this CFR data is
* captured for a Fine Timing Measurement (FTM) frame.
* @FREEZE_REASON_ACK_RESP_TO_TM_FTM: When m_all_ftm_ack is enabled, this CFR
* data is captured for an ACK received for the FTM/TM frame sent to a station.
* @FREEZE_REASON_TA_RA_TYPE_FILTER: When m_ta_ra_filter is enabled, this CFR
* data is captured for a PPDU received,since the CFR TA_RA filter is met.
* @FREEZE_REASON_NDPA_NDP: When m_ndpa_ndp_directed(or)m_ndpa_ndp_all is
* enabled, this CFR data is captured for an NDP frame received.
* @FREEZE_REASON_ALL_PACKET: When m_all_packet is enabled, this CFR data is
* captured for an incoming PPDU.
*/
enum mac_freeze_capture_reason {
FREEZE_REASON_TM = 0,
FREEZE_REASON_FTM,
FREEZE_REASON_ACK_RESP_TO_TM_FTM,
FREEZE_REASON_TA_RA_TYPE_FILTER,
FREEZE_REASON_NDPA_NDP,
FREEZE_REASON_ALL_PACKET,
FREEZE_REASON_MAX,
};
/*
* chan_capture_status: capture status counters
* @CAPTURE_IDLE: CFR data is not captured, since VCSR setting for CFR/RCC is
* not enabled.
* @CAPTURE_BUSY: CFR data is not available, since previous channel
* upload is in progress
* @CAPTURE_ACTIVE: CFR data is captured in HW registers
* @CAPTURE_NO_BUFFER: CFR data is not captured, since no buffer is available
* in IPC ring to DMA CFR data
*/
enum chan_capture_status {
CAPTURE_IDLE = 0,
CAPTURE_BUSY,
CAPTURE_ACTIVE,
CAPTURE_NO_BUFFER,
CAPTURE_MAX,
};
/* struct cdp_cfr_rcc_stats - CFR RCC debug statistics
* @bb_captured_channel_cnt: No. of PPDUs for which MAC sent Freeze TLV to PHY
* @bb_captured_timeout_cnt: No. of PPDUs for which CFR filter criteria matched
* but MAC did not send Freeze TLV to PHY as time exceeded freeze tlv delay
* count threshold
* @rx_loc_info_valid_cnt: No. of PPDUs for which PHY could find a valid buffer
* in ucode IPC ring
* @chan_capture_status[]: capture status counters
* [0] - No. of PPDUs with capture status CAPTURE_IDLE
* [1] - No. of PPDUs with capture status CAPTURE_BUSY
* [2] - No. of PPDUs with capture status CAPTURE_ACTIVE
* [3] - No. of PPDUs with capture status CAPTURE_NO_BUFFER
* @reason_cnt[]: capture reason counters
* [0] - No. PPDUs filtered due to freeze_reason_TM
* [1] - No. PPDUs filtered due to freeze_reason_FTM
* [2] - No. PPDUs filtered due to freeze_reason_ACK_resp_to_TM_FTM
* [3] - No. PPDUs filtered due to freeze_reason_TA_RA_TYPE_FILTER
* [4] - No. PPDUs filtered due to freeze_reason_NDPA_NDP
* [5] - No. PPDUs filtered due to freeze_reason_ALL_PACKET
*/
struct cdp_cfr_rcc_stats {
uint64_t bb_captured_channel_cnt;
uint64_t bb_captured_timeout_cnt;
uint64_t rx_loc_info_valid_cnt;
uint64_t chan_capture_status[CAPTURE_MAX];
uint64_t reason_cnt[FREEZE_REASON_MAX];
};
#else
struct cdp_cfr_rcc_stats {
};
#endif
/* struct cdp_pdev_stats - pdev stats
* @msdu_not_done: packets dropped because msdu done bit not set
* @mec:Multicast Echo check
@@ -1649,6 +1725,7 @@ struct cdp_pdev_stats {
} ul_ofdma;
struct cdp_tso_stats tso_stats;
struct cdp_cfr_rcc_stats rcc;
};
#ifdef QCA_ENH_V3_STATS_SUPPORT