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

Commit dc20c6b0 authored by Linux Build Service Account's avatar Linux Build Service Account
Browse files

Merge f93a7f53 on remote branch

Change-Id: Ie7dff735d8a76859ca19d5bac65205d3167daea2
parents d23ffabb f93a7f53
Loading
Loading
Loading
Loading
+900 −39

File changed.

Preview size limit exceeded, changes collapsed.

+147 −0
Original line number Diff line number Diff line
@@ -221,8 +221,27 @@ PREPACK struct htt_tx_ppdu_stats_info {
     * If bit 2 is set, tx_retry_bytes is valid
     * ...
     * If bit 14 is set, tx_duration is valid
     * If bit 15 is set, all of ack_rssi_chain are valid,
     *     for each validation of chain, need to check value in field
     * If bit 16 is set, tx_timestamp is valid
     * If bit 16 is set, sa_ant_matrix is valid
     * If bit 17 is set, tid is valid
     */
    A_UINT32 valid_bitmap;
    A_UINT32 ext_valid_bitmap; /* reserved for future extension valid bitmap */
    /* ack rssi for each chain */
    A_UINT32 ack_rssi_chain0:   8, /* Units: dB w.r.t noise floor, RSSI of Ack of all active chains. Value of 0x80 indicates invalid.*/
             ack_rssi_chain1:   8, /* same as above */
             ack_rssi_chain2:   8, /* same as above */
             ack_rssi_chain3:   8; /* same as above */
    A_UINT32 ack_rssi_chain4:   8, /* same as above */
             ack_rssi_chain5:   8, /* same as above */
             ack_rssi_chain6:   8, /* same as above */
             ack_rssi_chain7:   8; /* same as above */
    A_UINT32 tx_timestamp; /* HW assigned timestamp with microsecond unit */
    A_UINT32 sa_ant_matrix:     8, /* This sa_ant_matrix provides a bitmask of the antennas used while frame transmit */
             tid:               8,
             reserved_1:       16;
} POSTPACK;

typedef struct {
@@ -705,6 +724,36 @@ typedef struct {
        };
    };

    /*
     * Data fields containing the physical address info of a MSDU buffer
     * as well as the owner and a SW cookie info that can be used by the host
     * to look up the virtual address of the MSDU buffer.
     * These fields are only valid if is_buffer_addr_info_valid is set to 1.
     */
     A_UINT32 buffer_paddr_31_0       : 32;
     A_UINT32 buffer_paddr_39_32      :  8,
              return_buffer_manager   :  3,
              sw_buffer_cookie        : 21;

    /*
     * host_opaque_cookie : Host can send upto 2 bytes of opaque
     * cookie in TCL_DATA_CMD and FW will replay this back in
     * HTT PPDU stats. Valid only if sent to FW through
     * exception mechanism.
     *
     * is_standalone : This msdu was sent as a single MSDU/MPDU
     * PPDU as indicated by host via TCL_DATA_CMD using
     * the send_as_standalone bit.
     *
     * is_buffer_addr_info_valid : This will be set whenever a MSDU is sent as
     * a singleton (single-MSDU PPDU) for FW use-cases or as indicated by host
     * via send_as_standalone in TCL_DATA_CMD.
     */
    A_UINT32 host_opaque_cookie:        16,
             is_host_opaque_valid:       1,
             is_standalone:              1,
             is_buffer_addr_info_valid:  1,
             reserved1:                 13;
} htt_ppdu_stats_user_common_tlv;

#define HTT_PPDU_STATS_USER_RATE_TLV_TID_NUM_M     0x000000ff
@@ -802,6 +851,104 @@ typedef struct {
         ((_var) |= ((_val) << HTT_PPDU_STATS_USER_RATE_TLV_RESP_TYPE_VALID_S)); \
     } while (0)


#define HTT_PPDU_STATS_BUF_ADDR_39_32_M     0x000000ff
#define HTT_PPDU_STATS_BUF_ADDR_39_32_S              0

#define HTT_PPDU_STATS_BUF_ADDR_39_32__GET(_var) \
    (((_var) & HTT_PPDU_STATS_BUF_ADDR_39_32_M) >> \
    HTT_PPDU_STATS_BUF_ADDR_39_32_S)

#define HTT_PPDU_STATS_BUF_ADDR_39_32_SET(_var, _val) \
     do { \
         HTT_CHECK_SET_VAL(HTT_PPDU_STATS_BUF_ADDR_39_32, _val); \
         ((_var) |= ((_val) << HTT_PPDU_STATS_BUF_ADDR_39_32_S)); \
     } while (0)


