diff options
| author | Manjeet Singh <manjee@codeaurora.org> | 2016-12-14 20:07:50 +0530 |
|---|---|---|
| committer | Ashish kumar goswami <agoswa@codeaurora.org> | 2016-12-19 18:42:47 +0530 |
| commit | 2ce10f307f5c15bdf9edcccc4088a473223fd8ec (patch) | |
| tree | d7bc5a01e2d21cc42bf16dfa2595c243a85831f9 | |
| parent | 524bda0ed291229cac397b85037a7b4f3ad01492 (diff) | |
qcacld-2.0: CL 2724196 - update fw common interface files
Define WMI PEER_STATS_INFO messages
Change-Id: I36c41f7398a96d5f0157947698ba2569262821ca
CRs-Fixed: 865207
| -rw-r--r-- | CORE/SERVICES/COMMON/wmi_services.h | 1 | ||||
| -rw-r--r-- | CORE/SERVICES/COMMON/wmi_tlv_defs.h | 15 | ||||
| -rw-r--r-- | CORE/SERVICES/COMMON/wmi_unified.h | 135 | ||||
| -rw-r--r-- | CORE/SERVICES/COMMON/wmi_version.h | 2 | ||||
| -rw-r--r-- | CORE/SERVICES/WMI/wmi_unified.c | 1 |
5 files changed, 153 insertions, 1 deletions
diff --git a/CORE/SERVICES/COMMON/wmi_services.h b/CORE/SERVICES/COMMON/wmi_services.h index 9414b3bead15..999bf49d0d5b 100644 --- a/CORE/SERVICES/COMMON/wmi_services.h +++ b/CORE/SERVICES/COMMON/wmi_services.h @@ -275,6 +275,7 @@ typedef enum { WMI_SERVICE_DFS_PHYERR_OFFLOAD=113, WMI_SERVICE_RCPI_SUPPORT=114, WMI_SERVICE_FW_MEM_DUMP_SUPPORT = 115, /* Support FW Memory dump */ + WMI_SERVICE_PEER_STATS_INFO = 114, /* support per peer stats info */ /***** ADD NEW SERVICES HERE UNTIL ALL VALUES UP TO 128 ARE USED *****/ diff --git a/CORE/SERVICES/COMMON/wmi_tlv_defs.h b/CORE/SERVICES/COMMON/wmi_tlv_defs.h index 327a2a3358fa..9346a1c59fd3 100644 --- a/CORE/SERVICES/COMMON/wmi_tlv_defs.h +++ b/CORE/SERVICES/COMMON/wmi_tlv_defs.h @@ -767,6 +767,9 @@ typedef enum { WMITLV_TAG_STRUC_wmi_vendor_oui, WMITLV_TAG_STRUC_wmi_request_rcpi_cmd_fixed_param, WMITLV_TAG_STRUC_wmi_update_rcpi_event_fixed_param, + WMITLV_TAG_STRUC_wmi_request_peer_stats_info_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_peer_stats_info, + WMITLV_TAG_STRUC_wmi_peer_stats_info_event_fixed_param, } WMITLV_TAG_ID; /* @@ -1077,6 +1080,7 @@ typedef enum { OP(WMI_VDEV_ADFS_CH_CFG_CMDID) \ OP(WMI_VDEV_ADFS_OCAC_ABORT_CMDID) \ OP(WMI_REQUEST_RCPI_CMDID) \ + OP(WMI_REQUEST_PEER_STATS_INFO_CMDID) \ /* add new CMD_LIST elements above this line */ /* @@ -1242,6 +1246,7 @@ typedef enum { OP(WMI_VDEV_DFS_CAC_COMPLETE_EVENTID) \ OP(WMI_VDEV_ADFS_OCAC_COMPLETE_EVENTID) \ OP(WMI_UPDATE_RCPI_EVENTID) \ + OP(WMI_PEER_STATS_INFO_EVENTID) \ /* add new EVT_LIST elements above this line */ @@ -3092,6 +3097,11 @@ WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_SET_STATS_THRESHOLD_CMDID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_request_wlan_stats_cmd_fixed_param, wmi_request_wlan_stats_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) WMITLV_CREATE_PARAM_STRUC(WMI_REQUEST_WLAN_STATS_CMDID); +/* Request peer stats info cmd */ +#define WMITLV_TABLE_WMI_REQUEST_PEER_STATS_INFO_CMDID(id, op, buf, len) \ + WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_STRUC_wmi_request_peer_stats_info_cmd_fixed_param, wmi_request_peer_stats_info_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_REQUEST_PEER_STATS_INFO_CMDID); + /************************** TLV definitions of WMI events *******************************/ /* Service Ready event */ @@ -4111,6 +4121,11 @@ WMITLV_CREATE_PARAM_STRUC(WMI_REPORT_STATS_EVENTID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_BYTE, A_UINT8, enc80211_frame, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_ENCRYPT_DECRYPT_DATA_RESP_EVENTID); +#define WMITLV_TABLE_WMI_PEER_STATS_INFO_EVENTID(id, op, buf, len) \ + WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_STRUC_wmi_peer_stats_info_event_fixed_param, wmi_peer_stats_info_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ + WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_ARRAY_STRUC, wmi_peer_stats_info, peer_stats_info, WMITLV_SIZE_VAR) +WMITLV_CREATE_PARAM_STRUC(WMI_PEER_STATS_INFO_EVENTID); + #ifdef __cplusplus } #endif diff --git a/CORE/SERVICES/COMMON/wmi_unified.h b/CORE/SERVICES/COMMON/wmi_unified.h index c2c41cfab6d9..521396898c3b 100644 --- a/CORE/SERVICES/COMMON/wmi_unified.h +++ b/CORE/SERVICES/COMMON/wmi_unified.h @@ -707,6 +707,10 @@ typedef enum { /** Request for getting RCPI of peer */ WMI_REQUEST_RCPI_CMDID, + /** One time request for peer stats info */ + WMI_REQUEST_PEER_STATS_INFO_CMDID, + + /** ARP OFFLOAD REQUEST*/ WMI_SET_ARP_NS_OFFLOAD_CMDID=WMI_CMD_GRP_START_ID(WMI_GRP_ARP_NS_OFL), @@ -1247,6 +1251,10 @@ typedef enum { * WMI_REQUEST_RCPI_CMDID */ WMI_UPDATE_RCPI_EVENTID, + /** This event is used to respond to WMI_REQUEST_PEER_STATS_INFO_CMDID + * and report peer stats info to host */ + WMI_PEER_STATS_INFO_EVENTID, + /* NLO specific events */ /** NLO match event after the first match */ WMI_NLO_MATCH_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_NLO_OFL), @@ -3884,6 +3892,10 @@ typedef enum { WMI_PDEV_PARAM_ENABLE_RTS_SIFS_BURSTING, /** Set Maximum number of MPDUs in an AMPDU*/ WMI_PDEV_PARAM_MAX_MPDUS_IN_AMPDU, + /** Enable/disable peer stats info mechanism + * A zero value disables; a non-zero value enables. + */ + WMI_PDEV_PARAM_PEER_STATS_INFO_ENABLE, } WMI_PDEV_PARAM; @@ -5330,6 +5342,104 @@ typedef struct { **/ } wmi_report_stats_event_fixed_param; +typedef struct { + /** TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_peer_stats_info */ + A_UINT32 tlv_header; + /** peer MAC address */ + wmi_mac_addr peer_macaddr; + /** bytes (size of MPDUs) transmitted to this peer */ + struct { + /* lower 32 bits of the tx_bytes value */ + A_UINT32 low_32; + /* upper 32 bits of the tx_bytes value */ + A_UINT32 high_32; + } tx_bytes; + /** packets (MSDUs) transmitted to this peer */ + struct { + /* lower 32 bits of the tx_packets value */ + A_UINT32 low_32; + /* upper 32 bits of the tx_packets value */ + A_UINT32 high_32; + } tx_packets; + /** bytes (size of MPDUs) received from this peer */ + struct { + /* lower 32 bits of the rx_bytes value */ + A_UINT32 low_32; + /* upper 32 bits of the rx_bytes value */ + A_UINT32 high_32; + } rx_bytes; + /** packets (MSDUs) received from this peer */ + struct { + /* lower 32 bits of the rx_packets value */ + A_UINT32 low_32; + /* upper 32 bits of the rx_packets value */ + A_UINT32 high_32; + } rx_packets; + /** cumulative retry counts (MPDUs) */ + A_UINT32 tx_retries; + /** number of failed transmissions (MPDUs) (retries exceeded, no ACK) */ + A_UINT32 tx_failed; + /** rate information, it is output of WMI_ASSEMBLE_RATECODE_V1 + * (in format of 0x1000RRRR) + * The rate-code is a 4-bytes field in which, + * for given rate, nss and preamble + * + * b'31-b'29 unused / reserved + * b'28 indicate the version of rate-code (1 = RATECODE_V1) + * b'27-b'11 unused / reserved + * b'10-b'8 indicate the preamble (0 OFDM, 1 CCK, 2 HT, 3 VHT) + * b'7-b'5 indicate the NSS (0 - 1x1, 1 - 2x2, 2 - 3x3, 3 - 4x4) + * b'4-b'0 indicate the rate, which is indicated as follows: + * OFDM : 0: OFDM 48 Mbps + * 1: OFDM 24 Mbps + * 2: OFDM 12 Mbps + * 3: OFDM 6 Mbps + * 4: OFDM 54 Mbps + * 5: OFDM 36 Mbps + * 6: OFDM 18 Mbps + * 7: OFDM 9 Mbps + * CCK (pream == 1) + * 0: CCK 11 Mbps Long + * 1: CCK 5.5 Mbps Long + * 2: CCK 2 Mbps Long + * 3: CCK 1 Mbps Long + * 4: CCK 11 Mbps Short + * 5: CCK 5.5 Mbps Short + * 6: CCK 2 Mbps Short + * HT/VHT (pream == 2/3) + * 0..7: MCS0..MCS7 (HT) + * 0..9: MCS0..MCS9 (11AC VHT) + * 0..11: MCS0..MCS11 (11AX VHT) + */ + /** rate-code of the last transmission */ + A_UINT32 last_tx_rate_code; + /** rate-code of the last received PPDU */ + A_UINT32 last_rx_rate_code; + /** bitrate of the last transmission, in units of kbps */ + A_UINT32 last_tx_bitrate_kbps; + /** bitrate of the last received PPDU, in units of kbps */ + A_UINT32 last_rx_bitrate_kbps; + /** combined RSSI of the last received PPDU, in unit of dBm */ + A_INT32 peer_rssi; +} wmi_peer_stats_info; + +typedef struct { + /** TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_peer_stats_info_event_fixed_param */ + A_UINT32 tlv_header; + /** VDEV to which the peers belong to */ + A_UINT32 vdev_id; + /** number of peers in peer_stats_info[] */ + A_UINT32 num_peers; + /** flag to indicate if there are more peers which will + * be sent a following seperate peer_stats_info event */ + A_UINT32 more_data; + /* This TLV is followed by another TLV of array of structs + * wmi_peer_stats_info peer_stats_info[]; + */ +} wmi_peer_stats_info_event_fixed_param; + /** * PDEV statistics * @todo @@ -16632,6 +16742,31 @@ typedef struct { } wmi_request_wlan_stats_cmd_fixed_param; typedef enum { + WMI_REQUEST_ONE_PEER_STATS_INFO = 0x01, /* request stats of one specified peer */ + WMI_REQUEST_VDEV_ALL_PEER_STATS_INFO = 0x02, /* request stats of all peers belong to specified VDEV */ +} wmi_peer_stats_info_request_type; + +/** It is required to issue WMI_PDEV_PARAM_PEER_STATS_INFO_ENABLE +* (with a non-zero value) before issuing the first REQUEST_PEER_STATS_INFO. +*/ +typedef struct { + /** TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_request_peer_stats_info_cmd_fixed_param */ + A_UINT32 tlv_header; + /** request_type to indicate if only stats of + * one peer or all peers of the VDEV are requested, + * see wmi_peer_stats_info_request_type. + */ + A_UINT32 request_type; + /** VDEV identifier */ + A_UINT32 vdev_id; + /** this peer_macaddr is only used if request_type == ONE_PEER_STATS_INFO */ + wmi_mac_addr peer_macaddr; + /** flag to indicate if FW needs to reset requested peers stats */ + A_UINT32 reset_after_request; +} wmi_request_peer_stats_info_cmd_fixed_param; + +typedef enum { WLAN_2G_CAPABILITY = 0x1, WLAN_5G_CAPABILITY = 0x2, } WLAN_BAND_CAPABILITY; diff --git a/CORE/SERVICES/COMMON/wmi_version.h b/CORE/SERVICES/COMMON/wmi_version.h index a2bc21f9c34d..7ee9998da682 100644 --- a/CORE/SERVICES/COMMON/wmi_version.h +++ b/CORE/SERVICES/COMMON/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_ 322 +#define __WMI_REVISION_ 323 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work diff --git a/CORE/SERVICES/WMI/wmi_unified.c b/CORE/SERVICES/WMI/wmi_unified.c index 913a1834996f..908e4d37ed6e 100644 --- a/CORE/SERVICES/WMI/wmi_unified.c +++ b/CORE/SERVICES/WMI/wmi_unified.c @@ -726,6 +726,7 @@ static u_int8_t* get_wmi_cmd_string(WMI_CMD_ID wmi_command) CASE_RETURN_STRING(WMI_VDEV_ADFS_CH_CFG_CMDID); CASE_RETURN_STRING(WMI_VDEV_ADFS_OCAC_ABORT_CMDID); CASE_RETURN_STRING(WMI_REQUEST_RCPI_CMDID); + CASE_RETURN_STRING(WMI_REQUEST_PEER_STATS_INFO_CMDID); } return "Invalid WMI cmd"; } |
