1 /* 2 * Copyright (c) 2016-2021 The Linux Foundation. All rights reserved. 3 * Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved. 4 * 5 * Permission to use, copy, modify, and/or distribute this software for 6 * any purpose with or without fee is hereby granted, provided that the 7 * above copyright notice and this permission notice appear in all 8 * copies. 9 * 10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL 11 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED 12 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE 13 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL 14 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR 15 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 16 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 17 * PERFORMANCE OF THIS SOFTWARE. 18 */ 19 20 /* 21 * This file contains the API definitions for the Unified Wireless Module 22 * Interface (WMI). 23 */ 24 25 #ifndef _WMI_UNIFIED_PARAM_H_ 26 #define _WMI_UNIFIED_PARAM_H_ 27 28 #include <wlan_scan_public_structs.h> 29 #ifdef FEATURE_WLAN_TDLS 30 #include <wlan_tdls_public_structs.h> 31 #endif 32 #ifdef WLAN_CONV_SPECTRAL_ENABLE 33 #include <wlan_spectral_public_structs.h> 34 #endif /* WLAN_CONV_SPECTRAL_ENABLE */ 35 36 #include "wifi_pos_public_struct.h" 37 #include <wlan_vdev_mgr_tgt_if_tx_defs.h> 38 #include <wlan_vdev_mgr_tgt_if_rx_defs.h> 39 #include <reg_services_public_struct.h> 40 41 #ifndef ENABLE_HOST_TO_TARGET_CONVERSION 42 #include <wmi_unified.h> 43 #endif 44 #include <wlan_objmgr_vdev_obj.h> 45 46 #define MAC_MAX_KEY_LENGTH 32 47 #define MAC_PN_LENGTH 8 48 #define MAX_MAC_HEADER_LEN 32 49 #define MIN_MAC_HEADER_LEN 24 50 #define QOS_CONTROL_LEN 2 51 52 #define WMI_MAC_MAX_SSID_LENGTH 32 53 #ifndef CONFIG_HL_SUPPORT 54 #define mgmt_tx_dl_frm_len 64 55 #else 56 #define mgmt_tx_dl_frm_len 1532 57 #endif 58 #define WMI_SMPS_MASK_LOWER_16BITS 0xFF 59 #define WMI_SMPS_MASK_UPPER_3BITS 0x7 60 #define WMI_SMPS_PARAM_VALUE_S 29 61 #define WMI_UNIT_TEST_MAX_NUM_ARGS 100 62 /* The size of the utc time in bytes. */ 63 #define WMI_SIZE_UTC_TIME (10) 64 /* The size of the utc time error in bytes. */ 65 #define WMI_SIZE_UTC_TIME_ERROR (5) 66 #ifdef WLAN_MCC_MIN_CHANNEL_QUOTA 67 #define WMI_MCC_MIN_CHANNEL_QUOTA WLAN_MCC_MIN_CHANNEL_QUOTA 68 #define WMI_MCC_MAX_CHANNEL_QUOTA (100 - WLAN_MCC_MIN_CHANNEL_QUOTA) 69 #else 70 #define WMI_MCC_MIN_CHANNEL_QUOTA 20 71 #define WMI_MCC_MAX_CHANNEL_QUOTA 80 72 #endif 73 #define WMI_MCC_MIN_NON_ZERO_CHANNEL_LATENCY 30 74 75 #ifdef WMI_AP_SUPPORT 76 #define WMI_BEACON_TX_BUFFER_SIZE (2500) 77 #else 78 #define WMI_BEACON_TX_BUFFER_SIZE (512) 79 #endif 80 81 #define WMI_WIFI_SCANNING_MAC_OUI_LENGTH 3 82 #define WMI_EXTSCAN_MAX_SIGNIFICANT_CHANGE_APS 64 83 #define WMI_RSSI_THOLD_DEFAULT -300 84 #define WMI_NLO_FREQ_THRESH 1000 85 #define WMI_SEC_TO_MSEC(sec) (sec * 1000) 86 #define WMI_MSEC_TO_USEC(msec) (msec * 1000) 87 #define WMI_ETH_LEN 64 88 #define WMI_QOS_NUM_TSPEC_MAX 2 89 #define WMI_IPV4_ADDR_LEN 4 90 #define WMI_KEEP_ALIVE_NULL_PKT 1 91 #define WMI_KEEP_ALIVE_UNSOLICIT_ARP_RSP 2 92 #define WMI_KEEP_ALIVE_MGMT_FRAME 5 93 #define WMI_MAC_MAX_KEY_LENGTH 32 94 #define WMI_KRK_KEY_LEN 16 95 #ifdef WLAN_FEATURE_ROAM_OFFLOAD 96 #define WMI_BTK_KEY_LEN 32 97 #define WMI_ROAM_R0KH_ID_MAX_LEN 48 98 #endif 99 #define WMI_NOISE_FLOOR_DBM_DEFAULT (-96) 100 #define WMI_EXTSCAN_MAX_HOTLIST_SSIDS 8 101 #define WMI_ROAM_MAX_CHANNELS 80 102 #ifdef FEATURE_WLAN_EXTSCAN 103 #define WMI_MAX_EXTSCAN_MSG_SIZE 1536 104 #define WMI_EXTSCAN_REST_TIME 100 105 #define WMI_EXTSCAN_MAX_SCAN_TIME 50000 106 #define WMI_EXTSCAN_BURST_DURATION 150 107 #endif 108 #define WMI_SCAN_NPROBES_DEFAULT (2) 109 #define WMI_SEC_TO_MSEC(sec) (sec * 1000) /* sec to msec */ 110 #define WMI_MSEC_TO_USEC(msec) (msec * 1000) /* msec to usec */ 111 #define WMI_NLO_FREQ_THRESH 1000 /* in MHz */ 112 113 #define WMI_SVC_MSG_MAX_SIZE 1536 114 #define MAX_UTF_EVENT_LENGTH 2048 115 #define MAX_WMI_UTF_LEN 252 116 #define MAX_WMI_QVIT_LEN 252 117 #define THERMAL_LEVELS 4 118 #define WMI_HOST_BCN_FLT_MAX_SUPPORTED_IES 256 119 #define WMI_HOST_BCN_FLT_MAX_ELEMS_IE_LIST \ 120 (WMI_HOST_BCN_FLT_MAX_SUPPORTED_IES/32) 121 #define LTEU_MAX_BINS 10 122 #define ATF_ACTIVED_MAX_CLIENTS 50 123 #define ATF_ACTIVED_MAX_ATFGROUPS 16 124 #define CTL_5G_SIZE 1536 125 #define CTL_2G_SIZE 684 126 #define MAX_CTL_SIZE (CTL_5G_SIZE > CTL_2G_SIZE ? CTL_5G_SIZE : CTL_2G_SIZE) 127 #define MAX_PWTAB_SIZE 3392 128 #define IEEE80211_MICBUF_SIZE (8+8) 129 #define IEEE80211_TID_SIZE 17 130 #define WME_NUM_AC 4 131 #define SMART_ANT_MODE_SERIAL 0 132 #define SMART_ANT_MODE_PARALLEL 1 133 #define IEEE80211_WEP_NKID 4 /* number of key ids */ 134 #define WPI_IV_LEN 16 135 #define WMI_SCAN_MAX_NUM_BSSID 10 136 #define MAX_CHANS 1023 137 #define TARGET_OEM_CONFIGURE_LCI 0x0A 138 #define RTT_LCI_ALTITUDE_MASK 0x3FFFFFFF 139 #define TARGET_OEM_CONFIGURE_LCR 0x09 140 #define RTT_TIMEOUT_MS 180 141 #define MAX_SUPPORTED_RATES 128 142 #define WMI_HOST_MAX_BUFFER_SIZE 1712 143 #define WMI_HAL_MAX_SANTENNA 4 144 #define WMI_HOST_PDEV_VI_PRIORITY_BIT (1<<2) 145 #define WMI_HOST_PDEV_BEACON_PRIORITY_BIT (1<<4) 146 #define WMI_HOST_PDEV_MGMT_PRIORITY_BIT (1<<5) 147 #define WMI_MAX_CMDS 1024 148 149 #define FIPS_ALIGN 4 150 #define FIPS_ALIGNTO(__addr, __to) \ 151 ((((unsigned long int)(__addr)) + (__to) - 1) & ~((__to) - 1)) 152 #define FIPS_IS_ALIGNED(__addr, __to) \ 153 (!(((unsigned long int)(__addr)) & ((__to)-1))) 154 155 #define WMI_HOST_MAX_SERIAL_ANTENNA 2 156 #define WMI_SMART_ANT_MAX_RATE_SERIES 2 157 158 #define WMI_HOST_F_MS(_v, _f) \ 159 (((_v) & (_f)) >> (_f##_S)) 160 161 #define WMI_HOST_F_RMW(_var, _v, _f) \ 162 do { \ 163 (_var) &= ~(_f); \ 164 (_var) |= (((_v) << (_f##_S)) & (_f)); \ 165 } while (0) 166 167 /* vdev capabilities bit mask */ 168 #define WMI_HOST_VDEV_BEACON_SUPPORT 0x1 169 #define WMI_HOST_VDEV_WDS_LRN_ENABLED 0x2 170 #define WMI_HOST_VDEV_VOW_ENABLED 0x4 171 #define WMI_HOST_VDEV_IS_BEACON_SUPPORTED(param) \ 172 ((param) & WMI_HOST_VDEV_BEACON_SUPPORT) 173 #define WMI_HOST_VDEV_IS_WDS_LRN_ENABLED(param) \ 174 ((param) & WMI_HOST_VDEV_WDS_LRN_ENABLED) 175 #define WMI_HOST_VDEV_IS_VOW_ENABLED(param) \ 176 ((param) & WMI_HOST_VDEV_VOW_ENABLED) 177 178 /* TXBF capabilities masks */ 179 #define WMI_HOST_TXBF_CONF_SU_TX_BFEE_S 0 180 #define WMI_HOST_TXBF_CONF_SU_TX_BFEE_M 0x1 181 #define WMI_HOST_TXBF_CONF_SU_TX_BFEE \ 182 (WMI_HOST_TXBF_CONF_SU_TX_BFEE_M << WMI_HOST_TXBF_CONF_SU_TX_BFEE_S) 183 #define WMI_HOST_TXBF_CONF_SU_TX_BFEE_GET(x) \ 184 WMI_HOST_F_MS(x, WMI_HOST_TXBF_CONF_SU_TX_BFEE) 185 #define WMI_HOST_TXBF_CONF_SU_TX_BFEE_SET(x, z) \ 186 WMI_HOST_F_RMW(x, z, WMI_HOST_TXBF_CONF_SU_TX_BFEE) 187 188 #define WMI_HOST_TXBF_CONF_MU_TX_BFEE_S 1 189 #define WMI_HOST_TXBF_CONF_MU_TX_BFEE_M 0x1 190 #define WMI_HOST_TXBF_CONF_MU_TX_BFEE \ 191 (WMI_HOST_TXBF_CONF_MU_TX_BFEE_M << WMI_HOST_TXBF_CONF_MU_TX_BFEE_S) 192 #define WMI_HOST_TXBF_CONF_MU_TX_BFEE_GET(x) \ 193 WMI_HOST_F_MS(x, WMI_HOST_TXBF_CONF_MU_TX_BFEE) 194 #define WMI_HOST_TXBF_CONF_MU_TX_BFEE_SET(x, z) \ 195 WMI_HOST_F_RMW(x, z, WMI_HOST_TXBF_CONF_MU_TX_BFEE) 196 197 #define WMI_HOST_TXBF_CONF_SU_TX_BFER_S 2 198 #define WMI_HOST_TXBF_CONF_SU_TX_BFER_M 0x1 199 #define WMI_HOST_TXBF_CONF_SU_TX_BFER \ 200 (WMI_HOST_TXBF_CONF_SU_TX_BFER_M << WMI_HOST_TXBF_CONF_SU_TX_BFER_S) 201 #define WMI_HOST_TXBF_CONF_SU_TX_BFER_GET(x) \ 202 WMI_HOST_F_MS(x, WMI_HOST_TXBF_CONF_SU_TX_BFER) 203 #define WMI_HOST_TXBF_CONF_SU_TX_BFER_SET(x, z) \ 204 WMI_HOST_F_RMW(x, z, WMI_HOST_TXBF_CONF_SU_TX_BFER) 205 206 #define WMI_HOST_TXBF_CONF_MU_TX_BFER_S 3 207 #define WMI_HOST_TXBF_CONF_MU_TX_BFER_M 0x1 208 #define WMI_HOST_TXBF_CONF_MU_TX_BFER \ 209 (WMI_HOST_TXBF_CONF_MU_TX_BFER_M << WMI_HOST_TXBF_CONF_MU_TX_BFER_S) 210 #define WMI_HOST_TXBF_CONF_MU_TX_BFER_GET(x) \ 211 WMI_HOST_F_MS(x, WMI_HOST_TXBF_CONF_MU_TX_BFER) 212 #define WMI_HOST_TXBF_CONF_MU_TX_BFER_SET(x, z) \ 213 WMI_HOST_F_RMW(x, z, WMI_HOST_TXBF_CONF_MU_TX_BFER) 214 215 #define WMI_HOST_TXBF_CONF_STS_CAP_S 4 216 #define WMI_HOST_TXBF_CONF_STS_CAP_M 0x7 217 #define WMI_HOST_TXBF_CONF_STS_CAP \ 218 (WMI_HOST_TXBF_CONF_STS_CAP_M << WMI_HOST_TXBF_CONF_STS_CAP_S) 219 #define WMI_HOST_TXBF_CONF_STS_CAP_GET(x) \ 220 WMI_HOST_F_MS(x, WMI_HOST_TXBF_CONF_STS_CAP); 221 #define WMI_HOST_TXBF_CONF_STS_CAP_SET(x, z) \ 222 WMI_HOST_F_RMW(x, z, WMI_HOST_TXBF_CONF_STS_CAP) 223 224 #define WMI_HOST_TXBF_CONF_IMPLICIT_BF_S 7 225 #define WMI_HOST_TXBF_CONF_IMPLICIT_BF_M 0x1 226 #define WMI_HOST_TXBF_CONF_IMPLICIT_BF \ 227 (WMI_HOST_TXBF_CONF_IMPLICIT_BF_M << WMI_HOST_TXBF_CONF_IMPLICIT_BF_S) 228 #define WMI_HOST_TXBF_CONF_IMPLICIT_BF_GET(x) \ 229 WMI_HOST_F_MS(x, WMI_HOST_TXBF_CONF_IMPLICIT_BF) 230 #define WMI_HOST_TXBF_CONF_IMPLICIT_BF_SET(x, z) \ 231 WMI_HOST_F_RMW(x, z, WMI_HOST_TXBF_CONF_IMPLICIT_BF) 232 233 #define WMI_HOST_TXBF_CONF_BF_SND_DIM_S 8 234 #define WMI_HOST_TXBF_CONF_BF_SND_DIM_M 0x7 235 #define WMI_HOST_TXBF_CONF_BF_SND_DIM \ 236 (WMI_HOST_TXBF_CONF_BF_SND_DIM_M << WMI_HOST_TXBF_CONF_BF_SND_DIM_S) 237 #define WMI_HOST_TXBF_CONF_BF_SND_DIM_GET(x) \ 238 WMI_HOST_F_MS(x, WMI_HOST_TXBF_CONF_BF_SND_DIM) 239 #define WMI_HOST_TXBF_CONF_BF_SND_DIM_SET(x, z) \ 240 WMI_HOST_F_RMW(x, z, WMI_HOST_TXBF_CONF_BF_SND_DIM) 241 242 /* The following WMI_HOST_HEOPS_BSSCOLOR_XXX macros correspond to the 243 * WMI_HEOPS_COLOR_XXX macros in the FW wmi_unified.h */ 244 #ifdef SUPPORT_11AX_D3 245 #define WMI_HOST_HEOPS_BSSCOLOR_S 24 246 #else 247 #define WMI_HOST_HEOPS_BSSCOLOR_S 0 248 #endif 249 250 #define WMI_HOST_HEOPS_BSSCOLOR_M 0x3f 251 #define WMI_HOST_HEOPS_BSSCOLOR \ 252 (WMI_HOST_HEOPS_BSSCOLOR_M << WMI_HOST_HEOPS_BSSCOLOR_S) 253 #define WMI_HOST_HEOPS_BSSCOLOR_GET(x) \ 254 WMI_HOST_F_MS(x, WMI_HOST_HEOPS_BSSCOLOR) 255 #define WMI_HOST_HEOPS_BSSCOLOR_SET(x, z) \ 256 WMI_HOST_F_RMW(x, z, WMI_HOST_HEOPS_BSSCOLOR) 257 258 /* The following WMI_HOST_HEOPS_BSSCOLOR_DISABLE_XXX macros correspond to the 259 * WMI_HEOPS_BSSCOLORDISABLE_XXX macros in the FW wmi_unified.h */ 260 #ifdef SUPPORT_11AX_D3 261 #define WMI_HOST_HEOPS_BSSCOLOR_DISABLE_S 31 262 #else 263 #define WMI_HOST_HEOPS_BSSCOLOR_DISABLE_S 30 264 #endif 265 266 #define WMI_HOST_HEOPS_BSSCOLOR_DISABLE_M 0x1 267 #define WMI_HOST_HEOPS_BSSCOLOR_DISABLE \ 268 (WMI_HOST_HEOPS_BSSCOLOR_DISABLE_M << WMI_HOST_HEOPS_BSSCOLOR_DISABLE_S) 269 #define WMI_HOST_HEOPS_BSSCOLOR_DISABLE_GET(x) \ 270 WMI_HOST_F_MS(x, WMI_HOST_HEOPS_BSSCOLOR_DISABLE) 271 #define WMI_HOST_HEOPS_BSSCOLOR_DISABLE_SET(x, z) \ 272 WMI_HOST_F_RMW(x, z, WMI_HOST_HEOPS_BSSCOLOR_DISABLE) 273 274 /* HE BF capabilities mask */ 275 #define WMI_HOST_HE_BF_CONF_SU_BFEE_S 0 276 #define WMI_HOST_HE_BF_CONF_SU_BFEE_M 0x1 277 #define WMI_HOST_HE_BF_CONF_SU_BFEE \ 278 (WMI_HOST_HE_BF_CONF_SU_BFEE_M << WMI_HOST_HE_BF_CONF_SU_BFEE_S) 279 #define WMI_HOST_HE_BF_CONF_SU_BFEE_GET(x) \ 280 WMI_HOST_F_MS(x, WMI_HOST_HE_BF_CONF_SU_BFEE) 281 #define WMI_HOST_HE_BF_CONF_SU_BFEE_SET(x, z) \ 282 WMI_HOST_F_RMW(x, z, WMI_HOST_HE_BF_CONF_SU_BFEE) 283 284 #define WMI_HOST_HE_BF_CONF_SU_BFER_S 1 285 #define WMI_HOST_HE_BF_CONF_SU_BFER_M 0x1 286 #define WMI_HOST_HE_BF_CONF_SU_BFER \ 287 (WMI_HOST_HE_BF_CONF_SU_BFER_M << WMI_HOST_HE_BF_CONF_SU_BFER_S) 288 #define WMI_HOST_HE_BF_CONF_SU_BFER_GET(x) \ 289 WMI_HOST_F_MS(x, WMI_HOST_HE_BF_CONF_SU_BFER) 290 #define WMI_HOST_HE_BF_CONF_SU_BFER_SET(x, z) \ 291 WMI_HOST_F_RMW(x, z, WMI_HOST_HE_BF_CONF_SU_BFER) 292 293 #define WMI_HOST_HE_BF_CONF_MU_BFEE_S 2 294 #define WMI_HOST_HE_BF_CONF_MU_BFEE_M 0x1 295 #define WMI_HOST_HE_BF_CONF_MU_BFEE \ 296 (WMI_HOST_HE_BF_CONF_MU_BFEE_M << WMI_HOST_HE_BF_CONF_MU_BFEE_S) 297 #define WMI_HOST_HE_BF_CONF_MU_BFEE_GET(x) \ 298 WMI_HOST_F_MS(x, WMI_HOST_HE_BF_CONF_MU_BFEE) 299 #define WMI_HOST_HE_BF_CONF_MU_BFEE_SET(x, z) \ 300 WMI_HOST_F_RMW(x, z, WMI_HOST_HE_BF_CONF_MU_BFEE) 301 302 #define WMI_HOST_HE_BF_CONF_MU_BFER_S 3 303 #define WMI_HOST_HE_BF_CONF_MU_BFER_M 0x1 304 #define WMI_HOST_HE_BF_CONF_MU_BFER \ 305 (WMI_HOST_HE_BF_CONF_MU_BFER_M << WMI_HOST_HE_BF_CONF_MU_BFER_S) 306 #define WMI_HOST_HE_BF_CONF_MU_BFER_GET(x) \ 307 WMI_HOST_F_MS(x, WMI_HOST_HE_BF_CONF_MU_BFER) 308 #define WMI_HOST_HE_BF_CONF_MU_BFER_SET(x, z) \ 309 WMI_HOST_F_RMW(x, z, WMI_HOST_HE_BF_CONF_MU_BFER) 310 311 #define WMI_HOST_HE_BF_CONF_DL_OFDMA_S 4 312 #define WMI_HOST_HE_BF_CONF_DL_OFDMA_M 0x1 313 #define WMI_HOST_HE_BF_CONF_DL_OFDMA \ 314 (WMI_HOST_HE_BF_CONF_DL_OFDMA_M << WMI_HOST_HE_BF_CONF_DL_OFDMA_S) 315 #define WMI_HOST_HE_BF_CONF_DL_OFDMA_GET(x) \ 316 WMI_HOST_F_MS(x, WMI_HOST_HE_BF_CONF_DL_OFDMA) 317 #define WMI_HOST_HE_BF_CONF_DL_OFDMA_SET(x, z) \ 318 WMI_HOST_F_RMW(x, z, WMI_HOST_HE_BF_CONF_DL_OFDMA) 319 320 #define WMI_HOST_HE_BF_CONF_UL_OFDMA_S 5 321 #define WMI_HOST_HE_BF_CONF_UL_OFDMA_M 0x1 322 #define WMI_HOST_HE_BF_CONF_UL_OFDMA \ 323 (WMI_HOST_HE_BF_CONF_UL_OFDMA_M << WMI_HOST_HE_BF_CONF_UL_OFDMA_S) 324 #define WMI_HOST_HE_BF_CONF_UL_OFDMA_GET(x) \ 325 WMI_HOST_F_MS(x, WMI_HOST_HE_BF_CONF_UL_OFDMA) 326 #define WMI_HOST_HE_BF_CONF_UL_OFDMA_SET(x, z) \ 327 WMI_HOST_F_RMW(x, z, WMI_HOST_HE_BF_CONF_UL_OFDMA) 328 329 #define WMI_HOST_HE_BF_CONF_UL_MUMIMO_S 6 330 #define WMI_HOST_HE_BF_CONF_UL_MUMIMO_M 0x1 331 #define WMI_HOST_HE_BF_CONF_UL_MUMIMO \ 332 (WMI_HOST_HE_BF_CONF_UL_MUMIMO_M << WMI_HOST_HE_BF_CONF_UL_MUMIMO_S) 333 #define WMI_HOST_HE_BF_CONF_UL_MUMIMO_GET(x) \ 334 WMI_HOST_F_MS(x, WMI_HOST_HE_BF_CONF_UL_MUMIMO) 335 #define WMI_HOST_HE_BF_CONF_UL_MUMIMO_SET(x, z) \ 336 WMI_HOST_F_RMW(x, z, WMI_HOST_HE_BF_CONF_UL_MUMIMO) 337 338 /* HE or VHT Sounding */ 339 #define WMI_HOST_HE_VHT_SOUNDING_MODE_S 0 340 #define WMI_HOST_HE_VHT_SOUNDING_MODE_M 0x1 341 #define WMI_HOST_HE_VHT_SOUNDING_MODE \ 342 (WMI_HOST_HE_VHT_SOUNDING_MODE_M << WMI_HOST_HE_VHT_SOUNDING_MODE_S) 343 #define WMI_HOST_HE_VHT_SOUNDING_MODE_GET(x) \ 344 WMI_HOST_F_MS(x, WMI_HOST_HE_VHT_SOUNDING_MODE) 345 #define WMI_HOST_HE_VHT_SOUNDING_MODE_SET(x, z) \ 346 WMI_HOST_F_RMW(x, z, WMI_HOST_HE_VHT_SOUNDING_MODE) 347 348 /* SU or MU Sounding */ 349 #define WMI_HOST_SU_MU_SOUNDING_MODE_S 2 350 #define WMI_HOST_SU_MU_SOUNDING_MODE_M 0x1 351 #define WMI_HOST_SU_MU_SOUNDING_MODE \ 352 (WMI_HOST_SU_MU_SOUNDING_MODE_M << \ 353 WMI_HOST_SU_MU_SOUNDING_MODE_S) 354 #define WMI_HOST_SU_MU_SOUNDING_MODE_GET(x) \ 355 WMI_HOST_F_MS(x, WMI_HOST_SU_MU_SOUNDING_MODE) 356 #define WMI_HOST_SU_MU_SOUNDING_MODE_SET(x, z) \ 357 WMI_HOST_F_RMW(x, z, WMI_HOST_SU_MU_SOUNDING_MODE) 358 359 /* Trig or Non-Trig Sounding */ 360 #define WMI_HOST_TRIG_NONTRIG_SOUNDING_MODE_S 3 361 #define WMI_HOST_TRIG_NONTRIG_SOUNDING_MODE_M 0x1 362 #define WMI_HOST_TRIG_NONTRIG_SOUNDING_MODE \ 363 (WMI_HOST_TRIG_NONTRIG_SOUNDING_MODE_M << \ 364 WMI_HOST_TRIG_NONTRIG_SOUNDING_MODE_S) 365 #define WMI_HOST_TRIG_NONTRIG_SOUNDING_MODE_GET(x) \ 366 WMI_HOST_F_MS(x, WMI_HOST_TRIG_NONTRIG_SOUNDING_MODE) 367 #define WMI_HOST_HE_VHT_SU_MU_SOUNDING_MODE_SET(x, z) \ 368 WMI_HOST_F_RMW(x, z, WMI_HOST_TRIG_NONTRIG_SOUNDING_MODE) 369 370 #ifdef WLAN_FEATURE_11BE 371 /* EHT BF capabilities mask */ 372 #define WMI_HOST_EHT_CONF_SU_BFEE_S 0 373 #define WMI_HOST_EHT_CONF_SU_BFEE_M 0x1 374 #define WMI_HOST_EHT_CONF_SU_BFEE \ 375 (WMI_HOST_EHT_CONF_SU_BFEE_M << WMI_HOST_EHT_CONF_SU_BFEE_S) 376 #define WMI_HOST_EHT_CONF_SU_BFEE_GET(x) \ 377 WMI_HOST_F_MS(x, WMI_HOST_EHT_CONF_SU_BFEE) 378 #define WMI_HOST_EHT_CONF_SU_BFEE_SET(x, z) \ 379 WMI_HOST_F_RMW(x, z, WMI_HOST_EHT_CONF_SU_BFEE) 380 381 #define WMI_HOST_EHT_CONF_SU_BFER_S 1 382 #define WMI_HOST_EHT_CONF_SU_BFER_M 0x1 383 #define WMI_HOST_EHT_CONF_SU_BFER \ 384 (WMI_HOST_EHT_CONF_SU_BFER_M << WMI_HOST_EHT_CONF_SU_BFER_S) 385 #define WMI_HOST_EHT_CONF_SU_BFER_GET(x) \ 386 WMI_HOST_F_MS(x, WMI_HOST_EHT_CONF_SU_BFER) 387 #define WMI_HOST_EHT_CONF_SU_BFER_SET(x, z) \ 388 WMI_HOST_F_RMW(x, z, WMI_HOST_EHT_CONF_SU_BFER) 389 390 #define WMI_HOST_EHT_CONF_MU_BFEE_S 2 391 #define WMI_HOST_EHT_CONF_MU_BFEE_M 0x1 392 #define WMI_HOST_EHT_CONF_MU_BFEE \ 393 (WMI_HOST_EHT_CONF_MU_BFEE_M << WMI_HOST_EHT_CONF_MU_BFEE_S) 394 #define WMI_HOST_EHT_CONF_MU_BFEE_GET(x) \ 395 WMI_HOST_F_MS(x, WMI_HOST_EHT_CONF_MU_BFEE) 396 #define WMI_HOST_EHT_CONF_MU_BFEE_SET(x, z) \ 397 WMI_HOST_F_RMW(x, z, WMI_HOST_EHT_CONF_MU_BFEE) 398 399 #define WMI_HOST_EHT_CONF_MU_BFER_S 3 400 #define WMI_HOST_EHT_CONF_MU_BFER_M 0x1 401 #define WMI_HOST_EHT_CONF_MU_BFER \ 402 (WMI_HOST_EHT_CONF_MU_BFER_M << WMI_HOST_EHT_CONF_MU_BFER_S) 403 #define WMI_HOST_EHT_CONF_MU_BFER_GET(x) \ 404 WMI_HOST_F_MS(x, WMI_HOST_EHT_CONF_MU_BFER) 405 #define WMI_HOST_EHT_CONF_MU_BFER_SET(x, z) \ 406 WMI_HOST_F_RMW(x, z, WMI_HOST_EHT_CONF_MU_BFER) 407 408 #define WMI_HOST_EHT_CONF_DL_OFDMA_S 4 409 #define WMI_HOST_EHT_CONF_DL_OFDMA_M 0x1 410 #define WMI_HOST_EHT_CONF_DL_OFDMA \ 411 (WMI_HOST_EHT_CONF_DL_OFDMA_M << WMI_HOST_EHT_CONF_DL_OFDMA_S) 412 #define WMI_HOST_EHT_CONF_DL_OFDMA_GET(x) \ 413 WMI_HOST_F_MS(x, WMI_HOST_EHT_CONF_DL_OFDMA) 414 #define WMI_HOST_EHT_CONF_DL_OFDMA_SET(x, z) \ 415 WMI_HOST_F_RMW(x, z, WMI_HOST_EHT_CONF_DL_OFDMA) 416 417 #define WMI_HOST_EHT_CONF_UL_OFDMA_S 5 418 #define WMI_HOST_EHT_CONF_UL_OFDMA_M 0x1 419 #define WMI_HOST_EHT_CONF_UL_OFDMA \ 420 (WMI_HOST_EHT_CONF_UL_OFDMA_M << WMI_HOST_EHT_CONF_UL_OFDMA_S) 421 #define WMI_HOST_EHT_CONF_UL_OFDMA_GET(x) \ 422 WMI_HOST_F_MS(x, WMI_HOST_EHT_CONF_UL_OFDMA) 423 #define WMI_HOST_EHT_CONF_UL_OFDMA_SET(x, z) \ 424 WMI_HOST_F_RMW(x, z, WMI_HOST_EHT_CONF_UL_OFDMA) 425 426 #define WMI_HOST_EHT_CONF_UL_MUMIMO_S 6 427 #define WMI_HOST_EHT_CONF_UL_MUMIMO_M 0x1 428 #define WMI_HOST_EHT_CONF_UL_MUMIMO \ 429 (WMI_HOST_EHT_CONF_UL_MUMIMO_M << WMI_HOST_EHT_CONF_UL_MUMIMO_S) 430 #define WMI_HOST_EHT_CONF_UL_MUMIMO_GET(x) \ 431 WMI_HOST_F_MS(x, WMI_HOST_EHT_CONF_UL_MUMIMO) 432 #define WMI_HOST_EHT_CONF_UL_MUMIMO_SET(x, z) \ 433 WMI_HOST_F_RMW(x, z, WMI_HOST_EHT_CONF_UL_MUMIMO) 434 435 #define WMI_HOST_EHT_CONF_DL_OFDMA_TXBF_S 7 436 #define WMI_HOST_EHT_CONF_DL_OFDMA_TXBF_M 0x1 437 #define WMI_HOST_EHT_CONF_DL_OFDMA_TXBF \ 438 (WMI_HOST_EHT_CONF_DL_OFDMA_TXBF_M << \ 439 WMI_HOST_EHT_CONF_DL_OFDMA_TXBF_S) 440 #define WMI_HOST_EHT_CONF_DL_OFDMA_TXBF_GET(x) \ 441 WMI_HOST_F_MS(x, WMI_HOST_EHT_CONF_DL_OFDMA_TXBF) 442 #define WMI_HOST_EHT_CONF_DL_OFDMA_TXBF_SET(x, z) \ 443 WMI_HOST_F_RMW(x, z, WMI_HOST_EHT_CONF_DL_OFDMA_TXBF) 444 445 #define WMI_HOST_EHT_CONF_DL_OFDMA_MUMIMO_S 8 446 #define WMI_HOST_EHT_CONF_DL_OFDMA_MUMIMO_M 0x1 447 #define WMI_HOST_EHT_CONF_DL_OFDMA_MUMIMO \ 448 (WMI_HOST_EHT_CONF_DL_OFDMA_MUMIMO_M << \ 449 WMI_HOST_EHT_CONF_DL_OFDMA_MUMIMO_S) 450 #define WMI_HOST_EHT_CONF_DL_OFDMA_MUMIMO_GET(x) \ 451 WMI_HOST_F_MS(x, WMI_HOST_EHT_CONF_DL_OFDMA_MUMIMO) 452 #define WMI_HOST_EHT_CONF_DL_OFDMA_MUMIMO_SET(x, z) \ 453 WMI_HOST_F_RMW(x, z, WMI_HOST_EHT_CONF_DL_OFDMA_MUMIMO) 454 455 #define WMI_HOST_EHT_CONF_UL_OFDMA_MUMIMO_S 9 456 #define WMI_HOST_EHT_CONF_UL_OFDMA_MUMIMO_M 0x1 457 #define WMI_HOST_EHT_CONF_UL_OFDMA_MUMIMO \ 458 (WMI_HOST_EHT_CONF_UL_OFDMA_MUMIMO_M << \ 459 WMI_HOST_EHT_CONF_UL_OFDMA_MUMIMO_S) 460 #define WMI_HOST_EHT_CONF_UL_OFDMA_MUMIMO_GET(x) \ 461 WMI_HOST_F_MS(x, WMI_HOST_EHT_CONF_UL_OFDMA_MUMIMO) 462 #define WMI_HOST_EHT_CONF_UL_OFDMA_MUMIMO_SET(x, z) \ 463 WMI_HOST_F_RMW(x, z, WMI_HOST_EHT_CONF_UL_OFDMA_MUMIMO) 464 465 /* Firmware uses most significant 4 bits to differentiate */ 466 /* some of vdev params between HE and EHT */ 467 #define WMI_HOST_VDEV_PARAM_EHT_MODE 0x10000000 468 #endif 469 470 #define WMI_HOST_TPC_RATE_MAX 160 471 #define WMI_HOST_TPC_TX_NUM_CHAIN 4 472 #define WMI_HOST_RXG_CAL_CHAN_MAX 8 473 #define WMI_HOST_MAX_NUM_CHAINS 8 474 #define WMI_MAX_NUM_OF_RATE_THRESH 4 475 476 #define WMI_HOST_PDEV_MAX_VDEVS 17 477 478 /* for QC98XX only */ 479 /*6 modes (A, HT20, HT40, VHT20, VHT40, VHT80) * 3 reg dommains 480 */ 481 #define WMI_HOST_NUM_CTLS_5G 18 482 /*6 modes (B, G, HT20, HT40, VHT20, VHT40) * 3 reg domains */ 483 #define WMI_HOST_NUM_CTLS_2G 18 484 #define WMI_HOST_NUM_BAND_EDGES_5G 8 485 #define WMI_HOST_NUM_BAND_EDGES_2G 4 486 487 /*Beelinier 5G*/ 488 #define WMI_HOST_NUM_CTLS_5G_11A 9 489 #define WMI_HOST_NUM_BAND_EDGES_5G_11A 25 490 #define WMI_HOST_NUM_CTLS_5G_HT20 24 491 #define WMI_HOST_NUM_BAND_EDGES_5G_HT20 25 492 #define WMI_HOST_NUM_CTLS_5G_HT40 18 493 #define WMI_HOST_NUM_BAND_EDGES_5G_HT40 12 494 #define WMI_HOST_NUM_CTLS_5G_HT80 18 495 #define WMI_HOST_NUM_BAND_EDGES_5G_HT80 6 496 #define WMI_HOST_NUM_CTLS_5G_HT160 9 497 #define WMI_HOST_NUM_BAND_EDGES_5G_HT160 2 498 499 /* Beeliner 2G */ 500 #define WMI_HOST_NUM_CTLS_2G_11B 6 501 #define WMI_HOST_NUM_BAND_EDGES_2G_11B 9 502 #define WMI_HOST_NUM_CTLS_2G_20MHZ 30 503 #define WMI_HOST_NUM_BAND_EDGES_2G_20MHZ 11 504 #define WMI_HOST_NUM_CTLS_2G_40MHZ 18 505 #define WMI_HOST_NUM_BAND_EDGES_2G_40MHZ 6 506 507 /* for QC98XX only */ 508 #define WMI_HOST_TX_NUM_CHAIN 0x3 509 #define WMI_HOST_TPC_REGINDEX_MAX 4 510 #define WMI_HOST_ARRAY_GAIN_NUM_STREAMS 2 511 512 /* AST Index for flow override */ 513 #define WMI_CONFIG_MSDU_AST_INDEX_0 0x0 514 #define WMI_CONFIG_MSDU_AST_INDEX_1 0x1 515 #define WMI_CONFIG_MSDU_AST_INDEX_2 0x2 516 #define WMI_CONFIG_MSDU_AST_INDEX_3 0x3 517 518 #define WMI_MAX_AOA_PHASE_DELTA 31 519 #define WMI_MAX_CHAINS_PHASE 2 520 #define EGID_INFO_SIZE 4 521 522 #include "qdf_atomic.h" 523 524 #ifdef BIG_ENDIAN_HOST 525 /* This API is used in copying in elements to WMI message, 526 since WMI message uses multilpes of 4 bytes, This API 527 converts length into multiples of 4 bytes, and performs copy 528 */ 529 #define WMI_HOST_IF_MSG_COPY_CHAR_ARRAY(destp, srcp, len) do { \ 530 int j; \ 531 u_int32_t *src, *dest; \ 532 src = (u_int32_t *)srcp; \ 533 dest = (u_int32_t *)destp; \ 534 for (j = 0; j < roundup(len, sizeof(u_int32_t))/4; j++) { \ 535 *(dest+j) = qdf_le32_to_cpu(*(src+j)); \ 536 } \ 537 } while (0) 538 #else 539 540 #define WMI_HOST_IF_MSG_COPY_CHAR_ARRAY(destp, srcp, len) OS_MEMCPY(destp,\ 541 srcp, len) 542 543 #endif 544 545 /** macro to convert MAC address from WMI word format to char array */ 546 #define WMI_HOST_MAC_ADDR_TO_CHAR_ARRAY(pwmi_mac_addr, c_macaddr) do { \ 547 (c_macaddr)[0] = ((pwmi_mac_addr)->mac_addr31to0) & 0xff; \ 548 (c_macaddr)[1] = (((pwmi_mac_addr)->mac_addr31to0) >> 8) & 0xff; \ 549 (c_macaddr)[2] = (((pwmi_mac_addr)->mac_addr31to0) >> 16) & 0xff; \ 550 (c_macaddr)[3] = (((pwmi_mac_addr)->mac_addr31to0) >> 24) & 0xff; \ 551 (c_macaddr)[4] = ((pwmi_mac_addr)->mac_addr47to32) & 0xff; \ 552 (c_macaddr)[5] = (((pwmi_mac_addr)->mac_addr47to32) >> 8) & 0xff; \ 553 } while (0) 554 555 #define TARGET_INIT_STATUS_SUCCESS 0x0 556 #define TARGET_INIT_STATUS_GEN_FAILED 0x1 557 #define TARGET_GET_INIT_STATUS_REASON(status) ((status) & 0xffff) 558 #define TARGET_GET_INIT_STATUS_MODULE_ID(status) (((status) >> 16) & 0xffff) 559 560 #define MAX_ASSOC_IE_LENGTH 1024 561 562 /* 563 * The WLAN_MAX_AC macro cannot be changed without breaking 564 * WMI compatibility. 565 * The maximum value of access category 566 */ 567 #define WMI_HOST_WLAN_MAX_AC 4 568 typedef uint32_t TARGET_INIT_STATUS; 569 570 /* 571 * Opaque handle of wmi structure 572 */ 573 struct wmi_unified; 574 typedef struct wmi_unified *wmi_unified_t; 575 576 typedef void *ol_scn_t; 577 578 /** 579 * typedef wmi_unified_event_handler - WMI event handler 580 * @scn_handle: handle 581 * @event_buf: event buffer 582 * @len: length of the event buffer 583 * 584 * Return: 0 if the event was handled, negative errno otherwise 585 */ 586 typedef int (*wmi_unified_event_handler)(ol_scn_t scn_handle, 587 uint8_t *event_buf, uint32_t len); 588 589 /* 590 * @WMI_HOST_WLAN_PHY_MODE: Host based enum ID for corresponding in 591 * WLAN_PHY_MODE. This should be consistent with WLAN_PHY_MODE always to avoid 592 * breaking the WMI 593 */ 594 typedef enum { 595 WMI_HOST_MODE_11A = 0, /* 11a Mode */ 596 WMI_HOST_MODE_11G = 1, /* 11b/g Mode */ 597 WMI_HOST_MODE_11B = 2, /* 11b Mode */ 598 WMI_HOST_MODE_11GONLY = 3, /* 11g only Mode */ 599 WMI_HOST_MODE_11NA_HT20 = 4, /* 11a HT20 mode */ 600 WMI_HOST_MODE_11NG_HT20 = 5, /* 11g HT20 mode */ 601 WMI_HOST_MODE_11NA_HT40 = 6, /* 11a HT40 mode */ 602 WMI_HOST_MODE_11NG_HT40 = 7, /* 11g HT40 mode */ 603 WMI_HOST_MODE_11AC_VHT20 = 8, 604 WMI_HOST_MODE_11AC_VHT40 = 9, 605 WMI_HOST_MODE_11AC_VHT80 = 10, 606 WMI_HOST_MODE_11AC_VHT20_2G = 11, 607 WMI_HOST_MODE_11AC_VHT40_2G = 12, 608 WMI_HOST_MODE_11AC_VHT80_2G = 13, 609 WMI_HOST_MODE_11AC_VHT80_80 = 14, 610 WMI_HOST_MODE_11AC_VHT160 = 15, 611 WMI_HOST_MODE_11AX_HE20 = 16, 612 WMI_HOST_MODE_11AX_HE40 = 17, 613 WMI_HOST_MODE_11AX_HE80 = 18, 614 WMI_HOST_MODE_11AX_HE80_80 = 19, 615 WMI_HOST_MODE_11AX_HE160 = 20, 616 WMI_HOST_MODE_11AX_HE20_2G = 21, 617 WMI_HOST_MODE_11AX_HE40_2G = 22, 618 WMI_HOST_MODE_11AX_HE80_2G = 23, 619 #ifdef WLAN_FEATURE_11BE 620 WMI_HOST_MODE_11BE_EHT20 = 24, 621 WMI_HOST_MODE_11BE_EHT40 = 25, 622 WMI_HOST_MODE_11BE_EHT80 = 26, 623 WMI_HOST_MODE_11BE_EHT160 = 28, 624 WMI_HOST_MODE_11BE_EHT320 = 30, 625 WMI_HOST_MODE_11BE_EHT20_2G = 31, 626 WMI_HOST_MODE_11BE_EHT40_2G = 32, 627 #endif 628 WMI_HOST_MODE_UNKNOWN, 629 WMI_HOST_MODE_MAX = WMI_HOST_MODE_UNKNOWN, 630 } WMI_HOST_WLAN_PHY_MODE; 631 632 /* 633 * Needs to be removed and use channel_param based 634 * on how it is processed 635 */ 636 typedef struct { 637 /** primary 20 MHz channel frequency in mhz */ 638 uint32_t mhz; 639 /** Center frequency 1 in MHz*/ 640 uint32_t band_center_freq1; 641 /** Center frequency 2 in MHz - valid only for 11acvht 80plus80 mode*/ 642 uint32_t band_center_freq2; 643 /** channel info described below */ 644 uint32_t info; 645 /** contains min power, max power, reg power and reg class id. */ 646 uint32_t reg_info_1; 647 /** contains antennamax */ 648 uint32_t reg_info_2; 649 } wmi_host_channel; 650 651 /** 652 * enum WMI_HOST_WLAN_BAND_CAPABILITY: Band capability (2.4 GHz, 5 GHz). Maps to 653 * WLAN_BAND_CAPABILITY used in firmware header file(s). 654 * @WMI_HOST_WLAN_2G_CAPABILITY: 2.4 GHz capable 655 * @WMI_HOST_WLAN_5G_CAPABILITY: 5 GHz capable 656 */ 657 typedef enum { 658 WMI_HOST_WLAN_2G_CAPABILITY = 0x1, 659 WMI_HOST_WLAN_5G_CAPABILITY = 0x2, 660 } WMI_HOST_WLAN_BAND_CAPABILITY; 661 662 /** 663 * enum wmi_host_channel_width: Channel operating width. Maps to 664 * wmi_channel_width used in firmware header file(s). 665 * @WMI_HOST_CHAN_WIDTH_20: 20 MHz channel operating width 666 * @WMI_HOST_CHAN_WIDTH_40: 40 MHz channel operating width 667 * @WMI_HOST_CHAN_WIDTH_80: 80 MHz channel operating width 668 * @WMI_HOST_CHAN_WIDTH_160: 160 MHz channel operating width 669 * @WMI_HOST_CHAN_WIDTH_80P80: 80+80 MHz channel operating width 670 * @WMI_HOST_CHAN_WIDTH_5: 5 MHz channel operating width 671 * @WMI_HOST_CHAN_WIDTH_10: 10 MHz channel operating width 672 * @WMI_HOST_CHAN_WIDTH_165: 165 MHz channel operating width 673 * @WMI_HOST_CHAN_WIDTH_160P160: 160 MHz + 160 MHz channel operating width 674 * @WMI_HOST_CHAN_WIDTH_320: 320 MHz channel operating width 675 */ 676 typedef enum { 677 WMI_HOST_CHAN_WIDTH_20 = 0, 678 WMI_HOST_CHAN_WIDTH_40 = 1, 679 WMI_HOST_CHAN_WIDTH_80 = 2, 680 WMI_HOST_CHAN_WIDTH_160 = 3, 681 WMI_HOST_CHAN_WIDTH_80P80 = 4, 682 WMI_HOST_CHAN_WIDTH_5 = 5, 683 WMI_HOST_CHAN_WIDTH_10 = 6, 684 WMI_HOST_CHAN_WIDTH_165 = 7, 685 WMI_HOST_CHAN_WIDTH_160P160 = 8, 686 WMI_HOST_CHAN_WIDTH_320 = 9, 687 } wmi_host_channel_width; 688 689 #define ATH_EXPONENT_TO_VALUE(v) ((1<<v)-1) 690 #define ATH_TXOP_TO_US(v) (v<<5) 691 /* WME stream classes */ 692 #define WMI_HOST_AC_BE 0 /* best effort */ 693 #define WMI_HOST_AC_BK 1 /* background */ 694 #define WMI_HOST_AC_VI 2 /* video */ 695 #define WMI_HOST_AC_VO 3 /* voice */ 696 #define WMI_TID_TO_AC(_tid) (\ 697 (((_tid) == 0) || ((_tid) == 3)) ? WMI_HOST_AC_BE : \ 698 (((_tid) == 1) || ((_tid) == 2)) ? WMI_HOST_AC_BK : \ 699 (((_tid) == 4) || ((_tid) == 5)) ? WMI_HOST_AC_VI : \ 700 WMI_HOST_AC_VO) 701 702 /** 703 * struct channel_param - Channel parameters with all 704 * info required by target. 705 * @chan_id: channel id 706 * @pwr: channel power 707 * @mhz: channel frequency 708 * @half_rate: is half rate 709 * @quarter_rate: is quarter rate 710 * @dfs_set: is dfs channel 711 * @dfs_set_cfreq2: is secondary freq dfs channel 712 * @is_chan_passive: is this passive channel 713 * @allow_ht: HT allowed in chan 714 * @allow_vht: VHT allowed on chan 715 * @set_agile: is agile mode 716 * @allow_he: HE allowed on chan 717 * @psc_channel: 6 ghz preferred scan chan 718 * @nan_disabled: is NAN disabled on @mhz 719 * @allow_eht: EHT allowed on chan 720 * @phy_mode: phymode (vht80 or ht40 or ...) 721 * @cfreq1: centre frequency on primary 722 * @cfreq2: centre frequency on secondary 723 * @maxpower: max power for channel 724 * @minpower: min power for channel 725 * @maxregpower: Max regulatory power 726 * @antennamax: Max antenna 727 * @reg_class_id: Regulatory class id. 728 * @max_bw_supported: max BW supported 729 */ 730 731 struct channel_param { 732 uint8_t chan_id; 733 uint8_t pwr; 734 uint32_t mhz; 735 uint32_t half_rate:1, 736 quarter_rate:1, 737 dfs_set:1, 738 dfs_set_cfreq2:1, 739 is_chan_passive:1, 740 allow_ht:1, 741 allow_vht:1, 742 set_agile:1, 743 allow_he:1, 744 psc_channel:1, 745 nan_disabled:1, 746 allow_eht:1; 747 uint32_t phy_mode; 748 uint32_t cfreq1; 749 uint32_t cfreq2; 750 int8_t maxpower; 751 int8_t minpower; 752 int8_t maxregpower; 753 uint8_t antennamax; 754 uint8_t reg_class_id; 755 wmi_host_channel_width max_bw_supported; 756 }; 757 758 #ifdef FEATURE_OEM_DATA 759 /** 760 * struct oem_data - oem data to be sent to firmware 761 * @vdev_id: Unique identifier assigned to the vdev 762 * @data_len: len of data 763 * @pdev_id: pdev id to identify the pdev 764 * @pdev_vdev_flag: 0 when vdev is valid, 1 when pdev is valid 765 * @is_host_pdev_id: 1 for host pdev id, 0 otherwise 766 * @data: the pointer to the buffer containing data 767 * @file_name_len: Length of file name 768 * @file_name: Pointer to the buffer containing file name 769 */ 770 struct oem_data { 771 uint8_t vdev_id; 772 size_t data_len; 773 uint8_t pdev_id; 774 bool pdev_vdev_flag; 775 bool is_host_pdev_id; 776 uint8_t *data; 777 uint32_t file_name_len; 778 uint8_t *file_name; 779 }; 780 #endif 781 782 #ifdef MULTI_CLIENT_LL_SUPPORT 783 /** 784 * struct latency_level_data - latency data received in the event from the FW 785 * @vdev_id: The latency level for specified vdev_id 786 * @latency_level: latency level honoured by FW 787 */ 788 struct latency_level_data { 789 uint8_t vdev_id; 790 uint32_t latency_level; 791 }; 792 #endif 793 794 /** 795 * enum nss_chains_band_info - Band info for dynamic nss, chains change feature 796 * @NSS_CHAINS_BAND_2GHZ: 2.4Ghz band 797 * @NSS_CHAINS_BAND_5GHZ: 5Ghz band 798 * @NSS_CHAINS_BAND_MAX: Max bands supported 799 */ 800 enum nss_chains_band_info { 801 NSS_CHAINS_BAND_2GHZ = 0, 802 NSS_CHAINS_BAND_5GHZ, 803 NSS_CHAINS_BAND_MAX, 804 }; 805 806 /** 807 * struct vdev_nss_chains - vdev config of nss, and chains 808 * @num_tx_chains: tx chains of vdev config 809 * @num_rx_chains: rx chains of vdev config 810 * @tx_nss: tx nss of vdev config 811 * @rx_nss: rx nss of vdev config 812 * @num_tx_chains_11b: number of tx chains in 11b mode 813 * @num_tx_chains_11g: number of tx chains in 11g mode 814 * @num_tx_chains_11a: number of tx chains in 11a mode 815 * @disable_rx_mrc: disable 2 rx chains, in rx nss 1 mode 816 * @disable_tx_mrc: disable 2 tx chains, in tx nss 1 mode 817 */ 818 struct vdev_nss_chains { 819 uint32_t num_tx_chains[NSS_CHAINS_BAND_MAX]; 820 uint32_t num_rx_chains[NSS_CHAINS_BAND_MAX]; 821 uint32_t tx_nss[NSS_CHAINS_BAND_MAX]; 822 uint32_t rx_nss[NSS_CHAINS_BAND_MAX]; 823 uint32_t num_tx_chains_11b; 824 uint32_t num_tx_chains_11g; 825 uint32_t num_tx_chains_11a; 826 bool disable_rx_mrc[NSS_CHAINS_BAND_MAX]; 827 bool disable_tx_mrc[NSS_CHAINS_BAND_MAX]; 828 }; 829 830 831 /** 832 * struct peer_delete_params - peer delete cmd parameter 833 * @vdev_id: vdev id 834 */ 835 struct peer_delete_params { 836 uint8_t vdev_id; 837 }; 838 839 /** 840 * struct peer_set_params - peer set cmd parameter 841 * @param_id: parameter id 842 * @param_value: parameter value 843 * @vdev_id: vdev id 844 */ 845 struct peer_set_params { 846 uint32_t param_id; 847 uint32_t param_value; 848 uint32_t vdev_id; 849 }; 850 851 /** 852 * struct peer_create_params - peer create cmd parameter 853 * @peer_addr: peer mac addr 854 * @peer_type: peer type 855 * @vdev_id: vdev id 856 * @mlo_enabled: Indicates MLO is enabled 857 * @mlo_bridge_peer: Indicates bridge peer 858 */ 859 struct peer_create_params { 860 const uint8_t *peer_addr; 861 uint32_t peer_type; 862 uint32_t vdev_id; 863 #ifdef WLAN_FEATURE_11BE_MLO 864 bool mlo_enabled; 865 bool mlo_bridge_peer; 866 #endif 867 }; 868 869 #ifdef WLAN_SUPPORT_PPEDS 870 /** 871 * struct peer_ppe_ds_param - Per peer PPE Direct Switch parameter 872 * @peer_macaddr: PPE mac address 873 * @ppe_routing_enabled: Master flag for PPE routing 874 * @use_ppe: Use PPE command for the peer entry 875 * @service_code: Service code 876 * @priority_valid: If PRI to TID conversion is enabled 877 * @src_info: Source info/PPE port of the interface 878 * @vdev_id: VAP ID 879 */ 880 struct peer_ppe_ds_param { 881 uint8_t peer_macaddr[QDF_MAC_ADDR_SIZE]; 882 bool ppe_routing_enabled; 883 bool use_ppe; 884 uint16_t service_code; 885 uint16_t src_info; 886 uint8_t priority_valid; 887 uint8_t vdev_id; 888 }; 889 #endif 890 891 /** 892 * struct peer_remove_params - peer remove cmd parameter 893 * @bssid: bss id 894 * @vdev_id: vdev id 895 * @roam_synch_in_progress: flag to indicate if roaming is in progress 896 */ 897 struct peer_remove_params { 898 uint8_t *bssid; 899 uint8_t vdev_id; 900 bool roam_synch_in_progress; 901 }; 902 903 /* 904 * Stats ID enums defined in host 905 */ 906 typedef enum { 907 WMI_HOST_REQUEST_PEER_STAT = 0x01, 908 WMI_HOST_REQUEST_AP_STAT = 0x02, 909 WMI_HOST_REQUEST_PDEV_STAT = 0x04, 910 WMI_HOST_REQUEST_VDEV_STAT = 0x08, 911 WMI_HOST_REQUEST_BCNFLT_STAT = 0x10, 912 WMI_HOST_REQUEST_VDEV_RATE_STAT = 0x20, 913 WMI_HOST_REQUEST_INST_STAT = 0x40, 914 WMI_HOST_REQUEST_PEER_EXTD_STAT = 0x80, 915 WMI_HOST_REQUEST_VDEV_EXTD_STAT = 0x100, 916 WMI_HOST_REQUEST_NAC_RSSI = 0x200, 917 WMI_HOST_REQUEST_BCN_STAT = 0x800, 918 WMI_HOST_REQUEST_BCN_STAT_RESET = 0x1000, 919 WMI_HOST_REQUEST_PEER_RETRY_STAT = 0x2000, 920 WMI_HOST_REQUEST_PEER_ADV_STATS = 0x4000, 921 WMI_HOST_REQUEST_PMF_BCN_PROTECT_STAT = 0x8000, 922 WMI_HOST_REQUEST_VDEV_PRB_FILS_STAT = 0x10000, 923 WMI_HOST_REQUEST_PDEV_EXTD_STAT = 0x20000, 924 WMI_HOST_REQUEST_PDEV_TELEMETRY_STAT = 0x40000, 925 } wmi_host_stats_id; 926 927 typedef struct { 928 uint16_t cfg_retry_count; 929 uint16_t retry_count; 930 } wmi_host_inst_rssi_args; 931 932 /** 933 * struct stats_request_params - stats_request cmd parameter 934 * @stats_id: Bit mask of all the STATS request are specified with values from wmi_host_stats_id 935 * @vdev_id: vdev id 936 * @pdev_id: pdev_id 937 * @rssi_args: Instantaneous rssi stats args 938 * @is_qmi_send_support: support to send by qmi or not 939 */ 940 struct stats_request_params { 941 uint32_t stats_id; 942 uint8_t vdev_id; 943 uint8_t pdev_id; 944 wmi_host_inst_rssi_args rssi_args; 945 bool is_qmi_send_support; 946 }; 947 948 /** 949 * struct bss_chan_info_request_params - BSS chan info params 950 * @param: parameter value 951 */ 952 struct bss_chan_info_request_params { 953 uint32_t param; 954 }; 955 956 /** 957 * struct wow_cmd_params - wow cmd parameter 958 * @enable: wow enable or disable flag 959 * @can_suspend_link: flag to indicate if link can be suspended 960 * @pause_iface_config: interface config 961 * @flags: 962 */ 963 struct wow_cmd_params { 964 bool enable; 965 bool can_suspend_link; 966 uint8_t pause_iface_config; 967 uint32_t flags; 968 }; 969 970 /** 971 * struct wow_add_wakeup_params - wow wakeup parameter 972 * @type: param type 973 */ 974 struct wow_add_wakeup_params { 975 uint32_t type; 976 }; 977 978 /** 979 * struct wow_add_wakeup_pattern_params - Add WoW pattern params 980 * @pattern_bytes: pointer to pattern bytes 981 * @mask_bytes: pointer to mask bytes 982 * @pattern_len: pattern length 983 * @pattern_id: pattern id 984 */ 985 struct wow_add_wakeup_pattern_params { 986 uint8_t *pattern_bytes; 987 uint8_t *mask_bytes; 988 uint32_t pattern_len; 989 uint32_t pattern_id; 990 }; 991 992 /** 993 * struct wow_remove_wakeup_pattern_params - WoW remove pattern param 994 * @pattern_bytes: pointer to pattern bytes 995 * @mask_bytes: Mask bytes 996 * @pattern_id: pattern identifier 997 */ 998 struct wow_remove_wakeup_pattern_params { 999 uint32_t *pattern_bytes; 1000 uint32_t *mask_bytes; 1001 uint32_t pattern_id; 1002 }; 1003 1004 1005 /** 1006 * struct packet_enable_params - packet enable cmd parameter 1007 * @vdev_id: vdev id 1008 * @enable: flag to indicate if parameter can be enabled or disabled 1009 */ 1010 struct packet_enable_params { 1011 uint8_t vdev_id; 1012 bool enable; 1013 }; 1014 1015 /** 1016 * struct suspend_params - suspend cmd parameter 1017 * @disable_target_intr: disable target interrupt 1018 */ 1019 struct suspend_params { 1020 uint8_t disable_target_intr; 1021 }; 1022 1023 /** 1024 * struct pdev_params - pdev set cmd parameter 1025 * @param_id: parameter id 1026 * @param_value: parameter value 1027 * @is_host_pdev_id: indicate whether pdev_id is host pdev_id or not 1028 */ 1029 struct pdev_params { 1030 uint32_t param_id; 1031 uint32_t param_value; 1032 bool is_host_pdev_id; 1033 }; 1034 1035 /** 1036 * struct bcn_prb_template_params - beacon probe template parameter 1037 * @vdev_id: vdev id 1038 * @buf_len: Template length 1039 * @caps: capabilities field 1040 * @erp: ERP field 1041 */ 1042 struct bcn_prb_template_params { 1043 uint8_t vdev_id; 1044 int buf_len; 1045 uint16_t caps; 1046 uint8_t erp; 1047 }; 1048 1049 #define WMI_MAX_SUPPORTED_RATES 128 1050 /** 1051 * struct target_rate_set - Rate set bitmap 1052 * @num_rates: number of rates in rates bitmap 1053 * @rates: rates (each 8bit value) packed into a 32 bit word. 1054 * the rates are filled from least significant byte to most 1055 * significant byte. 1056 */ 1057 typedef struct { 1058 uint32_t num_rates; 1059 uint32_t rates[(WMI_MAX_SUPPORTED_RATES / 4) + 1]; 1060 } target_rate_set; 1061 1062 1063 #define WMI_HOST_MAX_NUM_SS 8 1064 #define WMI_HOST_MAX_HECAP_PHY_SIZE 3 1065 #define WMI_HOST_MAX_HECAP_MAC_SIZE 2 1066 #define WMI_HOST_HECAP_MAC_WORD1 0 1067 #define WMI_HOST_HECAP_MAC_WORD2 1 1068 #define WMI_HOST_MAX_HE_RATE_SET 3 1069 1070 #define WMI_HOST_HE_INVALID_MCSNSSMAP (0xFFFF) 1071 #define WMI_HOST_HE_TXRX_MCS_NSS_IDX_80 0 1072 #define WMI_HOST_HE_TXRX_MCS_NSS_IDX_160 1 1073 #define WMI_HOST_HE_TXRX_MCS_NSS_IDX_80_80 2 1074 1075 #ifdef WLAN_FEATURE_11BE 1076 #define WMI_HOST_MAX_EHTCAP_PHY_SIZE 3 1077 #define WMI_HOST_MAX_EHTCAP_MAC_SIZE 1 1078 #define WMI_HOST_EHTCAP_MAC_WORD1 0 1079 #define WMI_HOST_EHTCAP_MAC_WORD2 1 1080 #define WMI_HOST_MAX_EHT_RATE_SET 4 1081 1082 #define WMI_HOST_EHT_INVALID_MCSNSSMAP (0xFFFF) 1083 #define WMI_HOST_EHT_TXRX_MCS_NSS_IDX_80 0 1084 #define WMI_HOST_EHT_TXRX_MCS_NSS_IDX_160 1 1085 #define WMI_HOST_EHT_TXRX_MCS_NSS_IDX_320 2 1086 #endif 1087 1088 /** 1089 * struct wmi_host_ppe_threshold -PPE threshold 1090 * @numss_m1: NSS - 1 1091 * @ru_bit_mask: RU bit mask indicating the supported RU's 1092 * @ppet16_ppet8_ru3_ru0: ppet8 and ppet16 for max num ss 1093 */ 1094 struct wmi_host_ppe_threshold { 1095 uint32_t numss_m1; 1096 uint32_t ru_bit_mask; 1097 uint32_t ppet16_ppet8_ru3_ru0[WMI_HOST_MAX_NUM_SS]; 1098 }; 1099 1100 /** 1101 * struct wmi_host_mac_addr - host mac addr 2 word representation of MAC addr 1102 * @mac_addr31to0: upper 4 bytes of MAC address 1103 * @mac_addr47to32: lower 2 bytes of MAC address 1104 */ 1105 typedef struct { 1106 uint32_t mac_addr31to0; 1107 uint32_t mac_addr47to32; 1108 } wmi_host_mac_addr; 1109 1110 #ifdef WLAN_FEATURE_11BE 1111 #ifdef WMI_AP_SUPPORT 1112 /** 1113 * struct wlan_host_preferred_links - Preferred link info. 1114 * @num_pref_links: non-zero values indicate that preferred link order 1115 * is present. 1116 * @preffered_link_order: Preferred links in order. 1117 * @timeout: timeout values for all the access categories. 1118 * @tlt_characterization_params: Bitmask to select Tx-Link Tuple from ordered 1119 * list. 1120 * Bit 0-15 : Each bit maps to the corresponding Link ID 1121 * Bit 16-31: Reserved 1122 * @link_control_flags: Link control flags. 1123 * Bit 0: TLT enable/disable 1124 * Bit 1: Preferred Link enable/disable 1125 * Bit 2-31: Reserved 1126 */ 1127 struct wlan_host_preferred_links { 1128 uint8_t num_pref_links; 1129 uint8_t preffered_link_order[MAX_PREFERRED_LINKS]; 1130 uint32_t timeout[WMI_HOST_WLAN_MAX_AC]; 1131 uint32_t tlt_characterization_params; 1132 uint32_t link_control_flags; 1133 }; 1134 #endif 1135 1136 /** 1137 * struct wlan_host_t2lm_of_tids - TID-to-link mapping info 1138 * @direction: 0 - Downlink, 1 - uplink 2 - Both uplink and downlink 1139 * @default_link_mapping: value 1 indicates the default T2LM, where all the TIDs 1140 * are mapped to all the links. 1141 * value 0 indicates the preferred T2LM mapping 1142 * @t2lm_provisioned_links: Indicates TID to link mapping of all the TIDS. 1143 */ 1144 struct wlan_host_t2lm_of_tids { 1145 enum wlan_t2lm_direction direction; 1146 bool default_link_mapping; 1147 uint16_t t2lm_provisioned_links[T2LM_MAX_NUM_TIDS]; 1148 }; 1149 1150 /** 1151 * struct wmi_host_tid_to_link_map_params - TID-to-link mapping params 1152 * @pdev_id: Pdev id 1153 * @peer_macaddr: link peer macaddr 1154 * @num_dir: number of directions for which T2LM info is available 1155 * @t2lm_info: TID-to-link mapping info for the given directions 1156 * @mapping_switch_time: Mapping switch time of this T2LM IE 1157 * @expected_duration: Expected duration of this T2LM IE 1158 * @preferred_links: Preferred link info. 1159 */ 1160 struct wmi_host_tid_to_link_map_params { 1161 uint8_t pdev_id; 1162 uint8_t peer_macaddr[QDF_MAC_ADDR_SIZE]; 1163 uint8_t num_dir; 1164 struct wlan_host_t2lm_of_tids t2lm_info[WLAN_T2LM_MAX_DIRECTION]; 1165 uint16_t mapping_switch_time; 1166 uint32_t expected_duration; 1167 #ifdef WMI_AP_SUPPORT 1168 struct wlan_host_preferred_links preferred_links; 1169 #endif 1170 }; 1171 1172 /** 1173 * struct wmi_host_tid_to_link_map_ap_params - TID-to-link mapping params 1174 * @pdev_id: Pdev id 1175 * @vdev_id: Vdev id 1176 * @num_t2lm_info: Number of t2lm IEs 1177 * @hw_link_id: HW link id 1178 * @disabled_link_bitmap: Disabled link bitmap info 1179 * @info: TID-to-link mapping IE info 1180 */ 1181 struct wmi_host_tid_to_link_map_ap_params { 1182 uint8_t pdev_id; 1183 uint8_t vdev_id; 1184 uint8_t num_t2lm_info; 1185 uint16_t hw_link_id; 1186 uint16_t disabled_link_bitmap; 1187 struct wlan_t2lm_info info[WLAN_MAX_T2LM_IE]; 1188 }; 1189 1190 /** 1191 * struct wmi_host_tid_to_link_map_resp - TID-to-link mapping response 1192 * @vdev_id: Vdev id 1193 * @status: Target status for t2lm ie info 1194 * @mapping_switch_tsf: Mapping switch time in tsf for probe response frames 1195 */ 1196 struct wmi_host_tid_to_link_map_resp { 1197 uint8_t vdev_id; 1198 enum wlan_t2lm_status status; 1199 uint8_t mapping_switch_tsf; 1200 }; 1201 1202 /** 1203 * struct wmi_host_link_state_params - MLO link state params 1204 * @vdev_id: Vdev id 1205 * @mld_mac: mld mac address 1206 */ 1207 struct wmi_host_link_state_params { 1208 uint8_t vdev_id; 1209 uint8_t mld_mac[QDF_MAC_ADDR_SIZE]; 1210 }; 1211 1212 /** 1213 * struct wmi_host_link_bss_params - link bss params 1214 * @link_id: link id 1215 * @ap_mld_mac: ap mld mac address 1216 * @chan: channel 1217 */ 1218 struct wmi_host_link_bss_params { 1219 uint8_t link_id; 1220 uint8_t ap_mld_mac[QDF_MAC_ADDR_SIZE]; 1221 struct wlan_channel chan; 1222 }; 1223 1224 #endif /* WLAN_FEATURE_11BE */ 1225 1226 #ifdef WLAN_FEATURE_11BE_MLO 1227 /** 1228 * struct peer_assoc_mlo_params - MLO assoc params 1229 * @mlo_enabled: indicate is MLO enabled 1230 * @mlo_assoc_link: indicate is the link used to initialize the association 1231 * of mlo connection 1232 * @mlo_primary_umac: indicate is the link on primary UMAC, WIN only flag 1233 * @mlo_logical_link_index_valid: indicate if the logial link index in is valid 1234 * @mlo_peer_id_valid: indicate if the mlo peer id is valid 1235 * @mlo_force_link_inactive: force the peer inactive 1236 * @emlsr_support: indicate if eMLSR supported 1237 * @emlmr_support: indicate if eMLMR supported 1238 * @msd_cap_support: indicate if MSD supported 1239 * @nstr_bitmap_present: indicate if NSTR bitmap is present 1240 * @nstr_bitmap_size: Indicates size of NSTR bitmap, 1241 * as per the 802.11be specification 1242 * @mlo_bridge_peer: indicate if it is bridge peer 1243 * @link_switch_in_progress: Flag to indicate FW MLO peer assoc params are sent 1244 * for the peer due to link switch 1245 * @unused: spare bits 1246 * @mld_mac: MLD mac address 1247 * @logical_link_index: Unique index for links of the mlo. Starts with Zero 1248 * @ml_peer_id: ML peer id if generated by host. Otherwise invalid peer id 1249 * @ieee_link_id: peer link ID 1250 * @emlsr_pad_delay_us: eMLSR Padding Delay from peer in us 1251 * @emlsr_trans_delay_us: eMLSR Transition Delay from peer in us 1252 * @emlmr_delay_us: eMLMR Delay from peer in us 1253 * @trans_timeout_us: EML Transition Timeout in us 1254 * @medium_sync_duration: medium sync duration in us 1255 * @medium_sync_ofdm_ed_thresh: medium sync ofdm threshold in us 1256 * @medium_sync_max_txop_num: Max number of TXOPs 1257 * @max_num_simultaneous_links: Max number of simultaneous links as per 1258 * MLD Capability for ML peer 1259 * @nstr_indication_bitmap: NSTR indication bitmap 1260 * @vdev_id: ID of the vdev object 1261 * @bssid: AP link address 1262 * @chan: Wlan channel information 1263 * @mac_addr: Self mac addresses 1264 */ 1265 struct peer_assoc_mlo_params { 1266 uint32_t mlo_enabled:1, 1267 mlo_assoc_link:1, 1268 mlo_primary_umac:1, 1269 mlo_logical_link_index_valid:1, 1270 mlo_peer_id_valid:1, 1271 mlo_force_link_inactive:1, 1272 emlsr_support:1, 1273 emlmr_support:1, 1274 msd_cap_support:1, 1275 nstr_bitmap_present:1, 1276 nstr_bitmap_size:1, 1277 mlo_bridge_peer:1, 1278 link_switch_in_progress:1, 1279 unused:19; 1280 uint8_t mld_mac[QDF_MAC_ADDR_SIZE]; 1281 uint32_t logical_link_index; 1282 uint32_t ml_peer_id; 1283 uint32_t ieee_link_id; 1284 uint16_t emlsr_pad_delay_us; 1285 uint16_t emlsr_trans_delay_us; 1286 uint16_t emlmr_delay_us; 1287 uint32_t trans_timeout_us; 1288 uint16_t medium_sync_duration; 1289 uint16_t medium_sync_ofdm_ed_thresh; 1290 uint16_t medium_sync_max_txop_num; 1291 uint16_t max_num_simultaneous_links; 1292 uint32_t nstr_indication_bitmap; 1293 uint32_t vdev_id; 1294 struct qdf_mac_addr bssid; 1295 struct wlan_channel chan; 1296 struct qdf_mac_addr mac_addr; 1297 }; 1298 1299 /** 1300 * struct ml_partner_info - partner link info 1301 * @vdev_id: vdev id 1302 * @hw_mld_link_id: unique hw link id across SoCs 1303 * @mlo_enabled: indicate is MLO enabled 1304 * @mlo_assoc_link: indicate is the link used to initialize the association 1305 * of mlo connection 1306 * @mlo_primary_umac: indicate is the link on primary UMAC, WIN only flag 1307 * @mlo_logical_link_index_valid: indicate if the logial link index in is valid 1308 * @mlo_peer_id_valid: indicate if the mlo peer id is valid 1309 * @mlo_force_link_inactive: force the peer inactive 1310 * @emlsr_support: indicate if eMLSR supported 1311 * @emlmr_support: indicate if eMLMR supported 1312 * @msd_cap_support: indicate if MSD supported 1313 * @mlo_bridge_peer: indicate if peer is bridge peer 1314 * @unused: spare bits 1315 * @logical_link_index: Unique index for links of the mlo. Starts with Zero 1316 * @link_id: AP Link Id 1317 * @bssid: AP link address 1318 * @chan: Wlan channel information 1319 * @mac_addr: Self mac addresses 1320 */ 1321 struct ml_partner_info { 1322 uint32_t vdev_id; 1323 uint32_t hw_mld_link_id; 1324 uint32_t mlo_enabled:1, 1325 mlo_assoc_link:1, 1326 mlo_primary_umac:1, 1327 mlo_logical_link_index_valid:1, 1328 mlo_peer_id_valid:1, 1329 mlo_force_link_inactive:1, 1330 emlsr_support:1, 1331 emlmr_support:1, 1332 msd_cap_support:1, 1333 mlo_bridge_peer:1, 1334 unused:22; 1335 uint32_t logical_link_index; 1336 uint32_t link_id; 1337 struct qdf_mac_addr bssid; 1338 struct wlan_channel chan; 1339 struct qdf_mac_addr mac_addr; 1340 }; 1341 1342 /** 1343 * struct peer_assoc_ml_partner_links - ML partner links 1344 * @num_links: Number of links 1345 * @partner_info: Partner link info 1346 */ 1347 struct peer_assoc_ml_partner_links { 1348 uint8_t num_links; 1349 struct ml_partner_info partner_info[WLAN_UMAC_MLO_MAX_VDEVS]; 1350 }; 1351 #endif 1352 /** 1353 * struct peer_assoc_params - peer assoc cmd parameter 1354 * @vdev_id: vdev id 1355 * @peer_new_assoc: peer association type 1356 * @peer_associd: peer association id 1357 * @peer_caps: peer capabalities 1358 * @peer_listen_intval: peer listen interval 1359 * @peer_ht_caps: HT capabalities 1360 * @peer_max_mpdu: 0 : 8k , 1 : 16k, 2 : 32k, 3 : 64k 1361 * @peer_mpdu_density: 3 : 0~7 : 2^(11nAMPDUdensity -4) 1362 * @peer_rate_caps: peer rate capabalities 1363 * @peer_nss: peer nss 1364 * @peer_vht_caps: peer VHT capabilities 1365 * @peer_phymode: peer phymode 1366 * @peer_ht_info: peer HT info 1367 * @peer_legacy_rates: peer legacy rates 1368 * @peer_ht_rates: peer ht rates 1369 * @rx_max_rate: max rx rates 1370 * @rx_mcs_set: rx mcs 1371 * @tx_max_rate: max tx rates 1372 * @tx_mcs_set: tx mcs 1373 * @vht_capable: VHT capabalities 1374 * @min_data_rate: Peer minimum rate 1375 * @tx_max_mcs_nss: max tx MCS and NSS 1376 * @peer_bw_rxnss_override: Peer BW RX NSS overridden or not. 1377 * @is_pmf_enabled: PMF enabled 1378 * @is_wme_set: WME enabled 1379 * @qos_flag: QoS Flags 1380 * @apsd_flag: APSD flags 1381 * @ht_flag: HT flags 1382 * @bw_40: 40 capabale 1383 * @bw_80: 80 capabale 1384 * @bw_160: 160 capabale 1385 * @bw_320: 320 capabale 1386 * @stbc_flag: STBC flag 1387 * @ldpc_flag: LDPC flag 1388 * @static_mimops_flag: statis MIMO PS flags 1389 * @dynamic_mimops_flag: Dynamic MIMO PS flags 1390 * @spatial_mux_flag: spatial MUX flags 1391 * @vht_flag: VHT flags 1392 * @vht_ng_flag: VHT on 11N/G flags 1393 * @need_ptk_4_way: Needs 4 way handshake 1394 * @need_gtk_2_way: Needs 2 way GTK 1395 * @auth_flag: Is peer authenticated 1396 * @safe_mode_enabled: Safe enabled for this peer 1397 * @amsdu_disable: AMSDU disable 1398 * @peer_mac: Peer mac address 1399 * @he_flag: HE flags 1400 * @eht_flag: EHT flags 1401 * @twt_requester: TWT Requester Support bit in Extended Capabilities element 1402 * @twt_responder: TWT Responder Support bit in Extended Capabilities element 1403 * @peer_he_cap_macinfo: Peer HE Cap MAC info 1404 * @peer_he_ops: Peer HE operation info 1405 * @peer_he_cap_phyinfo: Peer HE Cap PHY info 1406 * @peer_he_cap_info_internal: Peer HE internal PHY capability info 1407 * @peer_he_caps_6ghz: Peer HE 6GHz Band Capabilities info 1408 * @peer_he_mcs_count: Peer HE MCS TX/RX MAP count 1409 * @peer_he_rx_mcs_set: Peer HE RX MCS MAP 1410 * @peer_he_tx_mcs_set: Peer HE TX MCS MAP 1411 * @peer_eht_cap_macinfo: Peer EHT Cap MAC info 1412 * @peer_eht_ops: Peer EHT operation info 1413 * @peer_eht_cap_phyinfo: Peer EHT Cap PHY info 1414 * @peer_eht_mcs_count: Peer EHT MCS TX/RX MAP count 1415 * @peer_eht_rx_mcs_set: Peer EHT RX MCS MAP 1416 * @peer_eht_tx_mcs_set: Peer EHT TX MCS MAP 1417 * @peer_eht_ppet: Peer EHT PPET info 1418 * @puncture_bitmap: 11be static puncture bitmap 1419 * @peer_ppet: Peer HE PPET info 1420 * @peer_bsscolor_rept_info: 1421 * @peer_bss_max_idle_option: Peer BSS Max Idle option update 1422 * @akm: AKM info 1423 * @mlo_params: MLO assoc params 1424 * @ml_links: MLO partner links 1425 * @qcn_node_flag: if node is QCN node 1426 * @mesh_node_flag: if node is 4 addr node 1427 * @is_assoc_vdev: true if assoc vdev 1428 * @peer_dms_capable: is peer DMS capable 1429 * @reserved: spare bits 1430 * @t2lm_params: TID-to-link mapping params 1431 */ 1432 struct peer_assoc_params { 1433 uint32_t vdev_id; 1434 uint32_t peer_new_assoc; 1435 uint32_t peer_associd; 1436 uint32_t peer_caps; 1437 uint32_t peer_listen_intval; 1438 uint32_t peer_ht_caps; 1439 uint32_t peer_max_mpdu; 1440 uint32_t peer_mpdu_density; 1441 uint32_t peer_rate_caps; 1442 uint32_t peer_nss; 1443 uint32_t peer_vht_caps; 1444 uint32_t peer_phymode; 1445 uint32_t peer_ht_info[2]; 1446 target_rate_set peer_legacy_rates; 1447 target_rate_set peer_ht_rates; 1448 uint32_t rx_max_rate; 1449 uint32_t rx_mcs_set; 1450 uint32_t tx_max_rate; 1451 uint32_t tx_mcs_set; 1452 uint8_t vht_capable; 1453 uint8_t min_data_rate; 1454 uint32_t peer_bw_rxnss_override; 1455 uint32_t tx_max_mcs_nss; 1456 uint32_t is_pmf_enabled:1, 1457 is_wme_set:1, 1458 qos_flag:1, 1459 apsd_flag:1, 1460 ht_flag:1, 1461 bw_40:1, 1462 bw_80:1, 1463 bw_160:1, 1464 #ifdef WLAN_FEATURE_11BE 1465 bw_320:1, 1466 #endif 1467 stbc_flag:1, 1468 ldpc_flag:1, 1469 static_mimops_flag:1, 1470 dynamic_mimops_flag:1, 1471 spatial_mux_flag:1, 1472 vht_flag:1, 1473 vht_ng_flag:1, 1474 need_ptk_4_way:1, 1475 need_gtk_2_way:1, 1476 auth_flag:1, 1477 safe_mode_enabled:1, 1478 amsdu_disable:1, 1479 p2p_capable_sta:1, 1480 inter_bss_peer:1; 1481 /* Use common structure */ 1482 uint8_t peer_mac[QDF_MAC_ADDR_SIZE]; 1483 bool he_flag; 1484 #ifdef WLAN_FEATURE_11BE 1485 bool eht_flag; 1486 #endif 1487 bool twt_requester; 1488 bool twt_responder; 1489 uint32_t peer_he_cap_macinfo[WMI_HOST_MAX_HECAP_MAC_SIZE]; 1490 uint32_t peer_he_ops; 1491 uint32_t peer_he_cap_phyinfo[WMI_HOST_MAX_HECAP_PHY_SIZE]; 1492 uint32_t peer_he_cap_info_internal; 1493 uint32_t peer_he_caps_6ghz; 1494 uint32_t peer_he_mcs_count; 1495 uint32_t peer_he_rx_mcs_set[WMI_HOST_MAX_HE_RATE_SET]; 1496 uint32_t peer_he_tx_mcs_set[WMI_HOST_MAX_HE_RATE_SET]; 1497 #ifdef WLAN_FEATURE_11BE 1498 uint32_t peer_eht_cap_macinfo[WMI_HOST_MAX_EHTCAP_MAC_SIZE]; 1499 uint32_t peer_eht_ops; 1500 uint32_t peer_eht_cap_phyinfo[WMI_HOST_MAX_EHTCAP_PHY_SIZE]; 1501 uint32_t peer_eht_mcs_count; 1502 uint32_t peer_eht_rx_mcs_set[WMI_HOST_MAX_EHT_RATE_SET]; 1503 uint32_t peer_eht_tx_mcs_set[WMI_HOST_MAX_EHT_RATE_SET]; 1504 struct wmi_host_ppe_threshold peer_eht_ppet; 1505 uint16_t puncture_bitmap; 1506 #endif 1507 struct wmi_host_ppe_threshold peer_ppet; 1508 u_int8_t peer_bsscolor_rept_info; 1509 uint32_t peer_bss_max_idle_option; 1510 uint16_t akm; 1511 #ifdef WLAN_FEATURE_11BE_MLO 1512 struct peer_assoc_mlo_params mlo_params; 1513 struct peer_assoc_ml_partner_links ml_links; 1514 bool qcn_node_flag; 1515 bool mesh_node_flag; 1516 bool is_assoc_vdev; 1517 #endif 1518 uint8_t peer_dms_capable:1, 1519 reserved:7; 1520 #ifdef WLAN_FEATURE_11BE 1521 struct wmi_host_tid_to_link_map_params t2lm_params; 1522 #endif 1523 }; 1524 1525 /** 1526 * struct ap_ps_params - ap ps cmd parameter 1527 * @vdev_id: vdev id 1528 * @param: ap ps parameter 1529 * @value: ap ps parameter value 1530 */ 1531 struct ap_ps_params { 1532 uint32_t vdev_id; 1533 uint32_t param; 1534 uint32_t value; 1535 }; 1536 1537 #define WMI_HOST_SCAN_CHAN_FREQ_SHIFT 0 1538 #define WMI_HOST_SCAN_CHAN_FREQ_MASK 0xffff 1539 #define WMI_HOST_SCAN_CHAN_MODE_SHIFT 16 1540 #define WMI_HOST_SCAN_CHAN_MODE_MASK 0xff 1541 1542 #define WMI_HOST_MAX_CHANS_PER_WMI_CMD 58 1543 1544 /** 1545 * struct scan_chan_list_params - scan channel list cmd parameter 1546 * @pdev_id: pdev_id 1547 * @num_chan: no of scan channels 1548 * @nallchans: nall chans 1549 * @append: append to existing chan list 1550 * @max_bw_support_present: max BW support present 1551 * @ch_param: pointer to channel_paramw 1552 */ 1553 struct scan_chan_list_params { 1554 uint32_t pdev_id; 1555 uint16_t nallchans; 1556 bool append; 1557 bool max_bw_support_present; 1558 struct channel_param ch_param[1]; 1559 }; 1560 1561 #ifdef QCA_SUPPORT_AGILE_DFS 1562 /** 1563 * struct vdev_adfs_ch_cfg_params - Agile dfs channel set request params 1564 * @vdev_id: Vdev identifier 1565 * @ocac_mode: Off Channel CAC mode, see WMI_ADFS_OCAC_MODE 1566 * @min_duration_ms: Minimum Off channel CAC duration 1567 * @max_duration_ms: Maximum Off channel CAC duration 1568 * @chan_freq: channel number of precac channel 1569 * @chan_width: Precac Channel width 1570 * @center_freq1: Agile preCAC channel frequency in MHz for 20/40/80/160 1571 * and left center frequency(5690MHz) for restricted 80p80. 1572 * @center_freq2: Second segment Agile frequency in Mhz, if applicable. 0 for 1573 * 20/40/80/160 and right center frequency(5775MHz) for 1574 * restricted 80p80. 1575 */ 1576 struct vdev_adfs_ch_cfg_params { 1577 uint32_t vdev_id; 1578 uint32_t ocac_mode; 1579 uint32_t min_duration_ms; 1580 uint32_t max_duration_ms; 1581 uint32_t chan_freq; 1582 uint32_t chan_width; 1583 uint32_t center_freq1; 1584 uint32_t center_freq2; 1585 }; 1586 1587 /** 1588 * struct vdev_adfs_abort_params - Agile dfs ocac abort command to stop precac. 1589 * @vdev_id: Vdev identifier 1590 */ 1591 struct vdev_adfs_abort_params { 1592 uint32_t vdev_id; 1593 }; 1594 #endif 1595 /** 1596 * struct fw_hang_params - fw hang command parameters 1597 * @type: 0:unused 1: ASSERT, 2:not respond detect command, 3:simulate ep-full 1598 * @delay_time_ms: 0xffffffff means the simulate will delay for random time (0 ~0xffffffff ms) 1599 */ 1600 struct fw_hang_params { 1601 uint32_t type; 1602 uint32_t delay_time_ms; 1603 }; 1604 1605 /** 1606 * struct pdev_utf_params - pdev utf command parameters 1607 * @utf_payload: 1608 * @len: 1609 * @is_ar900b: is it 900b target 1610 */ 1611 struct pdev_utf_params { 1612 uint8_t *utf_payload; 1613 uint32_t len; 1614 bool is_ar900b; 1615 }; 1616 1617 /*Adding this due to dependency on wmi_unified.h 1618 */ 1619 typedef struct { 1620 uint32_t len; 1621 uint32_t msgref; 1622 uint32_t segmentInfo; 1623 } QVIT_SEG_HDR_INFO_STRUCT; 1624 1625 /** 1626 * struct crash_inject - crash inject command parameters 1627 * @type: crash inject type 1628 * @delay_time_ms: time in milliseconds for FW to delay the crash 1629 */ 1630 struct crash_inject { 1631 uint32_t type; 1632 uint32_t delay_time_ms; 1633 }; 1634 1635 /** 1636 * struct dbglog_params - fw deboglog command parameters 1637 * @param: command parameter 1638 * @val: parameter value 1639 * @module_id_bitmap: fixed length module id bitmap 1640 * @bitmap_len: module id bitmap length 1641 * @cfgvalid: cfgvalid 1642 */ 1643 struct dbglog_params { 1644 uint32_t param; 1645 uint32_t val; 1646 uint32_t *module_id_bitmap; 1647 uint32_t bitmap_len; 1648 uint32_t cfgvalid[3]; 1649 }; 1650 1651 /** 1652 * struct seg_hdr_info - header info 1653 * @len: length 1654 * @msgref: message reference 1655 * @segmentInfo: segment info 1656 * @pad: padding 1657 */ 1658 struct seg_hdr_info { 1659 uint32_t len; 1660 uint32_t msgref; 1661 uint32_t segmentInfo; 1662 uint32_t pad; 1663 }; 1664 1665 /** 1666 * struct tx_send_params - TX parameters 1667 * @pwr: Tx frame transmission power 1668 * @mcs_mask: Modulation and coding index mask for transmission 1669 * bit 0 -> CCK 1 Mbps rate is allowed 1670 * bit 1 -> CCK 2 Mbps rate is allowed 1671 * bit 2 -> CCK 5.5 Mbps rate is allowed 1672 * bit 3 -> CCK 11 Mbps rate is allowed 1673 * bit 4 -> OFDM BPSK modulation, 1/2 coding rate is allowed 1674 * bit 5 -> OFDM BPSK modulation, 3/4 coding rate is allowed 1675 * bit 6 -> OFDM QPSK modulation, 1/2 coding rate is allowed 1676 * bit 7 -> OFDM QPSK modulation, 3/4 coding rate is allowed 1677 * bit 8 -> OFDM 16-QAM modulation, 1/2 coding rate is allowed 1678 * bit 9 -> OFDM 16-QAM modulation, 3/4 coding rate is allowed 1679 * bit 10 -> OFDM 64-QAM modulation, 2/3 coding rate is allowed 1680 * bit 11 -> OFDM 64-QAM modulation, 3/4 coding rate is allowed 1681 * @nss_mask: Spatial streams permitted 1682 * bit 0: if set, Nss = 1 (non-MIMO) is permitted 1683 * bit 1: if set, Nss = 2 (2x2 MIMO) is permitted 1684 * bit 2: if set, Nss = 3 (3x3 MIMO) is permitted 1685 * bit 3: if set, Nss = 4 (4x4 MIMO) is permitted 1686 * bit 4: if set, Nss = 5 (5x5 MIMO) is permitted 1687 * bit 5: if set, Nss = 6 (6x6 MIMO) is permitted 1688 * bit 6: if set, Nss = 7 (7x7 MIMO) is permitted 1689 * bit 7: if set, Nss = 8 (8x8 MIMO) is permitted 1690 * If no bits are set, target will choose what NSS type to use 1691 * @retry_limit: Maximum number of retries before ACK 1692 * @chain_mask: Chains to be used for transmission 1693 * @bw_mask: Bandwidth to be used for transmission 1694 * bit 0 -> 5MHz 1695 * bit 1 -> 10MHz 1696 * bit 2 -> 20MHz 1697 * bit 3 -> 40MHz 1698 * bit 4 -> 80MHz 1699 * bit 5 -> 160MHz 1700 * bit 6 -> 80_80MHz 1701 * @preamble_type: Preamble types for transmission 1702 * bit 0: if set, OFDM 1703 * bit 1: if set, CCK 1704 * bit 2: if set, HT 1705 * bit 3: if set, VHT 1706 * bit 4: if set, HE 1707 * @frame_type: Data or Management frame 1708 * Data:1 Mgmt:0 1709 * @cfr_enable: flag to enable CFR capture 1710 * 0:disable 1:enable 1711 * @en_beamforming: flag to enable tx beamforming 1712 * 0:disable 1:enable 1713 * @retry_limit_ext: 3 bits of extended retry limit. 1714 * Combined with 4 bits "retry_limit" 1715 * to create 7 bits hw retry count. 1716 * Maximum 127 retries for specific frames. 1717 * @reserved: Spare bits 1718 */ 1719 struct tx_send_params { 1720 uint32_t pwr:8, 1721 mcs_mask:12, 1722 nss_mask:8, 1723 retry_limit:4; 1724 uint32_t chain_mask:8, 1725 bw_mask:7, 1726 preamble_type:5, 1727 frame_type:1, 1728 cfr_enable:1, 1729 en_beamforming:1, 1730 retry_limit_ext:3, 1731 reserved:6; 1732 }; 1733 1734 /** 1735 * struct wmi_mgmt_params - wmi mgmt cmd parameters 1736 * @tx_frame: management tx frame 1737 * @frm_len: frame length 1738 * @vdev_id: vdev id 1739 * @tx_type: type of management frame (determines what callback to use) 1740 * @chanfreq: channel frequency 1741 * @desc_id: descriptor id relyaed back by target 1742 * @pdata: frame data 1743 * @macaddr: macaddr of peer 1744 * @qdf_ctx: qdf context for qdf_nbuf_map 1745 * @tx_param: TX send parameters 1746 * @tx_params_valid: Flag that indicates if TX params are valid 1747 * @use_6mbps: specify whether management frame to transmit should 1748 * @tx_flags: additional configuration flags for mgmt frames 1749 * use 6 Mbps rather than 1 Mbps min rate(for 5GHz band or P2P) 1750 * @peer_rssi: peer RSSI value 1751 * @mlo_link_agnostic: if true, can send on any active link 1752 */ 1753 struct wmi_mgmt_params { 1754 void *tx_frame; 1755 uint16_t frm_len; 1756 uint8_t vdev_id; 1757 uint8_t tx_type; 1758 uint16_t chanfreq; 1759 uint16_t desc_id; 1760 void *pdata; 1761 uint8_t *macaddr; 1762 void *qdf_ctx; 1763 struct tx_send_params tx_param; 1764 bool tx_params_valid; 1765 uint8_t use_6mbps; 1766 uint32_t tx_flags; 1767 int8_t peer_rssi; 1768 uint8_t mlo_link_agnostic; 1769 }; 1770 1771 /** 1772 * struct wmi_offchan_data_tx_params - wmi offchan data tx cmd parameters 1773 * @tx_frame: management tx frame 1774 * @frm_len: frame length 1775 * @vdev_id: vdev id 1776 * @tx_params_valid: Flag that indicates if TX params are valid 1777 * @chanfreq: channel frequency 1778 * @desc_id: descriptor id relyaed back by target 1779 * @pdata: frame data 1780 * @macaddr: macaddr of peer 1781 * @qdf_ctx: qdf context for qdf_nbuf_map 1782 * @tx_param: TX send parameters 1783 */ 1784 struct wmi_offchan_data_tx_params { 1785 void *tx_frame; 1786 uint16_t frm_len; 1787 uint8_t vdev_id; 1788 bool tx_params_valid; 1789 uint16_t chanfreq; 1790 uint16_t desc_id; 1791 void *pdata; 1792 uint8_t *macaddr; 1793 void *qdf_ctx; 1794 struct tx_send_params tx_param; 1795 }; 1796 1797 /** 1798 * struct sta_uapsd_params - uapsd auto trig params 1799 * @wmm_ac: WMM access category from 0 to 3 1800 * @user_priority: User priority to use in trigger frames 1801 * @service_interval: service interval 1802 * @suspend_interval: suspend interval 1803 * @delay_interval: delay interval 1804 */ 1805 struct sta_uapsd_params { 1806 uint32_t wmm_ac; 1807 uint32_t user_priority; 1808 uint32_t service_interval; 1809 uint32_t suspend_interval; 1810 uint32_t delay_interval; 1811 }; 1812 1813 /** 1814 * struct sta_uapsd_trig_params - uapsd trigger parameter 1815 * @vdevid: vdev id 1816 * @peer_addr: peer address 1817 * @num_ac: no of access category 1818 * @auto_triggerparam: trigger parameters 1819 */ 1820 struct sta_uapsd_trig_params { 1821 uint32_t vdevid; 1822 uint8_t peer_addr[QDF_MAC_ADDR_SIZE]; 1823 uint32_t num_ac; 1824 struct sta_uapsd_params *auto_triggerparam; 1825 }; 1826 1827 #define WMI_NUM_AC (4) 1828 #define WMI_MAX_NUM_AC 4 1829 1830 1831 enum wmi_peer_rate_report_cond_phy_type { 1832 WMI_PEER_RATE_REPORT_COND_11B = 0, 1833 WMI_PEER_RATE_REPORT_COND_11A_G, 1834 WMI_PEER_RATE_REPORT_COND_11N, 1835 WMI_PEER_RATE_REPORT_COND_11AC, 1836 WMI_PEER_RATE_REPORT_COND_MAX_NUM 1837 }; 1838 1839 /** 1840 * struct report_rate_delta - peer specific parameters 1841 * @percent: percentage 1842 * @delta_min: rate min delta 1843 */ 1844 struct report_rate_delta { 1845 uint32_t percent; /* in unit of 12.5% */ 1846 uint32_t delta_min; /* in unit of Mbps */ 1847 }; 1848 1849 /** 1850 * struct report_rate_per_phy - per phy report parameters 1851 * @cond_flags: condition flag val 1852 * @delta: rate delta 1853 * @report_rate_threshold: rate threshold 1854 */ 1855 struct report_rate_per_phy { 1856 /* 1857 * PEER_RATE_REPORT_COND_FLAG_DELTA, 1858 * PEER_RATE_REPORT_COND_FLAG_THRESHOLD 1859 * Any of these two conditions or both of 1860 * them can be set. 1861 */ 1862 uint32_t cond_flags; 1863 struct report_rate_delta delta; 1864 /* 1865 * In unit of Mbps. There are at most 4 thresholds 1866 * If the threshold count is less than 4, set zero to 1867 * the one following the last threshold 1868 */ 1869 uint32_t report_rate_threshold[WMI_MAX_NUM_OF_RATE_THRESH]; 1870 }; 1871 1872 /** 1873 * struct wmi_peer_rate_report_params - peer rate report parameters 1874 * @rate_report_enable: enable rate report param 1875 * @backoff_time: backoff time in unit of msecond 1876 * @timer_period: timer in unit of msecond 1877 * @report_per_phy: report per wmi_peer_rate_report_cond_phy_type 1878 */ 1879 struct wmi_peer_rate_report_params { 1880 uint32_t rate_report_enable; 1881 uint32_t backoff_time; 1882 uint32_t timer_period; 1883 struct report_rate_per_phy report_per_phy[ 1884 WMI_PEER_RATE_REPORT_COND_MAX_NUM]; 1885 1886 }; 1887 1888 /** 1889 * enum thermal_mgmt_action_code - thermal mgmt action code 1890 * @THERMAL_MGMT_ACTION_DEFAULT: target chooses what action to take, based 1891 * on its default thermal management policy. 1892 * @THERMAL_MGMT_ACTION_HALT_TRAFFIC: If the temperature rises above 1893 * configured upper thresh degreeC, the target will halt tx. 1894 * @THERMAL_MGMT_ACTION_NOTIFY_HOST: the target will notify the host 1895 * if the temperature either rises above configured upper thresh degreeC or 1896 * falls below lower thresh degreeC. 1897 * @THERMAL_MGMT_ACTION_CHAINSCALING: The target will switch tx chain 1898 * mask from multi chains to single chain if the temperature rises 1899 * above upper thresh degreeC. 1900 * The target will switch tx chainmask back to multi chains if the 1901 * temperature drops below upper_thresh_degreeC. 1902 */ 1903 enum thermal_mgmt_action_code { 1904 THERMAL_MGMT_ACTION_DEFAULT, 1905 THERMAL_MGMT_ACTION_HALT_TRAFFIC, 1906 THERMAL_MGMT_ACTION_NOTIFY_HOST, 1907 THERMAL_MGMT_ACTION_CHAINSCALING, 1908 }; 1909 1910 /** 1911 * struct thermal_cmd_params - thermal command parameters 1912 * @min_temp: minimum temperature 1913 * @max_temp: maximum temperature 1914 * @thermal_enable: thermal enable 1915 * @thermal_action: thermal action code 1916 */ 1917 struct thermal_cmd_params { 1918 uint16_t min_temp; 1919 uint16_t max_temp; 1920 uint8_t thermal_enable; 1921 enum thermal_mgmt_action_code thermal_action; 1922 }; 1923 1924 #define WMI_LRO_IPV4_SEED_ARR_SZ 5 1925 #define WMI_LRO_IPV6_SEED_ARR_SZ 11 1926 1927 /** 1928 * struct wmi_lro_config_cmd_t - set LRO init parameters 1929 * @lro_enable: indicates whether lro is enabled 1930 * @tcp_flag: If the TCP flags from the packet do not match 1931 * the values in this field after masking with TCP flags mask 1932 * below, packet is not LRO eligible 1933 * @tcp_flag_mask: field for comparing the TCP values provided 1934 * above with the TCP flags field in the received packet 1935 * @toeplitz_hash_ipv4: contains seed needed to compute the flow id 1936 * 5-tuple toeplitz hash for ipv4 packets 1937 * @toeplitz_hash_ipv6: contains seed needed to compute the flow id 1938 * 5-tuple toeplitz hash for ipv6 packets 1939 * @pdev_id: radio on which lro hash is configured 1940 */ 1941 struct wmi_lro_config_cmd_t { 1942 uint32_t lro_enable; 1943 uint32_t tcp_flag:9, 1944 tcp_flag_mask:9; 1945 uint32_t toeplitz_hash_ipv4[WMI_LRO_IPV4_SEED_ARR_SZ]; 1946 uint32_t toeplitz_hash_ipv6[WMI_LRO_IPV6_SEED_ARR_SZ]; 1947 uint32_t pdev_id; 1948 }; 1949 1950 #ifdef WLAN_FEATURE_11BE_MLO 1951 /** 1952 * struct mlo_prb_resp_tmpl_ml_info - Impacted link critical update information 1953 * @hw_link_id: Unique hw link id across SoCs 1954 * CU vdev map for the Critical update category-1 (Inclusion of CU IES) 1955 * @cu_vdev_map_cat1_lo: bits 31:0 to represent vdev ids 0 to 31 1956 * @cu_vdev_map_cat1_hi: bits 63:32 to represent vdev ids 32 to 63 1957 * CU vdev map for the Critical update category-2 (modification of CU IES) 1958 * @cu_vdev_map_cat2_lo: bits 31:0 to represent vdev ids 0 to 31 1959 * @cu_vdev_map_cat2_hi: bits 63:32 to represent vdev ids 32 to 63 1960 */ 1961 struct mlo_prb_resp_tmpl_ml_info { 1962 uint32_t hw_link_id; 1963 uint32_t cu_vdev_map_cat1_lo; 1964 uint32_t cu_vdev_map_cat1_hi; 1965 uint32_t cu_vdev_map_cat2_lo; 1966 uint32_t cu_vdev_map_cat2_hi; 1967 }; 1968 #endif 1969 1970 /** 1971 * struct wmi_probe_resp_params - send probe response parameters 1972 * @prb_rsp_template_frm: pointer to template probe response template 1973 * @prb_rsp_template_len: length of probe response template 1974 * @cu_ml_info: Impacted link critical update information 1975 */ 1976 struct wmi_probe_resp_params { 1977 uint8_t *prb_rsp_template_frm; 1978 uint32_t prb_rsp_template_len; 1979 #ifdef WLAN_FEATURE_11BE_MLO 1980 struct mlo_prb_resp_tmpl_ml_info cu_ml_info; 1981 #endif 1982 }; 1983 1984 /* struct set_key_params: structure containing 1985 * installation key parameters 1986 * @vdev_id: vdev id 1987 * @key_len: key length 1988 * @key_idx: key index 1989 * @group_key_idx: group key index for VLAN 1990 * @peer_mac: peer mac address 1991 * @key_flags: key flags, 0:pairwise key, 1:group key, 2:static key 1992 * @key_cipher: key cipher based on security mode 1993 * @key_txmic_len: tx mic length 1994 * @key_rxmic_len: rx mic length 1995 * @key_tsc_counter: key tx sc counter 1996 * @key_rsc_counter: key rx sc counter 1997 * @rx_iv: receive IV, applicable only in case of WAPI 1998 * @tx_iv: transmit IV, applicable only in case of WAPI 1999 * @key_data: key data 2000 */ 2001 struct set_key_params { 2002 uint8_t vdev_id; 2003 uint16_t key_len; 2004 uint32_t key_idx; 2005 uint32_t group_key_idx; 2006 uint8_t peer_mac[QDF_MAC_ADDR_SIZE]; 2007 uint32_t key_flags; 2008 uint32_t key_cipher; 2009 uint32_t key_txmic_len; 2010 uint32_t key_rxmic_len; 2011 uint64_t key_tsc_counter; 2012 uint64_t key_rsc_counter; 2013 #if defined(ATH_SUPPORT_WAPI) || defined(FEATURE_WLAN_WAPI) 2014 uint8_t rx_iv[16]; 2015 uint8_t tx_iv[16]; 2016 #endif 2017 uint8_t key_data[WMI_MAC_MAX_KEY_LENGTH]; 2018 }; 2019 2020 /** 2021 * struct scan_mac_oui - oui parameters 2022 * @oui: oui parameters 2023 * @vdev_id: interface id 2024 * @enb_probe_req_sno_randomization: control probe req sequence no randomization 2025 * @ie_allowlist: probe req IE allowlist attrs 2026 */ 2027 struct scan_mac_oui { 2028 uint8_t oui[WMI_WIFI_SCANNING_MAC_OUI_LENGTH]; 2029 uint32_t vdev_id; 2030 bool enb_probe_req_sno_randomization; 2031 struct probe_req_allowlist_attr ie_allowlist; 2032 }; 2033 2034 #define WMI_PASSPOINT_REALM_LEN 256 2035 #define WMI_PASSPOINT_ROAMING_CONSORTIUM_ID_NUM 16 2036 #define WMI_PASSPOINT_PLMN_LEN 3 2037 /** 2038 * struct wifi_passpoint_network_param - passpoint network block 2039 * @id: identifier of this network block 2040 * @realm: null terminated UTF8 encoded realm, 0 if unspecified 2041 * @plmn: mcc/mnc combination as per rules, 0s if unspecified 2042 * @roaming_consortium_ids: roaming consortium ids to match, 0s if unspecified 2043 */ 2044 struct wifi_passpoint_network_param { 2045 uint32_t id; 2046 uint8_t realm[WMI_PASSPOINT_REALM_LEN]; 2047 uint8_t plmn[WMI_PASSPOINT_PLMN_LEN]; 2048 int64_t roaming_consortium_ids[ 2049 WMI_PASSPOINT_ROAMING_CONSORTIUM_ID_NUM]; 2050 }; 2051 2052 /** 2053 * struct wifi_passpoint_req_param - passpoint request 2054 * @request_id: request identifier 2055 * @vdev_id: vdev that is the target of the request 2056 * @num_networks: number of valid entries in @networks 2057 * @networks: passpoint networks 2058 */ 2059 struct wifi_passpoint_req_param { 2060 uint32_t request_id; 2061 uint32_t vdev_id; 2062 uint32_t num_networks; 2063 struct wifi_passpoint_network_param networks[]; 2064 }; 2065 2066 /* struct mobility_domain_info - structure containing 2067 * mobility domain info 2068 * @mdie_present: mobility domain present or not 2069 * @mobility_domain: mobility domain 2070 */ 2071 struct mobility_domain_info { 2072 uint8_t mdie_present; 2073 uint16_t mobility_domain; 2074 }; 2075 2076 /** 2077 * struct wifi_epno_network_params - enhanced pno network block 2078 * @ssid: ssid 2079 * @rssi_threshold: threshold for considering this SSID as found, required 2080 * granularity for this threshold is 4dBm to 8dBm 2081 * @flags: WIFI_PNO_FLAG_XXX 2082 * @auth_bit_field: auth bit field for matching WPA IE 2083 */ 2084 struct wifi_epno_network_params { 2085 struct wlan_ssid ssid; 2086 int8_t rssi_threshold; 2087 uint8_t flags; 2088 uint8_t auth_bit_field; 2089 }; 2090 2091 /** 2092 * struct wifi_enhanced_pno_params - enhanced pno network params 2093 * @request_id: request id number 2094 * @vdev_id: vdev id 2095 * @min_5ghz_rssi: minimum 5GHz RSSI for a BSSID to be considered 2096 * @min_24ghz_rssi: minimum 2.4GHz RSSI for a BSSID to be considered 2097 * @initial_score_max: maximum score that a network can have before bonuses 2098 * @current_connection_bonus: only report when there is a network's score this 2099 * much higher than the current connection 2100 * @same_network_bonus: score bonus for all n/w with the same network flag 2101 * @secure_bonus: score bonus for networks that are not open 2102 * @band_5ghz_bonus: 5GHz RSSI score bonus (applied to all 5GHz networks) 2103 * @num_networks: number of ssids 2104 * @networks: EPNO networks 2105 */ 2106 struct wifi_enhanced_pno_params { 2107 uint32_t request_id; 2108 uint32_t vdev_id; 2109 uint32_t min_5ghz_rssi; 2110 uint32_t min_24ghz_rssi; 2111 uint32_t initial_score_max; 2112 uint32_t current_connection_bonus; 2113 uint32_t same_network_bonus; 2114 uint32_t secure_bonus; 2115 uint32_t band_5ghz_bonus; 2116 uint32_t num_networks; 2117 struct wifi_epno_network_params networks[]; 2118 }; 2119 2120 enum { 2121 WMI_AP_RX_DATA_OFFLOAD = 0x00, 2122 WMI_STA_RX_DATA_OFFLOAD = 0x01, 2123 }; 2124 2125 /** 2126 * enum wmi_extscan_configuration_flags - extscan config flags 2127 * @WMI_EXTSCAN_LP_EXTENDED_BATCHING: extended batching 2128 */ 2129 enum wmi_extscan_configuration_flags { 2130 WMI_EXTSCAN_LP_EXTENDED_BATCHING = 0x00000001, 2131 }; 2132 2133 /** 2134 * enum wmi_extscan_report_events_type - extscan report events type 2135 * @WMI_EXTSCAN_REPORT_EVENTS_BUFFER_FULL: report only when scan history is full 2136 * @WMI_EXTSCAN_REPORT_EVENTS_EACH_SCAN: report a scan completion event after 2137 * each scan 2138 * @WMI_EXTSCAN_REPORT_EVENTS_FULL_RESULTS: forward scan results 2139 * (beacons/probe responses + IEs) 2140 * in real time to HAL, in addition to completion events. 2141 * Note: To keep backward compatibility, 2142 * fire completion events regardless of REPORT_EVENTS_EACH_SCAN. 2143 * @WMI_EXTSCAN_REPORT_EVENTS_NO_BATCH: controls batching, 2144 * 0 => batching, 1 => no batching 2145 */ 2146 enum wmi_extscan_report_events_type { 2147 WMI_EXTSCAN_REPORT_EVENTS_BUFFER_FULL = 0x00, 2148 WMI_EXTSCAN_REPORT_EVENTS_EACH_SCAN = 0x01, 2149 WMI_EXTSCAN_REPORT_EVENTS_FULL_RESULTS = 0x02, 2150 WMI_EXTSCAN_REPORT_EVENTS_NO_BATCH = 0x04, 2151 }; 2152 2153 /** 2154 * struct extscan_capabilities_params - ext scan capabilities 2155 * @request_id: request_id 2156 * @vdev_id: vdev id 2157 */ 2158 struct extscan_capabilities_params { 2159 uint32_t request_id; 2160 uint8_t vdev_id; 2161 }; 2162 2163 /** 2164 * struct extscan_capabilities_reset_params - ext scan capabilities reset 2165 * parameter 2166 * @request_id: request_id 2167 * @vdev_id: vdev id 2168 */ 2169 struct extscan_capabilities_reset_params { 2170 uint32_t request_id; 2171 uint8_t vdev_id; 2172 }; 2173 2174 /** 2175 * struct extscan_bssid_hotlist_reset_params - ext scan hotlist reset parameter 2176 * @request_id: request_id 2177 * @vdev_id: vdev id 2178 */ 2179 struct extscan_bssid_hotlist_reset_params { 2180 uint32_t request_id; 2181 uint8_t vdev_id; 2182 }; 2183 2184 /** 2185 * struct extscan_stop_req_params - ext scan stop parameter 2186 * @request_id: request_id 2187 * @vdev_id: vdev id 2188 */ 2189 struct extscan_stop_req_params { 2190 uint32_t request_id; 2191 uint8_t vdev_id; 2192 }; 2193 2194 /** 2195 * struct ap_threshold_params - ap threshold parameter 2196 * @bssid: mac address 2197 * @low: low threshold 2198 * @high: high threshold 2199 */ 2200 struct ap_threshold_params { 2201 struct qdf_mac_addr bssid; 2202 int32_t low; 2203 int32_t high; 2204 }; 2205 2206 /** 2207 * struct extscan_set_sig_changereq_params - ext scan channel parameter 2208 * @request_id: request_id 2209 * @vdev_id: vdev id 2210 * @rssi_sample_size: Number of samples for averaging RSSI 2211 * @lostap_sample_size: Number of missed samples to confirm AP loss 2212 * @min_breaching: Number of APs breaching threshold required for firmware 2213 * @num_ap: no of scanned ap 2214 * @ap: ap threshold parameter 2215 */ 2216 struct extscan_set_sig_changereq_params { 2217 uint32_t request_id; 2218 uint8_t vdev_id; 2219 uint32_t rssi_sample_size; 2220 uint32_t lostap_sample_size; 2221 uint32_t min_breaching; 2222 uint32_t num_ap; 2223 struct ap_threshold_params ap[WMI_EXTSCAN_MAX_SIGNIFICANT_CHANGE_APS]; 2224 }; 2225 2226 /** 2227 * struct extscan_cached_result_params - ext scan cached parameter 2228 * @request_id: request_id 2229 * @vdev_id: vdev id 2230 * @flush: cached results flush 2231 */ 2232 struct extscan_cached_result_params { 2233 uint32_t request_id; 2234 uint8_t vdev_id; 2235 bool flush; 2236 }; 2237 2238 #define WMI_WLAN_EXTSCAN_MAX_CHANNELS 36 2239 #define WMI_WLAN_EXTSCAN_MAX_BUCKETS 16 2240 #define WMI_WLAN_EXTSCAN_MAX_HOTLIST_APS 128 2241 #define WMI_WLAN_EXTSCAN_MAX_SIGNIFICANT_CHANGE_APS 64 2242 #define WMI_EXTSCAN_MAX_HOTLIST_SSIDS 8 2243 2244 /** 2245 * struct wifi_scan_channelspec_params - wifi scan channel parameter 2246 * @channel: Frequency in MHz 2247 * @dwell_time_ms: dwell time in milliseconds 2248 * @passive: passive scan 2249 * @channel_class: channel class 2250 */ 2251 struct wifi_scan_channelspec_params { 2252 uint32_t channel; 2253 uint32_t dwell_time_ms; 2254 bool passive; 2255 uint8_t channel_class; 2256 }; 2257 2258 /** 2259 * enum wmi_wifi_band - wifi band 2260 * @WMI_WIFI_BAND_UNSPECIFIED: unspecified band 2261 * @WMI_WIFI_BAND_BG: 2.4 GHz 2262 * @WMI_WIFI_BAND_A: 5 GHz without DFS 2263 * @WMI_WIFI_BAND_ABG: 2.4 GHz + 5 GHz; no DFS 2264 * @WMI_WIFI_BAND_A_DFS_ONLY: 5 GHz DFS only 2265 * @WMI_WIFI_BAND_A_WITH_DFS: 5 GHz with DFS 2266 * @WMI_WIFI_BAND_ABG_WITH_DFS: 2.4 GHz + 5 GHz with DFS 2267 * @WMI_WIFI_BAND_MAX: max range 2268 */ 2269 enum wmi_wifi_band { 2270 WMI_WIFI_BAND_UNSPECIFIED, 2271 WMI_WIFI_BAND_BG = 1, 2272 WMI_WIFI_BAND_A = 2, 2273 WMI_WIFI_BAND_ABG = 3, 2274 WMI_WIFI_BAND_A_DFS_ONLY = 4, 2275 /* 5 is reserved */ 2276 WMI_WIFI_BAND_A_WITH_DFS = 6, 2277 WMI_WIFI_BAND_ABG_WITH_DFS = 7, 2278 /* Keep it last */ 2279 WMI_WIFI_BAND_MAX 2280 }; 2281 2282 /** 2283 * struct wifi_scan_bucket_params - wifi scan bucket spec 2284 * @bucket: bucket identifier 2285 * @band: wifi band 2286 * @period: Desired period, in millisecond; if this is too 2287 * low, the firmware should choose to generate results as fast as 2288 * it can instead of failing the command byte 2289 * for exponential backoff bucket this is the min_period 2290 * @report_events: 0 => normal reporting (reporting rssi history 2291 * only, when rssi history buffer is % full) 2292 * 1 => same as 0 + report a scan completion event after scanning 2293 * this bucket 2294 * 2 => same as 1 + forward scan results 2295 * (beacons/probe responses + IEs) in real time to HAL 2296 * @max_period: if max_period is non zero or different than period, 2297 * then this bucket is an exponential backoff bucket and 2298 * the scan period will grow exponentially as per formula: 2299 * actual_period(N) = period ^ (N/(step_count+1)) to a 2300 * maximum period of max_period 2301 * @exponent: for exponential back off bucket: multiplier: 2302 * new_period = old_period * exponent 2303 * @step_count: for exponential back off bucket, number of scans performed 2304 * at a given period and until the exponent is applied 2305 * @num_channels: channels to scan; these may include DFS channels 2306 * Note that a given channel may appear in multiple buckets 2307 * @min_dwell_time_active: per bucket minimum active dwell time 2308 * @max_dwell_time_active: per bucket maximum active dwell time 2309 * @min_dwell_time_passive: per bucket minimum passive dwell time 2310 * @max_dwell_time_passive: per bucket maximum passive dwell time 2311 * @channels: Channel list 2312 */ 2313 struct wifi_scan_bucket_params { 2314 uint8_t bucket; 2315 enum wmi_wifi_band band; 2316 uint32_t period; 2317 uint32_t report_events; 2318 uint32_t max_period; 2319 uint32_t exponent; 2320 uint32_t step_count; 2321 uint32_t num_channels; 2322 uint32_t min_dwell_time_active; 2323 uint32_t max_dwell_time_active; 2324 uint32_t min_dwell_time_passive; 2325 uint32_t max_dwell_time_passive; 2326 struct wifi_scan_channelspec_params 2327 channels[WMI_WLAN_EXTSCAN_MAX_CHANNELS]; 2328 }; 2329 2330 /** 2331 * struct wifi_scan_cmd_req_params - wifi scan command request params 2332 * @base_period: base timer period 2333 * @max_ap_per_scan: max ap per scan 2334 * @report_threshold_percent: report threshold 2335 * in %, when buffer is this much full, wake up host 2336 * @report_threshold_num_scans: report threshold number of scans 2337 * in number of scans, wake up host after these many scans 2338 * @request_id: request id 2339 * @vdev_id: vdev that is the target of the request 2340 * @num_buckets: number of buckets 2341 * @min_dwell_time_active: per bucket minimum active dwell time 2342 * @max_dwell_time_active: per bucket maximum active dwell time 2343 * @min_dwell_time_passive: per bucket minimum passive dwell time 2344 * @max_dwell_time_passive: per bucket maximum passive dwell time 2345 * @configuration_flags: configuration flags 2346 * @extscan_adaptive_dwell_mode: adaptive dwelltime mode for extscan 2347 * @buckets: buckets array 2348 */ 2349 struct wifi_scan_cmd_req_params { 2350 uint32_t base_period; 2351 uint32_t max_ap_per_scan; 2352 uint32_t report_threshold_percent; 2353 uint32_t report_threshold_num_scans; 2354 uint32_t request_id; 2355 uint8_t vdev_id; 2356 uint32_t num_buckets; 2357 uint32_t min_dwell_time_active; 2358 uint32_t max_dwell_time_active; 2359 uint32_t min_dwell_time_passive; 2360 uint32_t max_dwell_time_passive; 2361 uint32_t configuration_flags; 2362 enum scan_dwelltime_adaptive_mode extscan_adaptive_dwell_mode; 2363 struct wifi_scan_bucket_params buckets[WMI_WLAN_EXTSCAN_MAX_BUCKETS]; 2364 }; 2365 2366 /** 2367 * struct mac_ts_info_tfc - mac ts info parameters 2368 * @burstSizeDefn: burst size 2369 * @reserved: reserved 2370 * @ackPolicy: ack policy 2371 * @userPrio: user priority 2372 * @psb: psb 2373 * @aggregation: aggregation 2374 * @accessPolicy: access policy 2375 * @direction: direction 2376 * @tsid: direction 2377 * @trafficType: traffic type 2378 */ 2379 struct mac_ts_info_tfc { 2380 #ifndef ANI_LITTLE_BIT_ENDIAN 2381 uint8_t burstSizeDefn:1; 2382 uint8_t reserved:7; 2383 #else 2384 uint8_t reserved:7; 2385 uint8_t burstSizeDefn:1; 2386 #endif 2387 2388 #ifndef ANI_LITTLE_BIT_ENDIAN 2389 uint16_t ackPolicy:2; 2390 uint16_t userPrio:3; 2391 uint16_t psb:1; 2392 uint16_t aggregation:1; 2393 uint16_t accessPolicy:2; 2394 uint16_t direction:2; 2395 uint16_t tsid:4; 2396 uint16_t trafficType:1; 2397 #else 2398 uint16_t trafficType:1; 2399 uint16_t tsid:4; 2400 uint16_t direction:2; 2401 uint16_t accessPolicy:2; 2402 uint16_t aggregation:1; 2403 uint16_t psb:1; 2404 uint16_t userPrio:3; 2405 uint16_t ackPolicy:2; 2406 #endif 2407 } qdf_packed; 2408 2409 /** 2410 * struct mac_ts_info_sch - mac ts info schedule parameters 2411 * @rsvd: reserved 2412 * @schedule: schedule bit 2413 */ 2414 struct mac_ts_info_sch { 2415 #ifndef ANI_LITTLE_BIT_ENDIAN 2416 uint8_t rsvd:7; 2417 uint8_t schedule:1; 2418 #else 2419 uint8_t schedule:1; 2420 uint8_t rsvd:7; 2421 #endif 2422 } qdf_packed; 2423 2424 /** 2425 * struct mac_ts_info - mac ts info schedule parameters 2426 * @traffic: mac tfc parameter 2427 * @schedule: mac schedule parameters 2428 */ 2429 struct mac_ts_info { 2430 struct mac_ts_info_tfc traffic; 2431 struct mac_ts_info_sch schedule; 2432 } qdf_packed; 2433 2434 /** 2435 * struct mac_tspec_ie - mac ts spec 2436 * @type: type 2437 * @length: length 2438 * @tsinfo: tsinfo 2439 * @nomMsduSz: nomMsduSz 2440 * @maxMsduSz: maxMsduSz 2441 * @minSvcInterval: minSvcInterval 2442 * @maxSvcInterval: maxSvcInterval 2443 * @inactInterval: inactInterval 2444 * @suspendInterval: suspendInterval 2445 * @svcStartTime: svcStartTime 2446 * @minDataRate: minDataRate 2447 * @meanDataRate: meanDataRate 2448 * @peakDataRate: peakDataRate 2449 * @maxBurstSz: maxBurstSz 2450 * @delayBound: delayBound 2451 * @minPhyRate: minPhyRate 2452 * @surplusBw: surplusBw 2453 * @mediumTime: mediumTime 2454 */ 2455 struct mac_tspec_ie { 2456 uint8_t type; 2457 uint8_t length; 2458 struct mac_ts_info tsinfo; 2459 uint16_t nomMsduSz; 2460 uint16_t maxMsduSz; 2461 uint32_t minSvcInterval; 2462 uint32_t maxSvcInterval; 2463 uint32_t inactInterval; 2464 uint32_t suspendInterval; 2465 uint32_t svcStartTime; 2466 uint32_t minDataRate; 2467 uint32_t meanDataRate; 2468 uint32_t peakDataRate; 2469 uint32_t maxBurstSz; 2470 uint32_t delayBound; 2471 uint32_t minPhyRate; 2472 uint16_t surplusBw; 2473 uint16_t mediumTime; 2474 } qdf_packed; 2475 2476 /** 2477 * struct add_ts_param - ADDTS related parameters 2478 * @vdev_id: vdev id 2479 * @tspec_idx: TSPEC handle uniquely identifying a TSPEC for a STA in a BSS 2480 * @tspec: tspec value 2481 * @status: QDF status 2482 * @pe_session_id: protocol engine session id 2483 * @tsm_interval: TSM interval period passed from UMAC to WMI 2484 * @set_ric_params: Should RIC parameters be set? 2485 */ 2486 struct add_ts_param { 2487 uint8_t vdev_id; 2488 uint16_t tspec_idx; 2489 struct mac_tspec_ie tspec; 2490 QDF_STATUS status; 2491 uint8_t pe_session_id; 2492 #ifdef FEATURE_WLAN_ESE 2493 uint16_t tsm_interval; 2494 #endif /* FEATURE_WLAN_ESE */ 2495 #ifdef WLAN_FEATURE_ROAM_OFFLOAD 2496 bool set_ric_params; 2497 #endif /* WLAN_FEATURE_ROAM_OFFLOAD */ 2498 }; 2499 2500 /** 2501 * struct delts_req_info - DELTS request parameter 2502 * @tsinfo: ts info 2503 * @tspec: ts spec 2504 * @wmeTspecPresent: wme ts spec flag 2505 * @wsmTspecPresent: wsm ts spec flag 2506 * @lleTspecPresent: lle ts spec flag 2507 */ 2508 struct delts_req_info { 2509 struct mac_ts_info tsinfo; 2510 struct mac_tspec_ie tspec; 2511 uint8_t wmeTspecPresent:1; 2512 uint8_t wsmTspecPresent:1; 2513 uint8_t lleTspecPresent:1; 2514 }; 2515 2516 /** 2517 * struct del_ts_params - DELTS related parameters 2518 * @tspecIdx: TSPEC identifier uniquely identifying a TSPEC for a STA in a BSS 2519 * @bssId: BSSID 2520 * @sessionId: session id 2521 * @userPrio: user priority 2522 * @delTsInfo: DELTS info 2523 * @setRICparams: RIC parameters 2524 */ 2525 struct del_ts_params { 2526 uint16_t tspecIdx; 2527 uint8_t bssId[QDF_MAC_ADDR_SIZE]; 2528 uint8_t sessionId; 2529 uint8_t userPrio; 2530 #ifdef WLAN_FEATURE_ROAM_OFFLOAD 2531 struct delts_req_info delTsInfo; 2532 uint8_t setRICparams; 2533 #endif /* WLAN_FEATURE_ROAM_OFFLOAD */ 2534 }; 2535 2536 /** 2537 * struct ll_stats_clear_params - ll stats clear parameter 2538 * @req_id: request id 2539 * @vdev_id: vdev id 2540 * @stats_clear_mask: stats clear mask 2541 * @stop_req: stop request 2542 * @peer_macaddr: MAC address of the peer for which stats are to be cleared 2543 */ 2544 struct ll_stats_clear_params { 2545 uint32_t req_id; 2546 uint8_t vdev_id; 2547 uint32_t stats_clear_mask; 2548 uint8_t stop_req; 2549 struct qdf_mac_addr peer_macaddr; 2550 }; 2551 2552 /** 2553 * struct ll_stats_set_params - ll stats get parameter 2554 * @req_id: request id 2555 * @mpdu_size_threshold: mpdu size threshold 2556 * @aggressive_statistics_gathering: aggressive_statistics_gathering 2557 */ 2558 struct ll_stats_set_params { 2559 uint32_t req_id; 2560 uint32_t mpdu_size_threshold; 2561 uint32_t aggressive_statistics_gathering; 2562 }; 2563 2564 /** 2565 * struct ll_stats_get_params - ll stats parameter 2566 * @req_id: request id 2567 * @vdev_id: vdev id 2568 * @param_id_mask: param is mask 2569 * @peer_macaddr: MAC address of the peer for which stats are desired 2570 * @is_mlo_req: is the request for mlo vdev 2571 * @vdev_id_bitmap: vdev_id_bitmap of all the connected mlo vdevs 2572 * @mld_macaddr: MLD MAC address 2573 */ 2574 struct ll_stats_get_params { 2575 uint32_t req_id; 2576 uint8_t vdev_id; 2577 uint32_t param_id_mask; 2578 struct qdf_mac_addr peer_macaddr; 2579 #ifdef WLAN_FEATURE_11BE_MLO 2580 bool is_mlo_req; 2581 uint32_t vdev_id_bitmap; 2582 struct qdf_mac_addr mld_macaddr; 2583 #endif 2584 }; 2585 2586 2587 /** 2588 * struct link_status_params - link stats parameter 2589 * @vdev_id: ID of the vdev for which link status is desired 2590 */ 2591 struct link_status_params { 2592 uint8_t vdev_id; 2593 }; 2594 2595 /** 2596 * struct dhcp_stop_ind_params - DHCP Stop indication message 2597 * @msgtype: message type is same as the request type 2598 * @msglen: length of the entire request 2599 * @device_mode: Mode of the device(ex:STA, AP) 2600 * @adapter_macaddr: MAC address of the adapter 2601 * @peer_macaddr: MAC address of the connected peer 2602 */ 2603 struct dhcp_stop_ind_params { 2604 uint16_t msgtype; 2605 uint16_t msglen; 2606 uint8_t device_mode; 2607 struct qdf_mac_addr adapter_macaddr; 2608 struct qdf_mac_addr peer_macaddr; 2609 }; 2610 2611 #define WMI_MAX_FILTER_TEST_DATA_LEN 8 2612 #define WMI_MAX_NUM_MULTICAST_ADDRESS 240 2613 #define WMI_MAX_NUM_FILTERS 20 2614 #define WMI_MAX_NUM_TESTS_PER_FILTER 10 2615 2616 /** 2617 * enum packet_filter_type - packet filter type 2618 * @WMI_RCV_FILTER_TYPE_INVALID: invalid type 2619 * @WMI_RCV_FILTER_TYPE_FILTER_PKT: filter packet type 2620 * @WMI_RCV_FILTER_TYPE_BUFFER_PKT: buffer packet type 2621 * @WMI_RCV_FILTER_TYPE_MAX_ENUM_SIZE: max enum size 2622 */ 2623 enum packet_filter_type { 2624 WMI_RCV_FILTER_TYPE_INVALID, 2625 WMI_RCV_FILTER_TYPE_FILTER_PKT, 2626 WMI_RCV_FILTER_TYPE_BUFFER_PKT, 2627 WMI_RCV_FILTER_TYPE_MAX_ENUM_SIZE 2628 }; 2629 2630 /** 2631 * enum packet_protocol_type - packet protocol type 2632 * @WMI_FILTER_HDR_TYPE_INVALID: invalid type 2633 * @WMI_FILTER_HDR_TYPE_MAC: mac type 2634 * @WMI_FILTER_HDR_TYPE_ARP: trp type 2635 * @WMI_FILTER_HDR_TYPE_IPV4: ipv4 type 2636 * @WMI_FILTER_HDR_TYPE_IPV6: ipv6 type 2637 * @WMI_FILTER_HDR_TYPE_UDP: udp type 2638 * @WMI_FILTER_HDR_TYPE_MAX: max type 2639 */ 2640 enum packet_protocol_type { 2641 WMI_FILTER_HDR_TYPE_INVALID, 2642 WMI_FILTER_HDR_TYPE_MAC, 2643 WMI_FILTER_HDR_TYPE_ARP, 2644 WMI_FILTER_HDR_TYPE_IPV4, 2645 WMI_FILTER_HDR_TYPE_IPV6, 2646 WMI_FILTER_HDR_TYPE_UDP, 2647 WMI_FILTER_HDR_TYPE_MAX 2648 }; 2649 2650 /** 2651 * enum packet_filter_comp_type - packet filter comparison type 2652 * @WMI_FILTER_CMP_TYPE_INVALID: invalid type 2653 * @WMI_FILTER_CMP_TYPE_EQUAL: type equal 2654 * @WMI_FILTER_CMP_TYPE_MASK_EQUAL: mask equal 2655 * @WMI_FILTER_CMP_TYPE_NOT_EQUAL: type not equal 2656 * @WMI_FILTER_CMP_TYPE_MASK_NOT_EQUAL: mask not equal 2657 * @WMI_FILTER_CMP_TYPE_MAX: max type 2658 */ 2659 enum packet_filter_comp_type { 2660 WMI_FILTER_CMP_TYPE_INVALID, 2661 WMI_FILTER_CMP_TYPE_EQUAL, 2662 WMI_FILTER_CMP_TYPE_MASK_EQUAL, 2663 WMI_FILTER_CMP_TYPE_NOT_EQUAL, 2664 WMI_FILTER_CMP_TYPE_MASK_NOT_EQUAL, 2665 WMI_FILTER_CMP_TYPE_MAX 2666 }; 2667 2668 /** 2669 * struct rcv_pkt_filter_params - receive packet filter parameters 2670 * @protocolLayer: protocol layer 2671 * @cmpFlag: comparison flag 2672 * @dataLength: data length 2673 * @dataOffset: data offset 2674 * @reserved: resserved 2675 * @compareData: compare data 2676 * @dataMask: data mask 2677 */ 2678 struct rcv_pkt_filter_params { 2679 enum packet_protocol_type protocolLayer; 2680 enum packet_filter_comp_type cmpFlag; 2681 uint16_t dataLength; 2682 uint8_t dataOffset; 2683 uint8_t reserved; 2684 uint8_t compareData[WMI_MAX_FILTER_TEST_DATA_LEN]; 2685 uint8_t dataMask[WMI_MAX_FILTER_TEST_DATA_LEN]; 2686 }; 2687 2688 /** 2689 * struct rcv_pkt_filter_config - receive packet filter info 2690 * @filterId: filter id 2691 * @filterType: filter type 2692 * @numFieldParams: no of fields 2693 * @coalesceTime: reserved parameter 2694 * @self_macaddr: self mac address 2695 * @bssid: Bssid of the connected AP 2696 * @paramsData: data parameter 2697 */ 2698 struct rcv_pkt_filter_config { 2699 uint8_t filterId; 2700 enum packet_filter_type filterType; 2701 uint32_t numFieldParams; 2702 uint32_t coalesceTime; 2703 struct qdf_mac_addr self_macaddr; 2704 struct qdf_mac_addr bssid; 2705 struct rcv_pkt_filter_params paramsData[WMI_MAX_NUM_TESTS_PER_FILTER]; 2706 }; 2707 2708 /** 2709 * struct cfg_action_frm_tb_ppdu_param - action frm in TB PPDU cfg 2710 * @cfg: enable/disable 2711 * @frm_len: length of the frame 2712 * @data: data pointer 2713 */ 2714 struct cfg_action_frm_tb_ppdu_param { 2715 uint32_t cfg; 2716 uint32_t frm_len; 2717 uint8_t *data; 2718 }; 2719 2720 #define WMI_MAX_NUM_FW_SEGMENTS 4 2721 2722 /** 2723 * struct fw_dump_seg_req_param - individual segment details 2724 * @seg_id: segment id. 2725 * @seg_start_addr_lo: lower address of the segment. 2726 * @seg_start_addr_hi: higher address of the segment. 2727 * @seg_length: length of the segment. 2728 * @dst_addr_lo: lower address of the destination buffer. 2729 * @dst_addr_hi: higher address of the destination buffer. 2730 * 2731 * This structure carries the information to firmware about the 2732 * individual segments. This structure is part of firmware memory 2733 * dump request. 2734 */ 2735 struct fw_dump_seg_req_param { 2736 uint8_t seg_id; 2737 uint32_t seg_start_addr_lo; 2738 uint32_t seg_start_addr_hi; 2739 uint32_t seg_length; 2740 uint32_t dst_addr_lo; 2741 uint32_t dst_addr_hi; 2742 }; 2743 2744 /** 2745 * struct fw_dump_req_param - firmware memory dump request details. 2746 * @request_id: request id. 2747 * @num_seg: requested number of segments. 2748 * @segment: individual segment information. 2749 * 2750 * This structure carries information about the firmware 2751 * memory dump request. 2752 */ 2753 struct fw_dump_req_param { 2754 uint32_t request_id; 2755 uint32_t num_seg; 2756 struct fw_dump_seg_req_param segment[WMI_MAX_NUM_FW_SEGMENTS]; 2757 }; 2758 2759 /** 2760 * struct dhcp_offload_info_params - dhcp offload parameters 2761 * @vdev_id: request data length 2762 * @dhcp_offload_enabled: dhcp offload enabled 2763 * @dhcp_client_num: dhcp client no 2764 * @dhcp_srv_addr: dhcp server ip 2765 */ 2766 struct dhcp_offload_info_params { 2767 uint32_t vdev_id; 2768 bool dhcp_offload_enabled; 2769 uint32_t dhcp_client_num; 2770 uint32_t dhcp_srv_addr; 2771 }; 2772 2773 /** 2774 * struct app_type2_params - app type2parameter 2775 * @vdev_id: vdev id 2776 * @rc4_key: rc4 key 2777 * @rc4_key_len: rc4 key length 2778 * @ip_id: NC id 2779 * @ip_device_ip: NC IP address 2780 * @ip_server_ip: Push server IP address 2781 * @tcp_src_port: NC TCP port 2782 * @tcp_dst_port: Push server TCP port 2783 * @tcp_seq: tcp sequence 2784 * @tcp_ack_seq: tcp ack sequence 2785 * @keepalive_init: Initial ping interval 2786 * @keepalive_min: Minimum ping interval 2787 * @keepalive_max: Maximum ping interval 2788 * @keepalive_inc: Increment of ping interval 2789 * @gateway_mac: gateway mac address 2790 * @tcp_tx_timeout_val: tcp tx timeout value 2791 * @tcp_rx_timeout_val: tcp rx timeout value 2792 */ 2793 struct app_type2_params { 2794 uint8_t vdev_id; 2795 uint8_t rc4_key[16]; 2796 uint32_t rc4_key_len; 2797 /** ip header parameter */ 2798 uint32_t ip_id; 2799 uint32_t ip_device_ip; 2800 uint32_t ip_server_ip; 2801 /** tcp header parameter */ 2802 uint16_t tcp_src_port; 2803 uint16_t tcp_dst_port; 2804 uint32_t tcp_seq; 2805 uint32_t tcp_ack_seq; 2806 uint32_t keepalive_init; 2807 uint32_t keepalive_min; 2808 uint32_t keepalive_max; 2809 uint32_t keepalive_inc; 2810 struct qdf_mac_addr gateway_mac; 2811 uint32_t tcp_tx_timeout_val; 2812 uint32_t tcp_rx_timeout_val; 2813 }; 2814 2815 /** 2816 * struct app_type1_params - app type1 parameter 2817 * @vdev_id: vdev id 2818 * @wakee_mac_addr: mac address 2819 * @identification_id: identification id 2820 * @password: password 2821 * @id_length: id length 2822 * @pass_length: password length 2823 */ 2824 struct app_type1_params { 2825 uint8_t vdev_id; 2826 struct qdf_mac_addr wakee_mac_addr; 2827 uint8_t identification_id[8]; 2828 uint8_t password[16]; 2829 uint32_t id_length; 2830 uint32_t pass_length; 2831 }; 2832 2833 /** 2834 * enum wmi_ext_wow_type - wow type 2835 * @WMI_EXT_WOW_TYPE_APP_TYPE1: only enable wakeup for app type1 2836 * @WMI_EXT_WOW_TYPE_APP_TYPE2: only enable wakeup for app type2 2837 * @WMI_EXT_WOW_TYPE_APP_TYPE1_2: enable wakeup for app type1&2 2838 */ 2839 enum wmi_ext_wow_type { 2840 WMI_EXT_WOW_TYPE_APP_TYPE1, 2841 WMI_EXT_WOW_TYPE_APP_TYPE2, 2842 WMI_EXT_WOW_TYPE_APP_TYPE1_2, 2843 }; 2844 2845 /** 2846 * struct ext_wow_params - ext wow parameters 2847 * @vdev_id: vdev id 2848 * @type: wow type 2849 * @wakeup_pin_num: wake up gpio no 2850 */ 2851 struct ext_wow_params { 2852 uint8_t vdev_id; 2853 enum wmi_ext_wow_type type; 2854 uint32_t wakeup_pin_num; 2855 }; 2856 2857 /** 2858 * struct stats_ext_params - ext stats request 2859 * @vdev_id: vdev id 2860 * @request_data_len: request data length 2861 * @vdev_id_bitmap: mlo connected vdev id bitmap 2862 * @request_data: request data 2863 */ 2864 struct stats_ext_params { 2865 uint32_t vdev_id; 2866 uint32_t request_data_len; 2867 uint32_t vdev_id_bitmap; 2868 uint8_t request_data[]; 2869 }; 2870 2871 #define WMI_GTK_OFFLOAD_KEK_BYTES 64 2872 #define WMI_GTK_OFFLOAD_KCK_BYTES 16 2873 #define WMI_GTK_OFFLOAD_ENABLE 0 2874 #define WMI_GTK_OFFLOAD_DISABLE 1 2875 2876 #define MAX_MEM_CHUNKS 32 2877 /* 2878 * struct wmi_host_mem_chunk - host memory chunk structure 2879 * @vaddr: Pointer to virtual address 2880 * @paddr: Physical address 2881 * @memctx: qdf memory context for mapped address. 2882 * @len: length of chunk 2883 * @req_id: request id from target 2884 * 2885 * Note: kernel-doc doesn't parse the memctx definition so this definition 2886 * currently doesn't use a kernel-doc comment marker 2887 */ 2888 struct wmi_host_mem_chunk { 2889 uint32_t *vaddr; 2890 qdf_dma_addr_t paddr; 2891 qdf_dma_mem_context(memctx); 2892 uint32_t len; 2893 uint32_t req_id; 2894 }; 2895 2896 /** 2897 * struct wmi_wifi_start_log - Structure to store the params sent to start/ 2898 * stop logging 2899 * @ring_id: Attribute which indicates the type of logging like per packet 2900 * statistics, connectivity etc. 2901 * @verbose_level: Verbose level which can be 0,1,2,3 2902 * @flag: Flag field for future use 2903 */ 2904 struct wmi_wifi_start_log { 2905 uint32_t ring_id; 2906 uint32_t verbose_level; 2907 uint32_t flag; 2908 }; 2909 2910 /** 2911 * struct wmi_pcl_list - Format of PCL 2912 * @pcl_list: List of preferred channels 2913 * @weight_list: Weights of the PCL 2914 * @pcl_len: Number of channels in the PCL 2915 */ 2916 struct wmi_pcl_list { 2917 uint8_t pcl_list[NUM_CHANNELS]; 2918 uint8_t weight_list[NUM_CHANNELS]; 2919 uint32_t pcl_len; 2920 }; 2921 2922 /** 2923 * struct wmi_hw_mode_params - HW mode params 2924 * @mac0_tx_ss: MAC0 Tx spatial stream 2925 * @mac0_rx_ss: MAC0 Rx spatial stream 2926 * @mac1_tx_ss: MAC1 Tx spatial stream 2927 * @mac1_rx_ss: MAC1 Rx spatial stream 2928 * @mac0_bw: MAC0 bandwidth 2929 * @mac1_bw: MAC1 bandwidth 2930 * @dbs_cap: DBS capabality 2931 * @agile_dfs_cap: Agile DFS capabality 2932 */ 2933 struct wmi_hw_mode_params { 2934 uint8_t mac0_tx_ss; 2935 uint8_t mac0_rx_ss; 2936 uint8_t mac1_tx_ss; 2937 uint8_t mac1_rx_ss; 2938 uint8_t mac0_bw; 2939 uint8_t mac1_bw; 2940 uint8_t dbs_cap; 2941 uint8_t agile_dfs_cap; 2942 }; 2943 2944 /** 2945 * struct wmi_unit_test_cmd - unit test command parameters 2946 * @vdev_id: vdev id 2947 * @module_id: module id 2948 * @num_args: number of arguments 2949 * @diag_token: dialog token, which identifies the transaction. 2950 * this number is generated by wifitool and may be used to 2951 * identify the transaction in the event path 2952 * @args: arguments 2953 */ 2954 struct wmi_unit_test_cmd { 2955 uint32_t vdev_id; 2956 uint32_t module_id; 2957 uint32_t num_args; 2958 uint32_t diag_token; 2959 uint32_t args[WMI_UNIT_TEST_MAX_NUM_ARGS]; 2960 }; 2961 2962 /** 2963 * struct extscan_bssid_hotlist_set_params - set hotlist request 2964 * @request_id: request_id 2965 * @vdev_id: vdev id 2966 * @lost_ap_sample_size: number of samples to confirm AP loss 2967 * @num_ap: Number of hotlist APs 2968 * @ap: hotlist APs 2969 */ 2970 struct extscan_bssid_hotlist_set_params { 2971 uint32_t request_id; 2972 uint8_t vdev_id; 2973 uint32_t lost_ap_sample_size; 2974 uint32_t num_ap; 2975 struct ap_threshold_params ap[WMI_WLAN_EXTSCAN_MAX_HOTLIST_APS]; 2976 }; 2977 2978 /** 2979 * struct host_mem_req - Host memory request paramseters request by target 2980 * @req_id: Request id to identify the request. 2981 * @unit_size: Size of single unit requested. 2982 * @num_unit_info: Memory chunk info 2983 * @num_units: number of units requested. 2984 * @tgt_num_units: number of units request by target. 2985 */ 2986 typedef struct { 2987 uint32_t req_id; 2988 uint32_t unit_size; 2989 uint32_t num_unit_info; 2990 uint32_t num_units; 2991 uint32_t tgt_num_units; 2992 } host_mem_req; 2993 2994 #define WMI_HOST_DSCP_MAP_MAX (64) 2995 2996 /** 2997 * struct wmi_host_ext_resource_config - Extended resource config 2998 * @host_platform_config: Host platform configuration. 2999 * @fw_feature_bitmap: FW feature requested bitmap. Uses the 3000 * WMI_HOST_FW_FEATURES_* macros. The features in 3001 * question are enabled by setting the feature's 3002 * bit to 1, or disabled by setting the feature's 3003 * bit to 0. 3004 * @wlan_priority_gpio: WLAN priority GPIO number. The target uses a 3005 * GPIO pin to indicate when it is transmitting 3006 * high-priority traffic (e.g. beacon, 3007 * management, or AC_VI) or low-priority traffic 3008 * (e.g. AC_BE, AC_BK). The HW uses this WLAN 3009 * GPIO pin to determine whether to abort WLAN 3010 * tx in favor of BT activity. Which GPIO is 3011 * used for this WLAN tx traffic priority 3012 * specification varies between platforms, so 3013 * the host needs to indicate to the target 3014 * which GPIO to use. 3015 * @coex_version: COEX version. Host will notify target which coex 3016 * algorithm has to be enabled based on HW, FW 3017 * capability and device tree config. Till now the 3018 * coex algorithms were target specific. Now the same 3019 * target can choose between multiple coex algorithms 3020 * depending on device tree config on host. For 3021 * backward compatibility, version support will have 3022 * option 0 and will rely on FW compile time flags to 3023 * decide the coex version between VERSION_1, VERSION_2 3024 * and VERSION_3. Version info is mandatory from 3025 * VERSION_4 onwards for any new coex algorithms. 3026 * 0 = no version support 3027 * 1 = COEX_VERSION1 (3 wire coex) 3028 * 2 = COEX_VERSION_2 (2.5 wire coex) 3029 * 3 = COEX_VERSION_3 (2.5 wire coex+duty cycle) 3030 * 4 = COEX_VERSION_4 (4 wire coex) 3031 * @coex_gpio_pin_1: 3032 * @coex_gpio_pin_2: 3033 * @coex_gpio_pin_3: 3034 * There are multiple coex implementations on FW to support different 3035 * hardwares. Since the coex algos are mutually exclusive, host will 3036 * use below fields to send GPIO info to FW and these GPIO pins will 3037 * have different usages depending on the feature enabled. This is to 3038 * avoid adding multiple GPIO fields here for different features. 3039 * 3040 * COEX VERSION_4 (4 wire coex) : 3041 * 4 wire coex feature uses 1 common input request line from BT/ZB/ 3042 * Thread which interrupts the WLAN target processor directly, 1 input 3043 * priority line from BT and ZB each, 1 output line to grant access to 3044 * requesting IOT subsystem. WLAN uses the input priority line to 3045 * identify the requesting IOT subsystem. Request is granted based on 3046 * IOT interface priority and WLAN traffic. GPIO pin usage is as below: 3047 * coex_gpio_pin_1 = BT PRIORITY INPUT GPIO 3048 * coex_gpio_pin_2 = ZIGBEE PRIORITY INPUT GPIO 3049 * coex_gpio_pin_3 = GRANT OUTPUT GPIO 3050 * when a BT active interrupt is raised, WLAN reads 3051 * BT and ZB priority input GPIO pins to compare against the coex 3052 * priority table and accordingly sets the grant output GPIO to give 3053 * access to requesting IOT subsystem. 3054 */ 3055 typedef struct { 3056 uint32_t host_platform_config; 3057 3058 #define WMI_HOST_FW_FEATURE_LTEU_SUPPORT 0x0001 3059 #define WMI_HOST_FW_FEATURE_COEX_GPIO_SUPPORT 0x0002 3060 #define WMI_HOST_FW_FEATURE_AUX_RADIO_SPECTRAL_INTF 0x0004 3061 #define WMI_HOST_FW_FEATURE_AUX_RADIO_CHAN_LOAD_INTF 0x0008 3062 #define WMI_HOST_FW_FEATURE_BSS_CHANNEL_INFO_64 0x0010 3063 #define WMI_HOST_FW_FEATURE_PEER_STATS 0x0020 3064 #define WMI_HOST_FW_FEATURE_VDEV_STATS 0x0040 3065 #define WMI_HOST_FW_FEATURE_VOW_FEATURES 0x00004000 3066 #define WMI_HOST_FW_FEATURE_VOW_STATS 0x00008000 3067 uint32_t fw_feature_bitmap; 3068 uint32_t wlan_priority_gpio; 3069 uint32_t coex_version; 3070 uint32_t coex_gpio_pin_1; 3071 uint32_t coex_gpio_pin_2; 3072 uint32_t coex_gpio_pin_3; 3073 3074 /* add new members here */ 3075 } wmi_host_ext_resource_config; 3076 3077 /** 3078 * struct set_fwtest_params - FW test params 3079 * @arg: FW param id 3080 * @value: value 3081 */ 3082 struct set_fwtest_params { 3083 uint32_t arg; 3084 uint32_t value; 3085 }; 3086 3087 /** 3088 * enum wfa_test_cmds - WFA test config command 3089 * @WFA_CONFIG_RXNE: configure an override for the RSNXE Used 3090 * @WFA_CONFIG_CSA: configure the driver to ignore CSA 3091 * @WFA_CONFIG_OCV: configure OCI 3092 * @WFA_CONFIG_SA_QUERY: configure driver/firmware to ignore SAquery timeout 3093 * @WFA_FILS_DISCV_FRAMES: FD frames TX enable disable config 3094 * @WFA_IGNORE_H2E_RSNXE: configure driver/firmware to ignore H2E_RSNXE in case 3095 * of 6g connection 3096 */ 3097 enum wfa_test_cmds { 3098 WFA_CONFIG_RXNE, 3099 WFA_CONFIG_CSA, 3100 WFA_CONFIG_OCV, 3101 WFA_CONFIG_SA_QUERY, 3102 WFA_FILS_DISCV_FRAMES, 3103 WFA_IGNORE_H2E_RSNXE, 3104 }; 3105 3106 /** 3107 * enum wmi_host_wfa_config_ocv_frmtype - OCI override frame type 3108 * @WMI_HOST_WFA_CONFIG_OCV_FRMTYPE_SAQUERY_REQ: SA Query Request frame 3109 * @WMI_HOST_WFA_CONFIG_OCV_FRMTYPE_SAQUERY_RSP: SA Query Response frame 3110 * @WMI_HOST_WFA_CONFIG_OCV_FRMTYPE_FT_REASSOC_REQ: FT Reassociation Req frm 3111 * @WMI_HOST_WFA_CONFIG_OCV_FRMTYPE_FILS_REASSOC_REQ: FILS Reassoc Req frm 3112 */ 3113 enum wmi_host_wfa_config_ocv_frmtype { 3114 WMI_HOST_WFA_CONFIG_OCV_FRMTYPE_SAQUERY_REQ = 0x00000001, 3115 WMI_HOST_WFA_CONFIG_OCV_FRMTYPE_SAQUERY_RSP = 0x00000002, 3116 WMI_HOST_WFA_CONFIG_OCV_FRMTYPE_FT_REASSOC_REQ = 0x00000004, 3117 WMI_HOST_WFA_CONFIG_OCV_FRMTYPE_FILS_REASSOC_REQ = 0x00000008, 3118 }; 3119 3120 /** 3121 * struct ocv_wfatest_params - ocv WFA test params 3122 * @frame_type: frame type req for OCV config 3123 * @freq: frequency to set 3124 */ 3125 struct ocv_wfatest_params { 3126 uint8_t frame_type; 3127 uint32_t freq; 3128 }; 3129 3130 /** 3131 * struct set_wfatest_params - WFA test params 3132 * @vdev_id: vdev id 3133 * @value: wfa test config value 3134 * @cmd: WFA test command 3135 * @ocv_param: pointer to ocv params 3136 */ 3137 struct set_wfatest_params { 3138 uint8_t vdev_id; 3139 uint32_t value; 3140 enum wfa_test_cmds cmd; 3141 struct ocv_wfatest_params *ocv_param; 3142 }; 3143 3144 /* 3145 * msduq_update_params - MSDUQ update param structure 3146 * @tid_num: TID number 3147 * @msduq_update_mask: update bit mask 3148 * @qdepth_thresh_value: threshold value for the queue depth 3149 */ 3150 3151 #define QDEPTH_THRESH_MAX_UPDATES 1 3152 3153 typedef struct { 3154 uint32_t tid_num; 3155 uint32_t msduq_update_mask; 3156 uint32_t qdepth_thresh_value; 3157 } msduq_update_params; 3158 3159 /** 3160 * struct set_qdepth_thresh_params - MSDU Queue Depth Threshold Params 3161 * @vdev_id: vdev id 3162 * @pdev_id: pdev id 3163 * @mac_addr: MAC address 3164 * @num_of_msduq_updates: holds the number of tid updates 3165 * @update_params:tid updates 3166 */ 3167 struct set_qdepth_thresh_params { 3168 uint32_t pdev_id; 3169 uint32_t vdev_id; 3170 uint8_t mac_addr[QDF_MAC_ADDR_SIZE]; 3171 uint32_t num_of_msduq_updates; 3172 msduq_update_params update_params[QDEPTH_THRESH_MAX_UPDATES]; 3173 }; 3174 3175 /** 3176 * struct peer_chan_width_switch_info - Peer channel width capability params 3177 * @mac_addr: MAC address of peer 3178 * @chan_width: Max supported channel width of peer 3179 * (enum ieee80211_cwm_width) 3180 * @puncture_bitmap: Puncture bitmap of peer 3181 */ 3182 struct peer_chan_width_switch_info { 3183 uint8_t mac_addr[QDF_MAC_ADDR_SIZE]; 3184 uint32_t chan_width; 3185 uint16_t puncture_bitmap; 3186 }; 3187 3188 /** 3189 * struct set_bridge_mac_addr_params - set bridge MAC addr params 3190 * @bridge_addr: Pointer to bridge macaddr 3191 */ 3192 struct set_bridge_mac_addr_params { 3193 uint8_t *bridge_addr; 3194 }; 3195 3196 /** 3197 * struct peer_del_all_wds_entries_params - WDS peer entries del params 3198 * @wds_macaddr: Pointer to destination macaddr 3199 * @peer_macaddr: Pointer to peer mac addr 3200 * @flags: flags 3201 */ 3202 struct peer_del_all_wds_entries_params { 3203 uint8_t *wds_macaddr; 3204 uint8_t *peer_macaddr; 3205 uint32_t flags; 3206 }; 3207 3208 /** 3209 * struct set_ps_mode_params - PS mode params 3210 * @vdev_id: vdev id 3211 * @psmode: PS mode 3212 */ 3213 struct set_ps_mode_params { 3214 uint8_t vdev_id; 3215 uint8_t psmode; 3216 }; 3217 3218 /** 3219 * struct tt_level_config - Set Thermal throttlling config 3220 * @tmplwm: Temperature low water mark 3221 * @tmphwm: Temperature high water mark 3222 * @dcoffpercent: dc off percentage 3223 * @priority: priority 3224 */ 3225 typedef struct { 3226 uint32_t tmplwm; 3227 uint32_t tmphwm; 3228 uint32_t dcoffpercent; 3229 uint32_t priority; 3230 } tt_level_config; 3231 3232 /** 3233 * struct thermal_mitigation_params - Thermal mitigation params 3234 * @pdev_id: pdev identifier 3235 * @enable: Enable/Disable Thermal mitigation 3236 * @dc: DC 3237 * @dc_per_event: DC per event 3238 * @num_thermal_conf: Number of thermal configurations to be sent 3239 * @client_id: Thermal client id either apps or wpps 3240 * @priority: Priority of apps/wpps 3241 * @levelconf: TT level config params 3242 */ 3243 struct thermal_mitigation_params { 3244 uint32_t pdev_id; 3245 uint32_t enable; 3246 uint32_t dc; 3247 uint32_t dc_per_event; 3248 uint8_t num_thermal_conf; 3249 uint8_t client_id; 3250 uint8_t priority; 3251 tt_level_config levelconf[THERMAL_LEVELS]; 3252 }; 3253 3254 /** 3255 * struct smart_ant_enable_tx_feedback_params - SA tx feedback params 3256 * @enable: Enable TX feedback for SA 3257 */ 3258 struct smart_ant_enable_tx_feedback_params { 3259 int enable; 3260 }; 3261 3262 /** 3263 * struct vdev_spectral_configure_params - SPectral config params 3264 * @vdev_id: VDEV id 3265 * @count: count 3266 * @period: period 3267 * @fft_recap: FFT recapture enable/disable 3268 * @spectral_pri: Spectral priority 3269 * @fft_size: FFT size 3270 * @gc_enable: GC enable 3271 * @restart_enable: restart enabled 3272 * @noise_floor_ref: Noise floor reference 3273 * @init_delay: Init delays 3274 * @nb_tone_thr: NB tone threshold 3275 * @str_bin_thr: STR BIN threshold 3276 * @wb_rpt_mode: WB BIN threshold 3277 * @rssi_rpt_mode: RSSI report mode 3278 * @rssi_thr: RSSI threshold 3279 * @pwr_format: Power format 3280 * @rpt_mode: Report mode 3281 * @bin_scale: BIN scale 3282 * @dbm_adj: DBM adjust 3283 * @chn_mask: chain mask 3284 * @mode: Mode 3285 * @center_freq1: Center frequency 1 3286 * @center_freq2: Center frequency 2 3287 * @chan_freq: Primary channel frequency 3288 * @chan_width: Channel width 3289 */ 3290 struct vdev_spectral_configure_params { 3291 uint8_t vdev_id; 3292 uint16_t count; 3293 uint16_t period; 3294 uint16_t fft_recap; 3295 uint16_t spectral_pri; 3296 uint16_t fft_size; 3297 uint16_t gc_enable; 3298 uint16_t restart_enable; 3299 uint16_t noise_floor_ref; 3300 uint16_t init_delay; 3301 uint16_t nb_tone_thr; 3302 uint16_t str_bin_thr; 3303 uint16_t wb_rpt_mode; 3304 uint16_t rssi_rpt_mode; 3305 uint16_t rssi_thr; 3306 uint16_t pwr_format; 3307 uint16_t rpt_mode; 3308 uint16_t bin_scale; 3309 uint16_t dbm_adj; 3310 uint16_t chn_mask; 3311 uint16_t mode; 3312 uint16_t center_freq1; 3313 uint16_t center_freq2; 3314 uint16_t chan_freq; 3315 uint16_t chan_width; 3316 }; 3317 3318 /** 3319 * struct vdev_spectral_enable_params - Spectral enabled params 3320 * @vdev_id: VDEV id 3321 * @active_valid: Active valid 3322 * @active: active 3323 * @enabled_valid: Enabled valid 3324 * @enabled: enabled 3325 * @mode: Mode 3326 */ 3327 struct vdev_spectral_enable_params { 3328 uint8_t vdev_id; 3329 uint8_t active_valid; 3330 uint8_t active; 3331 uint8_t enabled_valid; 3332 uint8_t enabled; 3333 uint8_t mode; 3334 }; 3335 3336 #ifdef WLAN_CONV_SPECTRAL_ENABLE 3337 /** 3338 * struct spectral_fft_bin_markers_160_165mhz - Stores the start index 3339 * and length of FFT bins in 165 MHz/Restricted 80p80 or 160 MHz 3340 * mode in targets with a single Spectral detector 3341 * @is_valid: Indicates whether this structure holds valid data 3342 * @start_pri80: Starting index of FFT bins corresponding to primary 80 MHz 3343 * in 165 MHz/Restricted 80p80 or 160 MHz mode 3344 * @num_pri80: Number of FFT bins corresponding to primary 80 MHz 3345 * in 165 MHz/Restricted 80p80 or 160 MHz mode 3346 * @start_5mhz: Starting index of FFT bins corresponding to extra 5 MHz 3347 * in 165 MHz/Restricted 80p80 mode 3348 * @num_5mhz: Number of FFT bins corresponding to extra 5 MHz 3349 * in 165 MHz/Restricted 80p80 mode 3350 * @start_sec80: Starting index of FFT bins corresponding to secondary 80 MHz 3351 * in 165 MHz/Restricted 80p80 or 160 MHz mode 3352 * @num_sec80: Number of FFT bins corresponding to secondary 80 MHz 3353 * in 165 MHz/Restricted 80p80 or 160 MHz mode 3354 */ 3355 struct spectral_fft_bin_markers_160_165mhz { 3356 bool is_valid; 3357 uint16_t start_pri80; 3358 uint16_t num_pri80; 3359 uint16_t start_5mhz; 3360 uint16_t num_5mhz; 3361 uint16_t start_sec80; 3362 uint16_t num_sec80; 3363 }; 3364 3365 /** 3366 * struct spectral_startscan_resp_params - Params from the event send by 3367 * FW as a response to the scan start command 3368 * @pdev_id: Pdev id 3369 * @smode: Spectral scan mode 3370 * @num_fft_bin_index: Number of TLVs with FFT bin start and end indices 3371 * @num_det_info: Number of detector info TLVs 3372 */ 3373 struct spectral_startscan_resp_params { 3374 uint32_t pdev_id; 3375 enum spectral_scan_mode smode; 3376 uint8_t num_fft_bin_index; 3377 uint8_t num_det_info; 3378 }; 3379 3380 /** 3381 * struct spectral_session_chan_info - Spectral scan session channel information 3382 * @operating_pri20_freq: frequency of primary 20MHz channel (in MHz) 3383 * @operating_cfreq1: center frequency 1 of operating channel (in MHz) 3384 * @operating_cfreq2: center frequency 2 of operating channel (in MHz). 3385 * For contiguous channels, @operating_cfreq1 should be represent the center of 3386 * the entire span and @operating_cfreq2 should be 0, whereas for non-contiguous 3387 * channels, @operating_cfreq1 should represent the center of primary segment 3388 * and @@operating_cfreq2 should represent the center of secondary segment. 3389 * @operating_bw: operating bandwidth enumeration 3390 * @operating_puncture_20mhz_bitmap: Puncture bitmap of operating channel. 3391 * Each bit indicates one 20 MHz punctured channel 3392 * @sscan_cfreq1: center frequency 1 (in MHz) of the channel in which spectral 3393 * scan is done 3394 * @sscan_cfreq2: center frequency 2 (in MHz) of the channel in which spectral 3395 * scan is done. For contiguous channels, @sscan_cfreq1 should be represent the 3396 * center of the entire span and @sscan_cfreq2 should be 0, whereas for 3397 * non-contiguous channels, @sscan_cfreq1 should represent the center of primary 3398 * segment and @sscan_cfreq2 should represent the center of secondary segment. 3399 * @sscan_bw: bandwidth of the channel in which spectral scan is done 3400 * @sscan_puncture_20mhz_bitmap: Puncture bitmap of channel in which spectral 3401 * scan is done. Each bit indicates one 20 MHz punctured channel. 3402 */ 3403 struct spectral_session_chan_info { 3404 qdf_freq_t operating_pri20_freq; 3405 qdf_freq_t operating_cfreq1; 3406 qdf_freq_t operating_cfreq2; 3407 enum phy_ch_width operating_bw; 3408 uint16_t operating_puncture_20mhz_bitmap; 3409 3410 qdf_freq_t sscan_cfreq1; 3411 qdf_freq_t sscan_cfreq2; 3412 enum phy_ch_width sscan_bw; 3413 uint16_t sscan_puncture_20mhz_bitmap; 3414 }; 3415 3416 /** 3417 * struct spectral_session_det_info - Detector info for a spectral scan session 3418 * @det_id: detector ID 3419 * @start_freq: start frequency (in MHz) of this detector 3420 * @end_freq: end frequency (in MHz) of this detector 3421 */ 3422 struct spectral_session_det_info { 3423 uint8_t det_id; 3424 qdf_freq_t start_freq; 3425 qdf_freq_t end_freq; 3426 }; 3427 3428 /** 3429 * struct spectral_capabilities_event_params - parameters related to Spectral 3430 * capabilities event 3431 * @num_sscan_bw_caps: Number of spectral_scan_bw_capabilities TLVs 3432 * @num_fft_size_caps: Number of spectral_fft_size_capabilities TLVs 3433 */ 3434 struct spectral_capabilities_event_params { 3435 uint8_t num_sscan_bw_caps; 3436 uint8_t num_fft_size_caps; 3437 }; 3438 3439 /** 3440 * struct spectral_scan_bw_capabilities - Spectral scan bandwidth caps 3441 * that are extracted from Spectral capabilities WMI event 3442 * @pdev_id: pdev ID 3443 * @smode: Spectral scan mode 3444 * @operating_bw: Operating bandwidth 3445 * @supported_bws: Supported sscan bandwidths bitmap for given @pdev_id, 3446 * @operating_bw, and @smode 3447 */ 3448 struct spectral_scan_bw_capabilities { 3449 uint8_t pdev_id; 3450 enum spectral_scan_mode smode; 3451 enum phy_ch_width operating_bw; 3452 uint32_t supported_bws; 3453 }; 3454 3455 /** 3456 * struct spectral_fft_size_capabilities - Spectral scan FFT size caps 3457 * that are extracted from Spectral capabilities WMI event 3458 * @pdev_id: pdev ID 3459 * @sscan_bw: Spectral scan bandwidth 3460 * @supports_fft_sizes: Supported FFT sizes bitmap for given @pdev_id and 3461 * @sscan_bw 3462 */ 3463 struct spectral_fft_size_capabilities { 3464 uint8_t pdev_id; 3465 enum phy_ch_width sscan_bw; 3466 uint32_t supports_fft_sizes; 3467 }; 3468 #endif 3469 3470 /** 3471 * struct pdev_set_regdomain_params - PDEV set reg domain params 3472 * @currentRDinuse: Current Reg domain 3473 * @currentRD2G: Current Reg domain 2G 3474 * @currentRD5G: Current Reg domain 5G 3475 * @ctl_2G: CTL 2G 3476 * @ctl_5G: CTL 5G 3477 * @dfsDomain: DFS domain 3478 * @pdev_id: pdev_id 3479 */ 3480 struct pdev_set_regdomain_params { 3481 uint16_t currentRDinuse; 3482 uint16_t currentRD2G; 3483 uint16_t currentRD5G; 3484 uint32_t ctl_2G; 3485 uint32_t ctl_5G; 3486 uint8_t dfsDomain; 3487 uint32_t pdev_id; 3488 }; 3489 3490 /** 3491 * struct set_beacon_filter_params - Set beacon filter params 3492 * @vdev_id: VDEV id 3493 * @ie: Pointer to IE fields 3494 */ 3495 struct set_beacon_filter_params { 3496 uint8_t vdev_id; 3497 uint32_t *ie; 3498 }; 3499 3500 /** 3501 * struct remove_beacon_filter_params - Remove beacon filter params 3502 * @vdev_id: VDEV id 3503 */ 3504 struct remove_beacon_filter_params { 3505 uint8_t vdev_id; 3506 }; 3507 3508 /** 3509 * struct mgmt_params - Mgmt params 3510 * @vdev_id: vdev id 3511 * @buf_len: length of frame buffer 3512 * @wbuf: frame buffer 3513 */ 3514 struct mgmt_params { 3515 int vdev_id; 3516 uint32_t buf_len; 3517 qdf_nbuf_t wbuf; 3518 }; 3519 3520 /** 3521 * struct addba_clearresponse_params - Addba clear response params 3522 * @vdev_id: VDEV id 3523 */ 3524 struct addba_clearresponse_params { 3525 uint8_t vdev_id; 3526 }; 3527 3528 /** 3529 * struct addba_send_params - ADDBA send params 3530 * @vdev_id: vdev id 3531 * @tidno: TID 3532 * @buffersize: buffer size 3533 */ 3534 struct addba_send_params { 3535 uint8_t vdev_id; 3536 uint8_t tidno; 3537 uint16_t buffersize; 3538 }; 3539 3540 /** 3541 * struct delba_send_params - DELBA send params 3542 * @vdev_id: vdev id 3543 * @tidno: TID 3544 * @initiator: initiator 3545 * @reasoncode: reason code 3546 */ 3547 struct delba_send_params { 3548 uint8_t vdev_id; 3549 uint8_t tidno; 3550 uint8_t initiator; 3551 uint16_t reasoncode; 3552 }; 3553 /** 3554 * struct addba_setresponse_params - Set ADDBA response params 3555 * @vdev_id: vdev id 3556 * @tidno: TID 3557 * @statuscode: status code in response 3558 */ 3559 struct addba_setresponse_params { 3560 uint8_t vdev_id; 3561 uint8_t tidno; 3562 uint16_t statuscode; 3563 }; 3564 3565 /** 3566 * struct singleamsdu_params - Single AMSDU params 3567 * @vdev_id: vdev is 3568 * @tidno: TID 3569 */ 3570 struct singleamsdu_params { 3571 uint8_t vdev_id; 3572 uint8_t tidno; 3573 }; 3574 3575 /** 3576 * struct mu_scan_params - MU scan params 3577 * @id: id 3578 * @type: type 3579 * @duration: Duration 3580 * @lteu_tx_power: LTEU tx power 3581 * @rssi_thr_bssid: 3582 * @rssi_thr_sta: 3583 * @rssi_thr_sc: 3584 * @plmn_id: 3585 * @alpha_num_bssid: alpha for num active bssid calculation 3586 */ 3587 struct mu_scan_params { 3588 uint8_t id; 3589 uint8_t type; 3590 uint32_t duration; 3591 uint32_t lteu_tx_power; 3592 uint32_t rssi_thr_bssid; 3593 uint32_t rssi_thr_sta; 3594 uint32_t rssi_thr_sc; 3595 uint32_t plmn_id; 3596 uint32_t alpha_num_bssid; 3597 }; 3598 3599 /** 3600 * struct lteu_config_params - LTEU config params 3601 * @lteu_gpio_start: start MU/AP scan after GPIO toggle 3602 * @lteu_num_bins: no. of elements in the following arrays 3603 * @use_actual_nf: whether to use the actual NF obtained or a hardcoded one 3604 * @lteu_weight: weights for MU algo 3605 * @lteu_thresh: thresholds for MU algo 3606 * @lteu_gamma: gamma's for MU algo 3607 * @lteu_scan_timeout: timeout in ms to gpio toggle 3608 * @alpha_num_bssid: alpha for num active bssid calculation 3609 * @wifi_tx_power: Wifi Tx power 3610 * @allow_err_packets: allow error packets 3611 */ 3612 struct lteu_config_params { 3613 uint8_t lteu_gpio_start; 3614 uint8_t lteu_num_bins; 3615 uint8_t use_actual_nf; 3616 uint32_t lteu_weight[LTEU_MAX_BINS]; 3617 uint32_t lteu_thresh[LTEU_MAX_BINS]; 3618 uint32_t lteu_gamma[LTEU_MAX_BINS]; 3619 uint32_t lteu_scan_timeout; 3620 uint32_t alpha_num_bssid; 3621 uint32_t wifi_tx_power; 3622 uint32_t allow_err_packets; 3623 }; 3624 3625 struct wmi_macaddr_t { 3626 /** upper 4 bytes of MAC address */ 3627 uint32_t mac_addr31to0; 3628 /** lower 2 bytes of MAC address */ 3629 uint32_t mac_addr47to32; 3630 }; 3631 3632 /** 3633 * struct wlan_profile_params - WLAN profile params 3634 * @param_id: param id 3635 * @profile_id: profile id 3636 * @enable: enable 3637 */ 3638 struct wlan_profile_params { 3639 uint32_t param_id; 3640 uint32_t profile_id; 3641 uint32_t enable; 3642 }; 3643 3644 /** 3645 * struct wmi_host_wme_vparams - WME params 3646 * @acm: ACM paramete 3647 * @aifs: AIFSN parameters 3648 * @cwmin: cwmin in exponential form 3649 * @cwmax: cwmax in exponential form 3650 * @txoplimit: txopLimit 3651 * @mu_edca_timer: MU EDCA timer 3652 * @noackpolicy: No-Ack Policy: 0=ack, 1=no-ack 3653 */ 3654 struct wmi_host_wme_vparams { 3655 u_int32_t acm; 3656 u_int32_t aifs; 3657 u_int32_t cwmin; 3658 u_int32_t cwmax; 3659 union { 3660 u_int32_t txoplimit; 3661 u_int32_t mu_edca_timer; 3662 }; 3663 u_int32_t noackpolicy; 3664 }; 3665 3666 /** 3667 * struct ratepwr_table_params - Rate power table params 3668 * @ratepwr_tbl: pointer to rate power table 3669 * @ratepwr_len: rate power table len 3670 */ 3671 struct ratepwr_table_params { 3672 uint8_t *ratepwr_tbl; 3673 uint16_t ratepwr_len; 3674 }; 3675 3676 /** 3677 * struct ratepwr_chainmsk_params - Rate power chainmask params 3678 * @ratepwr_chain_tbl: pointer to ratepwr chain table 3679 * @num_rate: number of rate in table 3680 * @pream_type: preamble type 3681 * @ops: ops 3682 */ 3683 struct ratepwr_chainmsk_params { 3684 uint32_t *ratepwr_chain_tbl; 3685 uint16_t num_rate; 3686 uint8_t pream_type; 3687 uint8_t ops; 3688 }; 3689 3690 struct macaddr_params { 3691 uint8_t *macaddr; 3692 }; 3693 3694 /** 3695 * struct acparams_params - acparams config structure 3696 * @ac: AC to configure 3697 * @use_rts: Use rts for this AC 3698 * @aggrsize_scaling: Aggregate size scaling for the AC 3699 * @min_kbps: min kbps req 3700 */ 3701 struct acparams_params { 3702 uint8_t ac; 3703 uint8_t use_rts; 3704 uint8_t aggrsize_scaling; 3705 uint32_t min_kbps; 3706 }; 3707 3708 /** 3709 * struct vap_dscp_tid_map_params - DSCP tid map params 3710 * @vdev_id: vdev id 3711 * @dscp_to_tid_map: pointer to array of tid to dscp map table 3712 */ 3713 struct vap_dscp_tid_map_params { 3714 uint8_t vdev_id; 3715 uint32_t *dscp_to_tid_map; 3716 }; 3717 3718 /** 3719 * struct proxy_ast_reserve_params - Proxy AST reserve params 3720 * @macaddr: macaddr for proxy ast entry 3721 */ 3722 struct proxy_ast_reserve_params { 3723 uint8_t *macaddr; 3724 }; 3725 3726 /** 3727 * struct fips_params - FIPS params config 3728 * @key: pointer to key 3729 * @key_len: length of key 3730 * @data: pointer data buf 3731 * @data_len: length of data buf 3732 * @mode: mode 3733 * @op: operation 3734 * @pdev_id: pdev_id for identifying the MAC 3735 */ 3736 struct fips_params { 3737 uint8_t *key; 3738 uint32_t key_len; 3739 uint8_t *data; 3740 uint32_t data_len; 3741 uint32_t mode; 3742 uint32_t op; 3743 uint32_t pdev_id; 3744 }; 3745 3746 #ifdef WLAN_FEATURE_FIPS_BER_CCMGCM 3747 #define MAX_KEY_LEN_FIPS_EXTEND 64 3748 #define MAX_NONCEIV_LEN_FIPS_EXTEND 16 3749 /** 3750 * struct fips_extend_cmd_params - FIPS extend params config for first frag 3751 * @fips_cmd: 1 - Encrypt, 2 - Decrypt 3752 * @key_cipher: 0 - CCM, 1 - GCM 3753 * @key_len: length of key 3754 * @key: key_data 3755 * @nonce_iv_len: length of nonce or iv 3756 * @nonce_iv: nonce_iv 3757 * @tag_len: length of tag/mic 3758 * @aad_len: length of aad 3759 * @payload_len: length of payload 3760 */ 3761 struct fips_extend_cmd_params { 3762 u_int32_t fips_cmd; 3763 u_int32_t key_cipher; 3764 u_int32_t key_len; 3765 u_int8_t key[MAX_KEY_LEN_FIPS_EXTEND]; 3766 u_int32_t nonce_iv_len; 3767 u_int8_t nonce_iv[MAX_NONCEIV_LEN_FIPS_EXTEND]; 3768 u_int32_t tag_len; 3769 u_int32_t aad_len; 3770 u_int32_t payload_len; 3771 }; 3772 3773 /** 3774 * struct fips_extend_params - FIPS extend params config 3775 * @pdev_id: pdev_id for identifying the MAC 3776 * @cookie: cookie value 3777 * @frag_idx: fragment index 3778 * @more_bit: more bit 3779 * @data_len: length of data buf 3780 * @cmd_params: cmd_params set for first fragment 3781 * @data: pointer data buf 3782 */ 3783 struct fips_extend_params { 3784 uint32_t pdev_id; 3785 u_int32_t cookie; 3786 u_int32_t frag_idx; 3787 u_int32_t more_bit; 3788 u_int32_t data_len; 3789 struct fips_extend_cmd_params cmd_params; 3790 u_int32_t *data; 3791 }; 3792 3793 /** 3794 * struct fips_mode_set_params - FIPS mode enable param 3795 * @pdev_id: pdev_id for identifying the MAC 3796 * @mode: value to disable or enable fips extend mode 3797 */ 3798 struct fips_mode_set_params { 3799 uint32_t pdev_id; 3800 uint32_t mode; 3801 }; 3802 #endif 3803 3804 #ifdef WLAN_FEATURE_DISA_FIPS 3805 /** 3806 * struct disa_encrypt_decrypt_req_params - disa encrypt request 3807 * @vdev_id: virtual device id 3808 * @key_flag: This indicates firmware to encrypt/decrypt payload 3809 * see ENCRYPT_DECRYPT_FLAG 3810 * @key_idx: Index used in storing key 3811 * @key_cipher: cipher used for encryption/decryption 3812 * Eg: see WMI_CIPHER_AES_CCM for CCMP 3813 * @key_len: length of key data 3814 * @key_txmic_len: length of Tx MIC 3815 * @key_rxmic_len: length of Rx MIC 3816 * @key_data: Key 3817 * @pn: packet number 3818 * @mac_header: MAC header 3819 * @data_len: length of data 3820 * @data: pointer to payload 3821 */ 3822 struct disa_encrypt_decrypt_req_params { 3823 uint32_t vdev_id; 3824 uint8_t key_flag; 3825 uint32_t key_idx; 3826 uint32_t key_cipher; 3827 uint32_t key_len; 3828 uint32_t key_txmic_len; 3829 uint32_t key_rxmic_len; 3830 uint8_t key_data[MAC_MAX_KEY_LENGTH]; 3831 uint8_t pn[MAC_PN_LENGTH]; 3832 uint8_t mac_header[MAX_MAC_HEADER_LEN]; 3833 uint32_t data_len; 3834 uint8_t *data; 3835 }; 3836 #endif 3837 3838 /** 3839 * struct periodic_chan_stats_params - periodic channel stats req param 3840 * @stats_period: stats period update 3841 * @enable: enable/disable 3842 * @pdev_id: pdev id 3843 */ 3844 struct periodic_chan_stats_params { 3845 uint32_t stats_period; 3846 bool enable; 3847 uint32_t pdev_id; 3848 }; 3849 3850 /** 3851 * enum wmi_host_packet_power_rate_flags: packer power rate flags 3852 * @WMI_HOST_FLAG_RTSENA: RTS enabled 3853 * @WMI_HOST_FLAG_CTSENA: CTS enabled 3854 * @WMI_HOST_FLAG_STBC: STBC is set 3855 * @WMI_HOST_FLAG_LDPC: LDPC is set 3856 * @WMI_HOST_FLAG_TXBF: Tx Bf enabled 3857 * @WMI_HOST_FLAG_MU2: MU2 data 3858 * @WMI_HOST_FLAG_MU3: MU3 data 3859 * @WMI_HOST_FLAG_SERIES1: Rate series 1 3860 * @WMI_HOST_FLAG_SGI: Short guard interval 3861 */ 3862 enum wmi_host_packet_power_rate_flags { 3863 WMI_HOST_FLAG_RTSENA = 0x0001, 3864 WMI_HOST_FLAG_CTSENA = 0x0002, 3865 WMI_HOST_FLAG_STBC = 0x0004, 3866 WMI_HOST_FLAG_LDPC = 0x0008, 3867 WMI_HOST_FLAG_TXBF = 0x0010, 3868 WMI_HOST_FLAG_MU2 = 0x0020, 3869 WMI_HOST_FLAG_MU3 = 0x0040, 3870 WMI_HOST_FLAG_SERIES1 = 0x0080, 3871 WMI_HOST_FLAG_SGI = 0x0100, 3872 }; 3873 3874 /** 3875 * enum wmi_host_su_mu_ofdma_flags: packer power su mu ofdma flags 3876 * @WMI_HOST_FLAG_SU: SU Data 3877 * @WMI_HOST_FLAG_DL_MU_MIMO_AC: DL AC MU data 3878 * @WMI_HOST_FLAG_DL_MU_MIMO_AX: DL AX MU data 3879 * @WMI_HOST_FLAG_DL_OFDMA: DL OFDMA data 3880 * @WMI_HOST_FLAG_UL_OFDMA: UL OFDMA data 3881 * @WMI_HOST_FLAG_UL_MU_MIMO: UL MU data 3882 */ 3883 enum wmi_host_su_mu_ofdma_flags { 3884 WMI_HOST_FLAG_SU = 0x0001, 3885 WMI_HOST_FLAG_DL_MU_MIMO_AC = 0x0002, 3886 WMI_HOST_FLAG_DL_MU_MIMO_AX = 0x0003, 3887 WMI_HOST_FLAG_DL_OFDMA = 0x0004, 3888 WMI_HOST_FLAG_UL_OFDMA = 0x0005, 3889 WMI_HOST_FLAG_UL_MU_MIMO = 0x0006, 3890 }; 3891 3892 /** 3893 * enum wmi_host_preamble_type: preamble type 3894 * @WMI_HOST_PREAMBLE_OFDM: ofdm rate 3895 * @WMI_HOST_PREAMBLE_CCK: cck rate 3896 * @WMI_HOST_PREAMBLE_HT: ht rate 3897 * @WMI_HOST_PREAMBLE_VHT: vht rate 3898 * @WMI_HOST_PREAMBLE_HE: 11ax he rate 3899 */ 3900 enum wmi_host_preamble_type { 3901 WMI_HOST_PREAMBLE_OFDM = 0, 3902 WMI_HOST_PREAMBLE_CCK = 1, 3903 WMI_HOST_PREAMBLE_HT = 2, 3904 WMI_HOST_PREAMBLE_VHT = 3, 3905 WMI_HOST_PREAMBLE_HE = 4, 3906 }; 3907 3908 /** 3909 * enum wmi_ratemask_type: ratemask type 3910 * @WMI_RATEMASK_TYPE_CCK: CCK rate mask type 3911 * @WMI_RATEMASK_TYPE_HT: HT rate mask type 3912 * @WMI_RATEMASK_TYPE_VHT: VHT rate mask type 3913 * @WMI_RATEMASK_TYPE_HE: HE rate mask type 3914 * 3915 * This is used for 'type' in WMI_VDEV_RATEMASK_CMDID 3916 */ 3917 enum wmi_ratemask_type { 3918 WMI_RATEMASK_TYPE_CCK = 0, 3919 WMI_RATEMASK_TYPE_HT = 1, 3920 WMI_RATEMASK_TYPE_VHT = 2, 3921 WMI_RATEMASK_TYPE_HE = 3, 3922 }; 3923 3924 /** 3925 * enum peer_txq_flush_policy - Peer flush policy values 3926 * @PEER_TXQ_FLUSH_POLICY_NONE: No policy configured for peer TID queues 3927 * @PEER_TXQ_FLUSH_POLICY_TWT_SP_END: flush peer TID queues after SP end 3928 * @PEER_TXQ_FLUSH_POLICY_INVALID: invalid policy 3929 * 3930 * This is mapped to 'flush_policy' in WMI_PEER_FLUSH_POLICY_CMDID 3931 */ 3932 enum peer_txq_flush_policy { 3933 PEER_TXQ_FLUSH_POLICY_NONE = 0, 3934 PEER_TXQ_FLUSH_POLICY_TWT_SP_END = 1, 3935 /*keep last */ 3936 PEER_TXQ_FLUSH_POLICY_INVALID, 3937 }; 3938 3939 /** 3940 * struct peer_txq_flush_config_params: Peer TXQ flush configuration parameters 3941 * @vdev_id: vdev id 3942 * @peer: Peer mac address 3943 * @tid_mask: TID queues of the peer being configured 3944 * @policy: Policy to be applied 3945 */ 3946 struct peer_txq_flush_config_params { 3947 uint8_t vdev_id; 3948 uint8_t peer[QDF_MAC_ADDR_SIZE]; 3949 uint32_t tid_mask; 3950 enum peer_txq_flush_policy policy; 3951 }; 3952 3953 /** 3954 * enum gpio_pull_type - GPIO PULL TYPE 3955 * @WMI_HOST_GPIO_PULL_NONE: set gpio pull type to none 3956 * @WMI_HOST_GPIO_PULL_UP: set gpio to pull up 3957 * @WMI_HOST_GPIO_PULL_DOWN: set gpio to pull down 3958 * @WMI_HOST_GPIO_PULL_MAX: invalid pull type 3959 */ 3960 enum gpio_pull_type { 3961 WMI_HOST_GPIO_PULL_NONE = 0, 3962 WMI_HOST_GPIO_PULL_UP = 1, 3963 WMI_HOST_GPIO_PULL_DOWN = 2, 3964 WMI_HOST_GPIO_PULL_MAX, 3965 }; 3966 3967 /** 3968 * enum gpio_interrupt_mode - GPIO INTERRUPT MODE 3969 * @WMI_HOST_GPIO_INTMODE_DISABLE: disable interrupt mode 3970 * @WMI_HOST_GPIO_INTMODE_RISING_EDGE: interrupt with rising edge trigger 3971 * @WMI_HOST_GPIO_INTMODE_FALLING_EDGE: interrupt with falling edge trigger 3972 * @WMI_HOST_GPIO_INTMODE_BOTH_EDGE: interrupt with both edge trigger 3973 * @WMI_HOST_GPIO_INTMODE_LEVEL_LOW: interrupt with gpio level low trigger 3974 * @WMI_HOST_GPIO_INTMODE_LEVEL_HIGH: interrupt with gpio level high trigger 3975 * @WMI_HOST_GPIO_INTMODE_MAX: invalid interrupt mode 3976 */ 3977 enum gpio_interrupt_mode { 3978 WMI_HOST_GPIO_INTMODE_DISABLE = 0, 3979 WMI_HOST_GPIO_INTMODE_RISING_EDGE = 1, 3980 WMI_HOST_GPIO_INTMODE_FALLING_EDGE = 2, 3981 WMI_HOST_GPIO_INTMODE_BOTH_EDGE = 3, 3982 WMI_HOST_GPIO_INTMODE_LEVEL_LOW = 4, 3983 WMI_HOST_GPIO_INTMODE_LEVEL_HIGH = 5, 3984 WMI_HOST_GPIO_INTMODE_MAX, 3985 }; 3986 3987 /** 3988 * enum gpio_direction - GPIO Direction 3989 * @WMI_HOST_GPIO_INPUT: set gpio as input mode 3990 * @WMI_HOST_GPIO_OUTPUT: set gpio as output mode 3991 * @WMI_HOST_GPIO_DIR_MAX: invalid gpio direction 3992 */ 3993 enum gpio_direction { 3994 WMI_HOST_GPIO_INPUT = 0, 3995 WMI_HOST_GPIO_OUTPUT = 1, 3996 WMI_HOST_GPIO_DIR_MAX, 3997 }; 3998 3999 /** 4000 * enum fw_gpio_direction - GPIO Direction 4001 * @WMI_FW_GPIO_OUTPUT: set gpio as output mode 4002 * @WMI_FW_GPIO_INPUT: set gpio as input mode 4003 */ 4004 enum fw_gpio_direction { 4005 WMI_FW_GPIO_OUTPUT = 0, 4006 WMI_FW_GPIO_INPUT = 1, 4007 }; 4008 4009 /** 4010 * enum gpio_value - GPIO Value 4011 * @WMI_HOST_GPIO_LEVEL_LOW: set gpio output level low 4012 * @WMI_HOST_GPIO_LEVEL_HIGH: set gpio output level high 4013 * @WMI_HOST_GPIO_LEVEL_MAX: invalid gpio value 4014 */ 4015 enum gpio_value { 4016 WMI_HOST_GPIO_LEVEL_LOW = 0, 4017 WMI_HOST_GPIO_LEVEL_HIGH = 1, 4018 WMI_HOST_GPIO_LEVEL_MAX, 4019 }; 4020 4021 /** 4022 * enum gpio_init_enable - GPIO init enable 4023 * @WMI_HOST_GPIO_INIT_DISABLE: Disable INIT 4024 * @WMI_HOST_GPIO_INIT_ENABLE: Enable INIT 4025 * @WMI_HOST_GPIO_INIT_MAX: invalid gpio init_enable 4026 */ 4027 enum gpio_init_enable { 4028 WMI_HOST_GPIO_INIT_DISABLE = 0, 4029 WMI_HOST_GPIO_INIT_ENABLE = 1, 4030 WMI_HOST_GPIO_INIT_MAX, 4031 }; 4032 4033 /** 4034 * enum gpio_drive - GPIO drive 4035 * @WMI_HOST_GPIO_DRIVE_2MA: drive 2MA 4036 * @WMI_HOST_GPIO_DRIVE_4MA: drive 4MA 4037 * @WMI_HOST_GPIO_DRIVE_6MA: drive 6MA 4038 * @WMI_HOST_GPIO_DRIVE_8MA: drive 8MA 4039 * @WMI_HOST_GPIO_DRIVE_10MA: drive 10MA 4040 * @WMI_HOST_GPIO_DRIVE_12MA: drive 12MA 4041 * @WMI_HOST_GPIO_DRIVE_14MA: drive 14MA 4042 * @WMI_HOST_GPIO_DRIVE_16MA: drive 16MA 4043 * @WMI_HOST_GPIO_DRIVE_MAX: invalid gpio drive 4044 */ 4045 enum gpio_drive { 4046 WMI_HOST_GPIO_DRIVE_2MA = 0, 4047 WMI_HOST_GPIO_DRIVE_4MA = 1, 4048 WMI_HOST_GPIO_DRIVE_6MA = 2, 4049 WMI_HOST_GPIO_DRIVE_8MA = 3, 4050 WMI_HOST_GPIO_DRIVE_10MA = 4, 4051 WMI_HOST_GPIO_DRIVE_12MA = 5, 4052 WMI_HOST_GPIO_DRIVE_14MA = 6, 4053 WMI_HOST_GPIO_DRIVE_16MA = 7, 4054 WMI_HOST_GPIO_DRIVE_MAX, 4055 }; 4056 4057 /** 4058 * enum gpio_mux_config - GPIO mux_config 4059 * @WMI_HOST_GPIO_MUX_DEFAULT: Default mux value 4060 * @WMI_HOST_GPIO_MUX_MAX: maximum allowed gpio mux_config 4061 */ 4062 enum gpio_mux_config { 4063 WMI_HOST_GPIO_MUX_DEFAULT = 0, 4064 WMI_HOST_GPIO_MUX_MAX = 15, 4065 }; 4066 4067 /** 4068 * struct wmi_host_gpio_input_event - GPIO input event structure 4069 * @gpio_num: GPIO number which changed state 4070 */ 4071 typedef struct { 4072 uint32_t gpio_num; /* GPIO number which changed state */ 4073 } wmi_host_gpio_input_event; 4074 4075 /** 4076 * struct gpio_config_params - GPIO config params 4077 * @pin_num: GPIO number to config 4078 * @pin_dir: gpio direction, 1-input/0-output 4079 * @pin_pull_type: pull type define in gpio_pull_type 4080 * @pin_intr_mode: interrupt mode define in gpio_interrupt_mode 4081 * @mux_config_val: 4082 * @drive: 4083 * @init_enable: 4084 */ 4085 struct gpio_config_params { 4086 uint32_t pin_num; 4087 enum gpio_direction pin_dir; 4088 enum gpio_pull_type pin_pull_type; 4089 enum gpio_interrupt_mode pin_intr_mode; 4090 enum gpio_mux_config mux_config_val; 4091 enum gpio_drive drive; 4092 enum gpio_init_enable init_enable; 4093 }; 4094 4095 /** 4096 * struct gpio_output_params - GPIO output params 4097 * @pin_num: GPIO number to configure 4098 * @pin_set: 1 mean gpio output high level, 0 mean gpio output low level 4099 */ 4100 struct gpio_output_params { 4101 uint32_t pin_num; 4102 enum gpio_value pin_set; 4103 }; 4104 4105 /* flags bit 0: to configure wlan priority bitmap */ 4106 #define WMI_HOST_BTCOEX_PARAM_FLAGS_WLAN_PRIORITY_BITMAP_BIT (1<<0) 4107 /* flags bit 1: to configure both period and wlan duration */ 4108 #define WMI_HOST_BTCOEX_PARAM_FLAGS_DUTY_CYCLE_BIT (1<<1) 4109 struct btcoex_cfg_params { 4110 /* WLAN priority bitmask for different frame types */ 4111 uint32_t btcoex_wlan_priority_bitmap; 4112 /* This command is used to configure different btcoex params 4113 * in different situations.The host sets the appropriate bit(s) 4114 * in btcoex_param_flags to indicate which configuration parameters 4115 * are valid within a particular BT coex config message, so that one 4116 * BT configuration parameter can be configured without affecting 4117 * other BT configuration parameters.E.g. if the host wants to 4118 * configure only btcoex_wlan_priority_bitmap it sets only 4119 * WMI_BTCOEX_PARAM_FLAGS_WLAN_PRIORITY_BITMAP_BIT in 4120 * btcoex_param_flags so that firmware will not overwrite 4121 * other params with default value passed in the command. 4122 * Host can also set multiple bits in btcoex_param_flags 4123 * to configure more than one param in single message. 4124 */ 4125 uint32_t btcoex_param_flags; 4126 /* period denotes the total time in milliseconds which WLAN and BT share 4127 * configured percentage for transmission and reception. 4128 */ 4129 uint32_t period; 4130 /* wlan duration is the time in milliseconds given for wlan 4131 * in above period. 4132 */ 4133 uint32_t wlan_duration; 4134 }; 4135 4136 /** 4137 * struct esl_egid_params - Contains the EGID information 4138 * @egid_info: egid_info contains the 128-bit ESL EGID information 4139 */ 4140 struct esl_egid_params { 4141 uint32_t egid_info[EGID_INFO_SIZE]; 4142 }; 4143 4144 #define WMI_HOST_COEX_CONFIG_BUF_MAX_LEN 32 /* 128 bytes */ 4145 /** 4146 * struct coex_ver_cfg_t 4147 * @coex_version: Version for 4 wire coex 4148 * @length: Length of payload buffer based on version 4149 * @config_buf: Payload Buffer 4150 */ 4151 typedef struct { 4152 /* VERSION_4 (4 wire coex) */ 4153 uint32_t coex_version; 4154 4155 /* No. of uint32_t elements in payload buffer. Will depend on the coex 4156 * version 4157 */ 4158 uint32_t length; 4159 4160 /* Payload buffer */ 4161 uint32_t config_buf[WMI_HOST_COEX_CONFIG_BUF_MAX_LEN]; 4162 } coex_ver_cfg_t; 4163 4164 #define WMI_HOST_RTT_REPORT_CFR 0 4165 #define WMI_HOST_RTT_NO_REPORT_CFR 1 4166 #define WMI_HOST_RTT_AGGREGATE_REPORT_NON_CFR 2 4167 /** 4168 * struct rtt_meas_req_test_params 4169 * @peer: peer mac address 4170 * @req_frame_type: RTT request frame type 4171 * @req_bw: requested bandwidth 4172 * @req_preamble: Preamble 4173 * @req_num_req: num of requests 4174 * @req_report_type: report type 4175 * @num_measurements: number of measurements 4176 * @asap_mode: priority 4177 * @lci_requested: LCI requested 4178 * @loc_civ_requested: 4179 * @channel: channel param 4180 * @req_id: requested id 4181 */ 4182 struct rtt_meas_req_test_params { 4183 uint8_t peer[QDF_MAC_ADDR_SIZE]; 4184 int req_frame_type; 4185 int req_bw; 4186 int req_preamble; 4187 int req_num_req; 4188 int req_report_type; 4189 uint32_t num_measurements; 4190 uint32_t asap_mode; 4191 uint32_t lci_requested; 4192 uint32_t loc_civ_requested; 4193 struct channel_param channel; 4194 uint8_t req_id; 4195 }; 4196 4197 /** 4198 * struct peer_request_pn_param - PN request params 4199 * @vdev_id: vdev id 4200 * @keyix: key index 4201 * @peer_macaddr: Peer mac address 4202 * @key_type: key type 4203 */ 4204 struct peer_request_pn_param { 4205 uint32_t vdev_id; 4206 uint8_t keyix; 4207 uint8_t peer_macaddr[QDF_MAC_ADDR_SIZE]; 4208 uint32_t key_type; 4209 }; 4210 4211 /** 4212 * struct peer_request_rxpn_param - Rx PN request params 4213 * @vdev_id: vdev id 4214 * @peer_macaddr: Peer mac address 4215 * @keyix: key index 4216 */ 4217 struct peer_request_rxpn_param { 4218 uint32_t vdev_id; 4219 uint8_t peer_macaddr[QDF_MAC_ADDR_SIZE]; 4220 uint16_t keyix; 4221 }; 4222 4223 /** 4224 * struct rtt_meas_req_params - RTT measurement request params 4225 * @req_id: Request id 4226 * @vdev_id: vdev id 4227 * @is_mode_na: 11NA 4228 * @is_mode_ac: AC 4229 * @is_bw_20: 20 4230 * @is_bw_40: 40 4231 * @is_bw_80: 80 4232 * @sta_mac_addr: pointer to station mac address 4233 * @spoof_mac_addr: pointer to spoof mac address 4234 * @num_probe_rqst: number of probe request 4235 * @channel: channel param 4236 */ 4237 struct rtt_meas_req_params { 4238 uint8_t req_id; 4239 uint8_t vdev_id; 4240 bool is_mode_na; 4241 bool is_mode_ac; 4242 bool is_bw_20; 4243 bool is_bw_40; 4244 bool is_bw_80; 4245 uint8_t *sta_mac_addr; 4246 uint8_t *spoof_mac_addr; 4247 uint32_t num_probe_rqst; 4248 struct channel_param channel; 4249 }; 4250 4251 /** 4252 * struct lci_set_params - LCI params 4253 * @lci_data: pointer to LCI data 4254 * @latitude_unc: latitude 4255 * @latitude_0_1: bits 0 to 1 of latitude 4256 * @latitude_2_33: bits 2 to 33 of latitude 4257 * @longitude_unc: longitude 4258 * @longitude_0_1: bits 0 to 1 of longitude 4259 * @longitude_2_33: bits 2 to 33 of longitude 4260 * @altitude_type: altitude type 4261 * @altitude_unc_0_3: altitude bits 0 - 3 4262 * @altitude_unc_4_5: altitude bits 4 - 5 4263 * @altitude: altitude 4264 * @datum: dataum 4265 * @reg_loc_agmt: 4266 * @reg_loc_dse: 4267 * @dep_sta: 4268 * @version: version 4269 * @colocated_bss: 4270 * @msg_len: message length 4271 */ 4272 struct lci_set_params { 4273 void *lci_data; 4274 uint8_t latitude_unc:6, 4275 latitude_0_1:2; 4276 uint32_t latitude_2_33; 4277 uint8_t longitude_unc:6, 4278 longitude_0_1:2; 4279 uint32_t longitude_2_33; 4280 uint8_t altitude_type:4, 4281 altitude_unc_0_3:4; 4282 uint32_t altitude_unc_4_5:2, 4283 altitude:30; 4284 uint8_t datum:3, 4285 reg_loc_agmt:1, 4286 reg_loc_dse:1, 4287 dep_sta:1, 4288 version:2; 4289 uint8_t *colocated_bss; 4290 int msg_len; 4291 }; 4292 4293 /** 4294 * struct lcr_set_params - LCR params 4295 * @lcr_data: pointer to lcr data 4296 * @msg_len: message length 4297 */ 4298 struct lcr_set_params { 4299 void *lcr_data; 4300 int msg_len; 4301 }; 4302 4303 /** 4304 * struct rtt_keepalive_req_params - RTT keepalive params 4305 * @macaddr: pointer to macaddress 4306 * @req_id: Request id 4307 * @vdev_id: vdev id 4308 * @stop: start/stop 4309 */ 4310 struct rtt_keepalive_req_params { 4311 uint8_t *macaddr; 4312 uint8_t req_id; 4313 uint8_t vdev_id; 4314 bool stop; 4315 }; 4316 4317 /** 4318 * struct rx_reorder_queue_setup_params - Reorder queue setup params 4319 * @peer_macaddr: Peer mac address 4320 * @tid: TID 4321 * @vdev_id: vdev id 4322 * @hw_qdesc_paddr_lo: lower 32 bits of queue desc address 4323 * @hw_qdesc_paddr_hi: upper 32 bits of queue desc address 4324 * @queue_no: 16-bit number assigned by host for queue 4325 * @ba_window_size_valid: BA window size validity flag 4326 * @ba_window_size: BA window size 4327 */ 4328 struct rx_reorder_queue_setup_params { 4329 uint8_t *peer_macaddr; 4330 uint16_t tid; 4331 uint16_t vdev_id; 4332 uint32_t hw_qdesc_paddr_lo; 4333 uint32_t hw_qdesc_paddr_hi; 4334 uint16_t queue_no; 4335 uint8_t ba_window_size_valid; 4336 uint16_t ba_window_size; 4337 4338 }; 4339 4340 /** 4341 * struct rx_reorder_queue_remove_params - Reorder queue setup params 4342 * @peer_macaddr: Peer mac address 4343 * @vdev_id: vdev id 4344 * @peer_tid_bitmap: peer tid bitmap 4345 */ 4346 struct rx_reorder_queue_remove_params { 4347 uint8_t *peer_macaddr; 4348 uint16_t vdev_id; 4349 uint32_t peer_tid_bitmap; 4350 }; 4351 4352 /** 4353 * struct wmi_host_stats_event - Stats event params 4354 * @stats_id: stats id of type wmi_host_stats_event 4355 * @num_pdev_stats: number of pdev stats event structures 0 or 1 4356 * @num_pdev_ext_stats: number of pdev ext stats event structures 4357 * @num_vdev_stats: number of vdev stats 4358 * @num_peer_stats: number of peer stats event structures 0 or max peers 4359 * @num_peer_extd_stats: number of peer extended stats event structures 0 4360 * or max peers 4361 * @num_bcnflt_stats: number of beacon filter stats 4362 * @num_chan_stats: number of channel stats 4363 * @pdev_id: device id for the radio 4364 * @num_bcn_stats: number of beacon stats 4365 * @num_rssi_stats: number of rssi stats 4366 * @num_peer_adv_stats: number of peer adv stats 4367 * @num_mib_stats: number of mib stats 4368 * @num_mib_extd_stats: number of extended mib stats 4369 * @num_peer_stats_info_ext: number of peer extended stats info 4370 * @num_vdev_extd_stats: number of vdev extended stats info 4371 * @last_event: specify if the current event is the last event 4372 */ 4373 typedef struct { 4374 wmi_host_stats_id stats_id; 4375 uint32_t num_pdev_stats; 4376 uint32_t num_pdev_ext_stats; 4377 uint32_t num_vdev_stats; 4378 uint32_t num_peer_stats; 4379 uint32_t num_peer_extd_stats; 4380 uint32_t num_bcnflt_stats; 4381 uint32_t num_chan_stats; 4382 uint32_t pdev_id; 4383 uint32_t num_bcn_stats; 4384 uint32_t num_rssi_stats; 4385 uint32_t num_peer_adv_stats; 4386 uint32_t num_mib_stats; 4387 uint32_t num_mib_extd_stats; 4388 uint32_t num_peer_stats_info_ext; 4389 uint32_t num_vdev_extd_stats; 4390 uint32_t last_event; 4391 } wmi_host_stats_event; 4392 4393 /** 4394 * struct wmi_host_peer_extd_stats - peer extd stats event structure 4395 * @peer_macaddr: Peer mac address 4396 * @inactive_time: inactive time in secs 4397 * @peer_chain_rssi: peer rssi 4398 * @rx_duration: RX duration 4399 * @peer_tx_bytes: TX bytes 4400 * @last_tx_rate_code: Tx rate code of last frame 4401 * @last_tx_power: Tx power latest 4402 * @atf_tokens_allocated: atf tokens allocated 4403 * @atf_tokens_utilized: atf tokens utilized 4404 * @num_mu_tx_denylisted: Denylisted MU Tx count 4405 * @sgi_count: sgi count of the peer 4406 * @rx_mc_bc_cnt: Total number of received multicast & broadcast data frames 4407 * corresponding to this peer, 1 in the MSB of rx_mc_bc_cnt represents a 4408 * valid data 4409 * @rx_retry_cnt: Number of rx retries received from current station 4410 */ 4411 typedef struct { 4412 wmi_host_mac_addr peer_macaddr; 4413 uint32_t inactive_time; 4414 uint32_t peer_chain_rssi; 4415 uint32_t rx_duration; 4416 uint32_t peer_tx_bytes; 4417 uint32_t last_tx_rate_code; 4418 uint32_t last_tx_power; 4419 uint32_t atf_tokens_allocated; 4420 uint32_t atf_tokens_utilized; 4421 uint32_t num_mu_tx_denylisted; 4422 uint32_t sgi_count; 4423 uint32_t rx_mc_bc_cnt; 4424 uint32_t rx_retry_cnt; 4425 } wmi_host_peer_extd_stats; 4426 4427 /** 4428 * struct wmi_host_peer_adv_stats - peer adv stats event structure 4429 * @peer_macaddr: mac address 4430 * @fcs_count: fcs count 4431 * @rx_count: rx count 4432 * @rx_bytes: rx bytes 4433 */ 4434 struct wmi_host_peer_adv_stats { 4435 uint8_t peer_macaddr[QDF_MAC_ADDR_SIZE]; 4436 uint32_t fcs_count; 4437 uint32_t rx_count; 4438 uint64_t rx_bytes; 4439 }; 4440 4441 /** 4442 * struct wmi_host_pdev_ext_stats - peer ext stats structure 4443 * @rx_rssi_comb: RX rssi 4444 * @rx_rssi_chain0: RX rssi chain 0 4445 * @rx_rssi_chain1: RX rssi chain 1 4446 * @rx_rssi_chain2: RX rssi chain 2 4447 * @rx_rssi_chain3: RX rssi chain 3 4448 * @rx_mcs: RX MCS array 4449 * @tx_mcs: TX MCS array 4450 * @ack_rssi: Ack rssi 4451 * @my_rx_count: What portion of time, as measured by the MAC HW clock was 4452 * occupied by receiving PPDUs addressed to one of the vdevs 4453 * within this pdev. 4454 * @rx_matched_11ax_msdu_cnt: number of Rx 11ax MSDUs with matching BSS color 4455 * counter updated at EOP (end of packet) 4456 * @rx_other_11ax_msdu_cnt: number of Rx 11ax MSDUs with other BSS color counter 4457 * updated at EOP (end of packet) 4458 * @pdev_id: pdev id 4459 */ 4460 typedef struct { 4461 uint32_t rx_rssi_comb; 4462 uint32_t rx_rssi_chain0; 4463 uint32_t rx_rssi_chain1; 4464 uint32_t rx_rssi_chain2; 4465 uint32_t rx_rssi_chain3; 4466 uint32_t rx_mcs[10]; 4467 uint32_t tx_mcs[10]; 4468 uint32_t ack_rssi; 4469 uint32_t my_rx_count; 4470 uint32_t rx_matched_11ax_msdu_cnt; 4471 uint32_t rx_other_11ax_msdu_cnt; 4472 uint32_t pdev_id; 4473 } wmi_host_pdev_ext_stats; 4474 4475 /** 4476 * struct wmi_host_dbg_tx_stats - Debug stats 4477 * @comp_queued: Num HTT cookies queued to dispatch list 4478 * @comp_delivered: Num HTT cookies dispatched 4479 * @msdu_enqued: Num MSDU queued to WAL 4480 * @mpdu_enqued: Num MPDU queue to WAL 4481 * @wmm_drop: Num MSDUs dropped by WMM limit 4482 * @local_enqued: Num Local frames queued 4483 * @local_freed: Num Local frames done 4484 * @hw_queued: Num queued to HW 4485 * @hw_reaped: Num PPDU reaped from HW 4486 * @underrun: Num underruns 4487 * @hw_paused: HW Paused. 4488 * @tx_abort: Num PPDUs cleaned up in TX abort 4489 * @mpdus_requed: Num MPDUs requed by SW 4490 * @tx_ko: excessive retries 4491 * @tx_xretry: 4492 * @data_rc: data hw rate code 4493 * @self_triggers: Scheduler self triggers 4494 * @sw_retry_failure: frames dropped due to excessive sw retries 4495 * @illgl_rate_phy_err: illegal rate phy errors 4496 * @pdev_cont_xretry: wal pdev continuous xretry 4497 * @pdev_tx_timeout: wal pdev continuous xretry 4498 * @pdev_resets: wal pdev resets 4499 * @stateless_tid_alloc_failure: frames dropped due to non-availability of 4500 * stateless TIDs 4501 * @phy_underrun: PhY/BB underrun 4502 * @txop_ovf: MPDU is more than txop limit 4503 * @seq_posted: Number of Sequences posted 4504 * @seq_failed_queueing: Number of Sequences failed queueing 4505 * @seq_completed: Number of Sequences completed 4506 * @seq_restarted: Number of Sequences restarted 4507 * @mu_seq_posted: Number of MU Sequences posted 4508 * @mpdus_sw_flush: Num MPDUs flushed by SW, HWPAUSED, SW TXABORT 4509 * (Reset,channel change) 4510 * @mpdus_hw_filter: Num MPDUs filtered by HW, all filter condition 4511 * (TTL expired) 4512 * @mpdus_truncated: Num MPDUs truncated by PDG (TXOP, TBTT, 4513 * PPDU_duration based on rate, dyn_bw) 4514 * @mpdus_ack_failed: Num MPDUs that was tried but didn't receive ACK or BA 4515 * @mpdus_expired: Num MPDUs that was dropped du to expiry. 4516 * @mc_drop: Num mc drops 4517 */ 4518 typedef struct { 4519 int32_t comp_queued; 4520 int32_t comp_delivered; 4521 int32_t msdu_enqued; 4522 int32_t mpdu_enqued; 4523 int32_t wmm_drop; 4524 int32_t local_enqued; 4525 int32_t local_freed; 4526 int32_t hw_queued; 4527 int32_t hw_reaped; 4528 int32_t underrun; 4529 uint32_t hw_paused; 4530 int32_t tx_abort; 4531 int32_t mpdus_requed; 4532 uint32_t tx_ko; 4533 uint32_t tx_xretry; 4534 uint32_t data_rc; 4535 uint32_t self_triggers; 4536 uint32_t sw_retry_failure; 4537 uint32_t illgl_rate_phy_err; 4538 uint32_t pdev_cont_xretry; 4539 uint32_t pdev_tx_timeout; 4540 uint32_t pdev_resets; 4541 uint32_t stateless_tid_alloc_failure; 4542 uint32_t phy_underrun; 4543 uint32_t txop_ovf; 4544 uint32_t seq_posted; 4545 uint32_t seq_failed_queueing; 4546 uint32_t seq_completed; 4547 uint32_t seq_restarted; 4548 uint32_t mu_seq_posted; 4549 int32_t mpdus_sw_flush; 4550 int32_t mpdus_hw_filter; 4551 int32_t mpdus_truncated; 4552 int32_t mpdus_ack_failed; 4553 int32_t mpdus_expired; 4554 uint32_t mc_drop; 4555 } wmi_host_dbg_tx_stats; 4556 4557 /** 4558 * struct wmi_host_dbg_rx_stats - RX Debug stats 4559 * @mid_ppdu_route_change: Cnts any change in ring routing mid-ppdu 4560 * @status_rcvd: Total number of statuses processed 4561 * @r0_frags: Extra frags on rings 0 4562 * @r1_frags: Extra frags on rings 1 4563 * @r2_frags: Extra frags on rings 2 4564 * @r3_frags: Extra frags on rings 3 4565 * @htt_msdus: MSDUs delivered to HTT 4566 * @htt_mpdus: MPDUs delivered to HTT 4567 * @loc_msdus: MSDUs delivered to local stack 4568 * @loc_mpdus: MPDUS delivered to local stack 4569 * @oversize_amsdu: AMSDUs that have more MSDUs than the status ring size 4570 * @phy_errs: Number of PHY errors 4571 * @phy_err_drop: Number of PHY errors drops 4572 * @mpdu_errs: Number of mpdu errors - FCS, MIC, ENC etc. 4573 * @pdev_rx_timeout: Number of rx inactivity timeouts 4574 * @rx_ovfl_errs: Number of rx overflow errors. 4575 */ 4576 typedef struct { 4577 int32_t mid_ppdu_route_change; 4578 int32_t status_rcvd; 4579 int32_t r0_frags; 4580 int32_t r1_frags; 4581 int32_t r2_frags; 4582 int32_t r3_frags; 4583 int32_t htt_msdus; 4584 int32_t htt_mpdus; 4585 int32_t loc_msdus; 4586 int32_t loc_mpdus; 4587 int32_t oversize_amsdu; 4588 int32_t phy_errs; 4589 int32_t phy_err_drop; 4590 int32_t mpdu_errs; 4591 uint32_t pdev_rx_timeout; 4592 int32_t rx_ovfl_errs; 4593 } wmi_host_dbg_rx_stats; 4594 4595 /** struct wmi_host_dbg_mem_stats - memory stats 4596 * @iram_free_size: IRAM free size on target 4597 * @dram_free_size: DRAM free size on target 4598 * @sram_free_size: SRAM free size on target 4599 */ 4600 typedef struct { 4601 uint32_t iram_free_size; 4602 uint32_t dram_free_size; 4603 /* Only Non-TLV */ 4604 uint32_t sram_free_size; 4605 } wmi_host_dbg_mem_stats; 4606 4607 typedef struct { 4608 /* Only TLV */ 4609 int32_t dummy;/* REMOVE THIS ONCE REAL PEER STAT COUNTERS ARE ADDED */ 4610 } wmi_host_dbg_peer_stats; 4611 4612 /** 4613 * struct wmi_host_dbg_stats - host debug stats 4614 * @tx: TX stats of type wmi_host_dbg_tx_stats 4615 * @rx: RX stats of type wmi_host_dbg_rx_stats 4616 * @mem: Memory stats of type wmi_host_dbg_mem_stats 4617 * @peer: peer stats of type wmi_host_dbg_peer_stats 4618 */ 4619 typedef struct { 4620 wmi_host_dbg_tx_stats tx; 4621 wmi_host_dbg_rx_stats rx; 4622 wmi_host_dbg_mem_stats mem; 4623 wmi_host_dbg_peer_stats peer; 4624 } wmi_host_dbg_stats; 4625 4626 /** 4627 * struct wmi_host_pdev_stats - PDEV stats 4628 * @chan_nf: Channel noise floor 4629 * @tx_frame_count: TX frame count 4630 * @rx_frame_count: RX frame count 4631 * @rx_clear_count: rx clear count 4632 * @cycle_count: cycle count 4633 * @phy_err_count: Phy error count 4634 * @chan_tx_pwr: Channel Tx Power 4635 * @pdev_stats: WAL dbg stats 4636 * @ackRcvBad: 4637 * @rtsBad: 4638 * @rtsGood: 4639 * @fcsBad: 4640 * @noBeacons: 4641 * @mib_int_count: 4642 * @pdev_id: pdev id 4643 */ 4644 typedef struct { 4645 int32_t chan_nf; 4646 uint32_t tx_frame_count; 4647 uint32_t rx_frame_count; 4648 uint32_t rx_clear_count; 4649 uint32_t cycle_count; 4650 uint32_t phy_err_count; 4651 uint32_t chan_tx_pwr; 4652 wmi_host_dbg_stats pdev_stats; 4653 uint32_t ackRcvBad; 4654 uint32_t rtsBad; 4655 uint32_t rtsGood; 4656 uint32_t fcsBad; 4657 uint32_t noBeacons; 4658 uint32_t mib_int_count; 4659 uint32_t pdev_id; 4660 } wmi_host_pdev_stats; 4661 4662 /** 4663 * struct wmi_host_pmf_bcn_protect_stats - PMF bcn protect stats 4664 * @igtk_mic_fail_cnt: MIC failure count of management packets using IGTK 4665 * @igtk_replay_cnt: Replay detection count of management packets using IGTK 4666 * @bcn_mic_fail_cnt: MIC failure count of beacon packets using BIGTK 4667 * @bcn_replay_cnt: Replay detection count of beacon packets using BIGTK 4668 */ 4669 typedef struct { 4670 uint32_t igtk_mic_fail_cnt; 4671 uint32_t igtk_replay_cnt; 4672 uint32_t bcn_mic_fail_cnt; 4673 uint32_t bcn_replay_cnt; 4674 } wmi_host_pmf_bcn_protect_stats; 4675 4676 /** 4677 * struct wmi_unit_test_event - Structure corresponding to WMI Unit test event 4678 * @vdev_id: VDEV ID 4679 * @module_id: MODULE ID 4680 * @diag_token: Diag Token (the number that was generated in the unit-test cmd) 4681 * @flag: flag has 2 bits 0x1 indicates status, and 0x2 indicates done-bit 4682 * @payload_len: payload_len (blindly copied from payload_len field in WMI) 4683 * @buffer_len: actual number of data bytes in the variable data size TLV 4684 * buffer_len is likely to be the nearest multiple of 4 (from 4685 * payload_len). both buffer_len and payload_len need to be 4686 * passed to wifitool so that the driver can be agnostic 4687 * regarding these differences. 4688 * @buffer: data buffer 4689 */ 4690 typedef struct { 4691 uint32_t vdev_id; 4692 uint32_t module_id; 4693 uint32_t diag_token; 4694 uint32_t flag; 4695 uint32_t payload_len; 4696 uint32_t buffer_len; 4697 uint8_t buffer[1]; 4698 } wmi_unit_test_event; 4699 4700 4701 /** 4702 * struct wmi_host_snr_info - WMI host Signal to noise ration info 4703 * @bcn_snr: beacon SNR 4704 * @dat_snr: Data frames SNR 4705 */ 4706 typedef struct { 4707 int32_t bcn_snr; 4708 int32_t dat_snr; 4709 } wmi_host_snr_info; 4710 4711 #define WMI_HOST_MAX_TX_RATE_VALUES 10 /*Max Tx Rates */ 4712 #define WMI_HOST_MAX_RSSI_VALUES 10 /*Max Rssi values */ 4713 4714 /* The WMI_HOST_MAX_CHAINS macro cannot be changed without breaking WMI 4715 * compatibility. 4716 * The maximum value of number of chains 4717 */ 4718 #define WMI_HOST_MAX_CHAINS 8 4719 4720 /** 4721 * struct wmi_host_vdev_stats - vdev stats structure 4722 * @vdev_id: unique id identifying the VDEV, generated by the caller 4723 * Rest all Only TLV 4724 * @vdev_snr: wmi_host_snr_info 4725 * @tx_frm_cnt: Total number of packets(per AC) that were successfully 4726 * transmitted (with and without retries, 4727 * including multi-cast, broadcast) 4728 * @rx_frm_cnt: Total number of packets that were successfully received 4729 * (after appropriate filter rules including multi-cast, broadcast) 4730 * @multiple_retry_cnt: The number of MSDU packets and MMPDU frames per AC 4731 * that the 802.11 station successfully transmitted after 4732 * more than one retransmission attempt 4733 * @fail_cnt: Total number packets(per AC) failed to transmit 4734 * @rts_fail_cnt: Total number of RTS/CTS sequence failures for transmission 4735 * of a packet 4736 * @rts_succ_cnt: Total number of RTS/CTS sequence success for transmission 4737 * of a packet 4738 * @rx_err_cnt: The receive error count. HAL will provide the 4739 * RxP FCS error global 4740 * @rx_discard_cnt: The sum of the receive error count and 4741 * dropped-receive-buffer error count (FCS error) 4742 * @ack_fail_cnt: Total number packets failed transmit because of no 4743 * ACK from the remote entity 4744 * @tx_rate_history:History of last ten transmit rate, in units of 500 kbit/sec 4745 * @bcn_rssi_history: History of last ten Beacon rssi of the connected Bss 4746 */ 4747 typedef struct { 4748 uint32_t vdev_id; 4749 /* Rest all Only TLV */ 4750 wmi_host_snr_info vdev_snr; 4751 uint32_t tx_frm_cnt[WMI_HOST_WLAN_MAX_AC]; 4752 uint32_t rx_frm_cnt; 4753 uint32_t multiple_retry_cnt[WMI_HOST_WLAN_MAX_AC]; 4754 uint32_t fail_cnt[WMI_HOST_WLAN_MAX_AC]; 4755 uint32_t rts_fail_cnt; 4756 uint32_t rts_succ_cnt; 4757 uint32_t rx_err_cnt; 4758 uint32_t rx_discard_cnt; 4759 uint32_t ack_fail_cnt; 4760 uint32_t tx_rate_history[WMI_HOST_MAX_TX_RATE_VALUES]; 4761 uint32_t bcn_rssi_history[WMI_HOST_MAX_RSSI_VALUES]; 4762 } wmi_host_vdev_stats; 4763 4764 /** 4765 * struct wmi_host_bcn_stats - beacon stats structure 4766 * @vdev_id: unique id identifying the VDEV, generated by the caller 4767 * @tx_bcn_succ_cnt: Total number of beacon frame transmitted successfully 4768 * @tx_bcn_outage_cnt: Total number of failed beacons 4769 */ 4770 typedef struct { 4771 uint32_t vdev_id; 4772 uint32_t tx_bcn_succ_cnt; 4773 uint32_t tx_bcn_outage_cnt; 4774 } wmi_host_bcn_stats; 4775 4776 /** 4777 * struct wmi_host_vdev_extd_stats - VDEV extended stats 4778 * @vdev_id: unique id identifying the VDEV, generated by the caller 4779 * @ppdu_aggr_cnt: No of Aggrs Queued to HW 4780 * @ppdu_noack: No of PPDU's not Acked includes both aggr and nonaggr's 4781 * @mpdu_queued: No of MPDU/Subframes's queued to HW in Aggregates 4782 * @ppdu_nonaggr_cnt: No of NonAggr/MPDU/Subframes's queued to HW 4783 * in Legacy NonAggregates 4784 * @mpdu_sw_requed: No of MPDU/Subframes's SW requeued includes 4785 * both Aggr and NonAggr 4786 * @mpdu_suc_retry: No of MPDU/Subframes's transmitted Successfully 4787 * after Single/mul HW retry 4788 * @mpdu_suc_multitry: No of MPDU/Subframes's transmitted Success 4789 * after Multiple HW retry 4790 * @mpdu_fail_retry: No of MPDU/Subframes's failed transmission 4791 * after Multiple HW retry 4792 * @reserved: for future extensions set to 0x0 4793 */ 4794 typedef struct { 4795 uint32_t vdev_id; 4796 uint32_t ppdu_aggr_cnt; 4797 uint32_t ppdu_noack; 4798 uint32_t mpdu_queued; 4799 uint32_t ppdu_nonaggr_cnt; 4800 uint32_t mpdu_sw_requed; 4801 uint32_t mpdu_suc_retry; 4802 uint32_t mpdu_suc_multitry; 4803 uint32_t mpdu_fail_retry; 4804 uint32_t reserved[13]; 4805 } wmi_host_vdev_extd_stats; 4806 4807 /** 4808 * struct wmi_host_vdev_prb_fils_stats - VDEV probe response fils stats 4809 * @vdev_id: unique id identifying the VDEV, generated by the caller 4810 * @fd_succ_cnt: Total number of successfully transmitted Fils Discovery frames 4811 * @fd_fail_cnt: Toatl number of Fils discovery failed count 4812 * @unsolicited_prb_succ_cnt: Successful unsolicited probe response frames cnt 4813 * @unsolicited_prb_fail_cnt: Failed unsolictied probe response frames cnt 4814 * @is_mlo_vdev_active: is the mlo vdev currently active 4815 * @vdev_tx_power: Tx power for vdev 4816 */ 4817 struct wmi_host_vdev_prb_fils_stats { 4818 uint32_t vdev_id; 4819 uint32_t fd_succ_cnt; 4820 uint32_t fd_fail_cnt; 4821 uint32_t unsolicited_prb_succ_cnt; 4822 uint32_t unsolicited_prb_fail_cnt; 4823 bool is_mlo_vdev_active; 4824 uint32_t vdev_tx_power; 4825 }; 4826 4827 /** 4828 * struct wmi_host_vdev_nac_rssi_event - VDEV nac rssi stats 4829 * @vdev_id: unique id identifying the VDEV, generated by the caller 4830 * @last_rssi: rssi 4831 * @avg_rssi: averge rssi 4832 * @rssi_seq_num: rssi sequence number 4833 */ 4834 struct wmi_host_vdev_nac_rssi_event { 4835 uint32_t vdev_id; 4836 uint32_t last_rssi; 4837 uint32_t avg_rssi; 4838 uint32_t rssi_seq_num; 4839 }; 4840 4841 /** 4842 * struct wmi_host_peer_retry_stats - peer retry stats 4843 * @peer_macaddr: peer macaddr 4844 * @retry_counter_wraparnd_ind: wraparound counter indication 4845 * @msdus_success: successfully transmitted msdus 4846 * @msdus_retried: Retried msdus 4847 * @msdus_mul_retried: msdus retried for more than once 4848 * @msdus_failed: msdus failed 4849 * @reserved: for future extensions 4850 */ 4851 struct wmi_host_peer_retry_stats { 4852 wmi_host_mac_addr peer_macaddr; 4853 uint32_t retry_counter_wraparnd_ind; 4854 uint32_t msdus_success; 4855 uint32_t msdus_retried; 4856 uint32_t msdus_mul_retried; 4857 uint32_t msdus_failed; 4858 uint32_t reserved[4]; 4859 }; 4860 4861 /** 4862 * struct wmi_host_per_chain_rssi_stats - VDEV nac rssi stats 4863 * @vdev_id: unique id identifying the VDEV, generated by the caller 4864 * @rssi_avg_beacon: per chain avg rssi for beacon 4865 * @rssi_avg_data: per chain avg rssi for data 4866 * @peer_macaddr: peer macaddr 4867 */ 4868 struct wmi_host_per_chain_rssi_stats { 4869 uint32_t vdev_id; 4870 int32_t rssi_avg_beacon[WMI_HOST_MAX_CHAINS]; 4871 int32_t rssi_avg_data[WMI_HOST_MAX_CHAINS]; 4872 wmi_host_mac_addr peer_macaddr; 4873 }; 4874 4875 /** 4876 * struct wmi_host_peer_stats - peer stats 4877 * @peer_macaddr: peer MAC address 4878 * @peer_rssi: rssi 4879 * @peer_rssi_seq_num: rssi sequence number 4880 * @peer_tx_rate: last tx data rate used for peer 4881 * @peer_rx_rate: last rx data rate used for peer 4882 * @currentper: Current PER 4883 * @retries: Retries happened during transmission 4884 * @txratecount: Maximum Aggregation Size 4885 * @max4msframelen: Max4msframelen of tx rates used 4886 * @totalsubframes: Total no of subframes 4887 * @txbytes: No of bytes transmitted to the client 4888 * @nobuffs: Packet Loss due to buffer overflows 4889 * @excretries: Packet Loss due to excessive retries 4890 * @peer_rssi_changed: how many times peer's RSSI changed by a 4891 * non-negligible amount 4892 */ 4893 typedef struct { 4894 wmi_host_mac_addr peer_macaddr; 4895 int8_t peer_rssi; 4896 uint32_t peer_rssi_seq_num; 4897 uint32_t peer_tx_rate; 4898 uint32_t peer_rx_rate; 4899 uint32_t currentper; 4900 uint32_t retries; 4901 uint32_t txratecount; 4902 uint32_t max4msframelen; 4903 uint32_t totalsubframes; 4904 uint32_t txbytes; 4905 uint32_t nobuffs[4]; 4906 uint32_t excretries[4]; 4907 uint32_t peer_rssi_changed; 4908 } wmi_host_peer_stats; 4909 4910 typedef struct { 4911 uint32_t dummy; 4912 } wmi_host_bcnflt_stats; 4913 4914 /** 4915 * struct wmi_host_chan_stats - WMI chan stats 4916 * @chan_mhz: Primary channel freq of the channel for which stats are sent 4917 * @sampling_period_us: Time spent on the channel 4918 * @rx_clear_count: Aggregate duration over a sampling period for 4919 * which channel activity was observed 4920 * @tx_duration_us: Accumalation of the TX PPDU duration over a sampling period 4921 * @rx_duration_us: Accumalation of the RX PPDU duration over a sampling period 4922 */ 4923 typedef struct { 4924 uint32_t chan_mhz; 4925 uint32_t sampling_period_us; 4926 uint32_t rx_clear_count; 4927 uint32_t tx_duration_us; 4928 uint32_t rx_duration_us; 4929 } wmi_host_chan_stats; 4930 4931 #ifdef FEATURE_WLAN_TIME_SYNC_FTM 4932 4933 #define FTM_TIME_SYNC_QTIME_PAIR_MAX 32 4934 4935 /** 4936 * struct ftm_time_sync_start_stop_params - Get wlan time sync ftm info 4937 * @vdev_id: vdev id 4938 * @timer_interval: periodicity to trigger wlan time sync strobe 4939 * @num_reads: Number of times to trigger wlabn time sync strobe 4940 * @qtime: ref Qtimer value 4941 * @mac_time: ref Mac timer value 4942 */ 4943 struct ftm_time_sync_start_stop_params { 4944 uint32_t vdev_id; 4945 uint32_t timer_interval; 4946 uint32_t num_reads; 4947 uint64_t qtime; 4948 uint64_t mac_time; 4949 }; 4950 4951 /** 4952 * struct wlan_time_sync_qtime_pair- Get wlan time sync qtime pair value 4953 * @vdev_id: vdev id 4954 * @qtime_initiator: qtimer value of initiator 4955 * @qtime_target: qtimer value of target 4956 */ 4957 struct wlan_time_sync_qtime_pair { 4958 uint64_t qtime_initiator; 4959 uint64_t qtime_target; 4960 }; 4961 4962 /** 4963 * struct ftm_time_sync_offset- Get ftm time sync offset 4964 * @vdev_id: vdev id 4965 * @num_qtime: number of qtime values received 4966 * @pairs: array of qtime pairs 4967 */ 4968 struct ftm_time_sync_offset { 4969 uint32_t vdev_id; 4970 uint32_t num_qtime; 4971 struct wlan_time_sync_qtime_pair pairs[FTM_TIME_SYNC_QTIME_PAIR_MAX]; 4972 }; 4973 #endif 4974 4975 /** 4976 * struct wmi_host_tsf_event - Get tsf event info 4977 * @vdev_id: vdev id 4978 * @tsf: tsf 4979 * @tsf_low: low 32bit of tsf 4980 * @tsf_high: high 32 bit of tsf 4981 * @qtimer_low: low 32 bits of qtimer 4982 * @qtimer_high: high 32 bits of qtimer 4983 * @tsf_id: TSF ID for the current vdev 4984 * @tsf_id_valid: is TSF valid 4985 * @mac_id: MAC identifier 4986 * @mac_id_valid: is MAC id valid 4987 * @wlan_global_tsf_low: low 32 bits of wlan global tsf 4988 * @wlan_global_tsf_high: high 32 bits of wlan global tsf 4989 * @tqm_timer_low: 4990 * @tqm_timer_high: 4991 * @use_tqm_timer: 4992 */ 4993 struct wmi_host_tsf_event { 4994 uint32_t vdev_id; 4995 uint64_t tsf; 4996 uint32_t tsf_low; 4997 uint32_t tsf_high; 4998 uint32_t qtimer_low; 4999 uint32_t qtimer_high; 5000 uint32_t tsf_id; 5001 uint32_t tsf_id_valid; 5002 uint32_t mac_id; 5003 uint32_t mac_id_valid; 5004 uint32_t wlan_global_tsf_low; 5005 uint32_t wlan_global_tsf_high; 5006 uint32_t tqm_timer_low; 5007 uint32_t tqm_timer_high; 5008 uint32_t use_tqm_timer; 5009 }; 5010 5011 /** 5012 * struct wmi_host_pdev_telemetry_stats - pdev telemetry stats 5013 * @avg_chan_lat_per_ac: average channel latency 5014 * @estimated_air_time_per_ac: Percentage of air time available for each AC 5015 * BIT[0-7] : AC_BE 5016 * BIT[8-15] : AC_BK 5017 * BIT[16-23] : AC_VI 5018 * BIT[24-31] : AC_VO 5019 */ 5020 struct wmi_host_pdev_telemetry_stats { 5021 uint32_t avg_chan_lat_per_ac[WIFI_AC_MAX]; 5022 uint32_t estimated_air_time_per_ac; 5023 }; 5024 5025 #define WMI_EVENT_ID_INVALID 0 5026 /* 5027 * Host based ENUM IDs for events to abstract target enums for event_id 5028 */ 5029 typedef enum { 5030 wmi_service_ready_event_id = 0, 5031 wmi_ready_event_id, 5032 wmi_dbg_msg_event_id, 5033 wmi_scan_event_id, 5034 wmi_echo_event_id, 5035 wmi_update_stats_event_id, 5036 wmi_inst_rssi_stats_event_id, 5037 wmi_vdev_start_resp_event_id, 5038 wmi_vdev_standby_req_event_id, 5039 wmi_vdev_resume_req_event_id, 5040 wmi_vdev_stopped_event_id, 5041 wmi_peer_sta_kickout_event_id, 5042 wmi_host_swba_event_id, 5043 wmi_tbttoffset_update_event_id, 5044 wmi_mgmt_rx_event_id, 5045 wmi_chan_info_event_id, 5046 wmi_phyerr_event_id, 5047 wmi_roam_event_id, 5048 wmi_profile_match, 5049 wmi_debug_print_event_id, 5050 wmi_pdev_qvit_event_id, 5051 wmi_wlan_profile_data_event_id, 5052 wmi_rtt_meas_report_event_id, 5053 wmi_tsf_meas_report_event_id, 5054 wmi_rtt_error_report_event_id, 5055 wmi_rtt_keepalive_event_id, 5056 wmi_oem_cap_event_id, 5057 wmi_oem_meas_report_event_id, 5058 wmi_oem_report_event_id, 5059 wmi_nan_event_id, 5060 wmi_wow_wakeup_host_event_id, 5061 wmi_gtk_offload_status_event_id, 5062 wmi_gtk_rekey_fail_event_id, 5063 wmi_dcs_interference_event_id, 5064 wmi_pdev_tpc_config_event_id, 5065 wmi_csa_handling_event_id, 5066 wmi_gpio_input_event_id, 5067 wmi_peer_ratecode_list_event_id, 5068 wmi_generic_buffer_event_id, 5069 wmi_mcast_buf_release_event_id, 5070 wmi_mcast_list_ageout_event_id, 5071 wmi_vdev_get_keepalive_event_id, 5072 wmi_wds_peer_event_id, 5073 wmi_peer_sta_ps_statechg_event_id, 5074 wmi_pdev_fips_event_id, 5075 wmi_tt_stats_event_id, 5076 wmi_pdev_channel_hopping_event_id, 5077 wmi_pdev_ani_cck_level_event_id, 5078 wmi_pdev_ani_ofdm_level_event_id, 5079 wmi_pdev_reserve_ast_entry_event_id, 5080 wmi_pdev_nfcal_power_event_id, 5081 wmi_pdev_tpc_event_id, 5082 wmi_pdev_get_ast_info_event_id, 5083 wmi_pdev_temperature_event_id, 5084 wmi_pdev_nfcal_power_all_channels_event_id, 5085 wmi_pdev_bss_chan_info_event_id, 5086 wmi_mu_report_event_id, 5087 wmi_pdev_utf_event_id, 5088 wmi_pdev_dump_event_id, 5089 wmi_tx_pause_event_id, 5090 wmi_dfs_radar_event_id, 5091 wmi_pdev_l1ss_track_event_id, 5092 wmi_service_ready_ext_event_id, 5093 wmi_vdev_install_key_complete_event_id, 5094 wmi_vdev_mcc_bcn_intvl_change_req_event_id, 5095 wmi_vdev_tsf_report_event_id, 5096 wmi_peer_info_event_id, 5097 wmi_peer_tx_fail_cnt_thr_event_id, 5098 wmi_peer_estimated_linkspeed_event_id, 5099 wmi_peer_state_event_id, 5100 wmi_offload_bcn_tx_status_event_id, 5101 wmi_offload_prob_resp_tx_status_event_id, 5102 wmi_mgmt_tx_completion_event_id, 5103 wmi_tx_delba_complete_event_id, 5104 wmi_tx_addba_complete_event_id, 5105 wmi_ba_rsp_ssn_event_id, 5106 wmi_aggr_state_trig_event_id, 5107 wmi_roam_synch_event_id, 5108 wmi_roam_synch_frame_event_id, 5109 wmi_p2p_disc_event_id, 5110 wmi_p2p_noa_event_id, 5111 wmi_p2p_lo_stop_event_id, 5112 wmi_vdev_add_macaddr_rx_filter_event_id, 5113 wmi_pdev_resume_event_id, 5114 wmi_d0_wow_disable_ack_event_id, 5115 wmi_wow_initial_wakeup_event_id, 5116 wmi_stats_ext_event_id, 5117 wmi_iface_link_stats_event_id, 5118 wmi_peer_link_stats_event_id, 5119 wmi_radio_link_stats_link, 5120 wmi_update_fw_mem_dump_event_id, 5121 wmi_diag_event_id_log_supported_event_id, 5122 wmi_nlo_match_event_id, 5123 wmi_nlo_scan_complete_event_id, 5124 wmi_apfind_event_id, 5125 wmi_passpoint_match_event_id, 5126 wmi_chatter_pc_query_event_id, 5127 wmi_pdev_ftm_intg_event_id, 5128 wmi_wlan_freq_avoid_event_id, 5129 wmi_thermal_mgmt_event_id, 5130 wmi_diag_container_event_id, 5131 wmi_host_auto_shutdown_event_id, 5132 wmi_update_whal_mib_stats_event_id, 5133 wmi_update_vdev_rate_stats_event_id, 5134 wmi_diag_event_id, 5135 wmi_unit_test_event_id, 5136 wmi_ocb_set_sched_event_id, 5137 wmi_dbg_mesg_flush_complete_event_id, 5138 wmi_rssi_breach_event_id, 5139 wmi_uploadh_event_id, 5140 wmi_captureh_event_id, 5141 wmi_rfkill_state_change_event_id, 5142 wmi_tdls_peer_event_id, 5143 wmi_batch_scan_enabled_event_id, 5144 wmi_batch_scan_result_event_id, 5145 wmi_lpi_result_event_id, 5146 wmi_lpi_status_event_id, 5147 wmi_lpi_handoff_event_id, 5148 wmi_extscan_start_stop_event_id, 5149 wmi_extscan_operation_event_id, 5150 wmi_extscan_table_usage_event_id, 5151 wmi_extscan_cached_results_event_id, 5152 wmi_extscan_wlan_change_results_event_id, 5153 wmi_extscan_hotlist_match_event_id, 5154 wmi_extscan_capabilities_event_id, 5155 wmi_extscan_hotlist_ssid_match_event_id, 5156 wmi_mdns_stats_event_id, 5157 wmi_sap_ofl_add_sta_event_id, 5158 wmi_sap_ofl_del_sta_event_id, 5159 wmi_ocb_set_config_resp_event_id, 5160 wmi_ocb_get_tsf_timer_resp_event_id, 5161 wmi_dcc_get_stats_resp_event_id, 5162 wmi_dcc_update_ndl_resp_event_id, 5163 wmi_dcc_stats_event_id, 5164 wmi_soc_set_hw_mode_resp_event_id, 5165 wmi_soc_hw_mode_transition_event_id, 5166 wmi_soc_set_dual_mac_config_resp_event_id, 5167 wmi_tx_data_traffic_ctrl_event_id, 5168 wmi_peer_tx_mu_txmit_count_event_id, 5169 wmi_peer_gid_userpos_list_event_id, 5170 wmi_pdev_check_cal_version_event_id, 5171 wmi_atf_peer_stats_event_id, 5172 wmi_peer_delete_response_event_id, 5173 wmi_peer_delete_all_response_event_id, 5174 wmi_pdev_csa_switch_count_status_event_id, 5175 wmi_reg_chan_list_cc_event_id, 5176 wmi_reg_chan_list_cc_ext_event_id, 5177 #ifdef CONFIG_AFC_SUPPORT 5178 wmi_afc_event_id, 5179 #endif 5180 wmi_offchan_data_tx_completion_event, 5181 wmi_dfs_cac_complete_id, 5182 wmi_dfs_radar_detection_event_id, 5183 wmi_ext_tbttoffset_update_event_id, 5184 wmi_11d_new_country_event_id, 5185 wmi_get_arp_stats_req_id, 5186 wmi_service_available_event_id, 5187 wmi_update_rcpi_event_id, 5188 wmi_pdev_wds_entry_list_event_id, 5189 wmi_ndp_initiator_rsp_event_id, 5190 wmi_ndp_indication_event_id, 5191 wmi_ndp_confirm_event_id, 5192 wmi_ndp_responder_rsp_event_id, 5193 wmi_ndp_end_indication_event_id, 5194 wmi_ndp_end_rsp_event_id, 5195 wmi_nan_dmesg_event_id, 5196 wmi_ndl_schedule_update_event_id, 5197 wmi_ndp_event_id, 5198 wmi_oem_response_event_id, 5199 wmi_peer_stats_info_event_id, 5200 wmi_pdev_chip_power_stats_event_id, 5201 wmi_ap_ps_egap_info_event_id, 5202 wmi_peer_assoc_conf_event_id, 5203 wmi_vdev_delete_resp_event_id, 5204 wmi_apf_capability_info_event_id, 5205 wmi_vdev_encrypt_decrypt_data_rsp_event_id, 5206 wmi_report_rx_aggr_failure_event_id, 5207 wmi_pdev_chip_pwr_save_failure_detect_event_id, 5208 wmi_peer_antdiv_info_event_id, 5209 wmi_pdev_set_hw_mode_rsp_event_id, 5210 wmi_pdev_hw_mode_transition_event_id, 5211 wmi_pdev_set_mac_config_resp_event_id, 5212 wmi_coex_bt_activity_event_id, 5213 wmi_mgmt_tx_bundle_completion_event_id, 5214 wmi_radio_tx_power_level_stats_event_id, 5215 wmi_report_stats_event_id, 5216 wmi_dma_buf_release_event_id, 5217 wmi_sap_obss_detection_report_event_id, 5218 wmi_obss_color_collision_report_event_id, 5219 wmi_host_swfda_event_id, 5220 wmi_sar_get_limits_event_id, 5221 wmi_pdev_div_rssi_antid_event_id, 5222 #if defined(WLAN_DFS_PARTIAL_OFFLOAD) && defined(HOST_DFS_SPOOF_TEST) 5223 wmi_host_dfs_status_check_event_id, 5224 #endif 5225 #ifdef WLAN_SUPPORT_TWT 5226 wmi_twt_enable_complete_event_id, 5227 wmi_twt_disable_complete_event_id, 5228 wmi_twt_add_dialog_complete_event_id, 5229 wmi_twt_del_dialog_complete_event_id, 5230 wmi_twt_pause_dialog_complete_event_id, 5231 wmi_twt_resume_dialog_complete_event_id, 5232 wmi_twt_nudge_dialog_complete_event_id, 5233 wmi_twt_session_stats_event_id, 5234 wmi_twt_notify_event_id, 5235 wmi_twt_ack_complete_event_id, 5236 #endif 5237 wmi_apf_get_vdev_work_memory_resp_event_id, 5238 wmi_roam_scan_stats_event_id, 5239 wmi_vdev_ocac_complete_event_id, 5240 5241 #ifdef OL_ATH_SMART_LOGGING 5242 wmi_debug_fatal_condition_eventid, 5243 #endif /* OL_ATH_SMART_LOGGING */ 5244 wmi_wlan_sar2_result_event_id, 5245 wmi_esp_estimate_event_id, 5246 wmi_pdev_ctl_failsafe_check_event_id, 5247 wmi_vdev_bcn_reception_stats_event_id, 5248 wmi_roam_denylist_event_id, 5249 wmi_wlm_stats_event_id, 5250 wmi_peer_cfr_capture_event_id, 5251 wmi_pdev_cold_boot_cal_event_id, 5252 wmi_vdev_get_mws_coex_state_eventid, 5253 wmi_vdev_get_mws_coex_dpwb_state_eventid, 5254 wmi_vdev_get_mws_coex_tdm_state_eventid, 5255 wmi_vdev_get_mws_coex_idrx_state_eventid, 5256 wmi_vdev_get_mws_coex_antenna_sharing_state_eventid, 5257 #ifdef WLAN_FEATURE_INTEROP_ISSUES_AP 5258 wmi_pdev_interop_issues_ap_event_id, 5259 #endif 5260 wmi_coex_report_antenna_isolation_event_id, 5261 wmi_chan_rf_characterization_info_event_id, 5262 wmi_roam_auth_offload_event_id, 5263 wmi_service_ready_ext2_event_id, 5264 wmi_get_elna_bypass_event_id, 5265 wmi_motion_det_host_eventid, 5266 wmi_motion_det_base_line_host_eventid, 5267 wmi_get_ani_level_event_id, 5268 wmi_peer_tx_pn_response_event_id, 5269 wmi_roam_stats_event_id, 5270 wmi_oem_data_event_id, 5271 wmi_mgmt_offload_data_event_id, 5272 wmi_pdev_multi_vdev_restart_response_event_id, 5273 wmi_roam_pmkid_request_event_id, 5274 #ifdef FEATURE_WLAN_TIME_SYNC_FTM 5275 wmi_wlan_time_sync_ftm_start_stop_event_id, 5276 wmi_wlan_time_sync_q_initiator_target_offset_eventid, 5277 #endif 5278 wmi_roam_scan_chan_list_id, 5279 wmi_muedca_params_config_eventid, 5280 wmi_pdev_sscan_fw_param_eventid, 5281 wmi_roam_cap_report_event_id, 5282 wmi_vdev_bcn_latency_event_id, 5283 wmi_vdev_disconnect_event_id, 5284 wmi_peer_create_conf_event_id, 5285 wmi_pdev_cp_fwstats_eventid, 5286 wmi_pdev_halphy_fwstats_eventid, 5287 wmi_vdev_send_big_data_p2_eventid, 5288 wmi_pdev_get_dpd_status_event_id, 5289 #ifdef WLAN_FEATURE_PKT_CAPTURE_V2 5290 wmi_vdev_smart_monitor_event_id, 5291 #endif 5292 wmi_pdev_get_halphy_cal_status_event_id, 5293 wmi_pdev_set_halphy_cal_event_id, 5294 wmi_pdev_aoa_phasedelta_event_id, 5295 #ifdef WLAN_MGMT_RX_REO_SUPPORT 5296 wmi_mgmt_rx_fw_consumed_eventid, 5297 #endif 5298 #ifdef WLAN_FEATURE_11BE_MLO 5299 wmi_mlo_setup_complete_event_id, 5300 wmi_mlo_teardown_complete_event_id, 5301 wmi_mlo_link_set_active_resp_eventid, 5302 wmi_mlo_link_removal_eventid, 5303 wmi_mlo_link_disable_request_eventid, 5304 #ifdef WLAN_FEATURE_11BE_MLO_ADV_FEATURE 5305 wmi_mlo_link_switch_request_eventid, 5306 wmi_mlo_link_state_switch_eventid, 5307 #endif 5308 #endif 5309 wmi_pdev_fips_extend_event_id, 5310 wmi_roam_frame_event_id, 5311 #ifdef WLAN_FEATURE_DYNAMIC_MAC_ADDR_UPDATE 5312 wmi_vdev_update_mac_addr_conf_eventid, 5313 #endif 5314 #ifdef WLAN_FEATURE_11BE_MLO 5315 wmi_vdev_quiet_offload_eventid, 5316 #endif 5317 #ifdef WLAN_FEATURE_MCC_QUOTA 5318 wmi_resmgr_chan_time_quota_changed_eventid, 5319 #endif 5320 wmi_peer_rx_pn_response_event_id, 5321 wmi_extract_pktlog_decode_info_eventid, 5322 #ifdef QCA_RSSI_DB2DBM 5323 wmi_pdev_rssi_dbm_conversion_params_info_eventid, 5324 #endif 5325 #ifdef MULTI_CLIENT_LL_SUPPORT 5326 wmi_vdev_latency_event_id, 5327 #endif 5328 #if defined(WIFI_POS_CONVERGED) && defined(WLAN_FEATURE_RTT_11AZ_SUPPORT) 5329 wmi_rtt_pasn_peer_create_req_eventid, 5330 wmi_rtt_pasn_peer_delete_eventid, 5331 #endif 5332 #ifdef WLAN_VENDOR_HANDOFF_CONTROL 5333 wmi_get_roam_vendor_control_param_event_id, 5334 #endif 5335 #ifdef WLAN_FEATURE_DBAM_CONFIG 5336 wmi_coex_dbam_complete_event_id, 5337 #endif 5338 wmi_spectral_capabilities_eventid, 5339 #ifdef WLAN_FEATURE_COAP 5340 wmi_wow_coap_buf_info_eventid, 5341 #endif 5342 #ifdef HEALTH_MON_SUPPORT 5343 wmi_extract_health_mon_init_done_info_eventid, 5344 #endif /* HEALTH_MON_SUPPORT */ 5345 #ifdef WLAN_FEATURE_11BE_MLO 5346 wmi_mlo_ap_vdev_tid_to_link_map_eventid, 5347 #endif 5348 #ifdef WLAN_SUPPORT_GAP_LL_PS_MODE 5349 wmi_xgap_enable_complete_eventid, 5350 #endif 5351 wmi_pdev_set_tgtr2p_table_eventid, 5352 #ifdef QCA_MANUAL_TRIGGERED_ULOFDMA 5353 wmi_manual_ul_ofdma_trig_feedback_eventid, 5354 wmi_manual_ul_ofdma_trig_rx_peer_userinfo_eventid, 5355 #endif 5356 #ifdef QCA_STANDALONE_SOUNDING_TRIGGER 5357 wmi_vdev_standalone_sound_complete_eventid, 5358 #endif 5359 wmi_csa_ie_received_event_id, 5360 #ifdef WLAN_FEATURE_11BE_MLO 5361 wmi_mlo_link_state_info_eventid, 5362 #endif 5363 #if defined(WLAN_FEATURE_ROAM_OFFLOAD) && defined(WLAN_FEATURE_11BE_MLO) 5364 wmi_roam_synch_key_event_id, 5365 #endif 5366 #ifdef QCA_SUPPORT_PRIMARY_LINK_MIGRATE 5367 wmi_peer_ptqm_migration_response_eventid, 5368 #endif 5369 wmi_pdev_set_rf_path_resp_eventid, 5370 #ifdef WLAN_RCC_ENHANCED_AOA_SUPPORT 5371 wmi_pdev_enhanced_aoa_phasedelta_eventid, 5372 #endif 5373 wmi_peer_oper_mode_change_event_id, 5374 wmi_events_max, 5375 } wmi_conv_event_id; 5376 5377 #define WMI_UNAVAILABLE_PARAM 0 5378 5379 #ifdef ENABLE_HOST_TO_TARGET_CONVERSION 5380 #define PDEV_PARAM(host_param, target_param) wmi_ ## host_param 5381 #else 5382 #define PDEV_PARAM(host_param, target_param) wmi_ ## host_param = WMI_ ## target_param 5383 #endif 5384 5385 /* Host based ENUM IDs for PDEV params to abstract target enums */ 5386 typedef enum { 5387 PDEV_PARAM(pdev_param_rx_chain_mask, PDEV_PARAM_RX_CHAIN_MASK), 5388 PDEV_PARAM(pdev_param_txpower_limit2g, PDEV_PARAM_TXPOWER_LIMIT2G), 5389 PDEV_PARAM(pdev_param_txpower_limit5g, PDEV_PARAM_TXPOWER_LIMIT5G), 5390 PDEV_PARAM(pdev_param_txpower_scale, PDEV_PARAM_TXPOWER_SCALE), 5391 PDEV_PARAM(pdev_param_beacon_gen_mode, PDEV_PARAM_BEACON_GEN_MODE), 5392 PDEV_PARAM(pdev_param_beacon_tx_mode, PDEV_PARAM_BEACON_TX_MODE), 5393 PDEV_PARAM(pdev_param_resmgr_offchan_mode, 5394 PDEV_PARAM_RESMGR_OFFCHAN_MODE), 5395 PDEV_PARAM(pdev_param_protection_mode, PDEV_PARAM_PROTECTION_MODE), 5396 PDEV_PARAM(pdev_param_dynamic_bw, PDEV_PARAM_DYNAMIC_BW), 5397 PDEV_PARAM(pdev_param_non_agg_sw_retry_th, 5398 PDEV_PARAM_NON_AGG_SW_RETRY_TH), 5399 PDEV_PARAM(pdev_param_agg_sw_retry_th, PDEV_PARAM_AGG_SW_RETRY_TH), 5400 PDEV_PARAM(pdev_param_sta_kickout_th, PDEV_PARAM_STA_KICKOUT_TH), 5401 PDEV_PARAM(pdev_param_ac_aggrsize_scaling, 5402 PDEV_PARAM_AC_AGGRSIZE_SCALING), 5403 PDEV_PARAM(pdev_param_ltr_enable, PDEV_PARAM_LTR_ENABLE), 5404 PDEV_PARAM(pdev_param_ltr_ac_latency_be, PDEV_PARAM_LTR_AC_LATENCY_BE), 5405 PDEV_PARAM(pdev_param_ltr_ac_latency_bk, PDEV_PARAM_LTR_AC_LATENCY_BK), 5406 PDEV_PARAM(pdev_param_tx_chain_mask, PDEV_PARAM_TX_CHAIN_MASK), 5407 PDEV_PARAM(pdev_param_ltr_ac_latency_vi, PDEV_PARAM_LTR_AC_LATENCY_VI), 5408 PDEV_PARAM(pdev_param_ltr_ac_latency_vo, PDEV_PARAM_LTR_AC_LATENCY_VO), 5409 PDEV_PARAM(pdev_param_ltr_ac_latency_timeout, 5410 PDEV_PARAM_LTR_AC_LATENCY_TIMEOUT), 5411 PDEV_PARAM(pdev_param_ltr_sleep_override, 5412 PDEV_PARAM_LTR_SLEEP_OVERRIDE), 5413 PDEV_PARAM(pdev_param_ltr_rx_override, PDEV_PARAM_LTR_RX_OVERRIDE), 5414 PDEV_PARAM(pdev_param_ltr_tx_activity_timeout, 5415 PDEV_PARAM_LTR_TX_ACTIVITY_TIMEOUT), 5416 PDEV_PARAM(pdev_param_l1ss_enable, PDEV_PARAM_L1SS_ENABLE), 5417 PDEV_PARAM(pdev_param_dsleep_enable, PDEV_PARAM_DSLEEP_ENABLE), 5418 PDEV_PARAM(pdev_param_pcielp_txbuf_flush, 5419 PDEV_PARAM_PCIELP_TXBUF_FLUSH), 5420 PDEV_PARAM(pdev_param_pcielp_txbuf_watermark, 5421 PDEV_PARAM_PCIELP_TXBUF_WATERMARK), 5422 PDEV_PARAM(pdev_param_pcielp_txbuf_tmo_en, 5423 PDEV_PARAM_PCIELP_TXBUF_TMO_EN), 5424 PDEV_PARAM(pdev_param_pcielp_txbuf_tmo_value, 5425 PDEV_PARAM_PCIELP_TXBUF_TMO_VALUE), 5426 PDEV_PARAM(pdev_param_pdev_stats_update_period, 5427 PDEV_PARAM_PDEV_STATS_UPDATE_PERIOD), 5428 PDEV_PARAM(pdev_param_vdev_stats_update_period, 5429 PDEV_PARAM_VDEV_STATS_UPDATE_PERIOD), 5430 PDEV_PARAM(pdev_param_peer_stats_update_period, 5431 PDEV_PARAM_PEER_STATS_UPDATE_PERIOD), 5432 PDEV_PARAM(pdev_param_bcnflt_stats_update_period, 5433 PDEV_PARAM_BCNFLT_STATS_UPDATE_PERIOD), 5434 PDEV_PARAM(pdev_param_pmf_qos, PDEV_PARAM_PMF_QOS), 5435 PDEV_PARAM(pdev_param_arp_ac_override, PDEV_PARAM_ARP_AC_OVERRIDE), 5436 PDEV_PARAM(pdev_param_dcs, PDEV_PARAM_DCS), 5437 PDEV_PARAM(pdev_param_ani_enable, PDEV_PARAM_ANI_ENABLE), 5438 PDEV_PARAM(pdev_param_ani_poll_period, PDEV_PARAM_ANI_POLL_PERIOD), 5439 PDEV_PARAM(pdev_param_ani_listen_period, PDEV_PARAM_ANI_LISTEN_PERIOD), 5440 PDEV_PARAM(pdev_param_ani_ofdm_level, PDEV_PARAM_ANI_OFDM_LEVEL), 5441 PDEV_PARAM(pdev_param_ani_cck_level, PDEV_PARAM_ANI_CCK_LEVEL), 5442 PDEV_PARAM(pdev_param_dyntxchain, PDEV_PARAM_DYNTXCHAIN), 5443 PDEV_PARAM(pdev_param_proxy_sta, PDEV_PARAM_PROXY_STA), 5444 PDEV_PARAM(pdev_param_idle_ps_config, PDEV_PARAM_IDLE_PS_CONFIG), 5445 PDEV_PARAM(pdev_param_power_gating_sleep, 5446 PDEV_PARAM_POWER_GATING_SLEEP), 5447 PDEV_PARAM(pdev_param_rfkill_enable, PDEV_PARAM_RFKILL_ENABLE), 5448 PDEV_PARAM(pdev_param_burst_dur, PDEV_PARAM_BURST_DUR), 5449 PDEV_PARAM(pdev_param_burst_enable, PDEV_PARAM_BURST_ENABLE), 5450 PDEV_PARAM(pdev_param_hw_rfkill_config, PDEV_PARAM_HW_RFKILL_CONFIG), 5451 PDEV_PARAM(pdev_param_low_power_rf_enable, 5452 PDEV_PARAM_LOW_POWER_RF_ENABLE), 5453 PDEV_PARAM(pdev_param_l1ss_track, PDEV_PARAM_L1SS_TRACK), 5454 PDEV_PARAM(pdev_param_hyst_en, PDEV_PARAM_HYST_EN), 5455 PDEV_PARAM(pdev_param_power_collapse_enable, 5456 PDEV_PARAM_POWER_COLLAPSE_ENABLE), 5457 PDEV_PARAM(pdev_param_led_sys_state, PDEV_PARAM_LED_SYS_STATE), 5458 PDEV_PARAM(pdev_param_led_enable, PDEV_PARAM_LED_ENABLE), 5459 PDEV_PARAM(pdev_param_audio_over_wlan_latency, 5460 PDEV_PARAM_AUDIO_OVER_WLAN_LATENCY), 5461 PDEV_PARAM(pdev_param_audio_over_wlan_enable, 5462 PDEV_PARAM_AUDIO_OVER_WLAN_ENABLE), 5463 PDEV_PARAM(pdev_param_whal_mib_stats_update_enable, 5464 PDEV_PARAM_WHAL_MIB_STATS_UPDATE_ENABLE), 5465 PDEV_PARAM(pdev_param_vdev_rate_stats_update_period, 5466 PDEV_PARAM_VDEV_RATE_STATS_UPDATE_PERIOD), 5467 PDEV_PARAM(pdev_param_cts_cbw, PDEV_PARAM_CTS_CBW), 5468 PDEV_PARAM(pdev_param_wnts_config, PDEV_PARAM_WNTS_CONFIG), 5469 PDEV_PARAM(pdev_param_adaptive_early_rx_enable, 5470 PDEV_PARAM_ADAPTIVE_EARLY_RX_ENABLE), 5471 PDEV_PARAM(pdev_param_adaptive_early_rx_min_sleep_slop, 5472 PDEV_PARAM_ADAPTIVE_EARLY_RX_MIN_SLEEP_SLOP), 5473 PDEV_PARAM(pdev_param_adaptive_early_rx_inc_dec_step, 5474 PDEV_PARAM_ADAPTIVE_EARLY_RX_INC_DEC_STEP), 5475 PDEV_PARAM(pdev_param_early_rx_fix_sleep_slop, 5476 PDEV_PARAM_EARLY_RX_FIX_SLEEP_SLOP), 5477 PDEV_PARAM(pdev_param_bmiss_based_adaptive_bto_enable, 5478 PDEV_PARAM_BMISS_BASED_ADAPTIVE_BTO_ENABLE), 5479 PDEV_PARAM(pdev_param_bmiss_bto_min_bcn_timeout, 5480 PDEV_PARAM_BMISS_BTO_MIN_BCN_TIMEOUT), 5481 PDEV_PARAM(pdev_param_bmiss_bto_inc_dec_step, 5482 PDEV_PARAM_BMISS_BTO_INC_DEC_STEP), 5483 PDEV_PARAM(pdev_param_bto_fix_bcn_timeout, 5484 PDEV_PARAM_BTO_FIX_BCN_TIMEOUT), 5485 PDEV_PARAM(pdev_param_ce_based_adaptive_bto_enable, 5486 PDEV_PARAM_CE_BASED_ADAPTIVE_BTO_ENABLE), 5487 PDEV_PARAM(pdev_param_ce_bto_combo_ce_value, 5488 PDEV_PARAM_CE_BTO_COMBO_CE_VALUE), 5489 PDEV_PARAM(pdev_param_tx_chain_mask_2g, PDEV_PARAM_TX_CHAIN_MASK_2G), 5490 PDEV_PARAM(pdev_param_rx_chain_mask_2g, PDEV_PARAM_RX_CHAIN_MASK_2G), 5491 PDEV_PARAM(pdev_param_tx_chain_mask_5g, PDEV_PARAM_TX_CHAIN_MASK_5G), 5492 PDEV_PARAM(pdev_param_rx_chain_mask_5g, PDEV_PARAM_RX_CHAIN_MASK_5G), 5493 PDEV_PARAM(pdev_param_tx_chain_mask_cck, PDEV_PARAM_TX_CHAIN_MASK_CCK), 5494 PDEV_PARAM(pdev_param_tx_chain_mask_1ss, PDEV_PARAM_TX_CHAIN_MASK_1SS), 5495 PDEV_PARAM(pdev_param_cts2self_for_p2p_go_config, 5496 PDEV_PARAM_CTS2SELF_FOR_P2P_GO_CONFIG), 5497 PDEV_PARAM(pdev_param_txpower_decr_db, PDEV_PARAM_TXPOWER_DECR_DB), 5498 PDEV_PARAM(pdev_param_aggr_burst, PDEV_PARAM_AGGR_BURST), 5499 PDEV_PARAM(pdev_param_rx_decap_mode, PDEV_PARAM_RX_DECAP_MODE), 5500 PDEV_PARAM(pdev_param_fast_channel_reset, 5501 PDEV_PARAM_FAST_CHANNEL_RESET), 5502 PDEV_PARAM(pdev_param_smart_antenna_default_antenna, 5503 PDEV_PARAM_SMART_ANTENNA_DEFAULT_ANTENNA), 5504 PDEV_PARAM(pdev_param_antenna_gain, PDEV_PARAM_ANTENNA_GAIN), 5505 PDEV_PARAM(pdev_param_rx_filter, PDEV_PARAM_RX_FILTER), 5506 PDEV_PARAM(pdev_set_mcast_to_ucast_tid, PDEV_SET_MCAST_TO_UCAST_TID), 5507 PDEV_PARAM(pdev_param_proxy_sta_mode, PDEV_PARAM_PROXY_STA_MODE), 5508 PDEV_PARAM(pdev_param_set_mcast2ucast_mode, 5509 PDEV_PARAM_SET_MCAST2UCAST_MODE), 5510 PDEV_PARAM(pdev_param_set_mcast2ucast_buffer, 5511 PDEV_PARAM_SET_MCAST2UCAST_BUFFER), 5512 PDEV_PARAM(pdev_param_remove_mcast2ucast_buffer, 5513 PDEV_PARAM_REMOVE_MCAST2UCAST_BUFFER), 5514 PDEV_PARAM(pdev_peer_sta_ps_statechg_enable, 5515 PDEV_PEER_STA_PS_STATECHG_ENABLE), 5516 PDEV_PARAM(pdev_param_igmpmld_override, PDEV_PARAM_IGMPMLD_AC_OVERRIDE), 5517 PDEV_PARAM(pdev_param_block_interbss, PDEV_PARAM_BLOCK_INTERBSS), 5518 PDEV_PARAM(pdev_param_set_disable_reset_cmdid, 5519 PDEV_PARAM_SET_DISABLE_RESET_CMDID), 5520 PDEV_PARAM(pdev_param_set_msdu_ttl_cmdid, 5521 PDEV_PARAM_SET_MSDU_TTL_CMDID), 5522 PDEV_PARAM(pdev_param_set_ppdu_duration_cmdid, 5523 PDEV_PARAM_SET_PPDU_DURATION_CMDID), 5524 PDEV_PARAM(pdev_param_txbf_sound_period_cmdid, 5525 PDEV_PARAM_TXBF_SOUND_PERIOD_CMDID), 5526 PDEV_PARAM(pdev_param_set_promisc_mode_cmdid, 5527 PDEV_PARAM_SET_PROMISC_MODE_CMDID), 5528 PDEV_PARAM(pdev_param_set_burst_mode_cmdid, 5529 PDEV_PARAM_SET_BURST_MODE_CMDID), 5530 PDEV_PARAM(pdev_param_en_stats, PDEV_PARAM_EN_STATS), 5531 PDEV_PARAM(pdev_param_mu_group_policy, PDEV_PARAM_MU_GROUP_POLICY), 5532 PDEV_PARAM(pdev_param_noise_detection, PDEV_PARAM_NOISE_DETECTION), 5533 PDEV_PARAM(pdev_param_noise_threshold, PDEV_PARAM_NOISE_THRESHOLD), 5534 PDEV_PARAM(pdev_param_dpd_enable, PDEV_PARAM_DPD_ENABLE), 5535 PDEV_PARAM(pdev_param_set_mcast_bcast_echo, 5536 PDEV_PARAM_SET_MCAST_BCAST_ECHO), 5537 PDEV_PARAM(pdev_param_atf_strict_sch, PDEV_PARAM_ATF_STRICT_SCH), 5538 PDEV_PARAM(pdev_param_atf_sched_duration, 5539 PDEV_PARAM_ATF_SCHED_DURATION), 5540 PDEV_PARAM(pdev_param_ant_plzn, PDEV_PARAM_ANT_PLZN), 5541 PDEV_PARAM(pdev_param_mgmt_retry_limit, PDEV_PARAM_MGMT_RETRY_LIMIT), 5542 PDEV_PARAM(pdev_param_sensitivity_level, PDEV_PARAM_SENSITIVITY_LEVEL), 5543 PDEV_PARAM(pdev_param_signed_txpower_2g, PDEV_PARAM_SIGNED_TXPOWER_2G), 5544 PDEV_PARAM(pdev_param_signed_txpower_5g, PDEV_PARAM_SIGNED_TXPOWER_5G), 5545 PDEV_PARAM(pdev_param_enable_per_tid_amsdu, 5546 PDEV_PARAM_ENABLE_PER_TID_AMSDU), 5547 PDEV_PARAM(pdev_param_enable_per_tid_ampdu, 5548 PDEV_PARAM_ENABLE_PER_TID_AMPDU), 5549 PDEV_PARAM(pdev_param_cca_threshold, PDEV_PARAM_CCA_THRESHOLD), 5550 PDEV_PARAM(pdev_param_rts_fixed_rate, PDEV_PARAM_RTS_FIXED_RATE), 5551 PDEV_PARAM(pdev_param_pdev_reset, PDEV_PARAM_PDEV_RESET), 5552 PDEV_PARAM(pdev_param_wapi_mbssid_offset, 5553 PDEV_PARAM_WAPI_MBSSID_OFFSET), 5554 PDEV_PARAM(pdev_param_arp_srcaddr, PDEV_PARAM_ARP_DBG_SRCADDR), 5555 PDEV_PARAM(pdev_param_arp_dstaddr, PDEV_PARAM_ARP_DBG_DSTADDR), 5556 PDEV_PARAM(pdev_param_atf_obss_noise_sch, 5557 PDEV_PARAM_ATF_OBSS_NOISE_SCH), 5558 PDEV_PARAM(pdev_param_atf_obss_noise_scaling_factor, 5559 PDEV_PARAM_ATF_OBSS_NOISE_SCALING_FACTOR), 5560 PDEV_PARAM(pdev_param_cust_txpower_scale, 5561 PDEV_PARAM_CUST_TXPOWER_SCALE), 5562 PDEV_PARAM(pdev_param_atf_dynamic_enable, 5563 PDEV_PARAM_ATF_DYNAMIC_ENABLE), 5564 PDEV_PARAM(pdev_param_ctrl_retry_limit, PDEV_PARAM_CTRL_RETRY_LIMIT), 5565 PDEV_PARAM(pdev_param_propagation_delay, PDEV_PARAM_PROPAGATION_DELAY), 5566 PDEV_PARAM(pdev_param_ena_ant_div, PDEV_PARAM_ENA_ANT_DIV), 5567 PDEV_PARAM(pdev_param_force_chain_ant, PDEV_PARAM_FORCE_CHAIN_ANT), 5568 PDEV_PARAM(pdev_param_ant_div_selftest, PDEV_PARAM_ANT_DIV_SELFTEST), 5569 PDEV_PARAM(pdev_param_ant_div_selftest_intvl, 5570 PDEV_PARAM_ANT_DIV_SELFTEST_INTVL), 5571 PDEV_PARAM(pdev_param_stats_observation_period, 5572 PDEV_PARAM_STATS_OBSERVATION_PERIOD), 5573 PDEV_PARAM(pdev_param_tx_ppdu_delay_bin_size_ms, 5574 PDEV_PARAM_TX_PPDU_DELAY_BIN_SIZE_MS), 5575 PDEV_PARAM(pdev_param_tx_ppdu_delay_array_len, 5576 PDEV_PARAM_TX_PPDU_DELAY_ARRAY_LEN), 5577 PDEV_PARAM(pdev_param_tx_mpdu_aggr_array_len, 5578 PDEV_PARAM_TX_MPDU_AGGR_ARRAY_LEN), 5579 PDEV_PARAM(pdev_param_rx_mpdu_aggr_array_len, 5580 PDEV_PARAM_RX_MPDU_AGGR_ARRAY_LEN), 5581 PDEV_PARAM(pdev_param_tx_sch_delay, PDEV_PARAM_TX_SCH_DELAY), 5582 PDEV_PARAM(pdev_param_enable_rts_sifs_bursting, 5583 PDEV_PARAM_ENABLE_RTS_SIFS_BURSTING), 5584 PDEV_PARAM(pdev_param_max_mpdus_in_ampdu, 5585 PDEV_PARAM_MAX_MPDUS_IN_AMPDU), 5586 PDEV_PARAM(pdev_param_peer_stats_info_enable, 5587 PDEV_PARAM_PEER_STATS_INFO_ENABLE), 5588 PDEV_PARAM(pdev_param_fast_pwr_transition, 5589 PDEV_PARAM_FAST_PWR_TRANSITION), 5590 PDEV_PARAM(pdev_param_radio_chan_stats_enable, 5591 PDEV_PARAM_RADIO_CHAN_STATS_ENABLE), 5592 PDEV_PARAM(pdev_param_radio_diagnosis_enable, 5593 PDEV_PARAM_RADIO_DIAGNOSIS_ENABLE), 5594 PDEV_PARAM(pdev_param_mesh_mcast_enable, PDEV_PARAM_MESH_MCAST_ENABLE), 5595 PDEV_PARAM(pdev_param_smart_chainmask_scheme, 5596 PDEV_PARAM_SMART_CHAINMASK_SCHEME), 5597 PDEV_PARAM(pdev_param_alternative_chainmask_scheme, 5598 PDEV_PARAM_ALTERNATIVE_CHAINMASK_SCHEME), 5599 PDEV_PARAM(pdev_param_ant_div_usrcfg, PDEV_PARAM_ANT_DIV_USRCFG), 5600 PDEV_PARAM(pdev_param_packet_power_save_level, 5601 PDEV_PARAM_PACKET_POWER_SAVE_LEVEL), 5602 PDEV_PARAM(pdev_param_set_iot_pattern, PDEV_PARAM_SET_IOT_PATTERN), 5603 PDEV_PARAM(pdev_param_tx_ack_timeout, PDEV_PARAM_ACK_TIMEOUT), 5604 PDEV_PARAM(pdev_param_abg_mode_tx_chain_num, 5605 PDEV_PARAM_ABG_MODE_TX_CHAIN_NUM), 5606 PDEV_PARAM(pdev_param_enable_cck_txfir_override, 5607 PDEV_PARAM_ENABLE_CCK_TXFIR_OVERRIDE), 5608 PDEV_PARAM(pdev_param_dtim_synth, PDEV_PARAM_DTIM_SYNTH), 5609 PDEV_PARAM(pdev_auto_detect_power_failure, 5610 PDEV_AUTO_DETECT_POWER_FAILURE), 5611 PDEV_PARAM(pdev_update_wdcvs_algo, PDEV_UPDATE_WDCVS_ALGO), 5612 PDEV_PARAM(pdev_param_data_stall_detect_enable, 5613 PDEV_PARAM_DATA_STALL_DETECT_ENABLE), 5614 PDEV_PARAM(pdev_param_gcmp_support_enable, 5615 PDEV_PARAM_GCMP_SUPPORT_ENABLE), 5616 PDEV_PARAM(pdev_param_1ch_dtim_optimized_chain_selection, 5617 PDEV_PARAM_1CH_DTIM_OPTIMIZED_CHAIN_SELECTION), 5618 PDEV_PARAM(pdev_param_cck_tx_enable, PDEV_PARAM_CCK_TX_ENABLE), 5619 PDEV_PARAM(pdev_param_antenna_gain_half_db, 5620 PDEV_PARAM_ANTENNA_GAIN_HALF_DB), 5621 PDEV_PARAM(pdev_param_secondary_retry_enable, 5622 PDEV_PARAM_SECONDARY_RETRY_ENABLE), 5623 PDEV_PARAM(pdev_param_ul_ppdu_duration, 5624 PDEV_PARAM_SET_UL_PPDU_DURATION), 5625 PDEV_PARAM(pdev_param_ul_trig_int, PDEV_PARAM_SET_UL_BSR_TRIG_INTERVAL), 5626 PDEV_PARAM(pdev_param_equal_ru_allocation_enable, 5627 PDEV_PARAM_EQUAL_RU_ALLOCATION_ENABLE), 5628 PDEV_PARAM(pdev_param_mwscoex_4g_allow_quick_ftdm, 5629 PDEV_PARAM_MWSCOEX_4G_ALLOW_QUICK_FTDM), 5630 PDEV_PARAM(pdev_param_mwscoex_set_5gnr_pwr_limit, 5631 PDEV_PARAM_MWSCOEX_SET_5GNR_PWR_LIMIT), 5632 PDEV_PARAM(pdev_param_set_cong_ctrl_max_msdus, 5633 PDEV_PARAM_SET_CONG_CTRL_MAX_MSDUS), 5634 PDEV_PARAM(pdev_param_esp_indication_period, 5635 PDEV_PARAM_ESP_INDICATION_PERIOD), 5636 PDEV_PARAM(pdev_param_per_peer_prd_cfr_enable, 5637 PDEV_PARAM_PER_PEER_PERIODIC_CFR_ENABLE), 5638 PDEV_PARAM(pdev_param_periodic_cfr_base_timer, 5639 PDEV_PARAM_PERIODIC_CFR_BASE_TIMER), 5640 PDEV_PARAM(pdev_param_enable_optimized_periodic_cfr_timer, 5641 PDEV_PARAM_ENABLE_OPTIMIZED_PERIODIC_CFR_TIMER), 5642 PDEV_PARAM(pdev_param_esp_ba_window, PDEV_PARAM_ESP_BA_WINDOW), 5643 PDEV_PARAM(pdev_param_esp_airtime_fraction, 5644 PDEV_PARAM_ESP_AIRTIME_FRACTION), 5645 PDEV_PARAM(pdev_param_esp_ppdu_duration, PDEV_PARAM_ESP_PPDU_DURATION), 5646 PDEV_PARAM(pdev_param_use_nol, PDEV_PARAM_USE_NOL), 5647 PDEV_PARAM(pdev_param_ru26_allowed, PDEV_PARAM_UL_RU26_ALLOWED), 5648 PDEV_PARAM(pdev_param_sub_channel_marking, 5649 PDEV_PARAM_SUB_CHANNEL_MARKING), 5650 PDEV_PARAM(pdev_param_set_mgmt_ttl, PDEV_PARAM_SET_MGMT_TTL), 5651 PDEV_PARAM(pdev_param_set_prb_rsp_ttl, PDEV_PARAM_SET_PROBE_RESP_TTL), 5652 PDEV_PARAM(pdev_param_set_tbtt_ctrl, PDEV_PARAM_SET_TBTT_CTRL), 5653 PDEV_PARAM(pdev_param_nav_override_config, 5654 PDEV_PARAM_NAV_OVERRIDE_CONFIG), 5655 PDEV_PARAM(pdev_param_set_mu_ppdu_duration, 5656 PDEV_PARAM_SET_MU_PPDU_DURATION), 5657 PDEV_PARAM(pdev_param_set_test_cmd_ul_trigger_type_enable, 5658 PDEV_PARAM_SET_TEST_CMD_UL_TRIGGER_TYPE_ENABLE), 5659 PDEV_PARAM(pdev_param_set_test_cmd_ul_trigger_lsig_len, 5660 PDEV_PARAM_SET_TEST_CMD_UL_TRIGGER_LSIG_LEN), 5661 PDEV_PARAM(pdev_param_set_test_cmd_ul_trigger_fixed_rate, 5662 PDEV_PARAM_SET_TEST_CMD_UL_TRIGGER_FIXED_RATE), 5663 PDEV_PARAM(pdev_param_set_test_cmd_ul_mac_padding, 5664 PDEV_PARAM_SET_TEST_CMD_UL_MAC_PADDING), 5665 PDEV_PARAM(pdev_param_set_test_cmd_ul_bsr_fc_duration, 5666 PDEV_PARAM_SET_TEST_CMD_UL_BSR_FC_DURATION), 5667 PDEV_PARAM(pdev_param_set_test_cmd_twt_sched_config, 5668 PDEV_PARAM_SET_TEST_CMD_TWT_SCHED_CONFIG), 5669 PDEV_PARAM(pdev_param_set_cmd_obss_pd_threshold, 5670 PDEV_PARAM_SET_CMD_OBSS_PD_THRESHOLD), 5671 PDEV_PARAM(pdev_param_enable_non_wlan_coex_from_boot, 5672 PDEV_PARAM_ENABLE_NON_WLAN_COEX_FROM_BOOT), 5673 PDEV_PARAM(pdev_param_set_cmd_obss_pd_per_ac, 5674 PDEV_PARAM_SET_CMD_OBSS_PD_PER_AC), 5675 PDEV_PARAM(pdev_param_enable_fw_dynamic_he_edca, 5676 PDEV_PARAM_ENABLE_FW_DYNAMIC_HE_EDCA), 5677 PDEV_PARAM(pdev_param_default_6ghz_rate, PDEV_PARAM_DEFAULT_6GHZ_RATE), 5678 PDEV_PARAM(pdev_param_mwscoex_pcc_chavd_delay, 5679 PDEV_PARAM_MWSCOEX_PCC_CHAVD_DELAY), 5680 PDEV_PARAM(pdev_param_mwscoex_scc_chavd_delay, 5681 PDEV_PARAM_MWSCOEX_SCC_CHAVD_DELAY), 5682 PDEV_PARAM(pdev_param_set_dfs_chan_ageout_time, 5683 PDEV_PARAM_SET_DFS_CHAN_AGEOUT_TIME), 5684 PDEV_PARAM(pdev_param_set_sap_xlna_bypass, 5685 PDEV_PARAM_SET_SAP_XLNA_BYPASS), 5686 PDEV_PARAM(pdev_param_enable_srp, PDEV_PARAM_ENABLE_SRP), 5687 PDEV_PARAM(pdev_param_enable_sr_prohibit, 5688 PDEV_PARAM_ENABLE_SR_PROHIBIT), 5689 PDEV_PARAM(pdev_param_enable_mbssid_ctrl_frame, 5690 PDEV_PARAM_ENABLE_MBSSID_CTRL_FRAME), 5691 PDEV_PARAM(pdev_param_pream_punct_bw, PDEV_PARAM_SET_PREAM_PUNCT_BW), 5692 PDEV_PARAM(pdev_param_sr_trigger_margin, PDEV_PARAM_SR_TRIGGER_MARGIN), 5693 PDEV_PARAM(pdev_param_pcie_hw_ilp, PDEV_PARAM_PCIE_HW_ILP), 5694 PDEV_PARAM(pdev_param_set_txtd_start_timestamp, 5695 PDEV_PARAM_SET_TXTD_START_TIMESTAMP), 5696 PDEV_PARAM(pdev_param_set_mesh_params, PDEV_PARAM_SET_MESH_PARAMS), 5697 PDEV_PARAM(pdev_param_low_latency_mode, 5698 PDEV_PARAM_LOW_LATENCY_SCHED_MODE), 5699 PDEV_PARAM(pdev_param_mpd_userpd_ssr, PDEV_PARAM_MPD_USERPD_SSR), 5700 PDEV_PARAM(pdev_param_disable_hw_assist, PDEV_PARAM_DISABLE_HW_ASSIST), 5701 PDEV_PARAM(pdev_param_scan_radio_tx_on_dfs, 5702 PDEV_PARAM_SCAN_RADIO_TX_ON_DFS), 5703 PDEV_PARAM(pdev_param_obss_min_duration_check_for_sr, 5704 PDEV_PARAM_OBSS_MIN_DURATION_CHECK_FOR_SR), 5705 PDEV_PARAM(pdev_param_truncate_sr, PDEV_PARAM_TRUNCATE_SR), 5706 PDEV_PARAM(pdev_param_ctrl_frame_obss_pd_threshold, 5707 PDEV_PARAM_CTRL_FRAME_OBSS_PD_THRESHOLD), 5708 PDEV_PARAM(pdev_param_twt_ac_config, PDEV_PARAM_TWT_AC_CONFIG), 5709 PDEV_PARAM(pdev_param_pdev_stats_tx_xretry_ext, 5710 PDEV_PARAM_PDEV_STATS_TX_XRETRY_EXT), 5711 PDEV_PARAM(pdev_param_rate_upper_cap, PDEV_PARAM_RATE_UPPER_CAP), 5712 PDEV_PARAM(pdev_param_rate_retry_mcs_drop, 5713 PDEV_PARAM_SET_RATE_DROP_DOWN_RETRY_THRESH), 5714 PDEV_PARAM(pdev_param_mcs_probe_intvl, 5715 PDEV_PARAM_MIN_MAX_MCS_PROBE_INTERVAL), 5716 PDEV_PARAM(pdev_param_nss_probe_intvl, 5717 PDEV_PARAM_MIN_MAX_NSS_PROBE_INTERVAL), 5718 PDEV_PARAM(pdev_param_en_probe_all_bw, PDEV_PARAM_EN_PROBE_ALL_BW), 5719 PDEV_PARAM(pdev_param_en_update_scram_seed, 5720 PDEV_PARAM_EN_UPDATE_SCRAM_SEED), 5721 PDEV_PARAM(pdev_param_sa_parallel_mode_gpio_drive_cfg, 5722 PDEV_PARAM_SA_PARALLEL_MODE_GPIO_DRIVE_CFG), 5723 PDEV_PARAM(pdev_param_disable_lpi_ant_optimization, 5724 PDEV_PARAM_DISABLE_LPI_ANT_OPTIMIZATION), 5725 PDEV_PARAM(pdev_param_txpower_reason_sar, 5726 PDEV_PARAM_TXPOWER_REASON_SAR), 5727 PDEV_PARAM(pdev_param_igmpmld_tid, PDEV_PARAM_IGMPMLD_AC_OVERRIDE), 5728 PDEV_PARAM(pdev_param_cal_period, UNAVAILABLE_PARAM), 5729 PDEV_PARAM(pdev_param_rx_batchmode, UNAVAILABLE_PARAM), 5730 PDEV_PARAM(pdev_param_packet_aggr_delay, UNAVAILABLE_PARAM), 5731 PDEV_PARAM(pdev_param_atf_ssid_group_policy, UNAVAILABLE_PARAM), 5732 PDEV_PARAM(pdev_param_enable_btcoex, UNAVAILABLE_PARAM), 5733 PDEV_PARAM(pdev_param_atf_peer_stats, UNAVAILABLE_PARAM), 5734 PDEV_PARAM(pdev_param_btcoex_cfg, UNAVAILABLE_PARAM), 5735 PDEV_PARAM(pdev_param_soft_tx_chain_mask, PDEV_PARAM_TX_CHAIN_MASK), 5736 PDEV_PARAM(pdev_param_enable_peer_retry_stats, UNAVAILABLE_PARAM), 5737 PDEV_PARAM(pdev_param_scan_blanking_mode, 5738 PDEV_PARAM_SET_SCAN_BLANKING_MODE), 5739 PDEV_PARAM(pdev_param_set_disabled_sched_modes, 5740 PDEV_PARAM_SET_DISABLED_SCHED_MODES), 5741 PDEV_PARAM(pdev_param_set_conc_low_latency_mode, 5742 PDEV_PARAM_SET_CONC_LOW_LATENCY_MODE), 5743 PDEV_PARAM(pdev_param_rtt_11az_rsid_range, 5744 PDEV_PARAM_RTT_11AZ_RSID_RANGE), 5745 PDEV_PARAM(pdev_param_pcie_config, PDEV_PARAM_PCIE_CONFIG), 5746 PDEV_PARAM(pdev_param_probe_resp_retry_limit, 5747 PDEV_PARAM_PROBE_RESP_RETRY_LIMIT), 5748 PDEV_PARAM(pdev_param_cts_timeout, PDEV_PARAM_CTS_TIMEOUT), 5749 PDEV_PARAM(pdev_param_slot_time, PDEV_PARAM_SLOT_TIME), 5750 PDEV_PARAM(pdev_param_atf_vo_dedicated_time, 5751 PDEV_PARAM_ATF_VO_DEDICATED_TIME), 5752 PDEV_PARAM(pdev_param_atf_vi_dedicated_time, 5753 PDEV_PARAM_ATF_VI_DEDICATED_TIME), 5754 pdev_param_max, 5755 } wmi_conv_pdev_params_id; 5756 5757 #ifdef ENABLE_HOST_TO_TARGET_CONVERSION 5758 #define VDEV_PARAM(host_param, target_param) wmi_ ## host_param 5759 #else 5760 #define VDEV_PARAM(host_param, target_param) wmi_ ## host_param = WMI_ ## target_param 5761 #endif 5762 5763 /* Host based ENUM IDs for VDEV params to abstract target enums */ 5764 typedef enum { 5765 VDEV_PARAM(vdev_param_rts_threshold, VDEV_PARAM_RTS_THRESHOLD), 5766 VDEV_PARAM(vdev_param_fragmentation_threshold, 5767 VDEV_PARAM_FRAGMENTATION_THRESHOLD), 5768 VDEV_PARAM(vdev_param_beacon_interval, VDEV_PARAM_BEACON_INTERVAL), 5769 VDEV_PARAM(vdev_param_listen_interval, VDEV_PARAM_LISTEN_INTERVAL), 5770 VDEV_PARAM(vdev_param_multicast_rate, VDEV_PARAM_MULTICAST_RATE), 5771 VDEV_PARAM(vdev_param_mgmt_tx_rate, VDEV_PARAM_MGMT_TX_RATE), 5772 VDEV_PARAM(vdev_param_slot_time, VDEV_PARAM_SLOT_TIME), 5773 VDEV_PARAM(vdev_param_preamble, VDEV_PARAM_PREAMBLE), 5774 VDEV_PARAM(vdev_param_swba_time, VDEV_PARAM_SWBA_TIME), 5775 VDEV_PARAM(vdev_stats_update_period, VDEV_STATS_UPDATE_PERIOD), 5776 VDEV_PARAM(vdev_pwrsave_ageout_time, VDEV_PWRSAVE_AGEOUT_TIME), 5777 VDEV_PARAM(vdev_param_dtim_period, VDEV_PARAM_DTIM_PERIOD), 5778 VDEV_PARAM(vdev_oc_scheduler_air_time_limit, 5779 VDEV_OC_SCHEDULER_AIR_TIME_LIMIT), 5780 VDEV_PARAM(vdev_param_wds, VDEV_PARAM_WDS), 5781 VDEV_PARAM(vdev_param_atim_window, VDEV_PARAM_ATIM_WINDOW), 5782 VDEV_PARAM(vdev_param_bmiss_count_max, VDEV_PARAM_BMISS_COUNT_MAX), 5783 VDEV_PARAM(vdev_param_bmiss_first_bcnt, VDEV_PARAM_BMISS_FIRST_BCNT), 5784 VDEV_PARAM(vdev_param_bmiss_final_bcnt, VDEV_PARAM_BMISS_FINAL_BCNT), 5785 VDEV_PARAM(vdev_param_feature_wmm, VDEV_PARAM_FEATURE_WMM), 5786 VDEV_PARAM(vdev_param_chwidth, VDEV_PARAM_CHWIDTH), 5787 VDEV_PARAM(vdev_param_chextoffset, VDEV_PARAM_CHEXTOFFSET), 5788 VDEV_PARAM(vdev_param_disable_htprotection, 5789 VDEV_PARAM_DISABLE_HTPROTECTION), 5790 VDEV_PARAM(vdev_param_sta_quickkickout, VDEV_PARAM_STA_QUICKKICKOUT), 5791 VDEV_PARAM(vdev_param_mgmt_rate, VDEV_PARAM_MGMT_RATE), 5792 VDEV_PARAM(vdev_param_protection_mode, VDEV_PARAM_PROTECTION_MODE), 5793 VDEV_PARAM(vdev_param_fixed_rate, VDEV_PARAM_FIXED_RATE), 5794 VDEV_PARAM(vdev_param_sgi, VDEV_PARAM_SGI), 5795 VDEV_PARAM(vdev_param_ldpc, VDEV_PARAM_LDPC), 5796 VDEV_PARAM(vdev_param_tx_stbc, VDEV_PARAM_TX_STBC), 5797 VDEV_PARAM(vdev_param_rx_stbc, VDEV_PARAM_RX_STBC), 5798 VDEV_PARAM(vdev_param_intra_bss_fwd, VDEV_PARAM_INTRA_BSS_FWD), 5799 VDEV_PARAM(vdev_param_def_keyid, VDEV_PARAM_DEF_KEYID), 5800 VDEV_PARAM(vdev_param_nss, VDEV_PARAM_NSS), 5801 VDEV_PARAM(vdev_param_bcast_data_rate, VDEV_PARAM_BCAST_DATA_RATE), 5802 VDEV_PARAM(vdev_param_mcast_data_rate, VDEV_PARAM_MCAST_DATA_RATE), 5803 VDEV_PARAM(vdev_param_mcast_indicate, VDEV_PARAM_MCAST_INDICATE), 5804 VDEV_PARAM(vdev_param_dhcp_indicate, VDEV_PARAM_DHCP_INDICATE), 5805 VDEV_PARAM(vdev_param_unknown_dest_indicate, 5806 VDEV_PARAM_UNKNOWN_DEST_INDICATE), 5807 VDEV_PARAM(vdev_param_ap_keepalive_min_idle_inactive_time_secs, 5808 VDEV_PARAM_AP_KEEPALIVE_MIN_IDLE_INACTIVE_TIME_SECS), 5809 VDEV_PARAM(vdev_param_ap_keepalive_max_idle_inactive_time_secs, 5810 VDEV_PARAM_AP_KEEPALIVE_MAX_IDLE_INACTIVE_TIME_SECS), 5811 VDEV_PARAM(vdev_param_ap_keepalive_max_unresponsive_time_secs, 5812 VDEV_PARAM_AP_KEEPALIVE_MAX_UNRESPONSIVE_TIME_SECS), 5813 VDEV_PARAM(vdev_param_ap_enable_nawds, VDEV_PARAM_AP_ENABLE_NAWDS), 5814 VDEV_PARAM(vdev_param_enable_rtscts, VDEV_PARAM_ENABLE_RTSCTS), 5815 VDEV_PARAM(vdev_param_txbf, VDEV_PARAM_TXBF), 5816 VDEV_PARAM(vdev_param_packet_powersave, VDEV_PARAM_PACKET_POWERSAVE), 5817 VDEV_PARAM(vdev_param_drop_unencry, VDEV_PARAM_DROP_UNENCRY), 5818 VDEV_PARAM(vdev_param_tx_encap_type, VDEV_PARAM_TX_ENCAP_TYPE), 5819 VDEV_PARAM(vdev_param_ap_detect_out_of_sync_sleeping_sta_time_secs, 5820 VDEV_PARAM_AP_DETECT_OUT_OF_SYNC_SLEEPING_STA_TIME_SECS), 5821 VDEV_PARAM(vdev_param_early_rx_adjust_enable, 5822 VDEV_PARAM_EARLY_RX_ADJUST_ENABLE), 5823 VDEV_PARAM(vdev_param_early_rx_tgt_bmiss_num, 5824 VDEV_PARAM_EARLY_RX_TGT_BMISS_NUM), 5825 VDEV_PARAM(vdev_param_early_rx_bmiss_sample_cycle, 5826 VDEV_PARAM_EARLY_RX_BMISS_SAMPLE_CYCLE), 5827 VDEV_PARAM(vdev_param_early_rx_slop_step, 5828 VDEV_PARAM_EARLY_RX_SLOP_STEP), 5829 VDEV_PARAM(vdev_param_early_rx_init_slop, 5830 VDEV_PARAM_EARLY_RX_INIT_SLOP), 5831 VDEV_PARAM(vdev_param_early_rx_adjust_pause, 5832 VDEV_PARAM_EARLY_RX_ADJUST_PAUSE), 5833 VDEV_PARAM(vdev_param_tx_pwrlimit, VDEV_PARAM_TX_PWRLIMIT), 5834 VDEV_PARAM(vdev_param_snr_num_for_cal, VDEV_PARAM_SNR_NUM_FOR_CAL), 5835 VDEV_PARAM(vdev_param_roam_fw_offload, VDEV_PARAM_ROAM_FW_OFFLOAD), 5836 VDEV_PARAM(vdev_param_enable_rmc, VDEV_PARAM_ENABLE_RMC), 5837 VDEV_PARAM(vdev_param_ibss_max_bcn_lost_ms, 5838 VDEV_PARAM_IBSS_MAX_BCN_LOST_MS), 5839 VDEV_PARAM(vdev_param_max_rate, VDEV_PARAM_MAX_RATE), 5840 VDEV_PARAM(vdev_param_early_rx_drift_sample, 5841 VDEV_PARAM_EARLY_RX_DRIFT_SAMPLE), 5842 VDEV_PARAM(vdev_param_set_ibss_tx_fail_cnt_thr, 5843 VDEV_PARAM_SET_IBSS_TX_FAIL_CNT_THR), 5844 VDEV_PARAM(vdev_param_ebt_resync_timeout, 5845 VDEV_PARAM_EBT_RESYNC_TIMEOUT), 5846 VDEV_PARAM(vdev_param_aggr_trig_event_enable, 5847 VDEV_PARAM_AGGR_TRIG_EVENT_ENABLE), 5848 VDEV_PARAM(vdev_param_is_ibss_power_save_allowed, 5849 VDEV_PARAM_IS_IBSS_POWER_SAVE_ALLOWED), 5850 VDEV_PARAM(vdev_param_is_power_collapse_allowed, 5851 VDEV_PARAM_IS_POWER_COLLAPSE_ALLOWED), 5852 VDEV_PARAM(vdev_param_is_awake_on_txrx_enabled, 5853 VDEV_PARAM_IS_AWAKE_ON_TXRX_ENABLED), 5854 VDEV_PARAM(vdev_param_inactivity_cnt, VDEV_PARAM_INACTIVITY_CNT), 5855 VDEV_PARAM(vdev_param_txsp_end_inactivity_time_ms, 5856 VDEV_PARAM_TXSP_END_INACTIVITY_TIME_MS), 5857 VDEV_PARAM(vdev_param_dtim_policy, VDEV_PARAM_DTIM_POLICY), 5858 VDEV_PARAM(vdev_param_ibss_ps_warmup_time_secs, 5859 VDEV_PARAM_IBSS_PS_WARMUP_TIME_SECS), 5860 VDEV_PARAM(vdev_param_ibss_ps_1rx_chain_in_atim_window_enable, 5861 VDEV_PARAM_IBSS_PS_1RX_CHAIN_IN_ATIM_WINDOW_ENABLE), 5862 VDEV_PARAM(vdev_param_rx_leak_window, VDEV_PARAM_RX_LEAK_WINDOW), 5863 VDEV_PARAM(vdev_param_stats_avg_factor, VDEV_PARAM_STATS_AVG_FACTOR), 5864 VDEV_PARAM(vdev_param_disconnect_th, VDEV_PARAM_DISCONNECT_TH), 5865 VDEV_PARAM(vdev_param_rtscts_rate, VDEV_PARAM_RTSCTS_RATE), 5866 VDEV_PARAM(vdev_param_mcc_rtscts_protection_enable, 5867 VDEV_PARAM_MCC_RTSCTS_PROTECTION_ENABLE), 5868 VDEV_PARAM(vdev_param_mcc_broadcast_probe_enable, 5869 VDEV_PARAM_MCC_BROADCAST_PROBE_ENABLE), 5870 VDEV_PARAM(vdev_param_txpower_scale, VDEV_PARAM_TXPOWER_SCALE), 5871 VDEV_PARAM(vdev_param_txpower_scale_decr_db, 5872 VDEV_PARAM_TXPOWER_SCALE_DECR_DB), 5873 VDEV_PARAM(vdev_param_mcast2ucast_set, VDEV_PARAM_MCAST2UCAST_SET), 5874 VDEV_PARAM(vdev_param_rc_num_retries, VDEV_PARAM_RC_NUM_RETRIES), 5875 VDEV_PARAM(vdev_param_cabq_maxdur, VDEV_PARAM_CABQ_MAXDUR), 5876 VDEV_PARAM(vdev_param_mfptest_set, VDEV_PARAM_MFPTEST_SET), 5877 VDEV_PARAM(vdev_param_rts_fixed_rate, VDEV_PARAM_RTS_FIXED_RATE), 5878 VDEV_PARAM(vdev_param_vht_sgimask, VDEV_PARAM_VHT_SGIMASK), 5879 VDEV_PARAM(vdev_param_vht80_ratemask, VDEV_PARAM_VHT80_RATEMASK), 5880 VDEV_PARAM(vdev_param_proxy_sta, VDEV_PARAM_PROXY_STA), 5881 VDEV_PARAM(vdev_param_virtual_cell_mode, VDEV_PARAM_VIRTUAL_CELL_MODE), 5882 VDEV_PARAM(vdev_param_rx_decap_type, VDEV_PARAM_RX_DECAP_TYPE), 5883 VDEV_PARAM(vdev_param_bw_nss_ratemask, VDEV_PARAM_BW_NSS_RATEMASK), 5884 VDEV_PARAM(vdev_param_sensor_ap, VDEV_PARAM_SENSOR_AP), 5885 VDEV_PARAM(vdev_param_beacon_rate, VDEV_PARAM_BEACON_RATE), 5886 VDEV_PARAM(vdev_param_dtim_enable_cts, VDEV_PARAM_DTIM_ENABLE_CTS), 5887 VDEV_PARAM(vdev_param_sta_kickout, VDEV_PARAM_STA_KICKOUT), 5888 VDEV_PARAM(vdev_param_capabilities, VDEV_PARAM_CAPABILITIES), 5889 VDEV_PARAM(vdev_param_tsf_increment, VDEV_PARAM_TSF_INCREMENT), 5890 VDEV_PARAM(vdev_param_ampdu_subframe_size_per_ac, 5891 UNAVAILABLE_PARAM), 5892 VDEV_PARAM(vdev_param_rx_filter, VDEV_PARAM_RX_FILTER), 5893 VDEV_PARAM(vdev_param_mgmt_tx_power, VDEV_PARAM_MGMT_TX_POWER), 5894 VDEV_PARAM(vdev_param_non_agg_sw_retry_th, 5895 VDEV_PARAM_NON_AGG_SW_RETRY_TH), 5896 VDEV_PARAM(vdev_param_agg_sw_retry_th, VDEV_PARAM_AGG_SW_RETRY_TH), 5897 VDEV_PARAM(vdev_param_disable_dyn_bw_rts, 5898 VDEV_PARAM_DISABLE_DYN_BW_RTS), 5899 VDEV_PARAM(vdev_param_set_traffic_config, 5900 VDEV_PARAM_VDEV_TRAFFIC_CONFIG), 5901 VDEV_PARAM(vdev_param_atf_ssid_sched_policy, 5902 VDEV_PARAM_ATF_SSID_SCHED_POLICY), 5903 VDEV_PARAM(vdev_param_he_dcm_enable, VDEV_PARAM_HE_DCM), 5904 VDEV_PARAM(vdev_param_he_range_ext_enable, VDEV_PARAM_HE_RANGE_EXT), 5905 VDEV_PARAM(vdev_param_he_range_ext, VDEV_PARAM_HE_RANGE_EXT), 5906 VDEV_PARAM(vdev_param_enable_bcast_probe_response, 5907 VDEV_PARAM_ENABLE_BCAST_PROBE_RESPONSE), 5908 VDEV_PARAM(vdev_param_fils_max_channel_guard_time, 5909 VDEV_PARAM_FILS_MAX_CHANNEL_GUARD_TIME), 5910 VDEV_PARAM(vdev_param_disable_noa_p2p_go, 5911 VDEV_PARAM_DISABLE_NOA_P2P_GO), 5912 VDEV_PARAM(vdev_param_per_band_mgmt_tx_rate, 5913 VDEV_PARAM_PER_BAND_MGMT_TX_RATE), 5914 VDEV_PARAM(vdev_param_11ax_txbf, VDEV_PARAM_11AX_TXBF), 5915 VDEV_PARAM(vdev_param_smps_intolerant, VDEV_PARAM_SMPS_INTOLERANT), 5916 VDEV_PARAM(vdev_param_probe_delay, VDEV_PARAM_PROBE_DELAY), 5917 VDEV_PARAM(vdev_param_repeat_probe_time, VDEV_PARAM_REPEAT_PROBE_TIME), 5918 VDEV_PARAM(vdev_param_set_he_ltf, VDEV_PARAM_HE_LTF), 5919 VDEV_PARAM(vdev_param_abg_mode_tx_chain_num, 5920 VDEV_PARAM_ABG_MODE_TX_CHAIN_NUM), 5921 VDEV_PARAM(vdev_param_enable_multi_group_key, 5922 VDEV_PARAM_ENABLE_MULTI_GROUP_KEY), 5923 VDEV_PARAM(vdev_param_max_group_keys, VDEV_PARAM_NUM_GROUP_KEYS), 5924 VDEV_PARAM(vdev_param_enable_disable_oce_features, 5925 VDEV_PARAM_ENABLE_DISABLE_OCE_FEATURES), 5926 VDEV_PARAM(vdev_param_enable_disable_nan_config_features, 5927 VDEV_PARAM_ENABLE_DISABLE_NAN_CONFIG_FEATURES), 5928 VDEV_PARAM(vdev_param_rate_dropdown_bmap, 5929 VDEV_PARAM_RATE_DROPDOWN_BMAP), 5930 VDEV_PARAM(vdev_param_moddtim_cnt, VDEV_PARAM_MODDTIM_CNT), 5931 VDEV_PARAM(vdev_param_max_li_of_moddtim, VDEV_PARAM_MAX_LI_OF_MODDTIM), 5932 VDEV_PARAM(vdev_param_dyndtim_cnt, VDEV_PARAM_DYNDTIM_CNT), 5933 VDEV_PARAM(vdev_param_enable_disable_rtt_responder_role, 5934 VDEV_PARAM_ENABLE_DISABLE_RTT_RESPONDER_ROLE), 5935 VDEV_PARAM(vdev_param_set_ba_mode, VDEV_PARAM_BA_MODE), 5936 VDEV_PARAM(vdev_param_forced_moddtim_enable, 5937 VDEV_PARAM_FORCED_MODDTIM_ENABLE), 5938 VDEV_PARAM(vdev_param_autorate_misc_cfg, VDEV_PARAM_AUTORATE_MISC_CFG), 5939 VDEV_PARAM(vdev_param_enable_disable_rtt_initiator_random_mac, 5940 VDEV_PARAM_ENABLE_DISABLE_RTT_INITIATOR_RANDOM_MAC), 5941 VDEV_PARAM(vdev_param_tx_retries_before_rts_per_ac, 5942 VDEV_PARAM_TX_RETRIES_BEFORE_RTS_PER_AC), 5943 VDEV_PARAM(vdev_param_amsdu_aggregation_size_optimization, 5944 VDEV_PARAM_AMSDU_AGGREGATION_SIZE_OPTIMIZATION), 5945 VDEV_PARAM(vdev_param_rawmode_open_war, VDEV_PARAM_RAW_IS_ENCRYPTED), 5946 VDEV_PARAM(vdev_param_gtx_enable, VDEV_PARAM_GTX_ENABLE), 5947 VDEV_PARAM(vdev_param_disable_cabq, VDEV_PARAM_DISABLE_CABQ), 5948 VDEV_PARAM(vdev_param_set_he_sounding_mode, 5949 VDEV_PARAM_SET_HE_SOUNDING_MODE), 5950 VDEV_PARAM(vdev_param_ul_fixed_rate, VDEV_PARAM_UL_FIXED_RATE), 5951 VDEV_PARAM(vdev_param_ul_shortgi, VDEV_PARAM_UL_GI), 5952 VDEV_PARAM(vdev_param_ul_ldpc, VDEV_PARAM_UL_LDPC), 5953 VDEV_PARAM(vdev_param_ul_nss, VDEV_PARAM_UL_NSS), 5954 VDEV_PARAM(vdev_param_ul_stbc, VDEV_PARAM_UL_STBC), 5955 VDEV_PARAM(vdev_param_ul_he_ltf, VDEV_PARAM_UL_HE_LTF), 5956 VDEV_PARAM(vdev_param_ul_ppdu_bw, VDEV_PARAM_UL_PPDU_BW), 5957 VDEV_PARAM(vdev_param_mu_edca_fw_update_en, 5958 VDEV_PARAM_MU_EDCA_FW_UPDATE_EN), 5959 VDEV_PARAM(vdev_param_update_obss_ru_tolerance_time, 5960 VDEV_PARAM_UPDATE_OBSS_RU_TOLERANCE_TIME), 5961 VDEV_PARAM(vdev_param_max_mtu_size, VDEV_PARAM_MAX_MTU_SIZE), 5962 VDEV_PARAM(vdev_param_nth_beacon_to_host, 5963 VDEV_PARAM_NTH_BEACON_TO_HOST), 5964 VDEV_PARAM(vdev_param_packet_capture_mode, 5965 VDEV_PARAM_PACKET_CAPTURE_MODE), 5966 VDEV_PARAM(vdev_param_mcast_rc_stale_period, 5967 VDEV_PARAM_MCAST_RC_STALE_PERIOD), 5968 VDEV_PARAM(vdev_param_msdu_flow_override_config, 5969 VDEV_PARAM_MSDU_FLOW_OVERRIDE_CONFIG), 5970 VDEV_PARAM(vdev_param_enable_null_for_leaky_ap, 5971 VDEV_PARAM_ENABLE_NULL_FOR_LEAKY_AP), 5972 VDEV_PARAM(vdev_param_ndp_inactivity_timeout, 5973 VDEV_PARAM_NDP_INACTIVITY_TIMEOUT), 5974 VDEV_PARAM(vdev_param_enable_mcast_rc, VDEV_PARAM_ENABLE_MCAST_RC), 5975 VDEV_PARAM(vdev_param_enable_disable_rtt_initiator_role, 5976 VDEV_PARAM_ENABLE_DISABLE_RTT_INITIATOR_ROLE), 5977 VDEV_PARAM(vdev_param_ndp_keepalive_timeout, 5978 VDEV_PARAM_NDP_KEEPALIVE_TIMEOUT), 5979 VDEV_PARAM(vdev_param_allow_nan_initial_discovery_of_mp0_cluster, 5980 VDEV_PARAM_ALLOW_NAN_INITIAL_DISCOVERY_OF_MP0_CLUSTER), 5981 VDEV_PARAM(vdev_param_enable_disable_roam_reason_vsie, 5982 VDEV_PARAM_ENABLE_DISABLE_ROAM_REASON_VSIE), 5983 VDEV_PARAM(vdev_param_set_cmd_obss_pd_threshold, 5984 VDEV_PARAM_SET_CMD_OBSS_PD_THRESHOLD), 5985 VDEV_PARAM(vdev_param_set_cmd_obss_pd_per_ac, 5986 VDEV_PARAM_SET_CMD_OBSS_PD_PER_AC), 5987 VDEV_PARAM(vdev_param_rsn_capability, VDEV_PARAM_RSN_CAPABILITY), 5988 VDEV_PARAM(vdev_param_enable_srp, VDEV_PARAM_ENABLE_SRP), 5989 VDEV_PARAM(vdev_param_roam_11kv_ctrl, VDEV_PARAM_ROAM_11KV_CTRL), 5990 VDEV_PARAM(vdev_param_nan_config_features, 5991 UNAVAILABLE_PARAM), 5992 VDEV_PARAM(vdev_param_sho_config, VDEV_PARAM_SHO_CONFIG), 5993 VDEV_PARAM(vdev_param_non_data_he_range_ext, 5994 VDEV_PARAM_NON_DATA_HE_RANGE_EXT), 5995 VDEV_PARAM(vdev_param_prohibit_data_mgmt, 5996 VDEV_PARAM_PROHIBIT_DATA_MGMT), 5997 VDEV_PARAM(vdev_param_wmm_txop_enable, VDEV_PARAM_WMM_TXOP_ENABLE), 5998 VDEV_PARAM(vdev_param_force_dtim_cnt, VDEV_PARAM_FORCE_DTIM_CNT), 5999 VDEV_PARAM(vdev_param_smart_monitor_config, 6000 VDEV_PARAM_SMART_MONITOR_CONFIG), 6001 VDEV_PARAM(vdev_param_max_li_of_moddtim_ms, 6002 VDEV_PARAM_MAX_LI_OF_MODDTIM_MS), 6003 VDEV_PARAM(vdev_param_11az_security_config, 6004 VDEV_PARAM_11AZ_SECURITY_CONFIG), 6005 VDEV_PARAM(vdev_param_set_normal_latency_flags_config, 6006 VDEV_PARAM_NORMAL_LATENCY_FLAGS_CONFIGURATION), 6007 VDEV_PARAM(vdev_param_set_xr_latency_flags_config, 6008 VDEV_PARAM_XR_LATENCY_FLAGS_CONFIGURATION), 6009 VDEV_PARAM(vdev_param_set_low_latency_flags_config, 6010 VDEV_PARAM_LOW_LATENCY_FLAGS_CONFIGURATION), 6011 VDEV_PARAM(vdev_param_set_ultra_low_latency_flags_config, 6012 VDEV_PARAM_ULTRA_LOW_LATENCY_FLAGS_CONFIGURATION), 6013 VDEV_PARAM(vdev_param_set_normal_latency_ul_dl_config, 6014 VDEV_PARAM_NORMAL_LATENCY_UL_DL_CONFIGURATION), 6015 VDEV_PARAM(vdev_param_set_xr_latency_ul_dl_config, 6016 VDEV_PARAM_XR_LATENCY_UL_DL_CONFIGURATION), 6017 VDEV_PARAM(vdev_param_set_low_latency_ul_dl_config, 6018 VDEV_PARAM_LOW_LATENCY_UL_DL_CONFIGURATION), 6019 VDEV_PARAM(vdev_param_set_ultra_low_latency_ul_dl_config, 6020 VDEV_PARAM_ULTRA_LOW_LATENCY_UL_DL_CONFIGURATION), 6021 VDEV_PARAM(vdev_param_set_default_ll_config, 6022 VDEV_PARAM_DEFAULT_LATENCY_LEVEL_CONFIGURATION), 6023 VDEV_PARAM(vdev_param_set_multi_client_ll_feature_config, 6024 VDEV_PARAM_MULTI_CLIENT_LL_FEATURE_CONFIGURATION), 6025 VDEV_PARAM(vdev_param_vdev_traffic_config, 6026 VDEV_PARAM_VDEV_TRAFFIC_CONFIG), 6027 VDEV_PARAM(vdev_param_final_bmiss_time_sec, 6028 VDEV_PARAM_FINAL_BMISS_TIME_SEC), 6029 VDEV_PARAM(vdev_param_final_bmiss_time_wow_sec, 6030 VDEV_PARAM_FINAL_BMISS_TIME_WOW_SEC), 6031 VDEV_PARAM(vdev_param_disable_lpi_ant_optimization, 6032 VDEV_PARAM_DISABLE_LPI_ANT_OPTIMIZATION), 6033 VDEV_PARAM(vdev_param_prototype, VDEV_PARAM_PROTOTYPE), 6034 VDEV_PARAM(vdev_param_he_bss_color, VDEV_PARAM_BSS_COLOR), 6035 VDEV_PARAM(vdev_param_set_hemu_mode, VDEV_PARAM_SET_HEMU_MODE), 6036 VDEV_PARAM(vdev_param_set_heop, VDEV_PARAM_HEOPS_0_31), 6037 VDEV_PARAM(vdev_param_obsspd, VDEV_PARAM_OBSSPD), 6038 VDEV_PARAM(vdev_param_set_eht_mu_mode, VDEV_PARAM_SET_EHT_MU_MODE), 6039 VDEV_PARAM(vdev_param_set_eht_ltf, VDEV_PARAM_EHT_LTF), 6040 VDEV_PARAM(vdev_param_set_ul_eht_ltf, VDEV_PARAM_UL_EHT_LTF), 6041 VDEV_PARAM(vdev_param_set_eht_dcm, VDEV_PARAM_EHT_DCM), 6042 VDEV_PARAM(vdev_param_set_eht_range_ext, VDEV_PARAM_EHT_RANGE_EXT), 6043 VDEV_PARAM(vdev_param_set_non_data_eht_range_ext, 6044 VDEV_PARAM_NON_DATA_EHT_RANGE_EXT), 6045 VDEV_PARAM(vdev_param_fixed_puncture_pattern, 6046 VDEV_PARAM_FIXED_PUNCTURE_PATTERN), 6047 VDEV_PARAM(vdev_param_set_ehtop, VDEV_PARAM_EHTOPS_0_31), 6048 VDEV_PARAM(vdev_param_set_eht_puncturing_mode, 6049 VDEV_PARAM_SET_EHT_PUNCTURING_MODE), 6050 VDEV_PARAM(vdev_param_mcast_steer, VDEV_PARAM_MCAST_STEERING), 6051 VDEV_PARAM(vdev_param_set_profile, VDEV_PARAM_SET_PROFILE), 6052 VDEV_PARAM(vdev_param_vdev_stats_id_update, 6053 VDEV_PARAM_VDEV_STATS_ID_UPDATE), 6054 VDEV_PARAM(vdev_param_skip_roam_eapol_4way_handshake, 6055 VDEV_PARAM_SKIP_ROAM_EAPOL_4WAY_HANDSHAKE), 6056 VDEV_PARAM(vdev_param_skip_sae_roam_4way_handshake, 6057 VDEV_PARAM_SKIP_SAE_ROAM_4WAY_HANDSHAKE), 6058 VDEV_PARAM(vdev_param_tx_power, UNAVAILABLE_PARAM), 6059 VDEV_PARAM(vdev_param_amsdu_subframe_size_per_ac, 6060 UNAVAILABLE_PARAM), 6061 VDEV_PARAM(vdev_param_6ghz_params, VDEV_PARAM_6GHZ_PARAMS), 6062 VDEV_PARAM(vdev_host_swba_interval, VDEV_HOST_SWBA_INTERVAL), 6063 VDEV_PARAM(vdev_param_meru_vc, UNAVAILABLE_PARAM), 6064 VDEV_PARAM(vdev_param_sifs_trigger_rate, UNAVAILABLE_PARAM), 6065 VDEV_PARAM(vdev_param_ap_keepalive_max_idle_inactive_secs, 6066 VDEV_PARAM_AP_KEEPALIVE_MAX_IDLE_INACTIVE_TIME_SECS), 6067 VDEV_PARAM(vdev_param_set_extra_eht_ltf, VDEV_PARAM_EXTRA_EHT_LTF), 6068 VDEV_PARAM(vdev_param_set_disabled_modes, 6069 VDEV_PARAM_SET_DISABLED_SCHED_MODES), 6070 VDEV_PARAM(vdev_param_set_sap_ps_with_twt, 6071 VDEV_PARAM_SET_SAP_PS_WITH_TWT), 6072 VDEV_PARAM(vdev_param_chwidth_with_notify, 6073 VDEV_PARAM_CHWIDTH_WITH_NOTIFY), 6074 VDEV_PARAM(vdev_param_rtt_11az_tb_max_session_expiry, 6075 VDEV_PARAM_RTT_11AZ_TB_MAX_SESSION_EXPIRY), 6076 VDEV_PARAM(vdev_param_wifi_standard_version, 6077 VDEV_PARAM_WIFI_STANDARD_VERSION), 6078 VDEV_PARAM(vdev_param_rtt_11az_ntb_max_time_bw_meas, 6079 VDEV_PARAM_RTT_11AZ_NTB_MAX_TIME_BW_MEAS), 6080 VDEV_PARAM(vdev_param_rtt_11az_ntb_min_time_bw_meas, 6081 VDEV_PARAM_RTT_11AZ_NTB_MIN_TIME_BW_MEAS), 6082 VDEV_PARAM(vdev_param_disable_2g_twt, 6083 VDEV_PARAM_DISABLE_2G_TWT), 6084 vdev_param_max, 6085 } wmi_conv_vdev_param_id; 6086 6087 /* Host based ENUM IDs for service bits to abstract target enums */ 6088 typedef enum { 6089 wmi_service_beacon_offload = 0, 6090 wmi_service_scan_offload, 6091 wmi_service_roam_offload, 6092 wmi_service_bcn_miss_offload, 6093 wmi_service_sta_pwrsave, 6094 wmi_service_sta_advanced_pwrsave, 6095 wmi_service_ap_uapsd, 6096 wmi_service_ap_dfs, 6097 wmi_service_11ac, 6098 wmi_service_blockack, 6099 wmi_service_phyerr, 6100 wmi_service_bcn_filter, 6101 wmi_service_rtt, 6102 wmi_service_ratectrl, 6103 wmi_service_wow, 6104 wmi_service_ratectrl_cache, 6105 wmi_service_iram_tids, 6106 wmi_service_burst, 6107 wmi_service_smart_antenna_sw_support, 6108 wmi_service_gtk_offload, 6109 wmi_service_scan_sch, 6110 wmi_service_csa_offload, 6111 wmi_service_chatter, 6112 wmi_service_coex_freqavoid, 6113 wmi_service_packet_power_save, 6114 wmi_service_force_fw_hang, 6115 wmi_service_smart_antenna_hw_support, 6116 wmi_service_gpio, 6117 wmi_sta_uapsd_basic_auto_trig, 6118 wmi_sta_uapsd_var_auto_trig, 6119 wmi_service_sta_keep_alive, 6120 wmi_service_tx_encap, 6121 wmi_service_ap_ps_detect_out_of_sync, 6122 wmi_service_early_rx, 6123 wmi_service_enhanced_proxy_sta, 6124 wmi_service_tt, 6125 wmi_service_atf, 6126 wmi_service_peer_caching, 6127 wmi_service_coex_gpio, 6128 wmi_service_aux_spectral_intf, 6129 wmi_service_aux_chan_load_intf, 6130 wmi_service_bss_channel_info_64, 6131 wmi_service_ext_res_cfg_support, 6132 wmi_service_mesh, 6133 wmi_service_restrt_chnl_support, 6134 wmi_service_roam_scan_offload, 6135 wmi_service_arpns_offload, 6136 wmi_service_nlo, 6137 wmi_service_sta_dtim_ps_modulated_dtim, 6138 wmi_service_sta_smps, 6139 wmi_service_fwtest, 6140 wmi_service_sta_wmmac, 6141 wmi_service_tdls, 6142 wmi_service_mcc_bcn_interval_change, 6143 wmi_service_adaptive_ocs, 6144 wmi_service_ba_ssn_support, 6145 wmi_service_filter_ipsec_natkeepalive, 6146 wmi_service_wlan_hb, 6147 wmi_service_lte_ant_share_support, 6148 wmi_service_batch_scan, 6149 wmi_service_qpower, 6150 wmi_service_plmreq, 6151 wmi_service_thermal_mgmt, 6152 wmi_service_rmc, 6153 wmi_service_mhf_offload, 6154 wmi_service_coex_sar, 6155 wmi_service_bcn_txrate_override, 6156 wmi_service_nan, 6157 wmi_service_l1ss_stat, 6158 wmi_service_estimate_linkspeed, 6159 wmi_service_obss_scan, 6160 wmi_service_tdls_offchan, 6161 wmi_service_tdls_uapsd_buffer_sta, 6162 wmi_service_tdls_uapsd_sleep_sta, 6163 wmi_service_ibss_pwrsave, 6164 wmi_service_lpass, 6165 wmi_service_extscan, 6166 wmi_service_d0wow, 6167 wmi_service_hsoffload, 6168 wmi_service_roam_ho_offload, 6169 wmi_service_rx_full_reorder, 6170 wmi_service_dhcp_offload, 6171 wmi_service_sta_rx_ipa_offload_support, 6172 wmi_service_mdns_offload, 6173 wmi_service_sap_auth_offload, 6174 wmi_service_dual_band_simultaneous_support, 6175 wmi_service_ocb, 6176 wmi_service_ap_arpns_offload, 6177 wmi_service_per_band_chainmask_support, 6178 wmi_service_packet_filter_offload, 6179 wmi_service_mgmt_tx_htt, 6180 wmi_service_mgmt_tx_wmi, 6181 wmi_service_ext_msg, 6182 wmi_service_mawc, 6183 6184 wmi_service_peer_stats, 6185 wmi_service_mesh_11s, 6186 wmi_service_periodic_chan_stat_support, 6187 wmi_service_tx_mode_push_only, 6188 wmi_service_tx_mode_push_pull, 6189 wmi_service_tx_mode_dynamic, 6190 wmi_service_check_cal_version, 6191 wmi_service_btcoex_duty_cycle, 6192 wmi_service_4_wire_coex_support, 6193 wmi_service_multiple_vdev_restart, 6194 wmi_service_peer_assoc_conf, 6195 wmi_service_egap, 6196 wmi_service_sta_pmf_offload, 6197 wmi_service_unified_wow_capability, 6198 wmi_service_enterprise_mesh, 6199 wmi_service_apf_offload, 6200 wmi_service_sync_delete_cmds, 6201 wmi_service_ratectrl_limit_max_min_rates, 6202 wmi_service_nan_data, 6203 wmi_service_nan_rtt, 6204 wmi_service_11ax, 6205 wmi_service_deprecated_replace, 6206 wmi_service_tdls_conn_tracker_in_host_mode, 6207 wmi_service_enhanced_mcast_filter, 6208 wmi_service_half_rate_quarter_rate_support, 6209 wmi_service_vdev_rx_filter, 6210 wmi_service_p2p_listen_offload_support, 6211 wmi_service_mark_first_wakeup_packet, 6212 wmi_service_multiple_mcast_filter_set, 6213 wmi_service_host_managed_rx_reorder, 6214 wmi_service_flash_rdwr_support, 6215 wmi_service_wlan_stats_report, 6216 wmi_service_tx_msdu_id_new_partition_support, 6217 wmi_service_dfs_phyerr_offload, 6218 wmi_service_rcpi_support, 6219 wmi_service_fw_mem_dump_support, 6220 wmi_service_peer_stats_info, 6221 wmi_service_regulatory_db, 6222 wmi_service_11d_offload, 6223 wmi_service_hw_data_filtering, 6224 wmi_service_pkt_routing, 6225 wmi_service_offchan_tx_wmi, 6226 wmi_service_chan_load_info, 6227 wmi_service_extended_nss_support, 6228 wmi_service_ack_timeout, 6229 wmi_service_widebw_scan, 6230 wmi_service_bcn_offload_start_stop_support, 6231 wmi_service_offchan_data_tid_support, 6232 wmi_service_support_dma, 6233 wmi_service_8ss_tx_bfee, 6234 wmi_service_fils_support, 6235 wmi_service_mawc_support, 6236 wmi_service_wow_wakeup_by_timer_pattern, 6237 wmi_service_11k_neighbour_report_support, 6238 wmi_service_ap_obss_detection_offload, 6239 wmi_service_bss_color_offload, 6240 wmi_service_gmac_offload_support, 6241 wmi_service_host_dfs_check_support, 6242 wmi_service_dual_beacon_on_single_mac_scc_support, 6243 wmi_service_dual_beacon_on_single_mac_mcc_support, 6244 wmi_service_twt_requestor, 6245 wmi_service_twt_responder, 6246 wmi_service_listen_interval_offload_support, 6247 6248 #ifdef OL_ATH_SMART_LOGGING 6249 wmi_service_smart_logging_support, 6250 #endif 6251 wmi_service_infra_mbssid, 6252 wmi_service_esp_support, 6253 wmi_service_obss_spatial_reuse, 6254 wmi_service_per_vdev_chain_support, 6255 wmi_service_new_htt_msg_format, 6256 wmi_service_peer_unmap_cnf_support, 6257 wmi_service_beacon_reception_stats, 6258 wmi_service_vdev_latency_config, 6259 wmi_service_nan_dbs_support, 6260 wmi_service_ndi_dbs_support, 6261 wmi_service_nan_sap_support, 6262 wmi_service_ndi_sap_support, 6263 wmi_service_nan_disable_support, 6264 wmi_service_sta_plus_sta_support, 6265 wmi_service_hw_db2dbm_support, 6266 wmi_service_wlm_stats_support, 6267 wmi_service_ul_ru26_allowed, 6268 wmi_service_cfr_capture_support, 6269 wmi_service_bcast_twt_support, 6270 wmi_service_wpa3_ft_sae_support, 6271 wmi_service_wpa3_ft_suite_b_support, 6272 wmi_service_ft_fils, 6273 wmi_service_adaptive_11r_support, 6274 wmi_service_data_stall_recovery_support, 6275 wmi_service_tx_compl_tsf64, 6276 wmi_service_vdev_delete_all_peer, 6277 wmi_service_three_way_coex_config_legacy, 6278 wmi_service_rx_fse_support, 6279 wmi_service_dynamic_hw_mode, 6280 wmi_service_sae_roam_support, 6281 wmi_service_owe_roam_support, 6282 wmi_service_ext2_msg, 6283 wmi_service_6ghz_support, 6284 wmi_service_bw_165mhz_support, 6285 wmi_service_bw_restricted_80p80_support, 6286 wmi_service_packet_capture_support, 6287 wmi_service_nan_vdev, 6288 wmi_service_multiple_vdev_restart_ext, 6289 wmi_service_peer_delete_no_peer_flush_tids_cmd, 6290 wmi_service_time_sync_ftm, 6291 wmi_service_nss_ratio_to_host_support, 6292 wmi_roam_scan_chan_list_to_host_support, 6293 wmi_beacon_protection_support, 6294 wmi_service_sta_nan_ndi_four_port, 6295 wmi_service_host_scan_stop_vdev_all, 6296 wmi_service_ema_ap_support, 6297 wmi_support_extend_address, 6298 wmi_service_srg_srp_spatial_reuse_support, 6299 wmi_service_suiteb_roam_support, 6300 wmi_service_no_interband_mcc_support, 6301 wmi_service_dual_sta_roam_support, 6302 wmi_service_peer_create_conf, 6303 wmi_service_configure_roam_trigger_param_support, 6304 wmi_service_5dot9_ghz_support, 6305 wmi_service_cfr_ta_ra_as_fp_support, 6306 wmi_service_cfr_capture_count_support, 6307 wmi_service_ocv_support, 6308 wmi_service_ll_stats_per_chan_rx_tx_time, 6309 wmi_service_thermal_multi_client_support, 6310 wmi_service_mbss_param_in_vdev_start_support, 6311 wmi_service_fse_cmem_alloc_support, 6312 #ifdef FEATURE_CLUB_LL_STATS_AND_GET_STATION 6313 wmi_service_get_station_in_ll_stats_req, 6314 #endif 6315 wmi_service_scan_conf_per_ch_support, 6316 wmi_service_csa_beacon_template, 6317 wmi_service_twt_bcast_req_support, 6318 wmi_service_twt_bcast_resp_support, 6319 wmi_service_spectral_scan_disabled, 6320 #ifdef WLAN_SUPPORT_TWT 6321 wmi_service_twt_nudge, 6322 wmi_service_all_twt, 6323 wmi_service_twt_statistics, 6324 wmi_service_restricted_twt, 6325 #endif 6326 wmi_service_wapi_concurrency_supported, 6327 wmi_service_sap_connected_d3_wow, 6328 wmi_service_go_connected_d3_wow, 6329 wmi_service_ext_tpc_reg_support, 6330 wmi_service_ndi_txbf_support, 6331 wmi_service_reg_cc_ext_event_support, 6332 wmi_service_bang_radar_320_support, 6333 wmi_service_eirp_preferred_support, 6334 #if defined(CONFIG_BAND_6GHZ) 6335 wmi_service_lower_6g_edge_ch_supp, 6336 wmi_service_disable_upper_6g_edge_ch_supp, 6337 #ifdef CONFIG_AFC_SUPPORT 6338 wmi_service_afc_support, 6339 #endif 6340 #endif 6341 wmi_service_dcs_awgn_int_support, 6342 #ifdef WLAN_FEATURE_IGMP_OFFLOAD 6343 wmi_service_igmp_offload_support, 6344 #endif 6345 #ifdef WLAN_FEATURE_11BE 6346 wmi_service_11be, 6347 #endif 6348 #ifdef WLAN_FEATURE_11AX 6349 #ifdef FEATURE_WLAN_TDLS 6350 wmi_service_tdls_ax_support, 6351 #endif 6352 #endif 6353 #ifdef WLAN_FEATURE_11BE_MLO 6354 #ifdef FEATURE_WLAN_TDLS 6355 wmi_service_tdls_mlo_support, 6356 #endif 6357 #endif 6358 #ifdef WLAN_FEATURE_BIG_DATA_STATS 6359 wmi_service_big_data_support, 6360 #endif 6361 wmi_service_sae_eapol_offload_support, 6362 wmi_service_ampdu_tx_buf_size_256_support, 6363 wmi_service_halphy_cal_enable_disable_support, 6364 wmi_service_halphy_cal_status, 6365 wmi_service_rtt_ap_initiator_staggered_mode_supported, 6366 wmi_service_rtt_ap_initiator_bursted_mode_supported, 6367 wmi_service_ema_multiple_group_supported, 6368 wmi_service_large_beacon_supported, 6369 wmi_service_aoa_for_rcc_supported, 6370 #ifdef WLAN_FEATURE_P2P_P2P_STA 6371 wmi_service_p2p_p2p_cc_support, 6372 #endif 6373 #ifdef THERMAL_STATS_SUPPORT 6374 wmi_service_thermal_stats_temp_range_supported, 6375 #endif 6376 wmi_service_hw_mode_policy_offload_support, 6377 wmi_service_mgmt_rx_reo_supported, 6378 wmi_service_phy_dma_byte_swap_support, 6379 wmi_service_spectral_session_info_support, 6380 wmi_service_umac_hang_recovery_support, 6381 wmi_service_mu_snif, 6382 #ifdef WLAN_FEATURE_DYNAMIC_MAC_ADDR_UPDATE 6383 wmi_service_dynamic_update_vdev_macaddr_support, 6384 #endif 6385 wmi_service_probe_all_bw_support, 6386 wmi_service_pno_scan_conf_per_ch_support, 6387 #ifdef QCA_UNDECODED_METADATA_SUPPORT 6388 wmi_service_fp_phy_err_filter_support, 6389 #endif 6390 #ifdef WLAN_FEATURE_11BE_MLO 6391 wmi_service_mlo_sta_nan_ndi_support, 6392 #endif 6393 wmi_service_pdev_rate_config_support, 6394 wmi_service_multi_peer_group_cmd_support, 6395 #ifdef WLAN_FEATURE_11BE 6396 wmi_service_radar_found_chan_freq_eq_center_freq, 6397 #endif 6398 wmi_service_pn_replay_check_support, 6399 #ifdef QCA_RSSI_DB2DBM 6400 wmi_service_pdev_rssi_dbm_conv_event_support, 6401 #endif 6402 #ifdef WIFI_POS_CONVERGED 6403 wmi_service_rtt_11az_mac_phy_sec_support, 6404 wmi_service_rtt_11az_mac_sec_support, 6405 wmi_service_rtt_11az_ntb_support, 6406 wmi_service_rtt_11az_tb_support, 6407 wmi_service_rtt_11az_tb_rsta_support, 6408 #endif 6409 wmi_service_pktlog_decode_info_support, 6410 #ifdef WLAN_FEATURE_ROAM_OFFLOAD 6411 wmi_service_roam_stats_per_candidate_frame_info, 6412 #endif 6413 #ifdef MULTI_CLIENT_LL_SUPPORT 6414 wmi_service_configure_multi_client_ll_support, 6415 #endif 6416 #ifdef WLAN_VENDOR_HANDOFF_CONTROL 6417 wmi_service_configure_vendor_handoff_control_support, 6418 #endif 6419 #ifdef FEATURE_WLAN_TDLS 6420 #ifdef WLAN_FEATURE_11AX 6421 wmi_service_tdls_6g_support, 6422 #endif 6423 wmi_service_tdls_wideband_support, 6424 wmi_service_tdls_concurrency_support, 6425 #endif 6426 wmi_service_is_my_mgmt_frame, 6427 wmi_service_linkspeed_roam_trigger_support, 6428 #ifdef FEATURE_SET 6429 wmi_service_feature_set_event_support, 6430 #endif 6431 #ifdef WLAN_PDEV_VDEV_SEND_MULTI_PARAM 6432 wmi_service_combined_set_param_support, 6433 #endif 6434 #ifdef WLAN_FEATURE_SR 6435 wmi_service_obss_per_packet_sr_support, 6436 #endif 6437 wmi_service_wpa3_sha384_roam_support, 6438 wmi_service_multiple_vdev_restart_bmap, 6439 wmi_service_v1a_v1b_supported, 6440 wmi_service_self_mld_roam_between_dbs_and_hbs, 6441 wmi_service_cfr_capture_pdev_id_soc, 6442 #ifdef QCA_MANUAL_TRIGGERED_ULOFDMA 6443 wmi_service_manual_ulofdma_trigger_support, 6444 #endif 6445 wmi_service_pre_rx_timeout, 6446 #ifdef QCA_STANDALONE_SOUNDING_TRIGGER 6447 wmi_service_standalone_sound, 6448 #endif 6449 wmi_service_cca_busy_info_for_each_20mhz, 6450 wmi_service_vdev_param_chwidth_with_notify_support, 6451 6452 #ifdef WLAN_FEATURE_11BE_MLO 6453 wmi_service_mlo_tsf_sync, 6454 wmi_service_n_link_mlo_support, 6455 wmi_service_per_link_stats_support, 6456 wmi_service_pdev_wsi_stats_info_support, 6457 #endif 6458 wmi_service_aux_mac_support, 6459 #ifdef WLAN_ATF_INCREASED_STA 6460 wmi_service_atf_max_client_512_support, 6461 #endif 6462 wmi_service_fisa_dynamic_msdu_aggr_size_support, 6463 wmi_service_radar_flags_support, 6464 wmi_services_max, 6465 } wmi_conv_service_ids; 6466 #define WMI_SERVICE_UNAVAILABLE 0xFFFF 6467 6468 /** 6469 * enum WMI_DBG_PARAM - Debug params 6470 * @WMI_DBGLOG_LOG_LEVEL: Set the loglevel 6471 * @WMI_DBGLOG_VAP_ENABLE: Enable VAP level debug 6472 * @WMI_DBGLOG_VAP_DISABLE: Disable VAP level debug 6473 * @WMI_DBGLOG_MODULE_ENABLE: Enable MODULE level debug 6474 * @WMI_DBGLOG_MODULE_DISABLE: Disable MODULE level debug 6475 * @WMI_DBGLOG_MOD_LOG_LEVEL: Enable MODULE level debug 6476 * @WMI_DBGLOG_TYPE: set type of the debug output 6477 * @WMI_DBGLOG_REPORT_ENABLE: Enable Disable debug 6478 * @WMI_DBGLOG_MOD_WOW_LOG_LEVEL: set the WOW MODULE debug loglevel 6479 */ 6480 typedef enum { 6481 WMI_DBGLOG_LOG_LEVEL = 0x1, 6482 WMI_DBGLOG_VAP_ENABLE, 6483 WMI_DBGLOG_VAP_DISABLE, 6484 WMI_DBGLOG_MODULE_ENABLE, 6485 WMI_DBGLOG_MODULE_DISABLE, 6486 WMI_DBGLOG_MOD_LOG_LEVEL, 6487 WMI_DBGLOG_TYPE, 6488 WMI_DBGLOG_REPORT_ENABLE, 6489 WMI_DBGLOG_MOD_WOW_LOG_LEVEL 6490 } WMI_DBG_PARAM; 6491 6492 /** 6493 * struct wmi_host_fw_ver - FW version in non-tlv target 6494 * @sw_version: Version info 6495 * @sw_version_1: Second dword of version 6496 */ 6497 struct wmi_host_fw_ver { 6498 uint32_t sw_version; 6499 uint32_t sw_version_1; 6500 }; 6501 6502 /** 6503 * struct wmi_host_fw_abi_ver - FW version in non-tlv target 6504 * @sw_version: Version info 6505 * @abi_version: ABI version 6506 */ 6507 struct wmi_host_fw_abi_ver { 6508 uint32_t sw_version; 6509 uint32_t abi_version; 6510 }; 6511 6512 /** 6513 * enum WMI_HOST_WIFI_STANDARD - Supported wifi standard 6514 * @WMI_HOST_WIFI_STANDARD_4: Wifi standard 4 6515 * @WMI_HOST_WIFI_STANDARD_5:Wifi standard 5 6516 * @WMI_HOST_WIFI_STANDARD_6: Wifi standard 6 6517 * @WMI_HOST_WIFI_STANDARD_6E: Wifi standard 6E 6518 * @WMI_HOST_WIFI_STANDARD_7: Wifi standard 7 6519 */ 6520 typedef enum { 6521 WMI_HOST_WIFI_STANDARD_4 = 0, 6522 WMI_HOST_WIFI_STANDARD_5 = 1, 6523 WMI_HOST_WIFI_STANDARD_6 = 2, 6524 WMI_HOST_WIFI_STANDARD_6E = 3, 6525 WMI_HOST_WIFI_STANDARD_7 = 4, 6526 } WMI_HOST_WIFI_STANDARD; 6527 6528 #ifdef FEATURE_SET 6529 /** 6530 * enum WMI_HOST_BAND_CONCURRENCY - Enum to represent supported concurrency 6531 * @WMI_HOST_BAND_CONCURRENCY_NONE: No concurrency is supported 6532 * @WMI_HOST_BAND_CONCURRENCY_DBS: DBS is supported 6533 * @WMI_HOST_BAND_CONCURRENCY_DBS_SBS: DBS and SBS are supported 6534 */ 6535 typedef enum { 6536 WMI_HOST_BAND_CONCURRENCY_NONE = 0, 6537 WMI_HOST_BAND_CONCURRENCY_DBS = 1, 6538 WMI_HOST_BAND_CONCURRENCY_DBS_SBS = 2, 6539 } WMI_HOST_BAND_CONCURRENCY; 6540 6541 /** 6542 * enum WMI_HOST_VENDOR1_REQ1_VERSION - Vendor 1 requirement 1 version 6543 * @WMI_HOST_VENDOR1_REQ1_VERSION_3_00: Major version 3, minor version 00 6544 * @WMI_HOST_VENDOR1_REQ1_VERSION_3_01: Major version 3, minor version 01 6545 * @WMI_HOST_VENDOR1_REQ1_VERSION_3_20: Major version 3, minor version 20 6546 * @WMI_HOST_VENDOR1_REQ1_VERSION_3_30: Major version 3, minor version 30 6547 * @WMI_HOST_VENDOR1_REQ1_VERSION_3_40: Major version 3, minor version 40 6548 * @WMI_HOST_VENDOR1_REQ1_VERSION_4_00: Major version 4, minor version 00 6549 */ 6550 typedef enum { 6551 WMI_HOST_VENDOR1_REQ1_VERSION_3_00 = 0, 6552 WMI_HOST_VENDOR1_REQ1_VERSION_3_01 = 1, 6553 WMI_HOST_VENDOR1_REQ1_VERSION_3_20 = 2, 6554 WMI_HOST_VENDOR1_REQ1_VERSION_3_30 = 3, 6555 WMI_HOST_VENDOR1_REQ1_VERSION_3_40 = 4, 6556 WMI_HOST_VENDOR1_REQ1_VERSION_4_00 = 5, 6557 } WMI_HOST_VENDOR1_REQ1_VERSION; 6558 6559 /** 6560 * enum WMI_HOST_VENDOR1_REQ2_VERSION - Vendor 1 requirement 2 version 6561 * @WMI_HOST_VENDOR1_REQ2_VERSION_3_00: Major version 3, minor version 00 6562 * @WMI_HOST_VENDOR1_REQ2_VERSION_3_01: Major version 3, minor version 01 6563 * @WMI_HOST_VENDOR1_REQ2_VERSION_3_20: Major version 3, minor version 20 6564 * @WMI_HOST_VENDOR1_REQ2_VERSION_3_50: Major version 3, minor version 50 6565 */ 6566 typedef enum { 6567 WMI_HOST_VENDOR1_REQ2_VERSION_3_00 = 0, 6568 WMI_HOST_VENDOR1_REQ2_VERSION_3_01 = 1, 6569 WMI_HOST_VENDOR1_REQ2_VERSION_3_20 = 2, 6570 WMI_HOST_VENDOR1_REQ2_VERSION_3_50 = 3, 6571 } WMI_HOST_VENDOR1_REQ2_VERSION; 6572 6573 /** 6574 * enum WMI_HOST_NUM_ANTENNAS - Number of antennas 6575 * @WMI_HOST_SISO: When 1x1 is supported 6576 * @WMI_HOST_MIMO_2X2: When 2x2 MIMO is supported 6577 */ 6578 6579 typedef enum { 6580 WMI_HOST_SISO = 1, 6581 WMI_HOST_MIMO_2X2 = 2, 6582 } WMI_HOST_NUM_ANTENNAS; 6583 6584 /** 6585 * struct target_feature_set - Feature set structure 6586 * @wifi_standard: Wifi standard 6587 * @concurrency_support: Indicates supported concurrencies 6588 * @pno_in_unassoc_state: Indicates PNO support in un assoc state 6589 * @pno_in_assoc_state: Indicates PNO support in assoc state 6590 * @enable_twt: Enable TWT 6591 * @enable_twt_requester: Enable TWT requester 6592 * @enable_twt_broadcast: Enable TWT broadcast 6593 * @enable_twt_flexible: Enable flexible TWT 6594 * @enable_wifi_optimizer: indicates wifi optimizer is enabled or disabled 6595 * @enable_rfc835: indicates rfc835 is enabled or disabled 6596 * @sap_5g_supported: Indicates SAP 5g is supported or not 6597 * @sap_6g_supported: Indicates SAP 6g is supported or not 6598 * @band_capability: Band capability bit map 6599 * @sap_max_num_clients: Max clients supported by SAP 6600 * @set_country_code_hal_supported: Indicates country code hal supported or not 6601 * @get_valid_channel_supported: Indicates get valid channel supported or not 6602 * @supported_dot11mode: Indicates supported dot11 mode 6603 * @sap_wpa3_support: Indicates wpa3 support for SAP 6604 * @vendor_req_1_version: Indicates vendor1 req1 version 6605 * @roaming_high_cu_roam_trigger: Roaming high CPU trigger enabled or disabled 6606 * @roaming_emergency_trigger: Roaming emergency trigger enabled or disabled 6607 * @roaming_btm_trihgger: Roaming btm trigger enabled or disabled 6608 * @roaming_idle_trigger: Roaming idle trigger enabled or disabled 6609 * @roaming_wtc_trigger: Roaming wtc trigger enabled or disabled 6610 * @roaming_btcoex_trigger: Roaming btcoex trigger enabled or disabled 6611 * @roaming_btw_wpa_wpa2: Roaming btw wpa wpa2 enabled or disabled 6612 * @roaming_manage_chan_list_api: Roaming manage chan list api enabled or 6613 * disabled 6614 * @roaming_adaptive_11r: Roaming adaptive 11r enabled or disabled 6615 * @roaming_ctrl_api_get_set: Roaming ctrl api get set enabled or disabled 6616 * @roaming_ctrl_api_reassoc: Roaming ctrl api reassoc enabled or disabled 6617 * @roaming_ctrl_get_cu: Roaming ctrl get cu enabled or disabled 6618 * @vendor_req_2_version: Vendor requirement version 2 6619 * @assurance_disconnect_reason_api: Assurance disconnect API supported or not 6620 * @frame_pcap_log_mgmt: Frame pcap logging mgmt supported or not 6621 * @frame_pcap_log_ctrl: Frame pcap logging ctrl supported or not 6622 * @frame_pcap_log_data: Frame pcap logging data supported or not 6623 * @security_wpa3_sae_h2e: Security wpa3 sae h2e supported or not 6624 * @security_wpa3_sae_ft: Security wpa3 sae ft supported or not 6625 * @security_wpa3_enterp_suitb: Security wpa3 enterprise suitb supported or not 6626 * @security_wpa3_enterp_suitb_192bit: Security wpa3 enterprise suitb 192bit 6627 * supported or not 6628 * @security_fills_sha_256: Security fills sha 256 supported or not 6629 * @security_fills_sha_384: Security fills sha 384 supported or not 6630 * @security_fills_sha_256_FT: Security fills sha 256 FT supported or not 6631 * @security_fills_sha_384_FT: Security fills sha 384 FT supported or not 6632 * @security_enhanced_open: Security enhanced open supported or not 6633 * @enable_nan: enable NAN 6634 * @enable_tdls: Enable tdls 6635 * @enable_p2p_6e: Enable p2p 6e 6636 * @enable_tdls_offchannel: Enable tdls offchannel 6637 * @enable_tdls_capability_enhance: Enable tdls capability enhance 6638 * @max_tdls_peers: Max tdls peers 6639 * @sta_dual_p2p_support: Indicates sta+p2p+p2p support 6640 * @peer_bigdata_getbssinfo_support: Indicates bigdata getbssinfo support 6641 * @peer_bigdata_assocreject_info_support: Indicates bigdata assoc reject 6642 * info support 6643 * @peer_getstainfo_support: Indicates getstainfo support 6644 * @feature_set_version: Indicates feature set version info 6645 * @num_antennas: Indicates number of antennas supported 6646 * @sta_dump_support: Indicates sta dump info support 6647 */ 6648 struct target_feature_set { 6649 WMI_HOST_WIFI_STANDARD wifi_standard; 6650 WMI_HOST_BAND_CONCURRENCY concurrency_support; 6651 bool pno_in_unassoc_state; 6652 bool pno_in_assoc_state; 6653 bool enable_twt; 6654 bool enable_twt_requester; 6655 bool enable_twt_broadcast; 6656 bool enable_twt_flexible; 6657 bool enable_wifi_optimizer; 6658 bool enable_rfc835; 6659 bool sap_5g_supported; 6660 bool sap_6g_supported; 6661 uint32_t band_capability; 6662 uint8_t sap_max_num_clients; 6663 bool set_country_code_hal_supported; 6664 bool get_valid_channel_supported; 6665 uint8_t supported_dot11mode; 6666 bool sap_wpa3_support; 6667 WMI_HOST_VENDOR1_REQ1_VERSION vendor_req_1_version; 6668 bool roaming_high_cu_roam_trigger; 6669 bool roaming_emergency_trigger; 6670 bool roaming_btm_trihgger; 6671 bool roaming_idle_trigger; 6672 bool roaming_wtc_trigger; 6673 bool roaming_btcoex_trigger; 6674 bool roaming_btw_wpa_wpa2; 6675 bool roaming_manage_chan_list_api; 6676 bool roaming_adaptive_11r; 6677 bool roaming_ctrl_api_get_set; 6678 bool roaming_ctrl_api_reassoc; 6679 bool roaming_ctrl_get_cu; 6680 WMI_HOST_VENDOR1_REQ2_VERSION vendor_req_2_version; 6681 bool assurance_disconnect_reason_api; 6682 bool frame_pcap_log_mgmt; 6683 bool frame_pcap_log_ctrl; 6684 bool frame_pcap_log_data; 6685 bool security_wpa3_sae_h2e; 6686 bool security_wpa3_sae_ft; 6687 bool security_wpa3_enterp_suitb; 6688 bool security_wpa3_enterp_suitb_192bit; 6689 bool security_fills_sha_256; 6690 bool security_fills_sha_384; 6691 bool security_fills_sha_256_FT; 6692 bool security_fills_sha_384_FT; 6693 bool security_enhanced_open; 6694 bool enable_nan; 6695 bool enable_tdls; 6696 bool enable_p2p_6e; 6697 bool enable_tdls_offchannel; 6698 bool enable_tdls_capability_enhance; 6699 uint8_t max_tdls_peers; 6700 bool sta_dual_p2p_support; 6701 bool peer_bigdata_getbssinfo_support; 6702 bool peer_bigdata_assocreject_info_support; 6703 bool peer_getstainfo_support; 6704 uint16_t feature_set_version; 6705 WMI_HOST_NUM_ANTENNAS num_antennas; 6706 bool sta_dump_support; 6707 }; 6708 #endif 6709 6710 /** 6711 * struct target_resource_config - Resource config sent from host to target 6712 * abstracted out to include union of both configs 6713 * @num_vdevs: Number vdevs configured 6714 * @num_peers: Number of peers 6715 * @num_active_peers: Number of active peers for peer cache 6716 * @num_offload_peers: Number of offload peers 6717 * @num_offload_reorder_buffs: number of offload reorder buffs 6718 * @num_peer_keys: number of peer keys 6719 * @num_tids: number of tids 6720 * @ast_skid_limit: AST skid limit 6721 * @tx_chain_mask: TX chain mask 6722 * @rx_chain_mask: RX chain mask 6723 * @rx_timeout_pri: RX reorder timeout per AC 6724 * @rx_decap_mode: RX decap mode 6725 * @scan_max_pending_req: Scan mac pending req 6726 * @bmiss_offload_max_vdev: Beacom miss offload max vdevs 6727 * @roam_offload_max_vdev: Roam offload max vdevs 6728 * @roam_offload_max_ap_profiles: roam offload max ap profiles 6729 * @num_mcast_groups: num mcast groups 6730 * @num_mcast_table_elems: number of macst table elems 6731 * @mcast2ucast_mode: mcast enhance mode 6732 * @tx_dbg_log_size: DBG log buf size 6733 * @num_wds_entries: number of WDS entries 6734 * @dma_burst_size: DMA burst size. 6735 * @mac_aggr_delim: Mac aggr delim 6736 * @rx_skip_defrag_timeout_dup_detection_check: Defrag dup check in host? 6737 * @vow_config: vow configuration 6738 * @gtk_offload_max_vdev: Max vdevs for GTK offload 6739 * @num_msdu_desc: Number of msdu desc 6740 * @max_frag_entries: Max frag entries 6741 * @scheduler_params: 6742 * @agile_capability: Target Agile Capability 6743 * End common 6744 * @enable_pci_gen: To enable pci gen switch 6745 * @max_peer_ext_stats: Max peer EXT stats 6746 * @smart_ant_cap: Smart antenna capabilities 6747 * @BK_Minfree: BIN configuration for BK traffic 6748 * @BE_Minfree: BIN configuration for BE traffic 6749 * @VI_Minfree: BIN configuration for VI traffic 6750 * @VO_Minfree: BIN configuration for VO traffic 6751 * @rx_batchmode: RX batch mode 6752 * @tt_support: Thermal throttling support 6753 * @atf_config: ATF config 6754 * @mgmt_comp_evt_bundle_support: bundle support required for mgmt complete evt 6755 * @tx_msdu_new_partition_id_support: new partiition id support for tx msdu 6756 * @new_htt_msg_format: 6757 * @peer_unmap_conf_support: peer unmap conf support in fw 6758 * @pktcapture_support: 6759 * @iphdr_pad_config: ipheader pad config 6760 * @qwrap_config: Qwrap configuration 6761 * @alloc_frag_desc_for_data_pkt: Frag desc for data 6762 * Added in MCL 6763 * @num_tdls_vdevs: 6764 * @num_tdls_conn_table_entries: 6765 * @beacon_tx_offload_max_vdev: 6766 * @num_multicast_filter_entries: 6767 * @num_wow_filters: 6768 * @num_keep_alive_pattern: 6769 * @keep_alive_pattern_size: 6770 * @max_tdls_concurrent_sleep_sta: 6771 * @max_tdls_concurrent_buffer_sta: 6772 * @wmi_send_separate: 6773 * @num_ocb_vdevs: 6774 * @num_ocb_channels: 6775 * @num_ocb_schedules: 6776 * @num_packet_filters: maximum number of packet filter rules to support 6777 * @num_max_sta_vdevs: maximum number of concurrent station vdevs to support 6778 * @num_ns_ext_tuples_cfg: 6779 * @apf_instruction_size: 6780 * @max_bssid_rx_filters: 6781 * @use_pdev_id: 6782 * @max_num_dbs_scan_duty_cycle: max dbs can duty cycle value 6783 * @cce_disable: disable cce component 6784 * @peer_map_unmap_v2: peer_map_unmap_version: configure peer map/unmap version 6785 * @peer_map_unmap_version: 6786 * @twt_ap_pdev_count: Number of MAC on which AP TWT feature is supported 6787 * @twt_ap_sta_count: Max no of STA with which TWT sessions can be formed 6788 * by the AP 6789 * @max_bssid_indicator: max number of MBSS VAPs 6790 * @eapol_minrate_set: 6791 * @eapol_minrate_ac_set: 6792 * @tstamp64_en: 6793 * @three_way_coex_config_legacy_en: enable three way coex legacy feature 6794 * @max_num_group_keys: max number of group keys supported for VLAN 6795 * @re_ul_resp: enable 11ax UL response feature (UL-OFDMA) for repeater 6796 * @ipa_disable: disable IPA feature 6797 * @ast_1_valid_mask_enable: mask to enable ast index 1 6798 * @ast_2_valid_mask_enable: mask to enable ast index 2 6799 * @ast_3_valid_mask_enable: mask to enable ast index 3 6800 * @ast_0_flow_mask_enable: mask to enable flow support for ast index 0 6801 * @ast_1_flow_mask_enable: mask to enable flow support for ast index 1 6802 * @ast_2_flow_mask_enable: mask to enable flow support for ast index 2 6803 * @ast_3_flow_mask_enable: mask to enable flow support for ast index 3 6804 * @ast_tid_high_mask_enable: enable tid valid mask for high priority flow 6805 * @ast_tid_low_mask_enable: enable tid valid mask for low priority flow 6806 * @nan_separate_iface_support: Separate iface creation for NAN 6807 * @time_sync_ftm: enable ftm based time sync 6808 * @is_reg_cc_ext_event_supported: Flag to indicate if reg_cc_ext is supported 6809 * @is_host_dfs_320mhz_bangradar_supported: Flag to indicate dfs 320 supported 6810 * @max_rnr_neighbours: Max supported RNR neighbors in multisoc APs 6811 * @ema_max_vap_cnt: Number of maximum EMA tx-vaps at any instance of time 6812 * @ema_max_profile_period: Maximum EMA profile periodicity on any pdev 6813 * @max_ndp_sessions: Max ndp sessions support 6814 * @max_ndi: max number of ndi host supports 6815 * @carrier_vow_optimization: configure vow-optimization for carrier-usecase 6816 * @is_sap_connected_d3wow_enabled: is sap d3wow with connected client supported 6817 * @is_go_connected_d3wow_enabled: is go d3wow with connected client supported 6818 * @sae_eapol_offload: 6819 * @dynamic_pcie_gen_speed_change: is dynamic pcie gen speed change enabled 6820 * @twt_ack_support_cap: 6821 * @ema_init_config: 6822 * @target_cap_flags: 6823 * @is_6ghz_sp_pwrmode_supp_enabled: Indicates whether AP is capable of 6824 * operating in SP Power mode in 6GHz. 6825 * 0 - AP can operate in non-SP power mode. 6826 * Eg: LPI mode 6827 * 1 - AP can operate in all power modes, 6828 * inclusive of SP power mode. 6829 * @afc_timer_check_disable: Disables AFC Timer related checks in FW 6830 * @afc_req_id_check_disable: Disables AFC Request ID check in FW 6831 * @afc_indoor_support: AFC support indoor deployment 6832 * @afc_outdoor_support: AFC support outdoor deployment 6833 * @carrier_profile_config: Configuration for per-carrier profile 6834 * @sawf: 6835 * @reo_qdesc_shared_addr_table_enabled: Reo shared qref enhancement enabled 6836 * @num_max_active_vdevs: max number of active virtual devices (VAPs) to 6837 * support 6838 * @num_max_mlo_link_per_ml_bss: number of max partner links of a ML BSS 6839 * @notify_frame_support: capability to mark notify frames from host 6840 * @dp_peer_meta_data_ver: datapath peer meta data version flag 6841 * @tx_ilp_enable: capability to support TX ILP from host 6842 * @rf_path: Indicates RF path 0 primary, 1 secondary 6843 * @fw_ast_indication_disable: Disable AST indication 6844 * @is_full_bw_nol_supported: Is full bandwidth needed to put to NOL 6845 */ 6846 typedef struct { 6847 uint32_t num_vdevs; 6848 uint32_t num_peers; 6849 uint32_t num_active_peers; 6850 uint32_t num_offload_peers; 6851 uint32_t num_offload_reorder_buffs; 6852 uint32_t num_peer_keys; 6853 uint32_t num_tids; 6854 uint32_t ast_skid_limit; 6855 uint32_t tx_chain_mask; 6856 uint32_t rx_chain_mask; 6857 uint32_t rx_timeout_pri[4]; 6858 uint32_t rx_decap_mode; 6859 uint32_t scan_max_pending_req; 6860 uint32_t bmiss_offload_max_vdev; 6861 uint32_t roam_offload_max_vdev; 6862 uint32_t roam_offload_max_ap_profiles; 6863 uint32_t num_mcast_groups; 6864 uint32_t num_mcast_table_elems; 6865 uint32_t mcast2ucast_mode; 6866 uint32_t tx_dbg_log_size; 6867 uint32_t num_wds_entries; 6868 uint32_t dma_burst_size; 6869 uint32_t mac_aggr_delim; 6870 uint32_t rx_skip_defrag_timeout_dup_detection_check; 6871 uint32_t vow_config; 6872 uint32_t gtk_offload_max_vdev; 6873 uint32_t num_msdu_desc; /* Number of msdu desc */ 6874 uint32_t max_frag_entries; 6875 uint32_t scheduler_params; 6876 uint32_t agile_capability; 6877 uint32_t enable_pci_gen; 6878 /* End common */ 6879 6880 /* Added for Beeliner */ 6881 uint32_t max_peer_ext_stats; 6882 uint32_t smart_ant_cap; 6883 uint32_t BK_Minfree; 6884 uint32_t BE_Minfree; 6885 uint32_t VI_Minfree; 6886 uint32_t VO_Minfree; 6887 uint32_t rx_batchmode; 6888 uint32_t tt_support; 6889 uint32_t atf_config:1, 6890 mgmt_comp_evt_bundle_support:1, 6891 tx_msdu_new_partition_id_support:1, 6892 new_htt_msg_format:1, 6893 peer_unmap_conf_support:1, 6894 pktcapture_support:1; 6895 uint32_t iphdr_pad_config; 6896 uint32_t 6897 qwrap_config:16, 6898 alloc_frag_desc_for_data_pkt:16; 6899 6900 /* Added in MCL */ 6901 uint32_t num_tdls_vdevs; 6902 uint32_t num_tdls_conn_table_entries; 6903 uint32_t beacon_tx_offload_max_vdev; 6904 uint32_t num_multicast_filter_entries; 6905 uint32_t num_wow_filters; 6906 uint32_t num_keep_alive_pattern; 6907 uint32_t keep_alive_pattern_size; 6908 uint32_t max_tdls_concurrent_sleep_sta; 6909 uint32_t max_tdls_concurrent_buffer_sta; 6910 uint32_t wmi_send_separate; 6911 uint32_t num_ocb_vdevs; 6912 uint32_t num_ocb_channels; 6913 uint32_t num_ocb_schedules; 6914 uint32_t num_packet_filters; 6915 uint32_t num_max_sta_vdevs; 6916 uint32_t num_ns_ext_tuples_cfg; 6917 uint32_t apf_instruction_size; 6918 uint32_t max_bssid_rx_filters; 6919 uint32_t use_pdev_id; 6920 uint32_t max_num_dbs_scan_duty_cycle; 6921 bool cce_disable; 6922 union { 6923 bool peer_map_unmap_v2; 6924 uint8_t peer_map_unmap_version; 6925 }; 6926 uint32_t twt_ap_pdev_count; 6927 uint32_t twt_ap_sta_count; 6928 uint32_t max_bssid_indicator; 6929 uint32_t eapol_minrate_set:1, 6930 eapol_minrate_ac_set:2; 6931 bool tstamp64_en; 6932 bool three_way_coex_config_legacy_en; 6933 uint32_t max_num_group_keys; 6934 uint32_t re_ul_resp; 6935 bool ipa_disable; 6936 uint32_t ast_1_valid_mask_enable:1, 6937 ast_2_valid_mask_enable:1, 6938 ast_3_valid_mask_enable:1; 6939 uint32_t ast_0_flow_mask_enable:4, 6940 ast_1_flow_mask_enable:4, 6941 ast_2_flow_mask_enable:4, 6942 ast_3_flow_mask_enable:4, 6943 ast_tid_high_mask_enable:8, 6944 ast_tid_low_mask_enable:8; 6945 bool nan_separate_iface_support; 6946 bool time_sync_ftm; 6947 bool is_reg_cc_ext_event_supported; 6948 bool is_host_dfs_320mhz_bangradar_supported; 6949 uint32_t max_rnr_neighbours; 6950 uint32_t ema_max_vap_cnt; 6951 uint32_t ema_max_profile_period; 6952 uint32_t max_ndp_sessions; 6953 uint32_t max_ndi; 6954 bool carrier_vow_optimization; 6955 uint32_t is_sap_connected_d3wow_enabled; 6956 uint32_t is_go_connected_d3wow_enabled; 6957 bool sae_eapol_offload; 6958 bool dynamic_pcie_gen_speed_change; 6959 bool twt_ack_support_cap; 6960 uint32_t ema_init_config; 6961 uint32_t target_cap_flags; 6962 bool is_6ghz_sp_pwrmode_supp_enabled; 6963 bool afc_timer_check_disable; 6964 bool afc_req_id_check_disable; 6965 bool afc_indoor_support; 6966 bool afc_outdoor_support; 6967 uint32_t carrier_profile_config; 6968 bool sawf; 6969 bool reo_qdesc_shared_addr_table_enabled; 6970 uint32_t num_max_active_vdevs; 6971 uint32_t num_max_mlo_link_per_ml_bss; 6972 uint8_t notify_frame_support; 6973 uint8_t dp_peer_meta_data_ver; 6974 #ifdef DP_TX_PACKET_INSPECT_FOR_ILP 6975 uint8_t tx_ilp_enable; 6976 #endif 6977 bool rf_path; 6978 bool fw_ast_indication_disable; 6979 bool is_full_bw_nol_supported; 6980 } target_resource_config; 6981 6982 /** 6983 * enum WMI_HOST_START_EVENT_PARAM - Enum replicated for host abstraction 6984 * with FW 6985 * @WMI_HOST_VDEV_START_RESP_EVENT: Event response of START CMD 6986 * @WMI_HOST_VDEV_RESTART_RESP_EVENT: Event response of RESTART CMD 6987 */ 6988 typedef enum { 6989 /* Event response of START CMD */ 6990 WMI_HOST_VDEV_START_RESP_EVENT = 0, 6991 /* Event response of RESTART CMD */ 6992 WMI_HOST_VDEV_RESTART_RESP_EVENT, 6993 } WMI_HOST_START_EVENT_PARAM; 6994 6995 /** 6996 * struct wmi_host_roam_event - host roam event param 6997 * @vdev_id: vdev id 6998 * @reason: roam reason 6999 * @rssi: RSSI 7000 */ 7001 typedef struct { 7002 uint32_t vdev_id; 7003 uint32_t reason; 7004 uint32_t rssi; 7005 } wmi_host_roam_event; 7006 7007 /** 7008 * enum wmi_host_scan_event_type - Scan event type 7009 * @WMI_HOST_SCAN_EVENT_STARTED: 7010 * @WMI_HOST_SCAN_EVENT_COMPLETED: 7011 * @WMI_HOST_SCAN_EVENT_BSS_CHANNEL: 7012 * @WMI_HOST_SCAN_EVENT_FOREIGN_CHANNEL: 7013 * @WMI_HOST_SCAN_EVENT_DEQUEUED: 7014 * @WMI_HOST_SCAN_EVENT_PREEMPTED: 7015 * @WMI_HOST_SCAN_EVENT_START_FAILED: 7016 * @WMI_HOST_SCAN_EVENT_RESTARTED: 7017 * @WMI_HOST_SCAN_EVENT_FOREIGN_CHANNEL_EXIT: 7018 * @WMI_HOST_SCAN_EVENT_INVALID: 7019 * @WMI_HOST_SCAN_EVENT_GPIO_TIMEOUT: 7020 * @WMI_HOST_SCAN_EVENT_MAX: 7021 */ 7022 enum wmi_host_scan_event_type { 7023 WMI_HOST_SCAN_EVENT_STARTED = 0x1, 7024 WMI_HOST_SCAN_EVENT_COMPLETED = 0x2, 7025 WMI_HOST_SCAN_EVENT_BSS_CHANNEL = 0x4, 7026 WMI_HOST_SCAN_EVENT_FOREIGN_CHANNEL = 0x8, 7027 WMI_HOST_SCAN_EVENT_DEQUEUED = 0x10, 7028 WMI_HOST_SCAN_EVENT_PREEMPTED = 0x20, 7029 WMI_HOST_SCAN_EVENT_START_FAILED = 0x40, 7030 WMI_HOST_SCAN_EVENT_RESTARTED = 0x80, 7031 WMI_HOST_SCAN_EVENT_FOREIGN_CHANNEL_EXIT = 0x100, 7032 WMI_HOST_SCAN_EVENT_INVALID = 0x200, 7033 WMI_HOST_SCAN_EVENT_GPIO_TIMEOUT = 0x400, 7034 WMI_HOST_SCAN_EVENT_MAX = 0x8000 7035 }; 7036 7037 /** 7038 * enum wmi_host_scan_completion_reason - Scan completion event type 7039 * @WMI_HOST_SCAN_REASON_NONE: 7040 * @WMI_HOST_SCAN_REASON_COMPLETED: 7041 * @WMI_HOST_SCAN_REASON_CANCELLED: 7042 * @WMI_HOST_SCAN_REASON_PREEMPTED: 7043 * @WMI_HOST_SCAN_REASON_TIMEDOUT: 7044 * @WMI_HOST_SCAN_REASON_INTERNAL_FAILURE: 7045 * @WMI_HOST_SCAN_REASON_MAX: 7046 */ 7047 enum wmi_host_scan_completion_reason { 7048 WMI_HOST_SCAN_REASON_NONE = 0xFF, 7049 WMI_HOST_SCAN_REASON_COMPLETED = 0, 7050 WMI_HOST_SCAN_REASON_CANCELLED = 1, 7051 WMI_HOST_SCAN_REASON_PREEMPTED = 2, 7052 WMI_HOST_SCAN_REASON_TIMEDOUT = 3, 7053 WMI_HOST_SCAN_REASON_INTERNAL_FAILURE = 4, 7054 WMI_HOST_SCAN_REASON_MAX, 7055 }; 7056 7057 /** 7058 * struct wmi_host_scan_event - Scan event response from target 7059 * @event: event type 7060 * @reason: Reason for event 7061 * @channel_freq: channel frequency 7062 * @requestor: requestor id 7063 * @scan_id: scan id 7064 * @vdev_id: vdev id 7065 */ 7066 typedef struct { 7067 uint32_t event; 7068 uint32_t reason; 7069 uint32_t channel_freq; 7070 uint32_t requestor; 7071 uint32_t scan_id; 7072 uint32_t vdev_id; 7073 } wmi_host_scan_event; 7074 7075 /** 7076 * struct wmi_host_pdev_reserve_ast_entry_event - Reserve AST entry 7077 * @result: result 7078 */ 7079 typedef struct { 7080 uint32_t result; 7081 } wmi_host_pdev_reserve_ast_entry_event; 7082 7083 /** 7084 * struct wmi_host_mcast_ageout_entry - mcast aged-out entry 7085 * @grp_addr: IPv4/6 mcast group addr 7086 * @vdev_id: vdev id 7087 */ 7088 typedef struct { 7089 uint8_t grp_addr[16]; 7090 uint32_t vdev_id; 7091 } wmi_host_mcast_ageout_entry; 7092 7093 /** 7094 * struct wmi_host_mcast_list_ageout_event - List of mcast entry aged-out 7095 * @num_entry: Number of mcast entries timed-out 7096 * @entry: List of wmi_host_mcast_ageout_entry 7097 */ 7098 typedef struct { 7099 uint32_t num_entry; 7100 wmi_host_mcast_ageout_entry entry[1]; 7101 } wmi_host_mcast_list_ageout_event; 7102 7103 /** 7104 * enum wmi_host_pdev_tpc_event_offset: offsets of TPC events 7105 * @WMI_HOST_TX_POWER_MAX: offset of max tx power 7106 * @WMI_HOST_TX_POWER_MIN: offset of min tx power 7107 * @WMI_HOST_TX_POWER_LEN: size of tpc values 7108 */ 7109 enum wmi_host_pdev_tpc_event_offset { 7110 WMI_HOST_TX_POWER_MAX, 7111 WMI_HOST_TX_POWER_MIN, 7112 WMI_HOST_TX_POWER_LEN, 7113 }; 7114 7115 /** 7116 * struct wmi_host_pdev_generic_buffer_event 7117 * @buf_type: Buffer type 7118 * @frag_id: Frag id 7119 * @more_frag: more frags pending 7120 * @buf_len: buffer length 7121 * @buf_info: variable length buffer 7122 */ 7123 typedef struct { 7124 uint32_t buf_type; 7125 uint32_t frag_id; 7126 uint32_t more_frag; 7127 uint32_t buf_len; 7128 uint32_t buf_info[1]; 7129 } wmi_host_pdev_generic_buffer_event; 7130 7131 /** 7132 * enum WMI_HOST_BUFFER_TYPE - Enum for host buffer event 7133 * @WMI_HOST_BUFFER_TYPE_RATEPWR_TABLE: 7134 * @WMI_HOST_BUFFER_TYPE_CTL_TABLE: 7135 */ 7136 enum WMI_HOST_BUFFER_TYPE { 7137 WMI_HOST_BUFFER_TYPE_RATEPWR_TABLE, 7138 WMI_HOST_BUFFER_TYPE_CTL_TABLE, 7139 }; 7140 7141 /** 7142 * enum WMI_HOST_TPC_CONFIG_EVENT_FLAG - Enums for TPC event 7143 * @WMI_HOST_TPC_CONFIG_EVENT_FLAG_TABLE_CDD: 7144 * @WMI_HOST_TPC_CONFIG_EVENT_FLAG_TABLE_STBC: 7145 * @WMI_HOST_TPC_CONFIG_EVENT_FLAG_TABLE_TXBF: 7146 */ 7147 typedef enum { 7148 WMI_HOST_TPC_CONFIG_EVENT_FLAG_TABLE_CDD = 0x1, 7149 WMI_HOST_TPC_CONFIG_EVENT_FLAG_TABLE_STBC = 0x2, 7150 WMI_HOST_TPC_CONFIG_EVENT_FLAG_TABLE_TXBF = 0x4, 7151 } WMI_HOST_TPC_CONFIG_EVENT_FLAG; 7152 7153 /** 7154 * enum WMI_HOST_MU_ALGO_TYPE - Medium Utilization evaluation algorithms 7155 * These algorithms can be complementary rather than exclusive. 7156 * @WMI_HOST_MU_BASIC_ALGO: 7157 * @WMI_HOST_MU_PER_BSSID_ALGO: 7158 * @WMI_HOST_MU_HIDDEN_NODE_ALGO: 7159 */ 7160 typedef enum { 7161 WMI_HOST_MU_BASIC_ALGO = 0x1, 7162 WMI_HOST_MU_PER_BSSID_ALGO = 0x2, 7163 WMI_HOST_MU_HIDDEN_NODE_ALGO = 0x4, 7164 } WMI_HOST_MU_ALGO_TYPE; 7165 /* max MU alg combinations supported by target */ 7166 #define WMI_HOST_MU_MAX_ALGO_TYPE 3 7167 7168 /** 7169 * struct wmi_host_mu_db_entry 7170 * @entry_type: 0=AP, 1=STA, 2=Small Cell(SC) 7171 * @bssid_mac_addr: Transmitter MAC if entry is WiFi node. PLMNID if SC 7172 * @tx_addr: Transmitter MAC if entry is WiFi node. PLMNID if SC 7173 * @avg_duration_us: Avg. duration for which node was transmitting 7174 * @avg_rssi: Avg. RSSI of all TX packets by node. Unit dBm 7175 * @mu_percent: % medium utilization by node 7176 */ 7177 typedef struct { 7178 uint32_t entry_type; 7179 wmi_host_mac_addr bssid_mac_addr; 7180 wmi_host_mac_addr tx_addr; 7181 uint32_t avg_duration_us; 7182 uint32_t avg_rssi; 7183 uint32_t mu_percent; 7184 } wmi_host_mu_db_entry; 7185 7186 /** 7187 * struct wmi_host_mu_report_event - WMI_MU_REPORT_EVENTID 7188 * @mu_request_id: request id 7189 * @status_reason: MU_STATUS_REASON 7190 * @total_mu: MU_ALG_TYPE combinations 7191 * @num_active_bssid: number of active bssid 7192 * @hidden_node_mu : hidden node algo MU per bin 7193 * @num_TA_entries : No. of entries found in MU db report 7194 */ 7195 typedef struct { 7196 uint32_t mu_request_id; 7197 uint32_t status_reason; 7198 uint32_t total_mu[WMI_HOST_MU_MAX_ALGO_TYPE]; 7199 uint32_t num_active_bssid; 7200 uint32_t hidden_node_mu[LTEU_MAX_BINS]; 7201 uint32_t num_TA_entries; 7202 } wmi_host_mu_report_event; 7203 7204 #define WMI_HOST_TIM_BITMAP_ARRAY_SIZE 17 7205 7206 /** 7207 * struct wmi_host_p2p_noa_descriptor - NoA desc in SWBA event 7208 * @type_count: Absence count 7209 * @duration: NoA duration 7210 * @interval: NoA interval 7211 * @start_time: start time 7212 */ 7213 typedef struct { 7214 uint32_t type_count; 7215 uint32_t duration; 7216 uint32_t interval; 7217 uint32_t start_time; 7218 } wmi_host_p2p_noa_descriptor; 7219 7220 /* Maximum CCK, OFDM rates supported */ 7221 #define WMI_SA_MAX_CCK_OFDM_RATES 12 7222 /* Maximum MCS rates supported; 4 rates in each dword */ 7223 /* Maximum MCS ratecodes with 11ax */ 7224 #define WMI_SA_MAX_MCS_RATES 96 7225 /* Maximum ratecode per BW supported legacy, 20, 40, 80, 160 and 320 MHz */ 7226 #define WMI_SA_MAX_RATE_COUNTERS 6 7227 /* Maximum rate series used for transmission */ 7228 #define SA_MAX_RATE_SERIES 2 7229 7230 #define SA_MAX_LEGACY_RATE_DWORDS 3 7231 #define SA_MAX_HT_RATE_DWORDS 10 7232 #define SA_BYTES_IN_DWORD 4 7233 #define SA_MASK_BYTE 0xff 7234 #define SA_MASK_BYTE3 0xff0000 7235 7236 /* Support 11ax 11bit ratecode */ 7237 #define SA_MASK_RCODE 0x7ff 7238 #define SA_WORD_BITS_LEN 16 7239 #define SA_WORDS_IN_DWORD 2 7240 #define SA_MAX_LEGACY_RATE_WORDS 6 7241 #define SA_MAX_HT_RATE_WORDS 48 7242 7243 #define SA_INVALID_PARAM_VALUE 0xffff 7244 /* Mask to check PER threshold */ 7245 #define SA_MASK_PER_TH 0xff 7246 /* Mask to check Minimum packets for Smart Antenna Training */ 7247 #define SA_MASK_MIN_PKTS 0xffff 7248 7249 /** 7250 * struct wmi_sa_rate_cap - smart antenna rat capabilities 7251 * @pdev_id: pdev_id 7252 * @ratecode_legacy: Rate code array for CCK OFDM 7253 * @ratecode_20: Rate code array for 20 MHz BW 7254 * @ratecode_40: Rate code array for 40 MHz BW 7255 * @ratecode_80: Rate code array for 80 MHz BW 7256 * @ratecode_160: Rate code array for 160 MHz BW 7257 * @ratecode_320: Rate code array for 320 MHz BW 7258 * @ratecount: Max Rate count for each mode 7259 */ 7260 typedef struct { 7261 uint16_t ratecode_legacy[WMI_SA_MAX_CCK_OFDM_RATES]; 7262 uint16_t ratecode_20[WMI_SA_MAX_MCS_RATES]; 7263 uint16_t ratecode_40[WMI_SA_MAX_MCS_RATES]; 7264 uint16_t ratecode_80[WMI_SA_MAX_MCS_RATES]; 7265 uint16_t ratecode_160[WMI_SA_MAX_MCS_RATES]; 7266 uint16_t ratecode_320[WMI_SA_MAX_MCS_RATES]; 7267 uint8_t ratecount[WMI_SA_MAX_RATE_COUNTERS]; 7268 } wmi_sa_rate_cap; 7269 7270 /** Preamble types to be used with VDEV fixed rate configuration */ 7271 typedef enum { 7272 WMI_HOST_RATE_PREAMBLE_OFDM, 7273 WMI_HOST_RATE_PREAMBLE_CCK, 7274 WMI_HOST_RATE_PREAMBLE_HT, 7275 WMI_HOST_RATE_PREAMBLE_VHT, 7276 WMI_HOST_RATE_PREAMBLE_HE, 7277 #ifdef WLAN_FEATURE_11BE 7278 WMI_HOST_RATE_PREAMBLE_EHT, 7279 #endif 7280 } WMI_HOST_RATE_PREAMBLE; 7281 7282 #define WMI_HOST_FIXED_RATE_NONE (0xff) 7283 7284 /** preablbe long */ 7285 #define WMI_HOST_VDEV_PREAMBLE_LONG 0x1 7286 /** preablbe short */ 7287 #define WMI_HOST_VDEV_PREAMBLE_SHORT 0x2 7288 /** found a better AP */ 7289 #define WMI_HOST_ROAM_REASON_BETTER_AP 0x1 7290 /** beacon miss detected */ 7291 #define WMI_HOST_ROAM_REASON_BMISS 0x2 7292 /** deauth/disassoc received */ 7293 #define WMI_HOST_ROAM_REASON_DEAUTH 0x2 7294 /** connected AP's low rssi condition detected */ 7295 #define WMI_HOST_ROAM_REASON_LOW_RSSI 0x3 7296 /** found another AP that matches SSID and Security profile in 7297 * WMI_ROAM_AP_PROFILE, found during scan triggered upon FINAL_BMISS 7298 */ 7299 #define WMI_HOST_ROAM_REASON_SUITABLE_AP 0x4 7300 /** LFR3.0 roaming failed, indicate the disconnection to host */ 7301 #define WMI_HOST_ROAM_REASON_HO_FAILED 0x5 7302 7303 /** values for vdev_type */ 7304 #define WMI_HOST_VDEV_TYPE_AP 0x1 7305 #define WMI_HOST_VDEV_TYPE_STA 0x2 7306 #define WMI_HOST_VDEV_TYPE_IBSS 0x3 7307 #define WMI_HOST_VDEV_TYPE_MONITOR 0x4 7308 7309 /** values for vdev_subtype */ 7310 #define WMI_HOST_VDEV_SUBTYPE_P2P_DEVICE 0x1 7311 #define WMI_HOST_VDEV_SUBTYPE_P2P_CLIENT 0x2 7312 #define WMI_HOST_VDEV_SUBTYPE_P2P_GO 0x3 7313 #define WMI_HOST_VDEV_SUBTYPE_PROXY_STA 0x4 7314 #define WMI_HOST_VDEV_SUBTYPE_MESH 0x5 7315 7316 #define WMI_HOST_MGMT_TID 17 7317 /* Disable aging & learning */ 7318 #define WMI_HOST_WDS_FLAG_STATIC 0x1 7319 7320 #ifdef ENABLE_HOST_TO_TARGET_CONVERSION 7321 #define PEER_PARAM(name) WMI_HOST_ ## name 7322 #else 7323 #define PEER_PARAM(name) WMI_HOST_ ## name = WMI_ ## name 7324 #endif /* ENABLE_HOST_TO_TARGET_CONVERSION */ 7325 7326 /* 7327 * Peer param enum abstracted from target 7328 * @WMI_HOST_PEER_MIMO_PS_STATE: mimo powersave state 7329 * @WMI_HOST_PEER_AMPDU: enable/disable AMPDU . initial value (enabled) 7330 * @WMI_HOST_PEER_AUTHORIZE: authorize/unauthorize peer. 7331 * initial value is unauthorized (0) 7332 * @WMI_HOST_PEER_CHWIDTH: Peer channel bandwidth 7333 * @WMI_HOST_PEER_NSS: peer NSS 7334 * @WMI_HOST_PEER_USE_4ADDR: USE 4 ADDR 7335 * @WMI_HOST_PEER_EXT_STATS_ENABLE: Enable extended peer stats 7336 * NON-TLV special 7337 * @WMI_HOST_PEER_USE_FIXED_PWR: Use FIXED Pwr, 7338 * @WMI_HOST_PEER_PARAM_FIXED_RATE: Set peer fixed rate 7339 * @WMI_HOST_PEER_SET_MU_ALLOWLIST: Allowlist peer TIDs 7340 * @WMI_HOST_PEER_MEMBERSHIP: set group membership status 7341 * @WMI_HOST_PEER_USERPOS: User POS 7342 * @WMI_HOST_PEER_CRIT_PROTO_HINT_ENABLED: Critical Protocol Hint enabled 7343 * @WMI_HOST_PEER_TX_FAIL_CNT_THR: Tx Fail count threshold 7344 * @WMI_HOST_PEER_SET_HW_RETRY_CTS2S: Set hardware retry CTS to self 7345 * @WMI_HOST_PEER_IBSS_ATIM_WINDOW_LENGTH: IBSS ATIM window length 7346 * @WMI_HOST_PEER_PHYMODE: Peer Phymode 7347 * @WMI_HOST_PEER_SET_MAX_TX_RATE: Set MAX Tx rate 7348 * @WMI_HOST_PEER_SET_DEFAULT_ROUTING: Set default Rx routing 7349 * @WMI_HOST_PEER_SET_MIN_TX_RATE: Set Minimum T rate 7350 * @WMI_HOST_PEER_NSS_VHT160: peer NSS for 160Mhz 7351 * @WMI_HOST_PEER_NSS_VHT80_80: peer NSS for 80+80MHz 7352 * @WMI_HOST_PEER_PARAM_SU_TXBF_SOUNDING_INTERVAL: Set SU sounding interval 7353 * @WMI_HOST_PEER_PARAM_MU_TXBF_SOUNDING_INTERVAL: Set MU sounding interval 7354 * @WMI_HOST_PEER_PARAM_TXBF_SOUNDING_ENABLE: Enable sounding interval set 7355 * @WMI_HOST_PEER_PARAM_MU_ENABLE: Enable MU support 7356 * @WMI_HOST_PEER_PARAM_OFDMA_ENABLE: Enable OFDMA support 7357 * @WMI_HOST_PEER_PARAM_ENABLE_FT: Notify FT roam 7358 * @WMI_HOST_PEER_CHWIDTH_PUNCTURE_20MHZ_BITMAP: Peer channel bandwidth and 7359 * puncture bitmap 7360 * @WMI_HOST_PEER_FT_ROAMING_PEER_UPDATE: Reset PN value on 7361 * every roam event 7362 * @WMI_HOST_PEER_PARAM_DMS_SUPPORT: Set DMS capability 7363 */ 7364 enum { 7365 PEER_PARAM(PEER_MIMO_PS_STATE), 7366 PEER_PARAM(PEER_AMPDU), 7367 PEER_PARAM(PEER_AUTHORIZE), 7368 PEER_PARAM(PEER_CHWIDTH), 7369 PEER_PARAM(PEER_NSS), 7370 PEER_PARAM(PEER_USE_4ADDR), 7371 #if defined(WMI_NON_TLV_SUPPORT) || defined(WMI_TLV_AND_NON_TLV_SUPPORT) 7372 PEER_PARAM(PEER_EXT_STATS_ENABLE), 7373 #endif 7374 PEER_PARAM(PEER_USE_FIXED_PWR), 7375 PEER_PARAM(PEER_PARAM_FIXED_RATE), 7376 PEER_PARAM(PEER_SET_MU_ALLOWLIST), 7377 PEER_PARAM(PEER_MEMBERSHIP), 7378 PEER_PARAM(PEER_USERPOS), 7379 PEER_PARAM(PEER_CRIT_PROTO_HINT_ENABLED), 7380 PEER_PARAM(PEER_TX_FAIL_CNT_THR), 7381 PEER_PARAM(PEER_SET_HW_RETRY_CTS2S), 7382 PEER_PARAM(PEER_IBSS_ATIM_WINDOW_LENGTH), 7383 PEER_PARAM(PEER_PHYMODE), 7384 PEER_PARAM(PEER_SET_MAX_TX_RATE), 7385 PEER_PARAM(PEER_SET_DEFAULT_ROUTING), 7386 PEER_PARAM(PEER_SET_MIN_TX_RATE), 7387 PEER_PARAM(PEER_NSS_VHT160), 7388 PEER_PARAM(PEER_NSS_VHT80_80), 7389 PEER_PARAM(PEER_PARAM_SU_TXBF_SOUNDING_INTERVAL), 7390 PEER_PARAM(PEER_PARAM_MU_TXBF_SOUNDING_INTERVAL), 7391 PEER_PARAM(PEER_PARAM_TXBF_SOUNDING_ENABLE), 7392 PEER_PARAM(PEER_PARAM_MU_ENABLE), 7393 PEER_PARAM(PEER_PARAM_OFDMA_ENABLE), 7394 PEER_PARAM(PEER_PARAM_ENABLE_FT), 7395 PEER_PARAM(PEER_CHWIDTH_PUNCTURE_20MHZ_BITMAP), 7396 PEER_PARAM(PEER_FT_ROAMING_PEER_UPDATE), 7397 PEER_PARAM(PEER_PARAM_DMS_SUPPORT), 7398 7399 }; 7400 #define WMI_HOST_PEER_MIMO_PS_NONE 0x0 7401 #define WMI_HOST_PEER_MIMO_PS_STATIC 0x1 7402 #define WMI_HOST_PEER_MIMO_PS_DYNAMIC 0x2 7403 typedef enum { 7404 HOST_PLATFORM_HIGH_PERF, 7405 HOST_PLATFORM_LOW_PERF, 7406 HOST_PLATFORM_LOW_PERF_NO_FETCH, 7407 } HOST_PLATFORM_TYPE; 7408 7409 enum wmi_host_sta_ps_mode { 7410 /** enable power save for the given STA VDEV */ 7411 WMI_HOST_STA_PS_MODE_DISABLED = 0, 7412 /** disable power save for a given STA VDEV */ 7413 WMI_HOST_STA_PS_MODE_ENABLED = 1, 7414 }; 7415 enum wmi_host_sta_powersave_param { 7416 /** 7417 * Controls how frames are retrievd from AP while STA is sleeping 7418 * 7419 * (see enum wmi_sta_ps_param_rx_wake_policy) 7420 */ 7421 WMI_HOST_STA_PS_PARAM_RX_WAKE_POLICY = 0, 7422 7423 /** 7424 * The STA will go active after this many TX 7425 * 7426 * (see enum wmi_sta_ps_param_tx_wake_threshold) 7427 */ 7428 WMI_HOST_STA_PS_PARAM_TX_WAKE_THRESHOLD = 1, 7429 7430 /** 7431 * Number of PS-Poll to send before STA wakes up 7432 * 7433 * (see enum wmi_sta_ps_param_pspoll_count) 7434 * 7435 */ 7436 WMI_HOST_STA_PS_PARAM_PSPOLL_COUNT = 2, 7437 7438 /** 7439 * TX/RX inactivity time in msec before going to sleep. 7440 * 7441 * The power save SM will monitor tx/rx activity on the VDEV, if no 7442 * activity for the specified msec of the parameter 7443 * the Power save SM will go to sleep. 7444 */ 7445 WMI_HOST_STA_PS_PARAM_INACTIVITY_TIME = 3, 7446 7447 /** 7448 * Set uapsd configuration. 7449 * 7450 * (see enum wmi_sta_ps_param_uapsd) 7451 */ 7452 WMI_HOST_STA_PS_PARAM_UAPSD = 4, 7453 }; 7454 /* prefix used by scan requestor ids on the host 7455 * replicated here form wmi_unified.h*/ 7456 #define WMI_HOST_P_SCAN_REQUESTOR_ID_PREFIX 0xA000 7457 /* prefix used by scan request ids generated on the host */ 7458 /* host cycles through the lower 12 bits to generate ids */ 7459 #define WMI_HOST_P_SCAN_REQ_ID_PREFIX 0xA000 7460 7461 #define WMI_HOST_RC_DS_FLAG 0x01 /* Dual stream flag */ 7462 #define WMI_HOST_RC_CW40_FLAG 0x02 /* CW 40 */ 7463 #define WMI_HOST_RC_SGI_FLAG 0x04 /* Short Guard Interval */ 7464 #define WMI_HOST_RC_HT_FLAG 0x08 /* HT */ 7465 #define WMI_HOST_RC_RTSCTS_FLAG 0x10 /* RTS-CTS */ 7466 #define WMI_HOST_RC_TX_STBC_FLAG 0x20 /* TX STBC */ 7467 #define WMI_HOST_RC_RX_STBC_FLAG 0xC0 /* RX STBC ,2 bits */ 7468 #define WMI_HOST_RC_RX_STBC_FLAG_S 6 /* RX STBC ,2 bits */ 7469 #define WMI_HOST_RC_WEP_TKIP_FLAG 0x100 /* WEP/TKIP encryption */ 7470 #define WMI_HOST_RC_TS_FLAG 0x200 /* Three stream flag */ 7471 #define WMI_HOST_RC_UAPSD_FLAG 0x400 /* UAPSD Rate Control */ 7472 7473 /** HT Capabilities*/ 7474 #define WMI_HOST_HT_CAP_ENABLED 0x0001 /* HT Enabled/ disabled */ 7475 /* Short Guard Interval with HT20 */ 7476 #define WMI_HOST_HT_CAP_HT20_SGI 0x0002 7477 #define WMI_HOST_HT_CAP_DYNAMIC_SMPS 0x0004 /* Dynamic MIMO powersave */ 7478 #define WMI_HOST_HT_CAP_TX_STBC 0x0008 /* B3 TX STBC */ 7479 #define WMI_HOST_HT_CAP_TX_STBC_MASK_SHIFT 3 7480 #define WMI_HOST_HT_CAP_RX_STBC 0x0030 /* B4-B5 RX STBC */ 7481 #define WMI_HOST_HT_CAP_RX_STBC_MASK_SHIFT 4 7482 #define WMI_HOST_HT_CAP_LDPC 0x0040 /* LDPC supported */ 7483 #define WMI_HOST_HT_CAP_L_SIG_TXOP_PROT 0x0080 /* L-SIG TXOP Protection */ 7484 #define WMI_HOST_HT_CAP_MPDU_DENSITY 0x0700 /* MPDU Density */ 7485 #define WMI_HOST_HT_CAP_MPDU_DENSITY_MASK_SHIFT 8 7486 #define WMI_HOST_HT_CAP_HT40_SGI 0x0800 7487 #define WMI_HOST_HT_CAP_RX_LDPC 0x1000 7488 #define WMI_HOST_HT_CAP_TX_LDPC 0x2000 7489 #define WMI_HOST_HT_CAP_IBF_BFER 0x4000 7490 7491 /* These macros should be used when we wish to advertise STBC support for 7492 * only 1SS or 2SS or 3SS. */ 7493 #define WMI_HOST_HT_CAP_RX_STBC_1SS 0x0010 /* B4-B5 RX STBC */ 7494 #define WMI_HOST_HT_CAP_RX_STBC_2SS 0x0020 /* B4-B5 RX STBC */ 7495 #define WMI_HOST_HT_CAP_RX_STBC_3SS 0x0030 /* B4-B5 RX STBC */ 7496 7497 7498 #define WMI_HOST_HT_CAP_DEFAULT_ALL (WMI_HOST_HT_CAP_ENABLED | \ 7499 WMI_HOST_HT_CAP_HT20_SGI | \ 7500 WMI_HOST_HT_CAP_HT40_SGI | \ 7501 WMI_HOST_HT_CAP_TX_STBC | \ 7502 WMI_HOST_HT_CAP_RX_STBC | \ 7503 WMI_HOST_HT_CAP_LDPC) 7504 7505 /* WMI_HOST_VHT_CAP_* these maps to ieee 802.11ac vht capability information 7506 field. The fields not defined here are not supported, or reserved. 7507 Do not change these masks and if you have to add new one follow the 7508 bitmask as specified by 802.11ac draft. 7509 */ 7510 7511 #define WMI_HOST_VHT_CAP_MAX_MPDU_LEN_MASK 0x00000003 7512 #define WMI_HOST_VHT_CAP_RX_LDPC 0x00000010 7513 #define WMI_HOST_VHT_CAP_SGI_80MHZ 0x00000020 7514 #define WMI_HOST_VHT_CAP_SGI_160MHZ 0x00000040 7515 #define WMI_HOST_VHT_CAP_TX_STBC 0x00000080 7516 #define WMI_HOST_VHT_CAP_RX_STBC_MASK 0x00000300 7517 #define WMI_HOST_VHT_CAP_RX_STBC_MASK_SHIFT 8 7518 #define WMI_HOST_VHT_CAP_SU_BFER 0x00000800 7519 #define WMI_HOST_VHT_CAP_SU_BFEE 0x00001000 7520 #define WMI_HOST_VHT_CAP_MAX_CS_ANT_MASK 0x0000E000 7521 #define WMI_HOST_VHT_CAP_MAX_CS_ANT_MASK_SHIFT 13 7522 #define WMI_HOST_VHT_CAP_MAX_SND_DIM_MASK 0x00070000 7523 #define WMI_HOST_VHT_CAP_MAX_SND_DIM_MASK_SHIFT 16 7524 #define WMI_HOST_VHT_CAP_MU_BFER 0x00080000 7525 #define WMI_HOST_VHT_CAP_MU_BFEE 0x00100000 7526 #define WMI_HOST_VHT_CAP_MAX_AMPDU_LEN_EXP 0x03800000 7527 #define WMI_HOST_VHT_CAP_MAX_AMPDU_LEN_EXP_SHIT 23 7528 #define WMI_HOST_VHT_CAP_RX_FIXED_ANT 0x10000000 7529 #define WMI_HOST_VHT_CAP_TX_FIXED_ANT 0x20000000 7530 7531 #define WMI_HOST_VHT_CAP_MAX_MPDU_LEN_11454 0x00000002 7532 7533 /* These macros should be used when we wish to advertise STBC support for 7534 * only 1SS or 2SS or 3SS. */ 7535 #define WMI_HOST_VHT_CAP_RX_STBC_1SS 0x00000100 7536 #define WMI_HOST_VHT_CAP_RX_STBC_2SS 0x00000200 7537 #define WMI_HOST_VHT_CAP_RX_STBC_3SS 0x00000300 7538 7539 #define WMI_HOST_VHT_CAP_DEFAULT_ALL (WMI_HOST_VHT_CAP_MAX_MPDU_LEN_11454 | \ 7540 WMI_HOST_VHT_CAP_SGI_80MHZ | \ 7541 WMI_HOST_VHT_CAP_TX_STBC | \ 7542 WMI_HOST_VHT_CAP_RX_STBC_MASK | \ 7543 WMI_HOST_VHT_CAP_RX_LDPC | \ 7544 WMI_HOST_VHT_CAP_MAX_AMPDU_LEN_EXP | \ 7545 WMI_HOST_VHT_CAP_RX_FIXED_ANT | \ 7546 WMI_HOST_VHT_CAP_TX_FIXED_ANT) 7547 7548 /* Interested readers refer to Rx/Tx MCS Map definition as defined in 7549 802.11ac 7550 */ 7551 #define WMI_HOST_VHT_MAX_MCS_4_SS_MASK(r, ss) ((3 & (r)) << (((ss) - 1) << 1)) 7552 #define WMI_HOST_VHT_MAX_SUPP_RATE_MASK 0x1fff0000 7553 #define WMI_HOST_VHT_MAX_SUPP_RATE_MASK_SHIFT 16 7554 7555 /** U-APSD configuration of peer station from (re)assoc request and TSPECs */ 7556 enum wmi_host_ap_ps_param_uapsd { 7557 WMI_HOST_AP_PS_UAPSD_AC0_DELIVERY_EN = (1 << 0), 7558 WMI_HOST_AP_PS_UAPSD_AC0_TRIGGER_EN = (1 << 1), 7559 WMI_HOST_AP_PS_UAPSD_AC1_DELIVERY_EN = (1 << 2), 7560 WMI_HOST_AP_PS_UAPSD_AC1_TRIGGER_EN = (1 << 3), 7561 WMI_HOST_AP_PS_UAPSD_AC2_DELIVERY_EN = (1 << 4), 7562 WMI_HOST_AP_PS_UAPSD_AC2_TRIGGER_EN = (1 << 5), 7563 WMI_HOST_AP_PS_UAPSD_AC3_DELIVERY_EN = (1 << 6), 7564 WMI_HOST_AP_PS_UAPSD_AC3_TRIGGER_EN = (1 << 7), 7565 }; 7566 /** U-APSD maximum service period of peer station */ 7567 enum wmi_host_ap_ps_peer_param_max_sp { 7568 WMI_HOST_AP_PS_PEER_PARAM_MAX_SP_UNLIMITED = 0, 7569 WMI_HOST_AP_PS_PEER_PARAM_MAX_SP_2 = 1, 7570 WMI_HOST_AP_PS_PEER_PARAM_MAX_SP_4 = 2, 7571 WMI_HOST_AP_PS_PEER_PARAM_MAX_SP_6 = 3, 7572 7573 /* keep last! */ 7574 MAX_HOST_WMI_AP_PS_PEER_PARAM_MAX_SP, 7575 }; 7576 7577 #define WMI_HOST_UAPSD_AC_TYPE_DELI 0 7578 #define WMI_HOST_UAPSD_AC_TYPE_TRIG 1 7579 7580 #define WMI_HOST_UAPSD_AC_BIT_MASK(ac, type) \ 7581 ((type == WMI_HOST_UAPSD_AC_TYPE_DELI) ? (1<<(ac<<1)) :\ 7582 (1<<((ac<<1)+1))) 7583 7584 enum wmi_host_ap_ps_peer_param_wnm_sleep { 7585 WMI_HOST_AP_PS_PEER_PARAM_WNM_SLEEP_ENABLE, 7586 WMI_HOST_AP_PS_PEER_PARAM_WNM_SLEEP_DISABLE, 7587 }; 7588 7589 enum wmi_host_ap_ps_peer_param { 7590 /** Set uapsd configuration for a given peer. 7591 * 7592 * This will include the delivery and trigger enabled state for every AC. 7593 * The host MLME needs to set this based on AP capability and stations 7594 * request Set in the association request received from the station. 7595 * 7596 * Lower 8 bits of the value specify the UAPSD configuration. 7597 * 7598 * (see enum wmi_ap_ps_param_uapsd) 7599 * The default value is 0. 7600 */ 7601 WMI_HOST_AP_PS_PEER_PARAM_UAPSD = 0, 7602 7603 /** 7604 * Set the service period for a UAPSD capable station 7605 * 7606 * The service period from wme ie in the (re)assoc request frame. 7607 * 7608 * (see enum wmi_ap_ps_peer_param_max_sp) 7609 */ 7610 WMI_HOST_AP_PS_PEER_PARAM_MAX_SP = 1, 7611 7612 /** Time in seconds for aging out buffered frames 7613 * for STA in power save */ 7614 WMI_HOST_AP_PS_PEER_PARAM_AGEOUT_TIME = 2, 7615 7616 /** Specify frame types that are considered SIFS 7617 * RESP trigger frame */ 7618 WMI_HOST_AP_PS_PEER_PARAM_SIFS_RESP_FRMTYPE = 3, 7619 7620 /** Specifies the trigger state of TID. 7621 * Valid only for UAPSD frame type */ 7622 WMI_HOST_AP_PS_PEER_PARAM_SIFS_RESP_UAPSD = 4, 7623 7624 /** Specifies the WNM sleep state of a STA */ 7625 WMI_HOST_AP_PS_PEER_PARAM_WNM_SLEEP = 5, 7626 }; 7627 #define WMI_HOST_RXERR_CRC 0x01 /* CRC error on frame */ 7628 #define WMI_HOST_RXERR_DECRYPT 0x08 /* non-Michael decrypt error */ 7629 #define WMI_HOST_RXERR_MIC 0x10 /* Michael MIC decrypt error */ 7630 #define WMI_HOST_RXERR_KEY_CACHE_MISS 0x20 /* No/incorrect key matter in h/w */ 7631 #define WMI_HOST_RXERR_PN 0x80 /* invalid PN in frame */ 7632 7633 enum wmi_host_sta_ps_param_rx_wake_policy { 7634 /* Wake up when ever there is an RX activity on the VDEV. In this mode 7635 * the Power save SM(state machine) will come out of sleep by either 7636 * sending null frame (or) a data frame (with PS==0) in response to TIM 7637 * bit set in the received beacon frame from AP. 7638 */ 7639 WMI_HOST_STA_PS_RX_WAKE_POLICY_WAKE = 0, 7640 7641 /* Here the power save state machine will not wakeup in response to TIM 7642 * bit, instead it will send a PSPOLL (or) UASPD trigger based on UAPSD 7643 * configuration setup by WMISET_PS_SET_UAPSD WMI command. When all 7644 * access categories are delivery-enabled, the station will send a UAPSD 7645 * trigger frame, otherwise it will send a PS-Poll. 7646 */ 7647 WMI_HOST_STA_PS_RX_WAKE_POLICY_POLL_UAPSD = 1, 7648 }; 7649 enum wmi_host_sta_ps_param_pspoll_count { 7650 WMI_HOST_STA_PS_PSPOLL_COUNT_NO_MAX = 0, 7651 /* Values greater than 0 indicate the maximum number of PS-Poll frames FW 7652 * will send before waking up. 7653 */ 7654 }; 7655 /** Number of tx frames/beacon that cause the power save SM to wake up. 7656 * 7657 * Value 1 causes the SM to wake up for every TX. Value 0 has a special 7658 * meaning, It will cause the SM to never wake up. This is useful if you want 7659 * to keep the system to sleep all the time for some kind of test mode . host 7660 * can change this parameter any time. It will affect at the next tx frame. 7661 */ 7662 enum wmi_host_sta_ps_param_tx_wake_threshold { 7663 WMI_HOST_STA_PS_TX_WAKE_THRESHOLD_NEVER = 0, 7664 WMI_HOST_STA_PS_TX_WAKE_THRESHOLD_ALWAYS = 1, 7665 7666 /* Values greater than one indicate that many TX attempts per beacon 7667 * interval before the STA will wake up 7668 */ 7669 }; 7670 /* 7671 * Transmit power scale factor. 7672 * 7673 */ 7674 typedef enum { 7675 WMI_HOST_TP_SCALE_MAX = 0, /* no scaling (default) */ 7676 WMI_HOST_TP_SCALE_50 = 1, /* 50% of max (-3 dBm) */ 7677 WMI_HOST_TP_SCALE_25 = 2, /* 25% of max (-6 dBm) */ 7678 WMI_HOST_TP_SCALE_12 = 3, /* 12% of max (-9 dBm) */ 7679 WMI_HOST_TP_SCALE_6 = 4, /* 6% of max (-12 dBm) */ 7680 WMI_HOST_TP_SCALE_MIN = 5, /* min, but still on */ 7681 WMI_HOST_TP_SCALE_SIZE = 6, /* max num of enum */ 7682 } WMI_HOST_TP_SCALE; 7683 enum { 7684 WMI_HOST_RATEPWR_TABLE_OPS_SET, 7685 WMI_HOST_RATEPWR_TABLE_OPS_GET, 7686 }; 7687 /* reserved up through 0xF */ 7688 /** 7689 * struct _hp_dcs_mib_stats - WLAN IM stats from target to host 7690 * Below statistics are sent from target to host periodically. 7691 * These are collected at target as long as target is running 7692 * and target chip is not in sleep. 7693 * @listen_time: 7694 * @reg_tx_frame_cnt: 7695 * @reg_rx_frame_cnt: 7696 * @reg_rxclr_cnt: 7697 * @reg_cycle_cnt: delta cycle count 7698 * @reg_rxclr_ext_cnt: 7699 * @reg_ofdm_phyerr_cnt: 7700 * @reg_cck_phyerr_cnt: CCK err count since last reset, read from register 7701 */ 7702 typedef struct _hp_dcs_mib_stats { 7703 int32_t listen_time; 7704 uint32_t reg_tx_frame_cnt; 7705 uint32_t reg_rx_frame_cnt; 7706 uint32_t reg_rxclr_cnt; 7707 uint32_t reg_cycle_cnt; 7708 uint32_t reg_rxclr_ext_cnt; 7709 uint32_t reg_ofdm_phyerr_cnt; 7710 uint32_t reg_cck_phyerr_cnt; 7711 } wmi_host_dcs_mib_stats_t; 7712 7713 /** 7714 * struct _wmi_host_dcs_im_tgt_stats - DCS IM target stats 7715 * @reg_tsf32: current running TSF from the TSF-1 7716 * @last_ack_rssi: Known last frame rssi, in case of multiple stations, if 7717 * and at different ranges, this would not guarantee that 7718 * this is the least rssi. 7719 * @tx_waste_time: Sum of all the failed durations in the last 7720 * one second interval. 7721 * @rx_time: count how many times the hal_rxerr_phy is marked, in this 7722 * time period 7723 * @phyerr_cnt: 7724 * @mib_stats: wmi_host_dcs_mib_stats_t - collected mib stats as explained 7725 * in mib structure 7726 * @chan_nf: Channel noise floor (Units are in dBm) 7727 * @my_bss_rx_cycle_count: BSS rx cycle count 7728 * @reg_rxclr_ext40_cnt: extension channel 40Mhz rxclear count 7729 * @reg_rxclr_ext80_cnt: extension channel 80Mhz rxclear count 7730 */ 7731 typedef struct _wmi_host_dcs_im_tgt_stats { 7732 uint32_t reg_tsf32; 7733 uint32_t last_ack_rssi; 7734 uint32_t tx_waste_time; 7735 uint32_t rx_time; 7736 uint32_t phyerr_cnt; 7737 wmi_host_dcs_mib_stats_t mib_stats; 7738 uint32_t chan_nf; 7739 uint32_t my_bss_rx_cycle_count; 7740 /* these fields are added here for backward compatibility instead of 7741 * wmi_host_dcs_mib_stats_t 7742 */ 7743 uint32_t reg_rxclr_ext40_cnt; 7744 uint32_t reg_rxclr_ext80_cnt; 7745 } wmi_host_dcs_im_tgt_stats_t; 7746 7747 #ifndef BIT 7748 #define BIT(n) (1 << (n)) 7749 #endif 7750 7751 /* 7752 * Enum for pktlog req 7753 */ 7754 enum { 7755 WMI_HOST_PKTLOG_EVENT_RX_BIT, 7756 WMI_HOST_PKTLOG_EVENT_TX_BIT, 7757 WMI_HOST_PKTLOG_EVENT_RCF_BIT, 7758 WMI_HOST_PKTLOG_EVENT_RCU_BIT, 7759 WMI_HOST_PKTLOG_EVENT_DBG_PRINT_BIT, 7760 WMI_HOST_PKTLOG_EVENT_SMART_ANTENNA_BIT, 7761 WMI_HOST_PKTLOG_EVENT_H_INFO_BIT, 7762 WMI_HOST_PKTLOG_EVENT_STEERING_BIT, 7763 WMI_HOST_PKTLOG_EVENT_TX_DATA_CAPTURE_BIT, 7764 WMI_HOST_PKTLOG_EVENT_PHY_LOGGING_BIT, 7765 WMI_HOST_PKTLOG_EVENT_CBF_BIT, 7766 #ifdef BE_PKTLOG_SUPPORT 7767 WMI_HOST_PKTLOG_EVENT_HYBRID_TX_BIT, 7768 #endif 7769 }; 7770 7771 typedef enum { 7772 WMI_HOST_PKTLOG_EVENT_RX = BIT(WMI_HOST_PKTLOG_EVENT_RX_BIT), 7773 WMI_HOST_PKTLOG_EVENT_TX = BIT(WMI_HOST_PKTLOG_EVENT_TX_BIT), 7774 WMI_HOST_PKTLOG_EVENT_RCF = 7775 BIT(WMI_HOST_PKTLOG_EVENT_RCF_BIT), /* Rate Control Find */ 7776 WMI_HOST_PKTLOG_EVENT_RCU = 7777 BIT(WMI_HOST_PKTLOG_EVENT_RCU_BIT), /* Rate Control Update */ 7778 WMI_HOST_PKTLOG_EVENT_DBG_PRINT = 7779 BIT(WMI_HOST_PKTLOG_EVENT_DBG_PRINT_BIT), /* DEBUG prints */ 7780 /* To support Smart Antenna */ 7781 WMI_HOST_PKTLOG_EVENT_SMART_ANTENNA = 7782 BIT(WMI_HOST_PKTLOG_EVENT_SMART_ANTENNA_BIT), 7783 WMI_HOST_PKTLOG_EVENT_H_INFO = 7784 BIT(WMI_HOST_PKTLOG_EVENT_H_INFO_BIT), 7785 WMI_HOST_PKTLOG_EVENT_STEERING = 7786 BIT(WMI_HOST_PKTLOG_EVENT_STEERING_BIT), 7787 /* To support Tx data Capture */ 7788 WMI_HOST_PKTLOG_EVENT_TX_DATA_CAPTURE = 7789 BIT(WMI_HOST_PKTLOG_EVENT_TX_DATA_CAPTURE_BIT), 7790 /* To support PHY logging */ 7791 WMI_HOST_PKTLOG_EVENT_PHY_LOGGING = 7792 BIT(WMI_HOST_PKTLOG_EVENT_PHY_LOGGING_BIT), 7793 WMI_HOST_PKTLOG_EVENT_CBF = 7794 BIT(WMI_HOST_PKTLOG_EVENT_CBF_BIT), 7795 #ifdef BE_PKTLOG_SUPPORT 7796 WMI_HOST_PKTLOG_EVENT_HYBRID_TX = 7797 BIT(WMI_HOST_PKTLOG_EVENT_HYBRID_TX_BIT), 7798 #endif 7799 } WMI_HOST_PKTLOG_EVENT; 7800 7801 /* 7802 * wmi_host_phyerr 7803 * 7804 */ 7805 #define WMI_HOST_PHY_ERROR_SPECTRAL_SCAN 0x26 7806 #define WMI_HOST_PHY_ERROR_FALSE_RADAR_EXT 0x24 7807 7808 #define WMI_HOST_AR900B_DFS_PHYERR_MASK 0x4 7809 #define WMI_HOST_AR900B_SPECTRAL_PHYERR_MASK 0x4000000 7810 7811 /** 7812 * struct wmi_host_perchain_rssi_info - per chain RSSI info 7813 * @rssi_pri20: RSSI on primary 20 7814 * @rssi_sec20: RSSI on secomdary 20 7815 * @rssi_sec40: RSSI secondary 40 7816 * @rssi_sec80: RSSI secondary 80 7817 */ 7818 typedef struct wmi_host_perchain_rssi_info { 7819 int8_t rssi_pri20; 7820 int8_t rssi_sec20; 7821 int8_t rssi_sec40; 7822 int8_t rssi_sec80; 7823 } wmi_host_perchain_rssi_info_t; 7824 7825 /** 7826 * struct _wmi_host_rf_info - RF measurement information 7827 * @rssi_comb: RSSI Information 7828 * @pc_rssi_info: For now, we know we are getting information 7829 * for only 4 chains at max. For future extensions 7830 * use a define 7831 * @noise_floor: Noise floor information 7832 */ 7833 typedef struct _wmi_host_rf_info { 7834 int8_t rssi_comb; 7835 wmi_host_perchain_rssi_info_t pc_rssi_info[4]; 7836 int16_t noise_floor[4]; 7837 } wmi_host_rf_info_t; 7838 7839 /** 7840 * struct _wmi_host_chan_info 7841 * @center_freq1: center frequency 1 in MHz 7842 * @center_freq2: center frequency 2 in MHz -valid only for 7843 * 11ACVHT 80PLUS80 mode 7844 * @chan_width: channel width in MHz 7845 */ 7846 typedef struct _wmi_host_chan_info { 7847 u_int16_t center_freq1; 7848 u_int16_t center_freq2; 7849 u_int8_t chan_width; 7850 } wmi_host_chan_info_t; 7851 7852 /** 7853 * struct _wmi_host_phyerr 7854 * @rf_info: 7855 * @chan_info: 7856 * @tsf64: 7857 * @phy_err_code: 7858 * @tsf_timestamp: 7859 * @bufp: 7860 * @buf_len: 7861 * @phy_err_mask0: 7862 * @phy_err_mask1: 7863 * @pdev_id: pdev_id 7864 */ 7865 typedef struct _wmi_host_phyerr { 7866 wmi_host_rf_info_t rf_info; 7867 wmi_host_chan_info_t chan_info; 7868 uint64_t tsf64; 7869 int32_t phy_err_code; 7870 uint32_t tsf_timestamp; 7871 uint8_t *bufp; 7872 uint32_t buf_len; 7873 uint32_t phy_err_mask0; 7874 uint32_t phy_err_mask1; 7875 uint32_t pdev_id; 7876 } wmi_host_phyerr_t; 7877 7878 /** 7879 * struct wmi_host_rtt_event_hdr 7880 * @req_id: request id 7881 * @status: status 7882 * @meas_done: measurement done flag 7883 * @meas_type: measurement type 7884 * @report_type: report type 7885 * @v3_status: v2 status 7886 * @v3_finish: 7887 * @v3_tm_start: 7888 * @num_ap: number of AP 7889 * @result: resuult 7890 * @dest_mac: destination mac 7891 */ 7892 typedef struct { 7893 uint16_t req_id; 7894 uint16_t status:1, 7895 meas_done:1, 7896 meas_type:3, 7897 report_type:3, 7898 v3_status:2, 7899 v3_finish:1, 7900 v3_tm_start:1, 7901 num_ap:4; 7902 uint16_t result; 7903 uint8_t dest_mac[QDF_MAC_ADDR_SIZE]; 7904 } wmi_host_rtt_event_hdr; 7905 7906 /** 7907 * struct wmi_host_rtt_meas_event - RTT measurement event 7908 * @chain_mask: 7909 * @bw: 7910 * @rsvd: 7911 * @txrxchain_mask: Bit:0-3:chain mask 7912 * Bit 4-5: band width info 7913 * 00 --Legacy 20, 01 --HT/VHT20 7914 * 10 --HT/VHT40, 11 -- VHT80 7915 * @tod: resolution of 0.1ns 7916 * @toa: resolution of 0.1ns 7917 * @t3: 7918 * @t4: 7919 * @rssi0: 7920 * @rssi1: 7921 * @rssi2: 7922 * @rssi3: 7923 */ 7924 typedef struct { 7925 uint32_t chain_mask:3, 7926 bw:2, 7927 rsvd:27; 7928 uint32_t txrxchain_mask; 7929 uint64_t tod; 7930 uint64_t toa; 7931 uint64_t t3; 7932 uint64_t t4; 7933 uint32_t rssi0; 7934 uint32_t rssi1; 7935 uint32_t rssi2; 7936 uint32_t rssi3; 7937 } wmi_host_rtt_meas_event; 7938 7939 /*----RTT Report event definition ----*/ 7940 typedef enum { 7941 /* rtt cmd header parsing error --terminate */ 7942 WMI_HOST_RTT_COMMAND_HEADER_ERROR = 0, 7943 /* rtt body parsing error -- skip current STA REQ */ 7944 WMI_HOST_RTT_COMMAND_ERROR, 7945 /* rtt no resource -- terminate */ 7946 WMI_HOST_RTT_MODULE_BUSY, 7947 /* STA exceed the support limit -- only server the first n STA */ 7948 WMI_HOST_RTT_TOO_MANY_STA, 7949 /* any allocate failure */ 7950 WMI_HOST_RTT_NO_RESOURCE, 7951 /* can not find vdev with vdev ID - skip current STA REQ */ 7952 WMI_HOST_RTT_VDEV_ERROR, 7953 /* Tx failure -- continiue and measure number */ 7954 WMI_HOST_RTT_TRANSIMISSION_ERROR, 7955 /* wait for first TM timer expire-terminate current STA measurement */ 7956 WMI_HOST_RTT_TM_TIMER_EXPIRE, 7957 /* we do not support RTT measurement with this type of frame */ 7958 WMI_HOST_RTT_FRAME_TYPE_NOSUPPORT, 7959 /* whole RTT measurement timer expire-terminate 7960 ** current STA measurement */ 7961 WMI_HOST_RTT_TIMER_EXPIRE, 7962 /* channel switch failed */ 7963 WMI_HOST_RTT_CHAN_SWITCH_ERROR, 7964 /* TMR trans error, this dest peer will be skipped */ 7965 WMI_HOST_RTT_TMR_TRANS_ERROR, 7966 /* V3 only. If both CFR and Token mismatch, do not report */ 7967 WMI_HOST_RTT_NO_REPORT_BAD_CFR_TOKEN, 7968 /* For First TM, if CFR is bad, then do not report */ 7969 WMI_HOST_RTT_NO_REPORT_FIRST_TM_BAD_CFR, 7970 /* do not allow report type2 mix with type 0, 1 */ 7971 WMI_HOST_RTT_REPORT_TYPE2_MIX, 7972 /* LCI Configuration OK. - Responder only */ 7973 WMI_HOST_RTT_LCI_CFG_OK, 7974 /* LCR configuration OK. - Responder only */ 7975 WMI_HOST_RTT_LCR_CFG_OK, 7976 /* Bad configuration LCI (or) LCR request - Responder only */ 7977 WMI_HOST_RTT_CFG_ERROR, 7978 WMI_HOST_WMI_RTT_REJECT_MAX, 7979 } WMI_HOST_RTT_ERROR_INDICATOR; 7980 typedef struct { 7981 wmi_host_rtt_event_hdr hdr; 7982 WMI_HOST_RTT_ERROR_INDICATOR reject_reason; 7983 } wmi_host_rtt_error_report_event; 7984 7985 #if defined(AR9888) 7986 typedef enum { 7987 WMI_HOST_PROF_CPU_IDLE, 7988 WMI_HOST_PROF_PPDU_PROC, 7989 WMI_HOST_PROF_PPDU_POST, 7990 WMI_HOST_PROF_HTT_TX_INPUT, 7991 WMI_HOST_PROF_MSDU_ENQ, 7992 WMI_HOST_PROF_PPDU_POST_HAL, 7993 WMI_HOST_PROF_COMPUTE_TX_TIME, 7994 7995 /* Add new ID's above this. */ 7996 WMI_HOST_PROF_MAX_ID, 7997 } wmi_host_profile_id_t; 7998 #endif 7999 8000 #define WMI_HOST_WLAN_PROFILE_MAX_HIST 3 8001 #define WMI_HOST_WLAN_PROFILE_MAX_BIN_CNT 32 8002 8003 #if defined(AR9888) 8004 #define WMI_HOST_MAX_PROFILE WMI_HOST_PROF_MAX_ID 8005 #else 8006 #define WMI_HOST_MAX_PROFILE WMI_HOST_WLAN_PROFILE_MAX_BIN_CNT 8007 #endif 8008 8009 /** 8010 * struct wmi_host_wlan_profile_t - Host profile param 8011 * @id: profile id 8012 * @cnt: Count 8013 * @tot: 8014 * @min: minimum 8015 * @max: Mac 8016 * @hist_intvl: history interval 8017 * @hist: profile data history 8018 */ 8019 typedef struct { 8020 uint32_t id; 8021 uint32_t cnt; 8022 uint32_t tot; 8023 uint32_t min; 8024 uint32_t max; 8025 uint32_t hist_intvl; 8026 uint32_t hist[WMI_HOST_WLAN_PROFILE_MAX_HIST]; 8027 } wmi_host_wlan_profile_t; 8028 8029 /** 8030 * struct wmi_host_wlan_profile_ctx_t - profile context 8031 * @tot: time in us 8032 * @tx_msdu_cnt: MSDU TX count 8033 * @tx_mpdu_cnt: MPDU tx count 8034 * @tx_ppdu_cnt: PPDU tx count 8035 * @rx_msdu_cnt: MSDU RX count 8036 * @rx_mpdu_cnt: MPDU RXcount 8037 * @bin_count: Bin count 8038 */ 8039 typedef struct { 8040 uint32_t tot; 8041 uint32_t tx_msdu_cnt; 8042 uint32_t tx_mpdu_cnt; 8043 uint32_t tx_ppdu_cnt; 8044 uint32_t rx_msdu_cnt; 8045 uint32_t rx_mpdu_cnt; 8046 uint32_t bin_count; 8047 } wmi_host_wlan_profile_ctx_t; 8048 8049 /** 8050 * struct wmi_host_pdev_bss_chan_info_event 8051 * @pdev_id: pdev_id 8052 * @freq: Units in MHz 8053 * @noise_floor: units are dBm 8054 * @rx_clear_count_low: 8055 * @rx_clear_count_high: 8056 * @cycle_count_low: 8057 * @cycle_count_high: 8058 * @tx_cycle_count_low: 8059 * @tx_cycle_count_high: 8060 * @rx_cycle_count_low: 8061 * @rx_cycle_count_high: 8062 * @rx_bss_cycle_count_low: 8063 * @rx_bss_cycle_count_high: 8064 * @reserved: 8065 */ 8066 typedef struct { 8067 uint32_t pdev_id; 8068 uint32_t freq; 8069 uint32_t noise_floor; 8070 uint32_t rx_clear_count_low; 8071 uint32_t rx_clear_count_high; 8072 uint32_t cycle_count_low; 8073 uint32_t cycle_count_high; 8074 uint32_t tx_cycle_count_low; 8075 uint32_t tx_cycle_count_high; 8076 uint32_t rx_cycle_count_low; 8077 uint32_t rx_cycle_count_high; 8078 uint32_t rx_bss_cycle_count_low; 8079 uint32_t rx_bss_cycle_count_high; 8080 uint32_t reserved; 8081 } wmi_host_pdev_bss_chan_info_event; 8082 8083 /** 8084 * struct wmi_host_pdev_ctl_failsafe_event 8085 * @ctl_failsafe_status: Indicate if Failsafe value is imposed on CTL 8086 */ 8087 struct wmi_host_pdev_ctl_failsafe_event { 8088 uint32_t ctl_failsafe_status; 8089 }; 8090 8091 #define WMI_HOST_INST_STATS_INVALID_RSSI 0 8092 8093 /* Event definition and new structure addition to send event 8094 * to host to block/unblock tx data traffic based on peer_ast_idx or vdev id 8095 */ 8096 #define WMI_HOST_INVALID_PEER_AST_INDEX 0xffff 8097 #define WMI_HOST_TX_DATA_TRAFFIC_CTRL_BLOCK 0x1 8098 #define WMI_HOST_TX_DATA_TRAFFIC_CTRL_UNBLOCK 0x2 8099 /** 8100 * struct wmi_host_tx_data_traffic_ctrl_event 8101 * @peer_ast_idx: For vdev based control, peer_ast_idx will be 8102 * WMI_INVALID_PEER_AST_INDEX 8103 * @vdev_id: only applies if peer_ast_idx == INVALID 8104 * @ctrl_cmd: WMI_TX_DATA_TRAFFIC_CTRL_BLOCK or 8105 * WMI_TX_DATA_TRAFFIC_CTRL_UNBLOCK 8106 * @wmm_ac: Indicates AC to be blocked or unblocked 8107 * Bits 4-31 : Reserved (Shall be zero) 8108 * Bits 0-3 : WMM AC NO [ BE (1), BK (2), VI (3), VO (4)] 8109 * Started numbering from 1 to preserve backward compatibility 8110 */ 8111 typedef struct { 8112 uint32_t peer_ast_idx; 8113 uint32_t vdev_id; 8114 uint32_t ctrl_cmd; 8115 uint32_t wmm_ac; 8116 } wmi_host_tx_data_traffic_ctrl_event; 8117 8118 /** 8119 * struct wmi_host_ath_dcs_cw_int 8120 * @channel: either number or freq in mhz 8121 */ 8122 typedef struct { 8123 uint32_t channel; 8124 } wmi_host_ath_dcs_cw_int; 8125 8126 /** 8127 * struct wmi_host_dcs_awgn_info: 8128 * @channel_width : Channel width of interference 8129 * @center_freq : Center frequency of primary channel 8130 * @center_freq0 : Center frequency of segment 1 8131 * @center_freq1 : Center frequency of segment 2 8132 * @chan_bw_intf_bitmap: Per-20MHz interference bitmap 8133 */ 8134 struct wmi_host_dcs_awgn_info { 8135 wmi_host_channel_width channel_width; 8136 uint32_t center_freq; 8137 uint32_t center_freq0; 8138 uint32_t center_freq1; 8139 uint32_t chan_bw_intf_bitmap; 8140 }; 8141 8142 #define WMI_MAX_POWER_DBG_ARGS 8 8143 8144 /** 8145 * struct wmi_power_dbg_params - power debug command parameter 8146 * @pdev_id: subsystem identifier 8147 * @module_id: parameter id 8148 * @num_args: no of arguments 8149 * @args: arguments 8150 */ 8151 struct wmi_power_dbg_params { 8152 uint32_t pdev_id; 8153 uint32_t module_id; 8154 uint32_t num_args; 8155 uint32_t args[WMI_MAX_POWER_DBG_ARGS]; 8156 }; 8157 8158 /** 8159 * struct wmi_fw_dump_seg_req - individual segment details 8160 * @seg_id: segment id. 8161 * @seg_start_addr_lo: lower address of the segment. 8162 * @seg_start_addr_hi: higher address of the segment. 8163 * @seg_length: length of the segment. 8164 * @dst_addr_lo: lower address of the destination buffer. 8165 * @dst_addr_hi: higher address of the destination buffer. 8166 * 8167 * This structure carries the information to firmware about the 8168 * individual segments. This structure is part of firmware memory 8169 * dump request. 8170 */ 8171 struct wmi_fw_dump_seg_req { 8172 uint8_t seg_id; 8173 uint32_t seg_start_addr_lo; 8174 uint32_t seg_start_addr_hi; 8175 uint32_t seg_length; 8176 uint32_t dst_addr_lo; 8177 uint32_t dst_addr_hi; 8178 }; 8179 8180 /** 8181 * enum wmi_userspace_log_level - Log level at userspace 8182 * @WMI_LOG_LEVEL_NO_COLLECTION: verbose_level 0 corresponds to no collection 8183 * @WMI_LOG_LEVEL_NORMAL_COLLECT: verbose_level 1 correspond to normal log 8184 * level with minimal user impact. This is the default value. 8185 * @WMI_LOG_LEVEL_ISSUE_REPRO: verbose_level 2 are enabled when user is lazily 8186 * trying to reproduce a problem, wifi performances and power can be impacted 8187 * but device should not otherwise be significantly impacted 8188 * @WMI_LOG_LEVEL_ACTIVE: verbose_level 3+ are used when trying to 8189 * actively debug a problem 8190 * 8191 * Various log levels defined in the userspace for logging applications 8192 */ 8193 enum wmi_userspace_log_level { 8194 WMI_LOG_LEVEL_NO_COLLECTION, 8195 WMI_LOG_LEVEL_NORMAL_COLLECT, 8196 WMI_LOG_LEVEL_ISSUE_REPRO, 8197 WMI_LOG_LEVEL_ACTIVE, 8198 }; 8199 8200 /** 8201 * enum wmi_host_hw_mode_config_type - HW mode config type replicated from 8202 * wmi_hw_mode_config_type in FW header 8203 * @WMI_HOST_HW_MODE_SINGLE: Only one PHY is active. 8204 * @WMI_HOST_HW_MODE_DBS: Both PHYs are active in different bands, 8205 * one in 2G and another in 5G. 8206 * @WMI_HOST_HW_MODE_SBS_PASSIVE: Both PHYs are in passive mode (only rx) in 8207 * same band; no tx allowed. 8208 * @WMI_HOST_HW_MODE_SBS: Both PHYs are active in the same band. 8209 * Support for both PHYs within one band is planned 8210 * for 5G only(as indicated in WMI_MAC_PHY_CAPABILITIES), 8211 * but could be extended to other bands in the future. 8212 * The separation of the band between the two PHYs needs 8213 * to be communicated separately. 8214 * @WMI_HOST_HW_MODE_DBS_SBS: 3 PHYs, with 2 on the same band doing SBS 8215 * as in WMI_HW_MODE_SBS, and 3rd on the other band 8216 * @WMI_HOST_HW_MODE_DBS_OR_SBS: Two PHY with one PHY capabale of both 2G and 8217 * 5G. It can support SBS (5G + 5G) OR DBS (5G + 2G). 8218 * @WMI_HOST_HW_MODE_DBS_2G_5G: Both PHYs are active in different bands. 8219 * PhyA 2G and PhyB 5G 8220 * @WMI_HOST_HW_MODE_2G_PHYB: Only one phy is active. 2G mode on PhyB. 8221 * @WMI_HOST_HW_MODE_EMLSR: Both PHYs are active in listen mode in 1x1 8222 * and Tx/Rx trigger on any PHY will switch 8223 * from 1x1 to 2x2 on that Phy 8224 * @WMI_HOST_HW_MODE_AUX_EMLSR_SINGLE: PHYA0 and AUX are active in listen mode 8225 * in 1x1 and Tx/Rx trigger on any. 8226 * PHY will switch from 1x1 to 2x2 8227 * on that Phy. 8228 * @WMI_HOST_HW_MODE_AUX_EMLSR_SPLIT: PHYA1 and AUX are active in listen mode 8229 * in 1x1 and Tx/Rx trigger on any. 8230 * PHY will switch from 1x1 to 2x2 8231 * on that Phy. 8232 * @WMI_HOST_HW_MODE_MAX: Max hw_mode_id. Used to indicate invalid mode. 8233 * @WMI_HOST_HW_MODE_DETECT: Mode id used by host to choose mode from target 8234 * supported modes. 8235 */ 8236 enum wmi_host_hw_mode_config_type { 8237 WMI_HOST_HW_MODE_SINGLE = 0, 8238 WMI_HOST_HW_MODE_DBS = 1, 8239 WMI_HOST_HW_MODE_SBS_PASSIVE = 2, 8240 WMI_HOST_HW_MODE_SBS = 3, 8241 WMI_HOST_HW_MODE_DBS_SBS = 4, 8242 WMI_HOST_HW_MODE_DBS_OR_SBS = 5, 8243 WMI_HOST_HW_MODE_DBS_2G_5G = 6, 8244 WMI_HOST_HW_MODE_2G_PHYB = 7, 8245 WMI_HOST_HW_MODE_EMLSR = 8, 8246 WMI_HOST_HW_MODE_AUX_EMLSR_SINGLE = 9, 8247 WMI_HOST_HW_MODE_AUX_EMLSR_SPLIT = 10, 8248 WMI_HOST_HW_MODE_MAX, 8249 WMI_HOST_HW_MODE_DETECT, 8250 }; 8251 8252 /** 8253 * enum wmi_host_dynamic_hw_mode_config_type - Host defined enum for 8254 * dynamic mode switch 8255 * @WMI_HOST_DYNAMIC_HW_MODE_DISABLED: hw mode switch is disabled 8256 * @WMI_HOST_DYNAMIC_HW_MODE_SLOW: hw mode switch with interface down/up 8257 * @WMI_HOST_DYNAMIC_HW_MODE_FAST: hw mode switch without interface down/up 8258 * @WMI_HOST_DYNAMIC_HW_MODE_MAX: Max value to indicate invalid mode 8259 */ 8260 enum wmi_host_dynamic_hw_mode_config_type { 8261 WMI_HOST_DYNAMIC_HW_MODE_DISABLED = 0, 8262 WMI_HOST_DYNAMIC_HW_MODE_SLOW = 1, 8263 WMI_HOST_DYNAMIC_HW_MODE_FAST = 2, 8264 WMI_HOST_DYNAMIC_HW_MODE_MAX, 8265 }; 8266 8267 /* 8268 * struct wmi_host_peer_txmu_cnt_event 8269 * @tx_mu_transmitted - MU-MIMO tx count 8270 */ 8271 typedef struct { 8272 uint32_t tx_mu_transmitted; 8273 } wmi_host_peer_txmu_cnt_event; 8274 8275 /** 8276 * struct esp_estimation_event - esp airtime estimation event 8277 * @ac_airtime_percentage: Estimated Airtime 8278 * @pdev_id: PDEV_ID of Data 8279 */ 8280 struct esp_estimation_event { 8281 uint32_t ac_airtime_percentage; 8282 uint32_t pdev_id; 8283 }; 8284 8285 /* 8286 * struct wmi_peer_gid_userpos_list_event 8287 * @usr_list - User list 8288 */ 8289 #define GID_OVERLOAD_GROUP_COUNT 15 8290 typedef struct { 8291 uint32_t usr_list[GID_OVERLOAD_GROUP_COUNT]; 8292 } wmi_host_peer_gid_userpos_list_event; 8293 8294 /** 8295 * enum rcpi_measurement_type - for identifying type of rcpi measurement 8296 * @RCPI_MEASUREMENT_TYPE_AVG_MGMT: avg rcpi of mgmt frames 8297 * @RCPI_MEASUREMENT_TYPE_AVG_DATA: avg rcpi of data frames 8298 * @RCPI_MEASUREMENT_TYPE_LAST_MGMT: rcpi of last mgmt frame 8299 * @RCPI_MEASUREMENT_TYPE_LAST_DATA: rcpi of last data frame 8300 * @RCPI_MEASUREMENT_TYPE_INVALID: invalid rcpi measurement type 8301 */ 8302 enum rcpi_measurement_type { 8303 RCPI_MEASUREMENT_TYPE_AVG_MGMT = 0x1, 8304 RCPI_MEASUREMENT_TYPE_AVG_DATA = 0x2, 8305 RCPI_MEASUREMENT_TYPE_LAST_MGMT = 0x3, 8306 RCPI_MEASUREMENT_TYPE_LAST_DATA = 0x4, 8307 RCPI_MEASUREMENT_TYPE_INVALID = 0x5, 8308 }; 8309 8310 /** 8311 * struct rcpi_req - RCPI req parameter 8312 * @vdev_id: virtual device id 8313 * @measurement_type: type of rcpi from enum wmi_rcpi_measurement_type 8314 * @mac_addr: peer mac addr for which measurement is required 8315 */ 8316 struct rcpi_req { 8317 uint32_t vdev_id; 8318 enum rcpi_measurement_type measurement_type; 8319 uint8_t mac_addr[QDF_MAC_ADDR_SIZE]; 8320 }; 8321 8322 /** 8323 * struct rcpi_res - RCPI response parameter 8324 * @vdev_id: virtual device id 8325 * @measurement_type: type of rcpi from enum wmi_rcpi_measurement_type 8326 * @mac_addr: peer mac addr for which measurement is required 8327 * @rcpi_value: value of RCPI computed by firmware 8328 */ 8329 struct rcpi_res { 8330 uint32_t vdev_id; 8331 enum rcpi_measurement_type measurement_type; 8332 uint8_t mac_addr[QDF_MAC_ADDR_SIZE]; 8333 int32_t rcpi_value; 8334 }; 8335 8336 #define WMI_HOST_BOARD_MCN_STRING_MAX_SIZE 19 8337 #define WMI_HOST_BOARD_MCN_STRING_BUF_SIZE \ 8338 (WMI_HOST_BOARD_MCN_STRING_MAX_SIZE+1) /* null-terminator */ 8339 8340 /** 8341 * enum WMI_HOST_CALIBRATION_STATUS - Host defined Enums for cal status 8342 * @WMI_HOST_NO_FEATURE: The board was calibrated with a meta 8343 * which did not have this feature 8344 * @WMI_HOST_CALIBRATION_OK: The calibration status is OK 8345 * @WMI_HOST_CALIBRATION_NOT_OK: The calibration status is NOT OK 8346 */ 8347 enum WMI_HOST_CALIBRATION_STATUS { 8348 WMI_HOST_NO_FEATURE = 0, 8349 WMI_HOST_CALIBRATION_OK, 8350 WMI_HOST_CALIBRATION_NOT_OK, 8351 }; 8352 8353 /** 8354 * struct wmi_host_pdev_utf_event - Host defined struct to hold utf event data 8355 * @data: Pointer to data 8356 * @datalen: Data length 8357 * @pdev_id: Pdev_id of data 8358 * 8359 */ 8360 struct wmi_host_pdev_utf_event { 8361 uint8_t *data; 8362 uint16_t datalen; 8363 uint32_t pdev_id; 8364 }; 8365 8366 /** 8367 * struct wmi_host_utf_seg_header_info - Host defined struct to map seg info in 8368 * UTF event 8369 * @len: segment length 8370 * @msgref: message reference 8371 * @segment_info: segment info 8372 * @pdev_id: pdev_id 8373 * 8374 */ 8375 struct wmi_host_utf_seg_header_info { 8376 uint32_t len; 8377 uint32_t msgref; 8378 uint32_t segment_info; 8379 uint32_t pdev_id; 8380 }; 8381 8382 /** 8383 * struct wmi_host_pdev_qvit_event - Host defined struct to hold qvit event data 8384 * @data: Pointer to data 8385 * @datalen: Data length 8386 * @pdev_id: Pdev ID 8387 */ 8388 struct wmi_host_pdev_qvit_event { 8389 uint8_t *data; 8390 uint16_t datalen; 8391 uint32_t pdev_id; 8392 }; 8393 8394 /** 8395 * enum wmi_peer_create_status - Peer Create response status 8396 * @WMI_PEER_CREATE_SUCCESS: Peer creation successful at fw 8397 * @WMI_PEER_EXISTS: Peer with same mac exists at fw 8398 * @WMI_PEER_CREATE_FAILED: Peer creation failed at fw 8399 */ 8400 enum wmi_peer_create_status { 8401 WMI_PEER_CREATE_SUCCESS = 0, 8402 WMI_PEER_EXISTS = 1, 8403 WMI_PEER_CREATE_FAILED = 2, 8404 }; 8405 8406 /** 8407 * struct wmi_host_dcs_interference_param - DCS interference param 8408 * @interference_type: Type of DCS Interference 8409 * @pdev_id: pdev id 8410 */ 8411 struct wmi_host_dcs_interference_param { 8412 uint32_t interference_type; 8413 uint32_t pdev_id; 8414 }; 8415 8416 /** 8417 * struct wmi_host_rf_characterization_event_param - rf characterization table 8418 * @freq: center frequency of primary channel (in MHz) 8419 * @chan_metric: primary channel-specific metric 8420 * @bw: bandwidth of primary channel (in MHz) 8421 */ 8422 struct wmi_host_rf_characterization_event_param { 8423 uint16_t freq; 8424 uint8_t chan_metric; 8425 wmi_host_channel_width bw; 8426 }; 8427 8428 /* 8429 * struct wmi_host_fips_event_param: FIPS event param 8430 * @pdev_id: pdev id 8431 * @error_status: Error status: 0 (no err), 1, or OPER_TIMEOUR 8432 * @data_len: FIPS data length 8433 * @data: pointer to data 8434 */ 8435 struct wmi_host_fips_event_param { 8436 uint32_t pdev_id; 8437 uint32_t error_status; 8438 uint32_t data_len; 8439 uint32_t *data; 8440 }; 8441 8442 #ifdef WLAN_FEATURE_FIPS_BER_CCMGCM 8443 /* 8444 * struct wmi_host_fips_extend_event_param: FIPS extend event param 8445 * @pdev_id: pdev id 8446 * @fips_cookie: fips_cookie 8447 * @cmd_frag_idx: cmd_frag_idx 8448 * @more_bit: more_bit 8449 * @error_status: Error status: 0 (no err), 1, or OPER_TIMEOUR 8450 * @data_len: FIPS data length 8451 * @data: pointer to data 8452 */ 8453 struct wmi_host_fips_extend_event_param { 8454 uint32_t pdev_id; 8455 uint32_t fips_cookie; 8456 uint32_t cmd_frag_idx; 8457 uint32_t more_bit; 8458 uint32_t error_status; 8459 uint32_t data_len; 8460 uint32_t *data; 8461 }; 8462 #endif 8463 8464 #ifdef WLAN_FEATURE_DISA_FIPS 8465 /** 8466 * struct disa_encrypt_decrypt_resp_params - disa encrypt response 8467 * @vdev_id: vdev id 8468 * @status: status 8469 * @data_len: data length 8470 * @data: data pointer 8471 */ 8472 struct disa_encrypt_decrypt_resp_params { 8473 uint32_t vdev_id; 8474 int32_t status; 8475 uint32_t data_len; 8476 uint8_t *data; 8477 }; 8478 #endif 8479 8480 /** 8481 * struct wmi_host_proxy_ast_reserve_param 8482 * @pdev_id: pdev id 8483 * @result: result 8484 */ 8485 struct wmi_host_proxy_ast_reserve_param { 8486 uint32_t pdev_id; 8487 uint32_t result; 8488 }; 8489 8490 /** 8491 * struct wmi_host_pdev_band_to_mac - freq range for mac 8492 * @pdev_id: PDEV ID to identify mac 8493 * @start_freq: start frequency value 8494 * @end_freq: end frequency value 8495 */ 8496 struct wmi_host_pdev_band_to_mac { 8497 uint32_t pdev_id; 8498 uint32_t start_freq; 8499 uint32_t end_freq; 8500 }; 8501 #define WMI_HOST_MAX_PDEV 3 8502 8503 #ifdef OL_ATH_SMART_LOGGING 8504 8505 #define WMI_HOST_SMART_LOG_SCENARIO_SET(flag, scenario) ((flag) |= (scenario)) 8506 #define WMI_HOST_SMART_LOG_SCENARIO_GET(flag, scenario) ((flag) & (scenario)) 8507 8508 /** 8509 * enum wmi_host_smart_log_scenario - Smart log scenarios to be enabled/disabled 8510 * @WMI_HOST_SMART_LOG_ALL: All smart logging features. 8511 * @WMI_HOST_SMART_LOG_CE_FULL_DETECT_BY_FW: CE with full detect by FW. 8512 * @WMI_HOST_SMART_LOG_TX_RX_TIMEOUT: Tx/Rx timeout. 8513 * @WMI_HOST_SMART_LOG_STA_KICKOUT: STA Kickout. 8514 * @WMI_HOST_SMART_LOG_BCN_CMD_FAILURE: Beacon command failure. 8515 * @WMI_HOST_SMART_LOG_P1_PING_FAILURE: P1 ping failure. Ping failure detection 8516 * is done by host entities. So, host should be able to control the 8517 * enable/disable of this feature. Yet, this is provided in case the 8518 * corresponding FW specific debugs alone have to be enabled/disabled. 8519 * @WMI_HOST_SMART_LOG_CONNECTION_FAILURE: Connection failure. Connection 8520 * failure detection is done by host entities. So, host should be able to 8521 * control the enable/disable of this feature. Yet, this is provided in case the 8522 * corresponding FW specific debugs alone have to be enabled/disabled. 8523 * @WMI_HOST_SMART_LOG_FW_INITIATED_PKT_LOG: FW Initiated packetlog. 8524 * @WMI_HOST_SMART_LOG_EXTENSION_1: If WMI_HOST_SMART_LOG_EXTENSION_1 is set, 8525 * then the 'log_case_ext_1' field in 'wmi_smart_logging' is used; else 8526 * log_case_ext_1 is ignored. 8527 */ 8528 enum wmi_host_smart_log_scenario { 8529 WMI_HOST_SMART_LOG_ALL = 0x0, 8530 WMI_HOST_SMART_LOG_CE_FULL_DETECT_BY_FW = 0x1, 8531 WMI_HOST_SMART_LOG_TX_RX_TIMEOUT = 0x2, 8532 WMI_HOST_SMART_LOG_STA_KICKOUT = 0x4, 8533 WMI_HOST_SMART_LOG_BCN_CMD_FAILURE = 0x8, 8534 WMI_HOST_SMART_LOG_P1_PING_FAILURE = 0x10, 8535 WMI_HOST_SMART_LOG_CONNECTION_FAILURE = 0x20, 8536 WMI_HOST_SMART_LOG_FW_INITIATED_PKT_LOG = 0x40, 8537 8538 /* New scenarios to be added here */ 8539 8540 WMI_HOST_SMART_LOG_EXTENSION_1 = 0x80000000, 8541 }; 8542 8543 /** 8544 * struct wmi_fatal_condition_event - Fatal condition event param 8545 * @type: Type of event 8546 * @subtype: Subtype of event 8547 * @reserved0: obsolete 8548 * @type_subtype_specific_data: Data specific to combination of type and 8549 * subtype. This is held in a union with the original "reserved0" for backward 8550 * compatibility with any code that might refer to it. The previously-reserved 8551 * field now holds data under some conditions. The kind of data depends on the 8552 * above "type" and "subtype" fields. The interpretation of the 8553 * type_subtype_specific_data field based on different type + subtype values is 8554 * shown below: 8555 * 1. type == WMI_HOST_FATAL_CONDITION_PACKET_LOG_CONFIG + subtype 8556 * == WMI_HOST_FATAL_SUBTYPE_PACKET_LOG_CONFIG_START -> 8557 * type_subtype_specific_data = WMI_HOST_PKTLOG_EVENT 8558 * For any type+subtype combinations not listed above, the recipient is expected 8559 * to ignore the type_subtype_specific_data field. 8560 */ 8561 struct wmi_fatal_condition_event { 8562 uint32_t type; 8563 uint32_t subtype; 8564 union { 8565 uint32_t reserved0; 8566 uint32_t type_subtype_specific_data; 8567 }; 8568 }; 8569 8570 /*Currently the Max fatal events is 3 */ 8571 #define FATAL_EVENTS_MAX 3 8572 8573 /** 8574 * struct wmi_debug_fatal_events - Fatal events list 8575 * @num_events:Number of events 8576 * @event: Each event data 8577 */ 8578 struct wmi_debug_fatal_events { 8579 uint32_t num_events; 8580 struct wmi_fatal_condition_event event[FATAL_EVENTS_MAX]; 8581 }; 8582 8583 /** 8584 * enum wmi_host_fatal_condition_type - Values that 'type' can take in 8585 * wmi_fatal_condition_event 8586 * @WMI_HOST_FATAL_CONDITION_EVENT_COMPLETION: Fatal condition event completion 8587 * @WMI_HOST_FATAL_CONDITION_CE_FAILURE: CE failure 8588 * @WMI_HOST_FATAL_CONDITION_TIMEOUTS: Communication timeouts 8589 * @WMI_HOST_FATAL_CONDITION_CONNECTION_ISSUE: Connection issue 8590 * @WMI_HOST_FATAL_CONDITION_PACKET_LOG_CONFIG: Configuration for FW initiated 8591 * packetlog 8592 */ 8593 enum wmi_host_fatal_condition_type { 8594 WMI_HOST_FATAL_CONDITION_EVENT_COMPLETION, 8595 WMI_HOST_FATAL_CONDITION_CE_FAILURE, 8596 WMI_HOST_FATAL_CONDITION_TIMEOUTS, 8597 WMI_HOST_FATAL_CONDITION_CONNECTION_ISSUE, 8598 WMI_HOST_FATAL_CONDITION_PACKET_LOG_CONFIG, 8599 }; 8600 8601 /** 8602 * enum wmi_host_fatal_condition_subtype_timeouts - Possible subtypes for 8603 * WMI_HOST_FATAL_CONDITION_TIMEOUTS 8604 * @WMI_HOST_FATAL_SUBTYPE_TX_TIMEOUT: Tx timeout 8605 * @WMI_HOST_FATAL_SUBTYPE_RX_TIMEOUT: Rx timeout 8606 */ 8607 enum wmi_host_fatal_condition_subtype_timeouts { 8608 WMI_HOST_FATAL_SUBTYPE_TX_TIMEOUT, 8609 WMI_HOST_FATAL_SUBTYPE_RX_TIMEOUT, 8610 }; 8611 8612 /** 8613 * enum wmi_host_fatal_condition_subtype_connection_issue - Possible subtypes 8614 * for WMI_HOST_FATAL_CONDITION_CONNECTION_ISSUE 8615 * @WMI_HOST_FATAL_SUBTYPE_STA_KICKOUT: STA Kickout 8616 * @WMI_HOST_FATAL_SUBTYPE_P1_PING_FAILURE_START_DEBUG: Start debugging for P1 8617 * ping failure 8618 * @WMI_HOST_FATAL_SUBTYPE_P1_PING_FAILURE_STOP_DEBUG: Stop debugging for P1 8619 * ping failure 8620 * @WMI_HOST_FATAL_SUBTYPE_CONNECTION_FAILURE_START_DEBUG: Start debugging for 8621 * connection failure 8622 * @WMI_HOST_FATAL_SUBTYPE_CONNECTION_FAILURE_STOP_DEBUG: Stop debugging for 8623 * connection failure 8624 */ 8625 enum wmi_host_fatal_condition_subtype_connection_issue { 8626 WMI_HOST_FATAL_SUBTYPE_STA_KICKOUT, 8627 WMI_HOST_FATAL_SUBTYPE_P1_PING_FAILURE_START_DEBUG, 8628 WMI_HOST_FATAL_SUBTYPE_P1_PING_FAILURE_STOP_DEBUG, 8629 WMI_HOST_FATAL_SUBTYPE_CONNECTION_FAILURE_START_DEBUG, 8630 WMI_HOST_FATAL_SUBTYPE_CONNECTION_FAILURE_STOP_DEBUG, 8631 }; 8632 8633 /** 8634 * enum wmi_host_fatal_condition_subtype_packet_log_config - Possible subtypes 8635 * for WMI_HOST_FATAL_CONDITION_PACKET_LOG_CONFIG 8636 * @WMI_HOST_FATAL_SUBTYPE_PACKET_LOG_CONFIG_START: Start FW initiated packetlog 8637 * @WMI_HOST_FATAL_SUBTYPE_PACKET_LOG_CONFIG_STOP: Stop FW initiated packetlog 8638 */ 8639 enum wmi_host_fatal_condition_subtype_packet_log_config { 8640 WMI_HOST_FATAL_SUBTYPE_PACKET_LOG_CONFIG_START, 8641 WMI_HOST_FATAL_SUBTYPE_PACKET_LOG_CONFIG_STOP, 8642 }; 8643 8644 #endif /* OL_ATH_SMART_LOGGING */ 8645 8646 #define GET_PN_MAX_LEN 16 8647 #define GET_RX_PN_MAX_LEN 8 8648 8649 /** 8650 * struct wmi_host_get_pn_event - PN event params 8651 * @vdev_id: vdev id 8652 * @mac_addr: Peer mac address 8653 * @key_ix: Key index 8654 * @key_type: key type 8655 * @pn: pn value 8656 */ 8657 struct wmi_host_get_pn_event { 8658 uint32_t vdev_id; 8659 uint8_t mac_addr[QDF_MAC_ADDR_SIZE]; 8660 uint8_t key_ix; 8661 uint32_t key_type; 8662 uint8_t pn[GET_PN_MAX_LEN]; 8663 }; 8664 8665 /** 8666 * struct wmi_host_get_rxpn_event - Rx PN event params 8667 * @vdev_id: vdev id 8668 * @mac_addr: Peer mac address 8669 * @keyix: key index 8670 * @pn: pn value 8671 */ 8672 struct wmi_host_get_rxpn_event { 8673 uint32_t vdev_id; 8674 uint8_t mac_addr[QDF_MAC_ADDR_SIZE]; 8675 uint16_t keyix; 8676 uint8_t pn[GET_RX_PN_MAX_LEN]; 8677 }; 8678 8679 /** 8680 * struct wmi_init_cmd_param - INIT command params 8681 * @res_cfg: pointer to resource config 8682 * @num_mem_chunks: number of memory chunks 8683 * @mem_chunks: pointer to memory chunks 8684 * @hw_mode_id: HW mode index chosen 8685 * @num_band_to_mac: Number of band to mac setting 8686 * @band_to_mac: band to mac setting 8687 */ 8688 struct wmi_init_cmd_param { 8689 target_resource_config *res_cfg; 8690 uint8_t num_mem_chunks; 8691 struct wmi_host_mem_chunk *mem_chunks; 8692 uint32_t hw_mode_id; 8693 uint32_t num_band_to_mac; 8694 struct wmi_host_pdev_band_to_mac band_to_mac[WMI_HOST_MAX_PDEV]; 8695 }; 8696 8697 /** 8698 * struct pdev_csa_switch_count_status - CSA switch count status event param 8699 * @pdev_id: Physical device identifier 8700 * @current_switch_count: Current CSA switch count 8701 * @num_vdevs: Number of vdevs that need restart 8702 * @vdev_ids: Array containing the vdev ids that need restart 8703 */ 8704 struct pdev_csa_switch_count_status { 8705 uint32_t pdev_id; 8706 uint32_t current_switch_count; 8707 uint32_t num_vdevs; 8708 uint32_t *vdev_ids; 8709 }; 8710 8711 /** 8712 * enum wmi_host_active_apf_mode - FW_ACTIVE_APF_MODE, replicated from FW header 8713 * @WMI_HOST_ACTIVE_APF_DISABLED: APF is disabled for all packets in active mode 8714 * @WMI_HOST_ACTIVE_APF_ENABLED: APF is enabled for all packets in active mode 8715 * @WMI_HOST_ACTIVE_APF_ADAPTIVE: APF is enabled for packets up to some 8716 * threshold in active mode 8717 */ 8718 enum wmi_host_active_apf_mode { 8719 WMI_HOST_ACTIVE_APF_DISABLED = (1 << 1), 8720 WMI_HOST_ACTIVE_APF_ENABLED = (1 << 2), 8721 WMI_HOST_ACTIVE_APF_ADAPTIVE = (1 << 3) 8722 }; 8723 8724 /** 8725 * struct coex_config_params - Coex config command params 8726 * @vdev_id: Virtual AP device identifier 8727 * @config_type: Configuration type - wmi_coex_config_type enum 8728 * @config_arg1: Configuration argument based on config type 8729 * @config_arg2: Configuration argument based on config type 8730 * @config_arg3: Configuration argument based on config type 8731 * @config_arg4: Configuration argument based on config type 8732 * @config_arg5: Configuration argument based on config type 8733 * @config_arg6: Configuration argument based on config type 8734 */ 8735 struct coex_config_params { 8736 uint32_t vdev_id; 8737 uint32_t config_type; 8738 uint32_t config_arg1; 8739 uint32_t config_arg2; 8740 uint32_t config_arg3; 8741 uint32_t config_arg4; 8742 uint32_t config_arg5; 8743 uint32_t config_arg6; 8744 }; 8745 8746 #define WMI_HOST_PDEV_ID_SOC 0xFF 8747 #define WMI_HOST_PDEV_ID_0 0 8748 #define WMI_HOST_PDEV_ID_1 1 8749 #define WMI_HOST_PDEV_ID_2 2 8750 #define WMI_HOST_PDEV_ID_INVALID 0xFFFFFFFF 8751 8752 /** 8753 * struct wmi_host_ready_ev_param - Data revieved in ready event 8754 * @status: FW init status. Success or Failure. 8755 * @num_dscp_table: Number of DSCP table supported in FW 8756 * @num_extra_mac_addr: Extra mac address present in ready event. Used 8757 * in DBDC mode to provide multiple mac per pdev. 8758 * @num_total_peer: Total number of peers FW could allocate. Zero means 8759 * FW could allocate num peers requested by host in init. 8760 * Otherwise, host need update it max_peer to this value. 8761 * @num_extra_peer: Number of extra peers created and used within FW. Host 8762 * should expect peer_id can be num_total_peer + num_extra_peer 8763 * but it can create only upto num_total_peer. 8764 * @agile_capability: Boolean specification of whether the target supports 8765 * agile DFS, by means of using one 80 MHz radio chain for 8766 * radar detection, concurrently with using another radio 8767 * chain for non-160 MHz regular operation. 8768 * @max_ast_index: Max number of AST entries that FW could allocate. 8769 * @pktlog_defs_checksum: checksum computed from the definitions of the enums 8770 * and structs used within pktlog traces. This is sent 8771 * from the FW as part of FW ready event and needs 8772 * to be embedded in the pktlog buffer header as version. 8773 * @num_max_active_vdevs: number of max active virtual devices (VAPs) to 8774 * support 8775 */ 8776 struct wmi_host_ready_ev_param { 8777 uint32_t status; 8778 uint32_t num_dscp_table; 8779 uint32_t num_extra_mac_addr; 8780 uint32_t num_total_peer; 8781 uint32_t num_extra_peer; 8782 bool agile_capability; 8783 uint32_t max_ast_index; 8784 uint32_t pktlog_defs_checksum; 8785 uint32_t num_max_active_vdevs; 8786 }; 8787 8788 enum bcn_offload_control_param { 8789 BCN_OFFLD_CTRL_TX_DISABLE = 0, 8790 BCN_OFFLD_CTRL_TX_ENABLE, 8791 BCN_OFFLD_CTRL_SWBA_DISABLE, 8792 BCN_OFFLD_CTRL_SWBA_ENABLE, 8793 }; 8794 8795 #ifdef OBSS_PD 8796 /** 8797 * struct wmi_host_obss_spatial_reuse_set_param - OBSS_PD_SPATIAL Reuse 8798 * structure 8799 * @enable: Enable/Disable Spatial Reuse 8800 * @obss_min: Minimum OBSS level to use 8801 * @obss_max: Maximum OBSS level to use 8802 * @vdev_id: Vdev id 8803 */ 8804 struct wmi_host_obss_spatial_reuse_set_param { 8805 uint32_t enable; 8806 int32_t obss_min; 8807 int32_t obss_max; 8808 uint32_t vdev_id; 8809 }; 8810 8811 /** 8812 * struct wmi_host_obss_spatial_reuse_set_def_thresh - default obsspd offsets 8813 * @obss_min: Minimum OBSS level to use 8814 * @obss_max: Maximum OBSS level to use 8815 * @vdev_type: vdev_type should be one of WMI_VDEV_TYPE_STA or WMI_VDEV_TYPE_AP 8816 */ 8817 struct wmi_host_obss_spatial_reuse_set_def_thresh { 8818 int32_t obss_min; 8819 int32_t obss_max; 8820 uint32_t vdev_type; 8821 }; 8822 #endif 8823 8824 /** 8825 * struct wmi_host_injector_frame_params - Injector frame configuration params 8826 * @vdev_id: vdev identifier of VAP 8827 * @enable: Enable/disable flag for the frame 8828 * @frame_type: Frame type to be enabled 8829 * @frame_inject_period: Periodicity of injector frame transmission in msecs 8830 * @frame_duration: Frame Duration field in usecs 8831 * @frame_bw: Bandwidth of the injected frame 8832 * @dstmac: Destination address to be used for the frame 8833 */ 8834 struct wmi_host_injector_frame_params { 8835 uint32_t vdev_id; 8836 uint32_t enable; 8837 uint32_t frame_type; 8838 uint32_t frame_inject_period; 8839 uint32_t frame_duration; 8840 uint32_t frame_bw; 8841 uint8_t dstmac[QDF_MAC_ADDR_SIZE]; 8842 }; 8843 8844 /** 8845 * struct wdsentry - WDS entry structure 8846 * @peer_mac: peer mac 8847 * @wds_mac: wds mac address 8848 * @flags: flags 8849 */ 8850 struct wdsentry { 8851 u_int8_t peer_mac[QDF_MAC_ADDR_SIZE]; 8852 u_int8_t wds_mac[QDF_MAC_ADDR_SIZE]; 8853 uint32_t flags; 8854 }; 8855 8856 /** 8857 * struct wmi_obss_detection_cfg_param - obss detection cfg 8858 * @vdev_id: vdev id 8859 * @obss_detect_period_ms: detection period in ms 8860 * @obss_11b_ap_detect_mode: detect whether there is 11b ap/ibss 8861 * @obss_11b_sta_detect_mode: detect whether there is 11b sta 8862 * connected with other APs 8863 * @obss_11g_ap_detect_mode: detect whether there is 11g AP 8864 * @obss_11a_detect_mode: detect whether there is legacy 11a traffic 8865 * @obss_ht_legacy_detect_mode: detect whether there is ap which is 8866 * ht legacy mode 8867 * @obss_ht_mixed_detect_mode: detect whether there is ap which is ht mixed mode 8868 * @obss_ht_20mhz_detect_mode: detect whether there is ap which has 20M only 8869 * station 8870 */ 8871 struct wmi_obss_detection_cfg_param { 8872 uint32_t vdev_id; 8873 uint32_t obss_detect_period_ms; 8874 uint32_t obss_11b_ap_detect_mode; 8875 uint32_t obss_11b_sta_detect_mode; 8876 uint32_t obss_11g_ap_detect_mode; 8877 uint32_t obss_11a_detect_mode; 8878 uint32_t obss_ht_legacy_detect_mode; 8879 uint32_t obss_ht_mixed_detect_mode; 8880 uint32_t obss_ht_20mhz_detect_mode; 8881 }; 8882 8883 /** 8884 * enum wmi_obss_detection_reason - obss detection event reasons 8885 * @OBSS_OFFLOAD_DETECTION_DISABLED: OBSS detection disabled 8886 * @OBSS_OFFLOAD_DETECTION_PRESENT: OBSS present detection 8887 * @OBSS_OFFLOAD_DETECTION_ABSENT: OBSS absent detection 8888 * 8889 * Defines different types of reasons for obss detection event from firmware. 8890 */ 8891 enum wmi_obss_detection_reason { 8892 OBSS_OFFLOAD_DETECTION_DISABLED = 0, 8893 OBSS_OFFLOAD_DETECTION_PRESENT = 1, 8894 OBSS_OFFLOAD_DETECTION_ABSENT = 2, 8895 }; 8896 8897 /** 8898 * struct wmi_obss_detect_info - OBSS detection info from firmware 8899 * @vdev_id: ID of the vdev to which this info belongs. 8900 * @reason: Indicate if present or Absent detection, 8901 * also if not supported offload for this vdev. 8902 * @matched_detection_masks: Detection bit map. 8903 * @matched_bssid_addr: MAC address valid for only if info is present detection. 8904 */ 8905 struct wmi_obss_detect_info { 8906 uint32_t vdev_id; 8907 enum wmi_obss_detection_reason reason; 8908 uint32_t matched_detection_masks; 8909 uint8_t matched_bssid_addr[QDF_MAC_ADDR_SIZE]; 8910 }; 8911 8912 #ifdef QCA_SUPPORT_CP_STATS 8913 /** 8914 * struct wmi_host_congestion_stats - host definition of congestion stats 8915 * @vdev_id: ID of the vdev to which this info belongs. 8916 * @congestion: This field holds the congestion percentage = 8917 * (busy_time/total_time)*100 8918 * for the interval from when the vdev was started to the current time 8919 * (or the time at which the vdev was stopped). 8920 */ 8921 struct wmi_host_congestion_stats { 8922 uint32_t vdev_id; 8923 uint32_t congestion; 8924 }; 8925 #endif 8926 8927 #ifdef FEATURE_WLAN_APF 8928 /** 8929 * struct wmi_apf_write_memory_params - Android Packet Filter write memory 8930 * params 8931 * @vdev_id: VDEV on which APF memory is to be written 8932 * @apf_version: APF version number 8933 * @program_len: Length reserved for program in the APF work memory 8934 * @addr_offset: Relative address in APF work memory to start writing 8935 * @length: Size of the write 8936 * @buf: Pointer to the buffer 8937 */ 8938 struct wmi_apf_write_memory_params { 8939 uint8_t vdev_id; 8940 uint32_t apf_version; 8941 uint32_t program_len; 8942 uint32_t addr_offset; 8943 uint32_t length; 8944 uint8_t *buf; 8945 }; 8946 8947 /** 8948 * struct wmi_apf_read_memory_params - Android Packet Filter read memory params 8949 * @vdev_id: vdev id 8950 * @addr_offset: Relative address in APF work memory to read from 8951 * @length: Size of the memory fetch 8952 */ 8953 struct wmi_apf_read_memory_params { 8954 uint8_t vdev_id; 8955 uint32_t addr_offset; 8956 uint32_t length; 8957 }; 8958 8959 /** 8960 * struct wmi_apf_read_memory_resp_event_params - Event containing read Android 8961 * Packet Filter memory response 8962 * @vdev_id: vdev id 8963 * @offset: Read memory offset 8964 * @length: Read memory length 8965 * @more_data: Indicates more data to come 8966 * @data: Pointer to the data 8967 */ 8968 struct wmi_apf_read_memory_resp_event_params { 8969 uint32_t vdev_id; 8970 uint32_t offset; 8971 uint32_t length; 8972 bool more_data; 8973 uint8_t *data; 8974 }; 8975 #endif /* FEATURE_WLAN_APF */ 8976 8977 /* vdev control flags (per bits) */ 8978 #define WMI_HOST_VDEV_FLAGS_NON_MBSSID_AP 0x00000001 8979 #define WMI_HOST_VDEV_FLAGS_TRANSMIT_AP 0x00000002 8980 #define WMI_HOST_VDEV_FLAGS_NON_TRANSMIT_AP 0x00000004 8981 8982 /* Begin of roam scan stats definitions */ 8983 8984 #define WMI_ROAM_SCAN_STATS_MAX 5 8985 #define WMI_ROAM_SCAN_STATS_CANDIDATES_MAX 4 8986 #define WMI_ROAM_SCAN_STATS_CHANNELS_MAX 50 8987 8988 /** 8989 * struct wmi_roam_scan_stats_req - Structure to hold roam scan stats request 8990 * @vdev_id: interface id 8991 */ 8992 struct wmi_roam_scan_stats_req { 8993 uint32_t vdev_id; 8994 }; 8995 8996 /** 8997 * struct wmi_roam_scan_cand - Roam scan candidates 8998 * @score: score of AP 8999 * @rssi: rssi of the AP 9000 * @freq: center frequency 9001 * @bssid: bssid of AP 9002 */ 9003 struct wmi_roam_scan_cand { 9004 uint32_t score; 9005 uint32_t rssi; 9006 uint32_t freq; 9007 uint8_t bssid[QDF_MAC_ADDR_SIZE]; 9008 }; 9009 9010 /** 9011 * struct wmi_roam_scan_stats_params - Roam scan details 9012 * @time_stamp: time at which this roam scan happened 9013 * @client_id: id of client which triggered this scan 9014 * @num_scan_chans: number of channels that were scanned as part of this scan 9015 * @scan_freqs: frequencies of the channels that were scanned 9016 * @is_roam_successful: whether a successful roaming happened after this scan 9017 * @old_bssid: bssid to which STA is connected just before this scan 9018 * @new_bssid: bssid to which STA is roamed to in case of successful roaming 9019 * @num_roam_candidates: no.of roam candidates that are being reported 9020 * @cand: roam scan candidate details 9021 * @trigger_id: reason for triggering this roam or roam scan 9022 * @trigger_value: threshold value related to trigger_id 9023 */ 9024 struct wmi_roam_scan_stats_params { 9025 uint64_t time_stamp; 9026 uint32_t client_id; 9027 uint32_t num_scan_chans; 9028 uint32_t scan_freqs[WMI_ROAM_SCAN_STATS_CHANNELS_MAX]; 9029 uint32_t is_roam_successful; 9030 9031 /* Bssid to which STA is connected when the roam scan is triggered */ 9032 uint8_t old_bssid[QDF_MAC_ADDR_SIZE]; 9033 9034 /* 9035 * Bssid to which STA is connected after roaming. Will be valid only 9036 * if is_roam_successful is true. 9037 */ 9038 uint8_t new_bssid[QDF_MAC_ADDR_SIZE]; 9039 9040 /* Number of roam candidates that are being reported in the stats */ 9041 uint32_t num_roam_candidates; 9042 struct wmi_roam_scan_cand cand[WMI_ROAM_SCAN_STATS_CANDIDATES_MAX]; 9043 uint32_t trigger_id; 9044 uint32_t trigger_value; 9045 }; 9046 9047 /** 9048 * struct wmi_roam_scan_stats_res - Roam scan stats response from firmware 9049 * @num_roam_scans: number of roam scans triggered 9050 * @roam_scan: place holder to indicate the array of 9051 * wmi_roam_scan_stats_params followed by this structure 9052 */ 9053 struct wmi_roam_scan_stats_res { 9054 uint32_t num_roam_scans; 9055 struct wmi_roam_scan_stats_params roam_scan[0]; 9056 }; 9057 9058 #define MAX_ROAM_CANDIDATE_AP 9 9059 #define MAX_ROAM_SCAN_CHAN 38 9060 #define MAX_ROAM_SCAN_STATS_TLV 5 9061 #define WLAN_MAX_BTM_CANDIDATE 8 9062 #define WLAN_ROAM_MAX_FRAME_INFO (MAX_ROAM_CANDIDATE_AP * 6) 9063 /** 9064 * struct wmi_btm_req_candidate_info - BTM request candidate info 9065 * @candidate_bssid: Candidate bssid received in BTM request 9066 * @timestamp: candidate_timestamp; 9067 * @preference: candidate preference 9068 */ 9069 struct wmi_btm_req_candidate_info { 9070 struct qdf_mac_addr candidate_bssid; 9071 uint32_t timestamp; 9072 uint8_t preference; 9073 }; 9074 9075 /** 9076 * struct wmi_roam_trigger_per_data - per roam trigger related information 9077 * @rx_rate_thresh_percent: percentage of lower than rx rate threshold 9078 * @tx_rate_thresh_percent: percentage of lower than tx rate threshold 9079 */ 9080 struct wmi_roam_trigger_per_data { 9081 uint8_t rx_rate_thresh_percent; 9082 uint8_t tx_rate_thresh_percent; 9083 }; 9084 9085 /** 9086 * struct wmi_roam_trigger_bmiss_data - bmiss roam trigger related information 9087 * @final_bmiss_cnt: final beacon miss count 9088 * @consecutive_bmiss_cnt: consecutive beacon miss count 9089 * @qos_null_success: is Qos-Null tx Success: 0: success, 1:fail 9090 */ 9091 struct wmi_roam_trigger_bmiss_data { 9092 uint32_t final_bmiss_cnt; 9093 uint32_t consecutive_bmiss_cnt; 9094 uint8_t qos_null_success; 9095 }; 9096 9097 /** 9098 * struct wmi_roam_trigger_low_rssi_data - low rssi roam trigger 9099 * related information 9100 * @current_rssi: Connected AP rssi in dBm 9101 * @roam_rssi_threshold: rssi threshold value in dBm 9102 * @rx_linkspeed_status: rx linkspeed status, 0:good linkspeed, 1:bad 9103 */ 9104 struct wmi_roam_trigger_low_rssi_data { 9105 uint8_t current_rssi; 9106 uint8_t roam_rssi_threshold; 9107 uint8_t rx_linkspeed_status; 9108 }; 9109 9110 /** 9111 * struct wmi_roam_trigger_hi_rssi_data - high rssi roam trigger 9112 * related information 9113 * @current_rssi: Connected AP rssi in dBm 9114 * @hirssi_threshold: roam high RSSI threshold 9115 */ 9116 struct wmi_roam_trigger_hi_rssi_data { 9117 uint8_t current_rssi; 9118 uint8_t hirssi_threshold; 9119 }; 9120 9121 /** 9122 * struct wmi_roam_trigger_congestion_data - congestion roam trigger 9123 * related information 9124 * @rx_tput: RX Throughput in bytes per second in dense env 9125 * @tx_tput: TX Throughput in bytes per second in dense env 9126 * @roamable_count: roamable AP count info in dense env 9127 */ 9128 struct wmi_roam_trigger_congestion_data { 9129 uint32_t rx_tput; 9130 uint32_t tx_tput; 9131 uint8_t roamable_count; 9132 }; 9133 9134 /** 9135 * struct wmi_roam_trigger_user_data - user roam trigger related information 9136 * @invoke_reason: defined in wlan_roam_invoke_reason 9137 */ 9138 struct wmi_roam_trigger_user_data { 9139 uint32_t invoke_reason; 9140 }; 9141 9142 /** 9143 * struct wmi_roam_trigger_background_data - roam trigger related information 9144 * @current_rssi: Connected AP rssi in dBm 9145 * @data_rssi: data frame rssi in dBm 9146 * @data_rssi_threshold: data rssi threshold in dBm 9147 */ 9148 struct wmi_roam_trigger_background_data { 9149 uint8_t current_rssi; 9150 uint8_t data_rssi; 9151 uint8_t data_rssi_threshold; 9152 }; 9153 9154 /** 9155 * struct wmi_roam_btm_trigger_data - BTM roam trigger related information 9156 * @timestamp: timestamp 9157 * @btm_request_mode: BTM request mode - solicited/unsolicited 9158 * @disassoc_timer: Number of TBTT before AP disassociates the STA in ms 9159 * @validity_interval: Preferred candidate list validity interval in ms 9160 * @candidate_list_count: Number of candidates in BTM request. 9161 * @btm_resp_status: Status code of the BTM response. 9162 * @btm_bss_termination_timeout: BTM BSS termination timeout value 9163 * in milli seconds 9164 * @btm_mbo_assoc_retry_timeout: BTM MBO assoc retry timeout value in 9165 * milli seconds 9166 * @token: BTM request dialog token 9167 * @btm_cand: BTM request candidate information 9168 * @is_mlo: Flag to check whether the existing connection a MLO connection 9169 * @band: indicates the link involved in MLO conenection. 9170 */ 9171 struct wmi_roam_btm_trigger_data { 9172 uint32_t timestamp; 9173 uint32_t btm_request_mode; 9174 uint32_t disassoc_timer; 9175 uint32_t validity_interval; 9176 uint32_t candidate_list_count; 9177 uint32_t btm_resp_status; 9178 uint32_t btm_bss_termination_timeout; 9179 uint32_t btm_mbo_assoc_retry_timeout; 9180 uint16_t token; 9181 struct wmi_btm_req_candidate_info btm_cand[WLAN_MAX_BTM_CANDIDATE]; 9182 bool is_mlo; 9183 uint8_t band; 9184 }; 9185 9186 /** 9187 * struct wmi_roam_cu_trigger_data - BSS Load roam trigger parameters 9188 * @cu_load: Connected AP CU load percentage 9189 */ 9190 struct wmi_roam_cu_trigger_data { 9191 uint32_t cu_load; 9192 /* TODO: Add threshold value */ 9193 }; 9194 9195 /** 9196 * struct wmi_roam_rssi_trigger_data - RSSI roam trigger related 9197 * parameters 9198 * @threshold: RSSI threshold value in dBm for LOW rssi roam trigger 9199 */ 9200 struct wmi_roam_rssi_trigger_data { 9201 uint32_t threshold; 9202 }; 9203 9204 /** 9205 * struct wmi_roam_deauth_trigger_data - Deauth roaming trigger related 9206 * parameters 9207 * @type: 1- Deauthentication 2- Disassociation 9208 * @reason: Status code of the Deauth/Disassoc received 9209 */ 9210 struct wmi_roam_deauth_trigger_data { 9211 uint32_t type; 9212 uint32_t reason; 9213 }; 9214 9215 /** 9216 * struct wmi_roam_trigger_periodic_data - periodic roam trigger 9217 * related information 9218 * @periodic_timer_ms: roam scan periodic, milliseconds 9219 */ 9220 struct wmi_roam_trigger_periodic_data { 9221 uint32_t periodic_timer_ms; 9222 }; 9223 9224 /** 9225 * struct wmi_roam_trigger_tx_failures_data - tx failures roam trigger 9226 * related information 9227 * @kickout_threshold: consecutive tx failure threshold 9228 * @kickout_reason: defined in wmi_peer_sta_kickout_reason 9229 */ 9230 struct wmi_roam_trigger_tx_failures_data { 9231 uint32_t kickout_threshold; 9232 uint32_t kickout_reason; 9233 }; 9234 9235 /** 9236 * struct wmi_roam_wtc_btm_trigger_data - wtc btm roaming trigger related 9237 * parameters 9238 * @roaming_mode: Roaming Mode 9239 * @vsie_trigger_reason: Roam trigger reason present in btm request 9240 * @sub_code: Sub code present in btm request 9241 * @wtc_mode: WTC mode 9242 * @wtc_scan_mode: WTC scan mode 9243 * @wtc_rssi_th: Connected AP threshold 9244 * @wtc_candi_rssi_th: Candidate AP threshold 9245 * @wtc_candi_rssi_ext_present: Flag to notify that whether fw sends rssi 9246 * threshold for 5g & 6g AP to host or not 9247 * @wtc_candi_rssi_th_5g: 5g candidate AP rssi threshold 9248 * @wtc_candi_rssi_th_6g: 6g candidate AP rssi threshold 9249 * @duration: WTC duration 9250 */ 9251 struct wmi_roam_wtc_btm_trigger_data { 9252 uint32_t roaming_mode; 9253 uint32_t vsie_trigger_reason; 9254 uint32_t sub_code; 9255 uint32_t wtc_mode; 9256 uint32_t wtc_scan_mode; 9257 uint32_t wtc_rssi_th; 9258 uint32_t wtc_candi_rssi_th; 9259 uint32_t wtc_candi_rssi_ext_present; 9260 uint32_t wtc_candi_rssi_th_5g; 9261 uint32_t wtc_candi_rssi_th_6g; 9262 uint32_t duration; 9263 }; 9264 9265 /** 9266 * struct wmi_roam_trigger_abort_reason - abort roam related information 9267 * @abort_reason_code: detail in qca_wlan_roam_abort_reason 9268 * @data_rssi: data rssi in dBm 9269 * @data_rssi_threshold: data rssi threshold in dBm 9270 * @rx_linkspeed_status: rx linkspeed status, 0:good linkspeed, 1:bad 9271 */ 9272 struct wmi_roam_trigger_abort_reason { 9273 uint32_t abort_reason_code; 9274 uint8_t data_rssi; 9275 uint8_t data_rssi_threshold; 9276 uint8_t rx_linkspeed_status; 9277 }; 9278 9279 /** 9280 * struct wmi_roam_candidate_info - Roam scan candidate APs related info 9281 * @timestamp: Host timestamp in millisecs 9282 * @type: 0 - Candidate AP; 1 - Current connected AP. 9283 * @bssid: AP bssid. 9284 * @freq: Channel frquency 9285 * @cu_load: Channel utilization load of the AP. 9286 * @cu_score: Channel Utilization score. 9287 * @rssi: Candidate AP rssi 9288 * @rssi_score: AP RSSI score 9289 * @total_score: Total score of the candidate AP. 9290 * @etp: Estimated throughput value of the AP in Mbps 9291 * @dl_reason: Denylist reason 9292 * @dl_source: Source of adding AP to DL 9293 * @dl_timestamp:This timestamp indicates the time when AP added 9294 * to denylist. 9295 * @dl_original_timeout: Original timeout value in milli seconds 9296 * when AP added to DL 9297 * @is_mlo: Flag to check whether the existing connection is MLO connection 9298 */ 9299 struct wmi_roam_candidate_info { 9300 uint32_t timestamp; 9301 uint8_t type; 9302 struct qdf_mac_addr bssid; 9303 uint16_t freq; 9304 uint32_t cu_load; 9305 uint32_t cu_score; 9306 uint32_t rssi; 9307 uint32_t rssi_score; 9308 uint32_t total_score; 9309 uint32_t etp; 9310 uint32_t dl_reason; 9311 uint32_t dl_source; 9312 uint32_t dl_timestamp; 9313 uint32_t dl_original_timeout; 9314 bool is_mlo; 9315 }; 9316 9317 /** 9318 * struct wmi_roam_scan_data - Roam scan event details 9319 * @present: Flag to check if the roam scan tlv is present 9320 * @is_btcoex_active: is bluetooth connection active 9321 * @type: 0 - Partial roam scan; 1 - Full roam scan 9322 * @num_ap: Number of candidate APs. 9323 * @num_chan: Number of channels. 9324 * @frame_info_count: Frame info TLV count 9325 * @next_rssi_threshold: Next roam can trigger rssi threshold 9326 * @chan_freq: List of frequencies scanned as part of roam scan 9327 * @ap: List of candidate AP info 9328 * @dwell_type: roam scan channel dwell type, enum in roam_scan_dwell_type 9329 * @scan_complete_timestamp: timestamp of all channels scan completed 9330 * @is_mlo: Flag to check whether the existing connection is MLO connection 9331 * @band: Band involved in the roaming during a MLO connection. 9332 */ 9333 struct wmi_roam_scan_data { 9334 bool present; 9335 bool is_btcoex_active; 9336 uint16_t type; 9337 uint16_t num_ap; 9338 uint16_t num_chan; 9339 uint16_t frame_info_count; 9340 uint32_t next_rssi_threshold; 9341 uint16_t chan_freq[MAX_ROAM_SCAN_CHAN]; 9342 struct wmi_roam_candidate_info ap[MAX_ROAM_CANDIDATE_AP]; 9343 uint8_t dwell_type[MAX_ROAM_SCAN_CHAN]; 9344 uint32_t scan_complete_timestamp; 9345 bool is_mlo; 9346 uint8_t band; 9347 }; 9348 9349 /** 9350 * struct wmi_roam_result - Roam result related info. 9351 * @present: Flag to check if the roam result tlv is present 9352 * @timestamp: Host timestamp in millisecs 9353 * @status: 0 - Roaming is success ; 1 - Roaming failed ; 9354 * 2 - No roam 9355 * @fail_reason: One of WMI_ROAM_FAIL_REASON_ID 9356 * @fail_bssid: BSSID of the last attempted roam failed AP 9357 */ 9358 struct wmi_roam_result { 9359 bool present; 9360 uint32_t timestamp; 9361 uint32_t status; 9362 uint32_t fail_reason; 9363 struct qdf_mac_addr fail_bssid; 9364 }; 9365 9366 #define WLAN_11KV_TYPE_BTM_REQ 1 9367 #define WLAN_11KV_TYPE_NEIGHBOR_RPT 2 9368 9369 /** 9370 * struct wmi_neighbor_report_data - Neighbor report/BTM request related 9371 * data. 9372 * @present: Flag to check if the roam 11kv tlv is present 9373 * @timestamp: Host timestamp in millisecs 9374 * @req_type: 1 - BTM query ; 2 - 11K neighbor report request 9375 * @req_time: Request timestamp in ms 9376 * @resp_time: Response timestamp in ms 9377 * @num_freq: Number of frequencies 9378 * @freq: Channel frequency in Mhz 9379 * @btm_query_token: BTM query dialog token. 9380 * @btm_query_reason: BTM query reasons as defined in 9381 * IEEE802.11v spec table 7-43x 9382 * @req_token: Request token 9383 * @resp_token: Response Token 9384 * @num_rpt: Number of report element 9385 * @is_mlo: Flag to check if the current connection is MLO connection 9386 * @band: indicates the link involved in MLO conenection. 9387 */ 9388 struct wmi_neighbor_report_data { 9389 bool present; 9390 uint32_t timestamp; 9391 uint8_t req_type; 9392 uint32_t req_time; 9393 uint32_t resp_time; 9394 uint8_t num_freq; 9395 uint32_t freq[MAX_ROAM_SCAN_CHAN]; 9396 uint16_t btm_query_token; 9397 uint8_t btm_query_reason; 9398 uint8_t req_token; 9399 uint8_t resp_token; 9400 uint8_t num_rpt; 9401 bool is_mlo; 9402 uint8_t band; 9403 }; 9404 9405 /** 9406 * struct wmi_roam_trigger_info() - Roam trigger related details 9407 * @present: Flag to check if the roam_trigger_info tlv is present 9408 * @common_roam: Flag to indicate common roam or special roam 9409 * @trigger_reason: Roam trigger reason(enum WMI_ROAM_TRIGGER_REASON_ID) 9410 * @trigger_sub_reason: Sub reason for roam trigger if multiple roam scans 9411 * @current_rssi: Connected AP RSSI 9412 * @timestamp: Host timestamp in millisecs when roam scan was triggered 9413 * @per_trig_data: per roam trigger parameters 9414 * @bmiss_trig_data: beacon miss roam trigger parameters. 9415 * @low_rssi_trig_data: low rssi roam trigger parameters. 9416 * @hi_rssi_trig_data: high rssi roam trigger parameters. 9417 * @congestion_trig_data: congestion roam trigger parameters. 9418 * @user_trig_data: user trigger roam parameters. 9419 * @background_trig_data: background roam trigger parameters. 9420 * @btm_trig_data: BTM roam trigger parameters. 9421 * @cu_trig_data: BSS Load roam trigger parameters. 9422 * @rssi_trig_data: RSSI trigger related info. 9423 * @deauth_trig_data: Deauth roam trigger related info 9424 * @periodic_trig_data: periodic roam trigger parameters. 9425 * @tx_failures_trig_data: tx failures roam trigger parameters. 9426 * @wtc_btm_trig_data: WTC BTM roam trigger related info 9427 * @abort_reason: roam abort reason 9428 * @scan_type: roam scan type 9429 * @roam_status: roam result status 9430 * @fail_reason: roam fail reason 9431 */ 9432 struct wmi_roam_trigger_info { 9433 bool present; 9434 bool common_roam; 9435 uint32_t trigger_reason; 9436 uint32_t trigger_sub_reason; 9437 uint32_t current_rssi; 9438 uint32_t timestamp; 9439 union { 9440 struct wmi_roam_trigger_per_data per_trig_data; 9441 struct wmi_roam_trigger_bmiss_data bmiss_trig_data; 9442 struct wmi_roam_trigger_low_rssi_data low_rssi_trig_data; 9443 struct wmi_roam_trigger_hi_rssi_data hi_rssi_trig_data; 9444 struct wmi_roam_trigger_congestion_data congestion_trig_data; 9445 struct wmi_roam_trigger_user_data user_trig_data; 9446 struct wmi_roam_trigger_background_data background_trig_data; 9447 struct wmi_roam_btm_trigger_data btm_trig_data; 9448 struct wmi_roam_cu_trigger_data cu_trig_data; 9449 struct wmi_roam_rssi_trigger_data rssi_trig_data; 9450 struct wmi_roam_deauth_trigger_data deauth_trig_data; 9451 struct wmi_roam_trigger_periodic_data periodic_trig_data; 9452 struct wmi_roam_trigger_tx_failures_data tx_failures_trig_data; 9453 struct wmi_roam_wtc_btm_trigger_data wtc_btm_trig_data; 9454 }; 9455 struct wmi_roam_trigger_abort_reason abort_reason; 9456 uint32_t scan_type; 9457 uint32_t roam_status; 9458 uint32_t fail_reason; 9459 }; 9460 9461 /* End of roam scan stats definitions */ 9462 9463 /** 9464 * enum wmi_obss_color_collision_evt_type - bss color collision event type 9465 * @OBSS_COLOR_COLLISION_DETECTION_DISABLE: OBSS color detection disabled 9466 * @OBSS_COLOR_COLLISION_DETECTION: OBSS color collision detection 9467 * @OBSS_COLOR_FREE_SLOT_TIMER_EXPIRY: OBSS free slot detection with 9468 * within expiry period 9469 * @OBSS_COLOR_FREE_SLOT_AVAILABLE: OBSS free slot detection 9470 * 9471 * Defines different types of type for obss color collision event type. 9472 */ 9473 enum wmi_obss_color_collision_evt_type { 9474 OBSS_COLOR_COLLISION_DETECTION_DISABLE = 0, 9475 OBSS_COLOR_COLLISION_DETECTION = 1, 9476 OBSS_COLOR_FREE_SLOT_TIMER_EXPIRY = 2, 9477 OBSS_COLOR_FREE_SLOT_AVAILABLE = 3, 9478 }; 9479 9480 /** 9481 * struct wmi_obss_color_collision_cfg_param - obss color collision cfg 9482 * @vdev_id: vdev id 9483 * @flags: proposed for future use cases, currently not used. 9484 * @evt_type: bss color collision event. 9485 * @current_bss_color: current bss color. 9486 * @detection_period_ms: scan interval for both AP and STA mode. 9487 * @scan_period_ms: scan period for passive scan to detect collision. 9488 * @free_slot_expiry_time_ms: FW to notify host at timer expiry after 9489 * which Host will disable the bss color. 9490 */ 9491 struct wmi_obss_color_collision_cfg_param { 9492 uint32_t vdev_id; 9493 uint32_t flags; 9494 enum wmi_obss_color_collision_evt_type evt_type; 9495 uint32_t current_bss_color; 9496 uint32_t detection_period_ms; 9497 uint32_t scan_period_ms; 9498 uint32_t free_slot_expiry_time_ms; 9499 }; 9500 9501 /** 9502 * struct wmi_obss_color_collision_info - bss color detection info from firmware 9503 * @vdev_id: ID of the vdev to which this info belongs. 9504 * @evt_type: bss color collision event. 9505 * @obss_color_bitmap_bit0to31: Bit set indicating BSS color present. 9506 * @obss_color_bitmap_bit32to63: Bit set indicating BSS color present. 9507 */ 9508 struct wmi_obss_color_collision_info { 9509 uint32_t vdev_id; 9510 enum wmi_obss_color_collision_evt_type evt_type; 9511 uint32_t obss_color_bitmap_bit0to31; 9512 uint32_t obss_color_bitmap_bit32to63; 9513 }; 9514 9515 #ifdef WMI_AP_SUPPORT 9516 /** 9517 * struct vap_pcp_tid_map_params - PCP tid map params 9518 * @vdev_id: vdev id 9519 * @pcp_to_tid_map: pointer to array of pcp to tid map table 9520 */ 9521 struct vap_pcp_tid_map_params { 9522 uint32_t vdev_id; 9523 uint32_t *pcp_to_tid_map; 9524 }; 9525 9526 /** 9527 * struct vap_tidmap_prec_params - tidmap precedence params 9528 * @vdev_id: vdev id 9529 * @map_precedence: precedence of tid mapping 9530 */ 9531 struct vap_tidmap_prec_params { 9532 uint32_t vdev_id; 9533 uint32_t map_precedence; 9534 }; 9535 9536 #endif 9537 9538 /** 9539 * struct peer_vlan_config_param - peer vlan parameter 9540 * @tx_cmd: Tx command 9541 * @rx_cmd: Rx Command 9542 * @tx_strip_insert: Strip or Insert vlan in Tx[0:Strip, 1: Insert] 9543 * @tx_strip_insert_inner: Enable tx_strip_insert operation for inner vlan tag. 9544 * @tx_strip_insert_outer: Enable tx_strip_insert operation for outer vlan tag. 9545 * @rx_strip_c_tag: Strip c_tag 9546 * @rx_strip_s_tag: Strip s_tag 9547 * @rx_insert_c_tag: Insert c_tag 9548 * @rx_insert_s_tag: Insert s_tag 9549 * @insert_vlan_inner_tci: Vlan inner tci 9550 * @insert_vlan_outer_tci: Vlan outer tci 9551 * @vdev_id: vdev id corresponding to peer. 9552 */ 9553 struct peer_vlan_config_param { 9554 uint16_t tx_cmd:1; 9555 uint16_t rx_cmd:1; 9556 uint16_t tx_strip_insert:1; 9557 uint16_t tx_strip_insert_inner:1; 9558 uint16_t tx_strip_insert_outer:1; 9559 uint16_t rx_strip_c_tag:1; 9560 uint16_t rx_strip_s_tag:1; 9561 uint16_t rx_insert_c_tag:1; 9562 uint16_t rx_insert_s_tag:1; 9563 uint16_t insert_vlan_inner_tci; 9564 uint16_t insert_vlan_outer_tci; 9565 uint8_t vdev_id; 9566 }; 9567 9568 /** 9569 * struct wmi_cfr_peer_tx_event_param - CFR peer tx_event params 9570 * @capture_method: CFR data capture method 9571 * @vdev_id: ID of vdev to which this info belongs 9572 * @peer_mac_addr: Peer MAC address. In AP mode, it is the address of connected 9573 * peer for which CFR capture is needed. In STA mode, this is 9574 * the address of AP it is connected to. 9575 * @primary_20mhz_chan: Primary 20 MHz channel frequency in MHz 9576 * @bandwidth: BW of measurement 9577 * 0 - 20MHz, 1 - 40MHz, 2 - 80MHz, 3 - 160MHz, 4 - 80+80MHz 9578 * @phy_mode: Phy mode of channel, type - WMI_HOST_WLAN_PHY_MODE 9579 * @band_center_freq1: Center frequency 1 in MHz 9580 * @band_center_freq2: Center frequency 2 in MHz 9581 * @spatial_streams: Number of spatial streams 9582 * @correlation_info_1: Address of data from wmi_dma_buf_release_entry [31:0] 9583 * @correlation_info_2: 9584 * Bits [3:0] - Address of data from wmi_dma_buf_release_entry [35:32] 9585 * Bits [15:4] - Reserved 9586 * Bits [31:16] - Hardware PPDU ID [15:0] 9587 * @status: 9588 * Bits [1:0] - TX status, if any. 0-OK, 1-XRETRY, 2-DROP, 3-FILTERED. 9589 * Bits [30:2] - Reserved 9590 * Bit [31] - Status of the CFR capture of the peer 9591 * 1 - Successful, 0 - Unsuccessful. 9592 * @timestamp_us: Timestamp in microseconds at which the CFR was captured 9593 * in the hardware. The clock used for this timestamp is private 9594 * to the target and not visible to the host. So, Host can 9595 * interpret only the relative timestamp deltas from one message 9596 * to the next, but can't interpret the absolute timestamp 9597 * from a single message 9598 * @counter: Count of the current CFR capture from FW. 9599 * This is helpful to identify any drops in FW 9600 * @chain_rssi: Per chain RSSI of the peer, for upto WMI_HOST_MAX_CHAINS. 9601 * Each chain's entry reports the RSSI for different bandwidths. 9602 * Bits [7:0] - Primary 20 MHz 9603 * Bits [15:8] - Secondary 20 MHz of 40 MHz channel (if applicable) 9604 * Bits [23:16] - Secondary 40 MHz of 80 MHz channel (if applicable) 9605 * Bits [31:24] - Secondary 80 MHz of 160 MHz channel (if applicable) 9606 * Each of these 8-bit RSSI reports is in dBm units. 0x80 means invalid. 9607 * Unused bytes within used chain_rssi indices will be 0x80. 9608 * Unused rssi_chain indices will be set to 0x80808080. 9609 * @chain_phase: Per chain phase of peer for upto WMI_HOST_MAX_CHAINS. 9610 * @cfo_measurement: 9611 * @agc_gain: 9612 * @rx_start_ts: 9613 * @rx_ts_reset: 9614 * @mcs_rate: 9615 * @gi_type: 9616 * @agc_gain_tbl_index: 9617 */ 9618 typedef struct { 9619 uint32_t capture_method; 9620 uint32_t vdev_id; 9621 struct qdf_mac_addr peer_mac_addr; 9622 uint32_t primary_20mhz_chan; 9623 uint32_t bandwidth; 9624 uint32_t phy_mode; 9625 uint32_t band_center_freq1; 9626 uint32_t band_center_freq2; 9627 uint32_t spatial_streams; 9628 uint32_t correlation_info_1; 9629 uint32_t correlation_info_2; 9630 uint32_t status; 9631 uint32_t timestamp_us; 9632 uint32_t counter; 9633 uint32_t chain_rssi[WMI_HOST_MAX_CHAINS]; 9634 uint16_t chain_phase[WMI_HOST_MAX_CHAINS]; 9635 int32_t cfo_measurement; 9636 uint8_t agc_gain[WMI_HOST_MAX_CHAINS]; 9637 uint32_t rx_start_ts; 9638 uint32_t rx_ts_reset; 9639 uint32_t mcs_rate; 9640 uint32_t gi_type; 9641 uint8_t agc_gain_tbl_index[WMI_HOST_MAX_CHAINS]; 9642 } wmi_cfr_peer_tx_event_param; 9643 9644 /** 9645 * struct wmi_cfr_phase_delta_param - AoA phase delta params 9646 * @pdev_id: pdev id 9647 * @freq: primary 20 MHz channel frequency in mhz 9648 * @max_chains: indicates max chains for which AoA will be reported 9649 * @chain_phase_mask: indicates the chains to which phase values are 9650 * reported by target 9651 * @phase_delta: phase delta associated with reported chain's each gain value 9652 * @ibf_cal_val: IBF values to be added with phase delta of chains reported 9653 */ 9654 struct wmi_cfr_phase_delta_param { 9655 uint32_t pdev_id; 9656 uint32_t freq; 9657 uint32_t max_chains; 9658 uint32_t chain_phase_mask; 9659 uint32_t phase_delta[WMI_MAX_CHAINS_PHASE][WMI_MAX_AOA_PHASE_DELTA]; 9660 uint32_t ibf_cal_val[WMI_MAX_CHAINS_PHASE]; 9661 }; 9662 9663 #ifdef WLAN_RCC_ENHANCED_AOA_SUPPORT 9664 struct wmi_cfr_enh_phase_delta_param { 9665 uint32_t pdev_id; 9666 uint32_t freq; 9667 uint32_t max_chains; 9668 uint32_t data_for_chainmask; 9669 uint32_t xbar_config; 9670 uint32_t ibf_cal_val[WMI_HOST_MAX_NUM_CHAINS]; 9671 uint32_t array_size; 9672 uint32_t *gain_stop_index_array; 9673 uint32_t *enh_phase_delta_array; 9674 }; 9675 #endif /* WLAN_RCC_ENHANCED_AOA_SUPPORT */ 9676 9677 /** 9678 * struct wmi_host_oem_indirect_data - Indirect OEM data 9679 * @pdev_id: pdev id 9680 * @len: length of data in bytes 9681 * @addr: 36 bit address 9682 */ 9683 struct wmi_host_oem_indirect_data { 9684 uint32_t pdev_id; 9685 uint32_t len; 9686 uint64_t addr; 9687 }; 9688 9689 /** 9690 * struct wmi_oem_response_param - OEM response info 9691 * @num_data1: First data response length 9692 * @num_data2: Second data response length 9693 * @data_1: First data 9694 * @data_2: Second data 9695 * @indirect_data: Indirect data 9696 */ 9697 struct wmi_oem_response_param { 9698 uint32_t num_data1; 9699 uint32_t num_data2; 9700 uint8_t *data_1; 9701 uint8_t *data_2; 9702 struct wmi_host_oem_indirect_data indirect_data; 9703 }; 9704 9705 /** 9706 * struct wifi_pos_pasn_peer_data - Wifi pos 11az ranging peer 9707 * data. This structure is used to copy the peer related info from 9708 * PASN events and pass it to wifi pos module 9709 * @vdev_id: vdev id 9710 * @num_peers: Total number of peers to be deleted 9711 * @peer_info: PASN peer entry details 9712 */ 9713 struct wifi_pos_pasn_peer_data { 9714 uint8_t vdev_id; 9715 uint8_t num_peers; 9716 struct wlan_pasn_request peer_info[WLAN_MAX_11AZ_PEERS]; 9717 }; 9718 9719 /** 9720 * struct mws_coex_state - Modem Wireless Subsystem(MWS) coex info 9721 * @vdev_id : vdev id 9722 * @coex_scheme_bitmap: LTE-WLAN coexistence scheme bitmap 9723 * Indicates the final schemes applied for the current Coex scenario. 9724 * Bit 0 - TDM policy 9725 * Bit 1 - Forced TDM policy 9726 * Bit 2 - Dynamic Power Back-off policy 9727 * Bit 3 - Channel Avoidance policy 9728 * Bit 4 - Static Power Back-off policy. 9729 * @active_conflict_count : active conflict count 9730 * @potential_conflict_count: Potential conflict count 9731 * @chavd_group0_bitmap: Indicates the WLAN channels to be avoided in 9732 * b/w WLAN CH-1 and WLAN CH-14 9733 * @chavd_group1_bitmap: Indicates the WLAN channels to be avoided in 9734 * WLAN CH-36 and WLAN CH-64 9735 * @chavd_group2_bitmap: Indicates the WLAN channels to be avoided in 9736 * b/w WLAN CH-100 and WLAN CH-140 9737 * @chavd_group3_bitmap: Indicates the WLAN channels to be avoided in 9738 * b/w WLAN CH-149 and WLAN CH-165 9739 */ 9740 struct mws_coex_state { 9741 uint32_t vdev_id; 9742 uint32_t coex_scheme_bitmap; 9743 uint32_t active_conflict_count; 9744 uint32_t potential_conflict_count; 9745 uint32_t chavd_group0_bitmap; 9746 uint32_t chavd_group1_bitmap; 9747 uint32_t chavd_group2_bitmap; 9748 uint32_t chavd_group3_bitmap; 9749 }; 9750 9751 /** 9752 * struct mws_coex_dpwb_state - Modem Wireless Subsystem(MWS) coex DPWB info 9753 * @vdev_id: vdev id 9754 * @current_dpwb_state: Current state of the Dynamic Power Back-off SM 9755 * @pnp1_value: Tx power to be applied in next Dynamic Power Back-off cycle 9756 * @lte_dutycycle: Indicates the duty cycle of current LTE frame 9757 * @sinr_wlan_on: LTE SINR value in dB, when WLAN is ON 9758 * @sinr_wlan_off: LTE SINR value in dB, when WLAN is OFF 9759 * @bler_count: LTE blocks with error for the current block err report. 9760 * @block_count: Number of LTE blocks considered for bler count report. 9761 * @wlan_rssi_level: WLAN RSSI level 9762 * @wlan_rssi: WLAN RSSI value in dBm considered in DP backoff algo 9763 * @is_tdm_running: Indicates whether any TDM policy triggered 9764 */ 9765 struct mws_coex_dpwb_state { 9766 uint32_t vdev_id; 9767 int32_t current_dpwb_state; 9768 int32_t pnp1_value; 9769 uint32_t lte_dutycycle; 9770 int32_t sinr_wlan_on; 9771 int32_t sinr_wlan_off; 9772 uint32_t bler_count; 9773 uint32_t block_count; 9774 uint32_t wlan_rssi_level; 9775 int32_t wlan_rssi; 9776 uint32_t is_tdm_running; 9777 }; 9778 9779 /** 9780 * struct mws_coex_tdm_state - Modem Wireless Subsystem(MWS) coex TDM state info 9781 * @vdev_id: vdev id 9782 * @tdm_policy_bitmap: Time Division Multiplexing (TDM) LTE-Coex Policy type. 9783 * @tdm_sf_bitmap: TDM LTE/WLAN sub-frame bitmap. 9784 */ 9785 struct mws_coex_tdm_state { 9786 uint32_t vdev_id; 9787 uint32_t tdm_policy_bitmap; 9788 uint32_t tdm_sf_bitmap; 9789 }; 9790 9791 /** 9792 * struct mws_coex_idrx_state - Modem Wireless Subsystem(MWS) coex IDRX state 9793 * @vdev_id: vdev id 9794 * @sub0_techid: SUB0 LTE-coex tech. 9795 * @sub0_policy: SUB0 mitigation policy. 9796 * @sub0_is_link_critical: Set if SUB0 is in link critical state. 9797 * @sub0_static_power: LTE SUB0 imposed static power applied 9798 * to WLAN due to LTE-WLAN coex. 9799 * @sub0_rssi: LTE SUB0 RSSI value in dBm. 9800 * @sub1_techid: SUB1 LTE-coex tech. 9801 * @sub1_policy: SUB1 mitigation policy. 9802 * @sub1_is_link_critical: Set if SUB1 is in link critical state. 9803 * @sub1_static_power: LTE SUB1 imposed static power applied 9804 * to WLAN due to LTE-WLAN coex. 9805 * @sub1_rssi: LTE SUB1 RSSI value in dBm. 9806 */ 9807 struct mws_coex_idrx_state { 9808 uint32_t vdev_id; 9809 uint32_t sub0_techid; 9810 uint32_t sub0_policy; 9811 uint32_t sub0_is_link_critical; 9812 int32_t sub0_static_power; 9813 int32_t sub0_rssi; 9814 uint32_t sub1_techid; 9815 uint32_t sub1_policy; 9816 uint32_t sub1_is_link_critical; 9817 int32_t sub1_static_power; 9818 int32_t sub1_rssi; 9819 }; 9820 9821 /** 9822 * struct mws_antenna_sharing_info - MWS Antenna sharing Info 9823 * @vdev_id: vdev id 9824 * @coex_flags: BDF values of Coex flags 9825 * @coex_config: BDF values of Coex Antenna sharing config 9826 * @tx_chain_mask: Tx Chain mask value 9827 * @rx_chain_mask: Rx Chain mask value 9828 * @rx_nss: Currently active Rx Spatial streams 9829 * @force_mrc: Forced MRC policy type 9830 * @rssi_type: RSSI value considered for MRC 9831 * @chain0_rssi: RSSI value measured at Chain-0 in dBm 9832 * @chain1_rssi: RSSI value measured at Chain-1 in dBm 9833 * @combined_rssi: RSSI value of two chains combined in dBm 9834 * @imbalance: Absolute imbalance between two Rx chains in dB 9835 * @mrc_threshold: RSSI threshold defined for the above imbalance value in dBm 9836 * @grant_duration: Antenna grant duration to WLAN, in milliseconds 9837 */ 9838 struct mws_antenna_sharing_info { 9839 uint32_t vdev_id; 9840 uint32_t coex_flags; 9841 uint32_t coex_config; 9842 uint32_t tx_chain_mask; 9843 uint32_t rx_chain_mask; 9844 uint32_t rx_nss; 9845 uint32_t force_mrc; 9846 uint32_t rssi_type; 9847 int32_t chain0_rssi; 9848 int32_t chain1_rssi; 9849 int32_t combined_rssi; 9850 uint32_t imbalance; 9851 int32_t mrc_threshold; 9852 uint32_t grant_duration; 9853 }; 9854 9855 #ifdef FEATURE_ANI_LEVEL_REQUEST 9856 /* Maximum number of freqs for which ANI level can be requested */ 9857 #define MAX_NUM_FREQS_FOR_ANI_LEVEL 20 9858 9859 /* A valid ANI level lies between 0 to 9 */ 9860 #define MAX_ANI_LEVEL 9 9861 9862 struct wmi_host_ani_level_event { 9863 uint32_t chan_freq; 9864 uint32_t ani_level; 9865 }; 9866 #endif /* FEATURE_ANI_LEVEL_REQUEST */ 9867 9868 #define WMI_HOST_TBTT_OFFSET_INVALID 0xffffffff 9869 #define MAX_SUPPORTED_NEIGHBORS 16 9870 9871 /* command type for WMI_PDEV_TBTT_OFFSET_SYNC_CMDID */ 9872 enum wmi_host_tbtt_offset_cmd_type { 9873 WMI_HOST_PDEV_GET_TBTT_OFFSET, 9874 WMI_HOST_PDEV_SET_TBTT_OFFSET, 9875 }; 9876 9877 /** 9878 * struct wmi_raw_event_buffer - fw event buffers 9879 * @evt_raw_buf: event raw buffer 9880 * @evt_processed_buf: event processed buffer 9881 */ 9882 struct wmi_raw_event_buffer { 9883 void *evt_raw_buf; 9884 void *evt_processed_buf; 9885 }; 9886 9887 /* dpd_status from WMI_PDEV_GET_DPD_STATUS_EVENTID */ 9888 enum wmi_host_dpd_status { 9889 WMI_HOST_DPD_STATUS_FAIL = 0, 9890 WMI_HOST_DPD_STATUS_PASS = 1, 9891 WMI_HOST_DPD_STATUS_INVALID = 2, 9892 }; 9893 9894 /** 9895 * struct wmi_host_pdev_get_dpd_status_event 9896 * @pdev_id: pdev id 9897 * @dpd_status: dpd status from FW - FAIL/PASS/INVALID 9898 */ 9899 struct wmi_host_pdev_get_dpd_status_event { 9900 uint32_t pdev_id; 9901 enum wmi_host_dpd_status dpd_status; 9902 }; 9903 9904 struct wmi_host_pdev_get_halphy_cal_status_event { 9905 uint32_t pdev_id; 9906 uint32_t halphy_cal_adc_status:1, 9907 halphy_cal_bwfilter_status:1, 9908 halphy_cal_pdet_and_pal_status:1, 9909 halphy_cal_rxdco_status:1, 9910 halphy_cal_comb_txiq_rxiq_status:1, 9911 halphy_cal_ibf_status:1, 9912 halphy_cal_pa_droop_status:1, 9913 halphy_cal_dac_status:1, 9914 halphy_cal_ani_status:1, 9915 halphy_cal_noise_floor_status:1; 9916 }; 9917 9918 /** 9919 * enum wmi_host_set_halphy_cal_chan_sel - channel select values for 9920 * set halphy cal 9921 * @WMI_HOST_SET_HALPHY_CAL_HOME_CHANNEL: Home channel 9922 * @WMI_HOST_SET_HALPHY_CAL_SCAN_CHANNEL: Scan channel 9923 * @WMI_HOST_SET_HALPHY_CAL_BOTH_CHANNELS: Both (Home + Scan) channels 9924 */ 9925 9926 enum wmi_host_set_halphy_cal_chan_sel { 9927 WMI_HOST_SET_HALPHY_CAL_HOME_CHANNEL = 0, 9928 WMI_HOST_SET_HALPHY_CAL_SCAN_CHANNEL = 1, 9929 WMI_HOST_SET_HALPHY_CAL_BOTH_CHANNELS = 2, 9930 }; 9931 9932 /** 9933 * struct wmi_host_send_set_halphy_cal_info 9934 * @pdev_id: pdev id 9935 * @value: bmap value 9936 * @chan_sel: channel for calibration - HOME/SCAN/BOTH 9937 */ 9938 struct wmi_host_send_set_halphy_cal_info { 9939 uint8_t pdev_id; 9940 uint32_t value; 9941 enum wmi_host_set_halphy_cal_chan_sel chan_sel; 9942 }; 9943 9944 /** 9945 * struct wmi_install_key_comp_event - params of install key complete event 9946 * @vdev_id: unique id identifying the VDEV, generated by the caller 9947 * @key_ix: key index 9948 * @key_flags: key flags 9949 * @status: Event status 9950 * @peer_macaddr: MAC address used for installing 9951 */ 9952 struct wmi_install_key_comp_event { 9953 uint32_t vdev_id; 9954 uint32_t key_ix; 9955 uint32_t key_flags; 9956 uint32_t status; 9957 uint8_t peer_macaddr[QDF_MAC_ADDR_SIZE]; 9958 }; 9959 9960 /** 9961 * enum wmi_host_set_halphy_cal_status - status values from 9962 * WMI_PDEV_SET_HALPHY_CAL_BMAP_EVENTID 9963 * @WMI_HOST_SET_HALPHY_CAL_STATUS_SUCCESS: set halphy cal success 9964 * @WMI_HOST_SET_HALPHY_CAL_STATUS_FAIL: set halphy cal failure 9965 */ 9966 enum wmi_host_set_halphy_cal_status { 9967 WMI_HOST_SET_HALPHY_CAL_STATUS_SUCCESS = 0, 9968 WMI_HOST_SET_HALPHY_CAL_STATUS_FAIL = 1, 9969 }; 9970 9971 /** 9972 * struct wmi_host_pdev_set_halphy_cal_event 9973 * @pdev_id: pdev id 9974 * @status: PASS/FAIL 9975 */ 9976 struct wmi_host_pdev_set_halphy_cal_event { 9977 uint32_t pdev_id; 9978 enum wmi_host_set_halphy_cal_status status; 9979 }; 9980 9981 #ifdef FEATURE_MEC_OFFLOAD 9982 /** 9983 * struct set_mec_timer_params - params MEC timer params 9984 * @pdev_id: unique id identifying the PDEV, generated by the caller 9985 * @vdev_id: unique id identifying the VDEV, generated by the caller 9986 * @mec_aging_timer_threshold: The Threshold for mec aging timer in ms 9987 * @enable: Enable/Disable the command 9988 */ 9989 struct set_mec_timer_params { 9990 uint32_t pdev_id; 9991 uint32_t vdev_id; 9992 uint32_t mec_aging_timer_threshold; 9993 }; 9994 #endif 9995 9996 #ifdef WLAN_FEATURE_DYNAMIC_MAC_ADDR_UPDATE 9997 /** 9998 * struct set_mac_addr_params - Set MAC address command parameter 9999 * @vdev_id: vdev id 10000 * @mac_addr: VDEV MAC address 10001 * @mld_addr: MLD address of the vdev 10002 */ 10003 struct set_mac_addr_params { 10004 uint8_t vdev_id; 10005 struct qdf_mac_addr mac_addr; 10006 struct qdf_mac_addr mld_addr; 10007 }; 10008 #endif 10009 10010 #ifdef WLAN_FEATURE_SON 10011 /** 10012 * struct wmi_host_inst_rssi_stats_resp - inst rssi stats 10013 * @inst_rssi: instantaneous rssi above the noise floor in dB unit 10014 * @peer_macaddr: peer mac address 10015 * @vdev_id: vdev_id 10016 */ 10017 struct wmi_host_inst_rssi_stats_resp { 10018 uint32_t inst_rssi; 10019 struct qdf_mac_addr peer_macaddr; 10020 uint32_t vdev_id; 10021 }; 10022 #endif 10023 10024 /** 10025 * struct vdev_pn_mgmt_rxfilter_params - Send PN mgmt RxFilter command params 10026 * @vdev_id: vdev id 10027 * @pn_rxfilter: Rx Filter 10028 */ 10029 struct vdev_pn_mgmt_rxfilter_params { 10030 uint8_t vdev_id; 10031 uint32_t pn_rxfilter; 10032 }; 10033 10034 /** 10035 * struct wmi_host_sw_cal_ver - BDF and FTM cal version data 10036 * @bdf_cal_ver: SW cal version in BDF 10037 * @ftm_cal_ver: SW cal version in factory data 10038 * @status: status. 0 for success, non-zero if version is incorrect 10039 */ 10040 struct wmi_host_sw_cal_ver { 10041 uint32_t bdf_cal_ver; 10042 uint32_t ftm_cal_ver; 10043 uint32_t status; 10044 }; 10045 10046 #ifdef HEALTH_MON_SUPPORT 10047 /** 10048 * struct wmi_health_mon_params - Health mon params 10049 * @ring_buf_paddr_low: Ring buffer physical address LOW 10050 * @ring_buf_paddr_high: Ring buffer physical address HIGH 10051 * @initial_upload_period_ms: Health mon periodic time 10052 * @read_index: ring element read_index 10053 */ 10054 struct wmi_health_mon_params { 10055 uint32_t ring_buf_paddr_low; 10056 uint32_t ring_buf_paddr_high; 10057 uint32_t initial_upload_period_ms; 10058 uint32_t read_index; 10059 }; 10060 #endif /* HEALTH_MON_SUPPORT */ 10061 10062 /** 10063 * struct edca_pifs_vparam - edca/pifs param for ll sap 10064 * @vdev_id: vdev id 10065 * @param: pointer to wlan_edca_pifs_param_ie struct 10066 */ 10067 struct edca_pifs_vparam { 10068 uint8_t vdev_id; 10069 struct wlan_edca_pifs_param_ie param; 10070 }; 10071 10072 /** 10073 * struct wmi_host_coex_fix_chan_cap - fw capability to support fixed chan SAP 10074 * @fix_chan_priority: Fix channel priority, set to 1 if firmware supports it 10075 */ 10076 struct wmi_host_coex_fix_chan_cap { 10077 uint32_t fix_chan_priority; 10078 }; 10079 #endif /* _WMI_UNIFIED_PARAM_H_ */ 10080