#define HTT_PPDU_STATS_RETURN_BUF_MANAGER_M     0x00000700
#define HTT_PPDU_STATS_RETURN_BUF_MANAGER_S              8

#define HTT_PPDU_STATS_RETURN_BUF_MANAGER_GET(_var) \
    (((_var) & HTT_PPDU_STATS_RETURN_BUF_MANAGER_M) >> \
    HTT_PPDU_STATS_RETURN_BUF_MANAGER_S)

#define HTT_PPDU_STATS_RETURN_BUF_MANAGER_SET(_var, _val) \
     do { \
         HTT_CHECK_SET_VAL(HTT_PPDU_STATS_RETURN_BUF_MANAGER, _val); \
         ((_var) |= ((_val) << HTT_PPDU_STATS_RETURN_BUF_MANAGER_S)); \
     } while (0)


#define HTT_PPDU_STATS_SW_BUFFER_COOKIE_M     0xfffff800
#define HTT_PPDU_STATS_SW_BUFFER_COOKIE_S             11

#define HTT_PPDU_STATS_SW_BUFFER_COOKIE_GET(_var) \
    (((_var) & HTT_PPDU_STATS_SW_BUFFER_COOKIE_M) >> \
    HTT_PPDU_STATS_SW_BUFFER_COOKIE_S)

#define HTT_PPDU_STATS_SW_BUFFER_COOKIE_SET(_var, _val) \
     do { \
         HTT_CHECK_SET_VAL(HTT_PPDU_STATS_SW_BUFFER_COOKIE, _val); \
         ((_var) |= ((_val) << HTT_PPDU_STATS_SW_BUFFER_COOKIE_S)); \
     } while (0)


#define HTT_PPDU_STATS_HOST_OPAQUE_COOKIE_M     0x0000FFFF
#define HTT_PPDU_STATS_HOST_OPAQUE_COOKIE_S              0

#define HTT_PPDU_STATS_HOST_OPAQUE_COOKIE_GET(_var) \
    (((_var) & HTT_PPDU_STATS_HOST_OPAQUE_COOKIE_M) >> \
    HTT_PPDU_STATS_HOST_OPAQUE_COOKIE_S)

#define HTT_PPDU_STAT_HOST_OPAQUE_COOKIE_SET(_var, _val) \
     do { \
         HTT_CHECK_SET_VAL(HTT_PPDU_STATS_HOST_OPAQUE_COOKIE, _val); \
         ((_var) |= ((_val) << HTT_PPDU_STATS_HOST_OPAQUE_COOKIE_S)); \
     } while (0)


#define HTT_PPDU_STATS_IS_OPAQUE_VALID_M        0x00010000
#define HTT_PPDU_STATS_IS_OPAQUE_VALID_S                16

#define HTT_PPDU_STATS_IS_OPAQUE_VALID_GET(_var) \
    (((_var) & HTT_PPDU_STATS_IS_OPAQUE_VALID_M) >> \
    HTT_PPDU_STATS_IS_OPAQUE_VALID_S)

#define HTT_PPDU_STATS_IS_OPAQUE_VALID_SET(_var, _val) \
     do { \
         HTT_CHECK_SET_VAL(HTT_PPDU_STATS_IS_OPAQUE_VALID, _val); \
         ((_var) |= ((_val) << HTT_PPDU_STATS_IS_OPAQUE_VALID_S)); \
     } while (0)


#define HTT_PPDU_STATS_IS_STANDALONE_M          0x00020000
#define HTT_PPDU_STATS_IS_STANDALONE_S                  17

#define HTT_PPDU_STATS_IS_STANDALONE_GET(_var) \
    (((_var) & HTT_PPDU_STATS_IS_STANDALONE_M) >> \
    HTT_PPDU_STATS_IS_OPAQUE_VALID_S)

#define HTT_PPDU_STATS_IS_STANDALONE_SET(_var, _val) \
     do { \
         HTT_CHECK_SET_VAL(HTT_PPDU_STATS_IS_STANDALONE, _val); \
         ((_var) |= ((_val) << HTT_PPDU_STATS_IS_STANDALONE_S)); \
     } while (0)


#define HTT_PPDU_STATS_IS_BUFF_INFO_VALID_M          0x000400000
#define HTT_PPDU_STATS_IS_BUFF_INFO_VALID_S                   18

