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