Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d75f1bfa authored by spuligil's avatar spuligil Committed by Madan Koyyalamudi
Browse files

fw-api: CL 18457215 - update fw common interface files

HTT stats: add tx + rx puncture stats

Change-Id: If55e834eff95279c7ceecd51dec3e1f5a9bcbb29
CRs-Fixed: 2262693
parent eaca7918
Loading
Loading
Loading
Loading
+1 −0
Original line number Original line Diff line number Diff line
@@ -747,6 +747,7 @@ typedef enum {
    HTT_STATS_DMAC_RESET_STATS_TAG                 = 155, /* htt_dmac_reset_stats_tlv */
    HTT_STATS_DMAC_RESET_STATS_TAG                 = 155, /* htt_dmac_reset_stats_tlv */
    HTT_STATS_RX_PDEV_BE_UL_OFDMA_USER_STATS_TAG   = 156, /* htt_rx_pdev_be_ul_ofdma_user_stats_tlv */
    HTT_STATS_RX_PDEV_BE_UL_OFDMA_USER_STATS_TAG   = 156, /* htt_rx_pdev_be_ul_ofdma_user_stats_tlv */
    HTT_STATS_PHY_TPC_STATS_TAG                    = 157, /* htt_phy_tpc_stats_tlv */
    HTT_STATS_PHY_TPC_STATS_TAG                    = 157, /* htt_phy_tpc_stats_tlv */
    HTT_STATS_PDEV_PUNCTURE_STATS_TAG              = 158, /* htt_pdev_puncture_stats_tlv */
    HTT_STATS_MAX_TAG,
    HTT_STATS_MAX_TAG,
+125 −0
Original line number Original line Diff line number Diff line
@@ -442,6 +442,15 @@ enum htt_dbg_ext_stats_type {
     */
     */
    HTT_DBG_SOC_ERROR_STATS = 45,
    HTT_DBG_SOC_ERROR_STATS = 45,


    /** HTT_DBG_PDEV_PUNCTURE_STATS
     * PARAMS:
     *    - param 0: enum from htt_tx_pdev_puncture_stats_upload_t, indicating
     *      the stats to upload
     * RESP MSG:
     *    - one or more htt_pdev_puncture_stats_tlv, depending on param 0
     */
    HTT_DBG_PDEV_PUNCTURE_STATS = 46,



    /* keep this last */
    /* keep this last */
    HTT_DBG_NUM_EXT_STATS = 256,
    HTT_DBG_NUM_EXT_STATS = 256,
@@ -593,6 +602,21 @@ typedef enum {
    HTT_UPLOAD_BE_TXBF_OFDMA_STATS,
    HTT_UPLOAD_BE_TXBF_OFDMA_STATS,
} htt_tx_pdev_txbf_ofdma_stats_upload_t;
} htt_tx_pdev_txbf_ofdma_stats_upload_t;


/* htt_tx_pdev_puncture_stats_upload_t
 * Enumerations for specifying which stats to upload in response to
 * HTT_DBG_PDEV_PUNCTURE_STATS.
 */
typedef enum {
    /* upload puncture stats for all supported modes, both TX and RX */
    HTT_UPLOAD_PUNCTURE_STATS_ALL,

    /* upload puncture stats for all supported TX modes */
    HTT_UPLOAD_PUNCTURE_STATS_TX,

    /* upload puncture stats for all supported RX modes */
    HTT_UPLOAD_PUNCTURE_STATS_RX,
} htt_tx_pdev_puncture_stats_upload_t;

#define HTT_STATS_MAX_STRING_SZ32 4
#define HTT_STATS_MAX_STRING_SZ32 4
#define HTT_STATS_MACID_INVALID 0xff
#define HTT_STATS_MACID_INVALID 0xff
#define HTT_TX_HWQ_MAX_DIFS_LATENCY_BINS 10
#define HTT_TX_HWQ_MAX_DIFS_LATENCY_BINS 10
@@ -1451,6 +1475,19 @@ typedef struct {
        reserved       : 16;
        reserved       : 16;
} htt_ast_entry_tlv;
} htt_ast_entry_tlv;


typedef enum {
    HTT_STATS_DIRECTION_TX,
    HTT_STATS_DIRECTION_RX,
} HTT_STATS_DIRECTION;

