diff options
| author | Zhang Qian <zhangq@codeaurora.org> | 2019-04-04 19:16:37 +0800 |
|---|---|---|
| committer | Zhang Qian <zhangq@codeaurora.org> | 2019-04-12 11:20:21 +0800 |
| commit | 6cd6926f7c0b4475d09fa11d1e04d03d54e29470 (patch) | |
| tree | 9a5eee7634a959fa80b36142d9929bf5e508779d | |
| parent | 73ebbac158f60b0d60a106660bf4528b1719c6e3 (diff) | |
qcacld-2.0: CL 6565901-6699888 - Update fw common interface files
CL6565901 WMI: provide VIDEO_OVER_WIFI_ENABLE flag in WMI_INIT_CMD
CL6571150 WMI: add PEER_CFG_CAPTURE_EVENT msg def
CL6580656 WMI: add def of COLD_BOOT_CAL_DATA_EVENT msg
CL6599296 WMI: add COEX_CONFIG_MPTA_HELPER_ defs
CL6620317 Add WMI_PEER_TYPE_TRANS_BSS def
CL6647788 Add WMI_PDEV_PARAM_SET_MU_PPDU_DURATION def
CL6658261 WMI: add flags to enable/disable broadcast TWT
CL6699888 WMI: add rogue AP CONFIG_CMD and INFO_EVENT msg defs
Change-Id: I5b42925ca32f01fadd1bc3065d8ac4bfa8a8352f
CRs-fixed: 2433619
| -rw-r--r-- | CORE/SERVICES/COMMON/wmi_services.h | 9 | ||||
| -rw-r--r-- | CORE/SERVICES/COMMON/wmi_tlv_defs.h | 62 | ||||
| -rw-r--r-- | CORE/SERVICES/COMMON/wmi_unified.h | 979 | ||||
| -rw-r--r-- | CORE/SERVICES/COMMON/wmi_version.h | 2 | ||||
| -rw-r--r-- | CORE/SERVICES/WMI/wmi_unified.c | 1 |
5 files changed, 678 insertions, 375 deletions
diff --git a/CORE/SERVICES/COMMON/wmi_services.h b/CORE/SERVICES/COMMON/wmi_services.h index a4909262af86..6d3c7597a916 100644 --- a/CORE/SERVICES/COMMON/wmi_services.h +++ b/CORE/SERVICES/COMMON/wmi_services.h @@ -473,6 +473,10 @@ typedef enum { WMI_SERVICE_EXT_PEER_TID_CONFIGS_SUPPORT = 194, /* Extended Peer Tid configuration support for QoS related settings */ 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 */ + WMI_SERVICE_BROADCAST_TWT = 199, /* support of Broadcast TWT (Target Wake Time) for STA/AP */ + WMI_SERVICE_RAP_DETECTION_SUPPORT = 200, /* indicate FW supports rogue AP detection */ /******* ADD NEW SERVICES HERE *******/ @@ -486,10 +490,6 @@ typedef enum { #define WMI_NUM_EXT_SERVICES (WMI_MAX_EXT_SERVICE - WMI_MAX_SERVICE) #define WMI_SERVICE_EXT_BM_SIZE32 ((WMI_NUM_EXT_SERVICES + 31) / 32) -/** - * depreciated the name WMI_SERVICE_ROAM_OFFLOAD, but here to help - * compiling with old host driver - */ #define WMI_SERVICE_ROAM_OFFLOAD WMI_SERVICE_ROAM_SCAN_OFFLOAD /* @@ -507,6 +507,7 @@ typedef enum { ( ((pwmi_svc_bmap)[(svc_id)/(sizeof(A_UINT32))] & \ (1 << ((svc_id)%(sizeof(A_UINT32)))) ) != 0) + #define WMI_SERVICE_EXT_ENABLE(pwmi_svc_bmap, pwmi_svc_ext_bmap, svc_id) \ do { \ if (svc_id < WMI_MAX_SERVICE) { \ diff --git a/CORE/SERVICES/COMMON/wmi_tlv_defs.h b/CORE/SERVICES/COMMON/wmi_tlv_defs.h index f58764f3ddb7..20b97d67a8f3 100644 --- a/CORE/SERVICES/COMMON/wmi_tlv_defs.h +++ b/CORE/SERVICES/COMMON/wmi_tlv_defs.h @@ -965,6 +965,11 @@ 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_STRUC_wmi_cold_boot_cal_data_fixed_param, + WMITLV_TAG_STRUC_wmi_pdev_set_rap_config_fixed_param, + WMITLV_TAG_STRUC_wmi_pdev_set_rap_config_on_sta_ps_tlv_param, + WMITLV_TAG_STRUC_wmi_pdev_rap_info_event_fixed_param, } WMITLV_TAG_ID; /* @@ -1357,6 +1362,8 @@ typedef enum { OP(WMI_ROAM_BSS_LOAD_CONFIG_CMDID) \ OP(WMI_VDEV_GET_MWS_COEX_INFO_CMDID) \ OP(WMI_REQUEST_WLM_STATS_CMDID) \ + OP(WMI_PDEV_SET_RAP_CONFIG_CMDID) \ + /* add new CMD_LIST elements above this line */ /* add new CMD_LIST elements above this line */ /* @@ -1576,6 +1583,9 @@ 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) \ + OP(WMI_PDEV_COLD_BOOT_CAL_DATA_EVENTID) \ + OP(WMI_PDEV_RAP_INFO_EVENTID) \ /* add new EVT_LIST elements above this line */ @@ -3354,7 +3364,6 @@ WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_TSF_TSTAMP_ACTION_CMDID); #define WMITLV_TABLE_WMI_ROAM_SUBNET_CHANGE_CONFIG_CMDID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_roam_subnet_change_config_fixed_param, wmi_roam_subnet_change_config_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_FIXED_STRUC, wmi_mac_addr, skip_subnet_change_detection_bssid_list, WMITLV_SIZE_VAR) - WMITLV_CREATE_PARAM_STRUC(WMI_ROAM_SUBNET_CHANGE_CONFIG_CMDID); /* Set the SOC Preferred Channel List (PCL) Cmd - DEPRECATED */ @@ -3633,6 +3642,10 @@ WMITLV_CREATE_PARAM_STRUC(WMI_PEER_SET_RX_BLOCKSIZE_CMDID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_bwf_peer_info, peer_info, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_PEER_BWF_REQUEST_CMDID); +#define WMITLV_TABLE_WMI_RMC_SET_MANUAL_LEADER_CMDID(id,op,buf,len) \ + WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_STRUC_wmi_rmc_set_leader_cmd_fixed_param, wmi_rmc_set_leader_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_RMC_SET_MANUAL_LEADER_CMDID); + /* peer reorder queue setup cmd */ #define WMITLV_TABLE_WMI_PEER_REORDER_QUEUE_SETUP_CMDID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_peer_reorder_queue_setup_cmd_fixed_param, wmi_peer_reorder_queue_setup_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) @@ -3706,6 +3719,7 @@ WMITLV_CREATE_PARAM_STRUC(WMI_11D_SCAN_STOP_CMDID); #define WMITLV_TABLE_WMI_REQUEST_RADIO_CHAN_STATS_CMDID(id,op,buf,len) \ WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_STRUC_wmi_request_radio_chan_stats_cmd_fixed_param, wmi_request_radio_chan_stats_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) WMITLV_CREATE_PARAM_STRUC(WMI_REQUEST_RADIO_CHAN_STATS_CMDID); + /* mac randomization cmd */ #define WMITLV_TABLE_WMI_VDEV_ADD_MAC_ADDR_TO_RX_FILTER_CMDID(id, op, buf, len) \ WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_STRUC_wmi_vdev_add_mac_addr_to_rx_filter_cmd_fixed_param, wmi_vdev_add_mac_addr_to_rx_filter_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) @@ -3897,6 +3911,13 @@ WMITLV_CREATE_PARAM_STRUC(WMI_HPCS_PULSE_START_CMDID); WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_PKTLOG_FILTER_CMDID); +/* PDev Set Rogue AP Config cmd */ +#define WMITLV_TABLE_WMI_PDEV_SET_RAP_CONFIG_CMDID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_pdev_set_rap_config_fixed_param, wmi_pdev_set_rap_config_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_pdev_set_rap_config_on_sta_ps_tlv_param, rap_param, WMITLV_SIZE_VAR) +WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_SET_RAP_CONFIG_CMDID); + + /************************** TLV definitions of WMI events *******************************/ /* Service Ready event */ @@ -3923,6 +3944,7 @@ WMITLV_CREATE_PARAM_STRUC(WMI_SERVICE_AVAILABLE_EVENTID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, WMI_HAL_REG_CAPABILITIES_EXT, hal_reg_caps, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, WMI_MAC_PHY_CHAINMASK_COMBO, mac_phy_chainmask_combo, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, WMI_MAC_PHY_CHAINMASK_CAPABILITY, mac_phy_chainmask_caps, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, WMI_OEM_DMA_RING_CAPABILITIES, oem_dma_ring_caps, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_WMI_SAR_CAPABILITIES, WMI_SAR_CAPABILITIES, sar_caps, WMITLV_SIZE_FIX) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, WMI_DMA_RING_CAPABILITIES, dma_ring_caps, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_spectral_bin_scaling_params, wmi_bin_scaling_params, WMITLV_SIZE_VAR) @@ -4105,6 +4127,12 @@ WMITLV_CREATE_PARAM_STRUC(WMI_MGMT_RX_EVENTID); WMITLV_FXAR(id,op,buf,len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, tbttoffset_list, WMITLV_SIZE_FIX, WMI_MAX_AP_VDEV) WMITLV_CREATE_PARAM_STRUC(WMI_TBTTOFFSET_UPDATE_EVENTID); +/* TBTT EXT offset Event */ +#define WMITLV_TABLE_WMI_TBTTOFFSET_EXT_UPDATE_EVENTID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_tbtt_offset_ext_event_fixed_param, wmi_tbtt_offset_ext_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_tbtt_offset_info, tbtt_offset_info, WMITLV_SIZE_VAR) +WMITLV_CREATE_PARAM_STRUC(WMI_TBTTOFFSET_EXT_UPDATE_EVENTID); + /* TX DELBA Complete Event */ #define WMITLV_TABLE_WMI_TX_DELBA_COMPLETE_EVENTID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_tx_delba_complete_event_fixed_param, wmi_tx_delba_complete_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) @@ -4689,6 +4717,7 @@ WMITLV_CREATE_PARAM_STRUC(WMI_DIAG_DATA_CONTAINER_EVENTID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_peer_estimated_linkspeed_event_fixed_param, wmi_peer_estimated_linkspeed_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) WMITLV_CREATE_PARAM_STRUC(WMI_PEER_ESTIMATED_LINKSPEED_EVENTID); +/* NAN Response/Indication Event */ #define WMITLV_TABLE_WMI_STATS_EXT_EVENTID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_stats_ext_event_fixed_param, wmi_stats_ext_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_BYTE, A_UINT8, data, WMITLV_SIZE_VAR) @@ -4978,6 +5007,10 @@ WMITLV_CREATE_PARAM_STRUC(WMI_INST_RSSI_STATS_EVENTID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, tx_time_per_power_level, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_RADIO_TX_POWER_LEVEL_STATS_EVENTID); +#define WMITLV_TABLE_WMI_RMC_NEW_LEADER_EVENTID(id, op, buf, len) \ + WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_STRUC_wmi_rmc_manual_leader_event_fixed_param, wmi_rmc_manual_leader_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_RMC_NEW_LEADER_EVENTID); + /* Layout of WMI_REPORT_STATS_EVENTID message: * fixed_param; * wmi_chan_cca_stats chan_cca_stats[]; Array length is specified by num_chan_cca_stats @@ -5003,7 +5036,7 @@ WMITLV_CREATE_PARAM_STRUC(WMI_RADIO_TX_POWER_LEVEL_STATS_EVENTID); * The time represented by each array element (i.e. histogram bin) is specified by tx_ppdu_delay_bin_size_ms. * Element 0 contains the count of PPDUs delayed by less than tx_ppdu_delay_bin_size_ms. * Element 1 contains the count of PPDUs delayed by more than 1x tx_ppdu_delay_bin_size_ms but less than 2x. - * Element tx_delay_array_len-1 contains the count of PPDUs delayed by + * Element tx_ppdu_delay_array_len-1 contains the count of PPDUs delayed by * >= tx_ppdu_delay_bin_size_ms * (tx_ppdu_delay_array_len-1) * wmi_peer_ac_rx_stats peer_ac_rx_stats[]; Array length is specified by num_peer_ac_rx_stats * wmi_rx_stats rx_stats[][]; Array length is num_peer_ac_rx_stats * WLAN_MAX_AC, array index is (peer_index * WLAN_MAX_AC + ac_index) @@ -5129,6 +5162,7 @@ WMITLV_CREATE_PARAM_STRUC(WMI_RADIO_CHAN_STATS_EVENTID); #define WMITLV_TABLE_WMI_PKGID_EVENTID(id, op, buf, len) \ WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_STRUC_wmi_pkgid_event_fixed_param, wmi_pkgid_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) WMITLV_CREATE_PARAM_STRUC(WMI_PKGID_EVENTID); + /* mac randomization event */ #define WMITLV_TABLE_WMI_VDEV_ADD_MAC_ADDR_TO_RX_FILTER_STATUS_EVENTID(id, op, buf, len) \ WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_STRUC_wmi_vdev_add_mac_addr_to_rx_filter_status_event_fixed_param, wmi_vdev_add_mac_addr_to_rx_filter_status_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) @@ -5177,16 +5211,17 @@ WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_DMA_RING_CFG_RSP_EVENTID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_dma_buf_release_spectral_meta_data, meta_data, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_DMA_RING_BUF_RELEASE_EVENTID); +/* ctl failsafe check event */ +#define WMITLV_TABLE_WMI_PDEV_CTL_FAILSAFE_CHECK_EVENTID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_pdev_ctl_failsafe_check_fixed_param, wmi_pdev_ctl_failsafe_check_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_CTL_FAILSAFE_CHECK_EVENTID); + /* UNIT-TEST Event */ #define WMITLV_TABLE_WMI_UNIT_TEST_EVENTID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_unit_test_event_fixed_param, wmi_unit_test_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_BYTE, A_UINT8, bufp, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_UNIT_TEST_EVENTID); -/* ctl failsafe check event */ -#define WMITLV_TABLE_WMI_PDEV_CTL_FAILSAFE_CHECK_EVENTID(id,op,buf,len) \ - WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_pdev_ctl_failsafe_check_fixed_param, wmi_pdev_ctl_failsafe_check_fixed_param, fixed_param, WMITLV_SIZE_FIX) -WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_CTL_FAILSAFE_CHECK_EVENTID); /* enabling TWT complete Event */ #define WMITLV_TABLE_WMI_TWT_ENABLE_COMPLETE_EVENTID(id,op,buf,len) \ @@ -5249,6 +5284,21 @@ 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); + +#define WMITLV_TABLE_WMI_PDEV_COLD_BOOT_CAL_DATA_EVENTID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_cold_boot_cal_data_fixed_param, wmi_cold_boot_cal_data_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_BYTE, A_UINT8, data, WMITLV_SIZE_VAR) +WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_COLD_BOOT_CAL_DATA_EVENTID); + +/* rogue ap info event */ +#define WMITLV_TABLE_WMI_PDEV_RAP_INFO_EVENTID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_pdev_rap_info_event_fixed_param, wmi_pdev_rap_info_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_RAP_INFO_EVENTID); + #ifdef __cplusplus } #endif diff --git a/CORE/SERVICES/COMMON/wmi_unified.h b/CORE/SERVICES/COMMON/wmi_unified.h index dc07acc48f53..d33952eba057 100644 --- a/CORE/SERVICES/COMMON/wmi_unified.h +++ b/CORE/SERVICES/COMMON/wmi_unified.h @@ -406,6 +406,8 @@ typedef enum { WMI_PDEV_HE_TB_ACTION_FRM_CMDID, /** filter packet log based on MAC address */ WMI_PDEV_PKTLOG_FILTER_CMDID, + /** wmi command for setting rogue ap configuration */ + WMI_PDEV_SET_RAP_CONFIG_CMDID, /* VDEV (virtual device) specific commands */ /** vdev create */ @@ -554,8 +556,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, @@ -1289,6 +1304,18 @@ typedef enum { WMI_PDEV_DMA_RING_BUF_RELEASE_EVENTID, /* VDEV specific events */ + WMI_PDEV_CTL_FAILSAFE_CHECK_EVENTID, + + /* Event to report the switch count in BSS color of one or more VDEVs */ + WMI_PDEV_CSC_SWITCH_COUNT_STATUS_EVENTID, + + /* Event to send cold boot calibration data */ + WMI_PDEV_COLD_BOOT_CAL_DATA_EVENTID, + + /* Event to report a rogue ap info that is detected in fw */ + WMI_PDEV_RAP_INFO_EVENTID, + + /* VDEV specific events */ /** VDEV started event in response to VDEV_START request */ WMI_VDEV_START_RESP_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_VDEV), /** vdev stopped event , generated in response to VDEV_STOP request */ @@ -1401,14 +1428,10 @@ typedef enum { WMI_PEER_OPER_MODE_CHANGE_EVENTID, /** WMI Event to deliver CTL Failsafe application */ - WMI_PDEV_CTL_FAILSAFE_CHECK_EVENTID, - - /* Event to report the switch count in BSS color of one or more VDEVs */ - WMI_PDEV_CSC_SWITCH_COUNT_STATUS_EVENTID, - - /** 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), @@ -2953,6 +2976,15 @@ typedef struct { #define WMI_RSRC_CFG_FLAG_PEER_TID_EXT_S 22 #define WMI_RSRC_CFG_FLAG_PEER_TID_EXT_M 0x400000 + /* + * If the VIDEO_OVER_WIFI_ENABLE flag is set, the target will use a + * series of algorithmic adjustments to optimize Video performance + * by reducing latency, reducing latency jitter, and minimizing + * dropped packets. + */ + #define WMI_RSRC_CFG_FLAG_VIDEO_OVER_WIFI_ENABLE_S 23 + #define WMI_RSRC_CFG_FLAG_VIDEO_OVER_WIFI_ENABLE_M 0x800000 + A_UINT32 flag1; /** @brief smart_ant_cap - Smart Antenna capabilities information @@ -3205,6 +3237,11 @@ typedef struct { #define WMI_RSRC_CFG_FLAG_PEER_TID_EXT_GET(word32) \ WMI_RSRC_CFG_FLAG_GET((word32), PEER_TID_EXT) +#define WMI_RSRC_CFG_FLAG_VIDEO_OVER_WIFI_ENABLE_SET(word32, value) \ + WMI_RSRC_CFG_FLAG_SET((word32), VIDEO_OVER_WIFI_ENABLE, (value)) +#define WMI_RSRC_CFG_FLAG_VIDEO_OVER_WIFI_ENABLE_GET(word32) \ + WMI_RSRC_CFG_FLAG_GET((word32), VIDEO_OVER_WIFI_ENABLE) + typedef struct { A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_init_cmd_fixed_param */ @@ -4207,6 +4244,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; @@ -5597,6 +5637,8 @@ typedef enum { */ WMI_PDEV_PARAM_NAV_OVERRIDE_CONFIG, + /* Set global MU PPDU duration for DL (usec units) */ + WMI_PDEV_PARAM_SET_MU_PPDU_DURATION, /* 0xB5 */ } WMI_PDEV_PARAM; typedef struct { @@ -6122,8 +6164,34 @@ typedef struct { */ } wmi_pdev_pktlog_filter_cmd_fixed_param; +typedef enum { + WMI_ROGUE_AP_ON_STA_PS = 1, /* rogue ap on sta ps module */ +} WMI_ROGUE_AP_TYPE; +typedef struct { + A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_pdev_set_rap_config_fixed_param */ + /** pdev_id for identifying the MAC, the default value is WMI_PDEV_ID_SOC + * See macros starting with WMI_PDEV_ID_ for values. + */ + A_UINT32 pdev_id; + A_UINT32 type; + /** Enable detection of rogue ap in the ps module + * + * 0 -> disabled + * 1 -> enabled (default) + */ + A_UINT32 sta_ps_detection_enabled; +/* This TLV is followed by rap_param for each rogue ap: + * wmi_pdev_set_rap_config_on_sta_ps_tlv_param rap_param[]; + */ +} wmi_pdev_set_rap_config_fixed_param; + +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_pdev_set_rap_config_on_sta_ps_tlv_param */ + /** bssid of rogue ap */ + wmi_mac_addr bssid; +} wmi_pdev_set_rap_config_on_sta_ps_tlv_param; typedef struct { A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_mib_stats_enable_cmd_fixed_param */ @@ -10567,6 +10635,7 @@ enum wmi_peer_type { WMI_PEER_TYPE_TDLS = 2, /* Peer is a TDLS Peer */ WMI_PEER_TYPE_OCB = 3, /* Peer is a OCB Peer */ WMI_PEER_TYPE_NAN_DATA = 4, /* Peer is NAN DATA */ + WMI_PEER_TYPE_TRANS_BSS = 5, /* For creating BSS peer when connecting with non-transmit AP */ WMI_PEER_TYPE_HOST_MAX = 127, /* Host <-> Target Peer type is assigned up to 127 */ /* Reserved from 128 - 255 for target internal use.*/ WMI_PEER_TYPE_ROAMOFFLOAD_TEMP = 128, /* Temporarily created during offload roam */ @@ -11230,6 +11299,9 @@ typedef struct { #define WMI_CHAN_INFO_START_RESP 0 #define WMI_CHAN_INFO_END_RESP 1 +#define WMI_CHAN_InFO_START_RESP WMI_CHAN_INFO_START_RESP +#define WMI_CHAN_InFO_END_RESP WMI_CHAN_INFO_END_RESP + typedef struct { A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_peer_remove_wds_entry_cmd_fixed_param */ /** wds MAC addr */ @@ -21621,7 +21693,13 @@ typedef struct { typedef struct { A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_pdev_channel_hopping_event_fixed_param */ - A_UINT32 mac_id; /* MAC ID */ + union { + A_UINT32 mac_id; /* MAC ID */ + /** pdev_id for identifying the MAC + * See macros starting with WMI_PDEV_ID_ for values. + */ + A_UINT32 pdev_id; + }; /* Noise threshold iterations with high values */ A_UINT32 noise_floor_report_iter; /* Total noise threshold iterations */ @@ -21742,7 +21820,10 @@ typedef struct { typedef struct { A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_pdev_tpc_event_fixed_param */ - A_UINT32 reserved0; /* for future need */ + /** pdev_id for identifying the MAC + * See macros starting with WMI_PDEV_ID_ for values. + */ + A_UINT32 pdev_id; /* * Following this structure is the TLV: * A_UINT32 tpc[2]; @@ -21752,13 +21833,18 @@ typedef struct { * for a single rate. In the future this event may be expanded * to provide the information for multiple rates. * At that time, the format of the data will be provided. - */ } wmi_pdev_tpc_event_fixed_param; typedef struct { A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_pdev_nfcal_power_all_channels_event_fixed_param */ - A_UINT32 mac_id; /* MAC ID */ + union { + A_UINT32 mac_id; /* MAC ID */ + /** pdev_id for identifying the MAC + * See macros starting with WMI_PDEV_ID_ for values. + */ + A_UINT32 pdev_id; + }; A_UINT32 nfdBr_len; A_UINT32 nfdBm_len; A_UINT32 freqNum_len; @@ -22281,6 +22367,43 @@ typedef enum wmi_coex_config_type { * arg4 - priority level 4, same parameters rules as arg1 */ WMI_COEX_CONFIG_THREE_WAY_COEX_START = 34, + /* WMI_COEX_CONFIG_MPTA_HELPER_ENABLE + * config to enable(1)/disable(0) mpta-helper function + */ + WMI_COEX_CONFIG_MPTA_HELPER_ENABLE = 35, + /* WMI_COEX_CONFIG_MPTA_HELPER_ZIGBEE_STATE + * config zigbee state + * arg1: zigbee state + * (idle form-network wait-join join-network network-up HMI) + */ + WMI_COEX_CONFIG_MPTA_HELPER_ZIGBEE_STATE = 36, + /* WMI_COEX_CONFIG_MPTA_HELPER_INT_OCS_PARAMS + * config ocs wlan/nonwlan params after MPTA interrupt fired + * arg1: wlan duration (ms units) in Shape-OCS + * arg2: nonwlan duration (ms units) in Shape-OCS + */ + WMI_COEX_CONFIG_MPTA_HELPER_INT_OCS_PARAMS = 37, + /* WMI_COEX_CONFIG_MPTA_HELPER_MON_OCS_PARAMS + * config ocs wlan/nonwlan params during monitor period after + * interrupt period finished + * arg1: wlan duration (ms units) in Shape-OCS + * arg2: nonwlan duration (ms units) in Shape-OCS + */ + WMI_COEX_CONFIG_MPTA_HELPER_MON_OCS_PARAMS = 38, + /* WMI_COEX_CONFIG_MPTA_HELPER_INT_MON_DURATION + * config ocs duration in interrupt period and monitor period + * arg1: duration (ms units) in interrupt period + * arg2: duration (ms units) in monitor period + */ + WMI_COEX_CONFIG_MPTA_HELPER_INT_MON_DURATION = 39, + /* WMI_COEX_CONFIG_MPTA_HELPER_ZIGBEE_CHANNEL + * config zigbee channel 11 - 26 + */ + WMI_COEX_CONFIG_MPTA_HELPER_ZIGBEE_CHANNEL = 40, + /* WMI_COEX_CONFIG_MPTA_HELPER_WLAN_MUTE_DURATION + * config msw mute duration (ms units) after MPTA interrupt fired + */ + WMI_COEX_CONFIG_MPTA_HELPER_WLAN_MUTE_DURATION = 41, } WMI_COEX_CONFIG_TYPE; typedef struct { @@ -22477,6 +22600,31 @@ typedef struct { A_UINT32 reset_after_request; } wmi_request_radio_chan_stats_cmd_fixed_param; +typedef struct { + /** TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_rmc_set_leader_cmd_fixed_param */ + A_UINT32 tlv_header; + /* VDEV identifier */ + A_UINT32 vdev_id; + /* Leader's mac address */ + wmi_mac_addr leader_mac_addr; +} wmi_rmc_set_leader_cmd_fixed_param; + +typedef struct { + /** TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_rmc_manual_leader_event_fixed_param */ + A_UINT32 tlv_header; + /* VDEV identifier */ + A_UINT32 vdev_id; + /* 0: success + * 1: selected leader not found in network, able to find using auto selection + * -1: error + * non zero value should be return to userspace in case of failure */ + A_INT32 status; + /* bssid of new leader */ + wmi_mac_addr leader_mac_addr; +} wmi_rmc_manual_leader_event_fixed_param; + typedef enum { WLAN_2G_CAPABILITY = 0x1, WLAN_5G_CAPABILITY = 0x2, @@ -23626,6 +23774,7 @@ static INLINE A_UINT8 *wmi_id_to_name(A_UINT32 wmi_command) WMI_RETURN_STRING(WMI_ROAM_BSS_LOAD_CONFIG_CMDID); WMI_RETURN_STRING(WMI_VDEV_GET_MWS_COEX_INFO_CMDID); WMI_RETURN_STRING(WMI_REQUEST_WLM_STATS_CMDID); + WMI_RETURN_STRING(WMI_PDEV_SET_RAP_CONFIG_CMDID); } return "Invalid WMI cmd"; @@ -24194,343 +24343,6 @@ typedef enum { #define WLM_FLAGS_PS_DISABLE_SYS_SLEEP 1 /* disable sys sleep */ -typedef enum { - WMI_ROAM_TRIGGER_REASON_NONE = 0, - WMI_ROAM_TRIGGER_REASON_PER, - WMI_ROAM_TRIGGER_REASON_BMISS, - WMI_ROAM_TRIGGER_REASON_LOW_RSSI, - WMI_ROAM_TRIGGER_REASON_HIGH_RSSI, - WMI_ROAM_TRIGGER_REASON_PERIODIC, - WMI_ROAM_TRIGGER_REASON_MAWC, - WMI_ROAM_TRIGGER_REASON_DENSE, - WMI_ROAM_TRIGGER_REASON_BACKGROUND, - WMI_ROAM_TRIGGER_REASON_FORCED, - WMI_ROAM_TRIGGER_REASON_BTM, - WMI_ROAM_TRIGGER_REASON_UNIT_TEST, - WMI_ROAM_TRIGGER_REASON_BSS_LOAD, - WMI_ROAM_TRIGGER_REASON_MAX, -} WMI_ROAM_TRIGGER_REASON_ID; - -/* value for DENSE roam trigger */ -#define WMI_RX_TRAFFIC_ABOVE_THRESHOLD 0x1 -#define WMI_TX_TRAFFIC_ABOVE_THRESHOLD 0x2 - -typedef struct { - A_UINT32 trigger_id; /* id from WMI_ROAM_TRIGGER_REASON_ID */ - /* interpretation of trigger value is as follows, for different trigger IDs - * ID = PER -> value = PER percentage - * ID = LOW_RSSI -> value = rssi in dB wrt noise floor, - * ID = HIGH_RSSI -> value = rssi in dB wrt to noise floor, - * ID = DENSE -> value = specification if it is tx or rx traffic threshold, - * (see WMI_[RX,TX]_TRAFFIC_ABOVE_THRESHOLD) - * ID = PERIODIC -> value = periodicity in ms - * - * for other IDs trigger_value would be 0 (invalid) - */ - A_UINT32 trigger_value; -} wmi_roam_scan_trigger_reason; - -typedef struct { - A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_request_roam_scan_stats_cmd_fixed_param */ - A_UINT32 vdev_id; -} wmi_request_roam_scan_stats_cmd_fixed_param; - -typedef struct { - /* - * The timestamp is in units of ticks of a 19.2MHz clock. - * The timestamp is taken at roam scan start. - */ - A_UINT32 lower32bit; - A_UINT32 upper32bit; -} wmi_roaming_timestamp; - -typedef struct { - A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_roam_scan_stats_event_fixed_param */ - A_UINT32 vdev_id; - /* number of roam scans */ - A_UINT32 num_roam_scans; - /* This TLV is followed by TLV's: - * A_UINT32 client_id[num_roam_scans]; based on WMI_SCAN_CLIENT_ID - * wmi_roaming_timestamp timestamp[num_roam_scans]; clock ticks at the time of scan start - * A_UINT32 num_channels[num_roam_scans]; number of channels that are scanned - * A_UINT32 chan_info[]; channel frequencies (MHz) in each scan - * The num_channels[] elements specify how many elements there are - * within chan_info[] for each scan. - * For example, if num_channels = [2, 3] then chan_info will have 5 - * elements, with the first 2 elements from the first scan, and - * the last 3 elements from the second scan. - * wmi_mac_addr old_bssid[num_roam_scans]; bssid we are connected to at the time of roaming - * A_UINT32 is_roaming_success[num_roam_scans]; value is 1 if roaming is successful, 0 if roaming failed - * wmi_mac_addr new_bssid[num_roam_scans]; bssid after roaming - * A_UINT32 num_of_roam_candidates[num_roam_scans]; number of candidates found in each roam scan - * roam_scan_trigger_reason roam_reason[num_roam_scans]; reason for each roam scan - * wmi_mac_addr bssid[]; bssids of candidates in each roam scan - * The num_of_roam_candidates[] elements specify how many elements - * there are within bssid[] for each scan. - * For example, if num_of_roam_candidates = [2, 3] then bssid will - * have 5 elements, with the first 2 elements from the first scan, - * and the last 3 elements from the second scan. - * A_UINT32 score[]; score of candidates in each roam scan - * The num_of_roam_candidates[] elements specify how many elements - * there are within score[] for each scan. - * For example, if num_of_roam_candidates = [2, 3] then score will - * have 5 elements, with the first 2 elements from the first scan, - * and the last 3 elements from the second scan. - * A_UINT32 channel[]; channel frequency (MHz) of candidates in each roam scan - * The num_of_roam_candidates[] elements specify how many elements - * there are within channel[] for each scan. - * For example, if num_of_roam_candidates = [2, 3] then channel will - * have 5 elements, with the first 2 elements from the first scan, - * and the last 3 elements from the second scan. - * A_UINT32 rssi[]; rssi in dB w.r.t. noise floor of candidates - * in each roam scan. - * The num_of_roam_candidates[] elements specify how many elements - * there are within rssi[] for each scan. - * For example, if num_of_roam_candidates = [2, 3] then rssi will - * have 5 elements, with the first 2 elements from the first scan, - * and the last 3 elements from the second scan. - */ -} wmi_roam_scan_stats_event_fixed_param; - -typedef struct { - A_UINT32 tlv_header; /* TLV tag and len; tag equals wmi_txpower_query_cmd_fixed_param */ - A_UINT32 request_id; /* unique request ID to distinguish the command / event set */ - - /* The mode value has the following meaning : - * 0 : 11a - * 1 : 11bg - * 2 : 11b - * 3 : 11g only - * 4 : 11a HT20 - * 5 : 11g HT20 - * 6 : 11a HT40 - * 7 : 11g HT40 - * 8 : 11a VHT20 - * 9 : 11a VHT40 - * 10 : 11a VHT80 - * 11 : 11g VHT20 - * 12 : 11g VHT40 - * 13 : 11g VHT80 - * 14 : unknown - */ - A_UINT32 mode; - A_UINT32 rate; /* rate index */ - A_UINT32 nss; /* number of spatial stream */ - A_UINT32 beamforming; /* beamforming parameter 0:disabled, 1:enabled */ - A_UINT32 chain_mask; /* mask for the antenna set to get power */ - A_UINT32 chain_index; /* index for the antenna */ -} wmi_get_tpc_power_cmd_fixed_param; - -typedef struct { - A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_get_tpc_power_evt_fixed_param */ - A_UINT32 request_id; /* request ID set by the command */ - A_INT32 tx_power; /* TX power for the specified HALPHY parameters in half dBm unit */ -} wmi_get_tpc_power_evt_fixed_param; - -/* below structures are related to Motion Detection. */ -typedef struct { - /** TLV tag and len; tag equals - * WMITLV_TAG_STRUC_wmi_motion_det_config_params_cmd_fixed_param */ - A_UINT32 tlv_header; /** TLV Header */ - A_UINT32 vdev_id; /** Vdev ID */ - A_UINT32 time_t1; /** Time gap of successive bursts of - * measurement frames during coarse - * motion detection (in ms) */ - A_UINT32 time_t2; /** Time gap of successive bursts of - * measurement frames during fine - * motion detection (in ms) */ - A_UINT32 n1; /** number of measurement frames in one - * burst, for coarse detection */ - A_UINT32 n2; /** number of measurement frames in one - * burst, for fine detection */ - A_UINT32 time_t1_gap; /** gap between measurement frames in - * course detection (in ms) */ - A_UINT32 time_t2_gap; /** gap between measurement frames in - * fine detection (in ms) */ - A_UINT32 coarse_K; /** number of times motion detection has to - * be performed for coarse detection */ - A_UINT32 fine_K; /** number of times motion detection has to - * be performed for fine detection */ - A_UINT32 coarse_Q; /** number of times motion is expected - * to be detected for success case in - * coarse detection */ - A_UINT32 fine_Q; /** number of times motion is expected - * to be detected for success case in - * fine detection */ - A_UINT32 md_coarse_thr_high; /** higher threshold value (in percent) - * from host to FW, which will be used in - * coarse detection phase of motion detection. - * This is the threshold for the correlation - * of the old RF local-scattering environment - * with the current RF local-scattering - * environment. A value of 100(%) indicates - * that neither the transceiver nor any - * nearby objects have changed position. */ - A_UINT32 md_fine_thr_high; /** higher threshold value (in percent) - * from host to FW, which will be used in - * fine detection phase of motion detection. - * This is the threshold for correlation - * between the old and current RF environments, - * as explained above. */ - A_UINT32 md_coarse_thr_low; /** lower threshold value (in percent) - * for immediate detection of motion in - * coarse detection phase. - * This is the threshold for correlation - * between the old and current RF environments, - * as explained above. */ - A_UINT32 md_fine_thr_low; /** lower threshold value (in percent) - * for immediate detection of motion in - * fine detection phase. - * This is the threshold for correlation - * between the old and current RF environments, - * as explained above. */ -} wmi_motion_det_config_params_cmd_fixed_param; - -typedef struct { - /** TLV tag and len; tag equals - * WMITLV_TAG_STRUC_wmi_motion_det_base_line_config_params_cmd_fixed_param */ - A_UINT32 tlv_header; /** TLV Header */ - A_UINT32 vdev_id; /** Vdev ID */ - A_UINT32 bl_time_t; /** time T for baseline (in ms) - * Every bl_time_t, bl_n packets are sent */ - A_UINT32 bl_packet_gap; /** gap between measurement frames for baseline - * (in ms) */ - A_UINT32 bl_n; /** number of measurement frames to be sent - * during one baseline */ - A_UINT32 bl_num_meas; /** number of times the baseline measurement - * to be done */ -} wmi_motion_det_base_line_config_params_cmd_fixed_param; - -typedef struct { - /** TLV tag and len; tag equals - * WMITLV_TAG_STRUC_wmi_motion_det_start_stop_cmd_fixed_param */ - A_UINT32 tlv_header; /** TLV Header */ - A_UINT32 vdev_id; /** Vdev ID */ - A_UINT32 enable; /** start = 1, stop =0 */ -} wmi_motion_det_start_stop_cmd_fixed_param; - -typedef struct { - /** TLV tag and len; tag equals - * WMITLV_TAG_STRUC_wmi_motion_det_base_line_start_stop_cmd_fixed_param */ - A_UINT32 tlv_header; /** TLV Header */ - A_UINT32 vdev_id; /** Vdev ID */ - A_UINT32 enable; /** start = 1, stop =0 */ -} wmi_motion_det_base_line_start_stop_cmd_fixed_param; - -typedef struct { - /** TLV tag and len; tag equals - * WMITLV_TAG_STRUC_wmi_motion_det_event */ - A_UINT32 tlv_header; /** TLV Header */ - A_UINT32 vdev_id; /** Vdev ID */ - A_UINT32 status; /** status = 1 -> motion detected */ -} wmi_motion_det_event; - -typedef struct { - /** TLV tag and len; tag equals - * WMITLV_TAG_STRUC_wmi_motion_det_base_line_event */ - A_UINT32 tlv_header; /** TLV Header */ - A_UINT32 vdev_id; /** Vdev ID */ - A_UINT32 bl_baseline_value; /** baseline correlation value calculated - * during baselining phase (in %) */ - A_UINT32 bl_max_corr_reserved; /** max corr value obtained during baselining - * phase (in %); reserved for future */ - A_UINT32 bl_min_corr_reserved; /** min corr value obtained during baselining - * phase (in %); reserved for future */ -} wmi_motion_det_base_line_event; - -/* Below structures are related to OBSS_PD_SPATIAL Reuse */ -typedef struct { - /** TLV tag and len; tag equals - * WMITLV_TAG_STRUC_wmi_obss_set_cmd_fixed_param */ - A_UINT32 tlv_header; - /** Enable/Disable Spatial Reuse */ - A_UINT32 enable; - /* - * In the below fields, "OBSS level" refers to the power of the - * signals received from "Other BSS". - * Spatial reuse will only be permitted if the Other BSS's signal power - * is witin the min to max range specified by the below fields. - */ - /** Minimum OBSS level to use */ - A_INT32 obss_min; /* RSSI in dBm */ - /** Maximum OBSS level to use */ - A_INT32 obss_max; /* RSSI in dBm */ - /** Vdev id*/ - A_UINT32 vdev_id; -} wmi_obss_spatial_reuse_set_cmd_fixed_param; - -/* - * Below structure is related to WMI CMD that configures the default - * mimimum (OBSS_MIN) and maximum (OBSS_MAX) Other BSS levels (RSSI in dbm) - * for VDEV of a give type (STA or AP). These thresholds are configured - * within the Host and passed down to the FW. FW will use these - * default OBSS_MIN and OBSS_MAX values during roaming if the assoc response - * from the AP does not include spatial reuse parameter set Info Element. - */ -typedef struct { - /** TLV tag and len; tag equals - * WMITLV_TAG_STRUC_wmi_obss_spatial_reuse_set_def_obss_thresh_cmd_fixed_param - */ - A_UINT32 tlv_header; - /* - * In the below fields, "OBSS level" refers to the power of the - * signals received from "Other BSS". - * Spatial reuse will only be permitted if the Other BSS's signal power - * is witin the min to max range specified by the below fields. - */ - /** Minimum OBSS level to use */ - A_INT32 obss_min; /* RSSI in dBm */ - /** Maximum OBSS level to use */ - A_INT32 obss_max; /* RSSI in dBm */ - /** Type of VDEV for which these threshold are applicable. - * vdev_type should be one of WMI_VDEV_TYPE_STA or WMI_VDEV_TYPE_AP - */ - A_UINT32 vdev_type; -} wmi_obss_spatial_reuse_set_def_obss_thresh_cmd_fixed_param; - -typedef struct { - A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUCT_wmi_chan_width_peer_list */ - wmi_mac_addr peer_macaddr; - A_UINT32 chan_width; /* wmi_channel_width */ -} wmi_chan_width_peer_list; - -typedef struct { - A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_peer_chan_width_switch_cmd_fixed_param */ - A_UINT32 num_peers; - /* - * Following this structure is the TLV: - * struct wmi_chan_width_peer_list chan_width_peer_info[num_peers]; - */ -} wmi_peer_chan_width_switch_cmd_fixed_param; - -typedef struct { - /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_pdev_he_tb_action_frm_cmd_fixed_param */ - A_UINT32 tlv_header; - /* enable or disable HE TB Action frame */ - A_UINT32 enable; - /* length of action frame body in bytes */ - A_UINT32 data_len; -/* This TLV is followed by another TLV of array of bytes - * A_UINT8 data[]; - * This data array contains the action frame raw data - */ -} wmi_pdev_he_tb_action_frm_cmd_fixed_param; - -typedef struct { - /** TLV tag and len; tag equals - * WMITLV_TAG_STRUC_wmi_hpcs_pulse_start_cmd_fixed_param */ - A_UINT32 tlv_header; /** TLV Header */ - A_UINT32 vdev_id; /** Vdev ID */ - A_UINT32 start; /** Start/Stop */ - A_UINT32 sync_time; /** Lower 32-bit of the TSF at which the - * pulse should be synced. */ - A_UINT32 pulse_interval; /** Periodicity of pulses in micro seconds */ - A_UINT32 active_sync_period; /** Number of beacons to sync before generating - * pulse in units of beacon interval. - * Valid for clock slaves only. */ - A_UINT32 gpio_pin; /** GPIO Pin number to be used */ - A_UINT32 pulse_width; /** Duration of pulse in micro seconds */ -} wmi_hpcs_pulse_start_cmd_fixed_param; /* bit 17-31 of flags is reserved for powersave and WAL */ @@ -24580,6 +24392,10 @@ typedef struct { A_UINT32 flags; } wmi_wlm_config_cmd_fixed_param; +/* Broadcast TWT enable/disable */ +#define TWT_EN_DIS_FLAGS_GET_BTWT(flag) WMI_GET_BITS(flag, 0, 1) +#define TWT_EN_DIS_FLAGS_SET_BTWT(flag, val) WMI_SET_BITS(flag, 0, 1, val) + typedef struct { A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_twt_enable_cmd_fixed_param */ /** pdev_id for identifying the MAC. See macros starting with WMI_PDEV_ID_ for values. In non-DBDC case host should set it to 0 @@ -24613,6 +24429,7 @@ typedef struct { A_UINT32 mode_check_interval; /* Interval between two successive check to decide the mode of TWT */ A_UINT32 add_sta_slot_interval; /* Interval between decisions making to create TWT slots for STAs */ A_UINT32 remove_sta_slot_interval; /* Inrerval between decisions making to remove TWT slot of STAs */ + A_UINT32 flags; /* enable/disable flags, refer to MACROs TWT_EN_DIS_FLAGS_* (TWT_EN_DIS_FLAGS_GET_BTWT etc.) */ } wmi_twt_enable_cmd_fixed_param; /* status code of enabling TWT */ @@ -24635,6 +24452,7 @@ typedef struct { A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_twt_disable_cmd_fixed_param */ /** pdev_id for identifying the MAC. See macros starting with WMI_PDEV_ID_ for values. In non-DBDC case host should set it to 0 */ A_UINT32 pdev_id; /* host should never set it to WMI_PDEV_ID_SOC */ + A_UINT32 flags; /* enable/disable flags, refer to MACROs TWT_EN_DIS_FLAGS_* (TWT_EN_DIS_FLAGS_GET_BTWT etc.) */ } wmi_twt_disable_cmd_fixed_param; typedef struct { @@ -24800,7 +24618,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 { @@ -24905,8 +24724,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; @@ -24981,6 +24800,356 @@ typedef struct { A_UINT32 dpd_dur_max_ms; } wmi_runtime_dpd_recal_cmd_fixed_param; +typedef enum { + WMI_ROAM_TRIGGER_REASON_NONE = 0, + WMI_ROAM_TRIGGER_REASON_PER, + WMI_ROAM_TRIGGER_REASON_BMISS, + WMI_ROAM_TRIGGER_REASON_LOW_RSSI, + WMI_ROAM_TRIGGER_REASON_HIGH_RSSI, + WMI_ROAM_TRIGGER_REASON_PERIODIC, + WMI_ROAM_TRIGGER_REASON_MAWC, + WMI_ROAM_TRIGGER_REASON_DENSE, + WMI_ROAM_TRIGGER_REASON_BACKGROUND, + WMI_ROAM_TRIGGER_REASON_FORCED, + WMI_ROAM_TRIGGER_REASON_BTM, + WMI_ROAM_TRIGGER_REASON_UNIT_TEST, + WMI_ROAM_TRIGGER_REASON_BSS_LOAD, + WMI_ROAM_TRIGGER_REASON_MAX, +} WMI_ROAM_TRIGGER_REASON_ID; + +/* value for DENSE roam trigger */ +#define WMI_RX_TRAFFIC_ABOVE_THRESHOLD 0x1 +#define WMI_TX_TRAFFIC_ABOVE_THRESHOLD 0x2 + +typedef struct { + A_UINT32 trigger_id; /* id from WMI_ROAM_TRIGGER_REASON_ID */ + /* interpretation of trigger value is as follows, for different trigger IDs + * ID = PER -> value = PER percentage + * ID = LOW_RSSI -> value = rssi in dB wrt noise floor, + * ID = HIGH_RSSI -> value = rssi in dB wrt to noise floor, + * ID = DENSE -> value = specification if it is tx or rx traffic threshold, + * (see WMI_[RX,TX]_TRAFFIC_ABOVE_THRESHOLD) + * ID = PERIODIC -> value = periodicity in ms + * + * for other IDs trigger_value would be 0 (invalid) + */ + A_UINT32 trigger_value; +} wmi_roam_scan_trigger_reason; + +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_request_roam_scan_stats_cmd_fixed_param */ + A_UINT32 vdev_id; +} wmi_request_roam_scan_stats_cmd_fixed_param; + +/** BSS load configuration parameters for roam trigger */ +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_roam_bss_load_cmd_fixed_param */ + A_UINT32 vdev_id; + /** Minimum number of beacons to be consider for calculating average AP BSS load within time monitor_time_window */ + A_UINT32 beacons_min_count; + /** Monitor time window in seconds */ + A_UINT32 monitor_time_window; + /** BSS load threshold after which roam scan should trigger */ + A_UINT32 bss_load_threshold; +} wmi_roam_bss_load_config_cmd_fixed_param; + +typedef struct { + /* + * The timestamp is in units of ticks of a 19.2MHz clock. + * The timestamp is taken at roam scan start. + */ + A_UINT32 lower32bit; + A_UINT32 upper32bit; +} wmi_roaming_timestamp; + +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_roam_scan_stats_event_fixed_param */ + A_UINT32 vdev_id; + /* number of roam scans */ + A_UINT32 num_roam_scans; + /* This TLV is followed by TLV's: + * A_UINT32 client_id[num_roam_scans]; based on WMI_SCAN_CLIENT_ID + * wmi_roaming_timestamp timestamp[num_roam_scans]; clock ticks at the time of scan start + * A_UINT32 num_channels[num_roam_scans]; number of channels that are scanned + * A_UINT32 chan_info[]; channel frequencies (MHz) in each scan + * The num_channels[] elements specify how many elements there are + * within chan_info[] for each scan. + * For example, if num_channels = [2, 3] then chan_info will have 5 + * elements, with the first 2 elements from the first scan, and + * the last 3 elements from the second scan. + * wmi_mac_addr old_bssid[num_roam_scans]; bssid we are connected to at the time of roaming + * A_UINT32 is_roaming_success[num_roam_scans]; value is 1 if roaming is successful, 0 if roaming failed + * wmi_mac_addr new_bssid[num_roam_scans]; bssid after roaming + * A_UINT32 num_of_roam_candidates[num_roam_scans]; number of candidates found in each roam scan + * roam_scan_trigger_reason roam_reason[num_roam_scans]; reason for each roam scan + * wmi_mac_addr bssid[]; bssids of candidates in each roam scan + * The num_of_roam_candidates[] elements specify how many elements + * there are within bssid[] for each scan. + * For example, if num_of_roam_candidates = [2, 3] then bssid will + * have 5 elements, with the first 2 elements from the first scan, + * and the last 3 elements from the second scan. + * A_UINT32 score[]; score of candidates in each roam scan + * The num_of_roam_candidates[] elements specify how many elements + * there are within score[] for each scan. + * For example, if num_of_roam_candidates = [2, 3] then score will + * have 5 elements, with the first 2 elements from the first scan, + * and the last 3 elements from the second scan. + * A_UINT32 channel[]; channel frequency (MHz) of candidates in each roam scan + * The num_of_roam_candidates[] elements specify how many elements + * there are within channel[] for each scan. + * For example, if num_of_roam_candidates = [2, 3] then channel will + * have 5 elements, with the first 2 elements from the first scan, + * and the last 3 elements from the second scan. + * A_UINT32 rssi[]; rssi in dB w.r.t. noise floor of candidates + * in each roam scan. + * The num_of_roam_candidates[] elements specify how many elements + * there are within rssi[] for each scan. + * For example, if num_of_roam_candidates = [2, 3] then rssi will + * have 5 elements, with the first 2 elements from the first scan, + * and the last 3 elements from the second scan. + */ +} wmi_roam_scan_stats_event_fixed_param; + +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals wmi_txpower_query_cmd_fixed_param */ + A_UINT32 request_id; /* unique request ID to distinguish the command / event set */ + + /* The mode value has the following meaning : + * 0 : 11a + * 1 : 11bg + * 2 : 11b + * 3 : 11g only + * 4 : 11a HT20 + * 5 : 11g HT20 + * 6 : 11a HT40 + * 7 : 11g HT40 + * 8 : 11a VHT20 + * 9 : 11a VHT40 + * 10 : 11a VHT80 + * 11 : 11g VHT20 + * 12 : 11g VHT40 + * 13 : 11g VHT80 + * 14 : unknown + */ + A_UINT32 mode; + A_UINT32 rate; /* rate index */ + A_UINT32 nss; /* number of spatial stream */ + A_UINT32 beamforming; /* beamforming parameter 0:disabled, 1:enabled */ + A_UINT32 chain_mask; /* mask for the antenna set to get power */ + A_UINT32 chain_index; /* index for the antenna */ +} wmi_get_tpc_power_cmd_fixed_param; + +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_get_tpc_power_evt_fixed_param */ + A_UINT32 request_id; /* request ID set by the command */ + A_INT32 tx_power; /* TX power for the specified HALPHY parameters in half dBm unit */ +} wmi_get_tpc_power_evt_fixed_param; + +/* below structures are related to Motion Detection. */ +typedef struct { + /** TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_motion_det_config_params_cmd_fixed_param */ + A_UINT32 tlv_header; /** TLV Header */ + A_UINT32 vdev_id; /** Vdev ID */ + A_UINT32 time_t1; /** Time gap of successive bursts of + * measurement frames during coarse + * motion detection (in ms) */ + A_UINT32 time_t2; /** Time gap of successive bursts of + * measurement frames during fine + * motion detection (in ms) */ + A_UINT32 n1; /** number of measurement frames in one + * burst, for coarse detection */ + A_UINT32 n2; /** number of measurement frames in one + * burst, for fine detection */ + A_UINT32 time_t1_gap; /** gap between measurement frames in + * course detection (in ms) */ + A_UINT32 time_t2_gap; /** gap between measurement frames in + * fine detection (in ms) */ + A_UINT32 coarse_K; /** number of times motion detection has to + * be performed for coarse detection */ + A_UINT32 fine_K; /** number of times motion detection has to + * be performed for fine detection */ + A_UINT32 coarse_Q; /** number of times motion is expected + * to be detected for success case in + * coarse detection */ + A_UINT32 fine_Q; /** number of times motion is expected + * to be detected for success case in + * fine detection */ + A_UINT32 md_coarse_thr_high; /** higher threshold value (in percent) + * from host to FW, which will be used in + * coarse detection phase of motion detection. + * This is the threshold for the correlation + * of the old RF local-scattering environment + * with the current RF local-scattering + * environment. A value of 100(%) indicates + * that neither the transceiver nor any + * nearby objects have changed position. */ + A_UINT32 md_fine_thr_high; /** higher threshold value (in percent) + * from host to FW, which will be used in + * fine detection phase of motion detection. + * This is the threshold for correlation + * between the old and current RF environments, + * as explained above. */ + A_UINT32 md_coarse_thr_low; /** lower threshold value (in percent) + * for immediate detection of motion in + * coarse detection phase. + * This is the threshold for correlation + * between the old and current RF environments, + * as explained above. */ + A_UINT32 md_fine_thr_low; /** lower threshold value (in percent) + * for immediate detection of motion in + * fine detection phase. + * This is the threshold for correlation + * between the old and current RF environments, + * as explained above. */ +} wmi_motion_det_config_params_cmd_fixed_param; + +typedef struct { + /** TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_motion_det_base_line_config_params_cmd_fixed_param */ + A_UINT32 tlv_header; /** TLV Header */ + A_UINT32 vdev_id; /** Vdev ID */ + A_UINT32 bl_time_t; /** time T for baseline (in ms) + * Every bl_time_t, bl_n packets are sent */ + A_UINT32 bl_packet_gap; /** gap between measurement frames for baseline + * (in ms) */ + A_UINT32 bl_n; /** number of measurement frames to be sent + * during one baseline */ + A_UINT32 bl_num_meas; /** number of times the baseline measurement + * to be done */ +} wmi_motion_det_base_line_config_params_cmd_fixed_param; + +typedef struct { + /** TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_motion_det_start_stop_cmd_fixed_param */ + A_UINT32 tlv_header; /** TLV Header */ + A_UINT32 vdev_id; /** Vdev ID */ + A_UINT32 enable; /** start = 1, stop =0 */ +} wmi_motion_det_start_stop_cmd_fixed_param; + +typedef struct { + /** TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_motion_det_base_line_start_stop_cmd_fixed_param */ + A_UINT32 tlv_header; /** TLV Header */ + A_UINT32 vdev_id; /** Vdev ID */ + A_UINT32 enable; /** start = 1, stop =0 */ +} wmi_motion_det_base_line_start_stop_cmd_fixed_param; + +typedef struct { + /** TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_motion_det_event */ + A_UINT32 tlv_header; /** TLV Header */ + A_UINT32 vdev_id; /** Vdev ID */ + A_UINT32 status; /** status = 1 -> motion detected */ +} wmi_motion_det_event; + +typedef struct { + /** TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_motion_det_base_line_event */ + A_UINT32 tlv_header; /** TLV Header */ + A_UINT32 vdev_id; /** Vdev ID */ + A_UINT32 bl_baseline_value; /** baseline correlation value calculated + * during baselining phase (in %) */ + A_UINT32 bl_max_corr_reserved; /** max corr value obtained during baselining + * phase (in %); reserved for future */ + A_UINT32 bl_min_corr_reserved; /** min corr value obtained during baselining + * phase (in %); reserved for future */ +} wmi_motion_det_base_line_event; + +/* Below structures are related to OBSS_PD_SPATIAL Reuse */ +typedef struct { + /** TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_obss_set_cmd_fixed_param */ + A_UINT32 tlv_header; + /** Enable/Disable Spatial Reuse */ + A_UINT32 enable; + /* + * In the below fields, "OBSS level" refers to the power of the + * signals received from "Other BSS". + * Spatial reuse will only be permitted if the Other BSS's signal power + * is witin the min to max range specified by the below fields. + */ + /** Minimum OBSS level to use */ + A_INT32 obss_min; /* RSSI in dBm */ + /** Maximum OBSS level to use */ + A_INT32 obss_max; /* RSSI in dBm */ + /** Vdev id*/ + A_UINT32 vdev_id; +} wmi_obss_spatial_reuse_set_cmd_fixed_param; + +/* + * Below structure is related to WMI CMD that configures the default + * mimimum (OBSS_MIN) and maximum (OBSS_MAX) Other BSS levels (RSSI in dbm) + * for VDEV of a give type (STA or AP). These thresholds are configured + * within the Host and passed down to the FW. FW will use these + * default OBSS_MIN and OBSS_MAX values during roaming if the assoc response + * from the AP does not include spatial reuse parameter set Info Element. + */ +typedef struct { + /** TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_obss_spatial_reuse_set_def_obss_thresh_cmd_fixed_param + */ + A_UINT32 tlv_header; + /* + * In the below fields, "OBSS level" refers to the power of the + * signals received from "Other BSS". + * Spatial reuse will only be permitted if the Other BSS's signal power + * is witin the min to max range specified by the below fields. + */ + /** Minimum OBSS level to use */ + A_INT32 obss_min; /* RSSI in dBm */ + /** Maximum OBSS level to use */ + A_INT32 obss_max; /* RSSI in dBm */ + /** Type of VDEV for which these threshold are applicable. + * vdev_type should be one of WMI_VDEV_TYPE_STA or WMI_VDEV_TYPE_AP + */ + A_UINT32 vdev_type; +} wmi_obss_spatial_reuse_set_def_obss_thresh_cmd_fixed_param; + +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUCT_wmi_chan_width_peer_list */ + wmi_mac_addr peer_macaddr; + A_UINT32 chan_width; /* wmi_channel_width */ +} wmi_chan_width_peer_list; + +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_peer_chan_width_switch_cmd_fixed_param */ + A_UINT32 num_peers; + /* + * Following this structure is the TLV: + * struct wmi_chan_width_peer_list chan_width_peer_info[num_peers]; + */ +} wmi_peer_chan_width_switch_cmd_fixed_param; + +typedef struct { + /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_pdev_he_tb_action_frm_cmd_fixed_param */ + A_UINT32 tlv_header; + /* enable or disable HE TB Action frame */ + A_UINT32 enable; + /* length of action frame body in bytes */ + A_UINT32 data_len; +/* This TLV is followed by another TLV of array of bytes + * A_UINT8 data[]; + * This data array contains the action frame raw data + */ +} wmi_pdev_he_tb_action_frm_cmd_fixed_param; + +typedef struct { + /** TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_hpcs_pulse_start_cmd_fixed_param */ + A_UINT32 tlv_header; /** TLV Header */ + A_UINT32 vdev_id; /** Vdev ID */ + A_UINT32 start; /** Start/Stop */ + A_UINT32 sync_time; /** Lower 32-bit of the TSF at which the + * pulse should be synced. */ + A_UINT32 pulse_interval; /** Periodicity of pulses in micro seconds */ + A_UINT32 active_sync_period; /** Number of beacons to sync before generating + * pulse in units of beacon interval. + * Valid for clock slaves only. */ + A_UINT32 gpio_pin; /** GPIO Pin number to be used */ + A_UINT32 pulse_width; /** Duration of pulse in micro seconds */ +} wmi_hpcs_pulse_start_cmd_fixed_param; + /* Default PE Duration subfield indicates the PE duration in units of 4 us */ #define WMI_HEOPS_DEFPE_GET_D3(he_ops) WMI_GET_BITS(he_ops, 0, 3) #define WMI_HEOPS_DEFPE_SET_D3(he_ops, value) WMI_SET_BITS(he_ops, 0, 3, value) @@ -26030,6 +26199,100 @@ 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 + +/** + * wmi_cold_boot_cal_data config flags + * BIT 0 : 1 means more data will come, 0 means last event + * BIT 1-31 : Reserved + */ +#define WMI_COLD_BOOT_CAL_DATA_SET_IS_MORE_DATA(flags, val) WMI_SET_BITS(flags, 0, 1, val) +#define WMI_COLD_BOOT_CAL_DATA_GET_IS_MORE_DATA(flags) WMI_GET_BITS(flags, 0, 1) + +typedef struct { + A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_cold_boot_cal_data_fixed_param */ + A_UINT32 data_len; /** length in byte of data[]. */ + A_UINT32 flags; /** config flags : Only 0th bit is used, bit 1-31 are reserved */ +/* Following this structure is the TLV: + * A_UINT8 data[]; <-- length in byte given by field data_len. + * This data array contains cold boot data calibration raw data. + */ +} wmi_cold_boot_cal_data_fixed_param; + +typedef struct { + A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_pdev_rap_info_event_fixed_param */ + /** pdev_id for identifying the MAC, the default value is WMI_PDEV_ID_SOC + * See macros starting with WMI_PDEV_ID_ for values. + */ + A_UINT32 pdev_id; + A_UINT32 type; /** type of the rogue ap, see WMI_ROGUE_AP_TYPE */ + wmi_mac_addr bssid; /** bssid of the rogue ap */ +} wmi_pdev_rap_info_event_fixed_param; + /* ADD NEW DEFS HERE */ @@ -26074,18 +26337,6 @@ typedef struct A_UINT32 rx_stats; } wmi_ocb_channel_t; -/** BSS load configuration parameters for roam trigger */ -typedef struct { - A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_roam_bss_load_cmd_fixed_param */ - A_UINT32 vdev_id; - /** Minimum number of beacons to be consider for calculating average AP BSS load within time monitor_time_window */ - A_UINT32 beacons_min_count; - /** Monitor time window in seconds */ - A_UINT32 monitor_time_window; - /** BSS load threshold after which roam scan should trigger */ - A_UINT32 bss_load_threshold; -} wmi_roam_bss_load_config_cmd_fixed_param; - typedef struct { /** TLV tag and len; tag equals * WMITLV_TAG_STRUC_wmi_ocb_set_sched_cmd_fixed_param */ diff --git a/CORE/SERVICES/COMMON/wmi_version.h b/CORE/SERVICES/COMMON/wmi_version.h index f45ca4c5b8ae..10c74f5af419 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_ 631 +#define __WMI_REVISION_ 639 /** 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 3d9e5bf7f6b2..8091ddaaf0aa 100644 --- a/CORE/SERVICES/WMI/wmi_unified.c +++ b/CORE/SERVICES/WMI/wmi_unified.c @@ -810,6 +810,7 @@ static u_int8_t* get_wmi_cmd_string(WMI_CMD_ID wmi_command) CASE_RETURN_STRING(WMI_ROAM_BSS_LOAD_CONFIG_CMDID); CASE_RETURN_STRING(WMI_VDEV_GET_MWS_COEX_INFO_CMDID); CASE_RETURN_STRING(WMI_REQUEST_WLM_STATS_CMDID); + CASE_RETURN_STRING(WMI_PDEV_SET_RAP_CONFIG_CMDID); } return "Invalid WMI cmd"; } |
