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

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

Merge 914d2611 on remote branch

Change-Id: Id06259245905b183f906a3feeb08d95ab70fea24
parents 2b58351f 914d2611
Loading
Loading
Loading
Loading
+45 −6
Original line number Diff line number Diff line
@@ -698,10 +698,10 @@ typedef enum {
    HTT_STATS_UNAVAILABLE_ERROR_STATS_TAG          = 110, /* htt_stats_error_tlv_v */
    HTT_STATS_TX_SELFGEN_AC_SCHED_STATUS_STATS_TAG = 111, /* htt_tx_selfgen_ac_sched_status_stats_tlv */
    HTT_STATS_TX_SELFGEN_AX_SCHED_STATUS_STATS_TAG = 112, /* htt_tx_selfgen_ax_sched_status_stats_tlv */
    HTT_STATS_TXBF_OFDMA_NDPA_STATS_TAG            = 113, /* htt_txbf_ofdma_ndpa_stats_tlv */
    HTT_STATS_TXBF_OFDMA_NDP_STATS_TAG             = 114, /* htt_txbf_ofdma_ndp_stats_tlv */
    HTT_STATS_TXBF_OFDMA_BRP_STATS_TAG             = 115, /* htt_txbf_ofdma_brp_stats_tlv */
    HTT_STATS_TXBF_OFDMA_STEER_STATS_TAG           = 116, /* htt_txbf_ofdma_steer_stats_tlv */
    HTT_STATS_TXBF_OFDMA_NDPA_STATS_TAG            = 113, /* htt_txbf_ofdma_ndpa_stats_tlv - DEPRECATED */
    HTT_STATS_TXBF_OFDMA_NDP_STATS_TAG             = 114, /* htt_txbf_ofdma_ndp_stats_tlv - DEPRECATED */
    HTT_STATS_TXBF_OFDMA_BRP_STATS_TAG             = 115, /* htt_txbf_ofdma_brp_stats_tlv - DEPRECATED */
    HTT_STATS_TXBF_OFDMA_STEER_STATS_TAG           = 116, /* htt_txbf_ofdma_steer_stats_tlv - DEPRECATED */
    HTT_STATS_STA_UL_OFDMA_STATS_TAG               = 117, /* htt_sta_ul_ofdma_stats_tlv */
    HTT_STATS_VDEV_RTT_RESP_STATS_TAG              = 118, /* htt_vdev_rtt_resp_stats_tlv */
    HTT_STATS_PKTLOG_AND_HTT_RING_STATS_TAG        = 119, /* htt_pktlog_and_htt_ring_stats_tlv */
@@ -732,6 +732,15 @@ typedef enum {
    HTT_STATS_TX_PDEV_SAWF_RATE_STATS_TAG          = 144, /* htt_tx_pdev_rate_stats_sawf_tlv */
    HTT_STATS_STRM_GEN_MPDUS_TAG                   = 145, /* htt_stats_strm_gen_mpdus_tlv_t */
    HTT_STATS_STRM_GEN_MPDUS_DETAILS_TAG           = 146, /* htt_stats_strm_gen_mpdus_details_tlv_t */
    HTT_STATS_TXBF_OFDMA_AX_NDPA_STATS_TAG         = 147, /* htt_txbf_ofdma_ax_ndpa_stats_tlv */
    HTT_STATS_TXBF_OFDMA_AX_NDP_STATS_TAG          = 148, /* htt_txbf_ofdma_ax_ndp_stats_tlv */
    HTT_STATS_TXBF_OFDMA_AX_BRP_STATS_TAG          = 149, /* htt_txbf_ofdma_ax_brp_stats_tlv */
    HTT_STATS_TXBF_OFDMA_AX_STEER_STATS_TAG        = 150, /* htt_txbf_ofdma_ax_steer_stats_tlv */
    HTT_STATS_TXBF_OFDMA_BE_NDPA_STATS_TAG         = 151, /* htt_txbf_ofdma_be_ndpa_stats_tlv */
    HTT_STATS_TXBF_OFDMA_BE_NDP_STATS_TAG          = 152, /* htt_txbf_ofdma_be_ndp_stats_tlv */
    HTT_STATS_TXBF_OFDMA_BE_BRP_STATS_TAG          = 153, /* htt_txbf_ofdma_be_brp_stats_tlv */
    HTT_STATS_TXBF_OFDMA_BE_STEER_STATS_TAG        = 154, /* htt_txbf_ofdma_be_steer_stats_tlv */
    HTT_STATS_DMAC_RESET_STATS_TAG                 = 155, /* htt_dmac_reset_stats_tlv */
    HTT_STATS_MAX_TAG,
@@ -5576,7 +5585,15 @@ enum htt_srng_ring_id {
 *                    010 - 128bytes
 *                    100 - 256bytes
 *                    111 - Full mpdu bytes
 *          b'25:31 - rsvd2: Reserved for future use
 *          b'25:26 - rx_hdr_len:
 *                    Specifies the number of bytes of recvd packet to copy
 *                    into the rx_hdr tlv.
 *                    supported values for now by host:
 *                    01 - 64bytes
 *                    10 - 128bytes
 *                    11 - 256bytes
 *                    default - 128 bytes
 *          b'27:31 - rsvd2: Reserved for future use
 * dword2 - b'0:31  - packet_type_enable_flags_0:
 *                    Enable MGMT packet from 0b0000 to 0b1001
 *                    bits from low to high: FP, MD, MO - 3 bits
@@ -5714,7 +5731,8 @@ PREPACK struct htt_rx_ring_selection_cfg_t {
             config_length_mgmt:3,
             config_length_ctrl:3,
             config_length_data:3,
             rsvd2:             7;
             rx_hdr_len:        2,
             rsvd2:             5;
    A_UINT32 packet_type_enable_flags_0;
    A_UINT32 packet_type_enable_flags_1;
    A_UINT32 packet_type_enable_flags_2;
@@ -5877,6 +5895,16 @@ PREPACK struct htt_rx_ring_selection_cfg_t {
                ((_var) |= ((_val) << HTT_RX_RING_SELECTION_CFG_CONFIG_LENGTH_DATA_S)); \
            } while (0)
#define HTT_RX_RING_SELECTION_CFG_RX_HDR_LEN_M                 0x06000000
#define HTT_RX_RING_SELECTION_CFG_RX_HDR_LEN_S                 25
#define HTT_RX_RING_SELECTION_CFG_RX_HDR_LEN_GET(_var) \
                (((_var) & HTT_RX_RING_SELECTION_CFG_RX_HDR_LEN_M) >> \
                                      HTT_RX_RING_SELECTION_CFG_RX_HDR_LEN_S)
#define HTT_RX_RING_SELECTION_CFG_RX_HDR_LEN_SET(_var, _val) \
            do { \
                HTT_CHECK_SET_VAL( HTT_RX_RING_SELECTION_CFG_RX_HDR_LEN, _val); \
                ((_var) |= ((_val) << HTT_RX_RING_SELECTION_CFG_RX_HDR_LEN_S));\
            } while(0)
#define HTT_RX_RING_SELECTION_CFG_PKT_TYPE_ENABLE_FLAG_0_M     0xffffffff
#define HTT_RX_RING_SELECTION_CFG_PKT_TYPE_ENABLE_FLAG_0_S     0
@@ -6651,6 +6679,9 @@ PREPACK struct htt_rx_ring_selection_cfg_t {
#define HTT_RX_RING_SELECTION_CFG_TLV_FILTER_IN_FLAG_RX_PPDU_END_STATUS_DONE_M     0x00001000
#define HTT_RX_RING_SELECTION_CFG_TLV_FILTER_IN_FLAG_RX_PPDU_END_STATUS_DONE_S     12
#define HTT_RX_RING_SELECTION_CFG_TLV_FILTER_IN_FLAG_RX_PPDU_START_USER_INFO_M      0x00002000
#define HTT_RX_RING_SELECTION_CFG_TLV_FILTER_IN_FLAG_RX_PPDU_START_USER_INFO_S      13
#define HTT_RX_RING_TLV_ENABLE_SET(word, httsym, enable) \
            do { \
                HTT_CHECK_SET_VAL(httsym, enable); \
@@ -18126,6 +18157,14 @@ typedef struct {
    /* discarded tx msdus byte cnt coz of time to live expiry */
    A_UINT32 tx_msdu_ttl_expire_drop_byte_cnt_lo;
    A_UINT32 tx_msdu_ttl_expire_drop_byte_cnt_hi;
    /* TQM bypass frame cnt */
    A_UINT32 tqm_bypass_frame_cnt_lo;
    A_UINT32 tqm_bypass_frame_cnt_hi;
    /* TQM bypass byte cnt */
    A_UINT32 tqm_bypass_byte_cnt_lo;
    A_UINT32 tqm_bypass_byte_cnt_hi;
} htt_t2h_vdev_txrx_stats_hw_stats_tlv;
/*
+142 −3
Original line number Diff line number Diff line
@@ -1571,6 +1571,144 @@ typedef enum HTT_PPDU_STATS_RESP_PPDU_TYPE HTT_PPDU_STATS_RESP_PPDU_TYPE;
         ((_var) |= ((_val) << HTT_PPDU_STATS_USER_RATE_TLV_RESP_PPDU_TYPE_S)); \
     } while (0)

#define HTT_PPDU_STATS_USER_RATE_TLV_RU_FORMAT_M        0x0000f000
#define HTT_PPDU_STATS_USER_RATE_TLV_RU_FORMAT_S                12

#define HTT_PPDU_STATS_USER_RATE_TLV_RU_FORMAT_GET(_var) \
    (((_var) & HTT_PPDU_STATS_USER_RATE_TLV_RU_FORMAT_M) >> \
    HTT_PPDU_STATS_USER_RATE_TLV_RU_FORMAT_S)

#define HTT_PPDU_STATS_USER_RATE_TLV_RU_FORMAT_SET(_var, _val) \
     do { \
         HTT_CHECK_SET_VAL(HTT_PPDU_STATS_USER_RATE_TLV_RU_FORMAT, _val); \
         ((_var) |= ((_val) << HTT_PPDU_STATS_USER_RATE_TLV_RU_FORMAT_S)); \
     } while (0)


#define HTT_PPDU_STATS_USER_RATE_TLV_RU_END_M           0x0000ffff
#define HTT_PPDU_STATS_USER_RATE_TLV_RU_END_S                    0

#define HTT_PPDU_STATS_USER_RATE_TLV_RU_END_GET(_var) \
    (((_var) & HTT_PPDU_STATS_USER_RATE_TLV_RU_END_M) >> \
    HTT_PPDU_STATS_USER_RATE_TLV_RU_END_S)

#define HTT_PPDU_STATS_USER_RATE_TLV_RU_END_SET(_var, _val) \
     do { \
         HTT_CHECK_SET_VAL(HTT_PPDU_STATS_USER_RATE_TLV_RU_END, _val); \
         ((_var) |= ((_val) << HTT_PPDU_STATS_USER_RATE_TLV_RU_END_S)); \
     } while (0)


#define HTT_PPDU_STATS_USER_RATE_TLV_RU_START_M         0xffff0000
#define HTT_PPDU_STATS_USER_RATE_TLV_RU_START_S                 16

#define HTT_PPDU_STATS_USER_RATE_TLV_RU_START_GET(_var) \
    (((_var) & HTT_PPDU_STATS_USER_RATE_TLV_RU_START_M) >> \
    HTT_PPDU_STATS_USER_RATE_TLV_RU_START_S)

#define HTT_PPDU_STATS_USER_RATE_TLV_RU_START_SET(_var, _val) \
     do { \
         HTT_CHECK_SET_VAL(HTT_PPDU_STATS_USER_RATE_TLV_RU_START, _val); \
         ((_var) |= ((_val) << HTT_PPDU_STATS_USER_RATE_TLV_RU_START_S)); \
     } while (0)


#define HTT_PPDU_STATS_USER_RATE_TLV_RU_INDEX_M         0x0000ffff
#define HTT_PPDU_STATS_USER_RATE_TLV_RU_INDEX_S                  0

#define HTT_PPDU_STATS_USER_RATE_TLV_RU_INDEX_GET(_var) \
    (((_var) & HTT_PPDU_STATS_USER_RATE_TLV_RU_INDEX_M) >> \
    HTT_PPDU_STATS_USER_RATE_TLV_RU_INDEX_S)

#define HTT_PPDU_STATS_USER_RATE_TLV_RU_INDEX_SET(_var, _val) \
     do { \
         HTT_CHECK_SET_VAL(HTT_PPDU_STATS_USER_RATE_TLV_RU_INDEX, _val); \
         ((_var) |= ((_val) << HTT_PPDU_STATS_USER_RATE_TLV_RU_INDEX_S)); \
     } while (0)


#define HTT_PPDU_STATS_USER_RATE_TLV_RU_SIZE_M          0xffff0000
#define HTT_PPDU_STATS_USER_RATE_TLV_RU_SIZE_S                  16

#define HTT_PPDU_STATS_USER_RATE_TLV_RU_SIZE_GET(_var) \
    (((_var) & HTT_PPDU_STATS_USER_RATE_TLV_RU_SIZE_M) >> \
    HTT_PPDU_STATS_USER_RATE_TLV_RU_SIZE_S)

#define HTT_PPDU_STATS_USER_RATE_TLV_RU_SIZE_SET(_var, _val) \
     do { \
         HTT_CHECK_SET_VAL(HTT_PPDU_STATS_USER_RATE_TLV_RU_SIZE, _val); \
         ((_var) |= ((_val) << HTT_PPDU_STATS_USER_RATE_TLV_RU_SIZE_S)); \
     } while (0)


#define HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_END_M      0x0000ffff
#define HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_END_S               0

#define HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_END_GET(_var) \
    (((_var) & HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_END_M) >> \
    HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_END_S)

#define HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_END_SET(_var, _val) \
     do { \
         HTT_CHECK_SET_VAL(HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_END, _val); \
         ((_var) |= ((_val) << HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_END_S)); \
     } while (0)


#define HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_START_M    0xffff0000
#define HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_START_S            16

#define HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_START_GET(_var) \
    (((_var) & HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_START_M) >> \
    HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_START_S)

#define HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_START_SET(_var, _val) \
     do { \
         HTT_CHECK_SET_VAL(HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_START, _val); \
         ((_var) |= ((_val) << HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_START_S)); \
     } while (0)


#define HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_INDEX_M    0x0000ffff
#define HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_INDEX_S             0

#define HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_INDEX_GET(_var) \
    (((_var) & HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_INDEX_M) >> \
    HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_INDEX_S)

#define HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_INDEX_SET(_var, _val) \
     do { \
         HTT_CHECK_SET_VAL(HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_INDEX, _val); \
         ((_var) |= ((_val) << HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_INDEX_S)); \
     } while (0)


#define HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_SIZE_M     0xffff0000
#define HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_SIZE_S             16

#define HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_SIZE_GET(_var) \
    (((_var) & HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_SIZE_M) >> \
    HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_SIZE_S)

#define HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_SIZE_SET(_var, _val) \
     do { \
         HTT_CHECK_SET_VAL(HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_SIZE, _val); \
         ((_var) |= ((_val) << HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_SIZE_S)); \
     } while (0)

#define HTT_PPDU_STATS_USER_RATE_TLV_PUNC_PATTERN_BITMAP_M  0x0000ffff
#define HTT_PPDU_STATS_USER_RATE_TLV_PUNC_PATTERN_BITMAP_S           0

#define HTT_PPDU_STATS_USER_RATE_TLV_PUNC_PATTERN_BITMAP_GET(_var) \
    (((_var) & HTT_PPDU_STATS_USER_RATE_TLV_PUNC_PATTERN_BITMAP_M) >> \
    HTT_PPDU_STATS_USER_RATE_TLV_PUNC_PATTERN_BITMAP_S)

#define HTT_PPDU_STATS_USER_RATE_TLV_PUNC_PATTERN_BITMAP_SET (_var , _val) \
    do { \
        HTT_CHECK_SET_VAL(HTT_PPDU_STATS_USER_RATE_TLV_PUNC_PATTERN_BITMAP, _val); \
        ((_var) |= ((_val) << HTT_PPDU_STATS_USER_RATE_TLV_PUNC_PATTERN_BITMAP_S)); \
    } while (0)

typedef enum HTT_PPDU_STATS_RU_SIZE {
    HTT_PPDU_STATS_RU_26,
    HTT_PPDU_STATS_RU_52,
@@ -1754,10 +1892,11 @@ typedef struct {
    };

    /*
     * This is an unused word that can be safely renamed / used
     * by any future feature.
     * BIT [15:0]  :- Punctured BW bitmap pattern to indicate which BWs are
     *                punctured.
     */
    A_UINT32 reserved4;
    A_UINT32 punc_pattern_bitmap: 16,
             reserved4:           16;
} htt_ppdu_stats_user_rate_tlv;

#define HTT_PPDU_STATS_USR_RATE_VALID_M     0x80000000
+423 −21

File changed.

Preview size limit exceeded, changes collapsed.

+200 −2
Original line number Diff line number Diff line
/*
 * Copyright (c) 2013-2016, 2018-2021 The Linux Foundation. All rights reserved.*
 * Copyright (c) 2013-2016, 2018-2021 The Linux Foundation. All rights reserved.
 * Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
 *
 * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
 *
@@ -1313,7 +1314,7 @@ typedef enum {

/** MGMT RX REO Changes */
/* Macros for having versioning info for compatibility check between host and firmware */
#define MLO_SHMEM_MAJOR_VERSION 1
#define MLO_SHMEM_MAJOR_VERSION 2
#define MLO_SHMEM_MINOR_VERSION 1

/** Helper Macros for tlv header of the given tlv buffer */
@@ -1357,6 +1358,36 @@ typedef enum {
        (_var) |= (((_val) & ((1 << (_num_bits)) - 1)) << (_index)); \
    } while (0)

/**
 * Enum which defines different versions of management Rx reorder snapshots.
 */
typedef enum {
    /**
     * DWORD Lower:
     * [15:0]  : Management packet counter
     * [30:16] : Redundant global time stamp = Global time stamp[14:0]
     * [31]    : Valid
     *
     * DWORD Upper:
     * [31:0]  : Global time stamp
     *
     */
    MGMT_RX_REO_SNAPSHOT_VERSION_TIMESTAMP_REDUNDANCY = 0,

    /**
     * DWORD Lower:
     * [14:0]  : Global time stamp[14:0]
     * [30:15] : Management packet counter
     * [31]    : Valid
     *
     * DWORD Upper:
     * [14:0]  : Redundant management packet counter = Management packet
     *           counter[14:0]
     * [31:15] : Global time stamp[31:15]
     */
    MGMT_RX_REO_SNAPSHOT_VERSION_PKT_CTR_REDUNDANCY = 1,
} MGMT_RX_REO_SNAPSHOT_VERSION;

/** Definition of the GLB_H_SHMEM arena tlv structures */

typedef enum {
@@ -1400,6 +1431,152 @@ typedef enum {
#define MLO_SHMEM_MGMT_RX_REO_SNAPSHOT_GET_ADRESS(mgmt_rx_reo_snapshot) \
    (&mgmt_rx_reo_snapshot->mgmt_rx_reo_snapshot_low)

/**
 * Helper macros/functions for params GET/SET of different hw version
 * of the mgmt_rx_reo_snapshot
 */

static INLINE A_UINT8
MLO_SHMEM_MGMT_RX_REO_SNAPSHOT_VALID_GET(
    A_UINT32 mgmt_rx_reo_snapshot_low, A_UINT8 snapshot_ver)
{
    if ((snapshot_ver != MGMT_RX_REO_SNAPSHOT_VERSION_TIMESTAMP_REDUNDANCY) &&
        (snapshot_ver != MGMT_RX_REO_SNAPSHOT_VERSION_PKT_CTR_REDUNDANCY))
    {
        A_ASSERT(0);
    }

    return MLO_SHMEM_GET_BITS(mgmt_rx_reo_snapshot_low, 31, 1);
}

static INLINE void
MLO_SHMEM_MGMT_RX_REO_SNAPSHOT_VALID_SET(
    A_UINT32 *mgmt_rx_reo_snapshot_low, A_UINT8 value, A_UINT8 snapshot_ver)
{
    if ((snapshot_ver != MGMT_RX_REO_SNAPSHOT_VERSION_TIMESTAMP_REDUNDANCY) &&
        (snapshot_ver != MGMT_RX_REO_SNAPSHOT_VERSION_PKT_CTR_REDUNDANCY)) {
        A_ASSERT(0);
    }

    MLO_SHMEM_SET_BITS(*mgmt_rx_reo_snapshot_low, 31, 1, value);
}

static INLINE A_UINT16
MLO_SHMEM_MGMT_RX_REO_SNAPSHOT_MGMT_PKT_CTR_GET(
    A_UINT32 mgmt_rx_reo_snapshot_low, A_UINT8 snapshot_ver)
{
    if (snapshot_ver == MGMT_RX_REO_SNAPSHOT_VERSION_TIMESTAMP_REDUNDANCY) {
        return MLO_SHMEM_GET_BITS(mgmt_rx_reo_snapshot_low, 0, 16);
    } else if (snapshot_ver == MGMT_RX_REO_SNAPSHOT_VERSION_PKT_CTR_REDUNDANCY){
        return MLO_SHMEM_GET_BITS(mgmt_rx_reo_snapshot_low, 15, 16);
    } else {
        A_ASSERT(0);
        return 0;
    }
}

static INLINE void
MLO_SHMEM_MGMT_RX_REO_SNAPSHOT_MGMT_PKT_CTR_SET(
    A_UINT32 *mgmt_rx_reo_snapshot_low, A_UINT16 value, A_UINT8 snapshot_ver)
{
    if (snapshot_ver == MGMT_RX_REO_SNAPSHOT_VERSION_TIMESTAMP_REDUNDANCY) {
        MLO_SHMEM_SET_BITS(*mgmt_rx_reo_snapshot_low, 0, 16, value);
    } else if (snapshot_ver == MGMT_RX_REO_SNAPSHOT_VERSION_PKT_CTR_REDUNDANCY){
        MLO_SHMEM_SET_BITS(*mgmt_rx_reo_snapshot_low, 15, 16, value);
    } else {
        A_ASSERT(0);
    }
}

#define MLO_SHMEM_MGMT_RX_REO_SNAPSHOT_MGMT_PKT_CTR_REDUNDANT_GET( \
    mgmt_rx_reo_snapshot_high) \
    MLO_SHMEM_GET_BITS(mgmt_rx_reo_snapshot_high, 0, 15)
#define MLO_SHMEM_MGMT_RX_REO_SNAPSHOT_MGMT_PKT_CTR_REDUNDANT_SET( \
    mgmt_rx_reo_snapshot_high, value) \
    MLO_SHMEM_SET_BITS(mgmt_rx_reo_snapshot_high, 0, 15, value)

#define MLO_SHMEM_MGMT_RX_REO_SNAPSHOT_GLOBAL_TIMESTAMP_REDUNDANT_GET( \
    mgmt_rx_reo_snapshot_low) \
    MLO_SHMEM_GET_BITS(mgmt_rx_reo_snapshot_low, 16, 15)
#define MLO_SHMEM_MGMT_RX_REO_SNAPSHOT_GLOBAL_TIMESTAMP_REDUNDANT_SET( \
    mgmt_rx_reo_snapshot_low, value) \
    MLO_SHMEM_SET_BITS(mgmt_rx_reo_snapshot_low, 16, 15, value)

static INLINE A_UINT32
MLO_SHMEM_MGMT_RX_REO_SNAPSHOT_GLOBAL_TIMESTAMP_GET(
    A_UINT32 mgmt_rx_reo_snapshot_low,
    A_UINT32 mgmt_rx_reo_snapshot_high,
    A_UINT8 snapshot_ver)
{
    if (snapshot_ver == MGMT_RX_REO_SNAPSHOT_VERSION_TIMESTAMP_REDUNDANCY) {
        return mgmt_rx_reo_snapshot_high;
    } else if (snapshot_ver == MGMT_RX_REO_SNAPSHOT_VERSION_PKT_CTR_REDUNDANCY){
        return
            ((MLO_SHMEM_GET_BITS(mgmt_rx_reo_snapshot_high, 15, 17) << 15) |
             MLO_SHMEM_GET_BITS(mgmt_rx_reo_snapshot_low, 0, 15));
    } else {
        A_ASSERT(0);
        return 0;
    }
}

static INLINE void
MLO_SHMEM_MGMT_RX_REO_SNAPSHOT_GLOBAL_TIMESTAMP_SET(
    A_UINT32 *mgmt_rx_reo_snapshot_low,
    A_UINT32 *mgmt_rx_reo_snapshot_high,
    A_UINT32 value,
    A_UINT8 snapshot_ver)
{
    if (snapshot_ver == MGMT_RX_REO_SNAPSHOT_VERSION_TIMESTAMP_REDUNDANCY) {
        *mgmt_rx_reo_snapshot_high = value;
    } else if (snapshot_ver == MGMT_RX_REO_SNAPSHOT_VERSION_PKT_CTR_REDUNDANCY){
        MLO_SHMEM_SET_BITS(
            *mgmt_rx_reo_snapshot_high, 15, 17, ((value) >> 15));
        MLO_SHMEM_SET_BITS(
            *mgmt_rx_reo_snapshot_low, 0, 15, ((value) & 0x7fff));
    } else {
        A_ASSERT(0);
    }
}

static INLINE A_BOOL
MLO_SHMEM_MGMT_RX_REO_SNAPSHOT_CHECK_CONSISTENCY(
    A_UINT32 mgmt_rx_reo_snapshot_low,
    A_UINT32 mgmt_rx_reo_snapshot_high,
    A_UINT8 snapshot_ver)
{
    if (snapshot_ver == MGMT_RX_REO_SNAPSHOT_VERSION_TIMESTAMP_REDUNDANCY) {
        A_UINT32 global_timestamp;
        A_UINT32 global_timestamp_redundant;

        global_timestamp = MLO_SHMEM_MGMT_RX_REO_SNAPSHOT_GLOBAL_TIMESTAMP_GET(
            mgmt_rx_reo_snapshot_low, mgmt_rx_reo_snapshot_high, snapshot_ver);
        global_timestamp_redundant =
            MLO_SHMEM_MGMT_RX_REO_SNAPSHOT_GLOBAL_TIMESTAMP_REDUNDANT_GET(
                mgmt_rx_reo_snapshot_low);

        return
            (MLO_SHMEM_GET_BITS(global_timestamp, 0, 15) ==
             MLO_SHMEM_GET_BITS(global_timestamp_redundant, 0, 15));
    } else if (snapshot_ver == MGMT_RX_REO_SNAPSHOT_VERSION_PKT_CTR_REDUNDANCY){
        A_UINT16 mgmt_pkt_ctr;
        A_UINT16 mgmt_pkt_ctr_redundant;

        mgmt_pkt_ctr = MLO_SHMEM_MGMT_RX_REO_SNAPSHOT_MGMT_PKT_CTR_GET(
            mgmt_rx_reo_snapshot_low, snapshot_ver);
        mgmt_pkt_ctr_redundant =
            MLO_SHMEM_MGMT_RX_REO_SNAPSHOT_MGMT_PKT_CTR_REDUNDANT_GET(
                mgmt_rx_reo_snapshot_high);

        return
            (MLO_SHMEM_GET_BITS(mgmt_pkt_ctr, 0, 15) ==
             MLO_SHMEM_GET_BITS(mgmt_pkt_ctr_redundant, 0, 15));
    } else {
        A_ASSERT(0);
        return 0;
    }
}

/* REO snapshot structure */
typedef struct {
    /* TLV tag and len; tag equals MLO_SHMEM_TLV_STRUCT_MGMT_RX_REO_SNAPSHOT */
@@ -1452,6 +1629,15 @@ A_COMPILE_TIME_ASSERT(verify_mlo_glb_rx_reo_per_link_snapshot_fw_consumed_offset
#define MLO_SHMEM_GLB_RX_REO_SNAPSHOT_PARAM_VALID_LINK_BMAP_GET(link_info) MLO_SHMEM_GET_BITS(link_info, 4, 16)
#define MLO_SHMEM_GLB_RX_REO_SNAPSHOT_PARAM_VALID_LINK_BMAP_SET(link_info, value) MLO_SHMEM_SET_BITS(link_info, 4, 16, value)

#define MLO_SHMEM_GLB_RX_REO_SNAPSHOT_PARAM_HW_FWD_SNAPSHOT_VER_GET(snapshot_ver_info) MLO_SHMEM_GET_BITS(snapshot_ver_info, 0, 3)
#define MLO_SHMEM_GLB_RX_REO_SNAPSHOT_PARAM_HW_FWD_SNAPSHOT_VER_SET(snapshot_ver_info, value) MLO_SHMEM_SET_BITS(snapshot_ver_info, 0, 3, value)

#define MLO_SHMEM_GLB_RX_REO_SNAPSHOT_PARAM_FW_FWD_SNAPSHOT_VER_GET(snapshot_ver_info) MLO_SHMEM_GET_BITS(snapshot_ver_info, 3, 3)
#define MLO_SHMEM_GLB_RX_REO_SNAPSHOT_PARAM_FW_FWD_SNAPSHOT_VER_SET(snapshot_ver_info, value) MLO_SHMEM_SET_BITS(snapshot_ver_info, 3, 3, value)

#define MLO_SHMEM_GLB_RX_REO_SNAPSHOT_PARAM_FW_CONSUMED_SNAPSHOT_VER_GET(snapshot_ver_info) MLO_SHMEM_GET_BITS(snapshot_ver_info, 6, 3)
#define MLO_SHMEM_GLB_RX_REO_SNAPSHOT_PARAM_FW_CONSUMED_SNAPSHOT_VER_SET(snapshot_ver_info, value) MLO_SHMEM_SET_BITS(snapshot_ver_info, 6, 3, value)

/* Definition of the complete REO snapshot info */
typedef struct {
    /* TLV tag and len; tag equals MLO_SHMEM_TLV_STRUCT_MLO_GLB_RX_REO_SNAPSHOT_INFO */
@@ -1465,6 +1651,18 @@ typedef struct {
     * [31:20]: reserved
     */
    A_UINT32 link_info;

    /**
     * snapshot_ver_info
     *
     * [2:0]:  hw_forwarded snapshot version
     * [5:3]:  fw_forwarded snapshot version
     * [8:6]:  fw_consumed snapshot version
     * [31:9]: reserved
     */
    A_UINT32 snapshot_ver_info;
    A_UINT32 reserved_alignment_padding;

/*  This TLV is followed by array of mlo_glb_rx_reo_per_link_snapshot_info:
 *  mlo_glb_rx_reo_per_link_snapshot_info will have multiple instances
 *  equal to num of hw links received by no_of_link
+6 −0
Original line number Diff line number Diff line
@@ -581,6 +581,12 @@ typedef enum {
    WMI_SERVICE_DELETE_ALL_PEER_BITMAP_SUPPORT = 328, /* target supports cmd to delete all specific peer type within a vdev */
    WMI_SERVICE_PN_REPLAY_CHECK_SUPPORT = 329, /* FW support to check RX mgmt frames has invalid PN in packets */
    WMI_SERVICE_COMBINED_SET_PARAM_SUPPORT = 330, /* FW Supporting set param cmd combined for multiple params */
    WMI_SERVICE_PDEV_RSSI_DBM_CONV_EVENT_SUPPORT = 331, /* FW supports advertising RSSI dB to dBm conversion params to host via WMI_PDEV_RSSI_DBM_CONVERSION_PARAMS_INFO_EVENTID */
    WMI_SERVICE_PDEV_TELEMETRY_STATS_SUPPORT = 332,
    WMI_SERVICE_ROAM_STAT_PER_CANDIDATE_FRAME_INFO_SUPPORT = 333, /* FW supports to send frame info for each candidate in roam stat */
    WMI_SERVICE_HW_TX_POWER_CAPS_SIGNED_SUPPORT = 334, /* Indicates FW supports updating of Tx power capabilities as signed value */
    WMI_SERVICE_MULTI_CLIENT_LL_SUPPORT = 335, /* FW supports set param cmd combined for multiple params */
    WMI_SERVICE_AFC_PAYLOAD_CLEAR_SUPPORT = 336, /* FW supports clearing the AFC response payload in proxy mode */

    WMI_MAX_EXT2_SERVICE

Loading