From 03fa0c32c2694f6ca7dfdf397f42f3e97710c366 Mon Sep 17 00:00:00 2001 From: spuligil Date: Fri, 22 Feb 2019 12:00:49 -0800 Subject: [PATCH] fw-api: CL 6571150 - update fw common interface files Change-Id: I235cc527b9a6e851eb8adbcc0b75080dfc1b684d WMI: add PEER_CFG_CAPTURE_EVENT msg def CRs-Fixed: 2262693 --- fw/wmi_services.h | 1 + fw/wmi_tlv_defs.h | 7 ++++ fw/wmi_unified.h | 95 ++++++++++++++++++++++++++++++++++++++++++++--- fw/wmi_version.h | 2 +- 4 files changed, 99 insertions(+), 6 deletions(-) diff --git a/fw/wmi_services.h b/fw/wmi_services.h index 033f79dd7c6e..8f3e52bdbaf1 100644 --- a/fw/wmi_services.h +++ b/fw/wmi_services.h @@ -380,6 +380,7 @@ typedef enum { WMI_SERVICE_WPA3_FT_SAE_SUPPORT = 195, /* FW roaming support for WPA3_FT_SAE */ WMI_SERVICE_WPA3_FT_SUITE_B_SUPPORT = 196, /* FW roaming support for WPA3_FT_SUITE_B */ WMI_SERVICE_VOW_ENABLE=197, /* FW supports a set of features to optimize VoW performance */ + WMI_SERVICE_CFR_CAPTURE_IND_EVT_TYPE_1 = 198, /* support WMI_PEER_CFR_CAPTURE_EVENT msg */ /******* ADD NEW SERVICES HERE *******/ diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index aa17d6db91d6..94016db05f23 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -965,6 +965,7 @@ typedef enum { WMITLV_TAG_STRUC_wmi_request_wlm_stats_cmd_fixed_param, WMITLV_TAG_STRUC_wmi_wlm_stats_event_fixed_param, WMITLV_TAG_STRUC_wmi_key_material_ext, + WMITLV_TAG_STRUC_wmi_peer_cfr_capture_event_fixed_param, } WMITLV_TAG_ID; /* @@ -1580,6 +1581,7 @@ typedef enum { OP(WMI_VDEV_GET_MWS_COEX_IDRX_STATE_EVENTID) \ OP(WMI_VDEV_GET_MWS_COEX_ANTENNA_SHARING_STATE_EVENTID) \ OP(WMI_WLM_STATS_EVENTID) \ + OP(WMI_PEER_CFR_CAPTURE_EVENTID) \ /* add new EVT_LIST elements above this line */ @@ -5280,6 +5282,11 @@ WMITLV_CREATE_PARAM_STRUC(WMI_MOTION_DET_BASE_LINE_HOST_EVENTID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_esp_estimate_event_fixed_param, wmi_esp_estimate_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) WMITLV_CREATE_PARAM_STRUC(WMI_ESP_ESTIMATE_EVENTID); +/* Peer CFR capture event */ +#define WMITLV_TABLE_WMI_PEER_CFR_CAPTURE_EVENTID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_peer_cfr_capture_event_fixed_param, wmi_peer_cfr_capture_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_PEER_CFR_CAPTURE_EVENTID); + #ifdef __cplusplus } diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 20d9b7eaeb46..39d470eea98b 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -549,8 +549,21 @@ typedef enum { WMI_PEER_TID_CONFIGURATIONS_CMDID, /** Peer configuration for Channel Frequency Response (CFR) capture - * of type wmi_peer_cfr_capture_cmd. The CFR capture is communicated - * through HTT_T2H_MSG_TYPE_CFR_DUMP_COMPL_IND. + * of type wmi_peer_cfr_capture_cmd. + * + * On targets that do not use the direct DMA framework, + * completion of the CFR capture is communicated through + * HTT_T2H_MSG_TYPE_CFR_DUMP_COMPL_IND. + * Such targets will set WMI_SERVICE_CFR_CAPTURE_IND_MSG_TYPE_1 + * in WMI Service Ready. + * + * On targets that use direct DMA, completion of CFR capture is + * communicated through WMI_PDEV_DMA_RING_BUF_RELEASE_EVENTID + * using module ID WMI_DMA_RING_CONFIG_MODULE_RTT. + * Such targets will set WMI_SERVICE_CFR_CAPTURE_IND_EVT_TYPE_1 + * in WMI Service Ready and enumerate WMI_DMA_RING_CONFIG_MODULE_RTT + * in the dma_ring_caps entry of WMI_SERVICE_READY_EXT_EVENTID. + * Additional MAC metadata is provided in WMI_PEER_CFR_CAPTURE_EVENTID. */ WMI_PEER_CFR_CAPTURE_CMDID, @@ -1406,6 +1419,8 @@ typedef enum { /** report the current tx PN for the peer */ WMI_PEER_TX_PN_RESPONSE_EVENTID, + WMI_PEER_CFR_CAPTURE_EVENTID, + /* beacon/mgmt specific events */ /** RX management frame. the entire frame is carried along with the event. */ WMI_MGMT_RX_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_MGMT), @@ -4202,6 +4217,9 @@ typedef struct { ((int8_t) (WMI_F_MS((hdr)->rssi_chain##c, \ WMI_UNIFIED_RSSI_CHAN_##ch))) +#define WMI_UNIFIED_CHAIN_RSSI_GET(tlv, chain_idx, band) \ + ((A_INT8) WMI_F_MS((tlv)->chain_rssi[chain_idx], WMI_UNIFIED_RSSI_CHAN_ ## band)) + typedef struct { /** Phy error event header */ wmi_single_phyerr_rx_hdr hdr; @@ -24308,7 +24326,8 @@ typedef struct { } wmi_twt_resume_dialog_complete_event_fixed_param; typedef enum { - WMI_DMA_RING_CONFIG_MODULE_SPECTRAL, + WMI_DMA_RING_CONFIG_MODULE_SPECTRAL, + WMI_DMA_RING_CONFIG_MODULE_RTT, } WMI_DMA_RING_SUPPORTED_MODULE; typedef struct { @@ -24413,8 +24432,8 @@ typedef struct { */ A_UINT32 paddr_lo; /** - * Bits 15:0: address of data [47:32] - * Bits 31:16: reserved + * Bits 11:0: address of data [43:32] + * Bits 31:12: host context data [19:0] */ A_UINT32 paddr_hi; } wmi_dma_buf_release_entry; @@ -25888,6 +25907,72 @@ typedef struct { #define WMI_HECAP_MAC_HTVHTTRIGRX_SET WMI_HECAP_MAC_HTVHTTRIGRX_SET_D2 #endif /* SUPPORT_11AX_D3 */ +typedef struct { + /** TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_cfr_capture_event_fixed_param */ + A_UINT32 tlv_header; + /* Method used to capture CFR - of type WMI_PEER_CFR_CAPTURE_METHOD */ + A_UINT32 capture_method; + /* VDEV identifier */ + A_UINT32 vdev_id; + /* Peer MAC address. In AP mode, this is the address of the connected peer + * for which CFR capture is needed. In case of STA mode, this is the address + * of the AP to which the STA is connected + */ + wmi_mac_addr mac_addr; + /* primary 20 MHz channel frequency in mhz */ + A_UINT32 chan_mhz; + /* BW of measurement - of type WMI_PEER_CFR_CAPTURE_BW */ + A_UINT32 bandwidth; + /* phy mode WLAN_PHY_MODE of the channel defined in wlan_defs.h*/ + A_UINT32 phy_mode; + /* Center frequency 1 in MHz*/ + A_UINT32 band_center_freq1; + /* Center frequency 2 in MHz - valid only for 11acvht 80plus80 mode*/ + A_UINT32 band_center_freq2; + /* Number of spatial streams */ + A_UINT32 sts_count; + /* Bits 31:0: address of data from wmi_dma_buf_release_entry [31:0] */ + A_UINT32 correlation_info_1; + /* Bits 11:0: address of data from wmi_dma_buf_release_entry [43:32] + * Bits 15:12: reserved (set to 0x0) + * Bits 31:16: hardware PPDU ID [15:0] + */ + A_UINT32 correlation_info_2; + /* Bits 1:0: TX status (if any); values defined in enum + * WMI_FRAME_TX_STATUS + * Bits 30:2: reserved (set to 0x0) + * Bit 31: Status of the CFR capture of the peer + * 1 (True) - Successful; 0 (False) - Not successful + */ + A_UINT32 status; + /* Timestamp in microseconds at which the CFR was captured in the hardware. + * The clock used for this timestamp is private to the target and + * is not visible to the host i.e., Host can interpret only the + * relative timestamp deltas from one message to the next, + * but can't interpret the absolute timestamp from a single message. + */ + A_UINT32 timestamp_us; + /* + * Count of the current CFR capture from FW. + * This is helpful to identify any drops in FW. + */ + A_UINT32 counter; + /* Per chain RSSI of the peer, for up to WMI_MAX_CHAINS. + * Each chain's entry reports the RSSI for different bands in dBm units. + * Use WMI_UNIFIED_CHAIN_RSSI_GET to extract the value for a particular + * band. + * A band value of 0x80 (-128) is invalid. + */ + A_UINT32 chain_rssi[WMI_MAX_CHAINS]; +} wmi_peer_cfr_capture_event_fixed_param; + +#define WMI_PEER_CFR_CAPTURE_EVT_STATUS_OK 0x80000000 +#define WMI_PEER_CFR_CAPTURE_EVT_STATUS_OK_S 31 + +#define WMI_PEER_CFR_CAPTURE_EVT_STATUS_TX 0x00000003 +#define WMI_PEER_CFR_CAPTURE_EVT_STATUS_TX_S 0 + /* ADD NEW DEFS HERE */ diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 92f388bfcc44..0982cc8e4d50 100644 --- 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_ 632 +#define __WMI_REVISION_ 633 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work