diff options
| author | spuligil <spuligil@codeaurora.org> | 2019-01-02 11:57:58 -0800 |
|---|---|---|
| committer | spuligil <spuligil@codeaurora.org> | 2019-01-02 11:57:58 -0800 |
| commit | fc20150ab8228fb45f25fa6bf572e26951210525 (patch) | |
| tree | db7448f2f908628634a3763b045b6a3284aadc6b | |
| parent | f0d3d84988fdb31a0d4ec08ece4a55a43fc19cf4 (diff) | |
fw-api: CL 6106208 - update fw common interface files
Change-Id: I66eb37075bf69bf1b53ad504eba75557825854b4
HTT: add T2H PEER_STATS_IND message def
CRs-Fixed: 2262693
| -rw-r--r-- | fw/htt.h | 98 | ||||
| -rw-r--r-- | fw/htt_ppdu_stats.h | 25 | ||||
| -rwxr-xr-x | fw/wmi_services.h | 1 | ||||
| -rwxr-xr-x | fw/wmi_unified.h | 19 | ||||
| -rwxr-xr-x | fw/wmi_version.h | 2 |
5 files changed, 140 insertions, 5 deletions
@@ -174,9 +174,10 @@ * 3.57 Add support for in-band data within HTT_T2H_MSG_TYPE_CFR_DUMP_COMPL_IND * 3.58 Add optional MSDU ack RSSI array to end of HTT_T2H TX_COMPL_IND msg * 3.59 Add HTT_RXDMA_HOST_BUF_RING2 def + * 3.60 Add HTT_T2H_MSG_TYPE_PEER_STATS_IND def */ #define HTT_CURRENT_VERSION_MAJOR 3 -#define HTT_CURRENT_VERSION_MINOR 59 +#define HTT_CURRENT_VERSION_MINOR 60 #define HTT_NUM_TX_FRAG_DESC 1024 @@ -5603,6 +5604,7 @@ enum htt_t2h_msg_type { HTT_T2H_MSG_TYPE_MONITOR_MAC_HEADER_IND = 0x20, HTT_T2H_MSG_TYPE_FLOW_POOL_RESIZE = 0x21, HTT_T2H_MSG_TYPE_CFR_DUMP_COMPL_IND = 0x22, + HTT_T2H_MSG_TYPE_PEER_STATS_IND = 0x23, HTT_T2H_MSG_TYPE_TEST, /* keep this last */ @@ -11144,4 +11146,98 @@ PREPACK struct htt_cfr_dump_compl_ind { (((word) & HTT_T2H_CFR_DUMP_TYPE1_VDEV_ID_M) >> \ HTT_T2H_CFR_DUMP_TYPE1_VDEV_ID_S) + +/** + * @brief target -> host peer (PPDU) stats message + * HTT_T2H_MSG_TYPE_PEER_STATS_IND + * @details + * This message is generated by FW when FW is sending stats to host + * about one or more PPDUs that the FW has transmitted to one or more peers. + * This message is sent autonomously by the target rather than upon request + * by the host. + * The following field definitions describe the format of the HTT target + * to host peer stats indication message. + * + * The HTT_T2H PPDU_STATS_IND message has a header followed by one + * or more PPDU stats records. + * Each PPDU stats record uses a htt_tx_ppdu_stats_info TLV. + * If the details of N PPDUS are sent in one PEER_STATS_IND message, + * then the message would start with the + * header, followed by N htt_tx_ppdu_stats_info structures, as depicted + * below. + * + * |31 16|15|14|13 11|10 9|8|7 0| + * |-------------------------------------------------------------| + * | reserved |MSG_TYPE | + * |-------------------------------------------------------------| + * rec 0 | TLV header | + * rec 0 |-------------------------------------------------------------| + * rec 0 | ppdu successful bytes | + * rec 0 |-------------------------------------------------------------| + * rec 0 | ppdu retry bytes | + * rec 0 |-------------------------------------------------------------| + * rec 0 | ppdu failed bytes | + * rec 0 |-------------------------------------------------------------| + * rec 0 | peer id | S|SG| BW | BA |A|rate code| + * rec 0 |-------------------------------------------------------------| + * rec 0 | retried MSDUs | successful MSDUs | + * rec 0 |-------------------------------------------------------------| + * rec 0 | TX duration | failed MSDUs | + * rec 0 |-------------------------------------------------------------| + * ... + * |-------------------------------------------------------------| + * rec N | TLV header | + * rec N |-------------------------------------------------------------| + * rec N | ppdu successful bytes | + * rec N |-------------------------------------------------------------| + * rec N | ppdu retry bytes | + * rec N |-------------------------------------------------------------| + * rec N | ppdu failed bytes | + * rec N |-------------------------------------------------------------| + * rec N | peer id | S|SG| BW | BA |A|rate code| + * rec N |-------------------------------------------------------------| + * rec N | retried MSDUs | successful MSDUs | + * rec N |-------------------------------------------------------------| + * rec N | TX duration | failed MSDUs | + * rec N |-------------------------------------------------------------| + * + * where: + * A = is A-MPDU flag + * BA = block-ack failure flags + * BW = bandwidth spec + * SG = SGI enabled spec + * S = skipped rate ctrl + * One htt_tx_ppdu_stats_info instance will have stats for one PPDU + * + * Header + * ------ + * dword0 - b'0:7 - msg_type : HTT_T2H_MSG_TYPE_PEER_STATS_IND + * dword0 - b'8:31 - reserved : Reserved for future use + * + * payload include below peer_stats information + * -------------------------------------------- + * @TLV : HTT_PPDU_STATS_INFO_TLV + * @tx_success_bytes : total successful bytes in the PPDU. + * @tx_retry_bytes : total retried bytes in the PPDU. + * @tx_failed_bytes : total failed bytes in the PPDU. + * @tx_ratecode : rate code used for the PPDU. + * @is_ampdu : Indicates PPDU is AMPDU or not. + * @ba_ack_failed : BA/ACK failed for this PPDU + * b00 -> BA received + * b01 -> BA failed once + * b10 -> BA failed twice, when HW retry is enabled. + * @bw : BW + * b00 -> 20 MHz + * b01 -> 40 MHz + * b10 -> 80 MHz + * b11 -> 160 MHz (or 80+80) + * @sg : SGI enabled + * @s : skipped ratectrl + * @peer_id : peer id + * @tx_success_msdus : successful MSDUs + * @tx_retry_msdus : retried MSDUs + * @tx_failed_msdus : MSDUs dropped in FW after max retry + * @tx_duration : Tx duration for the PPDU (microsecond units) + */ + #endif diff --git a/fw/htt_ppdu_stats.h b/fw/htt_ppdu_stats.h index e88fcc3abeef..1ea2c7690ce1 100644 --- a/fw/htt_ppdu_stats.h +++ b/fw/htt_ppdu_stats.h @@ -114,6 +114,19 @@ typedef enum htt_ppdu_stats_tlv_tag htt_ppdu_stats_tlv_tag_t; ((_var) |= ((_val) << HTT_PPDU_STATS_ARRAY_ITEM_TLV_SGI_S)); \ } while (0) +#define HTT_PPDU_STATS_ARRAY_ITEM_TLV_SR_M 0x00008000 +#define HTT_PPDU_STATS_ARRAY_ITEM_TLV_SR_S 15 + +#define HTT_PPDU_STATS_ARRAY_ITEM_TLV_SR_GET(_var) \ + (((_var) & HTT_PPDU_STATS_ARRAY_ITEM_TLV_SR_M) >> \ + HTT_PPDU_STATS_ARRAY_ITEM_TLV_SR_S) + +#define HTT_PPDU_STATS_ARRAY_ITEM_TLV_SR_SET(_var, _val) \ + do { \ + HTT_CHECK_SET_VAL(HTT_PPDU_STATS_ARRAY_ITEM_TLV_SR, _val); \ + ((_var) |= ((_val) << HTT_PPDU_STATS_ARRAY_ITEM_TLV_SR_S)); \ + } while (0) + #define HTT_PPDU_STATS_ARRAY_ITEM_TLV_PEERID_M 0xffff0000 #define HTT_PPDU_STATS_ARRAY_ITEM_TLV_PEERID_S 16 @@ -193,13 +206,23 @@ PREPACK struct htt_tx_ppdu_stats_info { 3: 160 MHz or 80+80 MHz */ bw: 3, sgi: 1, - reserved0: 1, + skipped_rate_ctrl: 1, peer_id: 16; A_UINT32 tx_success_msdus: 16, tx_retry_msdus: 16; A_UINT32 tx_failed_msdus: 16, /* united in us */ tx_duration: 16; + /* + * 1 in bit 0 of valid_bitmap represents that bitmap itself is valid. + * If the bitmap is valid (i.e. bit 0 is set), then check the other bits + * of bitmap to know which fields within htt_tx_ppdu_stats_info are valid. + * If bit 1 is set, tx_success_bytes is valid + * If bit 2 is set, tx_retry_bytes is valid + * ... + * If bit 14 is set, tx_duration is valid + */ + A_UINT32 valid_bitmap; } POSTPACK; typedef struct { diff --git a/fw/wmi_services.h b/fw/wmi_services.h index fce99b263c87..7841d5a5ac0c 100755 --- a/fw/wmi_services.h +++ b/fw/wmi_services.h @@ -367,6 +367,7 @@ typedef enum { WMI_SERVICE_PEER_UNMAP_RESPONSE_SUPPORT = 182, /* support peer ids unmap response from host */ WMI_SERVICE_TX_PER_PEER_AMPDU_SIZE = 183, /* indicate FW support per peer TX AMPDU size */ WMI_SERVICE_BSS_COLOR_SWITCH_COUNT = 184, /* Firmware supports bss-color switch count handling */ + WMI_SERVICE_HTT_PEER_STATS_SUPPORT = 185, /* Supports the feature where FW sends peer stats autonomously to Host via the HTT_T2H PEER_STATS_IND message */ /******* ADD NEW SERVICES HERE *******/ diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 7620bb91c01d..0b51a33d4c01 100755 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -2895,6 +2895,14 @@ typedef struct { #define WMI_RSRC_CFG_FLAG_PEER_UNMAP_RESPONSE_SUPPORT_S 20 #define WMI_RSRC_CFG_FLAG_PEER_UNMAP_RESPONSE_SUPPORT_M 0x100000 + /* + * If this HTT_PEER_STATS is set, then the target should use the + * the HTT_T2H_MSG_TYPE_PEER_STATS_IND message to upload peer stats; + * else the target should avoid sending the PEER_STATS_IND message. + */ + #define WMI_RSRC_CFG_FLAG_HTT_PEER_STATS_S 21 + #define WMI_RSRC_CFG_FLAG_HTT_PEER_STATS_M 0x200000 + A_UINT32 flag1; /** @brief smart_ant_cap - Smart Antenna capabilities information @@ -3138,6 +3146,11 @@ typedef struct { #define WMI_RSRC_CFG_FLAG_PEER_UNMAP_RESPONSE_SUPPORT_GET(word32) \ WMI_RSRC_CFG_FLAG_GET((word32), PEER_UNMAP_RESPONSE_SUPPORT) +#define WMI_RSRC_CFG_FLAG_HTT_PEER_STATS_SET(word32, value) \ + WMI_RSRC_CFG_FLAG_SET((word32), HTT_PEER_STATS, (value)) +#define WMI_RSRC_CFG_FLAG_HTT_PEER_STATS_GET(word32) \ + WMI_RSRC_CFG_FLAG_GET((word32), HTT_PEER_STATS) + typedef struct { A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_init_cmd_fixed_param */ @@ -7473,7 +7486,7 @@ typedef struct { typedef struct { /** peer MAC address */ wmi_mac_addr peer_macaddr; - /* rx duration in microseconds*/ + /* lower 32 bits of rx duration in microseconds */ A_UINT32 rx_duration; /** Total TX bytes (including dot11 header) sent to peer */ A_UINT32 peer_tx_bytes; @@ -7486,7 +7499,9 @@ typedef struct { /* Total number of received multicast & broadcast data frames corresponding to this peer */ A_UINT32 rx_mc_bc_cnt; /* 1 in the MSB of rx_mc_bc_cnt represents a valid data */ - A_UINT32 reserved[3]; /** for future use - add new peer stats here */ + /* upper 32 bits of rx duration in microseconds */ + A_UINT32 rx_duration_u32; /* 1 in the most significant bit indicates this field contains valid data */ + A_UINT32 reserved[2]; /** for future use - add new peer stats here */ } wmi_peer_extd_stats; typedef struct { diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 2cf3bd89fb9c..335f04083022 100755 --- a/fw/wmi_version.h +++ b/fw/wmi_version.h @@ -36,7 +36,7 @@ #define __WMI_VER_MINOR_ 0 /** WMI revision number has to be incremented when there is a * change that may or may not break compatibility. */ -#define __WMI_REVISION_ 608 +#define __WMI_REVISION_ 609 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work |