#define HTT_PPDU_STATS_IS_BUFF_INFO_VALID_GET(_var) \
    (((_var) & HTT_PPDU_STATS_IS_BUFF_INFO_VALID_M) >> \
    HTT_PPDU_STATS_IS_BUFF_INFO_VALID_S)

#define HTT_PPDU_STATS_IS_BUFF_INFO_VALID_SET(_var, _val) \
     do { \
         HTT_CHECK_SET_VAL(HTT_PPDU_STATS_IS_BUFF_INFO_VALID, _val); \
         ((_var) |= ((_val) << HTT_PPDU_STATS_IS_BUFF_INFO_VALID_S)); \
     } while (0)

enum HTT_PPDU_STATS_PPDU_TYPE {
    HTT_PPDU_STATS_PPDU_TYPE_SU,
    HTT_PPDU_STATS_PPDU_TYPE_MU_MIMO,
+127 −0
Original line number Diff line number Diff line
@@ -267,6 +267,15 @@ enum htt_dbg_ext_stats_type {
     */
    HTT_DBG_EXT_STATS_PDEV_OBSS_PD_STATS = 23,

    /* HTT_DBG_EXT_STATS_RING_BACKPRESSURE_STATS
     * PARAMS:
     *   - config_param0:
     *      No params
     * RESP MSG:
     *   - htt_stats_ring_backpressure_stats_t
     */
    HTT_DBG_EXT_STATS_RING_BACKPRESSURE_STATS = 24,

    /* keep this last */
    HTT_DBG_NUM_EXT_STATS = 256,
};
@@ -361,6 +370,8 @@ typedef enum {
    HTT_STATS_SCHED_TXQ_SCHED_ORDER_SU_TAG         = 86, /* htt_sched_txq_sched_order_su_tlv */
    HTT_STATS_SCHED_TXQ_SCHED_INELIGIBILITY_TAG    = 87, /* htt_sched_txq_sched_eligibility_tlv */
    HTT_STATS_PDEV_OBSS_PD_TAG                     = 88, /* htt_pdev_obss_pd_stats_tlv */
    HTT_STATS_HW_WAR_TAG                           = 89, /* htt_hw_war_stats_tlv */
    HTT_STATS_RING_BACKPRESSURE_STATS_TAG          = 90, /* htt_ring_backpressure_stats_tlv */

    HTT_STATS_MAX_TAG,
} htt_tlv_tag_t;
@@ -572,6 +583,26 @@ typedef struct {
    A_UINT32 tx_active_dur_us_high;
    /* Number of MPDUs dropped after max retries */
    A_UINT32 remove_mpdus_max_retries;
    /* Num HTT cookies dispatched */
    A_UINT32 comp_delivered;
    /* successful ppdu transmissions */
    A_UINT32 ppdu_ok;
    /* Scheduler self triggers */
    A_UINT32 self_triggers;
    /* FES duration of last tx data PPDU in us (sch_eval_end - ppdu_start) */
    A_UINT32 tx_time_dur_data;
    /* Num of times sequence terminated due to ppdu duration < burst limit */
    A_UINT32 seq_qdepth_repost_stop;
    /* Num of times MU sequence terminated due to MSDUs reaching threshold */
    A_UINT32 mu_seq_min_msdu_repost_stop;
    /* Num of times SU sequence terminated due to MSDUs reaching threshold */
    A_UINT32 seq_min_msdu_repost_stop;
    /* Num of times sequence terminated due to no TXOP available */
    A_UINT32 seq_txop_repost_stop;
    /* Num of times the next sequence got cancelled */
    A_UINT32 next_seq_cancel;
    /* Num of times fes offset was misaligned */
    A_UINT32 fes_offsets_err_cnt;
} htt_tx_pdev_stats_cmn_tlv;

#define HTT_TX_PDEV_STATS_URRN_TLV_SZ(_num_elems) (sizeof(A_UINT32) * (_num_elems))
@@ -750,12 +781,37 @@ typedef struct {
    A_UINT32 sch_rx_sifs_resp_trigger;
} htt_hw_stats_whal_tx_tlv;

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;
    };

    /*
     * hw_wars is a variable-length array, with each element counting
     * the number of occurrences of the corresponding type of HW WAR.
     * That is, hw_wars[0] indicates how many times HW WAR 0 occurred,
     * hw_wars[1] indicates how many times HW WAR 1 occurred, etc.
     * The target has an internal HW WAR mapping that it uses to keep
     * track of which HW WAR is WAR 0, which HW WAR is WAR 1, etc.
     */
    A_UINT32 hw_wars[1/*or more*/];
} htt_hw_war_stats_tlv;

