fw-api: CL 18643854 - update fw common interface files
HTT stats: add ML peer and link stats TLVs Change-Id: I797b4cf7cc2928aa7378b06b40ada9764ce761c0 CRs-Fixed: 2262693
This commit is contained in:
3
fw/htt.h
3
fw/htt.h
@@ -748,6 +748,9 @@ typedef enum {
|
|||||||
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_PDEV_PUNCTURE_STATS_TAG = 158, /* htt_pdev_puncture_stats_tlv */
|
||||||
|
HTT_STATS_ML_PEER_DETAILS_TAG = 159, /* htt_ml_peer_details_tlv */
|
||||||
|
HTT_STATS_ML_PEER_EXT_DETAILS_TAG = 160, /* htt_ml_peer_ext_details_tlv */
|
||||||
|
HTT_STATS_ML_LINK_INFO_DETAILS_TAG = 161, /* htt_ml_link_info_tlv */
|
||||||
|
|
||||||
|
|
||||||
HTT_STATS_MAX_TAG,
|
HTT_STATS_MAX_TAG,
|
||||||
|
483
fw/htt_stats.h
483
fw/htt_stats.h
@@ -451,6 +451,18 @@ enum htt_dbg_ext_stats_type {
|
|||||||
*/
|
*/
|
||||||
HTT_DBG_PDEV_PUNCTURE_STATS = 46,
|
HTT_DBG_PDEV_PUNCTURE_STATS = 46,
|
||||||
|
|
||||||
|
/* HTT_DBG_EXT_STATS_ML_PEERS_INFO
|
||||||
|
* PARAMS:
|
||||||
|
* - param 0:
|
||||||
|
* Bit 0 -> HTT_ML_PEER_DETAILS_TLV always enabled by default
|
||||||
|
* Bit 1 -> HTT_ML_PEER_EXT_DETAILS_TLV will be uploaded when
|
||||||
|
* this bit is set
|
||||||
|
* Bit 2 -> HTT_ML_LINK_INFO_TLV will be uploaded when this bit is set
|
||||||
|
* RESP MSG:
|
||||||
|
* - htt_ml_peer_stats_t
|
||||||
|
*/
|
||||||
|
HTT_DBG_EXT_STATS_ML_PEERS_INFO = 47,
|
||||||
|
|
||||||
|
|
||||||
/* keep this last */
|
/* keep this last */
|
||||||
HTT_DBG_NUM_EXT_STATS = 256,
|
HTT_DBG_NUM_EXT_STATS = 256,
|
||||||
@@ -1342,6 +1354,20 @@ typedef struct _htt_tx_tid_stats_v1_tlv {
|
|||||||
* BIT [31 : 16] :- reserved
|
* BIT [31 : 16] :- reserved
|
||||||
*/
|
*/
|
||||||
A_UINT32 sendn_frms_allowed;
|
A_UINT32 sendn_frms_allowed;
|
||||||
|
/*
|
||||||
|
* tid_ext_flags, tid_ext2_flags, and tid_flush_reason are opaque fields
|
||||||
|
* that cannot be interpreted by the host.
|
||||||
|
* They are only for off-line debug.
|
||||||
|
*/
|
||||||
|
A_UINT32 tid_ext_flags;
|
||||||
|
A_UINT32 tid_ext2_flags;
|
||||||
|
A_UINT32 tid_flush_reason;
|
||||||
|
A_UINT32 mlo_flush_tqm_status_pending_low;
|
||||||
|
A_UINT32 mlo_flush_tqm_status_pending_high;
|
||||||
|
A_UINT32 mlo_flush_partner_info_low;
|
||||||
|
A_UINT32 mlo_flush_partner_info_high;
|
||||||
|
A_UINT32 mlo_flush_initator_info_low;
|
||||||
|
A_UINT32 mlo_flush_initator_info_high;
|
||||||
} htt_tx_tid_stats_v1_tlv;
|
} htt_tx_tid_stats_v1_tlv;
|
||||||
|
|
||||||
#define HTT_RX_TID_STATS_SW_PEER_ID_M 0x0000ffff
|
#define HTT_RX_TID_STATS_SW_PEER_ID_M 0x0000ffff
|
||||||
@@ -1448,6 +1474,8 @@ typedef struct {
|
|||||||
#define HTT_PEER_DETAILS_ML_PEER_ID_VALID_S 0
|
#define HTT_PEER_DETAILS_ML_PEER_ID_VALID_S 0
|
||||||
#define HTT_PEER_DETAILS_ML_PEER_ID_M 0x00001ffe
|
#define HTT_PEER_DETAILS_ML_PEER_ID_M 0x00001ffe
|
||||||
#define HTT_PEER_DETAILS_ML_PEER_ID_S 1
|
#define HTT_PEER_DETAILS_ML_PEER_ID_S 1
|
||||||
|
#define HTT_PEER_DETAILS_LINK_IDX_M 0x001fe000
|
||||||
|
#define HTT_PEER_DETAILS_LINK_IDX_S 13
|
||||||
|
|
||||||
#define HTT_PEER_DETAILS_SET(word, httsym, val) \
|
#define HTT_PEER_DETAILS_SET(word, httsym, val) \
|
||||||
do { \
|
do { \
|
||||||
@@ -1475,7 +1503,8 @@ typedef struct {
|
|||||||
/* Dword 8 */
|
/* Dword 8 */
|
||||||
A_UINT32 ml_peer_id_valid : 1, /* [0:0] */
|
A_UINT32 ml_peer_id_valid : 1, /* [0:0] */
|
||||||
ml_peer_id : 12, /* [12:1] */
|
ml_peer_id : 12, /* [12:1] */
|
||||||
rsvd : 19; /* [31:13] */
|
link_idx : 8, /* [20:13] */
|
||||||
|
rsvd : 11; /* [31:21] */
|
||||||
} htt_peer_details_tlv;
|
} htt_peer_details_tlv;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
@@ -7582,4 +7611,456 @@ typedef struct {
|
|||||||
A_UINT32 num_subbands_used_cnt[HTT_PUNCTURE_STATS_MAX_SUBBAND_COUNT];
|
A_UINT32 num_subbands_used_cnt[HTT_PUNCTURE_STATS_MAX_SUBBAND_COUNT];
|
||||||
} htt_pdev_puncture_stats_tlv;
|
} htt_pdev_puncture_stats_tlv;
|
||||||
|
|
||||||
|
#define HTT_ML_PEER_EXT_DETAILS_PEER_ASSOC_IPC_RECVD_M 0x0000003F
|
||||||
|
#define HTT_ML_PEER_EXT_DETAILS_PEER_ASSOC_IPC_RECVD_S 0
|
||||||
|
#define HTT_ML_PEER_EXT_DETAILS_SCHED_PEER_DELETE_RECVD_M 0x00000FC0
|
||||||
|
#define HTT_ML_PEER_EXT_DETAILS_SCHED_PEER_DELETE_RECVD_S 6
|
||||||
|
#define HTT_ML_PEER_EXT_DETAILS_MLD_AST_INDEX_M 0x0FFFF000
|
||||||
|
#define HTT_ML_PEER_EXT_DETAILS_MLD_AST_INDEX_S 12
|
||||||
|
|
||||||
|
#define HTT_ML_PEER_EXT_DETAILS_PEER_ASSOC_IPC_RECVD_GET(_var) \
|
||||||
|
(((_var) & HTT_ML_PEER_EXT_DETAILS_PEER_ASSOC_IPC_RECVD_M) >> \
|
||||||
|
HTT_ML_PEER_EXT_DETAILS_PEER_ASSOC_IPC_RECVD_S)
|
||||||
|
|
||||||
|
#define HTT_ML_PEER_EXT_DETAILS_PEER_ASSOC_IPC_RECVD_SET(_var, _val) \
|
||||||
|
do { \
|
||||||
|
HTT_CHECK_SET_VAL(HTT_ML_PEER_EXT_DETAILS_PEER_ASSOC_IPC_RECVD, _val); \
|
||||||
|
((_var) &= ~(HTT_ML_PEER_EXT_DETAILS_PEER_ASSOC_IPC_RECVD_M)); \
|
||||||
|
((_var) |= ((_val) << HTT_ML_PEER_EXT_DETAILS_PEER_ASSOC_IPC_RECVD_S)); \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
|
#define HTT_ML_PEER_EXT_DETAILS_SCHED_PEER_DELETE_RECVD_GET(_var) \
|
||||||
|
(((_var) & HTT_ML_PEER_EXT_DETAILS_SCHED_PEER_DELETE_RECVD_M) >> \
|
||||||
|
HTT_ML_PEER_EXT_DETAILS_SCHED_PEER_DELETE_RECVD_S)
|
||||||
|
|
||||||
|
#define HTT_ML_PEER_EXT_DETAILS_SCHED_PEER_DELETE_RECVD_SET(_var, _val) \
|
||||||
|
do { \
|
||||||
|
HTT_CHECK_SET_VAL(HTT_ML_PEER_EXT_DETAILS_SCHED_PEER_DELETE_RECVD, _val); \
|
||||||
|
((_var) &= ~(HTT_ML_PEER_EXT_DETAILS_SCHED_PEER_DELETE_RECVD_M)); \
|
||||||
|
((_var) |= ((_val) << HTT_ML_PEER_EXT_DETAILS_SCHED_PEER_DELETE_RECVD_S)); \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
|
#define HTT_ML_PEER_EXT_DETAILS_MLD_AST_INDEX_GET(_var) \
|
||||||
|
(((_var) & HTT_ML_PEER_EXT_DETAILS_MLD_AST_INDEX_M) >> \
|
||||||
|
HTT_ML_PEER_EXT_DETAILS_MLD_AST_INDEX_S)
|
||||||
|
|
||||||
|
#define HTT_ML_PEER_EXT_DETAILS_MLD_AST_INDEX_SET(_var, _val) \
|
||||||
|
do { \
|
||||||
|
HTT_CHECK_SET_VAL(HTT_ML_PEER_EXT_DETAILS_MLD_AST_INDEX, _val); \
|
||||||
|
((_var) &= ~(HTT_ML_PEER_EXT_DETAILS_MLD_AST_INDEX_M)); \
|
||||||
|
((_var) |= ((_val) << HTT_ML_PEER_EXT_DETAILS_MLD_AST_INDEX_S)); \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
htt_tlv_hdr_t tlv_hdr;
|
||||||
|
union {
|
||||||
|
struct {
|
||||||
|
A_UINT32 peer_assoc_ipc_recvd : 6,
|
||||||
|
sched_peer_delete_recvd : 6,
|
||||||
|
mld_ast_index : 16,
|
||||||
|
reserved : 4;
|
||||||
|
};
|
||||||
|
A_UINT32 msg_dword_1;
|
||||||
|
};
|
||||||
|
} htt_ml_peer_ext_details_tlv;
|
||||||
|
|
||||||
|
#define HTT_ML_LINK_INFO_VALID_M 0x00000001
|
||||||
|
#define HTT_ML_LINK_INFO_VALID_S 0
|
||||||
|
#define HTT_ML_LINK_INFO_ACTIVE_M 0x00000002
|
||||||
|
#define HTT_ML_LINK_INFO_ACTIVE_S 1
|
||||||
|
#define HTT_ML_LINK_INFO_PRIMARY_M 0x00000004
|
||||||
|
#define HTT_ML_LINK_INFO_PRIMARY_S 2
|
||||||
|
#define HTT_ML_LINK_INFO_ASSOC_LINK_M 0x00000008
|
||||||
|
#define HTT_ML_LINK_INFO_ASSOC_LINK_S 3
|
||||||
|
#define HTT_ML_LINK_INFO_CHIP_ID_M 0x00000070
|
||||||
|
#define HTT_ML_LINK_INFO_CHIP_ID_S 4
|
||||||
|
#define HTT_ML_LINK_INFO_IEEE_LINK_ID_M 0x00007F80
|
||||||
|
#define HTT_ML_LINK_INFO_IEEE_LINK_ID_S 7
|
||||||
|
#define HTT_ML_LINK_INFO_HW_LINK_ID_M 0x00038000
|
||||||
|
#define HTT_ML_LINK_INFO_HW_LINK_ID_S 15
|
||||||
|
#define HTT_ML_LINK_INFO_LOGICAL_LINK_ID_M 0x000C0000
|
||||||
|
#define HTT_ML_LINK_INFO_LOGICAL_LINK_ID_S 18
|
||||||
|
#define HTT_ML_LINK_INFO_MASTER_LINK_M 0x00100000
|
||||||
|
#define HTT_ML_LINK_INFO_MASTER_LINK_S 20
|
||||||
|
#define HTT_ML_LINK_INFO_ANCHOR_LINK_M 0x00200000
|
||||||
|
#define HTT_ML_LINK_INFO_ANCHOR_LINK_S 21
|
||||||
|
#define HTT_ML_LINK_INFO_INITIALIZED_M 0x00400000
|
||||||
|
#define HTT_ML_LINK_INFO_INITIALIZED_S 22
|
||||||
|
|
||||||
|
#define HTT_ML_LINK_INFO_SW_PEER_ID_M 0x0000ffff
|
||||||
|
#define HTT_ML_LINK_INFO_SW_PEER_ID_S 0
|
||||||
|
#define HTT_ML_LINK_INFO_VDEV_ID_M 0x00ff0000
|
||||||
|
#define HTT_ML_LINK_INFO_VDEV_ID_S 16
|
||||||
|
|
||||||
|
#define HTT_ML_LINK_INFO_VALID_GET(_var) \
|
||||||
|
(((_var) & HTT_ML_LINK_INFO_VALID_M) >> \
|
||||||
|
HTT_ML_LINK_INFO_VALID_S)
|
||||||
|
|
||||||
|
#define HTT_ML_LINK_INFO_VALID_SET(_var, _val) \
|
||||||
|
do { \
|
||||||
|
HTT_CHECK_SET_VAL(HTT_ML_LINK_INFO_VALID, _val); \
|
||||||
|
((_var) &= ~(HTT_ML_LINK_INFO_VALID_M)); \
|
||||||
|
((_var) |= ((_val) << HTT_ML_LINK_INFO_VALID_S)); \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
|
#define HTT_ML_LINK_INFO_ACTIVE_GET(_var) \
|
||||||
|
(((_var) & HTT_ML_LINK_INFO_ACTIVE_M) >> \
|
||||||
|
HTT_ML_LINK_INFO_ACTIVE_S)
|
||||||
|
|
||||||
|
#define HTT_ML_LINK_INFO_ACTIVE_SET(_var, _val) \
|
||||||
|
do { \
|
||||||
|
HTT_CHECK_SET_VAL(HTT_ML_LINK_INFO_ACTIVE, _val); \
|
||||||
|
((_var) &= ~(HTT_ML_LINK_INFO_ACTIVE_M)); \
|
||||||
|
((_var) |= ((_val) << HTT_ML_LINK_INFO_ACTIVE_S)); \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
|
#define HTT_ML_LINK_INFO_PRIMARY_GET(_var) \
|
||||||
|
(((_var) & HTT_ML_LINK_INFO_PRIMARY_M) >> \
|
||||||
|
HTT_ML_LINK_INFO_PRIMARY_S)
|
||||||
|
|
||||||
|
#define HTT_ML_LINK_INFO_PRIMARY_SET(_var, _val) \
|
||||||
|
do { \
|
||||||
|
HTT_CHECK_SET_VAL(HTT_ML_LINK_INFO_PRIMARY, _val); \
|
||||||
|
((_var) &= ~(HTT_ML_LINK_INFO_PRIMARY_M)); \
|
||||||
|
((_var) |= ((_val) << HTT_ML_LINK_INFO_PRIMARY_S)); \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
|
#define HTT_ML_LINK_INFO_ASSOC_LINK_GET(_var) \
|
||||||
|
(((_var) & HTT_ML_LINK_INFO_ASSOC_LINK_M) >> \
|
||||||
|
HTT_ML_LINK_INFO_ASSOC_LINK_S)
|
||||||
|
|
||||||
|
#define HTT_ML_LINK_INFO_ASSOC_LINK_SET(_var, _val) \
|
||||||
|
do { \
|
||||||
|
HTT_CHECK_SET_VAL(HTT_ML_LINK_INFO_ASSOC_LINK, _val); \
|
||||||
|
((_var) &= ~(HTT_ML_LINK_INFO_ASSOC_LINK_M)); \
|
||||||
|
((_var) |= ((_val) << HTT_ML_LINK_INFO_ASSOC_LINK_S)); \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
|
#define HTT_ML_LINK_INFO_CHIP_ID_GET(_var) \
|
||||||
|
(((_var) & HTT_ML_LINK_INFO_CHIP_ID_M) >> \
|
||||||
|
HTT_ML_LINK_INFO_CHIP_ID_S)
|
||||||
|
|
||||||
|
#define HTT_ML_LINK_INFO_CHIP_ID_SET(_var, _val) \
|
||||||
|
do { \
|
||||||
|
HTT_CHECK_SET_VAL(HTT_ML_LINK_INFO_CHIP_ID, _val); \
|
||||||
|
((_var) &= ~(HTT_ML_LINK_INFO_CHIP_ID_M)); \
|
||||||
|
((_var) |= ((_val) << HTT_ML_LINK_INFO_CHIP_ID_S)); \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
|
#define HTT_ML_LINK_INFO_IEEE_LINK_ID_GET(_var) \
|
||||||
|
(((_var) & HTT_ML_LINK_INFO_IEEE_LINK_ID_M) >> \
|
||||||
|
HTT_ML_LINK_INFO_IEEE_LINK_ID_S)
|
||||||
|
|
||||||
|
#define HTT_ML_LINK_INFO_IEEE_LINK_ID_SET(_var, _val) \
|
||||||
|
do { \
|
||||||
|
HTT_CHECK_SET_VAL(HTT_ML_LINK_INFO_IEEE_LINK_ID, _val); \
|
||||||
|
((_var) &= ~(HTT_ML_LINK_INFO_IEEE_LINK_ID_M)); \
|
||||||
|
((_var) |= ((_val) << HTT_ML_LINK_INFO_IEEE_LINK_ID_S)); \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
|
#define HTT_ML_LINK_INFO_HW_LINK_ID_GET(_var) \
|
||||||
|
(((_var) & HTT_ML_LINK_INFO_HW_LINK_ID_M) >> \
|
||||||
|
HTT_ML_LINK_INFO_HW_LINK_ID_S)
|
||||||
|
|
||||||
|
#define HTT_ML_LINK_INFO_HW_LINK_ID_SET(_var, _val) \
|
||||||
|
do { \
|
||||||
|
HTT_CHECK_SET_VAL(HTT_ML_LINK_INFO_HW_LINK_ID, _val); \
|
||||||
|
((_var) &= ~(HTT_ML_LINK_INFO_HW_LINK_ID_M)); \
|
||||||
|
((_var) |= ((_val) << HTT_ML_LINK_INFO_HW_LINK_ID_S)); \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
|
#define HTT_ML_LINK_INFO_LOGICAL_LINK_ID_GET(_var) \
|
||||||
|
(((_var) & HTT_ML_LINK_INFO_LOGICAL_LINK_ID_M) >> \
|
||||||
|
HTT_ML_LINK_INFO_LOGICAL_LINK_ID_S)
|
||||||
|
|
||||||
|
#define HTT_ML_LINK_INFO_LOGICAL_LINK_ID_SET(_var, _val) \
|
||||||
|
do { \
|
||||||
|
HTT_CHECK_SET_VAL(HTT_ML_LINK_INFO_LOGICAL_LINK_ID, _val); \
|
||||||
|
((_var) &= ~(HTT_ML_LINK_INFO_LOGICAL_LINK_ID_M)); \
|
||||||
|
((_var) |= ((_val) << HTT_ML_LINK_INFO_LOGICAL_LINK_ID_S)); \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
|
#define HTT_ML_LINK_INFO_MASTER_LINK_GET(_var) \
|
||||||
|
(((_var) & HTT_ML_LINK_INFO_MASTER_LINK_M) >> \
|
||||||
|
HTT_ML_LINK_INFO_MASTER_LINK_S)
|
||||||
|
|
||||||
|
#define HTT_ML_LINK_INFO_MASTER_LINK_SET(_var, _val) \
|
||||||
|
do { \
|
||||||
|
HTT_CHECK_SET_VAL(HTT_ML_LINK_INFO_MASTER_LINK, _val); \
|
||||||
|
((_var) &= ~(HTT_ML_LINK_INFO_MASTER_LINK_M)); \
|
||||||
|
((_var) |= ((_val) << HTT_ML_LINK_INFO_MASTER_LINK_S)); \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
|
#define HTT_ML_LINK_INFO_ANCHOR_LINK_GET(_var) \
|
||||||
|
(((_var) & HTT_ML_LINK_INFO_ANCHOR_LINK_M) >> \
|
||||||
|
HTT_ML_LINK_INFO_ANCHOR_LINK_S)
|
||||||
|
|
||||||
|
#define HTT_ML_LINK_INFO_ANCHOR_LINK_SET(_var, _val) \
|
||||||
|
do { \
|
||||||
|
HTT_CHECK_SET_VAL(HTT_ML_LINK_INFO_ANCHOR_LINK, _val); \
|
||||||
|
((_var) &= ~(HTT_ML_LINK_INFO_ANCHOR_LINK_M)); \
|
||||||
|
((_var) |= ((_val) << HTT_ML_LINK_INFO_ANCHOR_LINK_S)); \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
|
#define HTT_ML_LINK_INFO_INITIALIZED_GET(_var) \
|
||||||
|
(((_var) & HTT_ML_LINK_INFO_INITIALIZED_M) >> \
|
||||||
|
HTT_ML_LINK_INFO_INITIALIZED_S)
|
||||||
|
|
||||||
|
#define HTT_ML_LINK_INFO_INITIALIZED_SET(_var, _val) \
|
||||||
|
do { \
|
||||||
|
HTT_CHECK_SET_VAL(HTT_ML_LINK_INFO_INITIALIZED, _val); \
|
||||||
|
((_var) &= ~(HTT_ML_LINK_INFO_INITIALIZED_M)); \
|
||||||
|
((_var) |= ((_val) << HTT_ML_LINK_INFO_INITIALIZED_S)); \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
|
#define HTT_ML_LINK_INFO_SW_PEER_ID_GET(_var) \
|
||||||
|
(((_var) & HTT_ML_LINK_INFO_SW_PEER_ID_M) >> \
|
||||||
|
HTT_ML_LINK_INFO_SW_PEER_ID_S)
|
||||||
|
|
||||||
|
#define HTT_ML_LINK_INFO_SW_PEER_ID_SET(_var, _val) \
|
||||||
|
do { \
|
||||||
|
HTT_CHECK_SET_VAL(HTT_ML_LINK_INFO_SW_PEER_ID, _val); \
|
||||||
|
((_var) &= ~(HTT_ML_LINK_INFO_SW_PEER_ID_M)); \
|
||||||
|
((_var) |= ((_val) << HTT_ML_LINK_INFO_SW_PEER_ID_S)); \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
|
#define HTT_ML_LINK_INFO_VDEV_ID_GET(_var) \
|
||||||
|
(((_var) & HTT_ML_LINK_INFO_VDEV_ID_M) >> \
|
||||||
|
HTT_ML_LINK_INFO_VDEV_ID_S)
|
||||||
|
|
||||||
|
#define HTT_ML_LINK_INFO_VDEV_ID_SET(_var, _val) \
|
||||||
|
do { \
|
||||||
|
HTT_CHECK_SET_VAL(HTT_ML_LINK_INFO_VDEV_ID, _val); \
|
||||||
|
((_var) &= ~(HTT_ML_LINK_INFO_VDEV_ID_M)); \
|
||||||
|
((_var) |= ((_val) << HTT_ML_LINK_INFO_VDEV_ID_S)); \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
htt_tlv_hdr_t tlv_hdr;
|
||||||
|
union {
|
||||||
|
struct {
|
||||||
|
A_UINT32 valid : 1,
|
||||||
|
active : 1,
|
||||||
|
primary : 1,
|
||||||
|
assoc_link : 1,
|
||||||
|
chip_id : 3,
|
||||||
|
ieee_link_id : 8,
|
||||||
|
hw_link_id : 3,
|
||||||
|
logical_link_id : 2,
|
||||||
|
master_link : 1,
|
||||||
|
anchor_link : 1,
|
||||||
|
initialized : 1,
|
||||||
|
reserved : 9;
|
||||||
|
};
|
||||||
|
A_UINT32 msg_dword_1;
|
||||||
|
};
|
||||||
|
|
||||||
|
union {
|
||||||
|
struct {
|
||||||
|
A_UINT32 sw_peer_id : 16,
|
||||||
|
vdev_id : 8,
|
||||||
|
reserved1 : 8;
|
||||||
|
};
|
||||||
|
A_UINT32 msg_dword_2;
|
||||||
|
};
|
||||||
|
|
||||||
|
A_UINT32 primary_tid_mask;
|
||||||
|
} htt_ml_link_info_tlv;
|
||||||
|
|
||||||
|
#define HTT_ML_PEER_DETAILS_NUM_LINKS_M 0x00000003
|
||||||
|
#define HTT_ML_PEER_DETAILS_NUM_LINKS_S 0
|
||||||
|
#define HTT_ML_PEER_DETAILS_ML_PEER_ID_M 0x00003FFC
|
||||||
|
#define HTT_ML_PEER_DETAILS_ML_PEER_ID_S 2
|
||||||
|
#define HTT_ML_PEER_DETAILS_PRIMARY_LINK_IDX_M 0x0001C000
|
||||||
|
#define HTT_ML_PEER_DETAILS_PRIMARY_LINK_IDX_S 14
|
||||||
|
#define HTT_ML_PEER_DETAILS_PRIMARY_CHIP_ID_M 0x00060000
|
||||||
|
#define HTT_ML_PEER_DETAILS_PRIMARY_CHIP_ID_S 17
|
||||||
|
#define HTT_ML_PEER_DETAILS_LINK_INIT_COUNT_M 0x00380000
|
||||||
|
#define HTT_ML_PEER_DETAILS_LINK_INIT_COUNT_S 19
|
||||||
|
#define HTT_ML_PEER_DETAILS_NON_STR_M 0x00400000
|
||||||
|
#define HTT_ML_PEER_DETAILS_NON_STR_S 22
|
||||||
|
#define HTT_ML_PEER_DETAILS_EMLSR_M 0x00800000
|
||||||
|
#define HTT_ML_PEER_DETAILS_EMLSR_S 23
|
||||||
|
#define HTT_ML_PEER_DETAILS_IS_STA_KO_M 0x01000000
|
||||||
|
#define HTT_ML_PEER_DETAILS_IS_STA_KO_S 24
|
||||||
|
#define HTT_ML_PEER_DETAILS_NUM_LOCAL_LINKS_M 0x06000000
|
||||||
|
#define HTT_ML_PEER_DETAILS_NUM_LOCAL_LINKS_S 25
|
||||||
|
#define HTT_ML_PEER_DETAILS_ALLOCATED_M 0x08000000
|
||||||
|
#define HTT_ML_PEER_DETAILS_ALLOCATED_S 27
|
||||||
|
|
||||||
|
#define HTT_ML_PEER_DETAILS_PARTICIPATING_CHIPS_BITMAP_M 0x000000ff
|
||||||
|
#define HTT_ML_PEER_DETAILS_PARTICIPATING_CHIPS_BITMAP_S 0
|
||||||
|
|
||||||
|
#define HTT_ML_PEER_DETAILS_NUM_LINKS_GET(_var) \
|
||||||
|
(((_var) & HTT_ML_PEER_DETAILS_NUM_LINKS_M) >> \
|
||||||
|
HTT_ML_PEER_DETAILS_NUM_LINKS_S)
|
||||||
|
|
||||||
|
#define HTT_ML_PEER_DETAILS_NUM_LINKS_SET(_var, _val) \
|
||||||
|
do { \
|
||||||
|
HTT_CHECK_SET_VAL(HTT_ML_PEER_DETAILS_NUM_LINKS, _val); \
|
||||||
|
((_var) &= ~(HTT_ML_PEER_DETAILS_NUM_LINKS_M)); \
|
||||||
|
((_var) |= ((_val) << HTT_ML_PEER_DETAILS_NUM_LINKS_S)); \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
|
#define HTT_ML_PEER_DETAILS_ML_PEER_ID_GET(_var) \
|
||||||
|
(((_var) & HTT_ML_PEER_DETAILS_ML_PEER_ID_M) >> \
|
||||||
|
HTT_ML_PEER_DETAILS_ML_PEER_ID_S)
|
||||||
|
|
||||||
|
#define HTT_ML_PEER_DETAILS_ML_PEER_ID_SET(_var, _val) \
|
||||||
|
do { \
|
||||||
|
HTT_CHECK_SET_VAL(HTT_ML_PEER_DETAILS_ML_PEER_ID, _val); \
|
||||||
|
((_var) &= ~(HTT_ML_PEER_DETAILS_ML_PEER_ID_M)); \
|
||||||
|
((_var) |= ((_val) << HTT_ML_PEER_DETAILS_ML_PEER_ID_S)); \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
|
#define HTT_ML_PEER_DETAILS_PRIMARY_LINK_IDX_GET(_var) \
|
||||||
|
(((_var) & HTT_ML_PEER_DETAILS_PRIMARY_LINK_IDX_M) >> \
|
||||||
|
HTT_ML_PEER_DETAILS_PRIMARY_LINK_IDX_S)
|
||||||
|
|
||||||
|
#define HTT_ML_PEER_DETAILS_PRIMARY_LINK_IDX_SET(_var, _val) \
|
||||||
|
do { \
|
||||||
|
HTT_CHECK_SET_VAL(HTT_ML_PEER_DETAILS_PRIMARY_LINK_IDX, _val); \
|
||||||
|
((_var) &= ~(HTT_ML_PEER_DETAILS_PRIMARY_LINK_IDX_M)); \
|
||||||
|
((_var) |= ((_val) << HTT_ML_PEER_DETAILS_PRIMARY_LINK_IDX_S)); \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
|
#define HTT_ML_PEER_DETAILS_PRIMARY_CHIP_ID_GET(_var) \
|
||||||
|
(((_var) & HTT_ML_PEER_DETAILS_PRIMARY_CHIP_ID_M) >> \
|
||||||
|
HTT_ML_PEER_DETAILS_PRIMARY_CHIP_ID_S)
|
||||||
|
|
||||||
|
#define HTT_ML_PEER_DETAILS_PRIMARY_CHIP_ID_SET(_var, _val) \
|
||||||
|
do { \
|
||||||
|
HTT_CHECK_SET_VAL(HTT_ML_PEER_DETAILS_PRIMARY_CHIP_ID, _val); \
|
||||||
|
((_var) &= ~(HTT_ML_PEER_DETAILS_PRIMARY_CHIP_ID_M)); \
|
||||||
|
((_var) |= ((_val) << HTT_ML_PEER_DETAILS_PRIMARY_CHIP_ID_S)); \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
|
#define HTT_ML_PEER_DETAILS_LINK_INIT_COUNT_GET(_var) \
|
||||||
|
(((_var) & HTT_ML_PEER_DETAILS_LINK_INIT_COUNT_M) >> \
|
||||||
|
HTT_ML_PEER_DETAILS_LINK_INIT_COUNT_S)
|
||||||
|
|
||||||
|
#define HTT_ML_PEER_DETAILS_LINK_INIT_COUNT_SET(_var, _val) \
|
||||||
|
do { \
|
||||||
|
HTT_CHECK_SET_VAL(HTT_ML_PEER_DETAILS_LINK_INIT_COUNT, _val); \
|
||||||
|
((_var) &= ~(HTT_ML_PEER_DETAILS_LINK_INIT_COUNT_M)); \
|
||||||
|
((_var) |= ((_val) << HTT_ML_PEER_DETAILS_LINK_INIT_COUNT_S)); \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
|
#define HTT_ML_PEER_DETAILS_NON_STR_GET(_var) \
|
||||||
|
(((_var) & HTT_ML_PEER_DETAILS_NON_STR_M) >> \
|
||||||
|
HTT_ML_PEER_DETAILS_NON_STR_S)
|
||||||
|
|
||||||
|
#define HTT_ML_PEER_DETAILS_NON_STR_SET(_var, _val) \
|
||||||
|
do { \
|
||||||
|
HTT_CHECK_SET_VAL(HTT_ML_PEER_DETAILS_NON_STR, _val); \
|
||||||
|
((_var) &= ~(HTT_ML_PEER_DETAILS_NON_STR_M)); \
|
||||||
|
((_var) |= ((_val) << HTT_ML_PEER_DETAILS_NON_STR_S)); \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
|
#define HTT_ML_PEER_DETAILS_EMLSR_GET(_var) \
|
||||||
|
(((_var) & HTT_ML_PEER_DETAILS_EMLSR_M) >> \
|
||||||
|
HTT_ML_PEER_DETAILS_EMLSR_S)
|
||||||
|
|
||||||
|
#define HTT_ML_PEER_DETAILS_EMLSR_SET(_var, _val) \
|
||||||
|
do { \
|
||||||
|
HTT_CHECK_SET_VAL(HTT_ML_PEER_DETAILS_EMLSR, _val); \
|
||||||
|
((_var) &= ~(HTT_ML_PEER_DETAILS_EMLSR_M)); \
|
||||||
|
((_var) |= ((_val) << HTT_ML_PEER_DETAILS_EMLSR_S)); \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
|
#define HTT_ML_PEER_DETAILS_IS_STA_KO_GET(_var) \
|
||||||
|
(((_var) & HTT_ML_PEER_DETAILS_IS_STA_KO_M) >> \
|
||||||
|
HTT_ML_PEER_DETAILS_IS_STA_KO_S)
|
||||||
|
|
||||||
|
#define HTT_ML_PEER_DETAILS_IS_STA_KO_SET(_var, _val) \
|
||||||
|
do { \
|
||||||
|
HTT_CHECK_SET_VAL(HTT_ML_PEER_DETAILS_IS_STA_KO, _val); \
|
||||||
|
((_var) &= ~(HTT_ML_PEER_DETAILS_IS_STA_KO_M)); \
|
||||||
|
((_var) |= ((_val) << HTT_ML_PEER_DETAILS_IS_STA_KO_S)); \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
|
#define HTT_ML_PEER_DETAILS_NUM_LOCAL_LINKS_GET(_var) \
|
||||||
|
(((_var) & HTT_ML_PEER_DETAILS_NUM_LOCAL_LINKS_M) >> \
|
||||||
|
HTT_ML_PEER_DETAILS_NUM_LOCAL_LINKS_S)
|
||||||
|
|
||||||
|
#define HTT_ML_PEER_DETAILS_NUM_LOCAL_LINKS_SET(_var, _val) \
|
||||||
|
do { \
|
||||||
|
HTT_CHECK_SET_VAL(HTT_ML_PEER_DETAILS_NUM_LOCAL_LINKS, _val); \
|
||||||
|
((_var) &= ~(HTT_ML_PEER_DETAILS_NUM_LOCAL_LINKS_M)); \
|
||||||
|
((_var) |= ((_val) << HTT_ML_PEER_DETAILS_NUM_LOCAL_LINKS_S)); \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
|
#define HTT_ML_PEER_DETAILS_ALLOCATED_GET(_var) \
|
||||||
|
(((_var) & HTT_ML_PEER_DETAILS_ALLOCATED_M) >> \
|
||||||
|
HTT_ML_PEER_DETAILS_ALLOCATED_S)
|
||||||
|
|
||||||
|
#define HTT_ML_PEER_DETAILS_ALLOCATED_SET(_var, _val) \
|
||||||
|
do { \
|
||||||
|
HTT_CHECK_SET_VAL(HTT_ML_PEER_DETAILS_ALLOCATED, _val); \
|
||||||
|
((_var) &= ~(HTT_ML_PEER_DETAILS_ALLOCATED_M)); \
|
||||||
|
((_var) |= ((_val) << HTT_ML_PEER_DETAILS_ALLOCATED_S)); \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
|
#define HTT_ML_PEER_DETAILS_PARTICIPATING_CHIPS_BITMAP_GET(_var) \
|
||||||
|
(((_var) & HTT_ML_PEER_DETAILS_PARTICIPATING_CHIPS_BITMAP_M) >> \
|
||||||
|
HTT_ML_PEER_DETAILS_PARTICIPATING_CHIPS_BITMAP_S)
|
||||||
|
|
||||||
|
#define HTT_ML_PEER_DETAILS_PARTICIPATING_CHIPS_BITMAP_SET(_var, _val) \
|
||||||
|
do { \
|
||||||
|
HTT_CHECK_SET_VAL(HTT_ML_PEER_DETAILS_PARTICIPATING_CHIPS_BITMAP, _val); \
|
||||||
|
((_var) &= ~(HTT_ML_PEER_DETAILS_PARTICIPATING_CHIPS_BITMAP_M)); \
|
||||||
|
((_var) |= ((_val) << HTT_ML_PEER_DETAILS_PARTICIPATING_CHIPS_BITMAP_S)); \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
htt_tlv_hdr_t tlv_hdr;
|
||||||
|
htt_mac_addr remote_mld_mac_addr;
|
||||||
|
union {
|
||||||
|
struct {
|
||||||
|
A_UINT32 num_links : 2,
|
||||||
|
ml_peer_id : 12,
|
||||||
|
primary_link_idx : 3,
|
||||||
|
primary_chip_id : 2,
|
||||||
|
link_init_count : 3,
|
||||||
|
non_str : 1,
|
||||||
|
emlsr : 1,
|
||||||
|
is_sta_ko : 1,
|
||||||
|
num_local_links : 2,
|
||||||
|
allocated : 1,
|
||||||
|
reserved : 4;
|
||||||
|
};
|
||||||
|
A_UINT32 msg_dword_1;
|
||||||
|
};
|
||||||
|
|
||||||
|
union {
|
||||||
|
struct {
|
||||||
|
A_UINT32 participating_chips_bitmap : 8,
|
||||||
|
reserved1 : 24;
|
||||||
|
};
|
||||||
|
A_UINT32 msg_dword_2;
|
||||||
|
};
|
||||||
|
/*
|
||||||
|
* ml_peer_flags is an opaque field that cannot be interpreted by
|
||||||
|
* the host; it is only for off-line debug.
|
||||||
|
*/
|
||||||
|
A_UINT32 ml_peer_flags;
|
||||||
|
} htt_ml_peer_details_tlv;
|
||||||
|
|
||||||
|
/* STATS_TYPE : HTT_DBG_EXT_STATS_ML_PEERS_INFO
|
||||||
|
* TLV_TAGS:
|
||||||
|
* - HTT_STATS_ML_PEER_DETAILS_TAG
|
||||||
|
* - HTT_STATS_ML_LINK_INFO_DETAILS_TAG
|
||||||
|
* - HTT_STATS_ML_PEER_EXT_DETAILS_TAG (multiple)
|
||||||
|
*/
|
||||||
|
/* NOTE:
|
||||||
|
* This structure is for documentation, and cannot be safely used directly.
|
||||||
|
* Instead, use the constituent TLV structures to fill/parse.
|
||||||
|
*/
|
||||||
|
typedef struct _htt_ml_peer_stats {
|
||||||
|
htt_ml_peer_details_tlv ml_peer_details;
|
||||||
|
htt_ml_peer_ext_details_tlv ml_peer_ext_details;
|
||||||
|
htt_ml_link_info_tlv ml_link_info[];
|
||||||
|
} htt_ml_peer_stats_t;
|
||||||
|
|
||||||
|
|
||||||
#endif /* __HTT_STATS_H__ */
|
#endif /* __HTT_STATS_H__ */
|
||||||
|
Reference in New Issue
Block a user