typedef enum {
    HTT_STATS_PPDU_TYPE_MODE_SU,
    HTT_STATS_PPDU_TYPE_DL_MU_MIMO,
    HTT_STATS_PPDU_TYPE_UL_MU_MIMO,
    HTT_STATS_PPDU_TYPE_DL_MU_OFDMA,
    HTT_STATS_PPDU_TYPE_UL_MU_OFDMA,
} HTT_STATS_PPDU_TYPE;

typedef enum {
typedef enum {
    HTT_STATS_PREAM_OFDM,
    HTT_STATS_PREAM_OFDM,
    HTT_STATS_PREAM_CCK,
    HTT_STATS_PREAM_CCK,
@@ -7426,4 +7463,92 @@ typedef struct {
    A_UINT32  drain_dest_ring_mask;
    A_UINT32  drain_dest_ring_mask;
} htt_dmac_reset_stats_tlv;
} htt_dmac_reset_stats_tlv;



/* Support up to 640 MHz mode for future expansion */
#define HTT_PUNCTURE_STATS_MAX_SUBBAND_COUNT 32

#define HTT_PDEV_PUNCTURE_STATS_MAC_ID_M 0x000000ff
#define HTT_PDEV_PUNCTURE_STATS_MAC_ID_S 0

#define HTT_PDEV_PUNCTURE_STATS_MAC_ID_GET(_var) \
    (((_var) & HTT_PDEV_PUNCTURE_STATS_MAC_ID_M) >> \
     HTT_PDEV_PUNCTURE_STATS_MAC_ID_S)

#define HTT_PDEV_PUNCTURE_STATS_MAC_ID_SET(_var, _val) \
    do { \
        HTT_CHECK_SET_VAL(HTT_PDEV_PUNCTURE_STATS_MAC_ID, _val); \
        ((_var) |= ((_val) << HTT_PDEV_PUNCTURE_STATS_MAC_ID_S)); \
    } while (0)

/*
 * TLV used to provide puncturing related stats for TX/RX and each PPDU type.
 */
typedef struct {
    htt_tlv_hdr_t tlv_hdr;

    /**
     * BIT [ 7 :  0]   :- mac_id
     * BIT [31 :  8]   :- reserved
     */
    union {
        struct {
            A_UINT32 mac_id:    8,
                     reserved: 24;
        };
        A_UINT32 mac_id__word;
    };

    /*
     * Stats direction (TX/RX). Enum value from HTT_STATS_DIRECTION.
     */
    A_UINT32 direction;

    /*
     * Preamble type. Enum value from HTT_STATS_PREAM_TYPE.
     *
     * Note that for although OFDM rates don't technically support
     * "puncturing", this TLV can be used to indicate the 20 MHz sub-bands
     * utilized for OFDM legacy duplicate packets, which are also used during
     * puncturing sequences.
     */
    A_UINT32 preamble;

    /*
     * Stats PPDU type. Enum value from HTT_STATS_PPDU_TYPE.
     */
    A_UINT32 ppdu_type;

    /*
     * Indicates the number of valid elements in the
     * "num_subbands_used_cnt" array, and must be <=
     * HTT_PUNCTURE_STATS_MAX_SUBBAND_COUNT.
     *
     * Also indicates how many bits in the last_used_pattern_mask may be
     * non-zero.
     */
    A_UINT32 subband_count;

    /*
     * The last used transmit 20 MHz subband mask. Bit 0 represents the lowest
     * 20 MHz subband mask, bit 1 the second lowest, and so on.
     *
     * All 32 bits are valid and will be used for expansion to higher BW modes.
     */
    A_UINT32 last_used_pattern_mask;


    /*
     * Number of array elements with valid values is equal to "subband_count".
     * If subband_count is < HTT_PUNCTURE_STATS_MAX_SUBBAND_COUNT, the
     * remaining elements will be implicitly set to 0x0.
     *
     * The array index is the number of 20 MHz subbands utilized during TX/RX,
     * and the counter value at that index is the number of times that subband
     * count was used.
     *
     * The count is incremented once for each OTA PPDU transmitted / received.
     */
    A_UINT32 num_subbands_used_cnt[HTT_PUNCTURE_STATS_MAX_SUBBAND_COUNT];
} htt_pdev_puncture_stats_tlv;

#endif /* __HTT_STATS_H__ */
#endif /* __HTT_STATS_H__ */