/* STATS_TYPE: HTT_DBG_EXT_STATS_PDEV_ERROR
 * TLV_TAGS:
 *     - HTT_STATS_HW_PDEV_ERRS_TAG
 *     - HTT_STATS_HW_INTR_MISC_TAG (multiple)
 *     - HTT_STATS_HW_WD_TIMEOUT_TAG (multiple)
 *     - HTT_STATS_WHAL_TX_TAG
 *     - HTT_STATS_HW_WAR_TAG
 */
/* NOTE:
 * This structure is for documentation, and cannot be safely used directly.
@@ -766,6 +822,7 @@ typedef struct _htt_pdev_err_stats {
    htt_hw_stats_intr_misc_tlv  misc_stats[1];
    htt_hw_stats_wd_timeout_tlv wd_timeout[1];
    htt_hw_stats_whal_tx_tlv    whal_tx_stats;
    htt_hw_war_stats_tlv        hw_war;
} htt_hw_err_stats_t;

/* ============ PEER STATS ============ */
@@ -1850,6 +1907,16 @@ typedef struct {
    A_UINT32 notify_sched;
    /* Duration based sendn termination */
    A_UINT32 dur_based_sendn_term;
    /* scheduled via NOTIFY2 */
    A_UINT32 su_notify2_sched;
    /* schedule if queued packets are greater than avg MSDUs in PPDU */
    A_UINT32 su_optimal_queued_msdus_sched;
    /* schedule due to timeout */
    A_UINT32 su_delay_timeout_sched;
    /* delay if txtime is less than 500us */
    A_UINT32 su_min_txtime_sched_delay;
    /* scheduled via no delay */
    A_UINT32 su_no_delay;
} htt_tx_pdev_stats_sched_per_txq_tlv;

#define HTT_STATS_TX_SCHED_CMN_MAC_ID_M 0x000000ff
@@ -2006,6 +2073,8 @@ typedef struct {
    A_UINT32 q_not_empty;
    A_UINT32 drop_notification;
    A_UINT32 desc_threshold;
    A_UINT32 hwsch_tqm_invalid_status;
    A_UINT32 missed_tqm_gen_mpdus;
} htt_tx_tqm_cmn_stats_tlv;

typedef struct {
@@ -2113,6 +2182,11 @@ typedef struct {
    A_UINT32      m4_packets;
    A_UINT32      g1_packets;
    A_UINT32      g2_packets;
    A_UINT32      rc4_packets;
    A_UINT32      eap_packets;
    A_UINT32      eapol_start_packets;
    A_UINT32      eapol_logoff_packets;
    A_UINT32      eapol_encap_asf_packets;
} htt_tx_de_eapol_packets_stats_tlv;

typedef struct {
@@ -2130,6 +2204,12 @@ typedef struct {
    A_UINT32      fse_tid_override;
    A_UINT32      ipv6_jumbogram_zero_length;
    A_UINT32      qos_to_non_qos_in_prog;
    A_UINT32      ap_bcast_mcast_eapol;
    A_UINT32      unicast_on_ap_bss_peer;
    A_UINT32      ap_vdev_invalid;
    A_UINT32      incomplete_llc;
    A_UINT32      eapol_duplicate_m3;
    A_UINT32      eapol_duplicate_m4;
} htt_tx_de_classify_failed_stats_tlv;

typedef struct {
@@ -2253,6 +2333,9 @@ typedef struct {
    A_UINT32 tcl_res_invalid_addrx;
    A_UINT32 wbm2fw_entry_count;
    A_UINT32 invalid_pdev;
    A_UINT32 tcl_res_addrx_timeout;
    A_UINT32 invalid_vdev;
    A_UINT32 invalid_tcl_exp_frame_desc;
} htt_tx_de_cmn_stats_tlv;

/* STATS_TYPE : HTT_DBG_EXT_STATS_TX_DE_INFO
@@ -2877,6 +2960,7 @@ typedef struct {
    A_UINT32 ax_mu_mimo_tx_gi[HTT_TX_PDEV_STATS_NUM_GI_COUNTERS][HTT_TX_PDEV_STATS_NUM_MCS_COUNTERS];
    A_UINT32 ofdma_tx_gi[HTT_TX_PDEV_STATS_NUM_GI_COUNTERS][HTT_TX_PDEV_STATS_NUM_MCS_COUNTERS];
    A_UINT32 trigger_type_11ax[HTT_TX_PDEV_STATS_NUM_11AX_TRIGGER_TYPES];
    A_UINT32 tx_11ax_su_ext;
} htt_tx_pdev_rate_stats_tlv;

/* STATS_TYPE : HTT_DBG_EXT_STATS_PDEV_TX_RATE
@@ -3708,4 +3792,47 @@ typedef struct {
    htt_pdev_obss_pd_stats_tlv obss_pd_stat;
} htt_pdev_obss_pd_stats_t;

typedef struct {
    htt_tlv_hdr_t tlv_hdr;
    A_UINT32 pdev_id;
    A_UINT32 current_head_idx;
    A_UINT32 current_tail_idx;
    A_UINT32 num_htt_msgs_sent;
    /*
     * Time in milliseconds for which the ring has been in
     * its current backpressure condition
     */
    A_UINT32 backpressure_time_ms;
    /* backpressure_hist - histogram showing how many times different degrees
     * of backpressure duration occurred:
     * Index 0 indicates the number of times ring was
     * continously in backpressure state for 100 - 200ms.
     * Index 1 indicates the number of times ring was
     * continously in backpressure state for 200 - 300ms.
     * Index 2 indicates the number of times ring was
     * continously in backpressure state for 300 - 400ms.
     * Index 3 indicates the number of times ring was
     * continously in backpressure state for 400 - 500ms.
     * Index 4 indicates the number of times ring was
     * continously in backpressure state beyond 500ms.
     */
    A_UINT32 backpressure_hist[5];
} htt_ring_backpressure_stats_tlv;

/* STATS_TYPE : HTT_STATS_RING_BACKPRESSURE_STATS_INFO
 * TLV_TAGS:
 *      - HTT_STATS_RING_BACKPRESSURE_STATS_TAG
 */
/* NOTE:
 * This structure is for documentation, and cannot be safely used directly.
 * Instead, use the constituent TLV structures to fill/parse.
 */
typedef struct {
    htt_sring_cmn_tlv cmn_tlv;
    struct {
        htt_stats_string_tlv sring_str_tlv;
        htt_ring_backpressure_stats_tlv backpressure_stats_tlv;
    } r[1]; /* variable-length array */
} htt_ring_backpressure_stats_t;

#endif /* __HTT_STATS_H__ */
+13 −1
Original line number Diff line number Diff line
@@ -172,11 +172,23 @@ typedef enum {
#endif
} WLAN_PHY_MODE;

#ifndef CONFIG_160MHZ_SUPPORT
#if (!defined(CONFIG_160MHZ_SUPPORT)) && (!defined(SUPPORT_11AX))
A_COMPILE_TIME_ASSERT(
    mode_unknown_value_consistency_Check,
    MODE_UNKNOWN == MODE_UNKNOWN_NO_160MHZ_SUPPORT);
#else
/*
 * If SUPPORT_11AX is defined but CONFIG_160MHZ_SUPPORT is not defined,
 * there will be a gap in the mode values, with 14 and 15 being unused.
 * But MODE_UNKNOWN_NO_160MHZ_SUPPORT will have an invalid value, since
 * mode values 16 through 23 will be used for 11AX modes.
 * Thus, MODE_UNKNOWN would still be MODE_UNKNOWN_160MHZ_SUPPORT, for
 * cases where 160 MHz is not supported by 11AX is supported.
 * (Ideally, MODE_UNKNOWN_160MHZ_SUPPORT and NO_160MHZ_SUPPORT should be
 * renamed to cover the 4 permutations of support or no support for
 * 11AX and 160 MHZ, but that is impractical, due to backwards
 * compatibility concerns.)
 */
A_COMPILE_TIME_ASSERT(
    mode_unknown_value_consistency_Check,
    MODE_UNKNOWN == MODE_UNKNOWN_160MHZ_SUPPORT);
+1 −0
Original line number Diff line number Diff line
@@ -113,6 +113,7 @@ typedef enum {
  WLAN_MODULE_UL_OFDMA,                 /* 0x4f */
  WLAN_MODULE_HPCS_PULSE,               /* 0x50 */
  WLAN_MODULE_DTF,                      /* 0x51 */ /* Deterministic Test Framework */
  WLAN_MODULE_QUIET_IE,                 /* 0x52 */

  WLAN_MODULE_ID_MAX,
  WLAN_MODULE_ID_INVALID = WLAN_MODULE_ID_MAX,
Loading