1*5113495bSYour Name /* 2*5113495bSYour Name * Copyright (c) 2016-2021 The Linux Foundation. All rights reserved. 3*5113495bSYour Name * Copyright (c) 2021-2024 Qualcomm Innovation Center, Inc. All rights reserved. 4*5113495bSYour Name * 5*5113495bSYour Name * Permission to use, copy, modify, and/or distribute this software for 6*5113495bSYour Name * any purpose with or without fee is hereby granted, provided that the 7*5113495bSYour Name * above copyright notice and this permission notice appear in all 8*5113495bSYour Name * copies. 9*5113495bSYour Name * 10*5113495bSYour Name * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL 11*5113495bSYour Name * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED 12*5113495bSYour Name * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE 13*5113495bSYour Name * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL 14*5113495bSYour Name * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR 15*5113495bSYour Name * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 16*5113495bSYour Name * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 17*5113495bSYour Name * PERFORMANCE OF THIS SOFTWARE. 18*5113495bSYour Name */ 19*5113495bSYour Name 20*5113495bSYour Name /* 21*5113495bSYour Name * This file contains the API definitions for the Unified Wireless Module 22*5113495bSYour Name * Interface (WMI). 23*5113495bSYour Name */ 24*5113495bSYour Name 25*5113495bSYour Name #ifndef _WMI_UNIFIED_PARAM_H_ 26*5113495bSYour Name #define _WMI_UNIFIED_PARAM_H_ 27*5113495bSYour Name 28*5113495bSYour Name #include <wlan_scan_public_structs.h> 29*5113495bSYour Name #ifdef FEATURE_WLAN_TDLS 30*5113495bSYour Name #include <wlan_tdls_public_structs.h> 31*5113495bSYour Name #endif 32*5113495bSYour Name #ifdef WLAN_CONV_SPECTRAL_ENABLE 33*5113495bSYour Name #include <wlan_spectral_public_structs.h> 34*5113495bSYour Name #endif /* WLAN_CONV_SPECTRAL_ENABLE */ 35*5113495bSYour Name 36*5113495bSYour Name #include "wifi_pos_public_struct.h" 37*5113495bSYour Name #include <wlan_vdev_mgr_tgt_if_tx_defs.h> 38*5113495bSYour Name #include <wlan_vdev_mgr_tgt_if_rx_defs.h> 39*5113495bSYour Name #include <reg_services_public_struct.h> 40*5113495bSYour Name 41*5113495bSYour Name #ifndef ENABLE_HOST_TO_TARGET_CONVERSION 42*5113495bSYour Name #include <wmi_unified.h> 43*5113495bSYour Name #endif 44*5113495bSYour Name #include <wlan_objmgr_vdev_obj.h> 45*5113495bSYour Name 46*5113495bSYour Name #define MAC_MAX_KEY_LENGTH 32 47*5113495bSYour Name #define MAC_PN_LENGTH 8 48*5113495bSYour Name #define MAX_MAC_HEADER_LEN 32 49*5113495bSYour Name #define MIN_MAC_HEADER_LEN 24 50*5113495bSYour Name #define QOS_CONTROL_LEN 2 51*5113495bSYour Name 52*5113495bSYour Name #define WMI_MAC_MAX_SSID_LENGTH 32 53*5113495bSYour Name #ifndef CONFIG_HL_SUPPORT 54*5113495bSYour Name #define mgmt_tx_dl_frm_len 64 55*5113495bSYour Name #else 56*5113495bSYour Name #define mgmt_tx_dl_frm_len 1532 57*5113495bSYour Name #endif 58*5113495bSYour Name #define WMI_SMPS_MASK_LOWER_16BITS 0xFF 59*5113495bSYour Name #define WMI_SMPS_MASK_UPPER_3BITS 0x7 60*5113495bSYour Name #define WMI_SMPS_PARAM_VALUE_S 29 61*5113495bSYour Name #define WMI_UNIT_TEST_MAX_NUM_ARGS 100 62*5113495bSYour Name /* The size of the utc time in bytes. */ 63*5113495bSYour Name #define WMI_SIZE_UTC_TIME (10) 64*5113495bSYour Name /* The size of the utc time error in bytes. */ 65*5113495bSYour Name #define WMI_SIZE_UTC_TIME_ERROR (5) 66*5113495bSYour Name #ifdef WLAN_MCC_MIN_CHANNEL_QUOTA 67*5113495bSYour Name #define WMI_MCC_MIN_CHANNEL_QUOTA WLAN_MCC_MIN_CHANNEL_QUOTA 68*5113495bSYour Name #define WMI_MCC_MAX_CHANNEL_QUOTA (100 - WLAN_MCC_MIN_CHANNEL_QUOTA) 69*5113495bSYour Name #else 70*5113495bSYour Name #define WMI_MCC_MIN_CHANNEL_QUOTA 20 71*5113495bSYour Name #define WMI_MCC_MAX_CHANNEL_QUOTA 80 72*5113495bSYour Name #endif 73*5113495bSYour Name #define WMI_MCC_MIN_NON_ZERO_CHANNEL_LATENCY 30 74*5113495bSYour Name 75*5113495bSYour Name #ifdef WMI_AP_SUPPORT 76*5113495bSYour Name #define WMI_BEACON_TX_BUFFER_SIZE (2500) 77*5113495bSYour Name #else 78*5113495bSYour Name #define WMI_BEACON_TX_BUFFER_SIZE (512) 79*5113495bSYour Name #endif 80*5113495bSYour Name 81*5113495bSYour Name #define WMI_WIFI_SCANNING_MAC_OUI_LENGTH 3 82*5113495bSYour Name #define WMI_EXTSCAN_MAX_SIGNIFICANT_CHANGE_APS 64 83*5113495bSYour Name #define WMI_RSSI_THOLD_DEFAULT -300 84*5113495bSYour Name #define WMI_NLO_FREQ_THRESH 1000 85*5113495bSYour Name #define WMI_SEC_TO_MSEC(sec) (sec * 1000) 86*5113495bSYour Name #define WMI_MSEC_TO_USEC(msec) (msec * 1000) 87*5113495bSYour Name #define WMI_ETH_LEN 64 88*5113495bSYour Name #define WMI_QOS_NUM_TSPEC_MAX 2 89*5113495bSYour Name #define WMI_IPV4_ADDR_LEN 4 90*5113495bSYour Name #define WMI_KEEP_ALIVE_NULL_PKT 1 91*5113495bSYour Name #define WMI_KEEP_ALIVE_UNSOLICIT_ARP_RSP 2 92*5113495bSYour Name #define WMI_KEEP_ALIVE_MGMT_FRAME 5 93*5113495bSYour Name #define WMI_MAC_MAX_KEY_LENGTH 32 94*5113495bSYour Name #define WMI_KRK_KEY_LEN 16 95*5113495bSYour Name #ifdef WLAN_FEATURE_ROAM_OFFLOAD 96*5113495bSYour Name #define WMI_BTK_KEY_LEN 32 97*5113495bSYour Name #define WMI_ROAM_R0KH_ID_MAX_LEN 48 98*5113495bSYour Name #endif 99*5113495bSYour Name #define WMI_NOISE_FLOOR_DBM_DEFAULT (-96) 100*5113495bSYour Name #define WMI_EXTSCAN_MAX_HOTLIST_SSIDS 8 101*5113495bSYour Name #define WMI_ROAM_MAX_CHANNELS 80 102*5113495bSYour Name #ifdef FEATURE_WLAN_EXTSCAN 103*5113495bSYour Name #define WMI_MAX_EXTSCAN_MSG_SIZE 1536 104*5113495bSYour Name #define WMI_EXTSCAN_REST_TIME 100 105*5113495bSYour Name #define WMI_EXTSCAN_MAX_SCAN_TIME 50000 106*5113495bSYour Name #define WMI_EXTSCAN_BURST_DURATION 150 107*5113495bSYour Name #endif 108*5113495bSYour Name #define WMI_SCAN_NPROBES_DEFAULT (2) 109*5113495bSYour Name #define WMI_SEC_TO_MSEC(sec) (sec * 1000) /* sec to msec */ 110*5113495bSYour Name #define WMI_MSEC_TO_USEC(msec) (msec * 1000) /* msec to usec */ 111*5113495bSYour Name #define WMI_NLO_FREQ_THRESH 1000 /* in MHz */ 112*5113495bSYour Name 113*5113495bSYour Name #define WMI_SVC_MSG_MAX_SIZE 1536 114*5113495bSYour Name #define MAX_UTF_EVENT_LENGTH 2048 115*5113495bSYour Name #define MAX_WMI_UTF_LEN 252 116*5113495bSYour Name #define MAX_WMI_QVIT_LEN 252 117*5113495bSYour Name #define THERMAL_LEVELS 4 118*5113495bSYour Name #define WMI_HOST_BCN_FLT_MAX_SUPPORTED_IES 256 119*5113495bSYour Name #define WMI_HOST_BCN_FLT_MAX_ELEMS_IE_LIST \ 120*5113495bSYour Name (WMI_HOST_BCN_FLT_MAX_SUPPORTED_IES/32) 121*5113495bSYour Name #define LTEU_MAX_BINS 10 122*5113495bSYour Name #define ATF_ACTIVED_MAX_CLIENTS 50 123*5113495bSYour Name #define ATF_ACTIVED_MAX_ATFGROUPS 16 124*5113495bSYour Name #define CTL_5G_SIZE 1536 125*5113495bSYour Name #define CTL_2G_SIZE 684 126*5113495bSYour Name #define MAX_CTL_SIZE (CTL_5G_SIZE > CTL_2G_SIZE ? CTL_5G_SIZE : CTL_2G_SIZE) 127*5113495bSYour Name #define MAX_PWTAB_SIZE 3392 128*5113495bSYour Name #define IEEE80211_MICBUF_SIZE (8+8) 129*5113495bSYour Name #define IEEE80211_TID_SIZE 17 130*5113495bSYour Name #define WME_NUM_AC 4 131*5113495bSYour Name #define SMART_ANT_MODE_SERIAL 0 132*5113495bSYour Name #define SMART_ANT_MODE_PARALLEL 1 133*5113495bSYour Name #define IEEE80211_WEP_NKID 4 /* number of key ids */ 134*5113495bSYour Name #define WPI_IV_LEN 16 135*5113495bSYour Name #define WMI_SCAN_MAX_NUM_BSSID 10 136*5113495bSYour Name #define MAX_CHANS 1023 137*5113495bSYour Name #define TARGET_OEM_CONFIGURE_LCI 0x0A 138*5113495bSYour Name #define RTT_LCI_ALTITUDE_MASK 0x3FFFFFFF 139*5113495bSYour Name #define TARGET_OEM_CONFIGURE_LCR 0x09 140*5113495bSYour Name #define RTT_TIMEOUT_MS 180 141*5113495bSYour Name #define MAX_SUPPORTED_RATES 128 142*5113495bSYour Name #define WMI_HOST_MAX_BUFFER_SIZE 1712 143*5113495bSYour Name #define WMI_HAL_MAX_SANTENNA 4 144*5113495bSYour Name #define WMI_HOST_PDEV_VI_PRIORITY_BIT (1<<2) 145*5113495bSYour Name #define WMI_HOST_PDEV_BEACON_PRIORITY_BIT (1<<4) 146*5113495bSYour Name #define WMI_HOST_PDEV_MGMT_PRIORITY_BIT (1<<5) 147*5113495bSYour Name #define WMI_MAX_CMDS 1024 148*5113495bSYour Name 149*5113495bSYour Name #define FIPS_ALIGN 4 150*5113495bSYour Name #define FIPS_ALIGNTO(__addr, __to) \ 151*5113495bSYour Name ((((unsigned long int)(__addr)) + (__to) - 1) & ~((__to) - 1)) 152*5113495bSYour Name #define FIPS_IS_ALIGNED(__addr, __to) \ 153*5113495bSYour Name (!(((unsigned long int)(__addr)) & ((__to)-1))) 154*5113495bSYour Name 155*5113495bSYour Name #define WMI_HOST_MAX_SERIAL_ANTENNA 2 156*5113495bSYour Name #define WMI_SMART_ANT_MAX_RATE_SERIES 2 157*5113495bSYour Name 158*5113495bSYour Name #define WMI_HOST_F_MS(_v, _f) \ 159*5113495bSYour Name (((_v) & (_f)) >> (_f##_S)) 160*5113495bSYour Name 161*5113495bSYour Name #define WMI_HOST_F_RMW(_var, _v, _f) \ 162*5113495bSYour Name do { \ 163*5113495bSYour Name (_var) &= ~(_f); \ 164*5113495bSYour Name (_var) |= (((_v) << (_f##_S)) & (_f)); \ 165*5113495bSYour Name } while (0) 166*5113495bSYour Name 167*5113495bSYour Name /* vdev capabilities bit mask */ 168*5113495bSYour Name #define WMI_HOST_VDEV_BEACON_SUPPORT 0x1 169*5113495bSYour Name #define WMI_HOST_VDEV_WDS_LRN_ENABLED 0x2 170*5113495bSYour Name #define WMI_HOST_VDEV_VOW_ENABLED 0x4 171*5113495bSYour Name #define WMI_HOST_VDEV_IS_BEACON_SUPPORTED(param) \ 172*5113495bSYour Name ((param) & WMI_HOST_VDEV_BEACON_SUPPORT) 173*5113495bSYour Name #define WMI_HOST_VDEV_IS_WDS_LRN_ENABLED(param) \ 174*5113495bSYour Name ((param) & WMI_HOST_VDEV_WDS_LRN_ENABLED) 175*5113495bSYour Name #define WMI_HOST_VDEV_IS_VOW_ENABLED(param) \ 176*5113495bSYour Name ((param) & WMI_HOST_VDEV_VOW_ENABLED) 177*5113495bSYour Name 178*5113495bSYour Name /* TXBF capabilities masks */ 179*5113495bSYour Name #define WMI_HOST_TXBF_CONF_SU_TX_BFEE_S 0 180*5113495bSYour Name #define WMI_HOST_TXBF_CONF_SU_TX_BFEE_M 0x1 181*5113495bSYour Name #define WMI_HOST_TXBF_CONF_SU_TX_BFEE \ 182*5113495bSYour Name (WMI_HOST_TXBF_CONF_SU_TX_BFEE_M << WMI_HOST_TXBF_CONF_SU_TX_BFEE_S) 183*5113495bSYour Name #define WMI_HOST_TXBF_CONF_SU_TX_BFEE_GET(x) \ 184*5113495bSYour Name WMI_HOST_F_MS(x, WMI_HOST_TXBF_CONF_SU_TX_BFEE) 185*5113495bSYour Name #define WMI_HOST_TXBF_CONF_SU_TX_BFEE_SET(x, z) \ 186*5113495bSYour Name WMI_HOST_F_RMW(x, z, WMI_HOST_TXBF_CONF_SU_TX_BFEE) 187*5113495bSYour Name 188*5113495bSYour Name #define WMI_HOST_TXBF_CONF_MU_TX_BFEE_S 1 189*5113495bSYour Name #define WMI_HOST_TXBF_CONF_MU_TX_BFEE_M 0x1 190*5113495bSYour Name #define WMI_HOST_TXBF_CONF_MU_TX_BFEE \ 191*5113495bSYour Name (WMI_HOST_TXBF_CONF_MU_TX_BFEE_M << WMI_HOST_TXBF_CONF_MU_TX_BFEE_S) 192*5113495bSYour Name #define WMI_HOST_TXBF_CONF_MU_TX_BFEE_GET(x) \ 193*5113495bSYour Name WMI_HOST_F_MS(x, WMI_HOST_TXBF_CONF_MU_TX_BFEE) 194*5113495bSYour Name #define WMI_HOST_TXBF_CONF_MU_TX_BFEE_SET(x, z) \ 195*5113495bSYour Name WMI_HOST_F_RMW(x, z, WMI_HOST_TXBF_CONF_MU_TX_BFEE) 196*5113495bSYour Name 197*5113495bSYour Name #define WMI_HOST_TXBF_CONF_SU_TX_BFER_S 2 198*5113495bSYour Name #define WMI_HOST_TXBF_CONF_SU_TX_BFER_M 0x1 199*5113495bSYour Name #define WMI_HOST_TXBF_CONF_SU_TX_BFER \ 200*5113495bSYour Name (WMI_HOST_TXBF_CONF_SU_TX_BFER_M << WMI_HOST_TXBF_CONF_SU_TX_BFER_S) 201*5113495bSYour Name #define WMI_HOST_TXBF_CONF_SU_TX_BFER_GET(x) \ 202*5113495bSYour Name WMI_HOST_F_MS(x, WMI_HOST_TXBF_CONF_SU_TX_BFER) 203*5113495bSYour Name #define WMI_HOST_TXBF_CONF_SU_TX_BFER_SET(x, z) \ 204*5113495bSYour Name WMI_HOST_F_RMW(x, z, WMI_HOST_TXBF_CONF_SU_TX_BFER) 205*5113495bSYour Name 206*5113495bSYour Name #define WMI_HOST_TXBF_CONF_MU_TX_BFER_S 3 207*5113495bSYour Name #define WMI_HOST_TXBF_CONF_MU_TX_BFER_M 0x1 208*5113495bSYour Name #define WMI_HOST_TXBF_CONF_MU_TX_BFER \ 209*5113495bSYour Name (WMI_HOST_TXBF_CONF_MU_TX_BFER_M << WMI_HOST_TXBF_CONF_MU_TX_BFER_S) 210*5113495bSYour Name #define WMI_HOST_TXBF_CONF_MU_TX_BFER_GET(x) \ 211*5113495bSYour Name WMI_HOST_F_MS(x, WMI_HOST_TXBF_CONF_MU_TX_BFER) 212*5113495bSYour Name #define WMI_HOST_TXBF_CONF_MU_TX_BFER_SET(x, z) \ 213*5113495bSYour Name WMI_HOST_F_RMW(x, z, WMI_HOST_TXBF_CONF_MU_TX_BFER) 214*5113495bSYour Name 215*5113495bSYour Name #define WMI_HOST_TXBF_CONF_STS_CAP_S 4 216*5113495bSYour Name #define WMI_HOST_TXBF_CONF_STS_CAP_M 0x7 217*5113495bSYour Name #define WMI_HOST_TXBF_CONF_STS_CAP \ 218*5113495bSYour Name (WMI_HOST_TXBF_CONF_STS_CAP_M << WMI_HOST_TXBF_CONF_STS_CAP_S) 219*5113495bSYour Name #define WMI_HOST_TXBF_CONF_STS_CAP_GET(x) \ 220*5113495bSYour Name WMI_HOST_F_MS(x, WMI_HOST_TXBF_CONF_STS_CAP); 221*5113495bSYour Name #define WMI_HOST_TXBF_CONF_STS_CAP_SET(x, z) \ 222*5113495bSYour Name WMI_HOST_F_RMW(x, z, WMI_HOST_TXBF_CONF_STS_CAP) 223*5113495bSYour Name 224*5113495bSYour Name #define WMI_HOST_TXBF_CONF_IMPLICIT_BF_S 7 225*5113495bSYour Name #define WMI_HOST_TXBF_CONF_IMPLICIT_BF_M 0x1 226*5113495bSYour Name #define WMI_HOST_TXBF_CONF_IMPLICIT_BF \ 227*5113495bSYour Name (WMI_HOST_TXBF_CONF_IMPLICIT_BF_M << WMI_HOST_TXBF_CONF_IMPLICIT_BF_S) 228*5113495bSYour Name #define WMI_HOST_TXBF_CONF_IMPLICIT_BF_GET(x) \ 229*5113495bSYour Name WMI_HOST_F_MS(x, WMI_HOST_TXBF_CONF_IMPLICIT_BF) 230*5113495bSYour Name #define WMI_HOST_TXBF_CONF_IMPLICIT_BF_SET(x, z) \ 231*5113495bSYour Name WMI_HOST_F_RMW(x, z, WMI_HOST_TXBF_CONF_IMPLICIT_BF) 232*5113495bSYour Name 233*5113495bSYour Name #define WMI_HOST_TXBF_CONF_BF_SND_DIM_S 8 234*5113495bSYour Name #define WMI_HOST_TXBF_CONF_BF_SND_DIM_M 0x7 235*5113495bSYour Name #define WMI_HOST_TXBF_CONF_BF_SND_DIM \ 236*5113495bSYour Name (WMI_HOST_TXBF_CONF_BF_SND_DIM_M << WMI_HOST_TXBF_CONF_BF_SND_DIM_S) 237*5113495bSYour Name #define WMI_HOST_TXBF_CONF_BF_SND_DIM_GET(x) \ 238*5113495bSYour Name WMI_HOST_F_MS(x, WMI_HOST_TXBF_CONF_BF_SND_DIM) 239*5113495bSYour Name #define WMI_HOST_TXBF_CONF_BF_SND_DIM_SET(x, z) \ 240*5113495bSYour Name WMI_HOST_F_RMW(x, z, WMI_HOST_TXBF_CONF_BF_SND_DIM) 241*5113495bSYour Name 242*5113495bSYour Name /* The following WMI_HOST_HEOPS_BSSCOLOR_XXX macros correspond to the 243*5113495bSYour Name * WMI_HEOPS_COLOR_XXX macros in the FW wmi_unified.h */ 244*5113495bSYour Name #ifdef SUPPORT_11AX_D3 245*5113495bSYour Name #define WMI_HOST_HEOPS_BSSCOLOR_S 24 246*5113495bSYour Name #else 247*5113495bSYour Name #define WMI_HOST_HEOPS_BSSCOLOR_S 0 248*5113495bSYour Name #endif 249*5113495bSYour Name 250*5113495bSYour Name #define WMI_HOST_HEOPS_BSSCOLOR_M 0x3f 251*5113495bSYour Name #define WMI_HOST_HEOPS_BSSCOLOR \ 252*5113495bSYour Name (WMI_HOST_HEOPS_BSSCOLOR_M << WMI_HOST_HEOPS_BSSCOLOR_S) 253*5113495bSYour Name #define WMI_HOST_HEOPS_BSSCOLOR_GET(x) \ 254*5113495bSYour Name WMI_HOST_F_MS(x, WMI_HOST_HEOPS_BSSCOLOR) 255*5113495bSYour Name #define WMI_HOST_HEOPS_BSSCOLOR_SET(x, z) \ 256*5113495bSYour Name WMI_HOST_F_RMW(x, z, WMI_HOST_HEOPS_BSSCOLOR) 257*5113495bSYour Name 258*5113495bSYour Name /* The following WMI_HOST_HEOPS_BSSCOLOR_DISABLE_XXX macros correspond to the 259*5113495bSYour Name * WMI_HEOPS_BSSCOLORDISABLE_XXX macros in the FW wmi_unified.h */ 260*5113495bSYour Name #ifdef SUPPORT_11AX_D3 261*5113495bSYour Name #define WMI_HOST_HEOPS_BSSCOLOR_DISABLE_S 31 262*5113495bSYour Name #else 263*5113495bSYour Name #define WMI_HOST_HEOPS_BSSCOLOR_DISABLE_S 30 264*5113495bSYour Name #endif 265*5113495bSYour Name 266*5113495bSYour Name #define WMI_HOST_HEOPS_BSSCOLOR_DISABLE_M 0x1 267*5113495bSYour Name #define WMI_HOST_HEOPS_BSSCOLOR_DISABLE \ 268*5113495bSYour Name (WMI_HOST_HEOPS_BSSCOLOR_DISABLE_M << WMI_HOST_HEOPS_BSSCOLOR_DISABLE_S) 269*5113495bSYour Name #define WMI_HOST_HEOPS_BSSCOLOR_DISABLE_GET(x) \ 270*5113495bSYour Name WMI_HOST_F_MS(x, WMI_HOST_HEOPS_BSSCOLOR_DISABLE) 271*5113495bSYour Name #define WMI_HOST_HEOPS_BSSCOLOR_DISABLE_SET(x, z) \ 272*5113495bSYour Name WMI_HOST_F_RMW(x, z, WMI_HOST_HEOPS_BSSCOLOR_DISABLE) 273*5113495bSYour Name 274*5113495bSYour Name /* HE BF capabilities mask */ 275*5113495bSYour Name #define WMI_HOST_HE_BF_CONF_SU_BFEE_S 0 276*5113495bSYour Name #define WMI_HOST_HE_BF_CONF_SU_BFEE_M 0x1 277*5113495bSYour Name #define WMI_HOST_HE_BF_CONF_SU_BFEE \ 278*5113495bSYour Name (WMI_HOST_HE_BF_CONF_SU_BFEE_M << WMI_HOST_HE_BF_CONF_SU_BFEE_S) 279*5113495bSYour Name #define WMI_HOST_HE_BF_CONF_SU_BFEE_GET(x) \ 280*5113495bSYour Name WMI_HOST_F_MS(x, WMI_HOST_HE_BF_CONF_SU_BFEE) 281*5113495bSYour Name #define WMI_HOST_HE_BF_CONF_SU_BFEE_SET(x, z) \ 282*5113495bSYour Name WMI_HOST_F_RMW(x, z, WMI_HOST_HE_BF_CONF_SU_BFEE) 283*5113495bSYour Name 284*5113495bSYour Name #define WMI_HOST_HE_BF_CONF_SU_BFER_S 1 285*5113495bSYour Name #define WMI_HOST_HE_BF_CONF_SU_BFER_M 0x1 286*5113495bSYour Name #define WMI_HOST_HE_BF_CONF_SU_BFER \ 287*5113495bSYour Name (WMI_HOST_HE_BF_CONF_SU_BFER_M << WMI_HOST_HE_BF_CONF_SU_BFER_S) 288*5113495bSYour Name #define WMI_HOST_HE_BF_CONF_SU_BFER_GET(x) \ 289*5113495bSYour Name WMI_HOST_F_MS(x, WMI_HOST_HE_BF_CONF_SU_BFER) 290*5113495bSYour Name #define WMI_HOST_HE_BF_CONF_SU_BFER_SET(x, z) \ 291*5113495bSYour Name WMI_HOST_F_RMW(x, z, WMI_HOST_HE_BF_CONF_SU_BFER) 292*5113495bSYour Name 293*5113495bSYour Name #define WMI_HOST_HE_BF_CONF_MU_BFEE_S 2 294*5113495bSYour Name #define WMI_HOST_HE_BF_CONF_MU_BFEE_M 0x1 295*5113495bSYour Name #define WMI_HOST_HE_BF_CONF_MU_BFEE \ 296*5113495bSYour Name (WMI_HOST_HE_BF_CONF_MU_BFEE_M << WMI_HOST_HE_BF_CONF_MU_BFEE_S) 297*5113495bSYour Name #define WMI_HOST_HE_BF_CONF_MU_BFEE_GET(x) \ 298*5113495bSYour Name WMI_HOST_F_MS(x, WMI_HOST_HE_BF_CONF_MU_BFEE) 299*5113495bSYour Name #define WMI_HOST_HE_BF_CONF_MU_BFEE_SET(x, z) \ 300*5113495bSYour Name WMI_HOST_F_RMW(x, z, WMI_HOST_HE_BF_CONF_MU_BFEE) 301*5113495bSYour Name 302*5113495bSYour Name #define WMI_HOST_HE_BF_CONF_MU_BFER_S 3 303*5113495bSYour Name #define WMI_HOST_HE_BF_CONF_MU_BFER_M 0x1 304*5113495bSYour Name #define WMI_HOST_HE_BF_CONF_MU_BFER \ 305*5113495bSYour Name (WMI_HOST_HE_BF_CONF_MU_BFER_M << WMI_HOST_HE_BF_CONF_MU_BFER_S) 306*5113495bSYour Name #define WMI_HOST_HE_BF_CONF_MU_BFER_GET(x) \ 307*5113495bSYour Name WMI_HOST_F_MS(x, WMI_HOST_HE_BF_CONF_MU_BFER) 308*5113495bSYour Name #define WMI_HOST_HE_BF_CONF_MU_BFER_SET(x, z) \ 309*5113495bSYour Name WMI_HOST_F_RMW(x, z, WMI_HOST_HE_BF_CONF_MU_BFER) 310*5113495bSYour Name 311*5113495bSYour Name #define WMI_HOST_HE_BF_CONF_DL_OFDMA_S 4 312*5113495bSYour Name #define WMI_HOST_HE_BF_CONF_DL_OFDMA_M 0x1 313*5113495bSYour Name #define WMI_HOST_HE_BF_CONF_DL_OFDMA \ 314*5113495bSYour Name (WMI_HOST_HE_BF_CONF_DL_OFDMA_M << WMI_HOST_HE_BF_CONF_DL_OFDMA_S) 315*5113495bSYour Name #define WMI_HOST_HE_BF_CONF_DL_OFDMA_GET(x) \ 316*5113495bSYour Name WMI_HOST_F_MS(x, WMI_HOST_HE_BF_CONF_DL_OFDMA) 317*5113495bSYour Name #define WMI_HOST_HE_BF_CONF_DL_OFDMA_SET(x, z) \ 318*5113495bSYour Name WMI_HOST_F_RMW(x, z, WMI_HOST_HE_BF_CONF_DL_OFDMA) 319*5113495bSYour Name 320*5113495bSYour Name #define WMI_HOST_HE_BF_CONF_UL_OFDMA_S 5 321*5113495bSYour Name #define WMI_HOST_HE_BF_CONF_UL_OFDMA_M 0x1 322*5113495bSYour Name #define WMI_HOST_HE_BF_CONF_UL_OFDMA \ 323*5113495bSYour Name (WMI_HOST_HE_BF_CONF_UL_OFDMA_M << WMI_HOST_HE_BF_CONF_UL_OFDMA_S) 324*5113495bSYour Name #define WMI_HOST_HE_BF_CONF_UL_OFDMA_GET(x) \ 325*5113495bSYour Name WMI_HOST_F_MS(x, WMI_HOST_HE_BF_CONF_UL_OFDMA) 326*5113495bSYour Name #define WMI_HOST_HE_BF_CONF_UL_OFDMA_SET(x, z) \ 327*5113495bSYour Name WMI_HOST_F_RMW(x, z, WMI_HOST_HE_BF_CONF_UL_OFDMA) 328*5113495bSYour Name 329*5113495bSYour Name #define WMI_HOST_HE_BF_CONF_UL_MUMIMO_S 6 330*5113495bSYour Name #define WMI_HOST_HE_BF_CONF_UL_MUMIMO_M 0x1 331*5113495bSYour Name #define WMI_HOST_HE_BF_CONF_UL_MUMIMO \ 332*5113495bSYour Name (WMI_HOST_HE_BF_CONF_UL_MUMIMO_M << WMI_HOST_HE_BF_CONF_UL_MUMIMO_S) 333*5113495bSYour Name #define WMI_HOST_HE_BF_CONF_UL_MUMIMO_GET(x) \ 334*5113495bSYour Name WMI_HOST_F_MS(x, WMI_HOST_HE_BF_CONF_UL_MUMIMO) 335*5113495bSYour Name #define WMI_HOST_HE_BF_CONF_UL_MUMIMO_SET(x, z) \ 336*5113495bSYour Name WMI_HOST_F_RMW(x, z, WMI_HOST_HE_BF_CONF_UL_MUMIMO) 337*5113495bSYour Name 338*5113495bSYour Name /* HE or VHT Sounding */ 339*5113495bSYour Name #define WMI_HOST_HE_VHT_SOUNDING_MODE_S 0 340*5113495bSYour Name #define WMI_HOST_HE_VHT_SOUNDING_MODE_M 0x1 341*5113495bSYour Name #define WMI_HOST_HE_VHT_SOUNDING_MODE \ 342*5113495bSYour Name (WMI_HOST_HE_VHT_SOUNDING_MODE_M << WMI_HOST_HE_VHT_SOUNDING_MODE_S) 343*5113495bSYour Name #define WMI_HOST_HE_VHT_SOUNDING_MODE_GET(x) \ 344*5113495bSYour Name WMI_HOST_F_MS(x, WMI_HOST_HE_VHT_SOUNDING_MODE) 345*5113495bSYour Name #define WMI_HOST_HE_VHT_SOUNDING_MODE_SET(x, z) \ 346*5113495bSYour Name WMI_HOST_F_RMW(x, z, WMI_HOST_HE_VHT_SOUNDING_MODE) 347*5113495bSYour Name 348*5113495bSYour Name /* SU or MU Sounding */ 349*5113495bSYour Name #define WMI_HOST_SU_MU_SOUNDING_MODE_S 2 350*5113495bSYour Name #define WMI_HOST_SU_MU_SOUNDING_MODE_M 0x1 351*5113495bSYour Name #define WMI_HOST_SU_MU_SOUNDING_MODE \ 352*5113495bSYour Name (WMI_HOST_SU_MU_SOUNDING_MODE_M << \ 353*5113495bSYour Name WMI_HOST_SU_MU_SOUNDING_MODE_S) 354*5113495bSYour Name #define WMI_HOST_SU_MU_SOUNDING_MODE_GET(x) \ 355*5113495bSYour Name WMI_HOST_F_MS(x, WMI_HOST_SU_MU_SOUNDING_MODE) 356*5113495bSYour Name #define WMI_HOST_SU_MU_SOUNDING_MODE_SET(x, z) \ 357*5113495bSYour Name WMI_HOST_F_RMW(x, z, WMI_HOST_SU_MU_SOUNDING_MODE) 358*5113495bSYour Name 359*5113495bSYour Name /* Trig or Non-Trig Sounding */ 360*5113495bSYour Name #define WMI_HOST_TRIG_NONTRIG_SOUNDING_MODE_S 3 361*5113495bSYour Name #define WMI_HOST_TRIG_NONTRIG_SOUNDING_MODE_M 0x1 362*5113495bSYour Name #define WMI_HOST_TRIG_NONTRIG_SOUNDING_MODE \ 363*5113495bSYour Name (WMI_HOST_TRIG_NONTRIG_SOUNDING_MODE_M << \ 364*5113495bSYour Name WMI_HOST_TRIG_NONTRIG_SOUNDING_MODE_S) 365*5113495bSYour Name #define WMI_HOST_TRIG_NONTRIG_SOUNDING_MODE_GET(x) \ 366*5113495bSYour Name WMI_HOST_F_MS(x, WMI_HOST_TRIG_NONTRIG_SOUNDING_MODE) 367*5113495bSYour Name #define WMI_HOST_HE_VHT_SU_MU_SOUNDING_MODE_SET(x, z) \ 368*5113495bSYour Name WMI_HOST_F_RMW(x, z, WMI_HOST_TRIG_NONTRIG_SOUNDING_MODE) 369*5113495bSYour Name 370*5113495bSYour Name #ifdef WLAN_FEATURE_11BE 371*5113495bSYour Name /* EHT BF capabilities mask */ 372*5113495bSYour Name #define WMI_HOST_EHT_CONF_SU_BFEE_S 0 373*5113495bSYour Name #define WMI_HOST_EHT_CONF_SU_BFEE_M 0x1 374*5113495bSYour Name #define WMI_HOST_EHT_CONF_SU_BFEE \ 375*5113495bSYour Name (WMI_HOST_EHT_CONF_SU_BFEE_M << WMI_HOST_EHT_CONF_SU_BFEE_S) 376*5113495bSYour Name #define WMI_HOST_EHT_CONF_SU_BFEE_GET(x) \ 377*5113495bSYour Name WMI_HOST_F_MS(x, WMI_HOST_EHT_CONF_SU_BFEE) 378*5113495bSYour Name #define WMI_HOST_EHT_CONF_SU_BFEE_SET(x, z) \ 379*5113495bSYour Name WMI_HOST_F_RMW(x, z, WMI_HOST_EHT_CONF_SU_BFEE) 380*5113495bSYour Name 381*5113495bSYour Name #define WMI_HOST_EHT_CONF_SU_BFER_S 1 382*5113495bSYour Name #define WMI_HOST_EHT_CONF_SU_BFER_M 0x1 383*5113495bSYour Name #define WMI_HOST_EHT_CONF_SU_BFER \ 384*5113495bSYour Name (WMI_HOST_EHT_CONF_SU_BFER_M << WMI_HOST_EHT_CONF_SU_BFER_S) 385*5113495bSYour Name #define WMI_HOST_EHT_CONF_SU_BFER_GET(x) \ 386*5113495bSYour Name WMI_HOST_F_MS(x, WMI_HOST_EHT_CONF_SU_BFER) 387*5113495bSYour Name #define WMI_HOST_EHT_CONF_SU_BFER_SET(x, z) \ 388*5113495bSYour Name WMI_HOST_F_RMW(x, z, WMI_HOST_EHT_CONF_SU_BFER) 389*5113495bSYour Name 390*5113495bSYour Name #define WMI_HOST_EHT_CONF_MU_BFEE_S 2 391*5113495bSYour Name #define WMI_HOST_EHT_CONF_MU_BFEE_M 0x1 392*5113495bSYour Name #define WMI_HOST_EHT_CONF_MU_BFEE \ 393*5113495bSYour Name (WMI_HOST_EHT_CONF_MU_BFEE_M << WMI_HOST_EHT_CONF_MU_BFEE_S) 394*5113495bSYour Name #define WMI_HOST_EHT_CONF_MU_BFEE_GET(x) \ 395*5113495bSYour Name WMI_HOST_F_MS(x, WMI_HOST_EHT_CONF_MU_BFEE) 396*5113495bSYour Name #define WMI_HOST_EHT_CONF_MU_BFEE_SET(x, z) \ 397*5113495bSYour Name WMI_HOST_F_RMW(x, z, WMI_HOST_EHT_CONF_MU_BFEE) 398*5113495bSYour Name 399*5113495bSYour Name #define WMI_HOST_EHT_CONF_MU_BFER_S 3 400*5113495bSYour Name #define WMI_HOST_EHT_CONF_MU_BFER_M 0x1 401*5113495bSYour Name #define WMI_HOST_EHT_CONF_MU_BFER \ 402*5113495bSYour Name (WMI_HOST_EHT_CONF_MU_BFER_M << WMI_HOST_EHT_CONF_MU_BFER_S) 403*5113495bSYour Name #define WMI_HOST_EHT_CONF_MU_BFER_GET(x) \ 404*5113495bSYour Name WMI_HOST_F_MS(x, WMI_HOST_EHT_CONF_MU_BFER) 405*5113495bSYour Name #define WMI_HOST_EHT_CONF_MU_BFER_SET(x, z) \ 406*5113495bSYour Name WMI_HOST_F_RMW(x, z, WMI_HOST_EHT_CONF_MU_BFER) 407*5113495bSYour Name 408*5113495bSYour Name #define WMI_HOST_EHT_CONF_DL_OFDMA_S 4 409*5113495bSYour Name #define WMI_HOST_EHT_CONF_DL_OFDMA_M 0x1 410*5113495bSYour Name #define WMI_HOST_EHT_CONF_DL_OFDMA \ 411*5113495bSYour Name (WMI_HOST_EHT_CONF_DL_OFDMA_M << WMI_HOST_EHT_CONF_DL_OFDMA_S) 412*5113495bSYour Name #define WMI_HOST_EHT_CONF_DL_OFDMA_GET(x) \ 413*5113495bSYour Name WMI_HOST_F_MS(x, WMI_HOST_EHT_CONF_DL_OFDMA) 414*5113495bSYour Name #define WMI_HOST_EHT_CONF_DL_OFDMA_SET(x, z) \ 415*5113495bSYour Name WMI_HOST_F_RMW(x, z, WMI_HOST_EHT_CONF_DL_OFDMA) 416*5113495bSYour Name 417*5113495bSYour Name #define WMI_HOST_EHT_CONF_UL_OFDMA_S 5 418*5113495bSYour Name #define WMI_HOST_EHT_CONF_UL_OFDMA_M 0x1 419*5113495bSYour Name #define WMI_HOST_EHT_CONF_UL_OFDMA \ 420*5113495bSYour Name (WMI_HOST_EHT_CONF_UL_OFDMA_M << WMI_HOST_EHT_CONF_UL_OFDMA_S) 421*5113495bSYour Name #define WMI_HOST_EHT_CONF_UL_OFDMA_GET(x) \ 422*5113495bSYour Name WMI_HOST_F_MS(x, WMI_HOST_EHT_CONF_UL_OFDMA) 423*5113495bSYour Name #define WMI_HOST_EHT_CONF_UL_OFDMA_SET(x, z) \ 424*5113495bSYour Name WMI_HOST_F_RMW(x, z, WMI_HOST_EHT_CONF_UL_OFDMA) 425*5113495bSYour Name 426*5113495bSYour Name #define WMI_HOST_EHT_CONF_UL_MUMIMO_S 6 427*5113495bSYour Name #define WMI_HOST_EHT_CONF_UL_MUMIMO_M 0x1 428*5113495bSYour Name #define WMI_HOST_EHT_CONF_UL_MUMIMO \ 429*5113495bSYour Name (WMI_HOST_EHT_CONF_UL_MUMIMO_M << WMI_HOST_EHT_CONF_UL_MUMIMO_S) 430*5113495bSYour Name #define WMI_HOST_EHT_CONF_UL_MUMIMO_GET(x) \ 431*5113495bSYour Name WMI_HOST_F_MS(x, WMI_HOST_EHT_CONF_UL_MUMIMO) 432*5113495bSYour Name #define WMI_HOST_EHT_CONF_UL_MUMIMO_SET(x, z) \ 433*5113495bSYour Name WMI_HOST_F_RMW(x, z, WMI_HOST_EHT_CONF_UL_MUMIMO) 434*5113495bSYour Name 435*5113495bSYour Name #define WMI_HOST_EHT_CONF_DL_OFDMA_TXBF_S 7 436*5113495bSYour Name #define WMI_HOST_EHT_CONF_DL_OFDMA_TXBF_M 0x1 437*5113495bSYour Name #define WMI_HOST_EHT_CONF_DL_OFDMA_TXBF \ 438*5113495bSYour Name (WMI_HOST_EHT_CONF_DL_OFDMA_TXBF_M << \ 439*5113495bSYour Name WMI_HOST_EHT_CONF_DL_OFDMA_TXBF_S) 440*5113495bSYour Name #define WMI_HOST_EHT_CONF_DL_OFDMA_TXBF_GET(x) \ 441*5113495bSYour Name WMI_HOST_F_MS(x, WMI_HOST_EHT_CONF_DL_OFDMA_TXBF) 442*5113495bSYour Name #define WMI_HOST_EHT_CONF_DL_OFDMA_TXBF_SET(x, z) \ 443*5113495bSYour Name WMI_HOST_F_RMW(x, z, WMI_HOST_EHT_CONF_DL_OFDMA_TXBF) 444*5113495bSYour Name 445*5113495bSYour Name #define WMI_HOST_EHT_CONF_DL_OFDMA_MUMIMO_S 8 446*5113495bSYour Name #define WMI_HOST_EHT_CONF_DL_OFDMA_MUMIMO_M 0x1 447*5113495bSYour Name #define WMI_HOST_EHT_CONF_DL_OFDMA_MUMIMO \ 448*5113495bSYour Name (WMI_HOST_EHT_CONF_DL_OFDMA_MUMIMO_M << \ 449*5113495bSYour Name WMI_HOST_EHT_CONF_DL_OFDMA_MUMIMO_S) 450*5113495bSYour Name #define WMI_HOST_EHT_CONF_DL_OFDMA_MUMIMO_GET(x) \ 451*5113495bSYour Name WMI_HOST_F_MS(x, WMI_HOST_EHT_CONF_DL_OFDMA_MUMIMO) 452*5113495bSYour Name #define WMI_HOST_EHT_CONF_DL_OFDMA_MUMIMO_SET(x, z) \ 453*5113495bSYour Name WMI_HOST_F_RMW(x, z, WMI_HOST_EHT_CONF_DL_OFDMA_MUMIMO) 454*5113495bSYour Name 455*5113495bSYour Name #define WMI_HOST_EHT_CONF_UL_OFDMA_MUMIMO_S 9 456*5113495bSYour Name #define WMI_HOST_EHT_CONF_UL_OFDMA_MUMIMO_M 0x1 457*5113495bSYour Name #define WMI_HOST_EHT_CONF_UL_OFDMA_MUMIMO \ 458*5113495bSYour Name (WMI_HOST_EHT_CONF_UL_OFDMA_MUMIMO_M << \ 459*5113495bSYour Name WMI_HOST_EHT_CONF_UL_OFDMA_MUMIMO_S) 460*5113495bSYour Name #define WMI_HOST_EHT_CONF_UL_OFDMA_MUMIMO_GET(x) \ 461*5113495bSYour Name WMI_HOST_F_MS(x, WMI_HOST_EHT_CONF_UL_OFDMA_MUMIMO) 462*5113495bSYour Name #define WMI_HOST_EHT_CONF_UL_OFDMA_MUMIMO_SET(x, z) \ 463*5113495bSYour Name WMI_HOST_F_RMW(x, z, WMI_HOST_EHT_CONF_UL_OFDMA_MUMIMO) 464*5113495bSYour Name 465*5113495bSYour Name /* Firmware uses most significant 4 bits to differentiate */ 466*5113495bSYour Name /* some of vdev params between HE and EHT */ 467*5113495bSYour Name #define WMI_HOST_VDEV_PARAM_EHT_MODE 0x10000000 468*5113495bSYour Name #endif 469*5113495bSYour Name 470*5113495bSYour Name #define WMI_HOST_TPC_RATE_MAX 160 471*5113495bSYour Name #define WMI_HOST_TPC_TX_NUM_CHAIN 4 472*5113495bSYour Name #define WMI_HOST_RXG_CAL_CHAN_MAX 8 473*5113495bSYour Name #define WMI_HOST_MAX_NUM_CHAINS 8 474*5113495bSYour Name #define WMI_MAX_NUM_OF_RATE_THRESH 4 475*5113495bSYour Name 476*5113495bSYour Name #define WMI_HOST_PDEV_MAX_VDEVS 17 477*5113495bSYour Name 478*5113495bSYour Name /* for QC98XX only */ 479*5113495bSYour Name /*6 modes (A, HT20, HT40, VHT20, VHT40, VHT80) * 3 reg dommains 480*5113495bSYour Name */ 481*5113495bSYour Name #define WMI_HOST_NUM_CTLS_5G 18 482*5113495bSYour Name /*6 modes (B, G, HT20, HT40, VHT20, VHT40) * 3 reg domains */ 483*5113495bSYour Name #define WMI_HOST_NUM_CTLS_2G 18 484*5113495bSYour Name #define WMI_HOST_NUM_BAND_EDGES_5G 8 485*5113495bSYour Name #define WMI_HOST_NUM_BAND_EDGES_2G 4 486*5113495bSYour Name 487*5113495bSYour Name /*Beelinier 5G*/ 488*5113495bSYour Name #define WMI_HOST_NUM_CTLS_5G_11A 9 489*5113495bSYour Name #define WMI_HOST_NUM_BAND_EDGES_5G_11A 25 490*5113495bSYour Name #define WMI_HOST_NUM_CTLS_5G_HT20 24 491*5113495bSYour Name #define WMI_HOST_NUM_BAND_EDGES_5G_HT20 25 492*5113495bSYour Name #define WMI_HOST_NUM_CTLS_5G_HT40 18 493*5113495bSYour Name #define WMI_HOST_NUM_BAND_EDGES_5G_HT40 12 494*5113495bSYour Name #define WMI_HOST_NUM_CTLS_5G_HT80 18 495*5113495bSYour Name #define WMI_HOST_NUM_BAND_EDGES_5G_HT80 6 496*5113495bSYour Name #define WMI_HOST_NUM_CTLS_5G_HT160 9 497*5113495bSYour Name #define WMI_HOST_NUM_BAND_EDGES_5G_HT160 2 498*5113495bSYour Name 499*5113495bSYour Name /* Beeliner 2G */ 500*5113495bSYour Name #define WMI_HOST_NUM_CTLS_2G_11B 6 501*5113495bSYour Name #define WMI_HOST_NUM_BAND_EDGES_2G_11B 9 502*5113495bSYour Name #define WMI_HOST_NUM_CTLS_2G_20MHZ 30 503*5113495bSYour Name #define WMI_HOST_NUM_BAND_EDGES_2G_20MHZ 11 504*5113495bSYour Name #define WMI_HOST_NUM_CTLS_2G_40MHZ 18 505*5113495bSYour Name #define WMI_HOST_NUM_BAND_EDGES_2G_40MHZ 6 506*5113495bSYour Name 507*5113495bSYour Name /* for QC98XX only */ 508*5113495bSYour Name #define WMI_HOST_TX_NUM_CHAIN 0x3 509*5113495bSYour Name #define WMI_HOST_TPC_REGINDEX_MAX 4 510*5113495bSYour Name #define WMI_HOST_ARRAY_GAIN_NUM_STREAMS 2 511*5113495bSYour Name 512*5113495bSYour Name /* AST Index for flow override */ 513*5113495bSYour Name #define WMI_CONFIG_MSDU_AST_INDEX_0 0x0 514*5113495bSYour Name #define WMI_CONFIG_MSDU_AST_INDEX_1 0x1 515*5113495bSYour Name #define WMI_CONFIG_MSDU_AST_INDEX_2 0x2 516*5113495bSYour Name #define WMI_CONFIG_MSDU_AST_INDEX_3 0x3 517*5113495bSYour Name 518*5113495bSYour Name #define WMI_MAX_AOA_PHASE_DELTA 31 519*5113495bSYour Name #define WMI_MAX_CHAINS_PHASE 2 520*5113495bSYour Name #define EGID_INFO_SIZE 4 521*5113495bSYour Name 522*5113495bSYour Name #include "qdf_atomic.h" 523*5113495bSYour Name 524*5113495bSYour Name #ifdef BIG_ENDIAN_HOST 525*5113495bSYour Name /* This API is used in copying in elements to WMI message, 526*5113495bSYour Name since WMI message uses multilpes of 4 bytes, This API 527*5113495bSYour Name converts length into multiples of 4 bytes, and performs copy 528*5113495bSYour Name */ 529*5113495bSYour Name #define WMI_HOST_IF_MSG_COPY_CHAR_ARRAY(destp, srcp, len) do { \ 530*5113495bSYour Name int j; \ 531*5113495bSYour Name u_int32_t *src, *dest; \ 532*5113495bSYour Name src = (u_int32_t *)srcp; \ 533*5113495bSYour Name dest = (u_int32_t *)destp; \ 534*5113495bSYour Name for (j = 0; j < roundup(len, sizeof(u_int32_t))/4; j++) { \ 535*5113495bSYour Name *(dest+j) = qdf_le32_to_cpu(*(src+j)); \ 536*5113495bSYour Name } \ 537*5113495bSYour Name } while (0) 538*5113495bSYour Name #else 539*5113495bSYour Name 540*5113495bSYour Name #define WMI_HOST_IF_MSG_COPY_CHAR_ARRAY(destp, srcp, len) OS_MEMCPY(destp,\ 541*5113495bSYour Name srcp, len) 542*5113495bSYour Name 543*5113495bSYour Name #endif 544*5113495bSYour Name 545*5113495bSYour Name /** macro to convert MAC address from WMI word format to char array */ 546*5113495bSYour Name #define WMI_HOST_MAC_ADDR_TO_CHAR_ARRAY(pwmi_mac_addr, c_macaddr) do { \ 547*5113495bSYour Name (c_macaddr)[0] = ((pwmi_mac_addr)->mac_addr31to0) & 0xff; \ 548*5113495bSYour Name (c_macaddr)[1] = (((pwmi_mac_addr)->mac_addr31to0) >> 8) & 0xff; \ 549*5113495bSYour Name (c_macaddr)[2] = (((pwmi_mac_addr)->mac_addr31to0) >> 16) & 0xff; \ 550*5113495bSYour Name (c_macaddr)[3] = (((pwmi_mac_addr)->mac_addr31to0) >> 24) & 0xff; \ 551*5113495bSYour Name (c_macaddr)[4] = ((pwmi_mac_addr)->mac_addr47to32) & 0xff; \ 552*5113495bSYour Name (c_macaddr)[5] = (((pwmi_mac_addr)->mac_addr47to32) >> 8) & 0xff; \ 553*5113495bSYour Name } while (0) 554*5113495bSYour Name 555*5113495bSYour Name #define TARGET_INIT_STATUS_SUCCESS 0x0 556*5113495bSYour Name #define TARGET_INIT_STATUS_GEN_FAILED 0x1 557*5113495bSYour Name #define TARGET_GET_INIT_STATUS_REASON(status) ((status) & 0xffff) 558*5113495bSYour Name #define TARGET_GET_INIT_STATUS_MODULE_ID(status) (((status) >> 16) & 0xffff) 559*5113495bSYour Name 560*5113495bSYour Name #define MAX_ASSOC_IE_LENGTH 1024 561*5113495bSYour Name 562*5113495bSYour Name /* 563*5113495bSYour Name * The WLAN_MAX_AC macro cannot be changed without breaking 564*5113495bSYour Name * WMI compatibility. 565*5113495bSYour Name * The maximum value of access category 566*5113495bSYour Name */ 567*5113495bSYour Name #define WMI_HOST_WLAN_MAX_AC 4 568*5113495bSYour Name typedef uint32_t TARGET_INIT_STATUS; 569*5113495bSYour Name 570*5113495bSYour Name /* 571*5113495bSYour Name * Opaque handle of wmi structure 572*5113495bSYour Name */ 573*5113495bSYour Name struct wmi_unified; 574*5113495bSYour Name typedef struct wmi_unified *wmi_unified_t; 575*5113495bSYour Name 576*5113495bSYour Name typedef void *ol_scn_t; 577*5113495bSYour Name 578*5113495bSYour Name /** 579*5113495bSYour Name * typedef wmi_unified_event_handler - WMI event handler 580*5113495bSYour Name * @scn_handle: handle 581*5113495bSYour Name * @event_buf: event buffer 582*5113495bSYour Name * @len: length of the event buffer 583*5113495bSYour Name * 584*5113495bSYour Name * Return: 0 if the event was handled, negative errno otherwise 585*5113495bSYour Name */ 586*5113495bSYour Name typedef int (*wmi_unified_event_handler)(ol_scn_t scn_handle, 587*5113495bSYour Name uint8_t *event_buf, uint32_t len); 588*5113495bSYour Name 589*5113495bSYour Name /* 590*5113495bSYour Name * @WMI_HOST_WLAN_PHY_MODE: Host based enum ID for corresponding in 591*5113495bSYour Name * WLAN_PHY_MODE. This should be consistent with WLAN_PHY_MODE always to avoid 592*5113495bSYour Name * breaking the WMI 593*5113495bSYour Name */ 594*5113495bSYour Name typedef enum { 595*5113495bSYour Name WMI_HOST_MODE_11A = 0, /* 11a Mode */ 596*5113495bSYour Name WMI_HOST_MODE_11G = 1, /* 11b/g Mode */ 597*5113495bSYour Name WMI_HOST_MODE_11B = 2, /* 11b Mode */ 598*5113495bSYour Name WMI_HOST_MODE_11GONLY = 3, /* 11g only Mode */ 599*5113495bSYour Name WMI_HOST_MODE_11NA_HT20 = 4, /* 11a HT20 mode */ 600*5113495bSYour Name WMI_HOST_MODE_11NG_HT20 = 5, /* 11g HT20 mode */ 601*5113495bSYour Name WMI_HOST_MODE_11NA_HT40 = 6, /* 11a HT40 mode */ 602*5113495bSYour Name WMI_HOST_MODE_11NG_HT40 = 7, /* 11g HT40 mode */ 603*5113495bSYour Name WMI_HOST_MODE_11AC_VHT20 = 8, 604*5113495bSYour Name WMI_HOST_MODE_11AC_VHT40 = 9, 605*5113495bSYour Name WMI_HOST_MODE_11AC_VHT80 = 10, 606*5113495bSYour Name WMI_HOST_MODE_11AC_VHT20_2G = 11, 607*5113495bSYour Name WMI_HOST_MODE_11AC_VHT40_2G = 12, 608*5113495bSYour Name WMI_HOST_MODE_11AC_VHT80_2G = 13, 609*5113495bSYour Name WMI_HOST_MODE_11AC_VHT80_80 = 14, 610*5113495bSYour Name WMI_HOST_MODE_11AC_VHT160 = 15, 611*5113495bSYour Name WMI_HOST_MODE_11AX_HE20 = 16, 612*5113495bSYour Name WMI_HOST_MODE_11AX_HE40 = 17, 613*5113495bSYour Name WMI_HOST_MODE_11AX_HE80 = 18, 614*5113495bSYour Name WMI_HOST_MODE_11AX_HE80_80 = 19, 615*5113495bSYour Name WMI_HOST_MODE_11AX_HE160 = 20, 616*5113495bSYour Name WMI_HOST_MODE_11AX_HE20_2G = 21, 617*5113495bSYour Name WMI_HOST_MODE_11AX_HE40_2G = 22, 618*5113495bSYour Name WMI_HOST_MODE_11AX_HE80_2G = 23, 619*5113495bSYour Name #ifdef WLAN_FEATURE_11BE 620*5113495bSYour Name WMI_HOST_MODE_11BE_EHT20 = 24, 621*5113495bSYour Name WMI_HOST_MODE_11BE_EHT40 = 25, 622*5113495bSYour Name WMI_HOST_MODE_11BE_EHT80 = 26, 623*5113495bSYour Name WMI_HOST_MODE_11BE_EHT160 = 28, 624*5113495bSYour Name WMI_HOST_MODE_11BE_EHT320 = 30, 625*5113495bSYour Name WMI_HOST_MODE_11BE_EHT20_2G = 31, 626*5113495bSYour Name WMI_HOST_MODE_11BE_EHT40_2G = 32, 627*5113495bSYour Name #endif 628*5113495bSYour Name WMI_HOST_MODE_UNKNOWN, 629*5113495bSYour Name WMI_HOST_MODE_MAX = WMI_HOST_MODE_UNKNOWN, 630*5113495bSYour Name } WMI_HOST_WLAN_PHY_MODE; 631*5113495bSYour Name 632*5113495bSYour Name /* 633*5113495bSYour Name * Needs to be removed and use channel_param based 634*5113495bSYour Name * on how it is processed 635*5113495bSYour Name */ 636*5113495bSYour Name typedef struct { 637*5113495bSYour Name /** primary 20 MHz channel frequency in mhz */ 638*5113495bSYour Name uint32_t mhz; 639*5113495bSYour Name /** Center frequency 1 in MHz*/ 640*5113495bSYour Name uint32_t band_center_freq1; 641*5113495bSYour Name /** Center frequency 2 in MHz - valid only for 11acvht 80plus80 mode*/ 642*5113495bSYour Name uint32_t band_center_freq2; 643*5113495bSYour Name /** channel info described below */ 644*5113495bSYour Name uint32_t info; 645*5113495bSYour Name /** contains min power, max power, reg power and reg class id. */ 646*5113495bSYour Name uint32_t reg_info_1; 647*5113495bSYour Name /** contains antennamax */ 648*5113495bSYour Name uint32_t reg_info_2; 649*5113495bSYour Name } wmi_host_channel; 650*5113495bSYour Name 651*5113495bSYour Name /** 652*5113495bSYour Name * enum WMI_HOST_WLAN_BAND_CAPABILITY: Band capability (2.4 GHz, 5 GHz). Maps to 653*5113495bSYour Name * WLAN_BAND_CAPABILITY used in firmware header file(s). 654*5113495bSYour Name * @WMI_HOST_WLAN_2G_CAPABILITY: 2.4 GHz capable 655*5113495bSYour Name * @WMI_HOST_WLAN_5G_CAPABILITY: 5 GHz capable 656*5113495bSYour Name */ 657*5113495bSYour Name typedef enum { 658*5113495bSYour Name WMI_HOST_WLAN_2G_CAPABILITY = 0x1, 659*5113495bSYour Name WMI_HOST_WLAN_5G_CAPABILITY = 0x2, 660*5113495bSYour Name } WMI_HOST_WLAN_BAND_CAPABILITY; 661*5113495bSYour Name 662*5113495bSYour Name /** 663*5113495bSYour Name * enum wmi_host_channel_width: Channel operating width. Maps to 664*5113495bSYour Name * wmi_channel_width used in firmware header file(s). 665*5113495bSYour Name * @WMI_HOST_CHAN_WIDTH_20: 20 MHz channel operating width 666*5113495bSYour Name * @WMI_HOST_CHAN_WIDTH_40: 40 MHz channel operating width 667*5113495bSYour Name * @WMI_HOST_CHAN_WIDTH_80: 80 MHz channel operating width 668*5113495bSYour Name * @WMI_HOST_CHAN_WIDTH_160: 160 MHz channel operating width 669*5113495bSYour Name * @WMI_HOST_CHAN_WIDTH_80P80: 80+80 MHz channel operating width 670*5113495bSYour Name * @WMI_HOST_CHAN_WIDTH_5: 5 MHz channel operating width 671*5113495bSYour Name * @WMI_HOST_CHAN_WIDTH_10: 10 MHz channel operating width 672*5113495bSYour Name * @WMI_HOST_CHAN_WIDTH_165: 165 MHz channel operating width 673*5113495bSYour Name * @WMI_HOST_CHAN_WIDTH_160P160: 160 MHz + 160 MHz channel operating width 674*5113495bSYour Name * @WMI_HOST_CHAN_WIDTH_320: 320 MHz channel operating width 675*5113495bSYour Name */ 676*5113495bSYour Name typedef enum { 677*5113495bSYour Name WMI_HOST_CHAN_WIDTH_20 = 0, 678*5113495bSYour Name WMI_HOST_CHAN_WIDTH_40 = 1, 679*5113495bSYour Name WMI_HOST_CHAN_WIDTH_80 = 2, 680*5113495bSYour Name WMI_HOST_CHAN_WIDTH_160 = 3, 681*5113495bSYour Name WMI_HOST_CHAN_WIDTH_80P80 = 4, 682*5113495bSYour Name WMI_HOST_CHAN_WIDTH_5 = 5, 683*5113495bSYour Name WMI_HOST_CHAN_WIDTH_10 = 6, 684*5113495bSYour Name WMI_HOST_CHAN_WIDTH_165 = 7, 685*5113495bSYour Name WMI_HOST_CHAN_WIDTH_160P160 = 8, 686*5113495bSYour Name WMI_HOST_CHAN_WIDTH_320 = 9, 687*5113495bSYour Name } wmi_host_channel_width; 688*5113495bSYour Name 689*5113495bSYour Name #define ATH_EXPONENT_TO_VALUE(v) ((1<<v)-1) 690*5113495bSYour Name #define ATH_TXOP_TO_US(v) (v<<5) 691*5113495bSYour Name /* WME stream classes */ 692*5113495bSYour Name #define WMI_HOST_AC_BE 0 /* best effort */ 693*5113495bSYour Name #define WMI_HOST_AC_BK 1 /* background */ 694*5113495bSYour Name #define WMI_HOST_AC_VI 2 /* video */ 695*5113495bSYour Name #define WMI_HOST_AC_VO 3 /* voice */ 696*5113495bSYour Name #define WMI_TID_TO_AC(_tid) (\ 697*5113495bSYour Name (((_tid) == 0) || ((_tid) == 3)) ? WMI_HOST_AC_BE : \ 698*5113495bSYour Name (((_tid) == 1) || ((_tid) == 2)) ? WMI_HOST_AC_BK : \ 699*5113495bSYour Name (((_tid) == 4) || ((_tid) == 5)) ? WMI_HOST_AC_VI : \ 700*5113495bSYour Name WMI_HOST_AC_VO) 701*5113495bSYour Name 702*5113495bSYour Name /** 703*5113495bSYour Name * struct channel_param - Channel parameters with all 704*5113495bSYour Name * info required by target. 705*5113495bSYour Name * @chan_id: channel id 706*5113495bSYour Name * @pwr: channel power 707*5113495bSYour Name * @mhz: channel frequency 708*5113495bSYour Name * @half_rate: is half rate 709*5113495bSYour Name * @quarter_rate: is quarter rate 710*5113495bSYour Name * @dfs_set: is dfs channel 711*5113495bSYour Name * @dfs_set_cfreq2: is secondary freq dfs channel 712*5113495bSYour Name * @is_chan_passive: is this passive channel 713*5113495bSYour Name * @allow_ht: HT allowed in chan 714*5113495bSYour Name * @allow_vht: VHT allowed on chan 715*5113495bSYour Name * @set_agile: is agile mode 716*5113495bSYour Name * @allow_he: HE allowed on chan 717*5113495bSYour Name * @psc_channel: 6 ghz preferred scan chan 718*5113495bSYour Name * @nan_disabled: is NAN disabled on @mhz 719*5113495bSYour Name * @allow_eht: EHT allowed on chan 720*5113495bSYour Name * @phy_mode: phymode (vht80 or ht40 or ...) 721*5113495bSYour Name * @cfreq1: centre frequency on primary 722*5113495bSYour Name * @cfreq2: centre frequency on secondary 723*5113495bSYour Name * @maxpower: max power for channel 724*5113495bSYour Name * @minpower: min power for channel 725*5113495bSYour Name * @maxregpower: Max regulatory power 726*5113495bSYour Name * @antennamax: Max antenna 727*5113495bSYour Name * @reg_class_id: Regulatory class id. 728*5113495bSYour Name * @max_bw_supported: max BW supported 729*5113495bSYour Name */ 730*5113495bSYour Name 731*5113495bSYour Name struct channel_param { 732*5113495bSYour Name uint8_t chan_id; 733*5113495bSYour Name uint8_t pwr; 734*5113495bSYour Name uint32_t mhz; 735*5113495bSYour Name uint32_t half_rate:1, 736*5113495bSYour Name quarter_rate:1, 737*5113495bSYour Name dfs_set:1, 738*5113495bSYour Name dfs_set_cfreq2:1, 739*5113495bSYour Name is_chan_passive:1, 740*5113495bSYour Name allow_ht:1, 741*5113495bSYour Name allow_vht:1, 742*5113495bSYour Name set_agile:1, 743*5113495bSYour Name allow_he:1, 744*5113495bSYour Name psc_channel:1, 745*5113495bSYour Name nan_disabled:1, 746*5113495bSYour Name allow_eht:1; 747*5113495bSYour Name uint32_t phy_mode; 748*5113495bSYour Name uint32_t cfreq1; 749*5113495bSYour Name uint32_t cfreq2; 750*5113495bSYour Name int8_t maxpower; 751*5113495bSYour Name int8_t minpower; 752*5113495bSYour Name int8_t maxregpower; 753*5113495bSYour Name uint8_t antennamax; 754*5113495bSYour Name uint8_t reg_class_id; 755*5113495bSYour Name wmi_host_channel_width max_bw_supported; 756*5113495bSYour Name }; 757*5113495bSYour Name 758*5113495bSYour Name #ifdef FEATURE_OEM_DATA 759*5113495bSYour Name /** 760*5113495bSYour Name * struct oem_data - oem data to be sent to firmware 761*5113495bSYour Name * @vdev_id: Unique identifier assigned to the vdev 762*5113495bSYour Name * @data_len: len of data 763*5113495bSYour Name * @pdev_id: pdev id to identify the pdev 764*5113495bSYour Name * @pdev_vdev_flag: 0 when vdev is valid, 1 when pdev is valid 765*5113495bSYour Name * @is_host_pdev_id: 1 for host pdev id, 0 otherwise 766*5113495bSYour Name * @data: the pointer to the buffer containing data 767*5113495bSYour Name * @file_name_len: Length of file name 768*5113495bSYour Name * @file_name: Pointer to the buffer containing file name 769*5113495bSYour Name */ 770*5113495bSYour Name struct oem_data { 771*5113495bSYour Name uint8_t vdev_id; 772*5113495bSYour Name size_t data_len; 773*5113495bSYour Name uint8_t pdev_id; 774*5113495bSYour Name bool pdev_vdev_flag; 775*5113495bSYour Name bool is_host_pdev_id; 776*5113495bSYour Name uint8_t *data; 777*5113495bSYour Name uint32_t file_name_len; 778*5113495bSYour Name uint8_t *file_name; 779*5113495bSYour Name }; 780*5113495bSYour Name #endif 781*5113495bSYour Name 782*5113495bSYour Name #ifdef MULTI_CLIENT_LL_SUPPORT 783*5113495bSYour Name /** 784*5113495bSYour Name * struct latency_level_data - latency data received in the event from the FW 785*5113495bSYour Name * @vdev_id: The latency level for specified vdev_id 786*5113495bSYour Name * @latency_level: latency level honoured by FW 787*5113495bSYour Name */ 788*5113495bSYour Name struct latency_level_data { 789*5113495bSYour Name uint8_t vdev_id; 790*5113495bSYour Name uint32_t latency_level; 791*5113495bSYour Name }; 792*5113495bSYour Name #endif 793*5113495bSYour Name 794*5113495bSYour Name /** 795*5113495bSYour Name * enum nss_chains_band_info - Band info for dynamic nss, chains change feature 796*5113495bSYour Name * @NSS_CHAINS_BAND_2GHZ: 2.4Ghz band 797*5113495bSYour Name * @NSS_CHAINS_BAND_5GHZ: 5Ghz band 798*5113495bSYour Name * @NSS_CHAINS_BAND_MAX: Max bands supported 799*5113495bSYour Name */ 800*5113495bSYour Name enum nss_chains_band_info { 801*5113495bSYour Name NSS_CHAINS_BAND_2GHZ = 0, 802*5113495bSYour Name NSS_CHAINS_BAND_5GHZ, 803*5113495bSYour Name NSS_CHAINS_BAND_MAX, 804*5113495bSYour Name }; 805*5113495bSYour Name 806*5113495bSYour Name /** 807*5113495bSYour Name * struct vdev_nss_chains - vdev config of nss, and chains 808*5113495bSYour Name * @num_tx_chains: tx chains of vdev config 809*5113495bSYour Name * @num_rx_chains: rx chains of vdev config 810*5113495bSYour Name * @tx_nss: tx nss of vdev config 811*5113495bSYour Name * @rx_nss: rx nss of vdev config 812*5113495bSYour Name * @num_tx_chains_11b: number of tx chains in 11b mode 813*5113495bSYour Name * @num_tx_chains_11g: number of tx chains in 11g mode 814*5113495bSYour Name * @num_tx_chains_11a: number of tx chains in 11a mode 815*5113495bSYour Name * @disable_rx_mrc: disable 2 rx chains, in rx nss 1 mode 816*5113495bSYour Name * @disable_tx_mrc: disable 2 tx chains, in tx nss 1 mode 817*5113495bSYour Name */ 818*5113495bSYour Name struct vdev_nss_chains { 819*5113495bSYour Name uint32_t num_tx_chains[NSS_CHAINS_BAND_MAX]; 820*5113495bSYour Name uint32_t num_rx_chains[NSS_CHAINS_BAND_MAX]; 821*5113495bSYour Name uint32_t tx_nss[NSS_CHAINS_BAND_MAX]; 822*5113495bSYour Name uint32_t rx_nss[NSS_CHAINS_BAND_MAX]; 823*5113495bSYour Name uint32_t num_tx_chains_11b; 824*5113495bSYour Name uint32_t num_tx_chains_11g; 825*5113495bSYour Name uint32_t num_tx_chains_11a; 826*5113495bSYour Name bool disable_rx_mrc[NSS_CHAINS_BAND_MAX]; 827*5113495bSYour Name bool disable_tx_mrc[NSS_CHAINS_BAND_MAX]; 828*5113495bSYour Name }; 829*5113495bSYour Name 830*5113495bSYour Name 831*5113495bSYour Name /** 832*5113495bSYour Name * struct peer_delete_params - peer delete cmd parameter 833*5113495bSYour Name * @vdev_id: vdev id 834*5113495bSYour Name */ 835*5113495bSYour Name struct peer_delete_params { 836*5113495bSYour Name uint8_t vdev_id; 837*5113495bSYour Name }; 838*5113495bSYour Name 839*5113495bSYour Name /** 840*5113495bSYour Name * struct peer_set_params - peer set cmd parameter 841*5113495bSYour Name * @param_id: parameter id 842*5113495bSYour Name * @param_value: parameter value 843*5113495bSYour Name * @vdev_id: vdev id 844*5113495bSYour Name */ 845*5113495bSYour Name struct peer_set_params { 846*5113495bSYour Name uint32_t param_id; 847*5113495bSYour Name uint32_t param_value; 848*5113495bSYour Name uint32_t vdev_id; 849*5113495bSYour Name }; 850*5113495bSYour Name 851*5113495bSYour Name /** 852*5113495bSYour Name * struct peer_create_params - peer create cmd parameter 853*5113495bSYour Name * @peer_addr: peer mac addr 854*5113495bSYour Name * @peer_type: peer type 855*5113495bSYour Name * @vdev_id: vdev id 856*5113495bSYour Name * @mlo_enabled: Indicates MLO is enabled 857*5113495bSYour Name * @mlo_bridge_peer: Indicates bridge peer 858*5113495bSYour Name */ 859*5113495bSYour Name struct peer_create_params { 860*5113495bSYour Name const uint8_t *peer_addr; 861*5113495bSYour Name uint32_t peer_type; 862*5113495bSYour Name uint32_t vdev_id; 863*5113495bSYour Name #ifdef WLAN_FEATURE_11BE_MLO 864*5113495bSYour Name bool mlo_enabled; 865*5113495bSYour Name bool mlo_bridge_peer; 866*5113495bSYour Name #endif 867*5113495bSYour Name }; 868*5113495bSYour Name 869*5113495bSYour Name #ifdef WLAN_SUPPORT_PPEDS 870*5113495bSYour Name /** 871*5113495bSYour Name * struct peer_ppe_ds_param - Per peer PPE Direct Switch parameter 872*5113495bSYour Name * @peer_macaddr: PPE mac address 873*5113495bSYour Name * @ppe_routing_enabled: Master flag for PPE routing 874*5113495bSYour Name * @use_ppe: Use PPE command for the peer entry 875*5113495bSYour Name * @service_code: Service code 876*5113495bSYour Name * @priority_valid: If PRI to TID conversion is enabled 877*5113495bSYour Name * @src_info: Source info/PPE port of the interface 878*5113495bSYour Name * @vdev_id: VAP ID 879*5113495bSYour Name */ 880*5113495bSYour Name struct peer_ppe_ds_param { 881*5113495bSYour Name uint8_t peer_macaddr[QDF_MAC_ADDR_SIZE]; 882*5113495bSYour Name bool ppe_routing_enabled; 883*5113495bSYour Name bool use_ppe; 884*5113495bSYour Name uint16_t service_code; 885*5113495bSYour Name uint16_t src_info; 886*5113495bSYour Name uint8_t priority_valid; 887*5113495bSYour Name uint8_t vdev_id; 888*5113495bSYour Name }; 889*5113495bSYour Name #endif 890*5113495bSYour Name 891*5113495bSYour Name /** 892*5113495bSYour Name * struct peer_remove_params - peer remove cmd parameter 893*5113495bSYour Name * @bssid: bss id 894*5113495bSYour Name * @vdev_id: vdev id 895*5113495bSYour Name * @roam_synch_in_progress: flag to indicate if roaming is in progress 896*5113495bSYour Name */ 897*5113495bSYour Name struct peer_remove_params { 898*5113495bSYour Name uint8_t *bssid; 899*5113495bSYour Name uint8_t vdev_id; 900*5113495bSYour Name bool roam_synch_in_progress; 901*5113495bSYour Name }; 902*5113495bSYour Name 903*5113495bSYour Name /* 904*5113495bSYour Name * Stats ID enums defined in host 905*5113495bSYour Name */ 906*5113495bSYour Name typedef enum { 907*5113495bSYour Name WMI_HOST_REQUEST_PEER_STAT = 0x01, 908*5113495bSYour Name WMI_HOST_REQUEST_AP_STAT = 0x02, 909*5113495bSYour Name WMI_HOST_REQUEST_PDEV_STAT = 0x04, 910*5113495bSYour Name WMI_HOST_REQUEST_VDEV_STAT = 0x08, 911*5113495bSYour Name WMI_HOST_REQUEST_BCNFLT_STAT = 0x10, 912*5113495bSYour Name WMI_HOST_REQUEST_VDEV_RATE_STAT = 0x20, 913*5113495bSYour Name WMI_HOST_REQUEST_INST_STAT = 0x40, 914*5113495bSYour Name WMI_HOST_REQUEST_PEER_EXTD_STAT = 0x80, 915*5113495bSYour Name WMI_HOST_REQUEST_VDEV_EXTD_STAT = 0x100, 916*5113495bSYour Name WMI_HOST_REQUEST_NAC_RSSI = 0x200, 917*5113495bSYour Name WMI_HOST_REQUEST_BCN_STAT = 0x800, 918*5113495bSYour Name WMI_HOST_REQUEST_BCN_STAT_RESET = 0x1000, 919*5113495bSYour Name WMI_HOST_REQUEST_PEER_RETRY_STAT = 0x2000, 920*5113495bSYour Name WMI_HOST_REQUEST_PEER_ADV_STATS = 0x4000, 921*5113495bSYour Name WMI_HOST_REQUEST_PMF_BCN_PROTECT_STAT = 0x8000, 922*5113495bSYour Name WMI_HOST_REQUEST_VDEV_PRB_FILS_STAT = 0x10000, 923*5113495bSYour Name WMI_HOST_REQUEST_PDEV_EXTD_STAT = 0x20000, 924*5113495bSYour Name WMI_HOST_REQUEST_PDEV_TELEMETRY_STAT = 0x40000, 925*5113495bSYour Name } wmi_host_stats_id; 926*5113495bSYour Name 927*5113495bSYour Name typedef struct { 928*5113495bSYour Name uint16_t cfg_retry_count; 929*5113495bSYour Name uint16_t retry_count; 930*5113495bSYour Name } wmi_host_inst_rssi_args; 931*5113495bSYour Name 932*5113495bSYour Name /** 933*5113495bSYour Name * struct stats_request_params - stats_request cmd parameter 934*5113495bSYour Name * @stats_id: Bit mask of all the STATS request are specified with values from wmi_host_stats_id 935*5113495bSYour Name * @vdev_id: vdev id 936*5113495bSYour Name * @pdev_id: pdev_id 937*5113495bSYour Name * @rssi_args: Instantaneous rssi stats args 938*5113495bSYour Name * @is_qmi_send_support: support to send by qmi or not 939*5113495bSYour Name */ 940*5113495bSYour Name struct stats_request_params { 941*5113495bSYour Name uint32_t stats_id; 942*5113495bSYour Name uint8_t vdev_id; 943*5113495bSYour Name uint8_t pdev_id; 944*5113495bSYour Name wmi_host_inst_rssi_args rssi_args; 945*5113495bSYour Name bool is_qmi_send_support; 946*5113495bSYour Name }; 947*5113495bSYour Name 948*5113495bSYour Name /** 949*5113495bSYour Name * struct bss_chan_info_request_params - BSS chan info params 950*5113495bSYour Name * @param: parameter value 951*5113495bSYour Name */ 952*5113495bSYour Name struct bss_chan_info_request_params { 953*5113495bSYour Name uint32_t param; 954*5113495bSYour Name }; 955*5113495bSYour Name 956*5113495bSYour Name /** 957*5113495bSYour Name * struct wow_cmd_params - wow cmd parameter 958*5113495bSYour Name * @enable: wow enable or disable flag 959*5113495bSYour Name * @can_suspend_link: flag to indicate if link can be suspended 960*5113495bSYour Name * @pause_iface_config: interface config 961*5113495bSYour Name * @flags: 962*5113495bSYour Name */ 963*5113495bSYour Name struct wow_cmd_params { 964*5113495bSYour Name bool enable; 965*5113495bSYour Name bool can_suspend_link; 966*5113495bSYour Name uint8_t pause_iface_config; 967*5113495bSYour Name uint32_t flags; 968*5113495bSYour Name }; 969*5113495bSYour Name 970*5113495bSYour Name /** 971*5113495bSYour Name * struct wow_add_wakeup_params - wow wakeup parameter 972*5113495bSYour Name * @type: param type 973*5113495bSYour Name */ 974*5113495bSYour Name struct wow_add_wakeup_params { 975*5113495bSYour Name uint32_t type; 976*5113495bSYour Name }; 977*5113495bSYour Name 978*5113495bSYour Name /** 979*5113495bSYour Name * struct wow_add_wakeup_pattern_params - Add WoW pattern params 980*5113495bSYour Name * @pattern_bytes: pointer to pattern bytes 981*5113495bSYour Name * @mask_bytes: pointer to mask bytes 982*5113495bSYour Name * @pattern_len: pattern length 983*5113495bSYour Name * @pattern_id: pattern id 984*5113495bSYour Name */ 985*5113495bSYour Name struct wow_add_wakeup_pattern_params { 986*5113495bSYour Name uint8_t *pattern_bytes; 987*5113495bSYour Name uint8_t *mask_bytes; 988*5113495bSYour Name uint32_t pattern_len; 989*5113495bSYour Name uint32_t pattern_id; 990*5113495bSYour Name }; 991*5113495bSYour Name 992*5113495bSYour Name /** 993*5113495bSYour Name * struct wow_remove_wakeup_pattern_params - WoW remove pattern param 994*5113495bSYour Name * @pattern_bytes: pointer to pattern bytes 995*5113495bSYour Name * @mask_bytes: Mask bytes 996*5113495bSYour Name * @pattern_id: pattern identifier 997*5113495bSYour Name */ 998*5113495bSYour Name struct wow_remove_wakeup_pattern_params { 999*5113495bSYour Name uint32_t *pattern_bytes; 1000*5113495bSYour Name uint32_t *mask_bytes; 1001*5113495bSYour Name uint32_t pattern_id; 1002*5113495bSYour Name }; 1003*5113495bSYour Name 1004*5113495bSYour Name 1005*5113495bSYour Name /** 1006*5113495bSYour Name * struct packet_enable_params - packet enable cmd parameter 1007*5113495bSYour Name * @vdev_id: vdev id 1008*5113495bSYour Name * @enable: flag to indicate if parameter can be enabled or disabled 1009*5113495bSYour Name */ 1010*5113495bSYour Name struct packet_enable_params { 1011*5113495bSYour Name uint8_t vdev_id; 1012*5113495bSYour Name bool enable; 1013*5113495bSYour Name }; 1014*5113495bSYour Name 1015*5113495bSYour Name /** 1016*5113495bSYour Name * struct suspend_params - suspend cmd parameter 1017*5113495bSYour Name * @disable_target_intr: disable target interrupt 1018*5113495bSYour Name */ 1019*5113495bSYour Name struct suspend_params { 1020*5113495bSYour Name uint8_t disable_target_intr; 1021*5113495bSYour Name }; 1022*5113495bSYour Name 1023*5113495bSYour Name /** 1024*5113495bSYour Name * struct pdev_params - pdev set cmd parameter 1025*5113495bSYour Name * @param_id: parameter id 1026*5113495bSYour Name * @param_value: parameter value 1027*5113495bSYour Name * @is_host_pdev_id: indicate whether pdev_id is host pdev_id or not 1028*5113495bSYour Name */ 1029*5113495bSYour Name struct pdev_params { 1030*5113495bSYour Name uint32_t param_id; 1031*5113495bSYour Name uint32_t param_value; 1032*5113495bSYour Name bool is_host_pdev_id; 1033*5113495bSYour Name }; 1034*5113495bSYour Name 1035*5113495bSYour Name /** 1036*5113495bSYour Name * struct bcn_prb_template_params - beacon probe template parameter 1037*5113495bSYour Name * @vdev_id: vdev id 1038*5113495bSYour Name * @buf_len: Template length 1039*5113495bSYour Name * @caps: capabilities field 1040*5113495bSYour Name * @erp: ERP field 1041*5113495bSYour Name */ 1042*5113495bSYour Name struct bcn_prb_template_params { 1043*5113495bSYour Name uint8_t vdev_id; 1044*5113495bSYour Name int buf_len; 1045*5113495bSYour Name uint16_t caps; 1046*5113495bSYour Name uint8_t erp; 1047*5113495bSYour Name }; 1048*5113495bSYour Name 1049*5113495bSYour Name #define WMI_MAX_SUPPORTED_RATES 128 1050*5113495bSYour Name /** 1051*5113495bSYour Name * struct target_rate_set - Rate set bitmap 1052*5113495bSYour Name * @num_rates: number of rates in rates bitmap 1053*5113495bSYour Name * @rates: rates (each 8bit value) packed into a 32 bit word. 1054*5113495bSYour Name * the rates are filled from least significant byte to most 1055*5113495bSYour Name * significant byte. 1056*5113495bSYour Name */ 1057*5113495bSYour Name typedef struct { 1058*5113495bSYour Name uint32_t num_rates; 1059*5113495bSYour Name uint32_t rates[(WMI_MAX_SUPPORTED_RATES / 4) + 1]; 1060*5113495bSYour Name } target_rate_set; 1061*5113495bSYour Name 1062*5113495bSYour Name 1063*5113495bSYour Name #define WMI_HOST_MAX_NUM_SS 8 1064*5113495bSYour Name #define WMI_HOST_MAX_HECAP_PHY_SIZE 3 1065*5113495bSYour Name #define WMI_HOST_MAX_HECAP_MAC_SIZE 2 1066*5113495bSYour Name #define WMI_HOST_HECAP_MAC_WORD1 0 1067*5113495bSYour Name #define WMI_HOST_HECAP_MAC_WORD2 1 1068*5113495bSYour Name #define WMI_HOST_MAX_HE_RATE_SET 3 1069*5113495bSYour Name 1070*5113495bSYour Name #define WMI_HOST_HE_INVALID_MCSNSSMAP (0xFFFF) 1071*5113495bSYour Name #define WMI_HOST_HE_TXRX_MCS_NSS_IDX_80 0 1072*5113495bSYour Name #define WMI_HOST_HE_TXRX_MCS_NSS_IDX_160 1 1073*5113495bSYour Name #define WMI_HOST_HE_TXRX_MCS_NSS_IDX_80_80 2 1074*5113495bSYour Name 1075*5113495bSYour Name #ifdef WLAN_FEATURE_11BE 1076*5113495bSYour Name #define WMI_HOST_MAX_EHTCAP_PHY_SIZE 3 1077*5113495bSYour Name #define WMI_HOST_MAX_EHTCAP_MAC_SIZE 1 1078*5113495bSYour Name #define WMI_HOST_EHTCAP_MAC_WORD1 0 1079*5113495bSYour Name #define WMI_HOST_EHTCAP_MAC_WORD2 1 1080*5113495bSYour Name #define WMI_HOST_MAX_EHT_RATE_SET 4 1081*5113495bSYour Name 1082*5113495bSYour Name #define WMI_HOST_EHT_INVALID_MCSNSSMAP (0xFFFF) 1083*5113495bSYour Name #define WMI_HOST_EHT_TXRX_MCS_NSS_IDX_80 0 1084*5113495bSYour Name #define WMI_HOST_EHT_TXRX_MCS_NSS_IDX_160 1 1085*5113495bSYour Name #define WMI_HOST_EHT_TXRX_MCS_NSS_IDX_320 2 1086*5113495bSYour Name #endif 1087*5113495bSYour Name 1088*5113495bSYour Name /** 1089*5113495bSYour Name * struct wmi_host_ppe_threshold -PPE threshold 1090*5113495bSYour Name * @numss_m1: NSS - 1 1091*5113495bSYour Name * @ru_bit_mask: RU bit mask indicating the supported RU's 1092*5113495bSYour Name * @ppet16_ppet8_ru3_ru0: ppet8 and ppet16 for max num ss 1093*5113495bSYour Name */ 1094*5113495bSYour Name struct wmi_host_ppe_threshold { 1095*5113495bSYour Name uint32_t numss_m1; 1096*5113495bSYour Name uint32_t ru_bit_mask; 1097*5113495bSYour Name uint32_t ppet16_ppet8_ru3_ru0[WMI_HOST_MAX_NUM_SS]; 1098*5113495bSYour Name }; 1099*5113495bSYour Name 1100*5113495bSYour Name /** 1101*5113495bSYour Name * struct wmi_host_mac_addr - host mac addr 2 word representation of MAC addr 1102*5113495bSYour Name * @mac_addr31to0: upper 4 bytes of MAC address 1103*5113495bSYour Name * @mac_addr47to32: lower 2 bytes of MAC address 1104*5113495bSYour Name */ 1105*5113495bSYour Name typedef struct { 1106*5113495bSYour Name uint32_t mac_addr31to0; 1107*5113495bSYour Name uint32_t mac_addr47to32; 1108*5113495bSYour Name } wmi_host_mac_addr; 1109*5113495bSYour Name 1110*5113495bSYour Name #ifdef WLAN_FEATURE_11BE 1111*5113495bSYour Name #ifdef WMI_AP_SUPPORT 1112*5113495bSYour Name /** 1113*5113495bSYour Name * struct wlan_host_preferred_links - Preferred link info. 1114*5113495bSYour Name * @num_pref_links: non-zero values indicate that preferred link order 1115*5113495bSYour Name * is present. 1116*5113495bSYour Name * @preffered_link_order: Preferred links in order. 1117*5113495bSYour Name * @timeout: timeout values for all the access categories. 1118*5113495bSYour Name * @tlt_characterization_params: Bitmask to select Tx-Link Tuple from ordered 1119*5113495bSYour Name * list. 1120*5113495bSYour Name * Bit 0-15 : Each bit maps to the corresponding Link ID 1121*5113495bSYour Name * Bit 16-31: Reserved 1122*5113495bSYour Name * @link_control_flags: Link control flags. 1123*5113495bSYour Name * Bit 0: TLT enable/disable 1124*5113495bSYour Name * Bit 1: Preferred Link enable/disable 1125*5113495bSYour Name * Bit 2-31: Reserved 1126*5113495bSYour Name */ 1127*5113495bSYour Name struct wlan_host_preferred_links { 1128*5113495bSYour Name uint8_t num_pref_links; 1129*5113495bSYour Name uint8_t preffered_link_order[MAX_PREFERRED_LINKS]; 1130*5113495bSYour Name uint32_t timeout[WMI_HOST_WLAN_MAX_AC]; 1131*5113495bSYour Name uint32_t tlt_characterization_params; 1132*5113495bSYour Name uint32_t link_control_flags; 1133*5113495bSYour Name }; 1134*5113495bSYour Name #endif 1135*5113495bSYour Name 1136*5113495bSYour Name /** 1137*5113495bSYour Name * struct wlan_host_t2lm_of_tids - TID-to-link mapping info 1138*5113495bSYour Name * @direction: 0 - Downlink, 1 - uplink 2 - Both uplink and downlink 1139*5113495bSYour Name * @default_link_mapping: value 1 indicates the default T2LM, where all the TIDs 1140*5113495bSYour Name * are mapped to all the links. 1141*5113495bSYour Name * value 0 indicates the preferred T2LM mapping 1142*5113495bSYour Name * @t2lm_provisioned_links: Indicates TID to link mapping of all the TIDS. 1143*5113495bSYour Name */ 1144*5113495bSYour Name struct wlan_host_t2lm_of_tids { 1145*5113495bSYour Name enum wlan_t2lm_direction direction; 1146*5113495bSYour Name bool default_link_mapping; 1147*5113495bSYour Name uint16_t t2lm_provisioned_links[T2LM_MAX_NUM_TIDS]; 1148*5113495bSYour Name }; 1149*5113495bSYour Name 1150*5113495bSYour Name /** 1151*5113495bSYour Name * struct wmi_host_tid_to_link_map_params - TID-to-link mapping params 1152*5113495bSYour Name * @pdev_id: Pdev id 1153*5113495bSYour Name * @peer_macaddr: link peer macaddr 1154*5113495bSYour Name * @num_dir: number of directions for which T2LM info is available 1155*5113495bSYour Name * @t2lm_info: TID-to-link mapping info for the given directions 1156*5113495bSYour Name * @mapping_switch_time: Mapping switch time of this T2LM IE 1157*5113495bSYour Name * @expected_duration: Expected duration of this T2LM IE 1158*5113495bSYour Name * @preferred_links: Preferred link info. 1159*5113495bSYour Name */ 1160*5113495bSYour Name struct wmi_host_tid_to_link_map_params { 1161*5113495bSYour Name uint8_t pdev_id; 1162*5113495bSYour Name uint8_t peer_macaddr[QDF_MAC_ADDR_SIZE]; 1163*5113495bSYour Name uint8_t num_dir; 1164*5113495bSYour Name struct wlan_host_t2lm_of_tids t2lm_info[WLAN_T2LM_MAX_DIRECTION]; 1165*5113495bSYour Name uint16_t mapping_switch_time; 1166*5113495bSYour Name uint32_t expected_duration; 1167*5113495bSYour Name #ifdef WMI_AP_SUPPORT 1168*5113495bSYour Name struct wlan_host_preferred_links preferred_links; 1169*5113495bSYour Name #endif 1170*5113495bSYour Name }; 1171*5113495bSYour Name 1172*5113495bSYour Name /** 1173*5113495bSYour Name * struct wmi_host_tid_to_link_map_ap_params - TID-to-link mapping params 1174*5113495bSYour Name * @pdev_id: Pdev id 1175*5113495bSYour Name * @vdev_id: Vdev id 1176*5113495bSYour Name * @num_t2lm_info: Number of t2lm IEs 1177*5113495bSYour Name * @hw_link_id: HW link id 1178*5113495bSYour Name * @disabled_link_bitmap: Disabled link bitmap info 1179*5113495bSYour Name * @info: TID-to-link mapping IE info 1180*5113495bSYour Name */ 1181*5113495bSYour Name struct wmi_host_tid_to_link_map_ap_params { 1182*5113495bSYour Name uint8_t pdev_id; 1183*5113495bSYour Name uint8_t vdev_id; 1184*5113495bSYour Name uint8_t num_t2lm_info; 1185*5113495bSYour Name uint16_t hw_link_id; 1186*5113495bSYour Name uint16_t disabled_link_bitmap; 1187*5113495bSYour Name struct wlan_t2lm_info info[WLAN_MAX_T2LM_IE]; 1188*5113495bSYour Name }; 1189*5113495bSYour Name 1190*5113495bSYour Name /** 1191*5113495bSYour Name * struct wmi_host_tid_to_link_map_resp - TID-to-link mapping response 1192*5113495bSYour Name * @vdev_id: Vdev id 1193*5113495bSYour Name * @status: Target status for t2lm ie info 1194*5113495bSYour Name * @mapping_switch_tsf: Mapping switch time in tsf for probe response frames 1195*5113495bSYour Name */ 1196*5113495bSYour Name struct wmi_host_tid_to_link_map_resp { 1197*5113495bSYour Name uint8_t vdev_id; 1198*5113495bSYour Name enum wlan_t2lm_status status; 1199*5113495bSYour Name uint8_t mapping_switch_tsf; 1200*5113495bSYour Name }; 1201*5113495bSYour Name 1202*5113495bSYour Name /** 1203*5113495bSYour Name * struct wmi_host_link_state_params - MLO link state params 1204*5113495bSYour Name * @vdev_id: Vdev id 1205*5113495bSYour Name * @mld_mac: mld mac address 1206*5113495bSYour Name */ 1207*5113495bSYour Name struct wmi_host_link_state_params { 1208*5113495bSYour Name uint8_t vdev_id; 1209*5113495bSYour Name uint8_t mld_mac[QDF_MAC_ADDR_SIZE]; 1210*5113495bSYour Name }; 1211*5113495bSYour Name 1212*5113495bSYour Name /** 1213*5113495bSYour Name * struct wmi_host_link_bss_params - link bss params 1214*5113495bSYour Name * @link_id: link id 1215*5113495bSYour Name * @ap_mld_mac: ap mld mac address 1216*5113495bSYour Name * @chan: channel 1217*5113495bSYour Name */ 1218*5113495bSYour Name struct wmi_host_link_bss_params { 1219*5113495bSYour Name uint8_t link_id; 1220*5113495bSYour Name uint8_t ap_mld_mac[QDF_MAC_ADDR_SIZE]; 1221*5113495bSYour Name struct wlan_channel chan; 1222*5113495bSYour Name }; 1223*5113495bSYour Name 1224*5113495bSYour Name #endif /* WLAN_FEATURE_11BE */ 1225*5113495bSYour Name 1226*5113495bSYour Name #ifdef WLAN_FEATURE_11BE_MLO 1227*5113495bSYour Name /** 1228*5113495bSYour Name * struct peer_assoc_mlo_params - MLO assoc params 1229*5113495bSYour Name * @mlo_enabled: indicate is MLO enabled 1230*5113495bSYour Name * @mlo_assoc_link: indicate is the link used to initialize the association 1231*5113495bSYour Name * of mlo connection 1232*5113495bSYour Name * @mlo_primary_umac: indicate is the link on primary UMAC, WIN only flag 1233*5113495bSYour Name * @mlo_logical_link_index_valid: indicate if the logial link index in is valid 1234*5113495bSYour Name * @mlo_peer_id_valid: indicate if the mlo peer id is valid 1235*5113495bSYour Name * @mlo_force_link_inactive: force the peer inactive 1236*5113495bSYour Name * @emlsr_support: indicate if eMLSR supported 1237*5113495bSYour Name * @emlmr_support: indicate if eMLMR supported 1238*5113495bSYour Name * @msd_cap_support: indicate if MSD supported 1239*5113495bSYour Name * @nstr_bitmap_present: indicate if NSTR bitmap is present 1240*5113495bSYour Name * @nstr_bitmap_size: Indicates size of NSTR bitmap, 1241*5113495bSYour Name * as per the 802.11be specification 1242*5113495bSYour Name * @mlo_bridge_peer: indicate if it is bridge peer 1243*5113495bSYour Name * @link_switch_in_progress: Flag to indicate FW MLO peer assoc params are sent 1244*5113495bSYour Name * for the peer due to link switch 1245*5113495bSYour Name * @unused: spare bits 1246*5113495bSYour Name * @mld_mac: MLD mac address 1247*5113495bSYour Name * @logical_link_index: Unique index for links of the mlo. Starts with Zero 1248*5113495bSYour Name * @ml_peer_id: ML peer id if generated by host. Otherwise invalid peer id 1249*5113495bSYour Name * @ieee_link_id: peer link ID 1250*5113495bSYour Name * @emlsr_pad_delay_us: eMLSR Padding Delay from peer in us 1251*5113495bSYour Name * @emlsr_trans_delay_us: eMLSR Transition Delay from peer in us 1252*5113495bSYour Name * @emlmr_delay_us: eMLMR Delay from peer in us 1253*5113495bSYour Name * @trans_timeout_us: EML Transition Timeout in us 1254*5113495bSYour Name * @medium_sync_duration: medium sync duration in us 1255*5113495bSYour Name * @medium_sync_ofdm_ed_thresh: medium sync ofdm threshold in us 1256*5113495bSYour Name * @medium_sync_max_txop_num: Max number of TXOPs 1257*5113495bSYour Name * @max_num_simultaneous_links: Max number of simultaneous links as per 1258*5113495bSYour Name * MLD Capability for ML peer 1259*5113495bSYour Name * @nstr_indication_bitmap: NSTR indication bitmap 1260*5113495bSYour Name * @vdev_id: ID of the vdev object 1261*5113495bSYour Name * @bssid: AP link address 1262*5113495bSYour Name * @chan: Wlan channel information 1263*5113495bSYour Name * @mac_addr: Self mac addresses 1264*5113495bSYour Name * @rec_max_simultaneous_links: Max recommended simultaneous links 1265*5113495bSYour Name */ 1266*5113495bSYour Name struct peer_assoc_mlo_params { 1267*5113495bSYour Name uint32_t mlo_enabled:1, 1268*5113495bSYour Name mlo_assoc_link:1, 1269*5113495bSYour Name mlo_primary_umac:1, 1270*5113495bSYour Name mlo_logical_link_index_valid:1, 1271*5113495bSYour Name mlo_peer_id_valid:1, 1272*5113495bSYour Name mlo_force_link_inactive:1, 1273*5113495bSYour Name emlsr_support:1, 1274*5113495bSYour Name emlmr_support:1, 1275*5113495bSYour Name msd_cap_support:1, 1276*5113495bSYour Name nstr_bitmap_present:1, 1277*5113495bSYour Name nstr_bitmap_size:1, 1278*5113495bSYour Name mlo_bridge_peer:1, 1279*5113495bSYour Name link_switch_in_progress:1, 1280*5113495bSYour Name unused:19; 1281*5113495bSYour Name uint8_t mld_mac[QDF_MAC_ADDR_SIZE]; 1282*5113495bSYour Name uint32_t logical_link_index; 1283*5113495bSYour Name uint32_t ml_peer_id; 1284*5113495bSYour Name uint32_t ieee_link_id; 1285*5113495bSYour Name uint16_t emlsr_pad_delay_us; 1286*5113495bSYour Name uint16_t emlsr_trans_delay_us; 1287*5113495bSYour Name uint16_t emlmr_delay_us; 1288*5113495bSYour Name uint32_t trans_timeout_us; 1289*5113495bSYour Name uint16_t medium_sync_duration; 1290*5113495bSYour Name uint16_t medium_sync_ofdm_ed_thresh; 1291*5113495bSYour Name uint16_t medium_sync_max_txop_num; 1292*5113495bSYour Name uint16_t max_num_simultaneous_links; 1293*5113495bSYour Name uint32_t nstr_indication_bitmap; 1294*5113495bSYour Name uint32_t vdev_id; 1295*5113495bSYour Name struct qdf_mac_addr bssid; 1296*5113495bSYour Name struct wlan_channel chan; 1297*5113495bSYour Name struct qdf_mac_addr mac_addr; 1298*5113495bSYour Name uint8_t rec_max_simultaneous_links; 1299*5113495bSYour Name }; 1300*5113495bSYour Name 1301*5113495bSYour Name /** 1302*5113495bSYour Name * struct ml_partner_info - partner link info 1303*5113495bSYour Name * @vdev_id: vdev id 1304*5113495bSYour Name * @hw_mld_link_id: unique hw link id across SoCs 1305*5113495bSYour Name * @mlo_enabled: indicate is MLO enabled 1306*5113495bSYour Name * @mlo_assoc_link: indicate is the link used to initialize the association 1307*5113495bSYour Name * of mlo connection 1308*5113495bSYour Name * @mlo_primary_umac: indicate is the link on primary UMAC, WIN only flag 1309*5113495bSYour Name * @mlo_logical_link_index_valid: indicate if the logial link index in is valid 1310*5113495bSYour Name * @mlo_peer_id_valid: indicate if the mlo peer id is valid 1311*5113495bSYour Name * @mlo_force_link_inactive: force the peer inactive 1312*5113495bSYour Name * @emlsr_support: indicate if eMLSR supported 1313*5113495bSYour Name * @emlmr_support: indicate if eMLMR supported 1314*5113495bSYour Name * @msd_cap_support: indicate if MSD supported 1315*5113495bSYour Name * @mlo_bridge_peer: indicate if peer is bridge peer 1316*5113495bSYour Name * @unused: spare bits 1317*5113495bSYour Name * @logical_link_index: Unique index for links of the mlo. Starts with Zero 1318*5113495bSYour Name * @link_id: AP Link Id 1319*5113495bSYour Name * @bssid: AP link address 1320*5113495bSYour Name * @chan: Wlan channel information 1321*5113495bSYour Name * @mac_addr: Self mac addresses 1322*5113495bSYour Name */ 1323*5113495bSYour Name struct ml_partner_info { 1324*5113495bSYour Name uint32_t vdev_id; 1325*5113495bSYour Name uint32_t hw_mld_link_id; 1326*5113495bSYour Name uint32_t mlo_enabled:1, 1327*5113495bSYour Name mlo_assoc_link:1, 1328*5113495bSYour Name mlo_primary_umac:1, 1329*5113495bSYour Name mlo_logical_link_index_valid:1, 1330*5113495bSYour Name mlo_peer_id_valid:1, 1331*5113495bSYour Name mlo_force_link_inactive:1, 1332*5113495bSYour Name emlsr_support:1, 1333*5113495bSYour Name emlmr_support:1, 1334*5113495bSYour Name msd_cap_support:1, 1335*5113495bSYour Name mlo_bridge_peer:1, 1336*5113495bSYour Name unused:22; 1337*5113495bSYour Name uint32_t logical_link_index; 1338*5113495bSYour Name uint32_t link_id; 1339*5113495bSYour Name struct qdf_mac_addr bssid; 1340*5113495bSYour Name struct wlan_channel chan; 1341*5113495bSYour Name struct qdf_mac_addr mac_addr; 1342*5113495bSYour Name }; 1343*5113495bSYour Name 1344*5113495bSYour Name /** 1345*5113495bSYour Name * struct peer_assoc_ml_partner_links - ML partner links 1346*5113495bSYour Name * @num_links: Number of links 1347*5113495bSYour Name * @partner_info: Partner link info 1348*5113495bSYour Name */ 1349*5113495bSYour Name struct peer_assoc_ml_partner_links { 1350*5113495bSYour Name uint8_t num_links; 1351*5113495bSYour Name struct ml_partner_info partner_info[WLAN_UMAC_MLO_MAX_VDEVS]; 1352*5113495bSYour Name }; 1353*5113495bSYour Name #endif 1354*5113495bSYour Name /** 1355*5113495bSYour Name * struct peer_assoc_params - peer assoc cmd parameter 1356*5113495bSYour Name * @vdev_id: vdev id 1357*5113495bSYour Name * @peer_new_assoc: peer association type 1358*5113495bSYour Name * @peer_associd: peer association id 1359*5113495bSYour Name * @peer_caps: peer capabalities 1360*5113495bSYour Name * @peer_listen_intval: peer listen interval 1361*5113495bSYour Name * @peer_ht_caps: HT capabalities 1362*5113495bSYour Name * @peer_max_mpdu: 0 : 8k , 1 : 16k, 2 : 32k, 3 : 64k 1363*5113495bSYour Name * @peer_mpdu_density: 3 : 0~7 : 2^(11nAMPDUdensity -4) 1364*5113495bSYour Name * @peer_rate_caps: peer rate capabalities 1365*5113495bSYour Name * @peer_nss: peer nss 1366*5113495bSYour Name * @peer_vht_caps: peer VHT capabilities 1367*5113495bSYour Name * @peer_phymode: peer phymode 1368*5113495bSYour Name * @peer_ht_info: peer HT info 1369*5113495bSYour Name * @peer_legacy_rates: peer legacy rates 1370*5113495bSYour Name * @peer_ht_rates: peer ht rates 1371*5113495bSYour Name * @rx_max_rate: max rx rates 1372*5113495bSYour Name * @rx_mcs_set: rx mcs 1373*5113495bSYour Name * @tx_max_rate: max tx rates 1374*5113495bSYour Name * @tx_mcs_set: tx mcs 1375*5113495bSYour Name * @vht_capable: VHT capabalities 1376*5113495bSYour Name * @min_data_rate: Peer minimum rate 1377*5113495bSYour Name * @tx_max_mcs_nss: max tx MCS and NSS 1378*5113495bSYour Name * @peer_bw_rxnss_override: Peer BW RX NSS overridden or not. 1379*5113495bSYour Name * @is_pmf_enabled: PMF enabled 1380*5113495bSYour Name * @is_wme_set: WME enabled 1381*5113495bSYour Name * @qos_flag: QoS Flags 1382*5113495bSYour Name * @apsd_flag: APSD flags 1383*5113495bSYour Name * @ht_flag: HT flags 1384*5113495bSYour Name * @bw_40: 40 capabale 1385*5113495bSYour Name * @bw_80: 80 capabale 1386*5113495bSYour Name * @bw_160: 160 capabale 1387*5113495bSYour Name * @bw_320: 320 capabale 1388*5113495bSYour Name * @stbc_flag: STBC flag 1389*5113495bSYour Name * @ldpc_flag: LDPC flag 1390*5113495bSYour Name * @static_mimops_flag: statis MIMO PS flags 1391*5113495bSYour Name * @dynamic_mimops_flag: Dynamic MIMO PS flags 1392*5113495bSYour Name * @spatial_mux_flag: spatial MUX flags 1393*5113495bSYour Name * @vht_flag: VHT flags 1394*5113495bSYour Name * @vht_ng_flag: VHT on 11N/G flags 1395*5113495bSYour Name * @need_ptk_4_way: Needs 4 way handshake 1396*5113495bSYour Name * @need_gtk_2_way: Needs 2 way GTK 1397*5113495bSYour Name * @auth_flag: Is peer authenticated 1398*5113495bSYour Name * @safe_mode_enabled: Safe enabled for this peer 1399*5113495bSYour Name * @amsdu_disable: AMSDU disable 1400*5113495bSYour Name * @peer_mac: Peer mac address 1401*5113495bSYour Name * @he_flag: HE flags 1402*5113495bSYour Name * @eht_flag: EHT flags 1403*5113495bSYour Name * @twt_requester: TWT Requester Support bit in Extended Capabilities element 1404*5113495bSYour Name * @twt_responder: TWT Responder Support bit in Extended Capabilities element 1405*5113495bSYour Name * @peer_he_cap_macinfo: Peer HE Cap MAC info 1406*5113495bSYour Name * @peer_he_ops: Peer HE operation info 1407*5113495bSYour Name * @peer_he_cap_phyinfo: Peer HE Cap PHY info 1408*5113495bSYour Name * @peer_he_cap_info_internal: Peer HE internal PHY capability info 1409*5113495bSYour Name * @peer_he_caps_6ghz: Peer HE 6GHz Band Capabilities info 1410*5113495bSYour Name * @peer_he_mcs_count: Peer HE MCS TX/RX MAP count 1411*5113495bSYour Name * @peer_he_rx_mcs_set: Peer HE RX MCS MAP 1412*5113495bSYour Name * @peer_he_tx_mcs_set: Peer HE TX MCS MAP 1413*5113495bSYour Name * @peer_eht_cap_macinfo: Peer EHT Cap MAC info 1414*5113495bSYour Name * @peer_eht_ops: Peer EHT operation info 1415*5113495bSYour Name * @peer_eht_cap_phyinfo: Peer EHT Cap PHY info 1416*5113495bSYour Name * @peer_eht_mcs_count: Peer EHT MCS TX/RX MAP count 1417*5113495bSYour Name * @peer_eht_rx_mcs_set: Peer EHT RX MCS MAP 1418*5113495bSYour Name * @peer_eht_tx_mcs_set: Peer EHT TX MCS MAP 1419*5113495bSYour Name * @peer_eht_ppet: Peer EHT PPET info 1420*5113495bSYour Name * @puncture_bitmap: 11be static puncture bitmap 1421*5113495bSYour Name * @peer_ppet: Peer HE PPET info 1422*5113495bSYour Name * @peer_bsscolor_rept_info: 1423*5113495bSYour Name * @peer_bss_max_idle_option: Peer BSS Max Idle option update 1424*5113495bSYour Name * @akm: AKM info 1425*5113495bSYour Name * @mlo_params: MLO assoc params 1426*5113495bSYour Name * @ml_links: MLO partner links 1427*5113495bSYour Name * @qcn_node_flag: if node is QCN node 1428*5113495bSYour Name * @mesh_node_flag: if node is 4 addr node 1429*5113495bSYour Name * @is_assoc_vdev: true if assoc vdev 1430*5113495bSYour Name * @peer_dms_capable: is peer DMS capable 1431*5113495bSYour Name * @reserved: spare bits 1432*5113495bSYour Name * @t2lm_params: TID-to-link mapping params 1433*5113495bSYour Name */ 1434*5113495bSYour Name struct peer_assoc_params { 1435*5113495bSYour Name uint32_t vdev_id; 1436*5113495bSYour Name uint32_t peer_new_assoc; 1437*5113495bSYour Name uint32_t peer_associd; 1438*5113495bSYour Name uint32_t peer_caps; 1439*5113495bSYour Name uint32_t peer_listen_intval; 1440*5113495bSYour Name uint32_t peer_ht_caps; 1441*5113495bSYour Name uint32_t peer_max_mpdu; 1442*5113495bSYour Name uint32_t peer_mpdu_density; 1443*5113495bSYour Name uint32_t peer_rate_caps; 1444*5113495bSYour Name uint32_t peer_nss; 1445*5113495bSYour Name uint32_t peer_vht_caps; 1446*5113495bSYour Name uint32_t peer_phymode; 1447*5113495bSYour Name uint32_t peer_ht_info[2]; 1448*5113495bSYour Name target_rate_set peer_legacy_rates; 1449*5113495bSYour Name target_rate_set peer_ht_rates; 1450*5113495bSYour Name uint32_t rx_max_rate; 1451*5113495bSYour Name uint32_t rx_mcs_set; 1452*5113495bSYour Name uint32_t tx_max_rate; 1453*5113495bSYour Name uint32_t tx_mcs_set; 1454*5113495bSYour Name uint8_t vht_capable; 1455*5113495bSYour Name uint8_t min_data_rate; 1456*5113495bSYour Name uint32_t peer_bw_rxnss_override; 1457*5113495bSYour Name uint32_t tx_max_mcs_nss; 1458*5113495bSYour Name uint32_t is_pmf_enabled:1, 1459*5113495bSYour Name is_wme_set:1, 1460*5113495bSYour Name qos_flag:1, 1461*5113495bSYour Name apsd_flag:1, 1462*5113495bSYour Name ht_flag:1, 1463*5113495bSYour Name bw_40:1, 1464*5113495bSYour Name bw_80:1, 1465*5113495bSYour Name bw_160:1, 1466*5113495bSYour Name #ifdef WLAN_FEATURE_11BE 1467*5113495bSYour Name bw_320:1, 1468*5113495bSYour Name #endif 1469*5113495bSYour Name stbc_flag:1, 1470*5113495bSYour Name ldpc_flag:1, 1471*5113495bSYour Name static_mimops_flag:1, 1472*5113495bSYour Name dynamic_mimops_flag:1, 1473*5113495bSYour Name spatial_mux_flag:1, 1474*5113495bSYour Name vht_flag:1, 1475*5113495bSYour Name vht_ng_flag:1, 1476*5113495bSYour Name need_ptk_4_way:1, 1477*5113495bSYour Name need_gtk_2_way:1, 1478*5113495bSYour Name auth_flag:1, 1479*5113495bSYour Name safe_mode_enabled:1, 1480*5113495bSYour Name amsdu_disable:1, 1481*5113495bSYour Name p2p_capable_sta:1, 1482*5113495bSYour Name inter_bss_peer:1; 1483*5113495bSYour Name /* Use common structure */ 1484*5113495bSYour Name uint8_t peer_mac[QDF_MAC_ADDR_SIZE]; 1485*5113495bSYour Name bool he_flag; 1486*5113495bSYour Name #ifdef WLAN_FEATURE_11BE 1487*5113495bSYour Name bool eht_flag; 1488*5113495bSYour Name #endif 1489*5113495bSYour Name bool twt_requester; 1490*5113495bSYour Name bool twt_responder; 1491*5113495bSYour Name uint32_t peer_he_cap_macinfo[WMI_HOST_MAX_HECAP_MAC_SIZE]; 1492*5113495bSYour Name uint32_t peer_he_ops; 1493*5113495bSYour Name uint32_t peer_he_cap_phyinfo[WMI_HOST_MAX_HECAP_PHY_SIZE]; 1494*5113495bSYour Name uint32_t peer_he_cap_info_internal; 1495*5113495bSYour Name uint32_t peer_he_caps_6ghz; 1496*5113495bSYour Name uint32_t peer_he_mcs_count; 1497*5113495bSYour Name uint32_t peer_he_rx_mcs_set[WMI_HOST_MAX_HE_RATE_SET]; 1498*5113495bSYour Name uint32_t peer_he_tx_mcs_set[WMI_HOST_MAX_HE_RATE_SET]; 1499*5113495bSYour Name #ifdef WLAN_FEATURE_11BE 1500*5113495bSYour Name uint32_t peer_eht_cap_macinfo[WMI_HOST_MAX_EHTCAP_MAC_SIZE]; 1501*5113495bSYour Name uint32_t peer_eht_ops; 1502*5113495bSYour Name uint32_t peer_eht_cap_phyinfo[WMI_HOST_MAX_EHTCAP_PHY_SIZE]; 1503*5113495bSYour Name uint32_t peer_eht_mcs_count; 1504*5113495bSYour Name uint32_t peer_eht_rx_mcs_set[WMI_HOST_MAX_EHT_RATE_SET]; 1505*5113495bSYour Name uint32_t peer_eht_tx_mcs_set[WMI_HOST_MAX_EHT_RATE_SET]; 1506*5113495bSYour Name struct wmi_host_ppe_threshold peer_eht_ppet; 1507*5113495bSYour Name uint16_t puncture_bitmap; 1508*5113495bSYour Name #endif 1509*5113495bSYour Name struct wmi_host_ppe_threshold peer_ppet; 1510*5113495bSYour Name u_int8_t peer_bsscolor_rept_info; 1511*5113495bSYour Name uint32_t peer_bss_max_idle_option; 1512*5113495bSYour Name uint16_t akm; 1513*5113495bSYour Name #ifdef WLAN_FEATURE_11BE_MLO 1514*5113495bSYour Name struct peer_assoc_mlo_params mlo_params; 1515*5113495bSYour Name struct peer_assoc_ml_partner_links ml_links; 1516*5113495bSYour Name bool qcn_node_flag; 1517*5113495bSYour Name bool mesh_node_flag; 1518*5113495bSYour Name bool is_assoc_vdev; 1519*5113495bSYour Name #endif 1520*5113495bSYour Name uint8_t peer_dms_capable:1, 1521*5113495bSYour Name reserved:7; 1522*5113495bSYour Name #ifdef WLAN_FEATURE_11BE 1523*5113495bSYour Name struct wmi_host_tid_to_link_map_params t2lm_params; 1524*5113495bSYour Name #endif 1525*5113495bSYour Name }; 1526*5113495bSYour Name 1527*5113495bSYour Name /** 1528*5113495bSYour Name * struct ap_ps_params - ap ps cmd parameter 1529*5113495bSYour Name * @vdev_id: vdev id 1530*5113495bSYour Name * @param: ap ps parameter 1531*5113495bSYour Name * @value: ap ps parameter value 1532*5113495bSYour Name */ 1533*5113495bSYour Name struct ap_ps_params { 1534*5113495bSYour Name uint32_t vdev_id; 1535*5113495bSYour Name uint32_t param; 1536*5113495bSYour Name uint32_t value; 1537*5113495bSYour Name }; 1538*5113495bSYour Name 1539*5113495bSYour Name #define WMI_HOST_SCAN_CHAN_FREQ_SHIFT 0 1540*5113495bSYour Name #define WMI_HOST_SCAN_CHAN_FREQ_MASK 0xffff 1541*5113495bSYour Name #define WMI_HOST_SCAN_CHAN_MODE_SHIFT 16 1542*5113495bSYour Name #define WMI_HOST_SCAN_CHAN_MODE_MASK 0xff 1543*5113495bSYour Name 1544*5113495bSYour Name #define WMI_HOST_MAX_CHANS_PER_WMI_CMD 58 1545*5113495bSYour Name 1546*5113495bSYour Name /** 1547*5113495bSYour Name * struct scan_chan_list_params - scan channel list cmd parameter 1548*5113495bSYour Name * @pdev_id: pdev_id 1549*5113495bSYour Name * @num_chan: no of scan channels 1550*5113495bSYour Name * @nallchans: nall chans 1551*5113495bSYour Name * @append: append to existing chan list 1552*5113495bSYour Name * @max_bw_support_present: max BW support present 1553*5113495bSYour Name * @ch_param: pointer to channel_paramw 1554*5113495bSYour Name */ 1555*5113495bSYour Name struct scan_chan_list_params { 1556*5113495bSYour Name uint32_t pdev_id; 1557*5113495bSYour Name uint16_t nallchans; 1558*5113495bSYour Name bool append; 1559*5113495bSYour Name bool max_bw_support_present; 1560*5113495bSYour Name QDF_FLEX_ARRAY(struct channel_param, ch_param); 1561*5113495bSYour Name }; 1562*5113495bSYour Name 1563*5113495bSYour Name #ifdef QCA_SUPPORT_AGILE_DFS 1564*5113495bSYour Name /** 1565*5113495bSYour Name * struct vdev_adfs_ch_cfg_params - Agile dfs channel set request params 1566*5113495bSYour Name * @vdev_id: Vdev identifier 1567*5113495bSYour Name * @ocac_mode: Off Channel CAC mode, see WMI_ADFS_OCAC_MODE 1568*5113495bSYour Name * @min_duration_ms: Minimum Off channel CAC duration 1569*5113495bSYour Name * @max_duration_ms: Maximum Off channel CAC duration 1570*5113495bSYour Name * @chan_freq: channel number of precac channel 1571*5113495bSYour Name * @chan_width: Precac Channel width 1572*5113495bSYour Name * @center_freq1: Agile preCAC channel frequency in MHz for 20/40/80/160 1573*5113495bSYour Name * and left center frequency(5690MHz) for restricted 80p80. 1574*5113495bSYour Name * @center_freq2: Second segment Agile frequency in Mhz, if applicable. 0 for 1575*5113495bSYour Name * 20/40/80/160 and right center frequency(5775MHz) for 1576*5113495bSYour Name * restricted 80p80. 1577*5113495bSYour Name */ 1578*5113495bSYour Name struct vdev_adfs_ch_cfg_params { 1579*5113495bSYour Name uint32_t vdev_id; 1580*5113495bSYour Name uint32_t ocac_mode; 1581*5113495bSYour Name uint32_t min_duration_ms; 1582*5113495bSYour Name uint32_t max_duration_ms; 1583*5113495bSYour Name uint32_t chan_freq; 1584*5113495bSYour Name uint32_t chan_width; 1585*5113495bSYour Name uint32_t center_freq1; 1586*5113495bSYour Name uint32_t center_freq2; 1587*5113495bSYour Name }; 1588*5113495bSYour Name 1589*5113495bSYour Name /** 1590*5113495bSYour Name * struct vdev_adfs_abort_params - Agile dfs ocac abort command to stop precac. 1591*5113495bSYour Name * @vdev_id: Vdev identifier 1592*5113495bSYour Name */ 1593*5113495bSYour Name struct vdev_adfs_abort_params { 1594*5113495bSYour Name uint32_t vdev_id; 1595*5113495bSYour Name }; 1596*5113495bSYour Name #endif 1597*5113495bSYour Name /** 1598*5113495bSYour Name * struct fw_hang_params - fw hang command parameters 1599*5113495bSYour Name * @type: 0:unused 1: ASSERT, 2:not respond detect command, 3:simulate ep-full 1600*5113495bSYour Name * @delay_time_ms: 0xffffffff means the simulate will delay for random time (0 ~0xffffffff ms) 1601*5113495bSYour Name */ 1602*5113495bSYour Name struct fw_hang_params { 1603*5113495bSYour Name uint32_t type; 1604*5113495bSYour Name uint32_t delay_time_ms; 1605*5113495bSYour Name }; 1606*5113495bSYour Name 1607*5113495bSYour Name /** 1608*5113495bSYour Name * struct pdev_utf_params - pdev utf command parameters 1609*5113495bSYour Name * @utf_payload: 1610*5113495bSYour Name * @len: 1611*5113495bSYour Name * @is_ar900b: is it 900b target 1612*5113495bSYour Name */ 1613*5113495bSYour Name struct pdev_utf_params { 1614*5113495bSYour Name uint8_t *utf_payload; 1615*5113495bSYour Name uint32_t len; 1616*5113495bSYour Name bool is_ar900b; 1617*5113495bSYour Name }; 1618*5113495bSYour Name 1619*5113495bSYour Name /*Adding this due to dependency on wmi_unified.h 1620*5113495bSYour Name */ 1621*5113495bSYour Name typedef struct { 1622*5113495bSYour Name uint32_t len; 1623*5113495bSYour Name uint32_t msgref; 1624*5113495bSYour Name uint32_t segmentInfo; 1625*5113495bSYour Name } QVIT_SEG_HDR_INFO_STRUCT; 1626*5113495bSYour Name 1627*5113495bSYour Name /** 1628*5113495bSYour Name * struct crash_inject - crash inject command parameters 1629*5113495bSYour Name * @type: crash inject type 1630*5113495bSYour Name * @delay_time_ms: time in milliseconds for FW to delay the crash 1631*5113495bSYour Name */ 1632*5113495bSYour Name struct crash_inject { 1633*5113495bSYour Name uint32_t type; 1634*5113495bSYour Name uint32_t delay_time_ms; 1635*5113495bSYour Name }; 1636*5113495bSYour Name 1637*5113495bSYour Name /** 1638*5113495bSYour Name * struct dbglog_params - fw deboglog command parameters 1639*5113495bSYour Name * @param: command parameter 1640*5113495bSYour Name * @val: parameter value 1641*5113495bSYour Name * @module_id_bitmap: fixed length module id bitmap 1642*5113495bSYour Name * @bitmap_len: module id bitmap length 1643*5113495bSYour Name * @cfgvalid: cfgvalid 1644*5113495bSYour Name */ 1645*5113495bSYour Name struct dbglog_params { 1646*5113495bSYour Name uint32_t param; 1647*5113495bSYour Name uint32_t val; 1648*5113495bSYour Name uint32_t *module_id_bitmap; 1649*5113495bSYour Name uint32_t bitmap_len; 1650*5113495bSYour Name uint32_t cfgvalid[3]; 1651*5113495bSYour Name }; 1652*5113495bSYour Name 1653*5113495bSYour Name /** 1654*5113495bSYour Name * struct seg_hdr_info - header info 1655*5113495bSYour Name * @len: length 1656*5113495bSYour Name * @msgref: message reference 1657*5113495bSYour Name * @segmentInfo: segment info 1658*5113495bSYour Name * @pad: padding 1659*5113495bSYour Name */ 1660*5113495bSYour Name struct seg_hdr_info { 1661*5113495bSYour Name uint32_t len; 1662*5113495bSYour Name uint32_t msgref; 1663*5113495bSYour Name uint32_t segmentInfo; 1664*5113495bSYour Name uint32_t pad; 1665*5113495bSYour Name }; 1666*5113495bSYour Name 1667*5113495bSYour Name /** 1668*5113495bSYour Name * struct tx_send_params - TX parameters 1669*5113495bSYour Name * @pwr: Tx frame transmission power 1670*5113495bSYour Name * @mcs_mask: Modulation and coding index mask for transmission 1671*5113495bSYour Name * bit 0 -> CCK 1 Mbps rate is allowed 1672*5113495bSYour Name * bit 1 -> CCK 2 Mbps rate is allowed 1673*5113495bSYour Name * bit 2 -> CCK 5.5 Mbps rate is allowed 1674*5113495bSYour Name * bit 3 -> CCK 11 Mbps rate is allowed 1675*5113495bSYour Name * bit 4 -> OFDM BPSK modulation, 1/2 coding rate is allowed 1676*5113495bSYour Name * bit 5 -> OFDM BPSK modulation, 3/4 coding rate is allowed 1677*5113495bSYour Name * bit 6 -> OFDM QPSK modulation, 1/2 coding rate is allowed 1678*5113495bSYour Name * bit 7 -> OFDM QPSK modulation, 3/4 coding rate is allowed 1679*5113495bSYour Name * bit 8 -> OFDM 16-QAM modulation, 1/2 coding rate is allowed 1680*5113495bSYour Name * bit 9 -> OFDM 16-QAM modulation, 3/4 coding rate is allowed 1681*5113495bSYour Name * bit 10 -> OFDM 64-QAM modulation, 2/3 coding rate is allowed 1682*5113495bSYour Name * bit 11 -> OFDM 64-QAM modulation, 3/4 coding rate is allowed 1683*5113495bSYour Name * @nss_mask: Spatial streams permitted 1684*5113495bSYour Name * bit 0: if set, Nss = 1 (non-MIMO) is permitted 1685*5113495bSYour Name * bit 1: if set, Nss = 2 (2x2 MIMO) is permitted 1686*5113495bSYour Name * bit 2: if set, Nss = 3 (3x3 MIMO) is permitted 1687*5113495bSYour Name * bit 3: if set, Nss = 4 (4x4 MIMO) is permitted 1688*5113495bSYour Name * bit 4: if set, Nss = 5 (5x5 MIMO) is permitted 1689*5113495bSYour Name * bit 5: if set, Nss = 6 (6x6 MIMO) is permitted 1690*5113495bSYour Name * bit 6: if set, Nss = 7 (7x7 MIMO) is permitted 1691*5113495bSYour Name * bit 7: if set, Nss = 8 (8x8 MIMO) is permitted 1692*5113495bSYour Name * If no bits are set, target will choose what NSS type to use 1693*5113495bSYour Name * @retry_limit: Maximum number of retries before ACK 1694*5113495bSYour Name * @chain_mask: Chains to be used for transmission 1695*5113495bSYour Name * @bw_mask: Bandwidth to be used for transmission 1696*5113495bSYour Name * bit 0 -> 5MHz 1697*5113495bSYour Name * bit 1 -> 10MHz 1698*5113495bSYour Name * bit 2 -> 20MHz 1699*5113495bSYour Name * bit 3 -> 40MHz 1700*5113495bSYour Name * bit 4 -> 80MHz 1701*5113495bSYour Name * bit 5 -> 160MHz 1702*5113495bSYour Name * bit 6 -> 80_80MHz 1703*5113495bSYour Name * @preamble_type: Preamble types for transmission 1704*5113495bSYour Name * bit 0: if set, OFDM 1705*5113495bSYour Name * bit 1: if set, CCK 1706*5113495bSYour Name * bit 2: if set, HT 1707*5113495bSYour Name * bit 3: if set, VHT 1708*5113495bSYour Name * bit 4: if set, HE 1709*5113495bSYour Name * @frame_type: Data or Management frame 1710*5113495bSYour Name * Data:1 Mgmt:0 1711*5113495bSYour Name * @cfr_enable: flag to enable CFR capture 1712*5113495bSYour Name * 0:disable 1:enable 1713*5113495bSYour Name * @en_beamforming: flag to enable tx beamforming 1714*5113495bSYour Name * 0:disable 1:enable 1715*5113495bSYour Name * @retry_limit_ext: 3 bits of extended retry limit. 1716*5113495bSYour Name * Combined with 4 bits "retry_limit" 1717*5113495bSYour Name * to create 7 bits hw retry count. 1718*5113495bSYour Name * Maximum 127 retries for specific frames. 1719*5113495bSYour Name * @reserved: Spare bits 1720*5113495bSYour Name */ 1721*5113495bSYour Name struct tx_send_params { 1722*5113495bSYour Name uint32_t pwr:8, 1723*5113495bSYour Name mcs_mask:12, 1724*5113495bSYour Name nss_mask:8, 1725*5113495bSYour Name retry_limit:4; 1726*5113495bSYour Name uint32_t chain_mask:8, 1727*5113495bSYour Name bw_mask:7, 1728*5113495bSYour Name preamble_type:5, 1729*5113495bSYour Name frame_type:1, 1730*5113495bSYour Name cfr_enable:1, 1731*5113495bSYour Name en_beamforming:1, 1732*5113495bSYour Name retry_limit_ext:3, 1733*5113495bSYour Name reserved:6; 1734*5113495bSYour Name }; 1735*5113495bSYour Name 1736*5113495bSYour Name /** 1737*5113495bSYour Name * struct wmi_mgmt_params - wmi mgmt cmd parameters 1738*5113495bSYour Name * @tx_frame: management tx frame 1739*5113495bSYour Name * @frm_len: frame length 1740*5113495bSYour Name * @vdev_id: vdev id 1741*5113495bSYour Name * @tx_type: type of management frame (determines what callback to use) 1742*5113495bSYour Name * @chanfreq: channel frequency 1743*5113495bSYour Name * @desc_id: descriptor id relyaed back by target 1744*5113495bSYour Name * @pdata: frame data 1745*5113495bSYour Name * @macaddr: macaddr of peer 1746*5113495bSYour Name * @qdf_ctx: qdf context for qdf_nbuf_map 1747*5113495bSYour Name * @tx_param: TX send parameters 1748*5113495bSYour Name * @tx_params_valid: Flag that indicates if TX params are valid 1749*5113495bSYour Name * @use_6mbps: specify whether management frame to transmit should 1750*5113495bSYour Name * @tx_flags: additional configuration flags for mgmt frames 1751*5113495bSYour Name * use 6 Mbps rather than 1 Mbps min rate(for 5GHz band or P2P) 1752*5113495bSYour Name * @peer_rssi: peer RSSI value 1753*5113495bSYour Name * @mlo_link_agnostic: if true, can send on any active link 1754*5113495bSYour Name */ 1755*5113495bSYour Name struct wmi_mgmt_params { 1756*5113495bSYour Name void *tx_frame; 1757*5113495bSYour Name uint16_t frm_len; 1758*5113495bSYour Name uint8_t vdev_id; 1759*5113495bSYour Name uint8_t tx_type; 1760*5113495bSYour Name uint16_t chanfreq; 1761*5113495bSYour Name uint16_t desc_id; 1762*5113495bSYour Name void *pdata; 1763*5113495bSYour Name uint8_t *macaddr; 1764*5113495bSYour Name void *qdf_ctx; 1765*5113495bSYour Name struct tx_send_params tx_param; 1766*5113495bSYour Name bool tx_params_valid; 1767*5113495bSYour Name uint8_t use_6mbps; 1768*5113495bSYour Name uint32_t tx_flags; 1769*5113495bSYour Name int8_t peer_rssi; 1770*5113495bSYour Name uint8_t mlo_link_agnostic; 1771*5113495bSYour Name }; 1772*5113495bSYour Name 1773*5113495bSYour Name /** 1774*5113495bSYour Name * struct wmi_offchan_data_tx_params - wmi offchan data tx cmd parameters 1775*5113495bSYour Name * @tx_frame: management tx frame 1776*5113495bSYour Name * @frm_len: frame length 1777*5113495bSYour Name * @vdev_id: vdev id 1778*5113495bSYour Name * @tx_params_valid: Flag that indicates if TX params are valid 1779*5113495bSYour Name * @chanfreq: channel frequency 1780*5113495bSYour Name * @desc_id: descriptor id relyaed back by target 1781*5113495bSYour Name * @pdata: frame data 1782*5113495bSYour Name * @macaddr: macaddr of peer 1783*5113495bSYour Name * @qdf_ctx: qdf context for qdf_nbuf_map 1784*5113495bSYour Name * @tx_param: TX send parameters 1785*5113495bSYour Name */ 1786*5113495bSYour Name struct wmi_offchan_data_tx_params { 1787*5113495bSYour Name void *tx_frame; 1788*5113495bSYour Name uint16_t frm_len; 1789*5113495bSYour Name uint8_t vdev_id; 1790*5113495bSYour Name bool tx_params_valid; 1791*5113495bSYour Name uint16_t chanfreq; 1792*5113495bSYour Name uint16_t desc_id; 1793*5113495bSYour Name void *pdata; 1794*5113495bSYour Name uint8_t *macaddr; 1795*5113495bSYour Name void *qdf_ctx; 1796*5113495bSYour Name struct tx_send_params tx_param; 1797*5113495bSYour Name }; 1798*5113495bSYour Name 1799*5113495bSYour Name /** 1800*5113495bSYour Name * struct sta_uapsd_params - uapsd auto trig params 1801*5113495bSYour Name * @wmm_ac: WMM access category from 0 to 3 1802*5113495bSYour Name * @user_priority: User priority to use in trigger frames 1803*5113495bSYour Name * @service_interval: service interval 1804*5113495bSYour Name * @suspend_interval: suspend interval 1805*5113495bSYour Name * @delay_interval: delay interval 1806*5113495bSYour Name */ 1807*5113495bSYour Name struct sta_uapsd_params { 1808*5113495bSYour Name uint32_t wmm_ac; 1809*5113495bSYour Name uint32_t user_priority; 1810*5113495bSYour Name uint32_t service_interval; 1811*5113495bSYour Name uint32_t suspend_interval; 1812*5113495bSYour Name uint32_t delay_interval; 1813*5113495bSYour Name }; 1814*5113495bSYour Name 1815*5113495bSYour Name /** 1816*5113495bSYour Name * struct sta_uapsd_trig_params - uapsd trigger parameter 1817*5113495bSYour Name * @vdevid: vdev id 1818*5113495bSYour Name * @peer_addr: peer address 1819*5113495bSYour Name * @num_ac: no of access category 1820*5113495bSYour Name * @auto_triggerparam: trigger parameters 1821*5113495bSYour Name */ 1822*5113495bSYour Name struct sta_uapsd_trig_params { 1823*5113495bSYour Name uint32_t vdevid; 1824*5113495bSYour Name uint8_t peer_addr[QDF_MAC_ADDR_SIZE]; 1825*5113495bSYour Name uint32_t num_ac; 1826*5113495bSYour Name struct sta_uapsd_params *auto_triggerparam; 1827*5113495bSYour Name }; 1828*5113495bSYour Name 1829*5113495bSYour Name #define WMI_NUM_AC (4) 1830*5113495bSYour Name #define WMI_MAX_NUM_AC 4 1831*5113495bSYour Name 1832*5113495bSYour Name 1833*5113495bSYour Name enum wmi_peer_rate_report_cond_phy_type { 1834*5113495bSYour Name WMI_PEER_RATE_REPORT_COND_11B = 0, 1835*5113495bSYour Name WMI_PEER_RATE_REPORT_COND_11A_G, 1836*5113495bSYour Name WMI_PEER_RATE_REPORT_COND_11N, 1837*5113495bSYour Name WMI_PEER_RATE_REPORT_COND_11AC, 1838*5113495bSYour Name WMI_PEER_RATE_REPORT_COND_MAX_NUM 1839*5113495bSYour Name }; 1840*5113495bSYour Name 1841*5113495bSYour Name /** 1842*5113495bSYour Name * struct report_rate_delta - peer specific parameters 1843*5113495bSYour Name * @percent: percentage 1844*5113495bSYour Name * @delta_min: rate min delta 1845*5113495bSYour Name */ 1846*5113495bSYour Name struct report_rate_delta { 1847*5113495bSYour Name uint32_t percent; /* in unit of 12.5% */ 1848*5113495bSYour Name uint32_t delta_min; /* in unit of Mbps */ 1849*5113495bSYour Name }; 1850*5113495bSYour Name 1851*5113495bSYour Name /** 1852*5113495bSYour Name * struct report_rate_per_phy - per phy report parameters 1853*5113495bSYour Name * @cond_flags: condition flag val 1854*5113495bSYour Name * @delta: rate delta 1855*5113495bSYour Name * @report_rate_threshold: rate threshold 1856*5113495bSYour Name */ 1857*5113495bSYour Name struct report_rate_per_phy { 1858*5113495bSYour Name /* 1859*5113495bSYour Name * PEER_RATE_REPORT_COND_FLAG_DELTA, 1860*5113495bSYour Name * PEER_RATE_REPORT_COND_FLAG_THRESHOLD 1861*5113495bSYour Name * Any of these two conditions or both of 1862*5113495bSYour Name * them can be set. 1863*5113495bSYour Name */ 1864*5113495bSYour Name uint32_t cond_flags; 1865*5113495bSYour Name struct report_rate_delta delta; 1866*5113495bSYour Name /* 1867*5113495bSYour Name * In unit of Mbps. There are at most 4 thresholds 1868*5113495bSYour Name * If the threshold count is less than 4, set zero to 1869*5113495bSYour Name * the one following the last threshold 1870*5113495bSYour Name */ 1871*5113495bSYour Name uint32_t report_rate_threshold[WMI_MAX_NUM_OF_RATE_THRESH]; 1872*5113495bSYour Name }; 1873*5113495bSYour Name 1874*5113495bSYour Name /** 1875*5113495bSYour Name * struct wmi_peer_rate_report_params - peer rate report parameters 1876*5113495bSYour Name * @rate_report_enable: enable rate report param 1877*5113495bSYour Name * @backoff_time: backoff time in unit of msecond 1878*5113495bSYour Name * @timer_period: timer in unit of msecond 1879*5113495bSYour Name * @report_per_phy: report per wmi_peer_rate_report_cond_phy_type 1880*5113495bSYour Name */ 1881*5113495bSYour Name struct wmi_peer_rate_report_params { 1882*5113495bSYour Name uint32_t rate_report_enable; 1883*5113495bSYour Name uint32_t backoff_time; 1884*5113495bSYour Name uint32_t timer_period; 1885*5113495bSYour Name struct report_rate_per_phy report_per_phy[ 1886*5113495bSYour Name WMI_PEER_RATE_REPORT_COND_MAX_NUM]; 1887*5113495bSYour Name 1888*5113495bSYour Name }; 1889*5113495bSYour Name 1890*5113495bSYour Name /** 1891*5113495bSYour Name * enum thermal_mgmt_action_code - thermal mgmt action code 1892*5113495bSYour Name * @THERMAL_MGMT_ACTION_DEFAULT: target chooses what action to take, based 1893*5113495bSYour Name * on its default thermal management policy. 1894*5113495bSYour Name * @THERMAL_MGMT_ACTION_HALT_TRAFFIC: If the temperature rises above 1895*5113495bSYour Name * configured upper thresh degreeC, the target will halt tx. 1896*5113495bSYour Name * @THERMAL_MGMT_ACTION_NOTIFY_HOST: the target will notify the host 1897*5113495bSYour Name * if the temperature either rises above configured upper thresh degreeC or 1898*5113495bSYour Name * falls below lower thresh degreeC. 1899*5113495bSYour Name * @THERMAL_MGMT_ACTION_CHAINSCALING: The target will switch tx chain 1900*5113495bSYour Name * mask from multi chains to single chain if the temperature rises 1901*5113495bSYour Name * above upper thresh degreeC. 1902*5113495bSYour Name * The target will switch tx chainmask back to multi chains if the 1903*5113495bSYour Name * temperature drops below upper_thresh_degreeC. 1904*5113495bSYour Name */ 1905*5113495bSYour Name enum thermal_mgmt_action_code { 1906*5113495bSYour Name THERMAL_MGMT_ACTION_DEFAULT, 1907*5113495bSYour Name THERMAL_MGMT_ACTION_HALT_TRAFFIC, 1908*5113495bSYour Name THERMAL_MGMT_ACTION_NOTIFY_HOST, 1909*5113495bSYour Name THERMAL_MGMT_ACTION_CHAINSCALING, 1910*5113495bSYour Name }; 1911*5113495bSYour Name 1912*5113495bSYour Name /** 1913*5113495bSYour Name * struct thermal_cmd_params - thermal command parameters 1914*5113495bSYour Name * @min_temp: minimum temperature 1915*5113495bSYour Name * @max_temp: maximum temperature 1916*5113495bSYour Name * @thermal_enable: thermal enable 1917*5113495bSYour Name * @thermal_action: thermal action code 1918*5113495bSYour Name */ 1919*5113495bSYour Name struct thermal_cmd_params { 1920*5113495bSYour Name uint16_t min_temp; 1921*5113495bSYour Name uint16_t max_temp; 1922*5113495bSYour Name uint8_t thermal_enable; 1923*5113495bSYour Name enum thermal_mgmt_action_code thermal_action; 1924*5113495bSYour Name }; 1925*5113495bSYour Name 1926*5113495bSYour Name #define WMI_LRO_IPV4_SEED_ARR_SZ 5 1927*5113495bSYour Name #define WMI_LRO_IPV6_SEED_ARR_SZ 11 1928*5113495bSYour Name 1929*5113495bSYour Name /** 1930*5113495bSYour Name * struct wmi_lro_config_cmd_t - set LRO init parameters 1931*5113495bSYour Name * @lro_enable: indicates whether lro is enabled 1932*5113495bSYour Name * @tcp_flag: If the TCP flags from the packet do not match 1933*5113495bSYour Name * the values in this field after masking with TCP flags mask 1934*5113495bSYour Name * below, packet is not LRO eligible 1935*5113495bSYour Name * @tcp_flag_mask: field for comparing the TCP values provided 1936*5113495bSYour Name * above with the TCP flags field in the received packet 1937*5113495bSYour Name * @toeplitz_hash_ipv4: contains seed needed to compute the flow id 1938*5113495bSYour Name * 5-tuple toeplitz hash for ipv4 packets 1939*5113495bSYour Name * @toeplitz_hash_ipv6: contains seed needed to compute the flow id 1940*5113495bSYour Name * 5-tuple toeplitz hash for ipv6 packets 1941*5113495bSYour Name * @pdev_id: radio on which lro hash is configured 1942*5113495bSYour Name */ 1943*5113495bSYour Name struct wmi_lro_config_cmd_t { 1944*5113495bSYour Name uint32_t lro_enable; 1945*5113495bSYour Name uint32_t tcp_flag:9, 1946*5113495bSYour Name tcp_flag_mask:9; 1947*5113495bSYour Name uint32_t toeplitz_hash_ipv4[WMI_LRO_IPV4_SEED_ARR_SZ]; 1948*5113495bSYour Name uint32_t toeplitz_hash_ipv6[WMI_LRO_IPV6_SEED_ARR_SZ]; 1949*5113495bSYour Name uint32_t pdev_id; 1950*5113495bSYour Name }; 1951*5113495bSYour Name 1952*5113495bSYour Name #ifdef WLAN_FEATURE_11BE_MLO 1953*5113495bSYour Name /** 1954*5113495bSYour Name * struct mlo_prb_resp_tmpl_ml_info - Impacted link critical update information 1955*5113495bSYour Name * @hw_link_id: Unique hw link id across SoCs 1956*5113495bSYour Name * CU vdev map for the Critical update category-1 (Inclusion of CU IES) 1957*5113495bSYour Name * @cu_vdev_map_cat1_lo: bits 31:0 to represent vdev ids 0 to 31 1958*5113495bSYour Name * @cu_vdev_map_cat1_hi: bits 63:32 to represent vdev ids 32 to 63 1959*5113495bSYour Name * CU vdev map for the Critical update category-2 (modification of CU IES) 1960*5113495bSYour Name * @cu_vdev_map_cat2_lo: bits 31:0 to represent vdev ids 0 to 31 1961*5113495bSYour Name * @cu_vdev_map_cat2_hi: bits 63:32 to represent vdev ids 32 to 63 1962*5113495bSYour Name */ 1963*5113495bSYour Name struct mlo_prb_resp_tmpl_ml_info { 1964*5113495bSYour Name uint32_t hw_link_id; 1965*5113495bSYour Name uint32_t cu_vdev_map_cat1_lo; 1966*5113495bSYour Name uint32_t cu_vdev_map_cat1_hi; 1967*5113495bSYour Name uint32_t cu_vdev_map_cat2_lo; 1968*5113495bSYour Name uint32_t cu_vdev_map_cat2_hi; 1969*5113495bSYour Name }; 1970*5113495bSYour Name #endif 1971*5113495bSYour Name 1972*5113495bSYour Name /** 1973*5113495bSYour Name * struct wmi_probe_resp_params - send probe response parameters 1974*5113495bSYour Name * @prb_rsp_template_frm: pointer to template probe response template 1975*5113495bSYour Name * @prb_rsp_template_len: length of probe response template 1976*5113495bSYour Name * @cu_ml_info: Impacted link critical update information 1977*5113495bSYour Name * @go_ignore_non_p2p_probe_req: go ignore non-p2p probe req 1978*5113495bSYour Name */ 1979*5113495bSYour Name struct wmi_probe_resp_params { 1980*5113495bSYour Name uint8_t *prb_rsp_template_frm; 1981*5113495bSYour Name uint32_t prb_rsp_template_len; 1982*5113495bSYour Name bool go_ignore_non_p2p_probe_req; 1983*5113495bSYour Name #ifdef WLAN_FEATURE_11BE_MLO 1984*5113495bSYour Name struct mlo_prb_resp_tmpl_ml_info cu_ml_info; 1985*5113495bSYour Name #endif 1986*5113495bSYour Name }; 1987*5113495bSYour Name 1988*5113495bSYour Name /* struct set_key_params: structure containing 1989*5113495bSYour Name * installation key parameters 1990*5113495bSYour Name * @vdev_id: vdev id 1991*5113495bSYour Name * @key_len: key length 1992*5113495bSYour Name * @key_idx: key index 1993*5113495bSYour Name * @group_key_idx: group key index for VLAN 1994*5113495bSYour Name * @peer_mac: peer mac address 1995*5113495bSYour Name * @key_flags: key flags, 0:pairwise key, 1:group key, 2:static key 1996*5113495bSYour Name * @key_cipher: key cipher based on security mode 1997*5113495bSYour Name * @key_txmic_len: tx mic length 1998*5113495bSYour Name * @key_rxmic_len: rx mic length 1999*5113495bSYour Name * @key_tsc_counter: key tx sc counter 2000*5113495bSYour Name * @key_rsc_counter: key rx sc counter 2001*5113495bSYour Name * @rx_iv: receive IV, applicable only in case of WAPI 2002*5113495bSYour Name * @tx_iv: transmit IV, applicable only in case of WAPI 2003*5113495bSYour Name * @key_data: key data 2004*5113495bSYour Name */ 2005*5113495bSYour Name struct set_key_params { 2006*5113495bSYour Name uint8_t vdev_id; 2007*5113495bSYour Name uint16_t key_len; 2008*5113495bSYour Name uint32_t key_idx; 2009*5113495bSYour Name uint32_t group_key_idx; 2010*5113495bSYour Name uint8_t peer_mac[QDF_MAC_ADDR_SIZE]; 2011*5113495bSYour Name uint32_t key_flags; 2012*5113495bSYour Name uint32_t key_cipher; 2013*5113495bSYour Name uint32_t key_txmic_len; 2014*5113495bSYour Name uint32_t key_rxmic_len; 2015*5113495bSYour Name uint64_t key_tsc_counter; 2016*5113495bSYour Name uint64_t key_rsc_counter; 2017*5113495bSYour Name #if defined(ATH_SUPPORT_WAPI) || defined(FEATURE_WLAN_WAPI) 2018*5113495bSYour Name uint8_t rx_iv[16]; 2019*5113495bSYour Name uint8_t tx_iv[16]; 2020*5113495bSYour Name #endif 2021*5113495bSYour Name uint8_t key_data[WMI_MAC_MAX_KEY_LENGTH]; 2022*5113495bSYour Name }; 2023*5113495bSYour Name 2024*5113495bSYour Name /** 2025*5113495bSYour Name * struct scan_mac_oui - oui parameters 2026*5113495bSYour Name * @oui: oui parameters 2027*5113495bSYour Name * @vdev_id: interface id 2028*5113495bSYour Name * @enb_probe_req_sno_randomization: control probe req sequence no randomization 2029*5113495bSYour Name * @ie_allowlist: probe req IE allowlist attrs 2030*5113495bSYour Name */ 2031*5113495bSYour Name struct scan_mac_oui { 2032*5113495bSYour Name uint8_t oui[WMI_WIFI_SCANNING_MAC_OUI_LENGTH]; 2033*5113495bSYour Name uint32_t vdev_id; 2034*5113495bSYour Name bool enb_probe_req_sno_randomization; 2035*5113495bSYour Name struct probe_req_allowlist_attr ie_allowlist; 2036*5113495bSYour Name }; 2037*5113495bSYour Name 2038*5113495bSYour Name #define WMI_PASSPOINT_REALM_LEN 256 2039*5113495bSYour Name #define WMI_PASSPOINT_ROAMING_CONSORTIUM_ID_NUM 16 2040*5113495bSYour Name #define WMI_PASSPOINT_PLMN_LEN 3 2041*5113495bSYour Name /** 2042*5113495bSYour Name * struct wifi_passpoint_network_param - passpoint network block 2043*5113495bSYour Name * @id: identifier of this network block 2044*5113495bSYour Name * @realm: null terminated UTF8 encoded realm, 0 if unspecified 2045*5113495bSYour Name * @plmn: mcc/mnc combination as per rules, 0s if unspecified 2046*5113495bSYour Name * @roaming_consortium_ids: roaming consortium ids to match, 0s if unspecified 2047*5113495bSYour Name */ 2048*5113495bSYour Name struct wifi_passpoint_network_param { 2049*5113495bSYour Name uint32_t id; 2050*5113495bSYour Name uint8_t realm[WMI_PASSPOINT_REALM_LEN]; 2051*5113495bSYour Name uint8_t plmn[WMI_PASSPOINT_PLMN_LEN]; 2052*5113495bSYour Name int64_t roaming_consortium_ids[ 2053*5113495bSYour Name WMI_PASSPOINT_ROAMING_CONSORTIUM_ID_NUM]; 2054*5113495bSYour Name }; 2055*5113495bSYour Name 2056*5113495bSYour Name /** 2057*5113495bSYour Name * struct wifi_passpoint_req_param - passpoint request 2058*5113495bSYour Name * @request_id: request identifier 2059*5113495bSYour Name * @vdev_id: vdev that is the target of the request 2060*5113495bSYour Name * @num_networks: number of valid entries in @networks 2061*5113495bSYour Name * @networks: passpoint networks 2062*5113495bSYour Name */ 2063*5113495bSYour Name struct wifi_passpoint_req_param { 2064*5113495bSYour Name uint32_t request_id; 2065*5113495bSYour Name uint32_t vdev_id; 2066*5113495bSYour Name uint32_t num_networks; 2067*5113495bSYour Name struct wifi_passpoint_network_param networks[]; 2068*5113495bSYour Name }; 2069*5113495bSYour Name 2070*5113495bSYour Name /* struct mobility_domain_info - structure containing 2071*5113495bSYour Name * mobility domain info 2072*5113495bSYour Name * @mdie_present: mobility domain present or not 2073*5113495bSYour Name * @mobility_domain: mobility domain 2074*5113495bSYour Name */ 2075*5113495bSYour Name struct mobility_domain_info { 2076*5113495bSYour Name uint8_t mdie_present; 2077*5113495bSYour Name uint16_t mobility_domain; 2078*5113495bSYour Name }; 2079*5113495bSYour Name 2080*5113495bSYour Name /** 2081*5113495bSYour Name * struct wifi_epno_network_params - enhanced pno network block 2082*5113495bSYour Name * @ssid: ssid 2083*5113495bSYour Name * @rssi_threshold: threshold for considering this SSID as found, required 2084*5113495bSYour Name * granularity for this threshold is 4dBm to 8dBm 2085*5113495bSYour Name * @flags: WIFI_PNO_FLAG_XXX 2086*5113495bSYour Name * @auth_bit_field: auth bit field for matching WPA IE 2087*5113495bSYour Name */ 2088*5113495bSYour Name struct wifi_epno_network_params { 2089*5113495bSYour Name struct wlan_ssid ssid; 2090*5113495bSYour Name int8_t rssi_threshold; 2091*5113495bSYour Name uint8_t flags; 2092*5113495bSYour Name uint8_t auth_bit_field; 2093*5113495bSYour Name }; 2094*5113495bSYour Name 2095*5113495bSYour Name /** 2096*5113495bSYour Name * struct wifi_enhanced_pno_params - enhanced pno network params 2097*5113495bSYour Name * @request_id: request id number 2098*5113495bSYour Name * @vdev_id: vdev id 2099*5113495bSYour Name * @min_5ghz_rssi: minimum 5GHz RSSI for a BSSID to be considered 2100*5113495bSYour Name * @min_24ghz_rssi: minimum 2.4GHz RSSI for a BSSID to be considered 2101*5113495bSYour Name * @initial_score_max: maximum score that a network can have before bonuses 2102*5113495bSYour Name * @current_connection_bonus: only report when there is a network's score this 2103*5113495bSYour Name * much higher than the current connection 2104*5113495bSYour Name * @same_network_bonus: score bonus for all n/w with the same network flag 2105*5113495bSYour Name * @secure_bonus: score bonus for networks that are not open 2106*5113495bSYour Name * @band_5ghz_bonus: 5GHz RSSI score bonus (applied to all 5GHz networks) 2107*5113495bSYour Name * @num_networks: number of ssids 2108*5113495bSYour Name * @networks: EPNO networks 2109*5113495bSYour Name */ 2110*5113495bSYour Name struct wifi_enhanced_pno_params { 2111*5113495bSYour Name uint32_t request_id; 2112*5113495bSYour Name uint32_t vdev_id; 2113*5113495bSYour Name uint32_t min_5ghz_rssi; 2114*5113495bSYour Name uint32_t min_24ghz_rssi; 2115*5113495bSYour Name uint32_t initial_score_max; 2116*5113495bSYour Name uint32_t current_connection_bonus; 2117*5113495bSYour Name uint32_t same_network_bonus; 2118*5113495bSYour Name uint32_t secure_bonus; 2119*5113495bSYour Name uint32_t band_5ghz_bonus; 2120*5113495bSYour Name uint32_t num_networks; 2121*5113495bSYour Name struct wifi_epno_network_params networks[]; 2122*5113495bSYour Name }; 2123*5113495bSYour Name 2124*5113495bSYour Name enum { 2125*5113495bSYour Name WMI_AP_RX_DATA_OFFLOAD = 0x00, 2126*5113495bSYour Name WMI_STA_RX_DATA_OFFLOAD = 0x01, 2127*5113495bSYour Name }; 2128*5113495bSYour Name 2129*5113495bSYour Name /** 2130*5113495bSYour Name * enum wmi_extscan_configuration_flags - extscan config flags 2131*5113495bSYour Name * @WMI_EXTSCAN_LP_EXTENDED_BATCHING: extended batching 2132*5113495bSYour Name */ 2133*5113495bSYour Name enum wmi_extscan_configuration_flags { 2134*5113495bSYour Name WMI_EXTSCAN_LP_EXTENDED_BATCHING = 0x00000001, 2135*5113495bSYour Name }; 2136*5113495bSYour Name 2137*5113495bSYour Name /** 2138*5113495bSYour Name * enum wmi_extscan_report_events_type - extscan report events type 2139*5113495bSYour Name * @WMI_EXTSCAN_REPORT_EVENTS_BUFFER_FULL: report only when scan history is full 2140*5113495bSYour Name * @WMI_EXTSCAN_REPORT_EVENTS_EACH_SCAN: report a scan completion event after 2141*5113495bSYour Name * each scan 2142*5113495bSYour Name * @WMI_EXTSCAN_REPORT_EVENTS_FULL_RESULTS: forward scan results 2143*5113495bSYour Name * (beacons/probe responses + IEs) 2144*5113495bSYour Name * in real time to HAL, in addition to completion events. 2145*5113495bSYour Name * Note: To keep backward compatibility, 2146*5113495bSYour Name * fire completion events regardless of REPORT_EVENTS_EACH_SCAN. 2147*5113495bSYour Name * @WMI_EXTSCAN_REPORT_EVENTS_NO_BATCH: controls batching, 2148*5113495bSYour Name * 0 => batching, 1 => no batching 2149*5113495bSYour Name */ 2150*5113495bSYour Name enum wmi_extscan_report_events_type { 2151*5113495bSYour Name WMI_EXTSCAN_REPORT_EVENTS_BUFFER_FULL = 0x00, 2152*5113495bSYour Name WMI_EXTSCAN_REPORT_EVENTS_EACH_SCAN = 0x01, 2153*5113495bSYour Name WMI_EXTSCAN_REPORT_EVENTS_FULL_RESULTS = 0x02, 2154*5113495bSYour Name WMI_EXTSCAN_REPORT_EVENTS_NO_BATCH = 0x04, 2155*5113495bSYour Name }; 2156*5113495bSYour Name 2157*5113495bSYour Name /** 2158*5113495bSYour Name * struct extscan_capabilities_params - ext scan capabilities 2159*5113495bSYour Name * @request_id: request_id 2160*5113495bSYour Name * @vdev_id: vdev id 2161*5113495bSYour Name */ 2162*5113495bSYour Name struct extscan_capabilities_params { 2163*5113495bSYour Name uint32_t request_id; 2164*5113495bSYour Name uint8_t vdev_id; 2165*5113495bSYour Name }; 2166*5113495bSYour Name 2167*5113495bSYour Name /** 2168*5113495bSYour Name * struct extscan_capabilities_reset_params - ext scan capabilities reset 2169*5113495bSYour Name * parameter 2170*5113495bSYour Name * @request_id: request_id 2171*5113495bSYour Name * @vdev_id: vdev id 2172*5113495bSYour Name */ 2173*5113495bSYour Name struct extscan_capabilities_reset_params { 2174*5113495bSYour Name uint32_t request_id; 2175*5113495bSYour Name uint8_t vdev_id; 2176*5113495bSYour Name }; 2177*5113495bSYour Name 2178*5113495bSYour Name /** 2179*5113495bSYour Name * struct extscan_bssid_hotlist_reset_params - ext scan hotlist reset parameter 2180*5113495bSYour Name * @request_id: request_id 2181*5113495bSYour Name * @vdev_id: vdev id 2182*5113495bSYour Name */ 2183*5113495bSYour Name struct extscan_bssid_hotlist_reset_params { 2184*5113495bSYour Name uint32_t request_id; 2185*5113495bSYour Name uint8_t vdev_id; 2186*5113495bSYour Name }; 2187*5113495bSYour Name 2188*5113495bSYour Name /** 2189*5113495bSYour Name * struct extscan_stop_req_params - ext scan stop parameter 2190*5113495bSYour Name * @request_id: request_id 2191*5113495bSYour Name * @vdev_id: vdev id 2192*5113495bSYour Name */ 2193*5113495bSYour Name struct extscan_stop_req_params { 2194*5113495bSYour Name uint32_t request_id; 2195*5113495bSYour Name uint8_t vdev_id; 2196*5113495bSYour Name }; 2197*5113495bSYour Name 2198*5113495bSYour Name /** 2199*5113495bSYour Name * struct ap_threshold_params - ap threshold parameter 2200*5113495bSYour Name * @bssid: mac address 2201*5113495bSYour Name * @low: low threshold 2202*5113495bSYour Name * @high: high threshold 2203*5113495bSYour Name */ 2204*5113495bSYour Name struct ap_threshold_params { 2205*5113495bSYour Name struct qdf_mac_addr bssid; 2206*5113495bSYour Name int32_t low; 2207*5113495bSYour Name int32_t high; 2208*5113495bSYour Name }; 2209*5113495bSYour Name 2210*5113495bSYour Name /** 2211*5113495bSYour Name * struct extscan_set_sig_changereq_params - ext scan channel parameter 2212*5113495bSYour Name * @request_id: request_id 2213*5113495bSYour Name * @vdev_id: vdev id 2214*5113495bSYour Name * @rssi_sample_size: Number of samples for averaging RSSI 2215*5113495bSYour Name * @lostap_sample_size: Number of missed samples to confirm AP loss 2216*5113495bSYour Name * @min_breaching: Number of APs breaching threshold required for firmware 2217*5113495bSYour Name * @num_ap: no of scanned ap 2218*5113495bSYour Name * @ap: ap threshold parameter 2219*5113495bSYour Name */ 2220*5113495bSYour Name struct extscan_set_sig_changereq_params { 2221*5113495bSYour Name uint32_t request_id; 2222*5113495bSYour Name uint8_t vdev_id; 2223*5113495bSYour Name uint32_t rssi_sample_size; 2224*5113495bSYour Name uint32_t lostap_sample_size; 2225*5113495bSYour Name uint32_t min_breaching; 2226*5113495bSYour Name uint32_t num_ap; 2227*5113495bSYour Name struct ap_threshold_params ap[WMI_EXTSCAN_MAX_SIGNIFICANT_CHANGE_APS]; 2228*5113495bSYour Name }; 2229*5113495bSYour Name 2230*5113495bSYour Name /** 2231*5113495bSYour Name * struct extscan_cached_result_params - ext scan cached parameter 2232*5113495bSYour Name * @request_id: request_id 2233*5113495bSYour Name * @vdev_id: vdev id 2234*5113495bSYour Name * @flush: cached results flush 2235*5113495bSYour Name */ 2236*5113495bSYour Name struct extscan_cached_result_params { 2237*5113495bSYour Name uint32_t request_id; 2238*5113495bSYour Name uint8_t vdev_id; 2239*5113495bSYour Name bool flush; 2240*5113495bSYour Name }; 2241*5113495bSYour Name 2242*5113495bSYour Name #define WMI_WLAN_EXTSCAN_MAX_CHANNELS 36 2243*5113495bSYour Name #define WMI_WLAN_EXTSCAN_MAX_BUCKETS 16 2244*5113495bSYour Name #define WMI_WLAN_EXTSCAN_MAX_HOTLIST_APS 128 2245*5113495bSYour Name #define WMI_WLAN_EXTSCAN_MAX_SIGNIFICANT_CHANGE_APS 64 2246*5113495bSYour Name #define WMI_EXTSCAN_MAX_HOTLIST_SSIDS 8 2247*5113495bSYour Name 2248*5113495bSYour Name /** 2249*5113495bSYour Name * struct wifi_scan_channelspec_params - wifi scan channel parameter 2250*5113495bSYour Name * @channel: Frequency in MHz 2251*5113495bSYour Name * @dwell_time_ms: dwell time in milliseconds 2252*5113495bSYour Name * @passive: passive scan 2253*5113495bSYour Name * @channel_class: channel class 2254*5113495bSYour Name */ 2255*5113495bSYour Name struct wifi_scan_channelspec_params { 2256*5113495bSYour Name uint32_t channel; 2257*5113495bSYour Name uint32_t dwell_time_ms; 2258*5113495bSYour Name bool passive; 2259*5113495bSYour Name uint8_t channel_class; 2260*5113495bSYour Name }; 2261*5113495bSYour Name 2262*5113495bSYour Name /** 2263*5113495bSYour Name * enum wmi_wifi_band - wifi band 2264*5113495bSYour Name * @WMI_WIFI_BAND_UNSPECIFIED: unspecified band 2265*5113495bSYour Name * @WMI_WIFI_BAND_BG: 2.4 GHz 2266*5113495bSYour Name * @WMI_WIFI_BAND_A: 5 GHz without DFS 2267*5113495bSYour Name * @WMI_WIFI_BAND_ABG: 2.4 GHz + 5 GHz; no DFS 2268*5113495bSYour Name * @WMI_WIFI_BAND_A_DFS_ONLY: 5 GHz DFS only 2269*5113495bSYour Name * @WMI_WIFI_BAND_A_WITH_DFS: 5 GHz with DFS 2270*5113495bSYour Name * @WMI_WIFI_BAND_ABG_WITH_DFS: 2.4 GHz + 5 GHz with DFS 2271*5113495bSYour Name * @WMI_WIFI_BAND_MAX: max range 2272*5113495bSYour Name */ 2273*5113495bSYour Name enum wmi_wifi_band { 2274*5113495bSYour Name WMI_WIFI_BAND_UNSPECIFIED, 2275*5113495bSYour Name WMI_WIFI_BAND_BG = 1, 2276*5113495bSYour Name WMI_WIFI_BAND_A = 2, 2277*5113495bSYour Name WMI_WIFI_BAND_ABG = 3, 2278*5113495bSYour Name WMI_WIFI_BAND_A_DFS_ONLY = 4, 2279*5113495bSYour Name /* 5 is reserved */ 2280*5113495bSYour Name WMI_WIFI_BAND_A_WITH_DFS = 6, 2281*5113495bSYour Name WMI_WIFI_BAND_ABG_WITH_DFS = 7, 2282*5113495bSYour Name /* Keep it last */ 2283*5113495bSYour Name WMI_WIFI_BAND_MAX 2284*5113495bSYour Name }; 2285*5113495bSYour Name 2286*5113495bSYour Name /** 2287*5113495bSYour Name * struct wifi_scan_bucket_params - wifi scan bucket spec 2288*5113495bSYour Name * @bucket: bucket identifier 2289*5113495bSYour Name * @band: wifi band 2290*5113495bSYour Name * @period: Desired period, in millisecond; if this is too 2291*5113495bSYour Name * low, the firmware should choose to generate results as fast as 2292*5113495bSYour Name * it can instead of failing the command byte 2293*5113495bSYour Name * for exponential backoff bucket this is the min_period 2294*5113495bSYour Name * @report_events: 0 => normal reporting (reporting rssi history 2295*5113495bSYour Name * only, when rssi history buffer is % full) 2296*5113495bSYour Name * 1 => same as 0 + report a scan completion event after scanning 2297*5113495bSYour Name * this bucket 2298*5113495bSYour Name * 2 => same as 1 + forward scan results 2299*5113495bSYour Name * (beacons/probe responses + IEs) in real time to HAL 2300*5113495bSYour Name * @max_period: if max_period is non zero or different than period, 2301*5113495bSYour Name * then this bucket is an exponential backoff bucket and 2302*5113495bSYour Name * the scan period will grow exponentially as per formula: 2303*5113495bSYour Name * actual_period(N) = period ^ (N/(step_count+1)) to a 2304*5113495bSYour Name * maximum period of max_period 2305*5113495bSYour Name * @exponent: for exponential back off bucket: multiplier: 2306*5113495bSYour Name * new_period = old_period * exponent 2307*5113495bSYour Name * @step_count: for exponential back off bucket, number of scans performed 2308*5113495bSYour Name * at a given period and until the exponent is applied 2309*5113495bSYour Name * @num_channels: channels to scan; these may include DFS channels 2310*5113495bSYour Name * Note that a given channel may appear in multiple buckets 2311*5113495bSYour Name * @min_dwell_time_active: per bucket minimum active dwell time 2312*5113495bSYour Name * @max_dwell_time_active: per bucket maximum active dwell time 2313*5113495bSYour Name * @min_dwell_time_passive: per bucket minimum passive dwell time 2314*5113495bSYour Name * @max_dwell_time_passive: per bucket maximum passive dwell time 2315*5113495bSYour Name * @channels: Channel list 2316*5113495bSYour Name */ 2317*5113495bSYour Name struct wifi_scan_bucket_params { 2318*5113495bSYour Name uint8_t bucket; 2319*5113495bSYour Name enum wmi_wifi_band band; 2320*5113495bSYour Name uint32_t period; 2321*5113495bSYour Name uint32_t report_events; 2322*5113495bSYour Name uint32_t max_period; 2323*5113495bSYour Name uint32_t exponent; 2324*5113495bSYour Name uint32_t step_count; 2325*5113495bSYour Name uint32_t num_channels; 2326*5113495bSYour Name uint32_t min_dwell_time_active; 2327*5113495bSYour Name uint32_t max_dwell_time_active; 2328*5113495bSYour Name uint32_t min_dwell_time_passive; 2329*5113495bSYour Name uint32_t max_dwell_time_passive; 2330*5113495bSYour Name struct wifi_scan_channelspec_params 2331*5113495bSYour Name channels[WMI_WLAN_EXTSCAN_MAX_CHANNELS]; 2332*5113495bSYour Name }; 2333*5113495bSYour Name 2334*5113495bSYour Name /** 2335*5113495bSYour Name * struct wifi_scan_cmd_req_params - wifi scan command request params 2336*5113495bSYour Name * @base_period: base timer period 2337*5113495bSYour Name * @max_ap_per_scan: max ap per scan 2338*5113495bSYour Name * @report_threshold_percent: report threshold 2339*5113495bSYour Name * in %, when buffer is this much full, wake up host 2340*5113495bSYour Name * @report_threshold_num_scans: report threshold number of scans 2341*5113495bSYour Name * in number of scans, wake up host after these many scans 2342*5113495bSYour Name * @request_id: request id 2343*5113495bSYour Name * @vdev_id: vdev that is the target of the request 2344*5113495bSYour Name * @num_buckets: number of buckets 2345*5113495bSYour Name * @min_dwell_time_active: per bucket minimum active dwell time 2346*5113495bSYour Name * @max_dwell_time_active: per bucket maximum active dwell time 2347*5113495bSYour Name * @min_dwell_time_passive: per bucket minimum passive dwell time 2348*5113495bSYour Name * @max_dwell_time_passive: per bucket maximum passive dwell time 2349*5113495bSYour Name * @configuration_flags: configuration flags 2350*5113495bSYour Name * @extscan_adaptive_dwell_mode: adaptive dwelltime mode for extscan 2351*5113495bSYour Name * @buckets: buckets array 2352*5113495bSYour Name */ 2353*5113495bSYour Name struct wifi_scan_cmd_req_params { 2354*5113495bSYour Name uint32_t base_period; 2355*5113495bSYour Name uint32_t max_ap_per_scan; 2356*5113495bSYour Name uint32_t report_threshold_percent; 2357*5113495bSYour Name uint32_t report_threshold_num_scans; 2358*5113495bSYour Name uint32_t request_id; 2359*5113495bSYour Name uint8_t vdev_id; 2360*5113495bSYour Name uint32_t num_buckets; 2361*5113495bSYour Name uint32_t min_dwell_time_active; 2362*5113495bSYour Name uint32_t max_dwell_time_active; 2363*5113495bSYour Name uint32_t min_dwell_time_passive; 2364*5113495bSYour Name uint32_t max_dwell_time_passive; 2365*5113495bSYour Name uint32_t configuration_flags; 2366*5113495bSYour Name enum scan_dwelltime_adaptive_mode extscan_adaptive_dwell_mode; 2367*5113495bSYour Name struct wifi_scan_bucket_params buckets[WMI_WLAN_EXTSCAN_MAX_BUCKETS]; 2368*5113495bSYour Name }; 2369*5113495bSYour Name 2370*5113495bSYour Name /** 2371*5113495bSYour Name * struct mac_ts_info_tfc - mac ts info parameters 2372*5113495bSYour Name * @burstSizeDefn: burst size 2373*5113495bSYour Name * @reserved: reserved 2374*5113495bSYour Name * @ackPolicy: ack policy 2375*5113495bSYour Name * @userPrio: user priority 2376*5113495bSYour Name * @psb: psb 2377*5113495bSYour Name * @aggregation: aggregation 2378*5113495bSYour Name * @accessPolicy: access policy 2379*5113495bSYour Name * @direction: direction 2380*5113495bSYour Name * @tsid: direction 2381*5113495bSYour Name * @trafficType: traffic type 2382*5113495bSYour Name */ 2383*5113495bSYour Name struct mac_ts_info_tfc { 2384*5113495bSYour Name #ifndef ANI_LITTLE_BIT_ENDIAN 2385*5113495bSYour Name uint8_t burstSizeDefn:1; 2386*5113495bSYour Name uint8_t reserved:7; 2387*5113495bSYour Name #else 2388*5113495bSYour Name uint8_t reserved:7; 2389*5113495bSYour Name uint8_t burstSizeDefn:1; 2390*5113495bSYour Name #endif 2391*5113495bSYour Name 2392*5113495bSYour Name #ifndef ANI_LITTLE_BIT_ENDIAN 2393*5113495bSYour Name uint16_t ackPolicy:2; 2394*5113495bSYour Name uint16_t userPrio:3; 2395*5113495bSYour Name uint16_t psb:1; 2396*5113495bSYour Name uint16_t aggregation:1; 2397*5113495bSYour Name uint16_t accessPolicy:2; 2398*5113495bSYour Name uint16_t direction:2; 2399*5113495bSYour Name uint16_t tsid:4; 2400*5113495bSYour Name uint16_t trafficType:1; 2401*5113495bSYour Name #else 2402*5113495bSYour Name uint16_t trafficType:1; 2403*5113495bSYour Name uint16_t tsid:4; 2404*5113495bSYour Name uint16_t direction:2; 2405*5113495bSYour Name uint16_t accessPolicy:2; 2406*5113495bSYour Name uint16_t aggregation:1; 2407*5113495bSYour Name uint16_t psb:1; 2408*5113495bSYour Name uint16_t userPrio:3; 2409*5113495bSYour Name uint16_t ackPolicy:2; 2410*5113495bSYour Name #endif 2411*5113495bSYour Name } qdf_packed; 2412*5113495bSYour Name 2413*5113495bSYour Name /** 2414*5113495bSYour Name * struct mac_ts_info_sch - mac ts info schedule parameters 2415*5113495bSYour Name * @rsvd: reserved 2416*5113495bSYour Name * @schedule: schedule bit 2417*5113495bSYour Name */ 2418*5113495bSYour Name struct mac_ts_info_sch { 2419*5113495bSYour Name #ifndef ANI_LITTLE_BIT_ENDIAN 2420*5113495bSYour Name uint8_t rsvd:7; 2421*5113495bSYour Name uint8_t schedule:1; 2422*5113495bSYour Name #else 2423*5113495bSYour Name uint8_t schedule:1; 2424*5113495bSYour Name uint8_t rsvd:7; 2425*5113495bSYour Name #endif 2426*5113495bSYour Name } qdf_packed; 2427*5113495bSYour Name 2428*5113495bSYour Name /** 2429*5113495bSYour Name * struct mac_ts_info - mac ts info schedule parameters 2430*5113495bSYour Name * @traffic: mac tfc parameter 2431*5113495bSYour Name * @schedule: mac schedule parameters 2432*5113495bSYour Name */ 2433*5113495bSYour Name struct mac_ts_info { 2434*5113495bSYour Name struct mac_ts_info_tfc traffic; 2435*5113495bSYour Name struct mac_ts_info_sch schedule; 2436*5113495bSYour Name } qdf_packed; 2437*5113495bSYour Name 2438*5113495bSYour Name /** 2439*5113495bSYour Name * struct mac_tspec_ie - mac ts spec 2440*5113495bSYour Name * @type: type 2441*5113495bSYour Name * @length: length 2442*5113495bSYour Name * @tsinfo: tsinfo 2443*5113495bSYour Name * @nomMsduSz: nomMsduSz 2444*5113495bSYour Name * @maxMsduSz: maxMsduSz 2445*5113495bSYour Name * @minSvcInterval: minSvcInterval 2446*5113495bSYour Name * @maxSvcInterval: maxSvcInterval 2447*5113495bSYour Name * @inactInterval: inactInterval 2448*5113495bSYour Name * @suspendInterval: suspendInterval 2449*5113495bSYour Name * @svcStartTime: svcStartTime 2450*5113495bSYour Name * @minDataRate: minDataRate 2451*5113495bSYour Name * @meanDataRate: meanDataRate 2452*5113495bSYour Name * @peakDataRate: peakDataRate 2453*5113495bSYour Name * @maxBurstSz: maxBurstSz 2454*5113495bSYour Name * @delayBound: delayBound 2455*5113495bSYour Name * @minPhyRate: minPhyRate 2456*5113495bSYour Name * @surplusBw: surplusBw 2457*5113495bSYour Name * @mediumTime: mediumTime 2458*5113495bSYour Name */ 2459*5113495bSYour Name struct mac_tspec_ie { 2460*5113495bSYour Name uint8_t type; 2461*5113495bSYour Name uint8_t length; 2462*5113495bSYour Name struct mac_ts_info tsinfo; 2463*5113495bSYour Name uint16_t nomMsduSz; 2464*5113495bSYour Name uint16_t maxMsduSz; 2465*5113495bSYour Name uint32_t minSvcInterval; 2466*5113495bSYour Name uint32_t maxSvcInterval; 2467*5113495bSYour Name uint32_t inactInterval; 2468*5113495bSYour Name uint32_t suspendInterval; 2469*5113495bSYour Name uint32_t svcStartTime; 2470*5113495bSYour Name uint32_t minDataRate; 2471*5113495bSYour Name uint32_t meanDataRate; 2472*5113495bSYour Name uint32_t peakDataRate; 2473*5113495bSYour Name uint32_t maxBurstSz; 2474*5113495bSYour Name uint32_t delayBound; 2475*5113495bSYour Name uint32_t minPhyRate; 2476*5113495bSYour Name uint16_t surplusBw; 2477*5113495bSYour Name uint16_t mediumTime; 2478*5113495bSYour Name } qdf_packed; 2479*5113495bSYour Name 2480*5113495bSYour Name /** 2481*5113495bSYour Name * struct add_ts_param - ADDTS related parameters 2482*5113495bSYour Name * @vdev_id: vdev id 2483*5113495bSYour Name * @tspec_idx: TSPEC handle uniquely identifying a TSPEC for a STA in a BSS 2484*5113495bSYour Name * @tspec: tspec value 2485*5113495bSYour Name * @status: QDF status 2486*5113495bSYour Name * @pe_session_id: protocol engine session id 2487*5113495bSYour Name * @tsm_interval: TSM interval period passed from UMAC to WMI 2488*5113495bSYour Name * @set_ric_params: Should RIC parameters be set? 2489*5113495bSYour Name */ 2490*5113495bSYour Name struct add_ts_param { 2491*5113495bSYour Name uint8_t vdev_id; 2492*5113495bSYour Name uint16_t tspec_idx; 2493*5113495bSYour Name struct mac_tspec_ie tspec; 2494*5113495bSYour Name QDF_STATUS status; 2495*5113495bSYour Name uint8_t pe_session_id; 2496*5113495bSYour Name #ifdef FEATURE_WLAN_ESE 2497*5113495bSYour Name uint16_t tsm_interval; 2498*5113495bSYour Name #endif /* FEATURE_WLAN_ESE */ 2499*5113495bSYour Name #ifdef WLAN_FEATURE_ROAM_OFFLOAD 2500*5113495bSYour Name bool set_ric_params; 2501*5113495bSYour Name #endif /* WLAN_FEATURE_ROAM_OFFLOAD */ 2502*5113495bSYour Name }; 2503*5113495bSYour Name 2504*5113495bSYour Name /** 2505*5113495bSYour Name * struct delts_req_info - DELTS request parameter 2506*5113495bSYour Name * @tsinfo: ts info 2507*5113495bSYour Name * @tspec: ts spec 2508*5113495bSYour Name * @wmeTspecPresent: wme ts spec flag 2509*5113495bSYour Name * @wsmTspecPresent: wsm ts spec flag 2510*5113495bSYour Name * @lleTspecPresent: lle ts spec flag 2511*5113495bSYour Name */ 2512*5113495bSYour Name struct delts_req_info { 2513*5113495bSYour Name struct mac_ts_info tsinfo; 2514*5113495bSYour Name struct mac_tspec_ie tspec; 2515*5113495bSYour Name uint8_t wmeTspecPresent:1; 2516*5113495bSYour Name uint8_t wsmTspecPresent:1; 2517*5113495bSYour Name uint8_t lleTspecPresent:1; 2518*5113495bSYour Name }; 2519*5113495bSYour Name 2520*5113495bSYour Name /** 2521*5113495bSYour Name * struct del_ts_params - DELTS related parameters 2522*5113495bSYour Name * @tspecIdx: TSPEC identifier uniquely identifying a TSPEC for a STA in a BSS 2523*5113495bSYour Name * @bssId: BSSID 2524*5113495bSYour Name * @sessionId: session id 2525*5113495bSYour Name * @userPrio: user priority 2526*5113495bSYour Name * @delTsInfo: DELTS info 2527*5113495bSYour Name * @setRICparams: RIC parameters 2528*5113495bSYour Name */ 2529*5113495bSYour Name struct del_ts_params { 2530*5113495bSYour Name uint16_t tspecIdx; 2531*5113495bSYour Name uint8_t bssId[QDF_MAC_ADDR_SIZE]; 2532*5113495bSYour Name uint8_t sessionId; 2533*5113495bSYour Name uint8_t userPrio; 2534*5113495bSYour Name #ifdef WLAN_FEATURE_ROAM_OFFLOAD 2535*5113495bSYour Name struct delts_req_info delTsInfo; 2536*5113495bSYour Name uint8_t setRICparams; 2537*5113495bSYour Name #endif /* WLAN_FEATURE_ROAM_OFFLOAD */ 2538*5113495bSYour Name }; 2539*5113495bSYour Name 2540*5113495bSYour Name /** 2541*5113495bSYour Name * struct ll_stats_clear_params - ll stats clear parameter 2542*5113495bSYour Name * @req_id: request id 2543*5113495bSYour Name * @vdev_id: vdev id 2544*5113495bSYour Name * @stats_clear_mask: stats clear mask 2545*5113495bSYour Name * @stop_req: stop request 2546*5113495bSYour Name * @peer_macaddr: MAC address of the peer for which stats are to be cleared 2547*5113495bSYour Name */ 2548*5113495bSYour Name struct ll_stats_clear_params { 2549*5113495bSYour Name uint32_t req_id; 2550*5113495bSYour Name uint8_t vdev_id; 2551*5113495bSYour Name uint32_t stats_clear_mask; 2552*5113495bSYour Name uint8_t stop_req; 2553*5113495bSYour Name struct qdf_mac_addr peer_macaddr; 2554*5113495bSYour Name }; 2555*5113495bSYour Name 2556*5113495bSYour Name /** 2557*5113495bSYour Name * struct ll_stats_set_params - ll stats get parameter 2558*5113495bSYour Name * @req_id: request id 2559*5113495bSYour Name * @mpdu_size_threshold: mpdu size threshold 2560*5113495bSYour Name * @aggressive_statistics_gathering: aggressive_statistics_gathering 2561*5113495bSYour Name */ 2562*5113495bSYour Name struct ll_stats_set_params { 2563*5113495bSYour Name uint32_t req_id; 2564*5113495bSYour Name uint32_t mpdu_size_threshold; 2565*5113495bSYour Name uint32_t aggressive_statistics_gathering; 2566*5113495bSYour Name }; 2567*5113495bSYour Name 2568*5113495bSYour Name /** 2569*5113495bSYour Name * struct ll_stats_get_params - ll stats parameter 2570*5113495bSYour Name * @req_id: request id 2571*5113495bSYour Name * @vdev_id: vdev id 2572*5113495bSYour Name * @param_id_mask: param is mask 2573*5113495bSYour Name * @peer_macaddr: MAC address of the peer for which stats are desired 2574*5113495bSYour Name * @is_mlo_req: is the request for mlo vdev 2575*5113495bSYour Name * @vdev_id_bitmap: vdev_id_bitmap of all the connected mlo vdevs 2576*5113495bSYour Name * @mld_macaddr: MLD MAC address 2577*5113495bSYour Name */ 2578*5113495bSYour Name struct ll_stats_get_params { 2579*5113495bSYour Name uint32_t req_id; 2580*5113495bSYour Name uint8_t vdev_id; 2581*5113495bSYour Name uint32_t param_id_mask; 2582*5113495bSYour Name struct qdf_mac_addr peer_macaddr; 2583*5113495bSYour Name #ifdef WLAN_FEATURE_11BE_MLO 2584*5113495bSYour Name bool is_mlo_req; 2585*5113495bSYour Name uint32_t vdev_id_bitmap; 2586*5113495bSYour Name struct qdf_mac_addr mld_macaddr; 2587*5113495bSYour Name #endif 2588*5113495bSYour Name }; 2589*5113495bSYour Name 2590*5113495bSYour Name 2591*5113495bSYour Name /** 2592*5113495bSYour Name * struct link_status_params - link stats parameter 2593*5113495bSYour Name * @vdev_id: ID of the vdev for which link status is desired 2594*5113495bSYour Name */ 2595*5113495bSYour Name struct link_status_params { 2596*5113495bSYour Name uint8_t vdev_id; 2597*5113495bSYour Name }; 2598*5113495bSYour Name 2599*5113495bSYour Name /** 2600*5113495bSYour Name * struct dhcp_stop_ind_params - DHCP Stop indication message 2601*5113495bSYour Name * @msgtype: message type is same as the request type 2602*5113495bSYour Name * @msglen: length of the entire request 2603*5113495bSYour Name * @device_mode: Mode of the device(ex:STA, AP) 2604*5113495bSYour Name * @adapter_macaddr: MAC address of the adapter 2605*5113495bSYour Name * @peer_macaddr: MAC address of the connected peer 2606*5113495bSYour Name */ 2607*5113495bSYour Name struct dhcp_stop_ind_params { 2608*5113495bSYour Name uint16_t msgtype; 2609*5113495bSYour Name uint16_t msglen; 2610*5113495bSYour Name uint8_t device_mode; 2611*5113495bSYour Name struct qdf_mac_addr adapter_macaddr; 2612*5113495bSYour Name struct qdf_mac_addr peer_macaddr; 2613*5113495bSYour Name }; 2614*5113495bSYour Name 2615*5113495bSYour Name #define WMI_MAX_FILTER_TEST_DATA_LEN 8 2616*5113495bSYour Name #define WMI_MAX_NUM_MULTICAST_ADDRESS 240 2617*5113495bSYour Name #define WMI_MAX_NUM_FILTERS 20 2618*5113495bSYour Name #define WMI_MAX_NUM_TESTS_PER_FILTER 10 2619*5113495bSYour Name 2620*5113495bSYour Name /** 2621*5113495bSYour Name * enum packet_filter_type - packet filter type 2622*5113495bSYour Name * @WMI_RCV_FILTER_TYPE_INVALID: invalid type 2623*5113495bSYour Name * @WMI_RCV_FILTER_TYPE_FILTER_PKT: filter packet type 2624*5113495bSYour Name * @WMI_RCV_FILTER_TYPE_BUFFER_PKT: buffer packet type 2625*5113495bSYour Name * @WMI_RCV_FILTER_TYPE_MAX_ENUM_SIZE: max enum size 2626*5113495bSYour Name */ 2627*5113495bSYour Name enum packet_filter_type { 2628*5113495bSYour Name WMI_RCV_FILTER_TYPE_INVALID, 2629*5113495bSYour Name WMI_RCV_FILTER_TYPE_FILTER_PKT, 2630*5113495bSYour Name WMI_RCV_FILTER_TYPE_BUFFER_PKT, 2631*5113495bSYour Name WMI_RCV_FILTER_TYPE_MAX_ENUM_SIZE 2632*5113495bSYour Name }; 2633*5113495bSYour Name 2634*5113495bSYour Name /** 2635*5113495bSYour Name * enum packet_protocol_type - packet protocol type 2636*5113495bSYour Name * @WMI_FILTER_HDR_TYPE_INVALID: invalid type 2637*5113495bSYour Name * @WMI_FILTER_HDR_TYPE_MAC: mac type 2638*5113495bSYour Name * @WMI_FILTER_HDR_TYPE_ARP: trp type 2639*5113495bSYour Name * @WMI_FILTER_HDR_TYPE_IPV4: ipv4 type 2640*5113495bSYour Name * @WMI_FILTER_HDR_TYPE_IPV6: ipv6 type 2641*5113495bSYour Name * @WMI_FILTER_HDR_TYPE_UDP: udp type 2642*5113495bSYour Name * @WMI_FILTER_HDR_TYPE_MAX: max type 2643*5113495bSYour Name */ 2644*5113495bSYour Name enum packet_protocol_type { 2645*5113495bSYour Name WMI_FILTER_HDR_TYPE_INVALID, 2646*5113495bSYour Name WMI_FILTER_HDR_TYPE_MAC, 2647*5113495bSYour Name WMI_FILTER_HDR_TYPE_ARP, 2648*5113495bSYour Name WMI_FILTER_HDR_TYPE_IPV4, 2649*5113495bSYour Name WMI_FILTER_HDR_TYPE_IPV6, 2650*5113495bSYour Name WMI_FILTER_HDR_TYPE_UDP, 2651*5113495bSYour Name WMI_FILTER_HDR_TYPE_MAX 2652*5113495bSYour Name }; 2653*5113495bSYour Name 2654*5113495bSYour Name /** 2655*5113495bSYour Name * enum packet_filter_comp_type - packet filter comparison type 2656*5113495bSYour Name * @WMI_FILTER_CMP_TYPE_INVALID: invalid type 2657*5113495bSYour Name * @WMI_FILTER_CMP_TYPE_EQUAL: type equal 2658*5113495bSYour Name * @WMI_FILTER_CMP_TYPE_MASK_EQUAL: mask equal 2659*5113495bSYour Name * @WMI_FILTER_CMP_TYPE_NOT_EQUAL: type not equal 2660*5113495bSYour Name * @WMI_FILTER_CMP_TYPE_MASK_NOT_EQUAL: mask not equal 2661*5113495bSYour Name * @WMI_FILTER_CMP_TYPE_MAX: max type 2662*5113495bSYour Name */ 2663*5113495bSYour Name enum packet_filter_comp_type { 2664*5113495bSYour Name WMI_FILTER_CMP_TYPE_INVALID, 2665*5113495bSYour Name WMI_FILTER_CMP_TYPE_EQUAL, 2666*5113495bSYour Name WMI_FILTER_CMP_TYPE_MASK_EQUAL, 2667*5113495bSYour Name WMI_FILTER_CMP_TYPE_NOT_EQUAL, 2668*5113495bSYour Name WMI_FILTER_CMP_TYPE_MASK_NOT_EQUAL, 2669*5113495bSYour Name WMI_FILTER_CMP_TYPE_MAX 2670*5113495bSYour Name }; 2671*5113495bSYour Name 2672*5113495bSYour Name /** 2673*5113495bSYour Name * struct rcv_pkt_filter_params - receive packet filter parameters 2674*5113495bSYour Name * @protocolLayer: protocol layer 2675*5113495bSYour Name * @cmpFlag: comparison flag 2676*5113495bSYour Name * @dataLength: data length 2677*5113495bSYour Name * @dataOffset: data offset 2678*5113495bSYour Name * @reserved: resserved 2679*5113495bSYour Name * @compareData: compare data 2680*5113495bSYour Name * @dataMask: data mask 2681*5113495bSYour Name */ 2682*5113495bSYour Name struct rcv_pkt_filter_params { 2683*5113495bSYour Name enum packet_protocol_type protocolLayer; 2684*5113495bSYour Name enum packet_filter_comp_type cmpFlag; 2685*5113495bSYour Name uint16_t dataLength; 2686*5113495bSYour Name uint8_t dataOffset; 2687*5113495bSYour Name uint8_t reserved; 2688*5113495bSYour Name uint8_t compareData[WMI_MAX_FILTER_TEST_DATA_LEN]; 2689*5113495bSYour Name uint8_t dataMask[WMI_MAX_FILTER_TEST_DATA_LEN]; 2690*5113495bSYour Name }; 2691*5113495bSYour Name 2692*5113495bSYour Name /** 2693*5113495bSYour Name * struct rcv_pkt_filter_config - receive packet filter info 2694*5113495bSYour Name * @filterId: filter id 2695*5113495bSYour Name * @filterType: filter type 2696*5113495bSYour Name * @numFieldParams: no of fields 2697*5113495bSYour Name * @coalesceTime: reserved parameter 2698*5113495bSYour Name * @self_macaddr: self mac address 2699*5113495bSYour Name * @bssid: Bssid of the connected AP 2700*5113495bSYour Name * @paramsData: data parameter 2701*5113495bSYour Name */ 2702*5113495bSYour Name struct rcv_pkt_filter_config { 2703*5113495bSYour Name uint8_t filterId; 2704*5113495bSYour Name enum packet_filter_type filterType; 2705*5113495bSYour Name uint32_t numFieldParams; 2706*5113495bSYour Name uint32_t coalesceTime; 2707*5113495bSYour Name struct qdf_mac_addr self_macaddr; 2708*5113495bSYour Name struct qdf_mac_addr bssid; 2709*5113495bSYour Name struct rcv_pkt_filter_params paramsData[WMI_MAX_NUM_TESTS_PER_FILTER]; 2710*5113495bSYour Name }; 2711*5113495bSYour Name 2712*5113495bSYour Name /** 2713*5113495bSYour Name * struct cfg_action_frm_tb_ppdu_param - action frm in TB PPDU cfg 2714*5113495bSYour Name * @cfg: enable/disable 2715*5113495bSYour Name * @frm_len: length of the frame 2716*5113495bSYour Name * @data: data pointer 2717*5113495bSYour Name */ 2718*5113495bSYour Name struct cfg_action_frm_tb_ppdu_param { 2719*5113495bSYour Name uint32_t cfg; 2720*5113495bSYour Name uint32_t frm_len; 2721*5113495bSYour Name uint8_t *data; 2722*5113495bSYour Name }; 2723*5113495bSYour Name 2724*5113495bSYour Name #define WMI_MAX_NUM_FW_SEGMENTS 4 2725*5113495bSYour Name 2726*5113495bSYour Name /** 2727*5113495bSYour Name * struct fw_dump_seg_req_param - individual segment details 2728*5113495bSYour Name * @seg_id: segment id. 2729*5113495bSYour Name * @seg_start_addr_lo: lower address of the segment. 2730*5113495bSYour Name * @seg_start_addr_hi: higher address of the segment. 2731*5113495bSYour Name * @seg_length: length of the segment. 2732*5113495bSYour Name * @dst_addr_lo: lower address of the destination buffer. 2733*5113495bSYour Name * @dst_addr_hi: higher address of the destination buffer. 2734*5113495bSYour Name * 2735*5113495bSYour Name * This structure carries the information to firmware about the 2736*5113495bSYour Name * individual segments. This structure is part of firmware memory 2737*5113495bSYour Name * dump request. 2738*5113495bSYour Name */ 2739*5113495bSYour Name struct fw_dump_seg_req_param { 2740*5113495bSYour Name uint8_t seg_id; 2741*5113495bSYour Name uint32_t seg_start_addr_lo; 2742*5113495bSYour Name uint32_t seg_start_addr_hi; 2743*5113495bSYour Name uint32_t seg_length; 2744*5113495bSYour Name uint32_t dst_addr_lo; 2745*5113495bSYour Name uint32_t dst_addr_hi; 2746*5113495bSYour Name }; 2747*5113495bSYour Name 2748*5113495bSYour Name /** 2749*5113495bSYour Name * struct fw_dump_req_param - firmware memory dump request details. 2750*5113495bSYour Name * @request_id: request id. 2751*5113495bSYour Name * @num_seg: requested number of segments. 2752*5113495bSYour Name * @segment: individual segment information. 2753*5113495bSYour Name * 2754*5113495bSYour Name * This structure carries information about the firmware 2755*5113495bSYour Name * memory dump request. 2756*5113495bSYour Name */ 2757*5113495bSYour Name struct fw_dump_req_param { 2758*5113495bSYour Name uint32_t request_id; 2759*5113495bSYour Name uint32_t num_seg; 2760*5113495bSYour Name struct fw_dump_seg_req_param segment[WMI_MAX_NUM_FW_SEGMENTS]; 2761*5113495bSYour Name }; 2762*5113495bSYour Name 2763*5113495bSYour Name /** 2764*5113495bSYour Name * struct dhcp_offload_info_params - dhcp offload parameters 2765*5113495bSYour Name * @vdev_id: request data length 2766*5113495bSYour Name * @dhcp_offload_enabled: dhcp offload enabled 2767*5113495bSYour Name * @dhcp_client_num: dhcp client no 2768*5113495bSYour Name * @dhcp_srv_addr: dhcp server ip 2769*5113495bSYour Name */ 2770*5113495bSYour Name struct dhcp_offload_info_params { 2771*5113495bSYour Name uint32_t vdev_id; 2772*5113495bSYour Name bool dhcp_offload_enabled; 2773*5113495bSYour Name uint32_t dhcp_client_num; 2774*5113495bSYour Name uint32_t dhcp_srv_addr; 2775*5113495bSYour Name }; 2776*5113495bSYour Name 2777*5113495bSYour Name /** 2778*5113495bSYour Name * struct app_type2_params - app type2parameter 2779*5113495bSYour Name * @vdev_id: vdev id 2780*5113495bSYour Name * @rc4_key: rc4 key 2781*5113495bSYour Name * @rc4_key_len: rc4 key length 2782*5113495bSYour Name * @ip_id: NC id 2783*5113495bSYour Name * @ip_device_ip: NC IP address 2784*5113495bSYour Name * @ip_server_ip: Push server IP address 2785*5113495bSYour Name * @tcp_src_port: NC TCP port 2786*5113495bSYour Name * @tcp_dst_port: Push server TCP port 2787*5113495bSYour Name * @tcp_seq: tcp sequence 2788*5113495bSYour Name * @tcp_ack_seq: tcp ack sequence 2789*5113495bSYour Name * @keepalive_init: Initial ping interval 2790*5113495bSYour Name * @keepalive_min: Minimum ping interval 2791*5113495bSYour Name * @keepalive_max: Maximum ping interval 2792*5113495bSYour Name * @keepalive_inc: Increment of ping interval 2793*5113495bSYour Name * @gateway_mac: gateway mac address 2794*5113495bSYour Name * @tcp_tx_timeout_val: tcp tx timeout value 2795*5113495bSYour Name * @tcp_rx_timeout_val: tcp rx timeout value 2796*5113495bSYour Name */ 2797*5113495bSYour Name struct app_type2_params { 2798*5113495bSYour Name uint8_t vdev_id; 2799*5113495bSYour Name uint8_t rc4_key[16]; 2800*5113495bSYour Name uint32_t rc4_key_len; 2801*5113495bSYour Name /** ip header parameter */ 2802*5113495bSYour Name uint32_t ip_id; 2803*5113495bSYour Name uint32_t ip_device_ip; 2804*5113495bSYour Name uint32_t ip_server_ip; 2805*5113495bSYour Name /** tcp header parameter */ 2806*5113495bSYour Name uint16_t tcp_src_port; 2807*5113495bSYour Name uint16_t tcp_dst_port; 2808*5113495bSYour Name uint32_t tcp_seq; 2809*5113495bSYour Name uint32_t tcp_ack_seq; 2810*5113495bSYour Name uint32_t keepalive_init; 2811*5113495bSYour Name uint32_t keepalive_min; 2812*5113495bSYour Name uint32_t keepalive_max; 2813*5113495bSYour Name uint32_t keepalive_inc; 2814*5113495bSYour Name struct qdf_mac_addr gateway_mac; 2815*5113495bSYour Name uint32_t tcp_tx_timeout_val; 2816*5113495bSYour Name uint32_t tcp_rx_timeout_val; 2817*5113495bSYour Name }; 2818*5113495bSYour Name 2819*5113495bSYour Name /** 2820*5113495bSYour Name * struct app_type1_params - app type1 parameter 2821*5113495bSYour Name * @vdev_id: vdev id 2822*5113495bSYour Name * @wakee_mac_addr: mac address 2823*5113495bSYour Name * @identification_id: identification id 2824*5113495bSYour Name * @password: password 2825*5113495bSYour Name * @id_length: id length 2826*5113495bSYour Name * @pass_length: password length 2827*5113495bSYour Name */ 2828*5113495bSYour Name struct app_type1_params { 2829*5113495bSYour Name uint8_t vdev_id; 2830*5113495bSYour Name struct qdf_mac_addr wakee_mac_addr; 2831*5113495bSYour Name uint8_t identification_id[8]; 2832*5113495bSYour Name uint8_t password[16]; 2833*5113495bSYour Name uint32_t id_length; 2834*5113495bSYour Name uint32_t pass_length; 2835*5113495bSYour Name }; 2836*5113495bSYour Name 2837*5113495bSYour Name /** 2838*5113495bSYour Name * enum wmi_ext_wow_type - wow type 2839*5113495bSYour Name * @WMI_EXT_WOW_TYPE_APP_TYPE1: only enable wakeup for app type1 2840*5113495bSYour Name * @WMI_EXT_WOW_TYPE_APP_TYPE2: only enable wakeup for app type2 2841*5113495bSYour Name * @WMI_EXT_WOW_TYPE_APP_TYPE1_2: enable wakeup for app type1&2 2842*5113495bSYour Name */ 2843*5113495bSYour Name enum wmi_ext_wow_type { 2844*5113495bSYour Name WMI_EXT_WOW_TYPE_APP_TYPE1, 2845*5113495bSYour Name WMI_EXT_WOW_TYPE_APP_TYPE2, 2846*5113495bSYour Name WMI_EXT_WOW_TYPE_APP_TYPE1_2, 2847*5113495bSYour Name }; 2848*5113495bSYour Name 2849*5113495bSYour Name /** 2850*5113495bSYour Name * struct ext_wow_params - ext wow parameters 2851*5113495bSYour Name * @vdev_id: vdev id 2852*5113495bSYour Name * @type: wow type 2853*5113495bSYour Name * @wakeup_pin_num: wake up gpio no 2854*5113495bSYour Name */ 2855*5113495bSYour Name struct ext_wow_params { 2856*5113495bSYour Name uint8_t vdev_id; 2857*5113495bSYour Name enum wmi_ext_wow_type type; 2858*5113495bSYour Name uint32_t wakeup_pin_num; 2859*5113495bSYour Name }; 2860*5113495bSYour Name 2861*5113495bSYour Name /** 2862*5113495bSYour Name * struct stats_ext_params - ext stats request 2863*5113495bSYour Name * @vdev_id: vdev id 2864*5113495bSYour Name * @request_data_len: request data length 2865*5113495bSYour Name * @vdev_id_bitmap: mlo connected vdev id bitmap 2866*5113495bSYour Name * @request_data: request data 2867*5113495bSYour Name */ 2868*5113495bSYour Name struct stats_ext_params { 2869*5113495bSYour Name uint32_t vdev_id; 2870*5113495bSYour Name uint32_t request_data_len; 2871*5113495bSYour Name uint32_t vdev_id_bitmap; 2872*5113495bSYour Name uint8_t request_data[]; 2873*5113495bSYour Name }; 2874*5113495bSYour Name 2875*5113495bSYour Name #define WMI_GTK_OFFLOAD_KEK_BYTES 64 2876*5113495bSYour Name #define WMI_GTK_OFFLOAD_KCK_BYTES 16 2877*5113495bSYour Name #define WMI_GTK_OFFLOAD_ENABLE 0 2878*5113495bSYour Name #define WMI_GTK_OFFLOAD_DISABLE 1 2879*5113495bSYour Name 2880*5113495bSYour Name #define MAX_MEM_CHUNKS 32 2881*5113495bSYour Name /* 2882*5113495bSYour Name * struct wmi_host_mem_chunk - host memory chunk structure 2883*5113495bSYour Name * @vaddr: Pointer to virtual address 2884*5113495bSYour Name * @paddr: Physical address 2885*5113495bSYour Name * @memctx: qdf memory context for mapped address. 2886*5113495bSYour Name * @len: length of chunk 2887*5113495bSYour Name * @req_id: request id from target 2888*5113495bSYour Name * 2889*5113495bSYour Name * Note: kernel-doc doesn't parse the memctx definition so this definition 2890*5113495bSYour Name * currently doesn't use a kernel-doc comment marker 2891*5113495bSYour Name */ 2892*5113495bSYour Name struct wmi_host_mem_chunk { 2893*5113495bSYour Name uint32_t *vaddr; 2894*5113495bSYour Name qdf_dma_addr_t paddr; 2895*5113495bSYour Name qdf_dma_mem_context(memctx); 2896*5113495bSYour Name uint32_t len; 2897*5113495bSYour Name uint32_t req_id; 2898*5113495bSYour Name }; 2899*5113495bSYour Name 2900*5113495bSYour Name /** 2901*5113495bSYour Name * struct wmi_wifi_start_log - Structure to store the params sent to start/ 2902*5113495bSYour Name * stop logging 2903*5113495bSYour Name * @ring_id: Attribute which indicates the type of logging like per packet 2904*5113495bSYour Name * statistics, connectivity etc. 2905*5113495bSYour Name * @verbose_level: Verbose level which can be 0,1,2,3 2906*5113495bSYour Name * @flag: Flag field for future use 2907*5113495bSYour Name */ 2908*5113495bSYour Name struct wmi_wifi_start_log { 2909*5113495bSYour Name uint32_t ring_id; 2910*5113495bSYour Name uint32_t verbose_level; 2911*5113495bSYour Name uint32_t flag; 2912*5113495bSYour Name }; 2913*5113495bSYour Name 2914*5113495bSYour Name /** 2915*5113495bSYour Name * struct wmi_pcl_list - Format of PCL 2916*5113495bSYour Name * @pcl_list: List of preferred channels 2917*5113495bSYour Name * @weight_list: Weights of the PCL 2918*5113495bSYour Name * @pcl_len: Number of channels in the PCL 2919*5113495bSYour Name */ 2920*5113495bSYour Name struct wmi_pcl_list { 2921*5113495bSYour Name uint8_t pcl_list[NUM_CHANNELS]; 2922*5113495bSYour Name uint8_t weight_list[NUM_CHANNELS]; 2923*5113495bSYour Name uint32_t pcl_len; 2924*5113495bSYour Name }; 2925*5113495bSYour Name 2926*5113495bSYour Name /** 2927*5113495bSYour Name * struct wmi_hw_mode_params - HW mode params 2928*5113495bSYour Name * @mac0_tx_ss: MAC0 Tx spatial stream 2929*5113495bSYour Name * @mac0_rx_ss: MAC0 Rx spatial stream 2930*5113495bSYour Name * @mac1_tx_ss: MAC1 Tx spatial stream 2931*5113495bSYour Name * @mac1_rx_ss: MAC1 Rx spatial stream 2932*5113495bSYour Name * @mac0_bw: MAC0 bandwidth 2933*5113495bSYour Name * @mac1_bw: MAC1 bandwidth 2934*5113495bSYour Name * @dbs_cap: DBS capabality 2935*5113495bSYour Name * @agile_dfs_cap: Agile DFS capabality 2936*5113495bSYour Name */ 2937*5113495bSYour Name struct wmi_hw_mode_params { 2938*5113495bSYour Name uint8_t mac0_tx_ss; 2939*5113495bSYour Name uint8_t mac0_rx_ss; 2940*5113495bSYour Name uint8_t mac1_tx_ss; 2941*5113495bSYour Name uint8_t mac1_rx_ss; 2942*5113495bSYour Name uint8_t mac0_bw; 2943*5113495bSYour Name uint8_t mac1_bw; 2944*5113495bSYour Name uint8_t dbs_cap; 2945*5113495bSYour Name uint8_t agile_dfs_cap; 2946*5113495bSYour Name }; 2947*5113495bSYour Name 2948*5113495bSYour Name /** 2949*5113495bSYour Name * struct wmi_unit_test_cmd - unit test command parameters 2950*5113495bSYour Name * @vdev_id: vdev id 2951*5113495bSYour Name * @module_id: module id 2952*5113495bSYour Name * @num_args: number of arguments 2953*5113495bSYour Name * @diag_token: dialog token, which identifies the transaction. 2954*5113495bSYour Name * this number is generated by wifitool and may be used to 2955*5113495bSYour Name * identify the transaction in the event path 2956*5113495bSYour Name * @args: arguments 2957*5113495bSYour Name */ 2958*5113495bSYour Name struct wmi_unit_test_cmd { 2959*5113495bSYour Name uint32_t vdev_id; 2960*5113495bSYour Name uint32_t module_id; 2961*5113495bSYour Name uint32_t num_args; 2962*5113495bSYour Name uint32_t diag_token; 2963*5113495bSYour Name uint32_t args[WMI_UNIT_TEST_MAX_NUM_ARGS]; 2964*5113495bSYour Name }; 2965*5113495bSYour Name 2966*5113495bSYour Name /** 2967*5113495bSYour Name * struct extscan_bssid_hotlist_set_params - set hotlist request 2968*5113495bSYour Name * @request_id: request_id 2969*5113495bSYour Name * @vdev_id: vdev id 2970*5113495bSYour Name * @lost_ap_sample_size: number of samples to confirm AP loss 2971*5113495bSYour Name * @num_ap: Number of hotlist APs 2972*5113495bSYour Name * @ap: hotlist APs 2973*5113495bSYour Name */ 2974*5113495bSYour Name struct extscan_bssid_hotlist_set_params { 2975*5113495bSYour Name uint32_t request_id; 2976*5113495bSYour Name uint8_t vdev_id; 2977*5113495bSYour Name uint32_t lost_ap_sample_size; 2978*5113495bSYour Name uint32_t num_ap; 2979*5113495bSYour Name struct ap_threshold_params ap[WMI_WLAN_EXTSCAN_MAX_HOTLIST_APS]; 2980*5113495bSYour Name }; 2981*5113495bSYour Name 2982*5113495bSYour Name /** 2983*5113495bSYour Name * struct host_mem_req - Host memory request paramseters request by target 2984*5113495bSYour Name * @req_id: Request id to identify the request. 2985*5113495bSYour Name * @unit_size: Size of single unit requested. 2986*5113495bSYour Name * @num_unit_info: Memory chunk info 2987*5113495bSYour Name * @num_units: number of units requested. 2988*5113495bSYour Name * @tgt_num_units: number of units request by target. 2989*5113495bSYour Name */ 2990*5113495bSYour Name typedef struct { 2991*5113495bSYour Name uint32_t req_id; 2992*5113495bSYour Name uint32_t unit_size; 2993*5113495bSYour Name uint32_t num_unit_info; 2994*5113495bSYour Name uint32_t num_units; 2995*5113495bSYour Name uint32_t tgt_num_units; 2996*5113495bSYour Name } host_mem_req; 2997*5113495bSYour Name 2998*5113495bSYour Name #define WMI_HOST_DSCP_MAP_MAX (64) 2999*5113495bSYour Name 3000*5113495bSYour Name /** 3001*5113495bSYour Name * struct wmi_host_ext_resource_config - Extended resource config 3002*5113495bSYour Name * @host_platform_config: Host platform configuration. 3003*5113495bSYour Name * @fw_feature_bitmap: FW feature requested bitmap. Uses the 3004*5113495bSYour Name * WMI_HOST_FW_FEATURES_* macros. The features in 3005*5113495bSYour Name * question are enabled by setting the feature's 3006*5113495bSYour Name * bit to 1, or disabled by setting the feature's 3007*5113495bSYour Name * bit to 0. 3008*5113495bSYour Name * @wlan_priority_gpio: WLAN priority GPIO number. The target uses a 3009*5113495bSYour Name * GPIO pin to indicate when it is transmitting 3010*5113495bSYour Name * high-priority traffic (e.g. beacon, 3011*5113495bSYour Name * management, or AC_VI) or low-priority traffic 3012*5113495bSYour Name * (e.g. AC_BE, AC_BK). The HW uses this WLAN 3013*5113495bSYour Name * GPIO pin to determine whether to abort WLAN 3014*5113495bSYour Name * tx in favor of BT activity. Which GPIO is 3015*5113495bSYour Name * used for this WLAN tx traffic priority 3016*5113495bSYour Name * specification varies between platforms, so 3017*5113495bSYour Name * the host needs to indicate to the target 3018*5113495bSYour Name * which GPIO to use. 3019*5113495bSYour Name * @coex_version: COEX version. Host will notify target which coex 3020*5113495bSYour Name * algorithm has to be enabled based on HW, FW 3021*5113495bSYour Name * capability and device tree config. Till now the 3022*5113495bSYour Name * coex algorithms were target specific. Now the same 3023*5113495bSYour Name * target can choose between multiple coex algorithms 3024*5113495bSYour Name * depending on device tree config on host. For 3025*5113495bSYour Name * backward compatibility, version support will have 3026*5113495bSYour Name * option 0 and will rely on FW compile time flags to 3027*5113495bSYour Name * decide the coex version between VERSION_1, VERSION_2 3028*5113495bSYour Name * and VERSION_3. Version info is mandatory from 3029*5113495bSYour Name * VERSION_4 onwards for any new coex algorithms. 3030*5113495bSYour Name * 0 = no version support 3031*5113495bSYour Name * 1 = COEX_VERSION1 (3 wire coex) 3032*5113495bSYour Name * 2 = COEX_VERSION_2 (2.5 wire coex) 3033*5113495bSYour Name * 3 = COEX_VERSION_3 (2.5 wire coex+duty cycle) 3034*5113495bSYour Name * 4 = COEX_VERSION_4 (4 wire coex) 3035*5113495bSYour Name * @coex_gpio_pin_1: 3036*5113495bSYour Name * @coex_gpio_pin_2: 3037*5113495bSYour Name * @coex_gpio_pin_3: 3038*5113495bSYour Name * There are multiple coex implementations on FW to support different 3039*5113495bSYour Name * hardwares. Since the coex algos are mutually exclusive, host will 3040*5113495bSYour Name * use below fields to send GPIO info to FW and these GPIO pins will 3041*5113495bSYour Name * have different usages depending on the feature enabled. This is to 3042*5113495bSYour Name * avoid adding multiple GPIO fields here for different features. 3043*5113495bSYour Name * 3044*5113495bSYour Name * COEX VERSION_4 (4 wire coex) : 3045*5113495bSYour Name * 4 wire coex feature uses 1 common input request line from BT/ZB/ 3046*5113495bSYour Name * Thread which interrupts the WLAN target processor directly, 1 input 3047*5113495bSYour Name * priority line from BT and ZB each, 1 output line to grant access to 3048*5113495bSYour Name * requesting IOT subsystem. WLAN uses the input priority line to 3049*5113495bSYour Name * identify the requesting IOT subsystem. Request is granted based on 3050*5113495bSYour Name * IOT interface priority and WLAN traffic. GPIO pin usage is as below: 3051*5113495bSYour Name * coex_gpio_pin_1 = BT PRIORITY INPUT GPIO 3052*5113495bSYour Name * coex_gpio_pin_2 = ZIGBEE PRIORITY INPUT GPIO 3053*5113495bSYour Name * coex_gpio_pin_3 = GRANT OUTPUT GPIO 3054*5113495bSYour Name * when a BT active interrupt is raised, WLAN reads 3055*5113495bSYour Name * BT and ZB priority input GPIO pins to compare against the coex 3056*5113495bSYour Name * priority table and accordingly sets the grant output GPIO to give 3057*5113495bSYour Name * access to requesting IOT subsystem. 3058*5113495bSYour Name */ 3059*5113495bSYour Name typedef struct { 3060*5113495bSYour Name uint32_t host_platform_config; 3061*5113495bSYour Name 3062*5113495bSYour Name #define WMI_HOST_FW_FEATURE_LTEU_SUPPORT 0x0001 3063*5113495bSYour Name #define WMI_HOST_FW_FEATURE_COEX_GPIO_SUPPORT 0x0002 3064*5113495bSYour Name #define WMI_HOST_FW_FEATURE_AUX_RADIO_SPECTRAL_INTF 0x0004 3065*5113495bSYour Name #define WMI_HOST_FW_FEATURE_AUX_RADIO_CHAN_LOAD_INTF 0x0008 3066*5113495bSYour Name #define WMI_HOST_FW_FEATURE_BSS_CHANNEL_INFO_64 0x0010 3067*5113495bSYour Name #define WMI_HOST_FW_FEATURE_PEER_STATS 0x0020 3068*5113495bSYour Name #define WMI_HOST_FW_FEATURE_VDEV_STATS 0x0040 3069*5113495bSYour Name #define WMI_HOST_FW_FEATURE_VOW_FEATURES 0x00004000 3070*5113495bSYour Name #define WMI_HOST_FW_FEATURE_VOW_STATS 0x00008000 3071*5113495bSYour Name uint32_t fw_feature_bitmap; 3072*5113495bSYour Name uint32_t wlan_priority_gpio; 3073*5113495bSYour Name uint32_t coex_version; 3074*5113495bSYour Name uint32_t coex_gpio_pin_1; 3075*5113495bSYour Name uint32_t coex_gpio_pin_2; 3076*5113495bSYour Name uint32_t coex_gpio_pin_3; 3077*5113495bSYour Name 3078*5113495bSYour Name /* add new members here */ 3079*5113495bSYour Name } wmi_host_ext_resource_config; 3080*5113495bSYour Name 3081*5113495bSYour Name /** 3082*5113495bSYour Name * struct set_fwtest_params - FW test params 3083*5113495bSYour Name * @arg: FW param id 3084*5113495bSYour Name * @value: value 3085*5113495bSYour Name */ 3086*5113495bSYour Name struct set_fwtest_params { 3087*5113495bSYour Name uint32_t arg; 3088*5113495bSYour Name uint32_t value; 3089*5113495bSYour Name }; 3090*5113495bSYour Name 3091*5113495bSYour Name /** 3092*5113495bSYour Name * enum wfa_test_cmds - WFA test config command 3093*5113495bSYour Name * @WFA_CONFIG_RXNE: configure an override for the RSNXE Used 3094*5113495bSYour Name * @WFA_CONFIG_CSA: configure the driver to ignore CSA 3095*5113495bSYour Name * @WFA_CONFIG_OCV: configure OCI 3096*5113495bSYour Name * @WFA_CONFIG_SA_QUERY: configure driver/firmware to ignore SAquery timeout 3097*5113495bSYour Name * @WFA_FILS_DISCV_FRAMES: FD frames TX enable disable config 3098*5113495bSYour Name * @WFA_IGNORE_H2E_RSNXE: configure driver/firmware to ignore H2E_RSNXE in case 3099*5113495bSYour Name * of 6g connection 3100*5113495bSYour Name */ 3101*5113495bSYour Name enum wfa_test_cmds { 3102*5113495bSYour Name WFA_CONFIG_RXNE, 3103*5113495bSYour Name WFA_CONFIG_CSA, 3104*5113495bSYour Name WFA_CONFIG_OCV, 3105*5113495bSYour Name WFA_CONFIG_SA_QUERY, 3106*5113495bSYour Name WFA_FILS_DISCV_FRAMES, 3107*5113495bSYour Name WFA_IGNORE_H2E_RSNXE, 3108*5113495bSYour Name }; 3109*5113495bSYour Name 3110*5113495bSYour Name /** 3111*5113495bSYour Name * enum wmi_host_wfa_config_ocv_frmtype - OCI override frame type 3112*5113495bSYour Name * @WMI_HOST_WFA_CONFIG_OCV_FRMTYPE_SAQUERY_REQ: SA Query Request frame 3113*5113495bSYour Name * @WMI_HOST_WFA_CONFIG_OCV_FRMTYPE_SAQUERY_RSP: SA Query Response frame 3114*5113495bSYour Name * @WMI_HOST_WFA_CONFIG_OCV_FRMTYPE_FT_REASSOC_REQ: FT Reassociation Req frm 3115*5113495bSYour Name * @WMI_HOST_WFA_CONFIG_OCV_FRMTYPE_FILS_REASSOC_REQ: FILS Reassoc Req frm 3116*5113495bSYour Name */ 3117*5113495bSYour Name enum wmi_host_wfa_config_ocv_frmtype { 3118*5113495bSYour Name WMI_HOST_WFA_CONFIG_OCV_FRMTYPE_SAQUERY_REQ = 0x00000001, 3119*5113495bSYour Name WMI_HOST_WFA_CONFIG_OCV_FRMTYPE_SAQUERY_RSP = 0x00000002, 3120*5113495bSYour Name WMI_HOST_WFA_CONFIG_OCV_FRMTYPE_FT_REASSOC_REQ = 0x00000004, 3121*5113495bSYour Name WMI_HOST_WFA_CONFIG_OCV_FRMTYPE_FILS_REASSOC_REQ = 0x00000008, 3122*5113495bSYour Name }; 3123*5113495bSYour Name 3124*5113495bSYour Name /** 3125*5113495bSYour Name * struct ocv_wfatest_params - ocv WFA test params 3126*5113495bSYour Name * @frame_type: frame type req for OCV config 3127*5113495bSYour Name * @freq: frequency to set 3128*5113495bSYour Name */ 3129*5113495bSYour Name struct ocv_wfatest_params { 3130*5113495bSYour Name uint8_t frame_type; 3131*5113495bSYour Name uint32_t freq; 3132*5113495bSYour Name }; 3133*5113495bSYour Name 3134*5113495bSYour Name /** 3135*5113495bSYour Name * struct set_wfatest_params - WFA test params 3136*5113495bSYour Name * @vdev_id: vdev id 3137*5113495bSYour Name * @value: wfa test config value 3138*5113495bSYour Name * @cmd: WFA test command 3139*5113495bSYour Name * @ocv_param: pointer to ocv params 3140*5113495bSYour Name */ 3141*5113495bSYour Name struct set_wfatest_params { 3142*5113495bSYour Name uint8_t vdev_id; 3143*5113495bSYour Name uint32_t value; 3144*5113495bSYour Name enum wfa_test_cmds cmd; 3145*5113495bSYour Name struct ocv_wfatest_params *ocv_param; 3146*5113495bSYour Name }; 3147*5113495bSYour Name 3148*5113495bSYour Name /* 3149*5113495bSYour Name * msduq_update_params - MSDUQ update param structure 3150*5113495bSYour Name * @tid_num: TID number 3151*5113495bSYour Name * @msduq_update_mask: update bit mask 3152*5113495bSYour Name * @qdepth_thresh_value: threshold value for the queue depth 3153*5113495bSYour Name */ 3154*5113495bSYour Name 3155*5113495bSYour Name #define QDEPTH_THRESH_MAX_UPDATES 1 3156*5113495bSYour Name 3157*5113495bSYour Name typedef struct { 3158*5113495bSYour Name uint32_t tid_num; 3159*5113495bSYour Name uint32_t msduq_update_mask; 3160*5113495bSYour Name uint32_t qdepth_thresh_value; 3161*5113495bSYour Name } msduq_update_params; 3162*5113495bSYour Name 3163*5113495bSYour Name /** 3164*5113495bSYour Name * struct set_qdepth_thresh_params - MSDU Queue Depth Threshold Params 3165*5113495bSYour Name * @vdev_id: vdev id 3166*5113495bSYour Name * @pdev_id: pdev id 3167*5113495bSYour Name * @mac_addr: MAC address 3168*5113495bSYour Name * @num_of_msduq_updates: holds the number of tid updates 3169*5113495bSYour Name * @update_params:tid updates 3170*5113495bSYour Name */ 3171*5113495bSYour Name struct set_qdepth_thresh_params { 3172*5113495bSYour Name uint32_t pdev_id; 3173*5113495bSYour Name uint32_t vdev_id; 3174*5113495bSYour Name uint8_t mac_addr[QDF_MAC_ADDR_SIZE]; 3175*5113495bSYour Name uint32_t num_of_msduq_updates; 3176*5113495bSYour Name msduq_update_params update_params[QDEPTH_THRESH_MAX_UPDATES]; 3177*5113495bSYour Name }; 3178*5113495bSYour Name 3179*5113495bSYour Name /** 3180*5113495bSYour Name * struct peer_chan_width_switch_info - Peer channel width capability params 3181*5113495bSYour Name * @mac_addr: MAC address of peer 3182*5113495bSYour Name * @chan_width: Max supported channel width of peer 3183*5113495bSYour Name * (enum ieee80211_cwm_width) 3184*5113495bSYour Name * @puncture_bitmap: Puncture bitmap of peer 3185*5113495bSYour Name */ 3186*5113495bSYour Name struct peer_chan_width_switch_info { 3187*5113495bSYour Name uint8_t mac_addr[QDF_MAC_ADDR_SIZE]; 3188*5113495bSYour Name uint32_t chan_width; 3189*5113495bSYour Name uint16_t puncture_bitmap; 3190*5113495bSYour Name }; 3191*5113495bSYour Name 3192*5113495bSYour Name /** 3193*5113495bSYour Name * struct set_bridge_mac_addr_params - set bridge MAC addr params 3194*5113495bSYour Name * @bridge_addr: Pointer to bridge macaddr 3195*5113495bSYour Name */ 3196*5113495bSYour Name struct set_bridge_mac_addr_params { 3197*5113495bSYour Name uint8_t *bridge_addr; 3198*5113495bSYour Name }; 3199*5113495bSYour Name 3200*5113495bSYour Name /** 3201*5113495bSYour Name * struct peer_del_all_wds_entries_params - WDS peer entries del params 3202*5113495bSYour Name * @wds_macaddr: Pointer to destination macaddr 3203*5113495bSYour Name * @peer_macaddr: Pointer to peer mac addr 3204*5113495bSYour Name * @flags: flags 3205*5113495bSYour Name */ 3206*5113495bSYour Name struct peer_del_all_wds_entries_params { 3207*5113495bSYour Name uint8_t *wds_macaddr; 3208*5113495bSYour Name uint8_t *peer_macaddr; 3209*5113495bSYour Name uint32_t flags; 3210*5113495bSYour Name }; 3211*5113495bSYour Name 3212*5113495bSYour Name /** 3213*5113495bSYour Name * struct set_ps_mode_params - PS mode params 3214*5113495bSYour Name * @vdev_id: vdev id 3215*5113495bSYour Name * @psmode: PS mode 3216*5113495bSYour Name */ 3217*5113495bSYour Name struct set_ps_mode_params { 3218*5113495bSYour Name uint8_t vdev_id; 3219*5113495bSYour Name uint8_t psmode; 3220*5113495bSYour Name }; 3221*5113495bSYour Name 3222*5113495bSYour Name /** 3223*5113495bSYour Name * struct tt_level_config - Set Thermal throttlling config 3224*5113495bSYour Name * @tmplwm: Temperature low water mark 3225*5113495bSYour Name * @tmphwm: Temperature high water mark 3226*5113495bSYour Name * @dcoffpercent: dc off percentage 3227*5113495bSYour Name * @priority: priority 3228*5113495bSYour Name */ 3229*5113495bSYour Name typedef struct { 3230*5113495bSYour Name uint32_t tmplwm; 3231*5113495bSYour Name uint32_t tmphwm; 3232*5113495bSYour Name uint32_t dcoffpercent; 3233*5113495bSYour Name uint32_t priority; 3234*5113495bSYour Name } tt_level_config; 3235*5113495bSYour Name 3236*5113495bSYour Name /** 3237*5113495bSYour Name * struct thermal_mitigation_params - Thermal mitigation params 3238*5113495bSYour Name * @pdev_id: pdev identifier 3239*5113495bSYour Name * @enable: Enable/Disable Thermal mitigation 3240*5113495bSYour Name * @dc: DC 3241*5113495bSYour Name * @dc_per_event: DC per event 3242*5113495bSYour Name * @num_thermal_conf: Number of thermal configurations to be sent 3243*5113495bSYour Name * @client_id: Thermal client id either apps or wpps 3244*5113495bSYour Name * @priority: Priority of apps/wpps 3245*5113495bSYour Name * @levelconf: TT level config params 3246*5113495bSYour Name */ 3247*5113495bSYour Name struct thermal_mitigation_params { 3248*5113495bSYour Name uint32_t pdev_id; 3249*5113495bSYour Name uint32_t enable; 3250*5113495bSYour Name uint32_t dc; 3251*5113495bSYour Name uint32_t dc_per_event; 3252*5113495bSYour Name uint8_t num_thermal_conf; 3253*5113495bSYour Name uint8_t client_id; 3254*5113495bSYour Name uint8_t priority; 3255*5113495bSYour Name tt_level_config levelconf[THERMAL_LEVELS]; 3256*5113495bSYour Name }; 3257*5113495bSYour Name 3258*5113495bSYour Name /** 3259*5113495bSYour Name * struct smart_ant_enable_tx_feedback_params - SA tx feedback params 3260*5113495bSYour Name * @enable: Enable TX feedback for SA 3261*5113495bSYour Name */ 3262*5113495bSYour Name struct smart_ant_enable_tx_feedback_params { 3263*5113495bSYour Name int enable; 3264*5113495bSYour Name }; 3265*5113495bSYour Name 3266*5113495bSYour Name /** 3267*5113495bSYour Name * struct vdev_spectral_configure_params - SPectral config params 3268*5113495bSYour Name * @vdev_id: VDEV id 3269*5113495bSYour Name * @count: count 3270*5113495bSYour Name * @period: period 3271*5113495bSYour Name * @fft_recap: FFT recapture enable/disable 3272*5113495bSYour Name * @spectral_pri: Spectral priority 3273*5113495bSYour Name * @fft_size: FFT size 3274*5113495bSYour Name * @gc_enable: GC enable 3275*5113495bSYour Name * @restart_enable: restart enabled 3276*5113495bSYour Name * @noise_floor_ref: Noise floor reference 3277*5113495bSYour Name * @init_delay: Init delays 3278*5113495bSYour Name * @nb_tone_thr: NB tone threshold 3279*5113495bSYour Name * @str_bin_thr: STR BIN threshold 3280*5113495bSYour Name * @wb_rpt_mode: WB BIN threshold 3281*5113495bSYour Name * @rssi_rpt_mode: RSSI report mode 3282*5113495bSYour Name * @rssi_thr: RSSI threshold 3283*5113495bSYour Name * @pwr_format: Power format 3284*5113495bSYour Name * @rpt_mode: Report mode 3285*5113495bSYour Name * @bin_scale: BIN scale 3286*5113495bSYour Name * @dbm_adj: DBM adjust 3287*5113495bSYour Name * @chn_mask: chain mask 3288*5113495bSYour Name * @mode: Mode 3289*5113495bSYour Name * @center_freq1: Center frequency 1 3290*5113495bSYour Name * @center_freq2: Center frequency 2 3291*5113495bSYour Name * @chan_freq: Primary channel frequency 3292*5113495bSYour Name * @chan_width: Channel width 3293*5113495bSYour Name */ 3294*5113495bSYour Name struct vdev_spectral_configure_params { 3295*5113495bSYour Name uint8_t vdev_id; 3296*5113495bSYour Name uint16_t count; 3297*5113495bSYour Name uint16_t period; 3298*5113495bSYour Name uint16_t fft_recap; 3299*5113495bSYour Name uint16_t spectral_pri; 3300*5113495bSYour Name uint16_t fft_size; 3301*5113495bSYour Name uint16_t gc_enable; 3302*5113495bSYour Name uint16_t restart_enable; 3303*5113495bSYour Name uint16_t noise_floor_ref; 3304*5113495bSYour Name uint16_t init_delay; 3305*5113495bSYour Name uint16_t nb_tone_thr; 3306*5113495bSYour Name uint16_t str_bin_thr; 3307*5113495bSYour Name uint16_t wb_rpt_mode; 3308*5113495bSYour Name uint16_t rssi_rpt_mode; 3309*5113495bSYour Name uint16_t rssi_thr; 3310*5113495bSYour Name uint16_t pwr_format; 3311*5113495bSYour Name uint16_t rpt_mode; 3312*5113495bSYour Name uint16_t bin_scale; 3313*5113495bSYour Name uint16_t dbm_adj; 3314*5113495bSYour Name uint16_t chn_mask; 3315*5113495bSYour Name uint16_t mode; 3316*5113495bSYour Name uint16_t center_freq1; 3317*5113495bSYour Name uint16_t center_freq2; 3318*5113495bSYour Name uint16_t chan_freq; 3319*5113495bSYour Name uint16_t chan_width; 3320*5113495bSYour Name }; 3321*5113495bSYour Name 3322*5113495bSYour Name /** 3323*5113495bSYour Name * struct vdev_spectral_enable_params - Spectral enabled params 3324*5113495bSYour Name * @vdev_id: VDEV id 3325*5113495bSYour Name * @active_valid: Active valid 3326*5113495bSYour Name * @active: active 3327*5113495bSYour Name * @enabled_valid: Enabled valid 3328*5113495bSYour Name * @enabled: enabled 3329*5113495bSYour Name * @mode: Mode 3330*5113495bSYour Name */ 3331*5113495bSYour Name struct vdev_spectral_enable_params { 3332*5113495bSYour Name uint8_t vdev_id; 3333*5113495bSYour Name uint8_t active_valid; 3334*5113495bSYour Name uint8_t active; 3335*5113495bSYour Name uint8_t enabled_valid; 3336*5113495bSYour Name uint8_t enabled; 3337*5113495bSYour Name uint8_t mode; 3338*5113495bSYour Name }; 3339*5113495bSYour Name 3340*5113495bSYour Name #ifdef WLAN_CONV_SPECTRAL_ENABLE 3341*5113495bSYour Name /** 3342*5113495bSYour Name * struct spectral_fft_bin_markers_160_165mhz - Stores the start index 3343*5113495bSYour Name * and length of FFT bins in 165 MHz/Restricted 80p80 or 160 MHz 3344*5113495bSYour Name * mode in targets with a single Spectral detector 3345*5113495bSYour Name * @is_valid: Indicates whether this structure holds valid data 3346*5113495bSYour Name * @start_pri80: Starting index of FFT bins corresponding to primary 80 MHz 3347*5113495bSYour Name * in 165 MHz/Restricted 80p80 or 160 MHz mode 3348*5113495bSYour Name * @num_pri80: Number of FFT bins corresponding to primary 80 MHz 3349*5113495bSYour Name * in 165 MHz/Restricted 80p80 or 160 MHz mode 3350*5113495bSYour Name * @start_5mhz: Starting index of FFT bins corresponding to extra 5 MHz 3351*5113495bSYour Name * in 165 MHz/Restricted 80p80 mode 3352*5113495bSYour Name * @num_5mhz: Number of FFT bins corresponding to extra 5 MHz 3353*5113495bSYour Name * in 165 MHz/Restricted 80p80 mode 3354*5113495bSYour Name * @start_sec80: Starting index of FFT bins corresponding to secondary 80 MHz 3355*5113495bSYour Name * in 165 MHz/Restricted 80p80 or 160 MHz mode 3356*5113495bSYour Name * @num_sec80: Number of FFT bins corresponding to secondary 80 MHz 3357*5113495bSYour Name * in 165 MHz/Restricted 80p80 or 160 MHz mode 3358*5113495bSYour Name */ 3359*5113495bSYour Name struct spectral_fft_bin_markers_160_165mhz { 3360*5113495bSYour Name bool is_valid; 3361*5113495bSYour Name uint16_t start_pri80; 3362*5113495bSYour Name uint16_t num_pri80; 3363*5113495bSYour Name uint16_t start_5mhz; 3364*5113495bSYour Name uint16_t num_5mhz; 3365*5113495bSYour Name uint16_t start_sec80; 3366*5113495bSYour Name uint16_t num_sec80; 3367*5113495bSYour Name }; 3368*5113495bSYour Name 3369*5113495bSYour Name /** 3370*5113495bSYour Name * struct spectral_startscan_resp_params - Params from the event send by 3371*5113495bSYour Name * FW as a response to the scan start command 3372*5113495bSYour Name * @pdev_id: Pdev id 3373*5113495bSYour Name * @smode: Spectral scan mode 3374*5113495bSYour Name * @num_fft_bin_index: Number of TLVs with FFT bin start and end indices 3375*5113495bSYour Name * @num_det_info: Number of detector info TLVs 3376*5113495bSYour Name */ 3377*5113495bSYour Name struct spectral_startscan_resp_params { 3378*5113495bSYour Name uint32_t pdev_id; 3379*5113495bSYour Name enum spectral_scan_mode smode; 3380*5113495bSYour Name uint8_t num_fft_bin_index; 3381*5113495bSYour Name uint8_t num_det_info; 3382*5113495bSYour Name }; 3383*5113495bSYour Name 3384*5113495bSYour Name /** 3385*5113495bSYour Name * struct spectral_session_chan_info - Spectral scan session channel information 3386*5113495bSYour Name * @operating_pri20_freq: frequency of primary 20MHz channel (in MHz) 3387*5113495bSYour Name * @operating_cfreq1: center frequency 1 of operating channel (in MHz) 3388*5113495bSYour Name * @operating_cfreq2: center frequency 2 of operating channel (in MHz). 3389*5113495bSYour Name * For contiguous channels, @operating_cfreq1 should be represent the center of 3390*5113495bSYour Name * the entire span and @operating_cfreq2 should be 0, whereas for non-contiguous 3391*5113495bSYour Name * channels, @operating_cfreq1 should represent the center of primary segment 3392*5113495bSYour Name * and @@operating_cfreq2 should represent the center of secondary segment. 3393*5113495bSYour Name * @operating_bw: operating bandwidth enumeration 3394*5113495bSYour Name * @operating_puncture_20mhz_bitmap: Puncture bitmap of operating channel. 3395*5113495bSYour Name * Each bit indicates one 20 MHz punctured channel 3396*5113495bSYour Name * @sscan_cfreq1: center frequency 1 (in MHz) of the channel in which spectral 3397*5113495bSYour Name * scan is done 3398*5113495bSYour Name * @sscan_cfreq2: center frequency 2 (in MHz) of the channel in which spectral 3399*5113495bSYour Name * scan is done. For contiguous channels, @sscan_cfreq1 should be represent the 3400*5113495bSYour Name * center of the entire span and @sscan_cfreq2 should be 0, whereas for 3401*5113495bSYour Name * non-contiguous channels, @sscan_cfreq1 should represent the center of primary 3402*5113495bSYour Name * segment and @sscan_cfreq2 should represent the center of secondary segment. 3403*5113495bSYour Name * @sscan_bw: bandwidth of the channel in which spectral scan is done 3404*5113495bSYour Name * @sscan_puncture_20mhz_bitmap: Puncture bitmap of channel in which spectral 3405*5113495bSYour Name * scan is done. Each bit indicates one 20 MHz punctured channel. 3406*5113495bSYour Name */ 3407*5113495bSYour Name struct spectral_session_chan_info { 3408*5113495bSYour Name qdf_freq_t operating_pri20_freq; 3409*5113495bSYour Name qdf_freq_t operating_cfreq1; 3410*5113495bSYour Name qdf_freq_t operating_cfreq2; 3411*5113495bSYour Name enum phy_ch_width operating_bw; 3412*5113495bSYour Name uint16_t operating_puncture_20mhz_bitmap; 3413*5113495bSYour Name 3414*5113495bSYour Name qdf_freq_t sscan_cfreq1; 3415*5113495bSYour Name qdf_freq_t sscan_cfreq2; 3416*5113495bSYour Name enum phy_ch_width sscan_bw; 3417*5113495bSYour Name uint16_t sscan_puncture_20mhz_bitmap; 3418*5113495bSYour Name }; 3419*5113495bSYour Name 3420*5113495bSYour Name /** 3421*5113495bSYour Name * struct spectral_session_det_info - Detector info for a spectral scan session 3422*5113495bSYour Name * @det_id: detector ID 3423*5113495bSYour Name * @start_freq: start frequency (in MHz) of this detector 3424*5113495bSYour Name * @end_freq: end frequency (in MHz) of this detector 3425*5113495bSYour Name */ 3426*5113495bSYour Name struct spectral_session_det_info { 3427*5113495bSYour Name uint8_t det_id; 3428*5113495bSYour Name qdf_freq_t start_freq; 3429*5113495bSYour Name qdf_freq_t end_freq; 3430*5113495bSYour Name }; 3431*5113495bSYour Name 3432*5113495bSYour Name /** 3433*5113495bSYour Name * struct spectral_capabilities_event_params - parameters related to Spectral 3434*5113495bSYour Name * capabilities event 3435*5113495bSYour Name * @num_sscan_bw_caps: Number of spectral_scan_bw_capabilities TLVs 3436*5113495bSYour Name * @num_fft_size_caps: Number of spectral_fft_size_capabilities TLVs 3437*5113495bSYour Name */ 3438*5113495bSYour Name struct spectral_capabilities_event_params { 3439*5113495bSYour Name uint8_t num_sscan_bw_caps; 3440*5113495bSYour Name uint8_t num_fft_size_caps; 3441*5113495bSYour Name }; 3442*5113495bSYour Name 3443*5113495bSYour Name /** 3444*5113495bSYour Name * struct spectral_scan_bw_capabilities - Spectral scan bandwidth caps 3445*5113495bSYour Name * that are extracted from Spectral capabilities WMI event 3446*5113495bSYour Name * @pdev_id: pdev ID 3447*5113495bSYour Name * @smode: Spectral scan mode 3448*5113495bSYour Name * @operating_bw: Operating bandwidth 3449*5113495bSYour Name * @supported_bws: Supported sscan bandwidths bitmap for given @pdev_id, 3450*5113495bSYour Name * @operating_bw, and @smode 3451*5113495bSYour Name */ 3452*5113495bSYour Name struct spectral_scan_bw_capabilities { 3453*5113495bSYour Name uint8_t pdev_id; 3454*5113495bSYour Name enum spectral_scan_mode smode; 3455*5113495bSYour Name enum phy_ch_width operating_bw; 3456*5113495bSYour Name uint32_t supported_bws; 3457*5113495bSYour Name }; 3458*5113495bSYour Name 3459*5113495bSYour Name /** 3460*5113495bSYour Name * struct spectral_fft_size_capabilities - Spectral scan FFT size caps 3461*5113495bSYour Name * that are extracted from Spectral capabilities WMI event 3462*5113495bSYour Name * @pdev_id: pdev ID 3463*5113495bSYour Name * @sscan_bw: Spectral scan bandwidth 3464*5113495bSYour Name * @supports_fft_sizes: Supported FFT sizes bitmap for given @pdev_id and 3465*5113495bSYour Name * @sscan_bw 3466*5113495bSYour Name */ 3467*5113495bSYour Name struct spectral_fft_size_capabilities { 3468*5113495bSYour Name uint8_t pdev_id; 3469*5113495bSYour Name enum phy_ch_width sscan_bw; 3470*5113495bSYour Name uint32_t supports_fft_sizes; 3471*5113495bSYour Name }; 3472*5113495bSYour Name #endif 3473*5113495bSYour Name 3474*5113495bSYour Name /** 3475*5113495bSYour Name * struct pdev_set_regdomain_params - PDEV set reg domain params 3476*5113495bSYour Name * @currentRDinuse: Current Reg domain 3477*5113495bSYour Name * @currentRD2G: Current Reg domain 2G 3478*5113495bSYour Name * @currentRD5G: Current Reg domain 5G 3479*5113495bSYour Name * @ctl_2G: CTL 2G 3480*5113495bSYour Name * @ctl_5G: CTL 5G 3481*5113495bSYour Name * @dfsDomain: DFS domain 3482*5113495bSYour Name * @pdev_id: pdev_id 3483*5113495bSYour Name */ 3484*5113495bSYour Name struct pdev_set_regdomain_params { 3485*5113495bSYour Name uint16_t currentRDinuse; 3486*5113495bSYour Name uint16_t currentRD2G; 3487*5113495bSYour Name uint16_t currentRD5G; 3488*5113495bSYour Name uint32_t ctl_2G; 3489*5113495bSYour Name uint32_t ctl_5G; 3490*5113495bSYour Name uint8_t dfsDomain; 3491*5113495bSYour Name uint32_t pdev_id; 3492*5113495bSYour Name }; 3493*5113495bSYour Name 3494*5113495bSYour Name /** 3495*5113495bSYour Name * struct set_beacon_filter_params - Set beacon filter params 3496*5113495bSYour Name * @vdev_id: VDEV id 3497*5113495bSYour Name * @ie: Pointer to IE fields 3498*5113495bSYour Name */ 3499*5113495bSYour Name struct set_beacon_filter_params { 3500*5113495bSYour Name uint8_t vdev_id; 3501*5113495bSYour Name uint32_t *ie; 3502*5113495bSYour Name }; 3503*5113495bSYour Name 3504*5113495bSYour Name /** 3505*5113495bSYour Name * struct remove_beacon_filter_params - Remove beacon filter params 3506*5113495bSYour Name * @vdev_id: VDEV id 3507*5113495bSYour Name */ 3508*5113495bSYour Name struct remove_beacon_filter_params { 3509*5113495bSYour Name uint8_t vdev_id; 3510*5113495bSYour Name }; 3511*5113495bSYour Name 3512*5113495bSYour Name /** 3513*5113495bSYour Name * struct mgmt_params - Mgmt params 3514*5113495bSYour Name * @vdev_id: vdev id 3515*5113495bSYour Name * @buf_len: length of frame buffer 3516*5113495bSYour Name * @wbuf: frame buffer 3517*5113495bSYour Name */ 3518*5113495bSYour Name struct mgmt_params { 3519*5113495bSYour Name int vdev_id; 3520*5113495bSYour Name uint32_t buf_len; 3521*5113495bSYour Name qdf_nbuf_t wbuf; 3522*5113495bSYour Name }; 3523*5113495bSYour Name 3524*5113495bSYour Name /** 3525*5113495bSYour Name * struct addba_clearresponse_params - Addba clear response params 3526*5113495bSYour Name * @vdev_id: VDEV id 3527*5113495bSYour Name */ 3528*5113495bSYour Name struct addba_clearresponse_params { 3529*5113495bSYour Name uint8_t vdev_id; 3530*5113495bSYour Name }; 3531*5113495bSYour Name 3532*5113495bSYour Name /** 3533*5113495bSYour Name * struct addba_send_params - ADDBA send params 3534*5113495bSYour Name * @vdev_id: vdev id 3535*5113495bSYour Name * @tidno: TID 3536*5113495bSYour Name * @buffersize: buffer size 3537*5113495bSYour Name */ 3538*5113495bSYour Name struct addba_send_params { 3539*5113495bSYour Name uint8_t vdev_id; 3540*5113495bSYour Name uint8_t tidno; 3541*5113495bSYour Name uint16_t buffersize; 3542*5113495bSYour Name }; 3543*5113495bSYour Name 3544*5113495bSYour Name /** 3545*5113495bSYour Name * struct delba_send_params - DELBA send params 3546*5113495bSYour Name * @vdev_id: vdev id 3547*5113495bSYour Name * @tidno: TID 3548*5113495bSYour Name * @initiator: initiator 3549*5113495bSYour Name * @reasoncode: reason code 3550*5113495bSYour Name */ 3551*5113495bSYour Name struct delba_send_params { 3552*5113495bSYour Name uint8_t vdev_id; 3553*5113495bSYour Name uint8_t tidno; 3554*5113495bSYour Name uint8_t initiator; 3555*5113495bSYour Name uint16_t reasoncode; 3556*5113495bSYour Name }; 3557*5113495bSYour Name /** 3558*5113495bSYour Name * struct addba_setresponse_params - Set ADDBA response params 3559*5113495bSYour Name * @vdev_id: vdev id 3560*5113495bSYour Name * @tidno: TID 3561*5113495bSYour Name * @statuscode: status code in response 3562*5113495bSYour Name */ 3563*5113495bSYour Name struct addba_setresponse_params { 3564*5113495bSYour Name uint8_t vdev_id; 3565*5113495bSYour Name uint8_t tidno; 3566*5113495bSYour Name uint16_t statuscode; 3567*5113495bSYour Name }; 3568*5113495bSYour Name 3569*5113495bSYour Name /** 3570*5113495bSYour Name * struct singleamsdu_params - Single AMSDU params 3571*5113495bSYour Name * @vdev_id: vdev is 3572*5113495bSYour Name * @tidno: TID 3573*5113495bSYour Name */ 3574*5113495bSYour Name struct singleamsdu_params { 3575*5113495bSYour Name uint8_t vdev_id; 3576*5113495bSYour Name uint8_t tidno; 3577*5113495bSYour Name }; 3578*5113495bSYour Name 3579*5113495bSYour Name /** 3580*5113495bSYour Name * struct mu_scan_params - MU scan params 3581*5113495bSYour Name * @id: id 3582*5113495bSYour Name * @type: type 3583*5113495bSYour Name * @duration: Duration 3584*5113495bSYour Name * @lteu_tx_power: LTEU tx power 3585*5113495bSYour Name * @rssi_thr_bssid: 3586*5113495bSYour Name * @rssi_thr_sta: 3587*5113495bSYour Name * @rssi_thr_sc: 3588*5113495bSYour Name * @plmn_id: 3589*5113495bSYour Name * @alpha_num_bssid: alpha for num active bssid calculation 3590*5113495bSYour Name */ 3591*5113495bSYour Name struct mu_scan_params { 3592*5113495bSYour Name uint8_t id; 3593*5113495bSYour Name uint8_t type; 3594*5113495bSYour Name uint32_t duration; 3595*5113495bSYour Name uint32_t lteu_tx_power; 3596*5113495bSYour Name uint32_t rssi_thr_bssid; 3597*5113495bSYour Name uint32_t rssi_thr_sta; 3598*5113495bSYour Name uint32_t rssi_thr_sc; 3599*5113495bSYour Name uint32_t plmn_id; 3600*5113495bSYour Name uint32_t alpha_num_bssid; 3601*5113495bSYour Name }; 3602*5113495bSYour Name 3603*5113495bSYour Name /** 3604*5113495bSYour Name * struct lteu_config_params - LTEU config params 3605*5113495bSYour Name * @lteu_gpio_start: start MU/AP scan after GPIO toggle 3606*5113495bSYour Name * @lteu_num_bins: no. of elements in the following arrays 3607*5113495bSYour Name * @use_actual_nf: whether to use the actual NF obtained or a hardcoded one 3608*5113495bSYour Name * @lteu_weight: weights for MU algo 3609*5113495bSYour Name * @lteu_thresh: thresholds for MU algo 3610*5113495bSYour Name * @lteu_gamma: gamma's for MU algo 3611*5113495bSYour Name * @lteu_scan_timeout: timeout in ms to gpio toggle 3612*5113495bSYour Name * @alpha_num_bssid: alpha for num active bssid calculation 3613*5113495bSYour Name * @wifi_tx_power: Wifi Tx power 3614*5113495bSYour Name * @allow_err_packets: allow error packets 3615*5113495bSYour Name */ 3616*5113495bSYour Name struct lteu_config_params { 3617*5113495bSYour Name uint8_t lteu_gpio_start; 3618*5113495bSYour Name uint8_t lteu_num_bins; 3619*5113495bSYour Name uint8_t use_actual_nf; 3620*5113495bSYour Name uint32_t lteu_weight[LTEU_MAX_BINS]; 3621*5113495bSYour Name uint32_t lteu_thresh[LTEU_MAX_BINS]; 3622*5113495bSYour Name uint32_t lteu_gamma[LTEU_MAX_BINS]; 3623*5113495bSYour Name uint32_t lteu_scan_timeout; 3624*5113495bSYour Name uint32_t alpha_num_bssid; 3625*5113495bSYour Name uint32_t wifi_tx_power; 3626*5113495bSYour Name uint32_t allow_err_packets; 3627*5113495bSYour Name }; 3628*5113495bSYour Name 3629*5113495bSYour Name struct wmi_macaddr_t { 3630*5113495bSYour Name /** upper 4 bytes of MAC address */ 3631*5113495bSYour Name uint32_t mac_addr31to0; 3632*5113495bSYour Name /** lower 2 bytes of MAC address */ 3633*5113495bSYour Name uint32_t mac_addr47to32; 3634*5113495bSYour Name }; 3635*5113495bSYour Name 3636*5113495bSYour Name /** 3637*5113495bSYour Name * struct wlan_profile_params - WLAN profile params 3638*5113495bSYour Name * @param_id: param id 3639*5113495bSYour Name * @profile_id: profile id 3640*5113495bSYour Name * @enable: enable 3641*5113495bSYour Name */ 3642*5113495bSYour Name struct wlan_profile_params { 3643*5113495bSYour Name uint32_t param_id; 3644*5113495bSYour Name uint32_t profile_id; 3645*5113495bSYour Name uint32_t enable; 3646*5113495bSYour Name }; 3647*5113495bSYour Name 3648*5113495bSYour Name /** 3649*5113495bSYour Name * struct wmi_host_wme_vparams - WME params 3650*5113495bSYour Name * @acm: ACM paramete 3651*5113495bSYour Name * @aifs: AIFSN parameters 3652*5113495bSYour Name * @cwmin: cwmin in exponential form 3653*5113495bSYour Name * @cwmax: cwmax in exponential form 3654*5113495bSYour Name * @txoplimit: txopLimit 3655*5113495bSYour Name * @mu_edca_timer: MU EDCA timer 3656*5113495bSYour Name * @noackpolicy: No-Ack Policy: 0=ack, 1=no-ack 3657*5113495bSYour Name */ 3658*5113495bSYour Name struct wmi_host_wme_vparams { 3659*5113495bSYour Name u_int32_t acm; 3660*5113495bSYour Name u_int32_t aifs; 3661*5113495bSYour Name u_int32_t cwmin; 3662*5113495bSYour Name u_int32_t cwmax; 3663*5113495bSYour Name union { 3664*5113495bSYour Name u_int32_t txoplimit; 3665*5113495bSYour Name u_int32_t mu_edca_timer; 3666*5113495bSYour Name }; 3667*5113495bSYour Name u_int32_t noackpolicy; 3668*5113495bSYour Name }; 3669*5113495bSYour Name 3670*5113495bSYour Name /** 3671*5113495bSYour Name * struct ratepwr_table_params - Rate power table params 3672*5113495bSYour Name * @ratepwr_tbl: pointer to rate power table 3673*5113495bSYour Name * @ratepwr_len: rate power table len 3674*5113495bSYour Name */ 3675*5113495bSYour Name struct ratepwr_table_params { 3676*5113495bSYour Name uint8_t *ratepwr_tbl; 3677*5113495bSYour Name uint16_t ratepwr_len; 3678*5113495bSYour Name }; 3679*5113495bSYour Name 3680*5113495bSYour Name /** 3681*5113495bSYour Name * struct ratepwr_chainmsk_params - Rate power chainmask params 3682*5113495bSYour Name * @ratepwr_chain_tbl: pointer to ratepwr chain table 3683*5113495bSYour Name * @num_rate: number of rate in table 3684*5113495bSYour Name * @pream_type: preamble type 3685*5113495bSYour Name * @ops: ops 3686*5113495bSYour Name */ 3687*5113495bSYour Name struct ratepwr_chainmsk_params { 3688*5113495bSYour Name uint32_t *ratepwr_chain_tbl; 3689*5113495bSYour Name uint16_t num_rate; 3690*5113495bSYour Name uint8_t pream_type; 3691*5113495bSYour Name uint8_t ops; 3692*5113495bSYour Name }; 3693*5113495bSYour Name 3694*5113495bSYour Name struct macaddr_params { 3695*5113495bSYour Name uint8_t *macaddr; 3696*5113495bSYour Name }; 3697*5113495bSYour Name 3698*5113495bSYour Name /** 3699*5113495bSYour Name * struct acparams_params - acparams config structure 3700*5113495bSYour Name * @ac: AC to configure 3701*5113495bSYour Name * @use_rts: Use rts for this AC 3702*5113495bSYour Name * @aggrsize_scaling: Aggregate size scaling for the AC 3703*5113495bSYour Name * @min_kbps: min kbps req 3704*5113495bSYour Name */ 3705*5113495bSYour Name struct acparams_params { 3706*5113495bSYour Name uint8_t ac; 3707*5113495bSYour Name uint8_t use_rts; 3708*5113495bSYour Name uint8_t aggrsize_scaling; 3709*5113495bSYour Name uint32_t min_kbps; 3710*5113495bSYour Name }; 3711*5113495bSYour Name 3712*5113495bSYour Name /** 3713*5113495bSYour Name * struct vap_dscp_tid_map_params - DSCP tid map params 3714*5113495bSYour Name * @vdev_id: vdev id 3715*5113495bSYour Name * @dscp_to_tid_map: pointer to array of tid to dscp map table 3716*5113495bSYour Name */ 3717*5113495bSYour Name struct vap_dscp_tid_map_params { 3718*5113495bSYour Name uint8_t vdev_id; 3719*5113495bSYour Name uint32_t *dscp_to_tid_map; 3720*5113495bSYour Name }; 3721*5113495bSYour Name 3722*5113495bSYour Name /** 3723*5113495bSYour Name * struct proxy_ast_reserve_params - Proxy AST reserve params 3724*5113495bSYour Name * @macaddr: macaddr for proxy ast entry 3725*5113495bSYour Name */ 3726*5113495bSYour Name struct proxy_ast_reserve_params { 3727*5113495bSYour Name uint8_t *macaddr; 3728*5113495bSYour Name }; 3729*5113495bSYour Name 3730*5113495bSYour Name /** 3731*5113495bSYour Name * struct fips_params - FIPS params config 3732*5113495bSYour Name * @key: pointer to key 3733*5113495bSYour Name * @key_len: length of key 3734*5113495bSYour Name * @data: pointer data buf 3735*5113495bSYour Name * @data_len: length of data buf 3736*5113495bSYour Name * @mode: mode 3737*5113495bSYour Name * @op: operation 3738*5113495bSYour Name * @pdev_id: pdev_id for identifying the MAC 3739*5113495bSYour Name */ 3740*5113495bSYour Name struct fips_params { 3741*5113495bSYour Name uint8_t *key; 3742*5113495bSYour Name uint32_t key_len; 3743*5113495bSYour Name uint8_t *data; 3744*5113495bSYour Name uint32_t data_len; 3745*5113495bSYour Name uint32_t mode; 3746*5113495bSYour Name uint32_t op; 3747*5113495bSYour Name uint32_t pdev_id; 3748*5113495bSYour Name }; 3749*5113495bSYour Name 3750*5113495bSYour Name #ifdef WLAN_FEATURE_FIPS_BER_CCMGCM 3751*5113495bSYour Name #define MAX_KEY_LEN_FIPS_EXTEND 64 3752*5113495bSYour Name #define MAX_NONCEIV_LEN_FIPS_EXTEND 16 3753*5113495bSYour Name /** 3754*5113495bSYour Name * struct fips_extend_cmd_params - FIPS extend params config for first frag 3755*5113495bSYour Name * @fips_cmd: 1 - Encrypt, 2 - Decrypt 3756*5113495bSYour Name * @key_cipher: 0 - CCM, 1 - GCM 3757*5113495bSYour Name * @key_len: length of key 3758*5113495bSYour Name * @key: key_data 3759*5113495bSYour Name * @nonce_iv_len: length of nonce or iv 3760*5113495bSYour Name * @nonce_iv: nonce_iv 3761*5113495bSYour Name * @tag_len: length of tag/mic 3762*5113495bSYour Name * @aad_len: length of aad 3763*5113495bSYour Name * @payload_len: length of payload 3764*5113495bSYour Name */ 3765*5113495bSYour Name struct fips_extend_cmd_params { 3766*5113495bSYour Name u_int32_t fips_cmd; 3767*5113495bSYour Name u_int32_t key_cipher; 3768*5113495bSYour Name u_int32_t key_len; 3769*5113495bSYour Name u_int8_t key[MAX_KEY_LEN_FIPS_EXTEND]; 3770*5113495bSYour Name u_int32_t nonce_iv_len; 3771*5113495bSYour Name u_int8_t nonce_iv[MAX_NONCEIV_LEN_FIPS_EXTEND]; 3772*5113495bSYour Name u_int32_t tag_len; 3773*5113495bSYour Name u_int32_t aad_len; 3774*5113495bSYour Name u_int32_t payload_len; 3775*5113495bSYour Name }; 3776*5113495bSYour Name 3777*5113495bSYour Name /** 3778*5113495bSYour Name * struct fips_extend_params - FIPS extend params config 3779*5113495bSYour Name * @pdev_id: pdev_id for identifying the MAC 3780*5113495bSYour Name * @cookie: cookie value 3781*5113495bSYour Name * @frag_idx: fragment index 3782*5113495bSYour Name * @more_bit: more bit 3783*5113495bSYour Name * @data_len: length of data buf 3784*5113495bSYour Name * @cmd_params: cmd_params set for first fragment 3785*5113495bSYour Name * @data: pointer data buf 3786*5113495bSYour Name */ 3787*5113495bSYour Name struct fips_extend_params { 3788*5113495bSYour Name uint32_t pdev_id; 3789*5113495bSYour Name u_int32_t cookie; 3790*5113495bSYour Name u_int32_t frag_idx; 3791*5113495bSYour Name u_int32_t more_bit; 3792*5113495bSYour Name u_int32_t data_len; 3793*5113495bSYour Name struct fips_extend_cmd_params cmd_params; 3794*5113495bSYour Name u_int32_t *data; 3795*5113495bSYour Name }; 3796*5113495bSYour Name 3797*5113495bSYour Name /** 3798*5113495bSYour Name * struct fips_mode_set_params - FIPS mode enable param 3799*5113495bSYour Name * @pdev_id: pdev_id for identifying the MAC 3800*5113495bSYour Name * @mode: value to disable or enable fips extend mode 3801*5113495bSYour Name */ 3802*5113495bSYour Name struct fips_mode_set_params { 3803*5113495bSYour Name uint32_t pdev_id; 3804*5113495bSYour Name uint32_t mode; 3805*5113495bSYour Name }; 3806*5113495bSYour Name #endif 3807*5113495bSYour Name 3808*5113495bSYour Name #ifdef WLAN_FEATURE_DISA_FIPS 3809*5113495bSYour Name /** 3810*5113495bSYour Name * struct disa_encrypt_decrypt_req_params - disa encrypt request 3811*5113495bSYour Name * @vdev_id: virtual device id 3812*5113495bSYour Name * @key_flag: This indicates firmware to encrypt/decrypt payload 3813*5113495bSYour Name * see ENCRYPT_DECRYPT_FLAG 3814*5113495bSYour Name * @key_idx: Index used in storing key 3815*5113495bSYour Name * @key_cipher: cipher used for encryption/decryption 3816*5113495bSYour Name * Eg: see WMI_CIPHER_AES_CCM for CCMP 3817*5113495bSYour Name * @key_len: length of key data 3818*5113495bSYour Name * @key_txmic_len: length of Tx MIC 3819*5113495bSYour Name * @key_rxmic_len: length of Rx MIC 3820*5113495bSYour Name * @key_data: Key 3821*5113495bSYour Name * @pn: packet number 3822*5113495bSYour Name * @mac_header: MAC header 3823*5113495bSYour Name * @data_len: length of data 3824*5113495bSYour Name * @data: pointer to payload 3825*5113495bSYour Name */ 3826*5113495bSYour Name struct disa_encrypt_decrypt_req_params { 3827*5113495bSYour Name uint32_t vdev_id; 3828*5113495bSYour Name uint8_t key_flag; 3829*5113495bSYour Name uint32_t key_idx; 3830*5113495bSYour Name uint32_t key_cipher; 3831*5113495bSYour Name uint32_t key_len; 3832*5113495bSYour Name uint32_t key_txmic_len; 3833*5113495bSYour Name uint32_t key_rxmic_len; 3834*5113495bSYour Name uint8_t key_data[MAC_MAX_KEY_LENGTH]; 3835*5113495bSYour Name uint8_t pn[MAC_PN_LENGTH]; 3836*5113495bSYour Name uint8_t mac_header[MAX_MAC_HEADER_LEN]; 3837*5113495bSYour Name uint32_t data_len; 3838*5113495bSYour Name uint8_t *data; 3839*5113495bSYour Name }; 3840*5113495bSYour Name #endif 3841*5113495bSYour Name 3842*5113495bSYour Name /** 3843*5113495bSYour Name * struct periodic_chan_stats_params - periodic channel stats req param 3844*5113495bSYour Name * @stats_period: stats period update 3845*5113495bSYour Name * @enable: enable/disable 3846*5113495bSYour Name * @pdev_id: pdev id 3847*5113495bSYour Name */ 3848*5113495bSYour Name struct periodic_chan_stats_params { 3849*5113495bSYour Name uint32_t stats_period; 3850*5113495bSYour Name bool enable; 3851*5113495bSYour Name uint32_t pdev_id; 3852*5113495bSYour Name }; 3853*5113495bSYour Name 3854*5113495bSYour Name /** 3855*5113495bSYour Name * enum wmi_host_packet_power_rate_flags: packer power rate flags 3856*5113495bSYour Name * @WMI_HOST_FLAG_RTSENA: RTS enabled 3857*5113495bSYour Name * @WMI_HOST_FLAG_CTSENA: CTS enabled 3858*5113495bSYour Name * @WMI_HOST_FLAG_STBC: STBC is set 3859*5113495bSYour Name * @WMI_HOST_FLAG_LDPC: LDPC is set 3860*5113495bSYour Name * @WMI_HOST_FLAG_TXBF: Tx Bf enabled 3861*5113495bSYour Name * @WMI_HOST_FLAG_MU2: MU2 data 3862*5113495bSYour Name * @WMI_HOST_FLAG_MU3: MU3 data 3863*5113495bSYour Name * @WMI_HOST_FLAG_SERIES1: Rate series 1 3864*5113495bSYour Name * @WMI_HOST_FLAG_SGI: Short guard interval 3865*5113495bSYour Name */ 3866*5113495bSYour Name enum wmi_host_packet_power_rate_flags { 3867*5113495bSYour Name WMI_HOST_FLAG_RTSENA = 0x0001, 3868*5113495bSYour Name WMI_HOST_FLAG_CTSENA = 0x0002, 3869*5113495bSYour Name WMI_HOST_FLAG_STBC = 0x0004, 3870*5113495bSYour Name WMI_HOST_FLAG_LDPC = 0x0008, 3871*5113495bSYour Name WMI_HOST_FLAG_TXBF = 0x0010, 3872*5113495bSYour Name WMI_HOST_FLAG_MU2 = 0x0020, 3873*5113495bSYour Name WMI_HOST_FLAG_MU3 = 0x0040, 3874*5113495bSYour Name WMI_HOST_FLAG_SERIES1 = 0x0080, 3875*5113495bSYour Name WMI_HOST_FLAG_SGI = 0x0100, 3876*5113495bSYour Name }; 3877*5113495bSYour Name 3878*5113495bSYour Name /** 3879*5113495bSYour Name * enum wmi_host_su_mu_ofdma_flags: packer power su mu ofdma flags 3880*5113495bSYour Name * @WMI_HOST_FLAG_SU: SU Data 3881*5113495bSYour Name * @WMI_HOST_FLAG_DL_MU_MIMO_AC: DL AC MU data 3882*5113495bSYour Name * @WMI_HOST_FLAG_DL_MU_MIMO_AX: DL AX MU data 3883*5113495bSYour Name * @WMI_HOST_FLAG_DL_OFDMA: DL OFDMA data 3884*5113495bSYour Name * @WMI_HOST_FLAG_UL_OFDMA: UL OFDMA data 3885*5113495bSYour Name * @WMI_HOST_FLAG_UL_MU_MIMO: UL MU data 3886*5113495bSYour Name */ 3887*5113495bSYour Name enum wmi_host_su_mu_ofdma_flags { 3888*5113495bSYour Name WMI_HOST_FLAG_SU = 0x0001, 3889*5113495bSYour Name WMI_HOST_FLAG_DL_MU_MIMO_AC = 0x0002, 3890*5113495bSYour Name WMI_HOST_FLAG_DL_MU_MIMO_AX = 0x0003, 3891*5113495bSYour Name WMI_HOST_FLAG_DL_OFDMA = 0x0004, 3892*5113495bSYour Name WMI_HOST_FLAG_UL_OFDMA = 0x0005, 3893*5113495bSYour Name WMI_HOST_FLAG_UL_MU_MIMO = 0x0006, 3894*5113495bSYour Name }; 3895*5113495bSYour Name 3896*5113495bSYour Name /** 3897*5113495bSYour Name * enum wmi_host_preamble_type: preamble type 3898*5113495bSYour Name * @WMI_HOST_PREAMBLE_OFDM: ofdm rate 3899*5113495bSYour Name * @WMI_HOST_PREAMBLE_CCK: cck rate 3900*5113495bSYour Name * @WMI_HOST_PREAMBLE_HT: ht rate 3901*5113495bSYour Name * @WMI_HOST_PREAMBLE_VHT: vht rate 3902*5113495bSYour Name * @WMI_HOST_PREAMBLE_HE: 11ax he rate 3903*5113495bSYour Name */ 3904*5113495bSYour Name enum wmi_host_preamble_type { 3905*5113495bSYour Name WMI_HOST_PREAMBLE_OFDM = 0, 3906*5113495bSYour Name WMI_HOST_PREAMBLE_CCK = 1, 3907*5113495bSYour Name WMI_HOST_PREAMBLE_HT = 2, 3908*5113495bSYour Name WMI_HOST_PREAMBLE_VHT = 3, 3909*5113495bSYour Name WMI_HOST_PREAMBLE_HE = 4, 3910*5113495bSYour Name }; 3911*5113495bSYour Name 3912*5113495bSYour Name /** 3913*5113495bSYour Name * enum wmi_ratemask_type: ratemask type 3914*5113495bSYour Name * @WMI_RATEMASK_TYPE_CCK: CCK rate mask type 3915*5113495bSYour Name * @WMI_RATEMASK_TYPE_HT: HT rate mask type 3916*5113495bSYour Name * @WMI_RATEMASK_TYPE_VHT: VHT rate mask type 3917*5113495bSYour Name * @WMI_RATEMASK_TYPE_HE: HE rate mask type 3918*5113495bSYour Name * 3919*5113495bSYour Name * This is used for 'type' in WMI_VDEV_RATEMASK_CMDID 3920*5113495bSYour Name */ 3921*5113495bSYour Name enum wmi_ratemask_type { 3922*5113495bSYour Name WMI_RATEMASK_TYPE_CCK = 0, 3923*5113495bSYour Name WMI_RATEMASK_TYPE_HT = 1, 3924*5113495bSYour Name WMI_RATEMASK_TYPE_VHT = 2, 3925*5113495bSYour Name WMI_RATEMASK_TYPE_HE = 3, 3926*5113495bSYour Name }; 3927*5113495bSYour Name 3928*5113495bSYour Name /** 3929*5113495bSYour Name * enum peer_txq_flush_policy - Peer flush policy values 3930*5113495bSYour Name * @PEER_TXQ_FLUSH_POLICY_NONE: No policy configured for peer TID queues 3931*5113495bSYour Name * @PEER_TXQ_FLUSH_POLICY_TWT_SP_END: flush peer TID queues after SP end 3932*5113495bSYour Name * @PEER_TXQ_FLUSH_POLICY_INVALID: invalid policy 3933*5113495bSYour Name * 3934*5113495bSYour Name * This is mapped to 'flush_policy' in WMI_PEER_FLUSH_POLICY_CMDID 3935*5113495bSYour Name */ 3936*5113495bSYour Name enum peer_txq_flush_policy { 3937*5113495bSYour Name PEER_TXQ_FLUSH_POLICY_NONE = 0, 3938*5113495bSYour Name PEER_TXQ_FLUSH_POLICY_TWT_SP_END = 1, 3939*5113495bSYour Name /*keep last */ 3940*5113495bSYour Name PEER_TXQ_FLUSH_POLICY_INVALID, 3941*5113495bSYour Name }; 3942*5113495bSYour Name 3943*5113495bSYour Name /** 3944*5113495bSYour Name * struct peer_txq_flush_config_params: Peer TXQ flush configuration parameters 3945*5113495bSYour Name * @vdev_id: vdev id 3946*5113495bSYour Name * @peer: Peer mac address 3947*5113495bSYour Name * @tid_mask: TID queues of the peer being configured 3948*5113495bSYour Name * @policy: Policy to be applied 3949*5113495bSYour Name */ 3950*5113495bSYour Name struct peer_txq_flush_config_params { 3951*5113495bSYour Name uint8_t vdev_id; 3952*5113495bSYour Name uint8_t peer[QDF_MAC_ADDR_SIZE]; 3953*5113495bSYour Name uint32_t tid_mask; 3954*5113495bSYour Name enum peer_txq_flush_policy policy; 3955*5113495bSYour Name }; 3956*5113495bSYour Name 3957*5113495bSYour Name /** 3958*5113495bSYour Name * enum gpio_pull_type - GPIO PULL TYPE 3959*5113495bSYour Name * @WMI_HOST_GPIO_PULL_NONE: set gpio pull type to none 3960*5113495bSYour Name * @WMI_HOST_GPIO_PULL_UP: set gpio to pull up 3961*5113495bSYour Name * @WMI_HOST_GPIO_PULL_DOWN: set gpio to pull down 3962*5113495bSYour Name * @WMI_HOST_GPIO_PULL_MAX: invalid pull type 3963*5113495bSYour Name */ 3964*5113495bSYour Name enum gpio_pull_type { 3965*5113495bSYour Name WMI_HOST_GPIO_PULL_NONE = 0, 3966*5113495bSYour Name WMI_HOST_GPIO_PULL_UP = 1, 3967*5113495bSYour Name WMI_HOST_GPIO_PULL_DOWN = 2, 3968*5113495bSYour Name WMI_HOST_GPIO_PULL_MAX, 3969*5113495bSYour Name }; 3970*5113495bSYour Name 3971*5113495bSYour Name /** 3972*5113495bSYour Name * enum gpio_interrupt_mode - GPIO INTERRUPT MODE 3973*5113495bSYour Name * @WMI_HOST_GPIO_INTMODE_DISABLE: disable interrupt mode 3974*5113495bSYour Name * @WMI_HOST_GPIO_INTMODE_RISING_EDGE: interrupt with rising edge trigger 3975*5113495bSYour Name * @WMI_HOST_GPIO_INTMODE_FALLING_EDGE: interrupt with falling edge trigger 3976*5113495bSYour Name * @WMI_HOST_GPIO_INTMODE_BOTH_EDGE: interrupt with both edge trigger 3977*5113495bSYour Name * @WMI_HOST_GPIO_INTMODE_LEVEL_LOW: interrupt with gpio level low trigger 3978*5113495bSYour Name * @WMI_HOST_GPIO_INTMODE_LEVEL_HIGH: interrupt with gpio level high trigger 3979*5113495bSYour Name * @WMI_HOST_GPIO_INTMODE_MAX: invalid interrupt mode 3980*5113495bSYour Name */ 3981*5113495bSYour Name enum gpio_interrupt_mode { 3982*5113495bSYour Name WMI_HOST_GPIO_INTMODE_DISABLE = 0, 3983*5113495bSYour Name WMI_HOST_GPIO_INTMODE_RISING_EDGE = 1, 3984*5113495bSYour Name WMI_HOST_GPIO_INTMODE_FALLING_EDGE = 2, 3985*5113495bSYour Name WMI_HOST_GPIO_INTMODE_BOTH_EDGE = 3, 3986*5113495bSYour Name WMI_HOST_GPIO_INTMODE_LEVEL_LOW = 4, 3987*5113495bSYour Name WMI_HOST_GPIO_INTMODE_LEVEL_HIGH = 5, 3988*5113495bSYour Name WMI_HOST_GPIO_INTMODE_MAX, 3989*5113495bSYour Name }; 3990*5113495bSYour Name 3991*5113495bSYour Name /** 3992*5113495bSYour Name * enum gpio_direction - GPIO Direction 3993*5113495bSYour Name * @WMI_HOST_GPIO_INPUT: set gpio as input mode 3994*5113495bSYour Name * @WMI_HOST_GPIO_OUTPUT: set gpio as output mode 3995*5113495bSYour Name * @WMI_HOST_GPIO_DIR_MAX: invalid gpio direction 3996*5113495bSYour Name */ 3997*5113495bSYour Name enum gpio_direction { 3998*5113495bSYour Name WMI_HOST_GPIO_INPUT = 0, 3999*5113495bSYour Name WMI_HOST_GPIO_OUTPUT = 1, 4000*5113495bSYour Name WMI_HOST_GPIO_DIR_MAX, 4001*5113495bSYour Name }; 4002*5113495bSYour Name 4003*5113495bSYour Name /** 4004*5113495bSYour Name * enum fw_gpio_direction - GPIO Direction 4005*5113495bSYour Name * @WMI_FW_GPIO_OUTPUT: set gpio as output mode 4006*5113495bSYour Name * @WMI_FW_GPIO_INPUT: set gpio as input mode 4007*5113495bSYour Name */ 4008*5113495bSYour Name enum fw_gpio_direction { 4009*5113495bSYour Name WMI_FW_GPIO_OUTPUT = 0, 4010*5113495bSYour Name WMI_FW_GPIO_INPUT = 1, 4011*5113495bSYour Name }; 4012*5113495bSYour Name 4013*5113495bSYour Name /** 4014*5113495bSYour Name * enum gpio_value - GPIO Value 4015*5113495bSYour Name * @WMI_HOST_GPIO_LEVEL_LOW: set gpio output level low 4016*5113495bSYour Name * @WMI_HOST_GPIO_LEVEL_HIGH: set gpio output level high 4017*5113495bSYour Name * @WMI_HOST_GPIO_LEVEL_MAX: invalid gpio value 4018*5113495bSYour Name */ 4019*5113495bSYour Name enum gpio_value { 4020*5113495bSYour Name WMI_HOST_GPIO_LEVEL_LOW = 0, 4021*5113495bSYour Name WMI_HOST_GPIO_LEVEL_HIGH = 1, 4022*5113495bSYour Name WMI_HOST_GPIO_LEVEL_MAX, 4023*5113495bSYour Name }; 4024*5113495bSYour Name 4025*5113495bSYour Name /** 4026*5113495bSYour Name * enum gpio_init_enable - GPIO init enable 4027*5113495bSYour Name * @WMI_HOST_GPIO_INIT_DISABLE: Disable INIT 4028*5113495bSYour Name * @WMI_HOST_GPIO_INIT_ENABLE: Enable INIT 4029*5113495bSYour Name * @WMI_HOST_GPIO_INIT_MAX: invalid gpio init_enable 4030*5113495bSYour Name */ 4031*5113495bSYour Name enum gpio_init_enable { 4032*5113495bSYour Name WMI_HOST_GPIO_INIT_DISABLE = 0, 4033*5113495bSYour Name WMI_HOST_GPIO_INIT_ENABLE = 1, 4034*5113495bSYour Name WMI_HOST_GPIO_INIT_MAX, 4035*5113495bSYour Name }; 4036*5113495bSYour Name 4037*5113495bSYour Name /** 4038*5113495bSYour Name * enum gpio_drive - GPIO drive 4039*5113495bSYour Name * @WMI_HOST_GPIO_DRIVE_2MA: drive 2MA 4040*5113495bSYour Name * @WMI_HOST_GPIO_DRIVE_4MA: drive 4MA 4041*5113495bSYour Name * @WMI_HOST_GPIO_DRIVE_6MA: drive 6MA 4042*5113495bSYour Name * @WMI_HOST_GPIO_DRIVE_8MA: drive 8MA 4043*5113495bSYour Name * @WMI_HOST_GPIO_DRIVE_10MA: drive 10MA 4044*5113495bSYour Name * @WMI_HOST_GPIO_DRIVE_12MA: drive 12MA 4045*5113495bSYour Name * @WMI_HOST_GPIO_DRIVE_14MA: drive 14MA 4046*5113495bSYour Name * @WMI_HOST_GPIO_DRIVE_16MA: drive 16MA 4047*5113495bSYour Name * @WMI_HOST_GPIO_DRIVE_MAX: invalid gpio drive 4048*5113495bSYour Name */ 4049*5113495bSYour Name enum gpio_drive { 4050*5113495bSYour Name WMI_HOST_GPIO_DRIVE_2MA = 0, 4051*5113495bSYour Name WMI_HOST_GPIO_DRIVE_4MA = 1, 4052*5113495bSYour Name WMI_HOST_GPIO_DRIVE_6MA = 2, 4053*5113495bSYour Name WMI_HOST_GPIO_DRIVE_8MA = 3, 4054*5113495bSYour Name WMI_HOST_GPIO_DRIVE_10MA = 4, 4055*5113495bSYour Name WMI_HOST_GPIO_DRIVE_12MA = 5, 4056*5113495bSYour Name WMI_HOST_GPIO_DRIVE_14MA = 6, 4057*5113495bSYour Name WMI_HOST_GPIO_DRIVE_16MA = 7, 4058*5113495bSYour Name WMI_HOST_GPIO_DRIVE_MAX, 4059*5113495bSYour Name }; 4060*5113495bSYour Name 4061*5113495bSYour Name /** 4062*5113495bSYour Name * enum gpio_mux_config - GPIO mux_config 4063*5113495bSYour Name * @WMI_HOST_GPIO_MUX_DEFAULT: Default mux value 4064*5113495bSYour Name * @WMI_HOST_GPIO_MUX_MAX: maximum allowed gpio mux_config 4065*5113495bSYour Name */ 4066*5113495bSYour Name enum gpio_mux_config { 4067*5113495bSYour Name WMI_HOST_GPIO_MUX_DEFAULT = 0, 4068*5113495bSYour Name WMI_HOST_GPIO_MUX_MAX = 15, 4069*5113495bSYour Name }; 4070*5113495bSYour Name 4071*5113495bSYour Name /** 4072*5113495bSYour Name * struct wmi_host_gpio_input_event - GPIO input event structure 4073*5113495bSYour Name * @gpio_num: GPIO number which changed state 4074*5113495bSYour Name */ 4075*5113495bSYour Name typedef struct { 4076*5113495bSYour Name uint32_t gpio_num; /* GPIO number which changed state */ 4077*5113495bSYour Name } wmi_host_gpio_input_event; 4078*5113495bSYour Name 4079*5113495bSYour Name /** 4080*5113495bSYour Name * struct gpio_config_params - GPIO config params 4081*5113495bSYour Name * @pin_num: GPIO number to config 4082*5113495bSYour Name * @pin_dir: gpio direction, 1-input/0-output 4083*5113495bSYour Name * @pin_pull_type: pull type define in gpio_pull_type 4084*5113495bSYour Name * @pin_intr_mode: interrupt mode define in gpio_interrupt_mode 4085*5113495bSYour Name * @mux_config_val: 4086*5113495bSYour Name * @drive: 4087*5113495bSYour Name * @init_enable: 4088*5113495bSYour Name */ 4089*5113495bSYour Name struct gpio_config_params { 4090*5113495bSYour Name uint32_t pin_num; 4091*5113495bSYour Name enum gpio_direction pin_dir; 4092*5113495bSYour Name enum gpio_pull_type pin_pull_type; 4093*5113495bSYour Name enum gpio_interrupt_mode pin_intr_mode; 4094*5113495bSYour Name enum gpio_mux_config mux_config_val; 4095*5113495bSYour Name enum gpio_drive drive; 4096*5113495bSYour Name enum gpio_init_enable init_enable; 4097*5113495bSYour Name }; 4098*5113495bSYour Name 4099*5113495bSYour Name /** 4100*5113495bSYour Name * struct gpio_output_params - GPIO output params 4101*5113495bSYour Name * @pin_num: GPIO number to configure 4102*5113495bSYour Name * @pin_set: 1 mean gpio output high level, 0 mean gpio output low level 4103*5113495bSYour Name */ 4104*5113495bSYour Name struct gpio_output_params { 4105*5113495bSYour Name uint32_t pin_num; 4106*5113495bSYour Name enum gpio_value pin_set; 4107*5113495bSYour Name }; 4108*5113495bSYour Name 4109*5113495bSYour Name /* flags bit 0: to configure wlan priority bitmap */ 4110*5113495bSYour Name #define WMI_HOST_BTCOEX_PARAM_FLAGS_WLAN_PRIORITY_BITMAP_BIT (1<<0) 4111*5113495bSYour Name /* flags bit 1: to configure both period and wlan duration */ 4112*5113495bSYour Name #define WMI_HOST_BTCOEX_PARAM_FLAGS_DUTY_CYCLE_BIT (1<<1) 4113*5113495bSYour Name struct btcoex_cfg_params { 4114*5113495bSYour Name /* WLAN priority bitmask for different frame types */ 4115*5113495bSYour Name uint32_t btcoex_wlan_priority_bitmap; 4116*5113495bSYour Name /* This command is used to configure different btcoex params 4117*5113495bSYour Name * in different situations.The host sets the appropriate bit(s) 4118*5113495bSYour Name * in btcoex_param_flags to indicate which configuration parameters 4119*5113495bSYour Name * are valid within a particular BT coex config message, so that one 4120*5113495bSYour Name * BT configuration parameter can be configured without affecting 4121*5113495bSYour Name * other BT configuration parameters.E.g. if the host wants to 4122*5113495bSYour Name * configure only btcoex_wlan_priority_bitmap it sets only 4123*5113495bSYour Name * WMI_BTCOEX_PARAM_FLAGS_WLAN_PRIORITY_BITMAP_BIT in 4124*5113495bSYour Name * btcoex_param_flags so that firmware will not overwrite 4125*5113495bSYour Name * other params with default value passed in the command. 4126*5113495bSYour Name * Host can also set multiple bits in btcoex_param_flags 4127*5113495bSYour Name * to configure more than one param in single message. 4128*5113495bSYour Name */ 4129*5113495bSYour Name uint32_t btcoex_param_flags; 4130*5113495bSYour Name /* period denotes the total time in milliseconds which WLAN and BT share 4131*5113495bSYour Name * configured percentage for transmission and reception. 4132*5113495bSYour Name */ 4133*5113495bSYour Name uint32_t period; 4134*5113495bSYour Name /* wlan duration is the time in milliseconds given for wlan 4135*5113495bSYour Name * in above period. 4136*5113495bSYour Name */ 4137*5113495bSYour Name uint32_t wlan_duration; 4138*5113495bSYour Name }; 4139*5113495bSYour Name 4140*5113495bSYour Name /** 4141*5113495bSYour Name * struct esl_egid_params - Contains the EGID information 4142*5113495bSYour Name * @egid_info: egid_info contains the 128-bit ESL EGID information 4143*5113495bSYour Name */ 4144*5113495bSYour Name struct esl_egid_params { 4145*5113495bSYour Name uint32_t egid_info[EGID_INFO_SIZE]; 4146*5113495bSYour Name }; 4147*5113495bSYour Name 4148*5113495bSYour Name #define WMI_HOST_COEX_CONFIG_BUF_MAX_LEN 32 /* 128 bytes */ 4149*5113495bSYour Name /** 4150*5113495bSYour Name * struct coex_ver_cfg_t 4151*5113495bSYour Name * @coex_version: Version for 4 wire coex 4152*5113495bSYour Name * @length: Length of payload buffer based on version 4153*5113495bSYour Name * @config_buf: Payload Buffer 4154*5113495bSYour Name */ 4155*5113495bSYour Name typedef struct { 4156*5113495bSYour Name /* VERSION_4 (4 wire coex) */ 4157*5113495bSYour Name uint32_t coex_version; 4158*5113495bSYour Name 4159*5113495bSYour Name /* No. of uint32_t elements in payload buffer. Will depend on the coex 4160*5113495bSYour Name * version 4161*5113495bSYour Name */ 4162*5113495bSYour Name uint32_t length; 4163*5113495bSYour Name 4164*5113495bSYour Name /* Payload buffer */ 4165*5113495bSYour Name uint32_t config_buf[WMI_HOST_COEX_CONFIG_BUF_MAX_LEN]; 4166*5113495bSYour Name } coex_ver_cfg_t; 4167*5113495bSYour Name 4168*5113495bSYour Name #define WMI_HOST_RTT_REPORT_CFR 0 4169*5113495bSYour Name #define WMI_HOST_RTT_NO_REPORT_CFR 1 4170*5113495bSYour Name #define WMI_HOST_RTT_AGGREGATE_REPORT_NON_CFR 2 4171*5113495bSYour Name /** 4172*5113495bSYour Name * struct rtt_meas_req_test_params 4173*5113495bSYour Name * @peer: peer mac address 4174*5113495bSYour Name * @req_frame_type: RTT request frame type 4175*5113495bSYour Name * @req_bw: requested bandwidth 4176*5113495bSYour Name * @req_preamble: Preamble 4177*5113495bSYour Name * @req_num_req: num of requests 4178*5113495bSYour Name * @req_report_type: report type 4179*5113495bSYour Name * @num_measurements: number of measurements 4180*5113495bSYour Name * @asap_mode: priority 4181*5113495bSYour Name * @lci_requested: LCI requested 4182*5113495bSYour Name * @loc_civ_requested: 4183*5113495bSYour Name * @channel: channel param 4184*5113495bSYour Name * @req_id: requested id 4185*5113495bSYour Name */ 4186*5113495bSYour Name struct rtt_meas_req_test_params { 4187*5113495bSYour Name uint8_t peer[QDF_MAC_ADDR_SIZE]; 4188*5113495bSYour Name int req_frame_type; 4189*5113495bSYour Name int req_bw; 4190*5113495bSYour Name int req_preamble; 4191*5113495bSYour Name int req_num_req; 4192*5113495bSYour Name int req_report_type; 4193*5113495bSYour Name uint32_t num_measurements; 4194*5113495bSYour Name uint32_t asap_mode; 4195*5113495bSYour Name uint32_t lci_requested; 4196*5113495bSYour Name uint32_t loc_civ_requested; 4197*5113495bSYour Name struct channel_param channel; 4198*5113495bSYour Name uint8_t req_id; 4199*5113495bSYour Name }; 4200*5113495bSYour Name 4201*5113495bSYour Name /** 4202*5113495bSYour Name * struct peer_request_pn_param - PN request params 4203*5113495bSYour Name * @vdev_id: vdev id 4204*5113495bSYour Name * @keyix: key index 4205*5113495bSYour Name * @peer_macaddr: Peer mac address 4206*5113495bSYour Name * @key_type: key type 4207*5113495bSYour Name */ 4208*5113495bSYour Name struct peer_request_pn_param { 4209*5113495bSYour Name uint32_t vdev_id; 4210*5113495bSYour Name uint8_t keyix; 4211*5113495bSYour Name uint8_t peer_macaddr[QDF_MAC_ADDR_SIZE]; 4212*5113495bSYour Name uint32_t key_type; 4213*5113495bSYour Name }; 4214*5113495bSYour Name 4215*5113495bSYour Name /** 4216*5113495bSYour Name * struct peer_request_rxpn_param - Rx PN request params 4217*5113495bSYour Name * @vdev_id: vdev id 4218*5113495bSYour Name * @peer_macaddr: Peer mac address 4219*5113495bSYour Name * @keyix: key index 4220*5113495bSYour Name */ 4221*5113495bSYour Name struct peer_request_rxpn_param { 4222*5113495bSYour Name uint32_t vdev_id; 4223*5113495bSYour Name uint8_t peer_macaddr[QDF_MAC_ADDR_SIZE]; 4224*5113495bSYour Name uint16_t keyix; 4225*5113495bSYour Name }; 4226*5113495bSYour Name 4227*5113495bSYour Name /** 4228*5113495bSYour Name * struct rtt_meas_req_params - RTT measurement request params 4229*5113495bSYour Name * @req_id: Request id 4230*5113495bSYour Name * @vdev_id: vdev id 4231*5113495bSYour Name * @is_mode_na: 11NA 4232*5113495bSYour Name * @is_mode_ac: AC 4233*5113495bSYour Name * @is_bw_20: 20 4234*5113495bSYour Name * @is_bw_40: 40 4235*5113495bSYour Name * @is_bw_80: 80 4236*5113495bSYour Name * @sta_mac_addr: pointer to station mac address 4237*5113495bSYour Name * @spoof_mac_addr: pointer to spoof mac address 4238*5113495bSYour Name * @num_probe_rqst: number of probe request 4239*5113495bSYour Name * @channel: channel param 4240*5113495bSYour Name */ 4241*5113495bSYour Name struct rtt_meas_req_params { 4242*5113495bSYour Name uint8_t req_id; 4243*5113495bSYour Name uint8_t vdev_id; 4244*5113495bSYour Name bool is_mode_na; 4245*5113495bSYour Name bool is_mode_ac; 4246*5113495bSYour Name bool is_bw_20; 4247*5113495bSYour Name bool is_bw_40; 4248*5113495bSYour Name bool is_bw_80; 4249*5113495bSYour Name uint8_t *sta_mac_addr; 4250*5113495bSYour Name uint8_t *spoof_mac_addr; 4251*5113495bSYour Name uint32_t num_probe_rqst; 4252*5113495bSYour Name struct channel_param channel; 4253*5113495bSYour Name }; 4254*5113495bSYour Name 4255*5113495bSYour Name /** 4256*5113495bSYour Name * struct lci_set_params - LCI params 4257*5113495bSYour Name * @lci_data: pointer to LCI data 4258*5113495bSYour Name * @latitude_unc: latitude 4259*5113495bSYour Name * @latitude_0_1: bits 0 to 1 of latitude 4260*5113495bSYour Name * @latitude_2_33: bits 2 to 33 of latitude 4261*5113495bSYour Name * @longitude_unc: longitude 4262*5113495bSYour Name * @longitude_0_1: bits 0 to 1 of longitude 4263*5113495bSYour Name * @longitude_2_33: bits 2 to 33 of longitude 4264*5113495bSYour Name * @altitude_type: altitude type 4265*5113495bSYour Name * @altitude_unc_0_3: altitude bits 0 - 3 4266*5113495bSYour Name * @altitude_unc_4_5: altitude bits 4 - 5 4267*5113495bSYour Name * @altitude: altitude 4268*5113495bSYour Name * @datum: dataum 4269*5113495bSYour Name * @reg_loc_agmt: 4270*5113495bSYour Name * @reg_loc_dse: 4271*5113495bSYour Name * @dep_sta: 4272*5113495bSYour Name * @version: version 4273*5113495bSYour Name * @colocated_bss: 4274*5113495bSYour Name * @msg_len: message length 4275*5113495bSYour Name */ 4276*5113495bSYour Name struct lci_set_params { 4277*5113495bSYour Name void *lci_data; 4278*5113495bSYour Name uint8_t latitude_unc:6, 4279*5113495bSYour Name latitude_0_1:2; 4280*5113495bSYour Name uint32_t latitude_2_33; 4281*5113495bSYour Name uint8_t longitude_unc:6, 4282*5113495bSYour Name longitude_0_1:2; 4283*5113495bSYour Name uint32_t longitude_2_33; 4284*5113495bSYour Name uint8_t altitude_type:4, 4285*5113495bSYour Name altitude_unc_0_3:4; 4286*5113495bSYour Name uint32_t altitude_unc_4_5:2, 4287*5113495bSYour Name altitude:30; 4288*5113495bSYour Name uint8_t datum:3, 4289*5113495bSYour Name reg_loc_agmt:1, 4290*5113495bSYour Name reg_loc_dse:1, 4291*5113495bSYour Name dep_sta:1, 4292*5113495bSYour Name version:2; 4293*5113495bSYour Name uint8_t *colocated_bss; 4294*5113495bSYour Name int msg_len; 4295*5113495bSYour Name }; 4296*5113495bSYour Name 4297*5113495bSYour Name /** 4298*5113495bSYour Name * struct lcr_set_params - LCR params 4299*5113495bSYour Name * @lcr_data: pointer to lcr data 4300*5113495bSYour Name * @msg_len: message length 4301*5113495bSYour Name */ 4302*5113495bSYour Name struct lcr_set_params { 4303*5113495bSYour Name void *lcr_data; 4304*5113495bSYour Name int msg_len; 4305*5113495bSYour Name }; 4306*5113495bSYour Name 4307*5113495bSYour Name /** 4308*5113495bSYour Name * struct rtt_keepalive_req_params - RTT keepalive params 4309*5113495bSYour Name * @macaddr: pointer to macaddress 4310*5113495bSYour Name * @req_id: Request id 4311*5113495bSYour Name * @vdev_id: vdev id 4312*5113495bSYour Name * @stop: start/stop 4313*5113495bSYour Name */ 4314*5113495bSYour Name struct rtt_keepalive_req_params { 4315*5113495bSYour Name uint8_t *macaddr; 4316*5113495bSYour Name uint8_t req_id; 4317*5113495bSYour Name uint8_t vdev_id; 4318*5113495bSYour Name bool stop; 4319*5113495bSYour Name }; 4320*5113495bSYour Name 4321*5113495bSYour Name /** 4322*5113495bSYour Name * struct rx_reorder_queue_setup_params - Reorder queue setup params 4323*5113495bSYour Name * @peer_macaddr: Peer mac address 4324*5113495bSYour Name * @tid: TID 4325*5113495bSYour Name * @vdev_id: vdev id 4326*5113495bSYour Name * @hw_qdesc_paddr_lo: lower 32 bits of queue desc address 4327*5113495bSYour Name * @hw_qdesc_paddr_hi: upper 32 bits of queue desc address 4328*5113495bSYour Name * @queue_no: 16-bit number assigned by host for queue 4329*5113495bSYour Name * @ba_window_size_valid: BA window size validity flag 4330*5113495bSYour Name * @ba_window_size: BA window size 4331*5113495bSYour Name */ 4332*5113495bSYour Name struct rx_reorder_queue_setup_params { 4333*5113495bSYour Name uint8_t *peer_macaddr; 4334*5113495bSYour Name uint16_t tid; 4335*5113495bSYour Name uint16_t vdev_id; 4336*5113495bSYour Name uint32_t hw_qdesc_paddr_lo; 4337*5113495bSYour Name uint32_t hw_qdesc_paddr_hi; 4338*5113495bSYour Name uint16_t queue_no; 4339*5113495bSYour Name uint8_t ba_window_size_valid; 4340*5113495bSYour Name uint16_t ba_window_size; 4341*5113495bSYour Name }; 4342*5113495bSYour Name 4343*5113495bSYour Name #define WMI_MAX_TIDS 17 /* This should be kept the same as (C)DP_MAX_TIDS */ 4344*5113495bSYour Name 4345*5113495bSYour Name /** 4346*5113495bSYour Name * struct rx_reorder_queue_params_list - Specific params for each tid 4347*5113495bSYour Name * @hw_qdesc_paddr: 64 bits of queue desc address 4348*5113495bSYour Name * @queue_no: 16-bit number assigned by host for queue 4349*5113495bSYour Name * @ba_window_size: BA window size 4350*5113495bSYour Name * @ba_window_size_valid: BA window size validity flag 4351*5113495bSYour Name */ 4352*5113495bSYour Name struct rx_reorder_queue_params_list { 4353*5113495bSYour Name qdf_dma_addr_t hw_qdesc_paddr; 4354*5113495bSYour Name uint16_t queue_no; 4355*5113495bSYour Name uint16_t ba_window_size; 4356*5113495bSYour Name uint8_t ba_window_size_valid; 4357*5113495bSYour Name }; 4358*5113495bSYour Name 4359*5113495bSYour Name /** 4360*5113495bSYour Name * struct multi_rx_reorder_queue_setup_params - Multi reorder 4361*5113495bSYour Name * queue setup params 4362*5113495bSYour Name * @queue_params_list: An array for recording the specific params for each tid. 4363*5113495bSYour Name * @peer_macaddr: Peer mac address 4364*5113495bSYour Name * @tid_bitmap: A group of TIDs to be set at a time 4365*5113495bSYour Name * @tid_num: The number of TIDs to be set 4366*5113495bSYour Name * @vdev_id: vdev id 4367*5113495bSYour Name */ 4368*5113495bSYour Name struct multi_rx_reorder_queue_setup_params { 4369*5113495bSYour Name struct rx_reorder_queue_params_list queue_params_list[WMI_MAX_TIDS]; 4370*5113495bSYour Name uint8_t *peer_macaddr; 4371*5113495bSYour Name uint32_t tid_bitmap; 4372*5113495bSYour Name uint8_t tid_num; 4373*5113495bSYour Name uint16_t vdev_id; 4374*5113495bSYour Name }; 4375*5113495bSYour Name 4376*5113495bSYour Name /** 4377*5113495bSYour Name * struct rx_reorder_queue_remove_params - Reorder queue setup params 4378*5113495bSYour Name * @peer_macaddr: Peer mac address 4379*5113495bSYour Name * @vdev_id: vdev id 4380*5113495bSYour Name * @peer_tid_bitmap: peer tid bitmap 4381*5113495bSYour Name */ 4382*5113495bSYour Name struct rx_reorder_queue_remove_params { 4383*5113495bSYour Name uint8_t *peer_macaddr; 4384*5113495bSYour Name uint16_t vdev_id; 4385*5113495bSYour Name uint32_t peer_tid_bitmap; 4386*5113495bSYour Name }; 4387*5113495bSYour Name 4388*5113495bSYour Name /** 4389*5113495bSYour Name * struct wmi_host_stats_event - Stats event params 4390*5113495bSYour Name * @stats_id: stats id of type wmi_host_stats_event 4391*5113495bSYour Name * @num_pdev_stats: number of pdev stats event structures 0 or 1 4392*5113495bSYour Name * @num_pdev_ext_stats: number of pdev ext stats event structures 4393*5113495bSYour Name * @num_vdev_stats: number of vdev stats 4394*5113495bSYour Name * @num_peer_stats: number of peer stats event structures 0 or max peers 4395*5113495bSYour Name * @num_peer_extd_stats: number of peer extended stats event structures 0 4396*5113495bSYour Name * or max peers 4397*5113495bSYour Name * @num_bcnflt_stats: number of beacon filter stats 4398*5113495bSYour Name * @num_chan_stats: number of channel stats 4399*5113495bSYour Name * @pdev_id: device id for the radio 4400*5113495bSYour Name * @num_bcn_stats: number of beacon stats 4401*5113495bSYour Name * @num_rssi_stats: number of rssi stats 4402*5113495bSYour Name * @num_peer_adv_stats: number of peer adv stats 4403*5113495bSYour Name * @num_mib_stats: number of mib stats 4404*5113495bSYour Name * @num_mib_extd_stats: number of extended mib stats 4405*5113495bSYour Name * @num_peer_stats_info_ext: number of peer extended stats info 4406*5113495bSYour Name * @num_vdev_extd_stats: number of vdev extended stats info 4407*5113495bSYour Name * @last_event: specify if the current event is the last event 4408*5113495bSYour Name */ 4409*5113495bSYour Name typedef struct { 4410*5113495bSYour Name wmi_host_stats_id stats_id; 4411*5113495bSYour Name uint32_t num_pdev_stats; 4412*5113495bSYour Name uint32_t num_pdev_ext_stats; 4413*5113495bSYour Name uint32_t num_vdev_stats; 4414*5113495bSYour Name uint32_t num_peer_stats; 4415*5113495bSYour Name uint32_t num_peer_extd_stats; 4416*5113495bSYour Name uint32_t num_bcnflt_stats; 4417*5113495bSYour Name uint32_t num_chan_stats; 4418*5113495bSYour Name uint32_t pdev_id; 4419*5113495bSYour Name uint32_t num_bcn_stats; 4420*5113495bSYour Name uint32_t num_rssi_stats; 4421*5113495bSYour Name uint32_t num_peer_adv_stats; 4422*5113495bSYour Name uint32_t num_mib_stats; 4423*5113495bSYour Name uint32_t num_mib_extd_stats; 4424*5113495bSYour Name uint32_t num_peer_stats_info_ext; 4425*5113495bSYour Name uint32_t num_vdev_extd_stats; 4426*5113495bSYour Name uint32_t last_event; 4427*5113495bSYour Name } wmi_host_stats_event; 4428*5113495bSYour Name 4429*5113495bSYour Name /** 4430*5113495bSYour Name * struct wmi_host_peer_extd_stats - peer extd stats event structure 4431*5113495bSYour Name * @peer_macaddr: Peer mac address 4432*5113495bSYour Name * @inactive_time: inactive time in secs 4433*5113495bSYour Name * @peer_chain_rssi: peer rssi 4434*5113495bSYour Name * @rx_duration: RX duration 4435*5113495bSYour Name * @peer_tx_bytes: TX bytes 4436*5113495bSYour Name * @last_tx_rate_code: Tx rate code of last frame 4437*5113495bSYour Name * @last_tx_power: Tx power latest 4438*5113495bSYour Name * @atf_tokens_allocated: atf tokens allocated 4439*5113495bSYour Name * @atf_tokens_utilized: atf tokens utilized 4440*5113495bSYour Name * @num_mu_tx_denylisted: Denylisted MU Tx count 4441*5113495bSYour Name * @sgi_count: sgi count of the peer 4442*5113495bSYour Name * @rx_mc_bc_cnt: Total number of received multicast & broadcast data frames 4443*5113495bSYour Name * corresponding to this peer, 1 in the MSB of rx_mc_bc_cnt represents a 4444*5113495bSYour Name * valid data 4445*5113495bSYour Name * @rx_retry_cnt: Number of rx retries received from current station 4446*5113495bSYour Name */ 4447*5113495bSYour Name typedef struct { 4448*5113495bSYour Name wmi_host_mac_addr peer_macaddr; 4449*5113495bSYour Name uint32_t inactive_time; 4450*5113495bSYour Name uint32_t peer_chain_rssi; 4451*5113495bSYour Name uint32_t rx_duration; 4452*5113495bSYour Name uint32_t peer_tx_bytes; 4453*5113495bSYour Name uint32_t last_tx_rate_code; 4454*5113495bSYour Name uint32_t last_tx_power; 4455*5113495bSYour Name uint32_t atf_tokens_allocated; 4456*5113495bSYour Name uint32_t atf_tokens_utilized; 4457*5113495bSYour Name uint32_t num_mu_tx_denylisted; 4458*5113495bSYour Name uint32_t sgi_count; 4459*5113495bSYour Name uint32_t rx_mc_bc_cnt; 4460*5113495bSYour Name uint32_t rx_retry_cnt; 4461*5113495bSYour Name } wmi_host_peer_extd_stats; 4462*5113495bSYour Name 4463*5113495bSYour Name /** 4464*5113495bSYour Name * struct wmi_host_peer_adv_stats - peer adv stats event structure 4465*5113495bSYour Name * @peer_macaddr: mac address 4466*5113495bSYour Name * @fcs_count: fcs count 4467*5113495bSYour Name * @rx_count: rx count 4468*5113495bSYour Name * @rx_bytes: rx bytes 4469*5113495bSYour Name */ 4470*5113495bSYour Name struct wmi_host_peer_adv_stats { 4471*5113495bSYour Name uint8_t peer_macaddr[QDF_MAC_ADDR_SIZE]; 4472*5113495bSYour Name uint32_t fcs_count; 4473*5113495bSYour Name uint32_t rx_count; 4474*5113495bSYour Name uint64_t rx_bytes; 4475*5113495bSYour Name }; 4476*5113495bSYour Name 4477*5113495bSYour Name /** 4478*5113495bSYour Name * struct wmi_host_pdev_ext_stats - peer ext stats structure 4479*5113495bSYour Name * @rx_rssi_comb: RX rssi 4480*5113495bSYour Name * @rx_rssi_chain0: RX rssi chain 0 4481*5113495bSYour Name * @rx_rssi_chain1: RX rssi chain 1 4482*5113495bSYour Name * @rx_rssi_chain2: RX rssi chain 2 4483*5113495bSYour Name * @rx_rssi_chain3: RX rssi chain 3 4484*5113495bSYour Name * @rx_mcs: RX MCS array 4485*5113495bSYour Name * @tx_mcs: TX MCS array 4486*5113495bSYour Name * @ack_rssi: Ack rssi 4487*5113495bSYour Name * @my_rx_count: What portion of time, as measured by the MAC HW clock was 4488*5113495bSYour Name * occupied by receiving PPDUs addressed to one of the vdevs 4489*5113495bSYour Name * within this pdev. 4490*5113495bSYour Name * @rx_matched_11ax_msdu_cnt: number of Rx 11ax MSDUs with matching BSS color 4491*5113495bSYour Name * counter updated at EOP (end of packet) 4492*5113495bSYour Name * @rx_other_11ax_msdu_cnt: number of Rx 11ax MSDUs with other BSS color counter 4493*5113495bSYour Name * updated at EOP (end of packet) 4494*5113495bSYour Name * @pdev_id: pdev id 4495*5113495bSYour Name */ 4496*5113495bSYour Name typedef struct { 4497*5113495bSYour Name uint32_t rx_rssi_comb; 4498*5113495bSYour Name uint32_t rx_rssi_chain0; 4499*5113495bSYour Name uint32_t rx_rssi_chain1; 4500*5113495bSYour Name uint32_t rx_rssi_chain2; 4501*5113495bSYour Name uint32_t rx_rssi_chain3; 4502*5113495bSYour Name uint32_t rx_mcs[10]; 4503*5113495bSYour Name uint32_t tx_mcs[10]; 4504*5113495bSYour Name uint32_t ack_rssi; 4505*5113495bSYour Name uint32_t my_rx_count; 4506*5113495bSYour Name uint32_t rx_matched_11ax_msdu_cnt; 4507*5113495bSYour Name uint32_t rx_other_11ax_msdu_cnt; 4508*5113495bSYour Name uint32_t pdev_id; 4509*5113495bSYour Name } wmi_host_pdev_ext_stats; 4510*5113495bSYour Name 4511*5113495bSYour Name /** 4512*5113495bSYour Name * struct wmi_host_dbg_tx_stats - Debug stats 4513*5113495bSYour Name * @comp_queued: Num HTT cookies queued to dispatch list 4514*5113495bSYour Name * @comp_delivered: Num HTT cookies dispatched 4515*5113495bSYour Name * @msdu_enqued: Num MSDU queued to WAL 4516*5113495bSYour Name * @mpdu_enqued: Num MPDU queue to WAL 4517*5113495bSYour Name * @wmm_drop: Num MSDUs dropped by WMM limit 4518*5113495bSYour Name * @local_enqued: Num Local frames queued 4519*5113495bSYour Name * @local_freed: Num Local frames done 4520*5113495bSYour Name * @hw_queued: Num queued to HW 4521*5113495bSYour Name * @hw_reaped: Num PPDU reaped from HW 4522*5113495bSYour Name * @underrun: Num underruns 4523*5113495bSYour Name * @hw_paused: HW Paused. 4524*5113495bSYour Name * @tx_abort: Num PPDUs cleaned up in TX abort 4525*5113495bSYour Name * @mpdus_requed: Num MPDUs requed by SW 4526*5113495bSYour Name * @tx_ko: excessive retries 4527*5113495bSYour Name * @tx_xretry: 4528*5113495bSYour Name * @data_rc: data hw rate code 4529*5113495bSYour Name * @self_triggers: Scheduler self triggers 4530*5113495bSYour Name * @sw_retry_failure: frames dropped due to excessive sw retries 4531*5113495bSYour Name * @illgl_rate_phy_err: illegal rate phy errors 4532*5113495bSYour Name * @pdev_cont_xretry: wal pdev continuous xretry 4533*5113495bSYour Name * @pdev_tx_timeout: wal pdev continuous xretry 4534*5113495bSYour Name * @pdev_resets: wal pdev resets 4535*5113495bSYour Name * @stateless_tid_alloc_failure: frames dropped due to non-availability of 4536*5113495bSYour Name * stateless TIDs 4537*5113495bSYour Name * @phy_underrun: PhY/BB underrun 4538*5113495bSYour Name * @txop_ovf: MPDU is more than txop limit 4539*5113495bSYour Name * @seq_posted: Number of Sequences posted 4540*5113495bSYour Name * @seq_failed_queueing: Number of Sequences failed queueing 4541*5113495bSYour Name * @seq_completed: Number of Sequences completed 4542*5113495bSYour Name * @seq_restarted: Number of Sequences restarted 4543*5113495bSYour Name * @mu_seq_posted: Number of MU Sequences posted 4544*5113495bSYour Name * @mpdus_sw_flush: Num MPDUs flushed by SW, HWPAUSED, SW TXABORT 4545*5113495bSYour Name * (Reset,channel change) 4546*5113495bSYour Name * @mpdus_hw_filter: Num MPDUs filtered by HW, all filter condition 4547*5113495bSYour Name * (TTL expired) 4548*5113495bSYour Name * @mpdus_truncated: Num MPDUs truncated by PDG (TXOP, TBTT, 4549*5113495bSYour Name * PPDU_duration based on rate, dyn_bw) 4550*5113495bSYour Name * @mpdus_ack_failed: Num MPDUs that was tried but didn't receive ACK or BA 4551*5113495bSYour Name * @mpdus_expired: Num MPDUs that was dropped du to expiry. 4552*5113495bSYour Name * @mc_drop: Num mc drops 4553*5113495bSYour Name */ 4554*5113495bSYour Name typedef struct { 4555*5113495bSYour Name int32_t comp_queued; 4556*5113495bSYour Name int32_t comp_delivered; 4557*5113495bSYour Name int32_t msdu_enqued; 4558*5113495bSYour Name int32_t mpdu_enqued; 4559*5113495bSYour Name int32_t wmm_drop; 4560*5113495bSYour Name int32_t local_enqued; 4561*5113495bSYour Name int32_t local_freed; 4562*5113495bSYour Name int32_t hw_queued; 4563*5113495bSYour Name int32_t hw_reaped; 4564*5113495bSYour Name int32_t underrun; 4565*5113495bSYour Name uint32_t hw_paused; 4566*5113495bSYour Name int32_t tx_abort; 4567*5113495bSYour Name int32_t mpdus_requed; 4568*5113495bSYour Name uint32_t tx_ko; 4569*5113495bSYour Name uint32_t tx_xretry; 4570*5113495bSYour Name uint32_t data_rc; 4571*5113495bSYour Name uint32_t self_triggers; 4572*5113495bSYour Name uint32_t sw_retry_failure; 4573*5113495bSYour Name uint32_t illgl_rate_phy_err; 4574*5113495bSYour Name uint32_t pdev_cont_xretry; 4575*5113495bSYour Name uint32_t pdev_tx_timeout; 4576*5113495bSYour Name uint32_t pdev_resets; 4577*5113495bSYour Name uint32_t stateless_tid_alloc_failure; 4578*5113495bSYour Name uint32_t phy_underrun; 4579*5113495bSYour Name uint32_t txop_ovf; 4580*5113495bSYour Name uint32_t seq_posted; 4581*5113495bSYour Name uint32_t seq_failed_queueing; 4582*5113495bSYour Name uint32_t seq_completed; 4583*5113495bSYour Name uint32_t seq_restarted; 4584*5113495bSYour Name uint32_t mu_seq_posted; 4585*5113495bSYour Name int32_t mpdus_sw_flush; 4586*5113495bSYour Name int32_t mpdus_hw_filter; 4587*5113495bSYour Name int32_t mpdus_truncated; 4588*5113495bSYour Name int32_t mpdus_ack_failed; 4589*5113495bSYour Name int32_t mpdus_expired; 4590*5113495bSYour Name uint32_t mc_drop; 4591*5113495bSYour Name } wmi_host_dbg_tx_stats; 4592*5113495bSYour Name 4593*5113495bSYour Name /** 4594*5113495bSYour Name * struct wmi_host_dbg_rx_stats - RX Debug stats 4595*5113495bSYour Name * @mid_ppdu_route_change: Cnts any change in ring routing mid-ppdu 4596*5113495bSYour Name * @status_rcvd: Total number of statuses processed 4597*5113495bSYour Name * @r0_frags: Extra frags on rings 0 4598*5113495bSYour Name * @r1_frags: Extra frags on rings 1 4599*5113495bSYour Name * @r2_frags: Extra frags on rings 2 4600*5113495bSYour Name * @r3_frags: Extra frags on rings 3 4601*5113495bSYour Name * @htt_msdus: MSDUs delivered to HTT 4602*5113495bSYour Name * @htt_mpdus: MPDUs delivered to HTT 4603*5113495bSYour Name * @loc_msdus: MSDUs delivered to local stack 4604*5113495bSYour Name * @loc_mpdus: MPDUS delivered to local stack 4605*5113495bSYour Name * @oversize_amsdu: AMSDUs that have more MSDUs than the status ring size 4606*5113495bSYour Name * @phy_errs: Number of PHY errors 4607*5113495bSYour Name * @phy_err_drop: Number of PHY errors drops 4608*5113495bSYour Name * @mpdu_errs: Number of mpdu errors - FCS, MIC, ENC etc. 4609*5113495bSYour Name * @pdev_rx_timeout: Number of rx inactivity timeouts 4610*5113495bSYour Name * @rx_ovfl_errs: Number of rx overflow errors. 4611*5113495bSYour Name */ 4612*5113495bSYour Name typedef struct { 4613*5113495bSYour Name int32_t mid_ppdu_route_change; 4614*5113495bSYour Name int32_t status_rcvd; 4615*5113495bSYour Name int32_t r0_frags; 4616*5113495bSYour Name int32_t r1_frags; 4617*5113495bSYour Name int32_t r2_frags; 4618*5113495bSYour Name int32_t r3_frags; 4619*5113495bSYour Name int32_t htt_msdus; 4620*5113495bSYour Name int32_t htt_mpdus; 4621*5113495bSYour Name int32_t loc_msdus; 4622*5113495bSYour Name int32_t loc_mpdus; 4623*5113495bSYour Name int32_t oversize_amsdu; 4624*5113495bSYour Name int32_t phy_errs; 4625*5113495bSYour Name int32_t phy_err_drop; 4626*5113495bSYour Name int32_t mpdu_errs; 4627*5113495bSYour Name uint32_t pdev_rx_timeout; 4628*5113495bSYour Name int32_t rx_ovfl_errs; 4629*5113495bSYour Name } wmi_host_dbg_rx_stats; 4630*5113495bSYour Name 4631*5113495bSYour Name /** struct wmi_host_dbg_mem_stats - memory stats 4632*5113495bSYour Name * @iram_free_size: IRAM free size on target 4633*5113495bSYour Name * @dram_free_size: DRAM free size on target 4634*5113495bSYour Name * @sram_free_size: SRAM free size on target 4635*5113495bSYour Name */ 4636*5113495bSYour Name typedef struct { 4637*5113495bSYour Name uint32_t iram_free_size; 4638*5113495bSYour Name uint32_t dram_free_size; 4639*5113495bSYour Name /* Only Non-TLV */ 4640*5113495bSYour Name uint32_t sram_free_size; 4641*5113495bSYour Name } wmi_host_dbg_mem_stats; 4642*5113495bSYour Name 4643*5113495bSYour Name typedef struct { 4644*5113495bSYour Name /* Only TLV */ 4645*5113495bSYour Name int32_t dummy;/* REMOVE THIS ONCE REAL PEER STAT COUNTERS ARE ADDED */ 4646*5113495bSYour Name } wmi_host_dbg_peer_stats; 4647*5113495bSYour Name 4648*5113495bSYour Name /** 4649*5113495bSYour Name * struct wmi_host_dbg_stats - host debug stats 4650*5113495bSYour Name * @tx: TX stats of type wmi_host_dbg_tx_stats 4651*5113495bSYour Name * @rx: RX stats of type wmi_host_dbg_rx_stats 4652*5113495bSYour Name * @mem: Memory stats of type wmi_host_dbg_mem_stats 4653*5113495bSYour Name * @peer: peer stats of type wmi_host_dbg_peer_stats 4654*5113495bSYour Name */ 4655*5113495bSYour Name typedef struct { 4656*5113495bSYour Name wmi_host_dbg_tx_stats tx; 4657*5113495bSYour Name wmi_host_dbg_rx_stats rx; 4658*5113495bSYour Name wmi_host_dbg_mem_stats mem; 4659*5113495bSYour Name wmi_host_dbg_peer_stats peer; 4660*5113495bSYour Name } wmi_host_dbg_stats; 4661*5113495bSYour Name 4662*5113495bSYour Name /** 4663*5113495bSYour Name * struct wmi_host_pdev_stats - PDEV stats 4664*5113495bSYour Name * @chan_nf: Channel noise floor 4665*5113495bSYour Name * @tx_frame_count: TX frame count 4666*5113495bSYour Name * @rx_frame_count: RX frame count 4667*5113495bSYour Name * @rx_clear_count: rx clear count 4668*5113495bSYour Name * @cycle_count: cycle count 4669*5113495bSYour Name * @phy_err_count: Phy error count 4670*5113495bSYour Name * @chan_tx_pwr: Channel Tx Power 4671*5113495bSYour Name * @pdev_stats: WAL dbg stats 4672*5113495bSYour Name * @ackRcvBad: 4673*5113495bSYour Name * @rtsBad: 4674*5113495bSYour Name * @rtsGood: 4675*5113495bSYour Name * @fcsBad: 4676*5113495bSYour Name * @noBeacons: 4677*5113495bSYour Name * @mib_int_count: 4678*5113495bSYour Name * @pdev_id: pdev id 4679*5113495bSYour Name */ 4680*5113495bSYour Name typedef struct { 4681*5113495bSYour Name int32_t chan_nf; 4682*5113495bSYour Name uint32_t tx_frame_count; 4683*5113495bSYour Name uint32_t rx_frame_count; 4684*5113495bSYour Name uint32_t rx_clear_count; 4685*5113495bSYour Name uint32_t cycle_count; 4686*5113495bSYour Name uint32_t phy_err_count; 4687*5113495bSYour Name uint32_t chan_tx_pwr; 4688*5113495bSYour Name wmi_host_dbg_stats pdev_stats; 4689*5113495bSYour Name uint32_t ackRcvBad; 4690*5113495bSYour Name uint32_t rtsBad; 4691*5113495bSYour Name uint32_t rtsGood; 4692*5113495bSYour Name uint32_t fcsBad; 4693*5113495bSYour Name uint32_t noBeacons; 4694*5113495bSYour Name uint32_t mib_int_count; 4695*5113495bSYour Name uint32_t pdev_id; 4696*5113495bSYour Name } wmi_host_pdev_stats; 4697*5113495bSYour Name 4698*5113495bSYour Name /** 4699*5113495bSYour Name * struct wmi_host_pmf_bcn_protect_stats - PMF bcn protect stats 4700*5113495bSYour Name * @igtk_mic_fail_cnt: MIC failure count of management packets using IGTK 4701*5113495bSYour Name * @igtk_replay_cnt: Replay detection count of management packets using IGTK 4702*5113495bSYour Name * @bcn_mic_fail_cnt: MIC failure count of beacon packets using BIGTK 4703*5113495bSYour Name * @bcn_replay_cnt: Replay detection count of beacon packets using BIGTK 4704*5113495bSYour Name */ 4705*5113495bSYour Name typedef struct { 4706*5113495bSYour Name uint32_t igtk_mic_fail_cnt; 4707*5113495bSYour Name uint32_t igtk_replay_cnt; 4708*5113495bSYour Name uint32_t bcn_mic_fail_cnt; 4709*5113495bSYour Name uint32_t bcn_replay_cnt; 4710*5113495bSYour Name } wmi_host_pmf_bcn_protect_stats; 4711*5113495bSYour Name 4712*5113495bSYour Name /** 4713*5113495bSYour Name * struct wmi_unit_test_event - Structure corresponding to WMI Unit test event 4714*5113495bSYour Name * @vdev_id: VDEV ID 4715*5113495bSYour Name * @module_id: MODULE ID 4716*5113495bSYour Name * @diag_token: Diag Token (the number that was generated in the unit-test cmd) 4717*5113495bSYour Name * @flag: flag has 2 bits 0x1 indicates status, and 0x2 indicates done-bit 4718*5113495bSYour Name * @payload_len: payload_len (blindly copied from payload_len field in WMI) 4719*5113495bSYour Name * @buffer_len: actual number of data bytes in the variable data size TLV 4720*5113495bSYour Name * buffer_len is likely to be the nearest multiple of 4 (from 4721*5113495bSYour Name * payload_len). both buffer_len and payload_len need to be 4722*5113495bSYour Name * passed to wifitool so that the driver can be agnostic 4723*5113495bSYour Name * regarding these differences. 4724*5113495bSYour Name * @buffer: data buffer 4725*5113495bSYour Name */ 4726*5113495bSYour Name typedef struct { 4727*5113495bSYour Name uint32_t vdev_id; 4728*5113495bSYour Name uint32_t module_id; 4729*5113495bSYour Name uint32_t diag_token; 4730*5113495bSYour Name uint32_t flag; 4731*5113495bSYour Name uint32_t payload_len; 4732*5113495bSYour Name uint32_t buffer_len; 4733*5113495bSYour Name QDF_FLEX_ARRAY(uint8_t, buffer); 4734*5113495bSYour Name } wmi_unit_test_event; 4735*5113495bSYour Name 4736*5113495bSYour Name 4737*5113495bSYour Name /** 4738*5113495bSYour Name * struct wmi_host_snr_info - WMI host Signal to noise ration info 4739*5113495bSYour Name * @bcn_snr: beacon SNR 4740*5113495bSYour Name * @dat_snr: Data frames SNR 4741*5113495bSYour Name */ 4742*5113495bSYour Name typedef struct { 4743*5113495bSYour Name int32_t bcn_snr; 4744*5113495bSYour Name int32_t dat_snr; 4745*5113495bSYour Name } wmi_host_snr_info; 4746*5113495bSYour Name 4747*5113495bSYour Name #define WMI_HOST_MAX_TX_RATE_VALUES 10 /*Max Tx Rates */ 4748*5113495bSYour Name #define WMI_HOST_MAX_RSSI_VALUES 10 /*Max Rssi values */ 4749*5113495bSYour Name 4750*5113495bSYour Name /* The WMI_HOST_MAX_CHAINS macro cannot be changed without breaking WMI 4751*5113495bSYour Name * compatibility. 4752*5113495bSYour Name * The maximum value of number of chains 4753*5113495bSYour Name */ 4754*5113495bSYour Name #define WMI_HOST_MAX_CHAINS 8 4755*5113495bSYour Name 4756*5113495bSYour Name /** 4757*5113495bSYour Name * struct wmi_host_vdev_stats - vdev stats structure 4758*5113495bSYour Name * @vdev_id: unique id identifying the VDEV, generated by the caller 4759*5113495bSYour Name * Rest all Only TLV 4760*5113495bSYour Name * @vdev_snr: wmi_host_snr_info 4761*5113495bSYour Name * @tx_frm_cnt: Total number of packets(per AC) that were successfully 4762*5113495bSYour Name * transmitted (with and without retries, 4763*5113495bSYour Name * including multi-cast, broadcast) 4764*5113495bSYour Name * @rx_frm_cnt: Total number of packets that were successfully received 4765*5113495bSYour Name * (after appropriate filter rules including multi-cast, broadcast) 4766*5113495bSYour Name * @multiple_retry_cnt: The number of MSDU packets and MMPDU frames per AC 4767*5113495bSYour Name * that the 802.11 station successfully transmitted after 4768*5113495bSYour Name * more than one retransmission attempt 4769*5113495bSYour Name * @fail_cnt: Total number packets(per AC) failed to transmit 4770*5113495bSYour Name * @rts_fail_cnt: Total number of RTS/CTS sequence failures for transmission 4771*5113495bSYour Name * of a packet 4772*5113495bSYour Name * @rts_succ_cnt: Total number of RTS/CTS sequence success for transmission 4773*5113495bSYour Name * of a packet 4774*5113495bSYour Name * @rx_err_cnt: The receive error count. HAL will provide the 4775*5113495bSYour Name * RxP FCS error global 4776*5113495bSYour Name * @rx_discard_cnt: The sum of the receive error count and 4777*5113495bSYour Name * dropped-receive-buffer error count (FCS error) 4778*5113495bSYour Name * @ack_fail_cnt: Total number packets failed transmit because of no 4779*5113495bSYour Name * ACK from the remote entity 4780*5113495bSYour Name * @tx_rate_history:History of last ten transmit rate, in units of 500 kbit/sec 4781*5113495bSYour Name * @bcn_rssi_history: History of last ten Beacon rssi of the connected Bss 4782*5113495bSYour Name */ 4783*5113495bSYour Name typedef struct { 4784*5113495bSYour Name uint32_t vdev_id; 4785*5113495bSYour Name /* Rest all Only TLV */ 4786*5113495bSYour Name wmi_host_snr_info vdev_snr; 4787*5113495bSYour Name uint32_t tx_frm_cnt[WMI_HOST_WLAN_MAX_AC]; 4788*5113495bSYour Name uint32_t rx_frm_cnt; 4789*5113495bSYour Name uint32_t multiple_retry_cnt[WMI_HOST_WLAN_MAX_AC]; 4790*5113495bSYour Name uint32_t fail_cnt[WMI_HOST_WLAN_MAX_AC]; 4791*5113495bSYour Name uint32_t rts_fail_cnt; 4792*5113495bSYour Name uint32_t rts_succ_cnt; 4793*5113495bSYour Name uint32_t rx_err_cnt; 4794*5113495bSYour Name uint32_t rx_discard_cnt; 4795*5113495bSYour Name uint32_t ack_fail_cnt; 4796*5113495bSYour Name uint32_t tx_rate_history[WMI_HOST_MAX_TX_RATE_VALUES]; 4797*5113495bSYour Name uint32_t bcn_rssi_history[WMI_HOST_MAX_RSSI_VALUES]; 4798*5113495bSYour Name } wmi_host_vdev_stats; 4799*5113495bSYour Name 4800*5113495bSYour Name /** 4801*5113495bSYour Name * struct wmi_host_bcn_stats - beacon stats structure 4802*5113495bSYour Name * @vdev_id: unique id identifying the VDEV, generated by the caller 4803*5113495bSYour Name * @tx_bcn_succ_cnt: Total number of beacon frame transmitted successfully 4804*5113495bSYour Name * @tx_bcn_outage_cnt: Total number of failed beacons 4805*5113495bSYour Name */ 4806*5113495bSYour Name typedef struct { 4807*5113495bSYour Name uint32_t vdev_id; 4808*5113495bSYour Name uint32_t tx_bcn_succ_cnt; 4809*5113495bSYour Name uint32_t tx_bcn_outage_cnt; 4810*5113495bSYour Name } wmi_host_bcn_stats; 4811*5113495bSYour Name 4812*5113495bSYour Name /** 4813*5113495bSYour Name * struct wmi_host_vdev_extd_stats - VDEV extended stats 4814*5113495bSYour Name * @vdev_id: unique id identifying the VDEV, generated by the caller 4815*5113495bSYour Name * @ppdu_aggr_cnt: No of Aggrs Queued to HW 4816*5113495bSYour Name * @ppdu_noack: No of PPDU's not Acked includes both aggr and nonaggr's 4817*5113495bSYour Name * @mpdu_queued: No of MPDU/Subframes's queued to HW in Aggregates 4818*5113495bSYour Name * @ppdu_nonaggr_cnt: No of NonAggr/MPDU/Subframes's queued to HW 4819*5113495bSYour Name * in Legacy NonAggregates 4820*5113495bSYour Name * @mpdu_sw_requed: No of MPDU/Subframes's SW requeued includes 4821*5113495bSYour Name * both Aggr and NonAggr 4822*5113495bSYour Name * @mpdu_suc_retry: No of MPDU/Subframes's transmitted Successfully 4823*5113495bSYour Name * after Single/mul HW retry 4824*5113495bSYour Name * @mpdu_suc_multitry: No of MPDU/Subframes's transmitted Success 4825*5113495bSYour Name * after Multiple HW retry 4826*5113495bSYour Name * @mpdu_fail_retry: No of MPDU/Subframes's failed transmission 4827*5113495bSYour Name * after Multiple HW retry 4828*5113495bSYour Name * @reserved: for future extensions set to 0x0 4829*5113495bSYour Name */ 4830*5113495bSYour Name typedef struct { 4831*5113495bSYour Name uint32_t vdev_id; 4832*5113495bSYour Name uint32_t ppdu_aggr_cnt; 4833*5113495bSYour Name uint32_t ppdu_noack; 4834*5113495bSYour Name uint32_t mpdu_queued; 4835*5113495bSYour Name uint32_t ppdu_nonaggr_cnt; 4836*5113495bSYour Name uint32_t mpdu_sw_requed; 4837*5113495bSYour Name uint32_t mpdu_suc_retry; 4838*5113495bSYour Name uint32_t mpdu_suc_multitry; 4839*5113495bSYour Name uint32_t mpdu_fail_retry; 4840*5113495bSYour Name uint32_t reserved[13]; 4841*5113495bSYour Name } wmi_host_vdev_extd_stats; 4842*5113495bSYour Name 4843*5113495bSYour Name /** 4844*5113495bSYour Name * struct wmi_host_vdev_prb_fils_stats - VDEV probe response fils stats 4845*5113495bSYour Name * @vdev_id: unique id identifying the VDEV, generated by the caller 4846*5113495bSYour Name * @fd_succ_cnt: Total number of successfully transmitted Fils Discovery frames 4847*5113495bSYour Name * @fd_fail_cnt: Toatl number of Fils discovery failed count 4848*5113495bSYour Name * @unsolicited_prb_succ_cnt: Successful unsolicited probe response frames cnt 4849*5113495bSYour Name * @unsolicited_prb_fail_cnt: Failed unsolictied probe response frames cnt 4850*5113495bSYour Name * @is_mlo_vdev_active: is the mlo vdev currently active 4851*5113495bSYour Name * @vdev_tx_power: Tx power for vdev 4852*5113495bSYour Name */ 4853*5113495bSYour Name struct wmi_host_vdev_prb_fils_stats { 4854*5113495bSYour Name uint32_t vdev_id; 4855*5113495bSYour Name uint32_t fd_succ_cnt; 4856*5113495bSYour Name uint32_t fd_fail_cnt; 4857*5113495bSYour Name uint32_t unsolicited_prb_succ_cnt; 4858*5113495bSYour Name uint32_t unsolicited_prb_fail_cnt; 4859*5113495bSYour Name bool is_mlo_vdev_active; 4860*5113495bSYour Name uint32_t vdev_tx_power; 4861*5113495bSYour Name }; 4862*5113495bSYour Name 4863*5113495bSYour Name /** 4864*5113495bSYour Name * struct wmi_host_vdev_nac_rssi_event - VDEV nac rssi stats 4865*5113495bSYour Name * @vdev_id: unique id identifying the VDEV, generated by the caller 4866*5113495bSYour Name * @last_rssi: rssi 4867*5113495bSYour Name * @avg_rssi: averge rssi 4868*5113495bSYour Name * @rssi_seq_num: rssi sequence number 4869*5113495bSYour Name */ 4870*5113495bSYour Name struct wmi_host_vdev_nac_rssi_event { 4871*5113495bSYour Name uint32_t vdev_id; 4872*5113495bSYour Name uint32_t last_rssi; 4873*5113495bSYour Name uint32_t avg_rssi; 4874*5113495bSYour Name uint32_t rssi_seq_num; 4875*5113495bSYour Name }; 4876*5113495bSYour Name 4877*5113495bSYour Name /** 4878*5113495bSYour Name * struct wmi_host_peer_retry_stats - peer retry stats 4879*5113495bSYour Name * @peer_macaddr: peer macaddr 4880*5113495bSYour Name * @retry_counter_wraparnd_ind: wraparound counter indication 4881*5113495bSYour Name * @msdus_success: successfully transmitted msdus 4882*5113495bSYour Name * @msdus_retried: Retried msdus 4883*5113495bSYour Name * @msdus_mul_retried: msdus retried for more than once 4884*5113495bSYour Name * @msdus_failed: msdus failed 4885*5113495bSYour Name * @reserved: for future extensions 4886*5113495bSYour Name */ 4887*5113495bSYour Name struct wmi_host_peer_retry_stats { 4888*5113495bSYour Name wmi_host_mac_addr peer_macaddr; 4889*5113495bSYour Name uint32_t retry_counter_wraparnd_ind; 4890*5113495bSYour Name uint32_t msdus_success; 4891*5113495bSYour Name uint32_t msdus_retried; 4892*5113495bSYour Name uint32_t msdus_mul_retried; 4893*5113495bSYour Name uint32_t msdus_failed; 4894*5113495bSYour Name uint32_t reserved[4]; 4895*5113495bSYour Name }; 4896*5113495bSYour Name 4897*5113495bSYour Name /** 4898*5113495bSYour Name * struct wmi_host_per_chain_rssi_stats - VDEV nac rssi stats 4899*5113495bSYour Name * @vdev_id: unique id identifying the VDEV, generated by the caller 4900*5113495bSYour Name * @rssi_avg_beacon: per chain avg rssi for beacon 4901*5113495bSYour Name * @rssi_avg_data: per chain avg rssi for data 4902*5113495bSYour Name * @peer_macaddr: peer macaddr 4903*5113495bSYour Name */ 4904*5113495bSYour Name struct wmi_host_per_chain_rssi_stats { 4905*5113495bSYour Name uint32_t vdev_id; 4906*5113495bSYour Name int32_t rssi_avg_beacon[WMI_HOST_MAX_CHAINS]; 4907*5113495bSYour Name int32_t rssi_avg_data[WMI_HOST_MAX_CHAINS]; 4908*5113495bSYour Name wmi_host_mac_addr peer_macaddr; 4909*5113495bSYour Name }; 4910*5113495bSYour Name 4911*5113495bSYour Name /** 4912*5113495bSYour Name * struct wmi_host_peer_stats - peer stats 4913*5113495bSYour Name * @peer_macaddr: peer MAC address 4914*5113495bSYour Name * @peer_rssi: rssi 4915*5113495bSYour Name * @peer_rssi_seq_num: rssi sequence number 4916*5113495bSYour Name * @peer_tx_rate: last tx data rate used for peer 4917*5113495bSYour Name * @peer_rx_rate: last rx data rate used for peer 4918*5113495bSYour Name * @currentper: Current PER 4919*5113495bSYour Name * @retries: Retries happened during transmission 4920*5113495bSYour Name * @txratecount: Maximum Aggregation Size 4921*5113495bSYour Name * @max4msframelen: Max4msframelen of tx rates used 4922*5113495bSYour Name * @totalsubframes: Total no of subframes 4923*5113495bSYour Name * @txbytes: No of bytes transmitted to the client 4924*5113495bSYour Name * @nobuffs: Packet Loss due to buffer overflows 4925*5113495bSYour Name * @excretries: Packet Loss due to excessive retries 4926*5113495bSYour Name * @peer_rssi_changed: how many times peer's RSSI changed by a 4927*5113495bSYour Name * non-negligible amount 4928*5113495bSYour Name */ 4929*5113495bSYour Name typedef struct { 4930*5113495bSYour Name wmi_host_mac_addr peer_macaddr; 4931*5113495bSYour Name int8_t peer_rssi; 4932*5113495bSYour Name uint32_t peer_rssi_seq_num; 4933*5113495bSYour Name uint32_t peer_tx_rate; 4934*5113495bSYour Name uint32_t peer_rx_rate; 4935*5113495bSYour Name uint32_t currentper; 4936*5113495bSYour Name uint32_t retries; 4937*5113495bSYour Name uint32_t txratecount; 4938*5113495bSYour Name uint32_t max4msframelen; 4939*5113495bSYour Name uint32_t totalsubframes; 4940*5113495bSYour Name uint32_t txbytes; 4941*5113495bSYour Name uint32_t nobuffs[4]; 4942*5113495bSYour Name uint32_t excretries[4]; 4943*5113495bSYour Name uint32_t peer_rssi_changed; 4944*5113495bSYour Name } wmi_host_peer_stats; 4945*5113495bSYour Name 4946*5113495bSYour Name typedef struct { 4947*5113495bSYour Name uint32_t dummy; 4948*5113495bSYour Name } wmi_host_bcnflt_stats; 4949*5113495bSYour Name 4950*5113495bSYour Name /** 4951*5113495bSYour Name * struct wmi_host_chan_stats - WMI chan stats 4952*5113495bSYour Name * @chan_mhz: Primary channel freq of the channel for which stats are sent 4953*5113495bSYour Name * @sampling_period_us: Time spent on the channel 4954*5113495bSYour Name * @rx_clear_count: Aggregate duration over a sampling period for 4955*5113495bSYour Name * which channel activity was observed 4956*5113495bSYour Name * @tx_duration_us: Accumalation of the TX PPDU duration over a sampling period 4957*5113495bSYour Name * @rx_duration_us: Accumalation of the RX PPDU duration over a sampling period 4958*5113495bSYour Name */ 4959*5113495bSYour Name typedef struct { 4960*5113495bSYour Name uint32_t chan_mhz; 4961*5113495bSYour Name uint32_t sampling_period_us; 4962*5113495bSYour Name uint32_t rx_clear_count; 4963*5113495bSYour Name uint32_t tx_duration_us; 4964*5113495bSYour Name uint32_t rx_duration_us; 4965*5113495bSYour Name } wmi_host_chan_stats; 4966*5113495bSYour Name 4967*5113495bSYour Name #ifdef FEATURE_WLAN_TIME_SYNC_FTM 4968*5113495bSYour Name 4969*5113495bSYour Name #define FTM_TIME_SYNC_QTIME_PAIR_MAX 32 4970*5113495bSYour Name 4971*5113495bSYour Name /** 4972*5113495bSYour Name * struct ftm_time_sync_start_stop_params - Get wlan time sync ftm info 4973*5113495bSYour Name * @vdev_id: vdev id 4974*5113495bSYour Name * @timer_interval: periodicity to trigger wlan time sync strobe 4975*5113495bSYour Name * @num_reads: Number of times to trigger wlabn time sync strobe 4976*5113495bSYour Name * @qtime: ref Qtimer value 4977*5113495bSYour Name * @mac_time: ref Mac timer value 4978*5113495bSYour Name */ 4979*5113495bSYour Name struct ftm_time_sync_start_stop_params { 4980*5113495bSYour Name uint32_t vdev_id; 4981*5113495bSYour Name uint32_t timer_interval; 4982*5113495bSYour Name uint32_t num_reads; 4983*5113495bSYour Name uint64_t qtime; 4984*5113495bSYour Name uint64_t mac_time; 4985*5113495bSYour Name }; 4986*5113495bSYour Name 4987*5113495bSYour Name /** 4988*5113495bSYour Name * struct wlan_time_sync_qtime_pair- Get wlan time sync qtime pair value 4989*5113495bSYour Name * @vdev_id: vdev id 4990*5113495bSYour Name * @qtime_initiator: qtimer value of initiator 4991*5113495bSYour Name * @qtime_target: qtimer value of target 4992*5113495bSYour Name */ 4993*5113495bSYour Name struct wlan_time_sync_qtime_pair { 4994*5113495bSYour Name uint64_t qtime_initiator; 4995*5113495bSYour Name uint64_t qtime_target; 4996*5113495bSYour Name }; 4997*5113495bSYour Name 4998*5113495bSYour Name /** 4999*5113495bSYour Name * struct ftm_time_sync_offset- Get ftm time sync offset 5000*5113495bSYour Name * @vdev_id: vdev id 5001*5113495bSYour Name * @num_qtime: number of qtime values received 5002*5113495bSYour Name * @pairs: array of qtime pairs 5003*5113495bSYour Name */ 5004*5113495bSYour Name struct ftm_time_sync_offset { 5005*5113495bSYour Name uint32_t vdev_id; 5006*5113495bSYour Name uint32_t num_qtime; 5007*5113495bSYour Name struct wlan_time_sync_qtime_pair pairs[FTM_TIME_SYNC_QTIME_PAIR_MAX]; 5008*5113495bSYour Name }; 5009*5113495bSYour Name #endif 5010*5113495bSYour Name 5011*5113495bSYour Name /** 5012*5113495bSYour Name * struct wmi_host_tsf_event - Get tsf event info 5013*5113495bSYour Name * @vdev_id: vdev id 5014*5113495bSYour Name * @tsf: tsf 5015*5113495bSYour Name * @tsf_low: low 32bit of tsf 5016*5113495bSYour Name * @tsf_high: high 32 bit of tsf 5017*5113495bSYour Name * @qtimer_low: low 32 bits of qtimer 5018*5113495bSYour Name * @qtimer_high: high 32 bits of qtimer 5019*5113495bSYour Name * @tsf_id: TSF ID for the current vdev 5020*5113495bSYour Name * @tsf_id_valid: is TSF valid 5021*5113495bSYour Name * @mac_id: MAC identifier 5022*5113495bSYour Name * @mac_id_valid: is MAC id valid 5023*5113495bSYour Name * @wlan_global_tsf_low: low 32 bits of wlan global tsf 5024*5113495bSYour Name * @wlan_global_tsf_high: high 32 bits of wlan global tsf 5025*5113495bSYour Name * @tqm_timer_low: 5026*5113495bSYour Name * @tqm_timer_high: 5027*5113495bSYour Name * @use_tqm_timer: 5028*5113495bSYour Name */ 5029*5113495bSYour Name struct wmi_host_tsf_event { 5030*5113495bSYour Name uint32_t vdev_id; 5031*5113495bSYour Name uint64_t tsf; 5032*5113495bSYour Name uint32_t tsf_low; 5033*5113495bSYour Name uint32_t tsf_high; 5034*5113495bSYour Name uint32_t qtimer_low; 5035*5113495bSYour Name uint32_t qtimer_high; 5036*5113495bSYour Name uint32_t tsf_id; 5037*5113495bSYour Name uint32_t tsf_id_valid; 5038*5113495bSYour Name uint32_t mac_id; 5039*5113495bSYour Name uint32_t mac_id_valid; 5040*5113495bSYour Name uint32_t wlan_global_tsf_low; 5041*5113495bSYour Name uint32_t wlan_global_tsf_high; 5042*5113495bSYour Name uint32_t tqm_timer_low; 5043*5113495bSYour Name uint32_t tqm_timer_high; 5044*5113495bSYour Name uint32_t use_tqm_timer; 5045*5113495bSYour Name }; 5046*5113495bSYour Name 5047*5113495bSYour Name /** 5048*5113495bSYour Name * struct wmi_host_pdev_telemetry_stats - pdev telemetry stats 5049*5113495bSYour Name * @avg_chan_lat_per_ac: average channel latency 5050*5113495bSYour Name * @estimated_air_time_per_ac: Percentage of air time available for each AC 5051*5113495bSYour Name * BIT[0-7] : AC_BE 5052*5113495bSYour Name * BIT[8-15] : AC_BK 5053*5113495bSYour Name * BIT[16-23] : AC_VI 5054*5113495bSYour Name * BIT[24-31] : AC_VO 5055*5113495bSYour Name */ 5056*5113495bSYour Name struct wmi_host_pdev_telemetry_stats { 5057*5113495bSYour Name uint32_t avg_chan_lat_per_ac[WIFI_AC_MAX]; 5058*5113495bSYour Name uint32_t estimated_air_time_per_ac; 5059*5113495bSYour Name }; 5060*5113495bSYour Name 5061*5113495bSYour Name #define WMI_EVENT_ID_INVALID 0 5062*5113495bSYour Name /* 5063*5113495bSYour Name * Host based ENUM IDs for events to abstract target enums for event_id 5064*5113495bSYour Name */ 5065*5113495bSYour Name typedef enum { 5066*5113495bSYour Name wmi_service_ready_event_id = 0, 5067*5113495bSYour Name wmi_ready_event_id, 5068*5113495bSYour Name wmi_dbg_msg_event_id, 5069*5113495bSYour Name wmi_scan_event_id, 5070*5113495bSYour Name wmi_echo_event_id, 5071*5113495bSYour Name wmi_update_stats_event_id, 5072*5113495bSYour Name wmi_inst_rssi_stats_event_id, 5073*5113495bSYour Name wmi_vdev_start_resp_event_id, 5074*5113495bSYour Name wmi_vdev_standby_req_event_id, 5075*5113495bSYour Name wmi_vdev_resume_req_event_id, 5076*5113495bSYour Name wmi_vdev_stopped_event_id, 5077*5113495bSYour Name wmi_peer_sta_kickout_event_id, 5078*5113495bSYour Name wmi_host_swba_event_id, 5079*5113495bSYour Name wmi_tbttoffset_update_event_id, 5080*5113495bSYour Name wmi_mgmt_rx_event_id, 5081*5113495bSYour Name wmi_chan_info_event_id, 5082*5113495bSYour Name wmi_phyerr_event_id, 5083*5113495bSYour Name wmi_roam_event_id, 5084*5113495bSYour Name wmi_profile_match, 5085*5113495bSYour Name wmi_debug_print_event_id, 5086*5113495bSYour Name wmi_pdev_qvit_event_id, 5087*5113495bSYour Name wmi_wlan_profile_data_event_id, 5088*5113495bSYour Name wmi_rtt_meas_report_event_id, 5089*5113495bSYour Name wmi_tsf_meas_report_event_id, 5090*5113495bSYour Name wmi_rtt_error_report_event_id, 5091*5113495bSYour Name wmi_rtt_keepalive_event_id, 5092*5113495bSYour Name wmi_oem_cap_event_id, 5093*5113495bSYour Name wmi_oem_meas_report_event_id, 5094*5113495bSYour Name wmi_oem_report_event_id, 5095*5113495bSYour Name wmi_nan_event_id, 5096*5113495bSYour Name wmi_wow_wakeup_host_event_id, 5097*5113495bSYour Name wmi_gtk_offload_status_event_id, 5098*5113495bSYour Name wmi_gtk_rekey_fail_event_id, 5099*5113495bSYour Name wmi_dcs_interference_event_id, 5100*5113495bSYour Name wmi_pdev_tpc_config_event_id, 5101*5113495bSYour Name wmi_csa_handling_event_id, 5102*5113495bSYour Name wmi_gpio_input_event_id, 5103*5113495bSYour Name wmi_peer_ratecode_list_event_id, 5104*5113495bSYour Name wmi_generic_buffer_event_id, 5105*5113495bSYour Name wmi_mcast_buf_release_event_id, 5106*5113495bSYour Name wmi_mcast_list_ageout_event_id, 5107*5113495bSYour Name wmi_vdev_get_keepalive_event_id, 5108*5113495bSYour Name wmi_wds_peer_event_id, 5109*5113495bSYour Name wmi_peer_sta_ps_statechg_event_id, 5110*5113495bSYour Name wmi_pdev_fips_event_id, 5111*5113495bSYour Name wmi_tt_stats_event_id, 5112*5113495bSYour Name wmi_pdev_channel_hopping_event_id, 5113*5113495bSYour Name wmi_pdev_ani_cck_level_event_id, 5114*5113495bSYour Name wmi_pdev_ani_ofdm_level_event_id, 5115*5113495bSYour Name wmi_pdev_reserve_ast_entry_event_id, 5116*5113495bSYour Name wmi_pdev_nfcal_power_event_id, 5117*5113495bSYour Name wmi_pdev_tpc_event_id, 5118*5113495bSYour Name wmi_pdev_get_ast_info_event_id, 5119*5113495bSYour Name wmi_pdev_temperature_event_id, 5120*5113495bSYour Name wmi_pdev_nfcal_power_all_channels_event_id, 5121*5113495bSYour Name wmi_pdev_bss_chan_info_event_id, 5122*5113495bSYour Name wmi_mu_report_event_id, 5123*5113495bSYour Name wmi_pdev_utf_event_id, 5124*5113495bSYour Name wmi_pdev_dump_event_id, 5125*5113495bSYour Name wmi_tx_pause_event_id, 5126*5113495bSYour Name wmi_dfs_radar_event_id, 5127*5113495bSYour Name wmi_pdev_l1ss_track_event_id, 5128*5113495bSYour Name wmi_service_ready_ext_event_id, 5129*5113495bSYour Name wmi_vdev_install_key_complete_event_id, 5130*5113495bSYour Name wmi_vdev_mcc_bcn_intvl_change_req_event_id, 5131*5113495bSYour Name wmi_vdev_tsf_report_event_id, 5132*5113495bSYour Name wmi_peer_info_event_id, 5133*5113495bSYour Name wmi_peer_tx_fail_cnt_thr_event_id, 5134*5113495bSYour Name wmi_peer_estimated_linkspeed_event_id, 5135*5113495bSYour Name wmi_peer_state_event_id, 5136*5113495bSYour Name wmi_offload_bcn_tx_status_event_id, 5137*5113495bSYour Name wmi_offload_prob_resp_tx_status_event_id, 5138*5113495bSYour Name wmi_mgmt_tx_completion_event_id, 5139*5113495bSYour Name wmi_tx_delba_complete_event_id, 5140*5113495bSYour Name wmi_tx_addba_complete_event_id, 5141*5113495bSYour Name wmi_ba_rsp_ssn_event_id, 5142*5113495bSYour Name wmi_aggr_state_trig_event_id, 5143*5113495bSYour Name wmi_roam_synch_event_id, 5144*5113495bSYour Name wmi_roam_synch_frame_event_id, 5145*5113495bSYour Name wmi_p2p_disc_event_id, 5146*5113495bSYour Name wmi_p2p_noa_event_id, 5147*5113495bSYour Name wmi_p2p_lo_stop_event_id, 5148*5113495bSYour Name wmi_vdev_add_macaddr_rx_filter_event_id, 5149*5113495bSYour Name wmi_pdev_resume_event_id, 5150*5113495bSYour Name wmi_d0_wow_disable_ack_event_id, 5151*5113495bSYour Name wmi_wow_initial_wakeup_event_id, 5152*5113495bSYour Name wmi_stats_ext_event_id, 5153*5113495bSYour Name wmi_iface_link_stats_event_id, 5154*5113495bSYour Name wmi_peer_link_stats_event_id, 5155*5113495bSYour Name wmi_radio_link_stats_link, 5156*5113495bSYour Name wmi_update_fw_mem_dump_event_id, 5157*5113495bSYour Name wmi_diag_event_id_log_supported_event_id, 5158*5113495bSYour Name wmi_nlo_match_event_id, 5159*5113495bSYour Name wmi_nlo_scan_complete_event_id, 5160*5113495bSYour Name wmi_apfind_event_id, 5161*5113495bSYour Name wmi_passpoint_match_event_id, 5162*5113495bSYour Name wmi_chatter_pc_query_event_id, 5163*5113495bSYour Name wmi_pdev_ftm_intg_event_id, 5164*5113495bSYour Name wmi_wlan_freq_avoid_event_id, 5165*5113495bSYour Name wmi_thermal_mgmt_event_id, 5166*5113495bSYour Name wmi_diag_container_event_id, 5167*5113495bSYour Name wmi_host_auto_shutdown_event_id, 5168*5113495bSYour Name wmi_update_whal_mib_stats_event_id, 5169*5113495bSYour Name wmi_update_vdev_rate_stats_event_id, 5170*5113495bSYour Name wmi_diag_event_id, 5171*5113495bSYour Name wmi_unit_test_event_id, 5172*5113495bSYour Name wmi_ocb_set_sched_event_id, 5173*5113495bSYour Name wmi_dbg_mesg_flush_complete_event_id, 5174*5113495bSYour Name wmi_rssi_breach_event_id, 5175*5113495bSYour Name wmi_uploadh_event_id, 5176*5113495bSYour Name wmi_captureh_event_id, 5177*5113495bSYour Name wmi_rfkill_state_change_event_id, 5178*5113495bSYour Name wmi_tdls_peer_event_id, 5179*5113495bSYour Name wmi_batch_scan_enabled_event_id, 5180*5113495bSYour Name wmi_batch_scan_result_event_id, 5181*5113495bSYour Name wmi_lpi_result_event_id, 5182*5113495bSYour Name wmi_lpi_status_event_id, 5183*5113495bSYour Name wmi_lpi_handoff_event_id, 5184*5113495bSYour Name wmi_extscan_start_stop_event_id, 5185*5113495bSYour Name wmi_extscan_operation_event_id, 5186*5113495bSYour Name wmi_extscan_table_usage_event_id, 5187*5113495bSYour Name wmi_extscan_cached_results_event_id, 5188*5113495bSYour Name wmi_extscan_wlan_change_results_event_id, 5189*5113495bSYour Name wmi_extscan_hotlist_match_event_id, 5190*5113495bSYour Name wmi_extscan_capabilities_event_id, 5191*5113495bSYour Name wmi_extscan_hotlist_ssid_match_event_id, 5192*5113495bSYour Name wmi_mdns_stats_event_id, 5193*5113495bSYour Name wmi_sap_ofl_add_sta_event_id, 5194*5113495bSYour Name wmi_sap_ofl_del_sta_event_id, 5195*5113495bSYour Name wmi_ocb_set_config_resp_event_id, 5196*5113495bSYour Name wmi_ocb_get_tsf_timer_resp_event_id, 5197*5113495bSYour Name wmi_dcc_get_stats_resp_event_id, 5198*5113495bSYour Name wmi_dcc_update_ndl_resp_event_id, 5199*5113495bSYour Name wmi_dcc_stats_event_id, 5200*5113495bSYour Name wmi_soc_set_hw_mode_resp_event_id, 5201*5113495bSYour Name wmi_soc_hw_mode_transition_event_id, 5202*5113495bSYour Name wmi_soc_set_dual_mac_config_resp_event_id, 5203*5113495bSYour Name wmi_tx_data_traffic_ctrl_event_id, 5204*5113495bSYour Name wmi_peer_tx_mu_txmit_count_event_id, 5205*5113495bSYour Name wmi_peer_gid_userpos_list_event_id, 5206*5113495bSYour Name wmi_pdev_check_cal_version_event_id, 5207*5113495bSYour Name wmi_atf_peer_stats_event_id, 5208*5113495bSYour Name wmi_peer_delete_response_event_id, 5209*5113495bSYour Name wmi_peer_delete_all_response_event_id, 5210*5113495bSYour Name wmi_pdev_csa_switch_count_status_event_id, 5211*5113495bSYour Name wmi_reg_chan_list_cc_event_id, 5212*5113495bSYour Name wmi_reg_chan_list_cc_ext_event_id, 5213*5113495bSYour Name #ifdef CONFIG_AFC_SUPPORT 5214*5113495bSYour Name wmi_afc_event_id, 5215*5113495bSYour Name #endif 5216*5113495bSYour Name wmi_offchan_data_tx_completion_event, 5217*5113495bSYour Name wmi_dfs_cac_complete_id, 5218*5113495bSYour Name wmi_dfs_radar_detection_event_id, 5219*5113495bSYour Name wmi_ext_tbttoffset_update_event_id, 5220*5113495bSYour Name wmi_11d_new_country_event_id, 5221*5113495bSYour Name wmi_get_arp_stats_req_id, 5222*5113495bSYour Name wmi_service_available_event_id, 5223*5113495bSYour Name wmi_update_rcpi_event_id, 5224*5113495bSYour Name wmi_pdev_wds_entry_list_event_id, 5225*5113495bSYour Name wmi_ndp_initiator_rsp_event_id, 5226*5113495bSYour Name wmi_ndp_indication_event_id, 5227*5113495bSYour Name wmi_ndp_confirm_event_id, 5228*5113495bSYour Name wmi_ndp_responder_rsp_event_id, 5229*5113495bSYour Name wmi_ndp_end_indication_event_id, 5230*5113495bSYour Name wmi_ndp_end_rsp_event_id, 5231*5113495bSYour Name wmi_nan_dmesg_event_id, 5232*5113495bSYour Name wmi_ndl_schedule_update_event_id, 5233*5113495bSYour Name wmi_ndp_event_id, 5234*5113495bSYour Name wmi_oem_response_event_id, 5235*5113495bSYour Name wmi_peer_stats_info_event_id, 5236*5113495bSYour Name wmi_pdev_chip_power_stats_event_id, 5237*5113495bSYour Name wmi_ap_ps_egap_info_event_id, 5238*5113495bSYour Name wmi_peer_assoc_conf_event_id, 5239*5113495bSYour Name wmi_vdev_delete_resp_event_id, 5240*5113495bSYour Name wmi_apf_capability_info_event_id, 5241*5113495bSYour Name wmi_vdev_encrypt_decrypt_data_rsp_event_id, 5242*5113495bSYour Name wmi_report_rx_aggr_failure_event_id, 5243*5113495bSYour Name wmi_pdev_chip_pwr_save_failure_detect_event_id, 5244*5113495bSYour Name wmi_peer_antdiv_info_event_id, 5245*5113495bSYour Name wmi_pdev_set_hw_mode_rsp_event_id, 5246*5113495bSYour Name wmi_pdev_hw_mode_transition_event_id, 5247*5113495bSYour Name wmi_pdev_set_mac_config_resp_event_id, 5248*5113495bSYour Name wmi_coex_bt_activity_event_id, 5249*5113495bSYour Name wmi_mgmt_tx_bundle_completion_event_id, 5250*5113495bSYour Name wmi_radio_tx_power_level_stats_event_id, 5251*5113495bSYour Name wmi_report_stats_event_id, 5252*5113495bSYour Name wmi_dma_buf_release_event_id, 5253*5113495bSYour Name wmi_sap_obss_detection_report_event_id, 5254*5113495bSYour Name wmi_obss_color_collision_report_event_id, 5255*5113495bSYour Name wmi_host_swfda_event_id, 5256*5113495bSYour Name wmi_sar_get_limits_event_id, 5257*5113495bSYour Name wmi_pdev_div_rssi_antid_event_id, 5258*5113495bSYour Name #if defined(WLAN_DFS_PARTIAL_OFFLOAD) && defined(HOST_DFS_SPOOF_TEST) 5259*5113495bSYour Name wmi_host_dfs_status_check_event_id, 5260*5113495bSYour Name #endif 5261*5113495bSYour Name #ifdef WLAN_SUPPORT_TWT 5262*5113495bSYour Name wmi_twt_enable_complete_event_id, 5263*5113495bSYour Name wmi_twt_disable_complete_event_id, 5264*5113495bSYour Name wmi_twt_add_dialog_complete_event_id, 5265*5113495bSYour Name wmi_twt_del_dialog_complete_event_id, 5266*5113495bSYour Name wmi_twt_pause_dialog_complete_event_id, 5267*5113495bSYour Name wmi_twt_resume_dialog_complete_event_id, 5268*5113495bSYour Name wmi_twt_nudge_dialog_complete_event_id, 5269*5113495bSYour Name wmi_twt_session_stats_event_id, 5270*5113495bSYour Name wmi_twt_notify_event_id, 5271*5113495bSYour Name wmi_twt_ack_complete_event_id, 5272*5113495bSYour Name #endif 5273*5113495bSYour Name wmi_apf_get_vdev_work_memory_resp_event_id, 5274*5113495bSYour Name wmi_roam_scan_stats_event_id, 5275*5113495bSYour Name wmi_vdev_ocac_complete_event_id, 5276*5113495bSYour Name 5277*5113495bSYour Name #ifdef OL_ATH_SMART_LOGGING 5278*5113495bSYour Name wmi_debug_fatal_condition_eventid, 5279*5113495bSYour Name #endif /* OL_ATH_SMART_LOGGING */ 5280*5113495bSYour Name wmi_wlan_sar2_result_event_id, 5281*5113495bSYour Name wmi_esp_estimate_event_id, 5282*5113495bSYour Name wmi_pdev_ctl_failsafe_check_event_id, 5283*5113495bSYour Name wmi_vdev_bcn_reception_stats_event_id, 5284*5113495bSYour Name wmi_roam_denylist_event_id, 5285*5113495bSYour Name wmi_wlm_stats_event_id, 5286*5113495bSYour Name wmi_peer_cfr_capture_event_id, 5287*5113495bSYour Name wmi_pdev_cold_boot_cal_event_id, 5288*5113495bSYour Name wmi_vdev_get_mws_coex_state_eventid, 5289*5113495bSYour Name wmi_vdev_get_mws_coex_dpwb_state_eventid, 5290*5113495bSYour Name wmi_vdev_get_mws_coex_tdm_state_eventid, 5291*5113495bSYour Name wmi_vdev_get_mws_coex_idrx_state_eventid, 5292*5113495bSYour Name wmi_vdev_get_mws_coex_antenna_sharing_state_eventid, 5293*5113495bSYour Name #ifdef WLAN_FEATURE_INTEROP_ISSUES_AP 5294*5113495bSYour Name wmi_pdev_interop_issues_ap_event_id, 5295*5113495bSYour Name #endif 5296*5113495bSYour Name wmi_coex_report_antenna_isolation_event_id, 5297*5113495bSYour Name wmi_chan_rf_characterization_info_event_id, 5298*5113495bSYour Name wmi_roam_auth_offload_event_id, 5299*5113495bSYour Name wmi_service_ready_ext2_event_id, 5300*5113495bSYour Name wmi_get_elna_bypass_event_id, 5301*5113495bSYour Name wmi_motion_det_host_eventid, 5302*5113495bSYour Name wmi_motion_det_base_line_host_eventid, 5303*5113495bSYour Name wmi_get_ani_level_event_id, 5304*5113495bSYour Name wmi_peer_tx_pn_response_event_id, 5305*5113495bSYour Name wmi_roam_stats_event_id, 5306*5113495bSYour Name wmi_oem_data_event_id, 5307*5113495bSYour Name wmi_mgmt_offload_data_event_id, 5308*5113495bSYour Name wmi_pdev_multi_vdev_restart_response_event_id, 5309*5113495bSYour Name wmi_roam_pmkid_request_event_id, 5310*5113495bSYour Name #ifdef FEATURE_WLAN_TIME_SYNC_FTM 5311*5113495bSYour Name wmi_wlan_time_sync_ftm_start_stop_event_id, 5312*5113495bSYour Name wmi_wlan_time_sync_q_initiator_target_offset_eventid, 5313*5113495bSYour Name #endif 5314*5113495bSYour Name wmi_roam_scan_chan_list_id, 5315*5113495bSYour Name wmi_muedca_params_config_eventid, 5316*5113495bSYour Name wmi_pdev_sscan_fw_param_eventid, 5317*5113495bSYour Name wmi_roam_cap_report_event_id, 5318*5113495bSYour Name wmi_vdev_bcn_latency_event_id, 5319*5113495bSYour Name wmi_vdev_disconnect_event_id, 5320*5113495bSYour Name wmi_peer_create_conf_event_id, 5321*5113495bSYour Name wmi_pdev_cp_fwstats_eventid, 5322*5113495bSYour Name wmi_pdev_halphy_fwstats_eventid, 5323*5113495bSYour Name wmi_vdev_send_big_data_p2_eventid, 5324*5113495bSYour Name wmi_pdev_get_dpd_status_event_id, 5325*5113495bSYour Name #ifdef WLAN_FEATURE_PKT_CAPTURE_V2 5326*5113495bSYour Name wmi_vdev_smart_monitor_event_id, 5327*5113495bSYour Name #endif 5328*5113495bSYour Name wmi_pdev_get_halphy_cal_status_event_id, 5329*5113495bSYour Name wmi_pdev_set_halphy_cal_event_id, 5330*5113495bSYour Name wmi_pdev_aoa_phasedelta_event_id, 5331*5113495bSYour Name #ifdef WLAN_MGMT_RX_REO_SUPPORT 5332*5113495bSYour Name wmi_mgmt_rx_fw_consumed_eventid, 5333*5113495bSYour Name #endif 5334*5113495bSYour Name #ifdef WLAN_FEATURE_11BE_MLO 5335*5113495bSYour Name wmi_mlo_setup_complete_event_id, 5336*5113495bSYour Name wmi_mlo_teardown_complete_event_id, 5337*5113495bSYour Name wmi_mlo_link_set_active_resp_eventid, 5338*5113495bSYour Name wmi_mlo_link_removal_eventid, 5339*5113495bSYour Name wmi_mlo_link_disable_request_eventid, 5340*5113495bSYour Name #ifdef WLAN_FEATURE_11BE_MLO_ADV_FEATURE 5341*5113495bSYour Name wmi_mlo_link_switch_request_eventid, 5342*5113495bSYour Name wmi_mlo_link_state_switch_eventid, 5343*5113495bSYour Name #endif 5344*5113495bSYour Name #endif 5345*5113495bSYour Name wmi_pdev_fips_extend_event_id, 5346*5113495bSYour Name wmi_roam_frame_event_id, 5347*5113495bSYour Name #ifdef WLAN_FEATURE_DYNAMIC_MAC_ADDR_UPDATE 5348*5113495bSYour Name wmi_vdev_update_mac_addr_conf_eventid, 5349*5113495bSYour Name #endif 5350*5113495bSYour Name #ifdef WLAN_FEATURE_11BE_MLO 5351*5113495bSYour Name wmi_vdev_quiet_offload_eventid, 5352*5113495bSYour Name #endif 5353*5113495bSYour Name #ifdef WLAN_FEATURE_MCC_QUOTA 5354*5113495bSYour Name wmi_resmgr_chan_time_quota_changed_eventid, 5355*5113495bSYour Name #endif 5356*5113495bSYour Name wmi_peer_rx_pn_response_event_id, 5357*5113495bSYour Name wmi_extract_pktlog_decode_info_eventid, 5358*5113495bSYour Name #ifdef QCA_RSSI_DB2DBM 5359*5113495bSYour Name wmi_pdev_rssi_dbm_conversion_params_info_eventid, 5360*5113495bSYour Name #endif 5361*5113495bSYour Name #ifdef MULTI_CLIENT_LL_SUPPORT 5362*5113495bSYour Name wmi_vdev_latency_event_id, 5363*5113495bSYour Name #endif 5364*5113495bSYour Name #if defined(WIFI_POS_CONVERGED) && defined(WLAN_FEATURE_RTT_11AZ_SUPPORT) 5365*5113495bSYour Name wmi_rtt_pasn_peer_create_req_eventid, 5366*5113495bSYour Name wmi_rtt_pasn_peer_delete_eventid, 5367*5113495bSYour Name #endif 5368*5113495bSYour Name #ifdef WLAN_VENDOR_HANDOFF_CONTROL 5369*5113495bSYour Name wmi_get_roam_vendor_control_param_event_id, 5370*5113495bSYour Name #endif 5371*5113495bSYour Name #ifdef WLAN_FEATURE_DBAM_CONFIG 5372*5113495bSYour Name wmi_coex_dbam_complete_event_id, 5373*5113495bSYour Name #endif 5374*5113495bSYour Name wmi_spectral_capabilities_eventid, 5375*5113495bSYour Name #ifdef WLAN_FEATURE_COAP 5376*5113495bSYour Name wmi_wow_coap_buf_info_eventid, 5377*5113495bSYour Name #endif 5378*5113495bSYour Name #ifdef HEALTH_MON_SUPPORT 5379*5113495bSYour Name wmi_extract_health_mon_init_done_info_eventid, 5380*5113495bSYour Name #endif /* HEALTH_MON_SUPPORT */ 5381*5113495bSYour Name #ifdef WLAN_FEATURE_11BE_MLO 5382*5113495bSYour Name wmi_mlo_ap_vdev_tid_to_link_map_eventid, 5383*5113495bSYour Name #endif 5384*5113495bSYour Name #ifdef WLAN_SUPPORT_GAP_LL_PS_MODE 5385*5113495bSYour Name wmi_xgap_enable_complete_eventid, 5386*5113495bSYour Name #endif 5387*5113495bSYour Name wmi_pdev_set_tgtr2p_table_eventid, 5388*5113495bSYour Name #ifdef QCA_MANUAL_TRIGGERED_ULOFDMA 5389*5113495bSYour Name wmi_manual_ul_ofdma_trig_feedback_eventid, 5390*5113495bSYour Name wmi_manual_ul_ofdma_trig_rx_peer_userinfo_eventid, 5391*5113495bSYour Name #endif 5392*5113495bSYour Name #ifdef QCA_STANDALONE_SOUNDING_TRIGGER 5393*5113495bSYour Name wmi_vdev_standalone_sound_complete_eventid, 5394*5113495bSYour Name #endif 5395*5113495bSYour Name wmi_csa_ie_received_event_id, 5396*5113495bSYour Name #ifdef WLAN_FEATURE_11BE_MLO 5397*5113495bSYour Name wmi_mlo_link_state_info_eventid, 5398*5113495bSYour Name #endif 5399*5113495bSYour Name #if defined(WLAN_FEATURE_ROAM_OFFLOAD) && defined(WLAN_FEATURE_11BE_MLO) 5400*5113495bSYour Name wmi_roam_synch_key_event_id, 5401*5113495bSYour Name #endif 5402*5113495bSYour Name #ifdef QCA_SUPPORT_PRIMARY_LINK_MIGRATE 5403*5113495bSYour Name wmi_peer_ptqm_migration_response_eventid, 5404*5113495bSYour Name #endif 5405*5113495bSYour Name wmi_pdev_set_rf_path_resp_eventid, 5406*5113495bSYour Name #ifdef WLAN_RCC_ENHANCED_AOA_SUPPORT 5407*5113495bSYour Name wmi_pdev_enhanced_aoa_phasedelta_eventid, 5408*5113495bSYour Name #endif 5409*5113495bSYour Name wmi_peer_oper_mode_change_event_id, 5410*5113495bSYour Name 5411*5113495bSYour Name #ifdef WLAN_FEATURE_LL_LT_SAP 5412*5113495bSYour Name wmi_audio_transport_switch_type_event_id, 5413*5113495bSYour Name #endif 5414*5113495bSYour Name 5415*5113495bSYour Name wmi_events_max, 5416*5113495bSYour Name } wmi_conv_event_id; 5417*5113495bSYour Name 5418*5113495bSYour Name #define WMI_UNAVAILABLE_PARAM 0 5419*5113495bSYour Name 5420*5113495bSYour Name #ifdef ENABLE_HOST_TO_TARGET_CONVERSION 5421*5113495bSYour Name #define PDEV_PARAM(host_param, target_param) wmi_ ## host_param 5422*5113495bSYour Name #else 5423*5113495bSYour Name #define PDEV_PARAM(host_param, target_param) wmi_ ## host_param = WMI_ ## target_param 5424*5113495bSYour Name #endif 5425*5113495bSYour Name 5426*5113495bSYour Name /* Host based ENUM IDs for PDEV params to abstract target enums */ 5427*5113495bSYour Name typedef enum { 5428*5113495bSYour Name PDEV_PARAM(pdev_param_rx_chain_mask, PDEV_PARAM_RX_CHAIN_MASK), 5429*5113495bSYour Name PDEV_PARAM(pdev_param_txpower_limit2g, PDEV_PARAM_TXPOWER_LIMIT2G), 5430*5113495bSYour Name PDEV_PARAM(pdev_param_txpower_limit5g, PDEV_PARAM_TXPOWER_LIMIT5G), 5431*5113495bSYour Name PDEV_PARAM(pdev_param_txpower_scale, PDEV_PARAM_TXPOWER_SCALE), 5432*5113495bSYour Name PDEV_PARAM(pdev_param_beacon_gen_mode, PDEV_PARAM_BEACON_GEN_MODE), 5433*5113495bSYour Name PDEV_PARAM(pdev_param_beacon_tx_mode, PDEV_PARAM_BEACON_TX_MODE), 5434*5113495bSYour Name PDEV_PARAM(pdev_param_resmgr_offchan_mode, 5435*5113495bSYour Name PDEV_PARAM_RESMGR_OFFCHAN_MODE), 5436*5113495bSYour Name PDEV_PARAM(pdev_param_protection_mode, PDEV_PARAM_PROTECTION_MODE), 5437*5113495bSYour Name PDEV_PARAM(pdev_param_dynamic_bw, PDEV_PARAM_DYNAMIC_BW), 5438*5113495bSYour Name PDEV_PARAM(pdev_param_non_agg_sw_retry_th, 5439*5113495bSYour Name PDEV_PARAM_NON_AGG_SW_RETRY_TH), 5440*5113495bSYour Name PDEV_PARAM(pdev_param_agg_sw_retry_th, PDEV_PARAM_AGG_SW_RETRY_TH), 5441*5113495bSYour Name PDEV_PARAM(pdev_param_sta_kickout_th, PDEV_PARAM_STA_KICKOUT_TH), 5442*5113495bSYour Name PDEV_PARAM(pdev_param_ac_aggrsize_scaling, 5443*5113495bSYour Name PDEV_PARAM_AC_AGGRSIZE_SCALING), 5444*5113495bSYour Name PDEV_PARAM(pdev_param_ltr_enable, PDEV_PARAM_LTR_ENABLE), 5445*5113495bSYour Name PDEV_PARAM(pdev_param_ltr_ac_latency_be, PDEV_PARAM_LTR_AC_LATENCY_BE), 5446*5113495bSYour Name PDEV_PARAM(pdev_param_ltr_ac_latency_bk, PDEV_PARAM_LTR_AC_LATENCY_BK), 5447*5113495bSYour Name PDEV_PARAM(pdev_param_tx_chain_mask, PDEV_PARAM_TX_CHAIN_MASK), 5448*5113495bSYour Name PDEV_PARAM(pdev_param_ltr_ac_latency_vi, PDEV_PARAM_LTR_AC_LATENCY_VI), 5449*5113495bSYour Name PDEV_PARAM(pdev_param_ltr_ac_latency_vo, PDEV_PARAM_LTR_AC_LATENCY_VO), 5450*5113495bSYour Name PDEV_PARAM(pdev_param_ltr_ac_latency_timeout, 5451*5113495bSYour Name PDEV_PARAM_LTR_AC_LATENCY_TIMEOUT), 5452*5113495bSYour Name PDEV_PARAM(pdev_param_ltr_sleep_override, 5453*5113495bSYour Name PDEV_PARAM_LTR_SLEEP_OVERRIDE), 5454*5113495bSYour Name PDEV_PARAM(pdev_param_ltr_rx_override, PDEV_PARAM_LTR_RX_OVERRIDE), 5455*5113495bSYour Name PDEV_PARAM(pdev_param_ltr_tx_activity_timeout, 5456*5113495bSYour Name PDEV_PARAM_LTR_TX_ACTIVITY_TIMEOUT), 5457*5113495bSYour Name PDEV_PARAM(pdev_param_l1ss_enable, PDEV_PARAM_L1SS_ENABLE), 5458*5113495bSYour Name PDEV_PARAM(pdev_param_dsleep_enable, PDEV_PARAM_DSLEEP_ENABLE), 5459*5113495bSYour Name PDEV_PARAM(pdev_param_pcielp_txbuf_flush, 5460*5113495bSYour Name PDEV_PARAM_PCIELP_TXBUF_FLUSH), 5461*5113495bSYour Name PDEV_PARAM(pdev_param_pcielp_txbuf_watermark, 5462*5113495bSYour Name PDEV_PARAM_PCIELP_TXBUF_WATERMARK), 5463*5113495bSYour Name PDEV_PARAM(pdev_param_pcielp_txbuf_tmo_en, 5464*5113495bSYour Name PDEV_PARAM_PCIELP_TXBUF_TMO_EN), 5465*5113495bSYour Name PDEV_PARAM(pdev_param_pcielp_txbuf_tmo_value, 5466*5113495bSYour Name PDEV_PARAM_PCIELP_TXBUF_TMO_VALUE), 5467*5113495bSYour Name PDEV_PARAM(pdev_param_pdev_stats_update_period, 5468*5113495bSYour Name PDEV_PARAM_PDEV_STATS_UPDATE_PERIOD), 5469*5113495bSYour Name PDEV_PARAM(pdev_param_vdev_stats_update_period, 5470*5113495bSYour Name PDEV_PARAM_VDEV_STATS_UPDATE_PERIOD), 5471*5113495bSYour Name PDEV_PARAM(pdev_param_peer_stats_update_period, 5472*5113495bSYour Name PDEV_PARAM_PEER_STATS_UPDATE_PERIOD), 5473*5113495bSYour Name PDEV_PARAM(pdev_param_bcnflt_stats_update_period, 5474*5113495bSYour Name PDEV_PARAM_BCNFLT_STATS_UPDATE_PERIOD), 5475*5113495bSYour Name PDEV_PARAM(pdev_param_pmf_qos, PDEV_PARAM_PMF_QOS), 5476*5113495bSYour Name PDEV_PARAM(pdev_param_arp_ac_override, PDEV_PARAM_ARP_AC_OVERRIDE), 5477*5113495bSYour Name PDEV_PARAM(pdev_param_dcs, PDEV_PARAM_DCS), 5478*5113495bSYour Name PDEV_PARAM(pdev_param_ani_enable, PDEV_PARAM_ANI_ENABLE), 5479*5113495bSYour Name PDEV_PARAM(pdev_param_ani_poll_period, PDEV_PARAM_ANI_POLL_PERIOD), 5480*5113495bSYour Name PDEV_PARAM(pdev_param_ani_listen_period, PDEV_PARAM_ANI_LISTEN_PERIOD), 5481*5113495bSYour Name PDEV_PARAM(pdev_param_ani_ofdm_level, PDEV_PARAM_ANI_OFDM_LEVEL), 5482*5113495bSYour Name PDEV_PARAM(pdev_param_ani_cck_level, PDEV_PARAM_ANI_CCK_LEVEL), 5483*5113495bSYour Name PDEV_PARAM(pdev_param_dyntxchain, PDEV_PARAM_DYNTXCHAIN), 5484*5113495bSYour Name PDEV_PARAM(pdev_param_proxy_sta, PDEV_PARAM_PROXY_STA), 5485*5113495bSYour Name PDEV_PARAM(pdev_param_idle_ps_config, PDEV_PARAM_IDLE_PS_CONFIG), 5486*5113495bSYour Name PDEV_PARAM(pdev_param_power_gating_sleep, 5487*5113495bSYour Name PDEV_PARAM_POWER_GATING_SLEEP), 5488*5113495bSYour Name PDEV_PARAM(pdev_param_rfkill_enable, PDEV_PARAM_RFKILL_ENABLE), 5489*5113495bSYour Name PDEV_PARAM(pdev_param_burst_dur, PDEV_PARAM_BURST_DUR), 5490*5113495bSYour Name PDEV_PARAM(pdev_param_burst_enable, PDEV_PARAM_BURST_ENABLE), 5491*5113495bSYour Name PDEV_PARAM(pdev_param_hw_rfkill_config, PDEV_PARAM_HW_RFKILL_CONFIG), 5492*5113495bSYour Name PDEV_PARAM(pdev_param_low_power_rf_enable, 5493*5113495bSYour Name PDEV_PARAM_LOW_POWER_RF_ENABLE), 5494*5113495bSYour Name PDEV_PARAM(pdev_param_l1ss_track, PDEV_PARAM_L1SS_TRACK), 5495*5113495bSYour Name PDEV_PARAM(pdev_param_hyst_en, PDEV_PARAM_HYST_EN), 5496*5113495bSYour Name PDEV_PARAM(pdev_param_power_collapse_enable, 5497*5113495bSYour Name PDEV_PARAM_POWER_COLLAPSE_ENABLE), 5498*5113495bSYour Name PDEV_PARAM(pdev_param_led_sys_state, PDEV_PARAM_LED_SYS_STATE), 5499*5113495bSYour Name PDEV_PARAM(pdev_param_led_enable, PDEV_PARAM_LED_ENABLE), 5500*5113495bSYour Name PDEV_PARAM(pdev_param_audio_over_wlan_latency, 5501*5113495bSYour Name PDEV_PARAM_AUDIO_OVER_WLAN_LATENCY), 5502*5113495bSYour Name PDEV_PARAM(pdev_param_audio_over_wlan_enable, 5503*5113495bSYour Name PDEV_PARAM_AUDIO_OVER_WLAN_ENABLE), 5504*5113495bSYour Name PDEV_PARAM(pdev_param_whal_mib_stats_update_enable, 5505*5113495bSYour Name PDEV_PARAM_WHAL_MIB_STATS_UPDATE_ENABLE), 5506*5113495bSYour Name PDEV_PARAM(pdev_param_vdev_rate_stats_update_period, 5507*5113495bSYour Name PDEV_PARAM_VDEV_RATE_STATS_UPDATE_PERIOD), 5508*5113495bSYour Name PDEV_PARAM(pdev_param_cts_cbw, PDEV_PARAM_CTS_CBW), 5509*5113495bSYour Name PDEV_PARAM(pdev_param_wnts_config, PDEV_PARAM_WNTS_CONFIG), 5510*5113495bSYour Name PDEV_PARAM(pdev_param_adaptive_early_rx_enable, 5511*5113495bSYour Name PDEV_PARAM_ADAPTIVE_EARLY_RX_ENABLE), 5512*5113495bSYour Name PDEV_PARAM(pdev_param_adaptive_early_rx_min_sleep_slop, 5513*5113495bSYour Name PDEV_PARAM_ADAPTIVE_EARLY_RX_MIN_SLEEP_SLOP), 5514*5113495bSYour Name PDEV_PARAM(pdev_param_adaptive_early_rx_inc_dec_step, 5515*5113495bSYour Name PDEV_PARAM_ADAPTIVE_EARLY_RX_INC_DEC_STEP), 5516*5113495bSYour Name PDEV_PARAM(pdev_param_early_rx_fix_sleep_slop, 5517*5113495bSYour Name PDEV_PARAM_EARLY_RX_FIX_SLEEP_SLOP), 5518*5113495bSYour Name PDEV_PARAM(pdev_param_bmiss_based_adaptive_bto_enable, 5519*5113495bSYour Name PDEV_PARAM_BMISS_BASED_ADAPTIVE_BTO_ENABLE), 5520*5113495bSYour Name PDEV_PARAM(pdev_param_bmiss_bto_min_bcn_timeout, 5521*5113495bSYour Name PDEV_PARAM_BMISS_BTO_MIN_BCN_TIMEOUT), 5522*5113495bSYour Name PDEV_PARAM(pdev_param_bmiss_bto_inc_dec_step, 5523*5113495bSYour Name PDEV_PARAM_BMISS_BTO_INC_DEC_STEP), 5524*5113495bSYour Name PDEV_PARAM(pdev_param_bto_fix_bcn_timeout, 5525*5113495bSYour Name PDEV_PARAM_BTO_FIX_BCN_TIMEOUT), 5526*5113495bSYour Name PDEV_PARAM(pdev_param_ce_based_adaptive_bto_enable, 5527*5113495bSYour Name PDEV_PARAM_CE_BASED_ADAPTIVE_BTO_ENABLE), 5528*5113495bSYour Name PDEV_PARAM(pdev_param_ce_bto_combo_ce_value, 5529*5113495bSYour Name PDEV_PARAM_CE_BTO_COMBO_CE_VALUE), 5530*5113495bSYour Name PDEV_PARAM(pdev_param_tx_chain_mask_2g, PDEV_PARAM_TX_CHAIN_MASK_2G), 5531*5113495bSYour Name PDEV_PARAM(pdev_param_rx_chain_mask_2g, PDEV_PARAM_RX_CHAIN_MASK_2G), 5532*5113495bSYour Name PDEV_PARAM(pdev_param_tx_chain_mask_5g, PDEV_PARAM_TX_CHAIN_MASK_5G), 5533*5113495bSYour Name PDEV_PARAM(pdev_param_rx_chain_mask_5g, PDEV_PARAM_RX_CHAIN_MASK_5G), 5534*5113495bSYour Name PDEV_PARAM(pdev_param_tx_chain_mask_cck, PDEV_PARAM_TX_CHAIN_MASK_CCK), 5535*5113495bSYour Name PDEV_PARAM(pdev_param_tx_chain_mask_1ss, PDEV_PARAM_TX_CHAIN_MASK_1SS), 5536*5113495bSYour Name PDEV_PARAM(pdev_param_cts2self_for_p2p_go_config, 5537*5113495bSYour Name PDEV_PARAM_CTS2SELF_FOR_P2P_GO_CONFIG), 5538*5113495bSYour Name PDEV_PARAM(pdev_param_txpower_decr_db, PDEV_PARAM_TXPOWER_DECR_DB), 5539*5113495bSYour Name PDEV_PARAM(pdev_param_aggr_burst, PDEV_PARAM_AGGR_BURST), 5540*5113495bSYour Name PDEV_PARAM(pdev_param_rx_decap_mode, PDEV_PARAM_RX_DECAP_MODE), 5541*5113495bSYour Name PDEV_PARAM(pdev_param_fast_channel_reset, 5542*5113495bSYour Name PDEV_PARAM_FAST_CHANNEL_RESET), 5543*5113495bSYour Name PDEV_PARAM(pdev_param_smart_antenna_default_antenna, 5544*5113495bSYour Name PDEV_PARAM_SMART_ANTENNA_DEFAULT_ANTENNA), 5545*5113495bSYour Name PDEV_PARAM(pdev_param_antenna_gain, PDEV_PARAM_ANTENNA_GAIN), 5546*5113495bSYour Name PDEV_PARAM(pdev_param_rx_filter, PDEV_PARAM_RX_FILTER), 5547*5113495bSYour Name PDEV_PARAM(pdev_set_mcast_to_ucast_tid, PDEV_SET_MCAST_TO_UCAST_TID), 5548*5113495bSYour Name PDEV_PARAM(pdev_param_proxy_sta_mode, PDEV_PARAM_PROXY_STA_MODE), 5549*5113495bSYour Name PDEV_PARAM(pdev_param_set_mcast2ucast_mode, 5550*5113495bSYour Name PDEV_PARAM_SET_MCAST2UCAST_MODE), 5551*5113495bSYour Name PDEV_PARAM(pdev_param_set_mcast2ucast_buffer, 5552*5113495bSYour Name PDEV_PARAM_SET_MCAST2UCAST_BUFFER), 5553*5113495bSYour Name PDEV_PARAM(pdev_param_remove_mcast2ucast_buffer, 5554*5113495bSYour Name PDEV_PARAM_REMOVE_MCAST2UCAST_BUFFER), 5555*5113495bSYour Name PDEV_PARAM(pdev_peer_sta_ps_statechg_enable, 5556*5113495bSYour Name PDEV_PEER_STA_PS_STATECHG_ENABLE), 5557*5113495bSYour Name PDEV_PARAM(pdev_param_igmpmld_override, PDEV_PARAM_IGMPMLD_AC_OVERRIDE), 5558*5113495bSYour Name PDEV_PARAM(pdev_param_block_interbss, PDEV_PARAM_BLOCK_INTERBSS), 5559*5113495bSYour Name PDEV_PARAM(pdev_param_set_disable_reset_cmdid, 5560*5113495bSYour Name PDEV_PARAM_SET_DISABLE_RESET_CMDID), 5561*5113495bSYour Name PDEV_PARAM(pdev_param_set_msdu_ttl_cmdid, 5562*5113495bSYour Name PDEV_PARAM_SET_MSDU_TTL_CMDID), 5563*5113495bSYour Name PDEV_PARAM(pdev_param_set_ppdu_duration_cmdid, 5564*5113495bSYour Name PDEV_PARAM_SET_PPDU_DURATION_CMDID), 5565*5113495bSYour Name PDEV_PARAM(pdev_param_txbf_sound_period_cmdid, 5566*5113495bSYour Name PDEV_PARAM_TXBF_SOUND_PERIOD_CMDID), 5567*5113495bSYour Name PDEV_PARAM(pdev_param_set_promisc_mode_cmdid, 5568*5113495bSYour Name PDEV_PARAM_SET_PROMISC_MODE_CMDID), 5569*5113495bSYour Name PDEV_PARAM(pdev_param_set_burst_mode_cmdid, 5570*5113495bSYour Name PDEV_PARAM_SET_BURST_MODE_CMDID), 5571*5113495bSYour Name PDEV_PARAM(pdev_param_en_stats, PDEV_PARAM_EN_STATS), 5572*5113495bSYour Name PDEV_PARAM(pdev_param_mu_group_policy, PDEV_PARAM_MU_GROUP_POLICY), 5573*5113495bSYour Name PDEV_PARAM(pdev_param_noise_detection, PDEV_PARAM_NOISE_DETECTION), 5574*5113495bSYour Name PDEV_PARAM(pdev_param_noise_threshold, PDEV_PARAM_NOISE_THRESHOLD), 5575*5113495bSYour Name PDEV_PARAM(pdev_param_dpd_enable, PDEV_PARAM_DPD_ENABLE), 5576*5113495bSYour Name PDEV_PARAM(pdev_param_set_mcast_bcast_echo, 5577*5113495bSYour Name PDEV_PARAM_SET_MCAST_BCAST_ECHO), 5578*5113495bSYour Name PDEV_PARAM(pdev_param_atf_strict_sch, PDEV_PARAM_ATF_STRICT_SCH), 5579*5113495bSYour Name PDEV_PARAM(pdev_param_atf_sched_duration, 5580*5113495bSYour Name PDEV_PARAM_ATF_SCHED_DURATION), 5581*5113495bSYour Name PDEV_PARAM(pdev_param_ant_plzn, PDEV_PARAM_ANT_PLZN), 5582*5113495bSYour Name PDEV_PARAM(pdev_param_mgmt_retry_limit, PDEV_PARAM_MGMT_RETRY_LIMIT), 5583*5113495bSYour Name PDEV_PARAM(pdev_param_sensitivity_level, PDEV_PARAM_SENSITIVITY_LEVEL), 5584*5113495bSYour Name PDEV_PARAM(pdev_param_signed_txpower_2g, PDEV_PARAM_SIGNED_TXPOWER_2G), 5585*5113495bSYour Name PDEV_PARAM(pdev_param_signed_txpower_5g, PDEV_PARAM_SIGNED_TXPOWER_5G), 5586*5113495bSYour Name PDEV_PARAM(pdev_param_enable_per_tid_amsdu, 5587*5113495bSYour Name PDEV_PARAM_ENABLE_PER_TID_AMSDU), 5588*5113495bSYour Name PDEV_PARAM(pdev_param_enable_per_tid_ampdu, 5589*5113495bSYour Name PDEV_PARAM_ENABLE_PER_TID_AMPDU), 5590*5113495bSYour Name PDEV_PARAM(pdev_param_cca_threshold, PDEV_PARAM_CCA_THRESHOLD), 5591*5113495bSYour Name PDEV_PARAM(pdev_param_rts_fixed_rate, PDEV_PARAM_RTS_FIXED_RATE), 5592*5113495bSYour Name PDEV_PARAM(pdev_param_pdev_reset, PDEV_PARAM_PDEV_RESET), 5593*5113495bSYour Name PDEV_PARAM(pdev_param_wapi_mbssid_offset, 5594*5113495bSYour Name PDEV_PARAM_WAPI_MBSSID_OFFSET), 5595*5113495bSYour Name PDEV_PARAM(pdev_param_arp_srcaddr, PDEV_PARAM_ARP_DBG_SRCADDR), 5596*5113495bSYour Name PDEV_PARAM(pdev_param_arp_dstaddr, PDEV_PARAM_ARP_DBG_DSTADDR), 5597*5113495bSYour Name PDEV_PARAM(pdev_param_atf_obss_noise_sch, 5598*5113495bSYour Name PDEV_PARAM_ATF_OBSS_NOISE_SCH), 5599*5113495bSYour Name PDEV_PARAM(pdev_param_atf_obss_noise_scaling_factor, 5600*5113495bSYour Name PDEV_PARAM_ATF_OBSS_NOISE_SCALING_FACTOR), 5601*5113495bSYour Name PDEV_PARAM(pdev_param_cust_txpower_scale, 5602*5113495bSYour Name PDEV_PARAM_CUST_TXPOWER_SCALE), 5603*5113495bSYour Name PDEV_PARAM(pdev_param_atf_dynamic_enable, 5604*5113495bSYour Name PDEV_PARAM_ATF_DYNAMIC_ENABLE), 5605*5113495bSYour Name PDEV_PARAM(pdev_param_ctrl_retry_limit, PDEV_PARAM_CTRL_RETRY_LIMIT), 5606*5113495bSYour Name PDEV_PARAM(pdev_param_propagation_delay, PDEV_PARAM_PROPAGATION_DELAY), 5607*5113495bSYour Name PDEV_PARAM(pdev_param_ena_ant_div, PDEV_PARAM_ENA_ANT_DIV), 5608*5113495bSYour Name PDEV_PARAM(pdev_param_force_chain_ant, PDEV_PARAM_FORCE_CHAIN_ANT), 5609*5113495bSYour Name PDEV_PARAM(pdev_param_ant_div_selftest, PDEV_PARAM_ANT_DIV_SELFTEST), 5610*5113495bSYour Name PDEV_PARAM(pdev_param_ant_div_selftest_intvl, 5611*5113495bSYour Name PDEV_PARAM_ANT_DIV_SELFTEST_INTVL), 5612*5113495bSYour Name PDEV_PARAM(pdev_param_stats_observation_period, 5613*5113495bSYour Name PDEV_PARAM_STATS_OBSERVATION_PERIOD), 5614*5113495bSYour Name PDEV_PARAM(pdev_param_tx_ppdu_delay_bin_size_ms, 5615*5113495bSYour Name PDEV_PARAM_TX_PPDU_DELAY_BIN_SIZE_MS), 5616*5113495bSYour Name PDEV_PARAM(pdev_param_tx_ppdu_delay_array_len, 5617*5113495bSYour Name PDEV_PARAM_TX_PPDU_DELAY_ARRAY_LEN), 5618*5113495bSYour Name PDEV_PARAM(pdev_param_tx_mpdu_aggr_array_len, 5619*5113495bSYour Name PDEV_PARAM_TX_MPDU_AGGR_ARRAY_LEN), 5620*5113495bSYour Name PDEV_PARAM(pdev_param_rx_mpdu_aggr_array_len, 5621*5113495bSYour Name PDEV_PARAM_RX_MPDU_AGGR_ARRAY_LEN), 5622*5113495bSYour Name PDEV_PARAM(pdev_param_tx_sch_delay, PDEV_PARAM_TX_SCH_DELAY), 5623*5113495bSYour Name PDEV_PARAM(pdev_param_enable_rts_sifs_bursting, 5624*5113495bSYour Name PDEV_PARAM_ENABLE_RTS_SIFS_BURSTING), 5625*5113495bSYour Name PDEV_PARAM(pdev_param_max_mpdus_in_ampdu, 5626*5113495bSYour Name PDEV_PARAM_MAX_MPDUS_IN_AMPDU), 5627*5113495bSYour Name PDEV_PARAM(pdev_param_peer_stats_info_enable, 5628*5113495bSYour Name PDEV_PARAM_PEER_STATS_INFO_ENABLE), 5629*5113495bSYour Name PDEV_PARAM(pdev_param_fast_pwr_transition, 5630*5113495bSYour Name PDEV_PARAM_FAST_PWR_TRANSITION), 5631*5113495bSYour Name PDEV_PARAM(pdev_param_radio_chan_stats_enable, 5632*5113495bSYour Name PDEV_PARAM_RADIO_CHAN_STATS_ENABLE), 5633*5113495bSYour Name PDEV_PARAM(pdev_param_radio_diagnosis_enable, 5634*5113495bSYour Name PDEV_PARAM_RADIO_DIAGNOSIS_ENABLE), 5635*5113495bSYour Name PDEV_PARAM(pdev_param_mesh_mcast_enable, PDEV_PARAM_MESH_MCAST_ENABLE), 5636*5113495bSYour Name PDEV_PARAM(pdev_param_smart_chainmask_scheme, 5637*5113495bSYour Name PDEV_PARAM_SMART_CHAINMASK_SCHEME), 5638*5113495bSYour Name PDEV_PARAM(pdev_param_alternative_chainmask_scheme, 5639*5113495bSYour Name PDEV_PARAM_ALTERNATIVE_CHAINMASK_SCHEME), 5640*5113495bSYour Name PDEV_PARAM(pdev_param_ant_div_usrcfg, PDEV_PARAM_ANT_DIV_USRCFG), 5641*5113495bSYour Name PDEV_PARAM(pdev_param_packet_power_save_level, 5642*5113495bSYour Name PDEV_PARAM_PACKET_POWER_SAVE_LEVEL), 5643*5113495bSYour Name PDEV_PARAM(pdev_param_set_iot_pattern, PDEV_PARAM_SET_IOT_PATTERN), 5644*5113495bSYour Name PDEV_PARAM(pdev_param_tx_ack_timeout, PDEV_PARAM_ACK_TIMEOUT), 5645*5113495bSYour Name PDEV_PARAM(pdev_param_abg_mode_tx_chain_num, 5646*5113495bSYour Name PDEV_PARAM_ABG_MODE_TX_CHAIN_NUM), 5647*5113495bSYour Name PDEV_PARAM(pdev_param_enable_cck_txfir_override, 5648*5113495bSYour Name PDEV_PARAM_ENABLE_CCK_TXFIR_OVERRIDE), 5649*5113495bSYour Name PDEV_PARAM(pdev_param_dtim_synth, PDEV_PARAM_DTIM_SYNTH), 5650*5113495bSYour Name PDEV_PARAM(pdev_auto_detect_power_failure, 5651*5113495bSYour Name PDEV_AUTO_DETECT_POWER_FAILURE), 5652*5113495bSYour Name PDEV_PARAM(pdev_update_wdcvs_algo, PDEV_UPDATE_WDCVS_ALGO), 5653*5113495bSYour Name PDEV_PARAM(pdev_param_data_stall_detect_enable, 5654*5113495bSYour Name PDEV_PARAM_DATA_STALL_DETECT_ENABLE), 5655*5113495bSYour Name PDEV_PARAM(pdev_param_gcmp_support_enable, 5656*5113495bSYour Name PDEV_PARAM_GCMP_SUPPORT_ENABLE), 5657*5113495bSYour Name PDEV_PARAM(pdev_param_1ch_dtim_optimized_chain_selection, 5658*5113495bSYour Name PDEV_PARAM_1CH_DTIM_OPTIMIZED_CHAIN_SELECTION), 5659*5113495bSYour Name PDEV_PARAM(pdev_param_cck_tx_enable, PDEV_PARAM_CCK_TX_ENABLE), 5660*5113495bSYour Name PDEV_PARAM(pdev_param_antenna_gain_half_db, 5661*5113495bSYour Name PDEV_PARAM_ANTENNA_GAIN_HALF_DB), 5662*5113495bSYour Name PDEV_PARAM(pdev_param_secondary_retry_enable, 5663*5113495bSYour Name PDEV_PARAM_SECONDARY_RETRY_ENABLE), 5664*5113495bSYour Name PDEV_PARAM(pdev_param_ul_ppdu_duration, 5665*5113495bSYour Name PDEV_PARAM_SET_UL_PPDU_DURATION), 5666*5113495bSYour Name PDEV_PARAM(pdev_param_ul_trig_int, PDEV_PARAM_SET_UL_BSR_TRIG_INTERVAL), 5667*5113495bSYour Name PDEV_PARAM(pdev_param_equal_ru_allocation_enable, 5668*5113495bSYour Name PDEV_PARAM_EQUAL_RU_ALLOCATION_ENABLE), 5669*5113495bSYour Name PDEV_PARAM(pdev_param_mwscoex_4g_allow_quick_ftdm, 5670*5113495bSYour Name PDEV_PARAM_MWSCOEX_4G_ALLOW_QUICK_FTDM), 5671*5113495bSYour Name PDEV_PARAM(pdev_param_mwscoex_set_5gnr_pwr_limit, 5672*5113495bSYour Name PDEV_PARAM_MWSCOEX_SET_5GNR_PWR_LIMIT), 5673*5113495bSYour Name PDEV_PARAM(pdev_param_set_cong_ctrl_max_msdus, 5674*5113495bSYour Name PDEV_PARAM_SET_CONG_CTRL_MAX_MSDUS), 5675*5113495bSYour Name PDEV_PARAM(pdev_param_esp_indication_period, 5676*5113495bSYour Name PDEV_PARAM_ESP_INDICATION_PERIOD), 5677*5113495bSYour Name PDEV_PARAM(pdev_param_per_peer_prd_cfr_enable, 5678*5113495bSYour Name PDEV_PARAM_PER_PEER_PERIODIC_CFR_ENABLE), 5679*5113495bSYour Name PDEV_PARAM(pdev_param_periodic_cfr_base_timer, 5680*5113495bSYour Name PDEV_PARAM_PERIODIC_CFR_BASE_TIMER), 5681*5113495bSYour Name PDEV_PARAM(pdev_param_enable_optimized_periodic_cfr_timer, 5682*5113495bSYour Name PDEV_PARAM_ENABLE_OPTIMIZED_PERIODIC_CFR_TIMER), 5683*5113495bSYour Name PDEV_PARAM(pdev_param_esp_ba_window, PDEV_PARAM_ESP_BA_WINDOW), 5684*5113495bSYour Name PDEV_PARAM(pdev_param_esp_airtime_fraction, 5685*5113495bSYour Name PDEV_PARAM_ESP_AIRTIME_FRACTION), 5686*5113495bSYour Name PDEV_PARAM(pdev_param_esp_ppdu_duration, PDEV_PARAM_ESP_PPDU_DURATION), 5687*5113495bSYour Name PDEV_PARAM(pdev_param_use_nol, PDEV_PARAM_USE_NOL), 5688*5113495bSYour Name PDEV_PARAM(pdev_param_ru26_allowed, PDEV_PARAM_UL_RU26_ALLOWED), 5689*5113495bSYour Name PDEV_PARAM(pdev_param_sub_channel_marking, 5690*5113495bSYour Name PDEV_PARAM_SUB_CHANNEL_MARKING), 5691*5113495bSYour Name PDEV_PARAM(pdev_param_set_mgmt_ttl, PDEV_PARAM_SET_MGMT_TTL), 5692*5113495bSYour Name PDEV_PARAM(pdev_param_set_prb_rsp_ttl, PDEV_PARAM_SET_PROBE_RESP_TTL), 5693*5113495bSYour Name PDEV_PARAM(pdev_param_set_tbtt_ctrl, PDEV_PARAM_SET_TBTT_CTRL), 5694*5113495bSYour Name PDEV_PARAM(pdev_param_nav_override_config, 5695*5113495bSYour Name PDEV_PARAM_NAV_OVERRIDE_CONFIG), 5696*5113495bSYour Name PDEV_PARAM(pdev_param_set_mu_ppdu_duration, 5697*5113495bSYour Name PDEV_PARAM_SET_MU_PPDU_DURATION), 5698*5113495bSYour Name PDEV_PARAM(pdev_param_set_test_cmd_ul_trigger_type_enable, 5699*5113495bSYour Name PDEV_PARAM_SET_TEST_CMD_UL_TRIGGER_TYPE_ENABLE), 5700*5113495bSYour Name PDEV_PARAM(pdev_param_set_test_cmd_ul_trigger_lsig_len, 5701*5113495bSYour Name PDEV_PARAM_SET_TEST_CMD_UL_TRIGGER_LSIG_LEN), 5702*5113495bSYour Name PDEV_PARAM(pdev_param_set_test_cmd_ul_trigger_fixed_rate, 5703*5113495bSYour Name PDEV_PARAM_SET_TEST_CMD_UL_TRIGGER_FIXED_RATE), 5704*5113495bSYour Name PDEV_PARAM(pdev_param_set_test_cmd_ul_mac_padding, 5705*5113495bSYour Name PDEV_PARAM_SET_TEST_CMD_UL_MAC_PADDING), 5706*5113495bSYour Name PDEV_PARAM(pdev_param_set_test_cmd_ul_bsr_fc_duration, 5707*5113495bSYour Name PDEV_PARAM_SET_TEST_CMD_UL_BSR_FC_DURATION), 5708*5113495bSYour Name PDEV_PARAM(pdev_param_set_test_cmd_twt_sched_config, 5709*5113495bSYour Name PDEV_PARAM_SET_TEST_CMD_TWT_SCHED_CONFIG), 5710*5113495bSYour Name PDEV_PARAM(pdev_param_set_cmd_obss_pd_threshold, 5711*5113495bSYour Name PDEV_PARAM_SET_CMD_OBSS_PD_THRESHOLD), 5712*5113495bSYour Name PDEV_PARAM(pdev_param_enable_non_wlan_coex_from_boot, 5713*5113495bSYour Name PDEV_PARAM_ENABLE_NON_WLAN_COEX_FROM_BOOT), 5714*5113495bSYour Name PDEV_PARAM(pdev_param_set_cmd_obss_pd_per_ac, 5715*5113495bSYour Name PDEV_PARAM_SET_CMD_OBSS_PD_PER_AC), 5716*5113495bSYour Name PDEV_PARAM(pdev_param_enable_fw_dynamic_he_edca, 5717*5113495bSYour Name PDEV_PARAM_ENABLE_FW_DYNAMIC_HE_EDCA), 5718*5113495bSYour Name PDEV_PARAM(pdev_param_default_6ghz_rate, PDEV_PARAM_DEFAULT_6GHZ_RATE), 5719*5113495bSYour Name PDEV_PARAM(pdev_param_mwscoex_pcc_chavd_delay, 5720*5113495bSYour Name PDEV_PARAM_MWSCOEX_PCC_CHAVD_DELAY), 5721*5113495bSYour Name PDEV_PARAM(pdev_param_mwscoex_scc_chavd_delay, 5722*5113495bSYour Name PDEV_PARAM_MWSCOEX_SCC_CHAVD_DELAY), 5723*5113495bSYour Name PDEV_PARAM(pdev_param_set_dfs_chan_ageout_time, 5724*5113495bSYour Name PDEV_PARAM_SET_DFS_CHAN_AGEOUT_TIME), 5725*5113495bSYour Name PDEV_PARAM(pdev_param_set_sap_xlna_bypass, 5726*5113495bSYour Name PDEV_PARAM_SET_SAP_XLNA_BYPASS), 5727*5113495bSYour Name PDEV_PARAM(pdev_param_enable_srp, PDEV_PARAM_ENABLE_SRP), 5728*5113495bSYour Name PDEV_PARAM(pdev_param_enable_sr_prohibit, 5729*5113495bSYour Name PDEV_PARAM_ENABLE_SR_PROHIBIT), 5730*5113495bSYour Name PDEV_PARAM(pdev_param_enable_mbssid_ctrl_frame, 5731*5113495bSYour Name PDEV_PARAM_ENABLE_MBSSID_CTRL_FRAME), 5732*5113495bSYour Name PDEV_PARAM(pdev_param_pream_punct_bw, PDEV_PARAM_SET_PREAM_PUNCT_BW), 5733*5113495bSYour Name PDEV_PARAM(pdev_param_sr_trigger_margin, PDEV_PARAM_SR_TRIGGER_MARGIN), 5734*5113495bSYour Name PDEV_PARAM(pdev_param_pcie_hw_ilp, PDEV_PARAM_PCIE_HW_ILP), 5735*5113495bSYour Name PDEV_PARAM(pdev_param_set_txtd_start_timestamp, 5736*5113495bSYour Name PDEV_PARAM_SET_TXTD_START_TIMESTAMP), 5737*5113495bSYour Name PDEV_PARAM(pdev_param_set_mesh_params, PDEV_PARAM_SET_MESH_PARAMS), 5738*5113495bSYour Name PDEV_PARAM(pdev_param_low_latency_mode, 5739*5113495bSYour Name PDEV_PARAM_LOW_LATENCY_SCHED_MODE), 5740*5113495bSYour Name PDEV_PARAM(pdev_param_mpd_userpd_ssr, PDEV_PARAM_MPD_USERPD_SSR), 5741*5113495bSYour Name PDEV_PARAM(pdev_param_disable_hw_assist, PDEV_PARAM_DISABLE_HW_ASSIST), 5742*5113495bSYour Name PDEV_PARAM(pdev_param_scan_radio_tx_on_dfs, 5743*5113495bSYour Name PDEV_PARAM_SCAN_RADIO_TX_ON_DFS), 5744*5113495bSYour Name PDEV_PARAM(pdev_param_obss_min_duration_check_for_sr, 5745*5113495bSYour Name PDEV_PARAM_OBSS_MIN_DURATION_CHECK_FOR_SR), 5746*5113495bSYour Name PDEV_PARAM(pdev_param_truncate_sr, PDEV_PARAM_TRUNCATE_SR), 5747*5113495bSYour Name PDEV_PARAM(pdev_param_ctrl_frame_obss_pd_threshold, 5748*5113495bSYour Name PDEV_PARAM_CTRL_FRAME_OBSS_PD_THRESHOLD), 5749*5113495bSYour Name PDEV_PARAM(pdev_param_twt_ac_config, PDEV_PARAM_TWT_AC_CONFIG), 5750*5113495bSYour Name PDEV_PARAM(pdev_param_pdev_stats_tx_xretry_ext, 5751*5113495bSYour Name PDEV_PARAM_PDEV_STATS_TX_XRETRY_EXT), 5752*5113495bSYour Name PDEV_PARAM(pdev_param_rate_upper_cap, PDEV_PARAM_RATE_UPPER_CAP), 5753*5113495bSYour Name PDEV_PARAM(pdev_param_rate_retry_mcs_drop, 5754*5113495bSYour Name PDEV_PARAM_SET_RATE_DROP_DOWN_RETRY_THRESH), 5755*5113495bSYour Name PDEV_PARAM(pdev_param_mcs_probe_intvl, 5756*5113495bSYour Name PDEV_PARAM_MIN_MAX_MCS_PROBE_INTERVAL), 5757*5113495bSYour Name PDEV_PARAM(pdev_param_nss_probe_intvl, 5758*5113495bSYour Name PDEV_PARAM_MIN_MAX_NSS_PROBE_INTERVAL), 5759*5113495bSYour Name PDEV_PARAM(pdev_param_en_probe_all_bw, PDEV_PARAM_EN_PROBE_ALL_BW), 5760*5113495bSYour Name PDEV_PARAM(pdev_param_en_update_scram_seed, 5761*5113495bSYour Name PDEV_PARAM_EN_UPDATE_SCRAM_SEED), 5762*5113495bSYour Name PDEV_PARAM(pdev_param_sa_parallel_mode_gpio_drive_cfg, 5763*5113495bSYour Name PDEV_PARAM_SA_PARALLEL_MODE_GPIO_DRIVE_CFG), 5764*5113495bSYour Name PDEV_PARAM(pdev_param_disable_lpi_ant_optimization, 5765*5113495bSYour Name PDEV_PARAM_DISABLE_LPI_ANT_OPTIMIZATION), 5766*5113495bSYour Name PDEV_PARAM(pdev_param_txpower_reason_sar, 5767*5113495bSYour Name PDEV_PARAM_TXPOWER_REASON_SAR), 5768*5113495bSYour Name PDEV_PARAM(pdev_param_igmpmld_tid, PDEV_PARAM_IGMPMLD_AC_OVERRIDE), 5769*5113495bSYour Name PDEV_PARAM(pdev_param_cal_period, UNAVAILABLE_PARAM), 5770*5113495bSYour Name PDEV_PARAM(pdev_param_rx_batchmode, UNAVAILABLE_PARAM), 5771*5113495bSYour Name PDEV_PARAM(pdev_param_packet_aggr_delay, UNAVAILABLE_PARAM), 5772*5113495bSYour Name PDEV_PARAM(pdev_param_atf_ssid_group_policy, UNAVAILABLE_PARAM), 5773*5113495bSYour Name PDEV_PARAM(pdev_param_enable_btcoex, UNAVAILABLE_PARAM), 5774*5113495bSYour Name PDEV_PARAM(pdev_param_atf_peer_stats, UNAVAILABLE_PARAM), 5775*5113495bSYour Name PDEV_PARAM(pdev_param_btcoex_cfg, UNAVAILABLE_PARAM), 5776*5113495bSYour Name PDEV_PARAM(pdev_param_soft_tx_chain_mask, PDEV_PARAM_TX_CHAIN_MASK), 5777*5113495bSYour Name PDEV_PARAM(pdev_param_enable_peer_retry_stats, UNAVAILABLE_PARAM), 5778*5113495bSYour Name PDEV_PARAM(pdev_param_scan_blanking_mode, 5779*5113495bSYour Name PDEV_PARAM_SET_SCAN_BLANKING_MODE), 5780*5113495bSYour Name PDEV_PARAM(pdev_param_set_disabled_sched_modes, 5781*5113495bSYour Name PDEV_PARAM_SET_DISABLED_SCHED_MODES), 5782*5113495bSYour Name PDEV_PARAM(pdev_param_set_conc_low_latency_mode, 5783*5113495bSYour Name PDEV_PARAM_SET_CONC_LOW_LATENCY_MODE), 5784*5113495bSYour Name PDEV_PARAM(pdev_param_rtt_11az_rsid_range, 5785*5113495bSYour Name PDEV_PARAM_RTT_11AZ_RSID_RANGE), 5786*5113495bSYour Name PDEV_PARAM(pdev_param_pcie_config, PDEV_PARAM_PCIE_CONFIG), 5787*5113495bSYour Name PDEV_PARAM(pdev_param_probe_resp_retry_limit, 5788*5113495bSYour Name PDEV_PARAM_PROBE_RESP_RETRY_LIMIT), 5789*5113495bSYour Name PDEV_PARAM(pdev_param_cts_timeout, PDEV_PARAM_CTS_TIMEOUT), 5790*5113495bSYour Name PDEV_PARAM(pdev_param_slot_time, PDEV_PARAM_SLOT_TIME), 5791*5113495bSYour Name PDEV_PARAM(pdev_param_atf_vo_dedicated_time, 5792*5113495bSYour Name PDEV_PARAM_ATF_VO_DEDICATED_TIME), 5793*5113495bSYour Name PDEV_PARAM(pdev_param_atf_vi_dedicated_time, 5794*5113495bSYour Name PDEV_PARAM_ATF_VI_DEDICATED_TIME), 5795*5113495bSYour Name PDEV_PARAM(pdev_param_ul_ofdma_rtd, PDEV_PARAM_UL_OFDMA_RTD), 5796*5113495bSYour Name PDEV_PARAM(pdev_param_tid_mapping_3link_mlo, 5797*5113495bSYour Name PDEV_PARAM_TID_MAPPING_3LINK_MLO), 5798*5113495bSYour Name pdev_param_max, 5799*5113495bSYour Name } wmi_conv_pdev_params_id; 5800*5113495bSYour Name 5801*5113495bSYour Name #ifdef ENABLE_HOST_TO_TARGET_CONVERSION 5802*5113495bSYour Name #define VDEV_PARAM(host_param, target_param) wmi_ ## host_param 5803*5113495bSYour Name #else 5804*5113495bSYour Name #define VDEV_PARAM(host_param, target_param) wmi_ ## host_param = WMI_ ## target_param 5805*5113495bSYour Name #endif 5806*5113495bSYour Name 5807*5113495bSYour Name /* Host based ENUM IDs for VDEV params to abstract target enums */ 5808*5113495bSYour Name typedef enum { 5809*5113495bSYour Name VDEV_PARAM(vdev_param_rts_threshold, VDEV_PARAM_RTS_THRESHOLD), 5810*5113495bSYour Name VDEV_PARAM(vdev_param_fragmentation_threshold, 5811*5113495bSYour Name VDEV_PARAM_FRAGMENTATION_THRESHOLD), 5812*5113495bSYour Name VDEV_PARAM(vdev_param_beacon_interval, VDEV_PARAM_BEACON_INTERVAL), 5813*5113495bSYour Name VDEV_PARAM(vdev_param_listen_interval, VDEV_PARAM_LISTEN_INTERVAL), 5814*5113495bSYour Name VDEV_PARAM(vdev_param_multicast_rate, VDEV_PARAM_MULTICAST_RATE), 5815*5113495bSYour Name VDEV_PARAM(vdev_param_mgmt_tx_rate, VDEV_PARAM_MGMT_TX_RATE), 5816*5113495bSYour Name VDEV_PARAM(vdev_param_slot_time, VDEV_PARAM_SLOT_TIME), 5817*5113495bSYour Name VDEV_PARAM(vdev_param_preamble, VDEV_PARAM_PREAMBLE), 5818*5113495bSYour Name VDEV_PARAM(vdev_param_swba_time, VDEV_PARAM_SWBA_TIME), 5819*5113495bSYour Name VDEV_PARAM(vdev_stats_update_period, VDEV_STATS_UPDATE_PERIOD), 5820*5113495bSYour Name VDEV_PARAM(vdev_pwrsave_ageout_time, VDEV_PWRSAVE_AGEOUT_TIME), 5821*5113495bSYour Name VDEV_PARAM(vdev_param_dtim_period, VDEV_PARAM_DTIM_PERIOD), 5822*5113495bSYour Name VDEV_PARAM(vdev_oc_scheduler_air_time_limit, 5823*5113495bSYour Name VDEV_OC_SCHEDULER_AIR_TIME_LIMIT), 5824*5113495bSYour Name VDEV_PARAM(vdev_param_wds, VDEV_PARAM_WDS), 5825*5113495bSYour Name VDEV_PARAM(vdev_param_atim_window, VDEV_PARAM_ATIM_WINDOW), 5826*5113495bSYour Name VDEV_PARAM(vdev_param_bmiss_count_max, VDEV_PARAM_BMISS_COUNT_MAX), 5827*5113495bSYour Name VDEV_PARAM(vdev_param_bmiss_first_bcnt, VDEV_PARAM_BMISS_FIRST_BCNT), 5828*5113495bSYour Name VDEV_PARAM(vdev_param_bmiss_final_bcnt, VDEV_PARAM_BMISS_FINAL_BCNT), 5829*5113495bSYour Name VDEV_PARAM(vdev_param_feature_wmm, VDEV_PARAM_FEATURE_WMM), 5830*5113495bSYour Name VDEV_PARAM(vdev_param_chwidth, VDEV_PARAM_CHWIDTH), 5831*5113495bSYour Name VDEV_PARAM(vdev_param_chextoffset, VDEV_PARAM_CHEXTOFFSET), 5832*5113495bSYour Name VDEV_PARAM(vdev_param_disable_htprotection, 5833*5113495bSYour Name VDEV_PARAM_DISABLE_HTPROTECTION), 5834*5113495bSYour Name VDEV_PARAM(vdev_param_sta_quickkickout, VDEV_PARAM_STA_QUICKKICKOUT), 5835*5113495bSYour Name VDEV_PARAM(vdev_param_mgmt_rate, VDEV_PARAM_MGMT_RATE), 5836*5113495bSYour Name VDEV_PARAM(vdev_param_protection_mode, VDEV_PARAM_PROTECTION_MODE), 5837*5113495bSYour Name VDEV_PARAM(vdev_param_fixed_rate, VDEV_PARAM_FIXED_RATE), 5838*5113495bSYour Name VDEV_PARAM(vdev_param_sgi, VDEV_PARAM_SGI), 5839*5113495bSYour Name VDEV_PARAM(vdev_param_ldpc, VDEV_PARAM_LDPC), 5840*5113495bSYour Name VDEV_PARAM(vdev_param_tx_stbc, VDEV_PARAM_TX_STBC), 5841*5113495bSYour Name VDEV_PARAM(vdev_param_rx_stbc, VDEV_PARAM_RX_STBC), 5842*5113495bSYour Name VDEV_PARAM(vdev_param_intra_bss_fwd, VDEV_PARAM_INTRA_BSS_FWD), 5843*5113495bSYour Name VDEV_PARAM(vdev_param_def_keyid, VDEV_PARAM_DEF_KEYID), 5844*5113495bSYour Name VDEV_PARAM(vdev_param_nss, VDEV_PARAM_NSS), 5845*5113495bSYour Name VDEV_PARAM(vdev_param_bcast_data_rate, VDEV_PARAM_BCAST_DATA_RATE), 5846*5113495bSYour Name VDEV_PARAM(vdev_param_mcast_data_rate, VDEV_PARAM_MCAST_DATA_RATE), 5847*5113495bSYour Name VDEV_PARAM(vdev_param_mcast_indicate, VDEV_PARAM_MCAST_INDICATE), 5848*5113495bSYour Name VDEV_PARAM(vdev_param_dhcp_indicate, VDEV_PARAM_DHCP_INDICATE), 5849*5113495bSYour Name VDEV_PARAM(vdev_param_unknown_dest_indicate, 5850*5113495bSYour Name VDEV_PARAM_UNKNOWN_DEST_INDICATE), 5851*5113495bSYour Name VDEV_PARAM(vdev_param_ap_keepalive_min_idle_inactive_time_secs, 5852*5113495bSYour Name VDEV_PARAM_AP_KEEPALIVE_MIN_IDLE_INACTIVE_TIME_SECS), 5853*5113495bSYour Name VDEV_PARAM(vdev_param_ap_keepalive_max_idle_inactive_time_secs, 5854*5113495bSYour Name VDEV_PARAM_AP_KEEPALIVE_MAX_IDLE_INACTIVE_TIME_SECS), 5855*5113495bSYour Name VDEV_PARAM(vdev_param_ap_keepalive_max_unresponsive_time_secs, 5856*5113495bSYour Name VDEV_PARAM_AP_KEEPALIVE_MAX_UNRESPONSIVE_TIME_SECS), 5857*5113495bSYour Name VDEV_PARAM(vdev_param_ap_enable_nawds, VDEV_PARAM_AP_ENABLE_NAWDS), 5858*5113495bSYour Name VDEV_PARAM(vdev_param_enable_rtscts, VDEV_PARAM_ENABLE_RTSCTS), 5859*5113495bSYour Name VDEV_PARAM(vdev_param_txbf, VDEV_PARAM_TXBF), 5860*5113495bSYour Name VDEV_PARAM(vdev_param_packet_powersave, VDEV_PARAM_PACKET_POWERSAVE), 5861*5113495bSYour Name VDEV_PARAM(vdev_param_drop_unencry, VDEV_PARAM_DROP_UNENCRY), 5862*5113495bSYour Name VDEV_PARAM(vdev_param_tx_encap_type, VDEV_PARAM_TX_ENCAP_TYPE), 5863*5113495bSYour Name VDEV_PARAM(vdev_param_ap_detect_out_of_sync_sleeping_sta_time_secs, 5864*5113495bSYour Name VDEV_PARAM_AP_DETECT_OUT_OF_SYNC_SLEEPING_STA_TIME_SECS), 5865*5113495bSYour Name VDEV_PARAM(vdev_param_early_rx_adjust_enable, 5866*5113495bSYour Name VDEV_PARAM_EARLY_RX_ADJUST_ENABLE), 5867*5113495bSYour Name VDEV_PARAM(vdev_param_early_rx_tgt_bmiss_num, 5868*5113495bSYour Name VDEV_PARAM_EARLY_RX_TGT_BMISS_NUM), 5869*5113495bSYour Name VDEV_PARAM(vdev_param_early_rx_bmiss_sample_cycle, 5870*5113495bSYour Name VDEV_PARAM_EARLY_RX_BMISS_SAMPLE_CYCLE), 5871*5113495bSYour Name VDEV_PARAM(vdev_param_early_rx_slop_step, 5872*5113495bSYour Name VDEV_PARAM_EARLY_RX_SLOP_STEP), 5873*5113495bSYour Name VDEV_PARAM(vdev_param_early_rx_init_slop, 5874*5113495bSYour Name VDEV_PARAM_EARLY_RX_INIT_SLOP), 5875*5113495bSYour Name VDEV_PARAM(vdev_param_early_rx_adjust_pause, 5876*5113495bSYour Name VDEV_PARAM_EARLY_RX_ADJUST_PAUSE), 5877*5113495bSYour Name VDEV_PARAM(vdev_param_tx_pwrlimit, VDEV_PARAM_TX_PWRLIMIT), 5878*5113495bSYour Name VDEV_PARAM(vdev_param_snr_num_for_cal, VDEV_PARAM_SNR_NUM_FOR_CAL), 5879*5113495bSYour Name VDEV_PARAM(vdev_param_roam_fw_offload, VDEV_PARAM_ROAM_FW_OFFLOAD), 5880*5113495bSYour Name VDEV_PARAM(vdev_param_enable_rmc, VDEV_PARAM_ENABLE_RMC), 5881*5113495bSYour Name VDEV_PARAM(vdev_param_ibss_max_bcn_lost_ms, 5882*5113495bSYour Name VDEV_PARAM_IBSS_MAX_BCN_LOST_MS), 5883*5113495bSYour Name VDEV_PARAM(vdev_param_max_rate, VDEV_PARAM_MAX_RATE), 5884*5113495bSYour Name VDEV_PARAM(vdev_param_early_rx_drift_sample, 5885*5113495bSYour Name VDEV_PARAM_EARLY_RX_DRIFT_SAMPLE), 5886*5113495bSYour Name VDEV_PARAM(vdev_param_set_ibss_tx_fail_cnt_thr, 5887*5113495bSYour Name VDEV_PARAM_SET_IBSS_TX_FAIL_CNT_THR), 5888*5113495bSYour Name VDEV_PARAM(vdev_param_ebt_resync_timeout, 5889*5113495bSYour Name VDEV_PARAM_EBT_RESYNC_TIMEOUT), 5890*5113495bSYour Name VDEV_PARAM(vdev_param_aggr_trig_event_enable, 5891*5113495bSYour Name VDEV_PARAM_AGGR_TRIG_EVENT_ENABLE), 5892*5113495bSYour Name VDEV_PARAM(vdev_param_is_ibss_power_save_allowed, 5893*5113495bSYour Name VDEV_PARAM_IS_IBSS_POWER_SAVE_ALLOWED), 5894*5113495bSYour Name VDEV_PARAM(vdev_param_is_power_collapse_allowed, 5895*5113495bSYour Name VDEV_PARAM_IS_POWER_COLLAPSE_ALLOWED), 5896*5113495bSYour Name VDEV_PARAM(vdev_param_is_awake_on_txrx_enabled, 5897*5113495bSYour Name VDEV_PARAM_IS_AWAKE_ON_TXRX_ENABLED), 5898*5113495bSYour Name VDEV_PARAM(vdev_param_inactivity_cnt, VDEV_PARAM_INACTIVITY_CNT), 5899*5113495bSYour Name VDEV_PARAM(vdev_param_txsp_end_inactivity_time_ms, 5900*5113495bSYour Name VDEV_PARAM_TXSP_END_INACTIVITY_TIME_MS), 5901*5113495bSYour Name VDEV_PARAM(vdev_param_dtim_policy, VDEV_PARAM_DTIM_POLICY), 5902*5113495bSYour Name VDEV_PARAM(vdev_param_ibss_ps_warmup_time_secs, 5903*5113495bSYour Name VDEV_PARAM_IBSS_PS_WARMUP_TIME_SECS), 5904*5113495bSYour Name VDEV_PARAM(vdev_param_ibss_ps_1rx_chain_in_atim_window_enable, 5905*5113495bSYour Name VDEV_PARAM_IBSS_PS_1RX_CHAIN_IN_ATIM_WINDOW_ENABLE), 5906*5113495bSYour Name VDEV_PARAM(vdev_param_rx_leak_window, VDEV_PARAM_RX_LEAK_WINDOW), 5907*5113495bSYour Name VDEV_PARAM(vdev_param_stats_avg_factor, VDEV_PARAM_STATS_AVG_FACTOR), 5908*5113495bSYour Name VDEV_PARAM(vdev_param_disconnect_th, VDEV_PARAM_DISCONNECT_TH), 5909*5113495bSYour Name VDEV_PARAM(vdev_param_rtscts_rate, VDEV_PARAM_RTSCTS_RATE), 5910*5113495bSYour Name VDEV_PARAM(vdev_param_mcc_rtscts_protection_enable, 5911*5113495bSYour Name VDEV_PARAM_MCC_RTSCTS_PROTECTION_ENABLE), 5912*5113495bSYour Name VDEV_PARAM(vdev_param_mcc_broadcast_probe_enable, 5913*5113495bSYour Name VDEV_PARAM_MCC_BROADCAST_PROBE_ENABLE), 5914*5113495bSYour Name VDEV_PARAM(vdev_param_txpower_scale, VDEV_PARAM_TXPOWER_SCALE), 5915*5113495bSYour Name VDEV_PARAM(vdev_param_txpower_scale_decr_db, 5916*5113495bSYour Name VDEV_PARAM_TXPOWER_SCALE_DECR_DB), 5917*5113495bSYour Name VDEV_PARAM(vdev_param_mcast2ucast_set, VDEV_PARAM_MCAST2UCAST_SET), 5918*5113495bSYour Name VDEV_PARAM(vdev_param_rc_num_retries, VDEV_PARAM_RC_NUM_RETRIES), 5919*5113495bSYour Name VDEV_PARAM(vdev_param_cabq_maxdur, VDEV_PARAM_CABQ_MAXDUR), 5920*5113495bSYour Name VDEV_PARAM(vdev_param_mfptest_set, VDEV_PARAM_MFPTEST_SET), 5921*5113495bSYour Name VDEV_PARAM(vdev_param_rts_fixed_rate, VDEV_PARAM_RTS_FIXED_RATE), 5922*5113495bSYour Name VDEV_PARAM(vdev_param_vht_sgimask, VDEV_PARAM_VHT_SGIMASK), 5923*5113495bSYour Name VDEV_PARAM(vdev_param_vht80_ratemask, VDEV_PARAM_VHT80_RATEMASK), 5924*5113495bSYour Name VDEV_PARAM(vdev_param_proxy_sta, VDEV_PARAM_PROXY_STA), 5925*5113495bSYour Name VDEV_PARAM(vdev_param_virtual_cell_mode, VDEV_PARAM_VIRTUAL_CELL_MODE), 5926*5113495bSYour Name VDEV_PARAM(vdev_param_rx_decap_type, VDEV_PARAM_RX_DECAP_TYPE), 5927*5113495bSYour Name VDEV_PARAM(vdev_param_bw_nss_ratemask, VDEV_PARAM_BW_NSS_RATEMASK), 5928*5113495bSYour Name VDEV_PARAM(vdev_param_sensor_ap, VDEV_PARAM_SENSOR_AP), 5929*5113495bSYour Name VDEV_PARAM(vdev_param_beacon_rate, VDEV_PARAM_BEACON_RATE), 5930*5113495bSYour Name VDEV_PARAM(vdev_param_dtim_enable_cts, VDEV_PARAM_DTIM_ENABLE_CTS), 5931*5113495bSYour Name VDEV_PARAM(vdev_param_sta_kickout, VDEV_PARAM_STA_KICKOUT), 5932*5113495bSYour Name VDEV_PARAM(vdev_param_capabilities, VDEV_PARAM_CAPABILITIES), 5933*5113495bSYour Name VDEV_PARAM(vdev_param_tsf_increment, VDEV_PARAM_TSF_INCREMENT), 5934*5113495bSYour Name VDEV_PARAM(vdev_param_ampdu_subframe_size_per_ac, 5935*5113495bSYour Name UNAVAILABLE_PARAM), 5936*5113495bSYour Name VDEV_PARAM(vdev_param_rx_filter, VDEV_PARAM_RX_FILTER), 5937*5113495bSYour Name VDEV_PARAM(vdev_param_mgmt_tx_power, VDEV_PARAM_MGMT_TX_POWER), 5938*5113495bSYour Name VDEV_PARAM(vdev_param_non_agg_sw_retry_th, 5939*5113495bSYour Name VDEV_PARAM_NON_AGG_SW_RETRY_TH), 5940*5113495bSYour Name VDEV_PARAM(vdev_param_agg_sw_retry_th, VDEV_PARAM_AGG_SW_RETRY_TH), 5941*5113495bSYour Name VDEV_PARAM(vdev_param_disable_dyn_bw_rts, 5942*5113495bSYour Name VDEV_PARAM_DISABLE_DYN_BW_RTS), 5943*5113495bSYour Name VDEV_PARAM(vdev_param_set_traffic_config, 5944*5113495bSYour Name VDEV_PARAM_VDEV_TRAFFIC_CONFIG), 5945*5113495bSYour Name VDEV_PARAM(vdev_param_atf_ssid_sched_policy, 5946*5113495bSYour Name VDEV_PARAM_ATF_SSID_SCHED_POLICY), 5947*5113495bSYour Name VDEV_PARAM(vdev_param_he_dcm_enable, VDEV_PARAM_HE_DCM), 5948*5113495bSYour Name VDEV_PARAM(vdev_param_he_range_ext_enable, VDEV_PARAM_HE_RANGE_EXT), 5949*5113495bSYour Name VDEV_PARAM(vdev_param_he_range_ext, VDEV_PARAM_HE_RANGE_EXT), 5950*5113495bSYour Name VDEV_PARAM(vdev_param_enable_bcast_probe_response, 5951*5113495bSYour Name VDEV_PARAM_ENABLE_BCAST_PROBE_RESPONSE), 5952*5113495bSYour Name VDEV_PARAM(vdev_param_fils_max_channel_guard_time, 5953*5113495bSYour Name VDEV_PARAM_FILS_MAX_CHANNEL_GUARD_TIME), 5954*5113495bSYour Name VDEV_PARAM(vdev_param_disable_noa_p2p_go, 5955*5113495bSYour Name VDEV_PARAM_DISABLE_NOA_P2P_GO), 5956*5113495bSYour Name VDEV_PARAM(vdev_param_per_band_mgmt_tx_rate, 5957*5113495bSYour Name VDEV_PARAM_PER_BAND_MGMT_TX_RATE), 5958*5113495bSYour Name VDEV_PARAM(vdev_param_11ax_txbf, VDEV_PARAM_11AX_TXBF), 5959*5113495bSYour Name VDEV_PARAM(vdev_param_smps_intolerant, VDEV_PARAM_SMPS_INTOLERANT), 5960*5113495bSYour Name VDEV_PARAM(vdev_param_probe_delay, VDEV_PARAM_PROBE_DELAY), 5961*5113495bSYour Name VDEV_PARAM(vdev_param_repeat_probe_time, VDEV_PARAM_REPEAT_PROBE_TIME), 5962*5113495bSYour Name VDEV_PARAM(vdev_param_set_he_ltf, VDEV_PARAM_HE_LTF), 5963*5113495bSYour Name VDEV_PARAM(vdev_param_abg_mode_tx_chain_num, 5964*5113495bSYour Name VDEV_PARAM_ABG_MODE_TX_CHAIN_NUM), 5965*5113495bSYour Name VDEV_PARAM(vdev_param_enable_multi_group_key, 5966*5113495bSYour Name VDEV_PARAM_ENABLE_MULTI_GROUP_KEY), 5967*5113495bSYour Name VDEV_PARAM(vdev_param_max_group_keys, VDEV_PARAM_NUM_GROUP_KEYS), 5968*5113495bSYour Name VDEV_PARAM(vdev_param_enable_disable_oce_features, 5969*5113495bSYour Name VDEV_PARAM_ENABLE_DISABLE_OCE_FEATURES), 5970*5113495bSYour Name VDEV_PARAM(vdev_param_enable_disable_nan_config_features, 5971*5113495bSYour Name VDEV_PARAM_ENABLE_DISABLE_NAN_CONFIG_FEATURES), 5972*5113495bSYour Name VDEV_PARAM(vdev_param_rate_dropdown_bmap, 5973*5113495bSYour Name VDEV_PARAM_RATE_DROPDOWN_BMAP), 5974*5113495bSYour Name VDEV_PARAM(vdev_param_moddtim_cnt, VDEV_PARAM_MODDTIM_CNT), 5975*5113495bSYour Name VDEV_PARAM(vdev_param_max_li_of_moddtim, VDEV_PARAM_MAX_LI_OF_MODDTIM), 5976*5113495bSYour Name VDEV_PARAM(vdev_param_dyndtim_cnt, VDEV_PARAM_DYNDTIM_CNT), 5977*5113495bSYour Name VDEV_PARAM(vdev_param_enable_disable_rtt_responder_role, 5978*5113495bSYour Name VDEV_PARAM_ENABLE_DISABLE_RTT_RESPONDER_ROLE), 5979*5113495bSYour Name VDEV_PARAM(vdev_param_set_ba_mode, VDEV_PARAM_BA_MODE), 5980*5113495bSYour Name VDEV_PARAM(vdev_param_forced_moddtim_enable, 5981*5113495bSYour Name VDEV_PARAM_FORCED_MODDTIM_ENABLE), 5982*5113495bSYour Name VDEV_PARAM(vdev_param_autorate_misc_cfg, VDEV_PARAM_AUTORATE_MISC_CFG), 5983*5113495bSYour Name VDEV_PARAM(vdev_param_enable_disable_rtt_initiator_random_mac, 5984*5113495bSYour Name VDEV_PARAM_ENABLE_DISABLE_RTT_INITIATOR_RANDOM_MAC), 5985*5113495bSYour Name VDEV_PARAM(vdev_param_tx_retries_before_rts_per_ac, 5986*5113495bSYour Name VDEV_PARAM_TX_RETRIES_BEFORE_RTS_PER_AC), 5987*5113495bSYour Name VDEV_PARAM(vdev_param_amsdu_aggregation_size_optimization, 5988*5113495bSYour Name VDEV_PARAM_AMSDU_AGGREGATION_SIZE_OPTIMIZATION), 5989*5113495bSYour Name VDEV_PARAM(vdev_param_rawmode_open_war, VDEV_PARAM_RAW_IS_ENCRYPTED), 5990*5113495bSYour Name VDEV_PARAM(vdev_param_gtx_enable, VDEV_PARAM_GTX_ENABLE), 5991*5113495bSYour Name VDEV_PARAM(vdev_param_disable_cabq, VDEV_PARAM_DISABLE_CABQ), 5992*5113495bSYour Name VDEV_PARAM(vdev_param_set_he_sounding_mode, 5993*5113495bSYour Name VDEV_PARAM_SET_HE_SOUNDING_MODE), 5994*5113495bSYour Name VDEV_PARAM(vdev_param_ul_fixed_rate, VDEV_PARAM_UL_FIXED_RATE), 5995*5113495bSYour Name VDEV_PARAM(vdev_param_ul_shortgi, VDEV_PARAM_UL_GI), 5996*5113495bSYour Name VDEV_PARAM(vdev_param_ul_ldpc, VDEV_PARAM_UL_LDPC), 5997*5113495bSYour Name VDEV_PARAM(vdev_param_ul_nss, VDEV_PARAM_UL_NSS), 5998*5113495bSYour Name VDEV_PARAM(vdev_param_ul_stbc, VDEV_PARAM_UL_STBC), 5999*5113495bSYour Name VDEV_PARAM(vdev_param_ul_he_ltf, VDEV_PARAM_UL_HE_LTF), 6000*5113495bSYour Name VDEV_PARAM(vdev_param_ul_ppdu_bw, VDEV_PARAM_UL_PPDU_BW), 6001*5113495bSYour Name VDEV_PARAM(vdev_param_mu_edca_fw_update_en, 6002*5113495bSYour Name VDEV_PARAM_MU_EDCA_FW_UPDATE_EN), 6003*5113495bSYour Name VDEV_PARAM(vdev_param_update_obss_ru_tolerance_time, 6004*5113495bSYour Name VDEV_PARAM_UPDATE_OBSS_RU_TOLERANCE_TIME), 6005*5113495bSYour Name VDEV_PARAM(vdev_param_max_mtu_size, VDEV_PARAM_MAX_MTU_SIZE), 6006*5113495bSYour Name VDEV_PARAM(vdev_param_nth_beacon_to_host, 6007*5113495bSYour Name VDEV_PARAM_NTH_BEACON_TO_HOST), 6008*5113495bSYour Name VDEV_PARAM(vdev_param_packet_capture_mode, 6009*5113495bSYour Name VDEV_PARAM_PACKET_CAPTURE_MODE), 6010*5113495bSYour Name VDEV_PARAM(vdev_param_mcast_rc_stale_period, 6011*5113495bSYour Name VDEV_PARAM_MCAST_RC_STALE_PERIOD), 6012*5113495bSYour Name VDEV_PARAM(vdev_param_msdu_flow_override_config, 6013*5113495bSYour Name VDEV_PARAM_MSDU_FLOW_OVERRIDE_CONFIG), 6014*5113495bSYour Name VDEV_PARAM(vdev_param_enable_null_for_leaky_ap, 6015*5113495bSYour Name VDEV_PARAM_ENABLE_NULL_FOR_LEAKY_AP), 6016*5113495bSYour Name VDEV_PARAM(vdev_param_ndp_inactivity_timeout, 6017*5113495bSYour Name VDEV_PARAM_NDP_INACTIVITY_TIMEOUT), 6018*5113495bSYour Name VDEV_PARAM(vdev_param_enable_mcast_rc, VDEV_PARAM_ENABLE_MCAST_RC), 6019*5113495bSYour Name VDEV_PARAM(vdev_param_enable_disable_rtt_initiator_role, 6020*5113495bSYour Name VDEV_PARAM_ENABLE_DISABLE_RTT_INITIATOR_ROLE), 6021*5113495bSYour Name VDEV_PARAM(vdev_param_ndp_keepalive_timeout, 6022*5113495bSYour Name VDEV_PARAM_NDP_KEEPALIVE_TIMEOUT), 6023*5113495bSYour Name VDEV_PARAM(vdev_param_allow_nan_initial_discovery_of_mp0_cluster, 6024*5113495bSYour Name VDEV_PARAM_ALLOW_NAN_INITIAL_DISCOVERY_OF_MP0_CLUSTER), 6025*5113495bSYour Name VDEV_PARAM(vdev_param_enable_disable_roam_reason_vsie, 6026*5113495bSYour Name VDEV_PARAM_ENABLE_DISABLE_ROAM_REASON_VSIE), 6027*5113495bSYour Name VDEV_PARAM(vdev_param_set_cmd_obss_pd_threshold, 6028*5113495bSYour Name VDEV_PARAM_SET_CMD_OBSS_PD_THRESHOLD), 6029*5113495bSYour Name VDEV_PARAM(vdev_param_set_cmd_obss_pd_per_ac, 6030*5113495bSYour Name VDEV_PARAM_SET_CMD_OBSS_PD_PER_AC), 6031*5113495bSYour Name VDEV_PARAM(vdev_param_rsn_capability, VDEV_PARAM_RSN_CAPABILITY), 6032*5113495bSYour Name VDEV_PARAM(vdev_param_enable_srp, VDEV_PARAM_ENABLE_SRP), 6033*5113495bSYour Name VDEV_PARAM(vdev_param_roam_11kv_ctrl, VDEV_PARAM_ROAM_11KV_CTRL), 6034*5113495bSYour Name VDEV_PARAM(vdev_param_nan_config_features, 6035*5113495bSYour Name UNAVAILABLE_PARAM), 6036*5113495bSYour Name VDEV_PARAM(vdev_param_sho_config, VDEV_PARAM_SHO_CONFIG), 6037*5113495bSYour Name VDEV_PARAM(vdev_param_non_data_he_range_ext, 6038*5113495bSYour Name VDEV_PARAM_NON_DATA_HE_RANGE_EXT), 6039*5113495bSYour Name VDEV_PARAM(vdev_param_prohibit_data_mgmt, 6040*5113495bSYour Name VDEV_PARAM_PROHIBIT_DATA_MGMT), 6041*5113495bSYour Name VDEV_PARAM(vdev_param_wmm_txop_enable, VDEV_PARAM_WMM_TXOP_ENABLE), 6042*5113495bSYour Name VDEV_PARAM(vdev_param_force_dtim_cnt, VDEV_PARAM_FORCE_DTIM_CNT), 6043*5113495bSYour Name VDEV_PARAM(vdev_param_smart_monitor_config, 6044*5113495bSYour Name VDEV_PARAM_SMART_MONITOR_CONFIG), 6045*5113495bSYour Name VDEV_PARAM(vdev_param_max_li_of_moddtim_ms, 6046*5113495bSYour Name VDEV_PARAM_MAX_LI_OF_MODDTIM_MS), 6047*5113495bSYour Name VDEV_PARAM(vdev_param_11az_security_config, 6048*5113495bSYour Name VDEV_PARAM_11AZ_SECURITY_CONFIG), 6049*5113495bSYour Name VDEV_PARAM(vdev_param_set_normal_latency_flags_config, 6050*5113495bSYour Name VDEV_PARAM_NORMAL_LATENCY_FLAGS_CONFIGURATION), 6051*5113495bSYour Name VDEV_PARAM(vdev_param_set_xr_latency_flags_config, 6052*5113495bSYour Name VDEV_PARAM_XR_LATENCY_FLAGS_CONFIGURATION), 6053*5113495bSYour Name VDEV_PARAM(vdev_param_set_low_latency_flags_config, 6054*5113495bSYour Name VDEV_PARAM_LOW_LATENCY_FLAGS_CONFIGURATION), 6055*5113495bSYour Name VDEV_PARAM(vdev_param_set_ultra_low_latency_flags_config, 6056*5113495bSYour Name VDEV_PARAM_ULTRA_LOW_LATENCY_FLAGS_CONFIGURATION), 6057*5113495bSYour Name VDEV_PARAM(vdev_param_set_normal_latency_ul_dl_config, 6058*5113495bSYour Name VDEV_PARAM_NORMAL_LATENCY_UL_DL_CONFIGURATION), 6059*5113495bSYour Name VDEV_PARAM(vdev_param_set_xr_latency_ul_dl_config, 6060*5113495bSYour Name VDEV_PARAM_XR_LATENCY_UL_DL_CONFIGURATION), 6061*5113495bSYour Name VDEV_PARAM(vdev_param_set_low_latency_ul_dl_config, 6062*5113495bSYour Name VDEV_PARAM_LOW_LATENCY_UL_DL_CONFIGURATION), 6063*5113495bSYour Name VDEV_PARAM(vdev_param_set_ultra_low_latency_ul_dl_config, 6064*5113495bSYour Name VDEV_PARAM_ULTRA_LOW_LATENCY_UL_DL_CONFIGURATION), 6065*5113495bSYour Name VDEV_PARAM(vdev_param_set_default_ll_config, 6066*5113495bSYour Name VDEV_PARAM_DEFAULT_LATENCY_LEVEL_CONFIGURATION), 6067*5113495bSYour Name VDEV_PARAM(vdev_param_set_multi_client_ll_feature_config, 6068*5113495bSYour Name VDEV_PARAM_MULTI_CLIENT_LL_FEATURE_CONFIGURATION), 6069*5113495bSYour Name VDEV_PARAM(vdev_param_vdev_traffic_config, 6070*5113495bSYour Name VDEV_PARAM_VDEV_TRAFFIC_CONFIG), 6071*5113495bSYour Name VDEV_PARAM(vdev_param_final_bmiss_time_sec, 6072*5113495bSYour Name VDEV_PARAM_FINAL_BMISS_TIME_SEC), 6073*5113495bSYour Name VDEV_PARAM(vdev_param_final_bmiss_time_wow_sec, 6074*5113495bSYour Name VDEV_PARAM_FINAL_BMISS_TIME_WOW_SEC), 6075*5113495bSYour Name VDEV_PARAM(vdev_param_disable_lpi_ant_optimization, 6076*5113495bSYour Name VDEV_PARAM_DISABLE_LPI_ANT_OPTIMIZATION), 6077*5113495bSYour Name VDEV_PARAM(vdev_param_prototype, VDEV_PARAM_PROTOTYPE), 6078*5113495bSYour Name VDEV_PARAM(vdev_param_he_bss_color, VDEV_PARAM_BSS_COLOR), 6079*5113495bSYour Name VDEV_PARAM(vdev_param_set_hemu_mode, VDEV_PARAM_SET_HEMU_MODE), 6080*5113495bSYour Name VDEV_PARAM(vdev_param_set_heop, VDEV_PARAM_HEOPS_0_31), 6081*5113495bSYour Name VDEV_PARAM(vdev_param_obsspd, VDEV_PARAM_OBSSPD), 6082*5113495bSYour Name VDEV_PARAM(vdev_param_set_eht_mu_mode, VDEV_PARAM_SET_EHT_MU_MODE), 6083*5113495bSYour Name VDEV_PARAM(vdev_param_set_eht_ltf, VDEV_PARAM_EHT_LTF), 6084*5113495bSYour Name VDEV_PARAM(vdev_param_set_ul_eht_ltf, VDEV_PARAM_UL_EHT_LTF), 6085*5113495bSYour Name VDEV_PARAM(vdev_param_set_eht_dcm, VDEV_PARAM_EHT_DCM), 6086*5113495bSYour Name VDEV_PARAM(vdev_param_set_eht_range_ext, VDEV_PARAM_EHT_RANGE_EXT), 6087*5113495bSYour Name VDEV_PARAM(vdev_param_set_non_data_eht_range_ext, 6088*5113495bSYour Name VDEV_PARAM_NON_DATA_EHT_RANGE_EXT), 6089*5113495bSYour Name VDEV_PARAM(vdev_param_fixed_puncture_pattern, 6090*5113495bSYour Name VDEV_PARAM_FIXED_PUNCTURE_PATTERN), 6091*5113495bSYour Name VDEV_PARAM(vdev_param_set_ehtop, VDEV_PARAM_EHTOPS_0_31), 6092*5113495bSYour Name VDEV_PARAM(vdev_param_set_eht_puncturing_mode, 6093*5113495bSYour Name VDEV_PARAM_SET_EHT_PUNCTURING_MODE), 6094*5113495bSYour Name VDEV_PARAM(vdev_param_mcast_steer, VDEV_PARAM_MCAST_STEERING), 6095*5113495bSYour Name VDEV_PARAM(vdev_param_set_profile, VDEV_PARAM_SET_PROFILE), 6096*5113495bSYour Name VDEV_PARAM(vdev_param_vdev_stats_id_update, 6097*5113495bSYour Name VDEV_PARAM_VDEV_STATS_ID_UPDATE), 6098*5113495bSYour Name VDEV_PARAM(vdev_param_skip_roam_eapol_4way_handshake, 6099*5113495bSYour Name VDEV_PARAM_SKIP_ROAM_EAPOL_4WAY_HANDSHAKE), 6100*5113495bSYour Name VDEV_PARAM(vdev_param_skip_sae_roam_4way_handshake, 6101*5113495bSYour Name VDEV_PARAM_SKIP_SAE_ROAM_4WAY_HANDSHAKE), 6102*5113495bSYour Name VDEV_PARAM(vdev_param_tx_power, UNAVAILABLE_PARAM), 6103*5113495bSYour Name VDEV_PARAM(vdev_param_amsdu_subframe_size_per_ac, 6104*5113495bSYour Name UNAVAILABLE_PARAM), 6105*5113495bSYour Name VDEV_PARAM(vdev_param_6ghz_params, VDEV_PARAM_6GHZ_PARAMS), 6106*5113495bSYour Name VDEV_PARAM(vdev_host_swba_interval, VDEV_HOST_SWBA_INTERVAL), 6107*5113495bSYour Name VDEV_PARAM(vdev_param_meru_vc, UNAVAILABLE_PARAM), 6108*5113495bSYour Name VDEV_PARAM(vdev_param_sifs_trigger_rate, UNAVAILABLE_PARAM), 6109*5113495bSYour Name VDEV_PARAM(vdev_param_ap_keepalive_max_idle_inactive_secs, 6110*5113495bSYour Name VDEV_PARAM_AP_KEEPALIVE_MAX_IDLE_INACTIVE_TIME_SECS), 6111*5113495bSYour Name VDEV_PARAM(vdev_param_set_extra_eht_ltf, VDEV_PARAM_EXTRA_EHT_LTF), 6112*5113495bSYour Name VDEV_PARAM(vdev_param_set_disabled_modes, 6113*5113495bSYour Name VDEV_PARAM_SET_DISABLED_SCHED_MODES), 6114*5113495bSYour Name VDEV_PARAM(vdev_param_set_sap_ps_with_twt, 6115*5113495bSYour Name VDEV_PARAM_SET_SAP_PS_WITH_TWT), 6116*5113495bSYour Name VDEV_PARAM(vdev_param_chwidth_with_notify, 6117*5113495bSYour Name VDEV_PARAM_CHWIDTH_WITH_NOTIFY), 6118*5113495bSYour Name VDEV_PARAM(vdev_param_rtt_11az_tb_max_session_expiry, 6119*5113495bSYour Name VDEV_PARAM_RTT_11AZ_TB_MAX_SESSION_EXPIRY), 6120*5113495bSYour Name VDEV_PARAM(vdev_param_wifi_standard_version, 6121*5113495bSYour Name VDEV_PARAM_WIFI_STANDARD_VERSION), 6122*5113495bSYour Name VDEV_PARAM(vdev_param_rtt_11az_ntb_max_time_bw_meas, 6123*5113495bSYour Name VDEV_PARAM_RTT_11AZ_NTB_MAX_TIME_BW_MEAS), 6124*5113495bSYour Name VDEV_PARAM(vdev_param_rtt_11az_ntb_min_time_bw_meas, 6125*5113495bSYour Name VDEV_PARAM_RTT_11AZ_NTB_MIN_TIME_BW_MEAS), 6126*5113495bSYour Name VDEV_PARAM(vdev_param_disable_2g_twt, 6127*5113495bSYour Name VDEV_PARAM_DISABLE_2G_TWT), 6128*5113495bSYour Name VDEV_PARAM(vdev_param_disable_twt_info_frame, 6129*5113495bSYour Name VDEV_PARAM_DISABLE_TWT_INFO_FRAME), 6130*5113495bSYour Name VDEV_PARAM(vdev_param_mlo_max_recom_active_links, 6131*5113495bSYour Name VDEV_PARAM_MLO_MAX_RECOM_ACTIVE_LINKS), 6132*5113495bSYour Name vdev_param_max, 6133*5113495bSYour Name } wmi_conv_vdev_param_id; 6134*5113495bSYour Name 6135*5113495bSYour Name /* Host based ENUM IDs for service bits to abstract target enums */ 6136*5113495bSYour Name typedef enum { 6137*5113495bSYour Name wmi_service_beacon_offload = 0, 6138*5113495bSYour Name wmi_service_scan_offload, 6139*5113495bSYour Name wmi_service_roam_offload, 6140*5113495bSYour Name wmi_service_bcn_miss_offload, 6141*5113495bSYour Name wmi_service_sta_pwrsave, 6142*5113495bSYour Name wmi_service_sta_advanced_pwrsave, 6143*5113495bSYour Name wmi_service_ap_uapsd, 6144*5113495bSYour Name wmi_service_ap_dfs, 6145*5113495bSYour Name wmi_service_11ac, 6146*5113495bSYour Name wmi_service_blockack, 6147*5113495bSYour Name wmi_service_phyerr, 6148*5113495bSYour Name wmi_service_bcn_filter, 6149*5113495bSYour Name wmi_service_rtt, 6150*5113495bSYour Name wmi_service_ratectrl, 6151*5113495bSYour Name wmi_service_wow, 6152*5113495bSYour Name wmi_service_ratectrl_cache, 6153*5113495bSYour Name wmi_service_iram_tids, 6154*5113495bSYour Name wmi_service_burst, 6155*5113495bSYour Name wmi_service_smart_antenna_sw_support, 6156*5113495bSYour Name wmi_service_gtk_offload, 6157*5113495bSYour Name wmi_service_scan_sch, 6158*5113495bSYour Name wmi_service_csa_offload, 6159*5113495bSYour Name wmi_service_chatter, 6160*5113495bSYour Name wmi_service_coex_freqavoid, 6161*5113495bSYour Name wmi_service_packet_power_save, 6162*5113495bSYour Name wmi_service_force_fw_hang, 6163*5113495bSYour Name wmi_service_smart_antenna_hw_support, 6164*5113495bSYour Name wmi_service_gpio, 6165*5113495bSYour Name wmi_sta_uapsd_basic_auto_trig, 6166*5113495bSYour Name wmi_sta_uapsd_var_auto_trig, 6167*5113495bSYour Name wmi_service_sta_keep_alive, 6168*5113495bSYour Name wmi_service_tx_encap, 6169*5113495bSYour Name wmi_service_ap_ps_detect_out_of_sync, 6170*5113495bSYour Name wmi_service_early_rx, 6171*5113495bSYour Name wmi_service_enhanced_proxy_sta, 6172*5113495bSYour Name wmi_service_tt, 6173*5113495bSYour Name wmi_service_atf, 6174*5113495bSYour Name wmi_service_peer_caching, 6175*5113495bSYour Name wmi_service_coex_gpio, 6176*5113495bSYour Name wmi_service_aux_spectral_intf, 6177*5113495bSYour Name wmi_service_aux_chan_load_intf, 6178*5113495bSYour Name wmi_service_bss_channel_info_64, 6179*5113495bSYour Name wmi_service_ext_res_cfg_support, 6180*5113495bSYour Name wmi_service_mesh, 6181*5113495bSYour Name wmi_service_restrt_chnl_support, 6182*5113495bSYour Name wmi_service_roam_scan_offload, 6183*5113495bSYour Name wmi_service_arpns_offload, 6184*5113495bSYour Name wmi_service_nlo, 6185*5113495bSYour Name wmi_service_sta_dtim_ps_modulated_dtim, 6186*5113495bSYour Name wmi_service_sta_smps, 6187*5113495bSYour Name wmi_service_fwtest, 6188*5113495bSYour Name wmi_service_sta_wmmac, 6189*5113495bSYour Name wmi_service_tdls, 6190*5113495bSYour Name wmi_service_mcc_bcn_interval_change, 6191*5113495bSYour Name wmi_service_adaptive_ocs, 6192*5113495bSYour Name wmi_service_ba_ssn_support, 6193*5113495bSYour Name wmi_service_filter_ipsec_natkeepalive, 6194*5113495bSYour Name wmi_service_wlan_hb, 6195*5113495bSYour Name wmi_service_lte_ant_share_support, 6196*5113495bSYour Name wmi_service_batch_scan, 6197*5113495bSYour Name wmi_service_qpower, 6198*5113495bSYour Name wmi_service_plmreq, 6199*5113495bSYour Name wmi_service_thermal_mgmt, 6200*5113495bSYour Name wmi_service_rmc, 6201*5113495bSYour Name wmi_service_mhf_offload, 6202*5113495bSYour Name wmi_service_coex_sar, 6203*5113495bSYour Name wmi_service_bcn_txrate_override, 6204*5113495bSYour Name wmi_service_nan, 6205*5113495bSYour Name wmi_service_l1ss_stat, 6206*5113495bSYour Name wmi_service_estimate_linkspeed, 6207*5113495bSYour Name wmi_service_obss_scan, 6208*5113495bSYour Name wmi_service_tdls_offchan, 6209*5113495bSYour Name wmi_service_tdls_uapsd_buffer_sta, 6210*5113495bSYour Name wmi_service_tdls_uapsd_sleep_sta, 6211*5113495bSYour Name wmi_service_ibss_pwrsave, 6212*5113495bSYour Name wmi_service_lpass, 6213*5113495bSYour Name wmi_service_extscan, 6214*5113495bSYour Name wmi_service_d0wow, 6215*5113495bSYour Name wmi_service_hsoffload, 6216*5113495bSYour Name wmi_service_roam_ho_offload, 6217*5113495bSYour Name wmi_service_rx_full_reorder, 6218*5113495bSYour Name wmi_service_dhcp_offload, 6219*5113495bSYour Name wmi_service_sta_rx_ipa_offload_support, 6220*5113495bSYour Name wmi_service_mdns_offload, 6221*5113495bSYour Name wmi_service_sap_auth_offload, 6222*5113495bSYour Name wmi_service_dual_band_simultaneous_support, 6223*5113495bSYour Name wmi_service_ocb, 6224*5113495bSYour Name wmi_service_ap_arpns_offload, 6225*5113495bSYour Name wmi_service_per_band_chainmask_support, 6226*5113495bSYour Name wmi_service_packet_filter_offload, 6227*5113495bSYour Name wmi_service_mgmt_tx_htt, 6228*5113495bSYour Name wmi_service_mgmt_tx_wmi, 6229*5113495bSYour Name wmi_service_ext_msg, 6230*5113495bSYour Name wmi_service_mawc, 6231*5113495bSYour Name 6232*5113495bSYour Name wmi_service_peer_stats, 6233*5113495bSYour Name wmi_service_mesh_11s, 6234*5113495bSYour Name wmi_service_periodic_chan_stat_support, 6235*5113495bSYour Name wmi_service_tx_mode_push_only, 6236*5113495bSYour Name wmi_service_tx_mode_push_pull, 6237*5113495bSYour Name wmi_service_tx_mode_dynamic, 6238*5113495bSYour Name wmi_service_check_cal_version, 6239*5113495bSYour Name wmi_service_btcoex_duty_cycle, 6240*5113495bSYour Name wmi_service_4_wire_coex_support, 6241*5113495bSYour Name wmi_service_multiple_vdev_restart, 6242*5113495bSYour Name wmi_service_peer_assoc_conf, 6243*5113495bSYour Name wmi_service_egap, 6244*5113495bSYour Name wmi_service_sta_pmf_offload, 6245*5113495bSYour Name wmi_service_unified_wow_capability, 6246*5113495bSYour Name wmi_service_enterprise_mesh, 6247*5113495bSYour Name wmi_service_apf_offload, 6248*5113495bSYour Name wmi_service_sync_delete_cmds, 6249*5113495bSYour Name wmi_service_ratectrl_limit_max_min_rates, 6250*5113495bSYour Name wmi_service_nan_data, 6251*5113495bSYour Name wmi_service_nan_rtt, 6252*5113495bSYour Name wmi_service_11ax, 6253*5113495bSYour Name wmi_service_deprecated_replace, 6254*5113495bSYour Name wmi_service_tdls_conn_tracker_in_host_mode, 6255*5113495bSYour Name wmi_service_enhanced_mcast_filter, 6256*5113495bSYour Name wmi_service_half_rate_quarter_rate_support, 6257*5113495bSYour Name wmi_service_vdev_rx_filter, 6258*5113495bSYour Name wmi_service_p2p_listen_offload_support, 6259*5113495bSYour Name wmi_service_mark_first_wakeup_packet, 6260*5113495bSYour Name wmi_service_multiple_mcast_filter_set, 6261*5113495bSYour Name wmi_service_host_managed_rx_reorder, 6262*5113495bSYour Name wmi_service_flash_rdwr_support, 6263*5113495bSYour Name wmi_service_wlan_stats_report, 6264*5113495bSYour Name wmi_service_tx_msdu_id_new_partition_support, 6265*5113495bSYour Name wmi_service_dfs_phyerr_offload, 6266*5113495bSYour Name wmi_service_rcpi_support, 6267*5113495bSYour Name wmi_service_fw_mem_dump_support, 6268*5113495bSYour Name wmi_service_peer_stats_info, 6269*5113495bSYour Name wmi_service_regulatory_db, 6270*5113495bSYour Name wmi_service_11d_offload, 6271*5113495bSYour Name wmi_service_hw_data_filtering, 6272*5113495bSYour Name wmi_service_pkt_routing, 6273*5113495bSYour Name wmi_service_offchan_tx_wmi, 6274*5113495bSYour Name wmi_service_chan_load_info, 6275*5113495bSYour Name wmi_service_extended_nss_support, 6276*5113495bSYour Name wmi_service_ack_timeout, 6277*5113495bSYour Name wmi_service_widebw_scan, 6278*5113495bSYour Name wmi_service_bcn_offload_start_stop_support, 6279*5113495bSYour Name wmi_service_offchan_data_tid_support, 6280*5113495bSYour Name wmi_service_support_dma, 6281*5113495bSYour Name wmi_service_8ss_tx_bfee, 6282*5113495bSYour Name wmi_service_fils_support, 6283*5113495bSYour Name wmi_service_mawc_support, 6284*5113495bSYour Name wmi_service_wow_wakeup_by_timer_pattern, 6285*5113495bSYour Name wmi_service_11k_neighbour_report_support, 6286*5113495bSYour Name wmi_service_ap_obss_detection_offload, 6287*5113495bSYour Name wmi_service_bss_color_offload, 6288*5113495bSYour Name wmi_service_gmac_offload_support, 6289*5113495bSYour Name wmi_service_host_dfs_check_support, 6290*5113495bSYour Name wmi_service_dual_beacon_on_single_mac_scc_support, 6291*5113495bSYour Name wmi_service_dual_beacon_on_single_mac_mcc_support, 6292*5113495bSYour Name wmi_service_twt_requestor, 6293*5113495bSYour Name wmi_service_twt_responder, 6294*5113495bSYour Name wmi_service_listen_interval_offload_support, 6295*5113495bSYour Name 6296*5113495bSYour Name #ifdef OL_ATH_SMART_LOGGING 6297*5113495bSYour Name wmi_service_smart_logging_support, 6298*5113495bSYour Name #endif 6299*5113495bSYour Name wmi_service_infra_mbssid, 6300*5113495bSYour Name wmi_service_esp_support, 6301*5113495bSYour Name wmi_service_obss_spatial_reuse, 6302*5113495bSYour Name wmi_service_per_vdev_chain_support, 6303*5113495bSYour Name wmi_service_new_htt_msg_format, 6304*5113495bSYour Name wmi_service_peer_unmap_cnf_support, 6305*5113495bSYour Name wmi_service_beacon_reception_stats, 6306*5113495bSYour Name wmi_service_vdev_latency_config, 6307*5113495bSYour Name wmi_service_nan_dbs_support, 6308*5113495bSYour Name wmi_service_ndi_dbs_support, 6309*5113495bSYour Name wmi_service_nan_sap_support, 6310*5113495bSYour Name wmi_service_ndi_sap_support, 6311*5113495bSYour Name wmi_service_nan_disable_support, 6312*5113495bSYour Name wmi_service_sta_plus_sta_support, 6313*5113495bSYour Name wmi_service_hw_db2dbm_support, 6314*5113495bSYour Name wmi_service_wlm_stats_support, 6315*5113495bSYour Name wmi_service_ul_ru26_allowed, 6316*5113495bSYour Name wmi_service_cfr_capture_support, 6317*5113495bSYour Name wmi_service_bcast_twt_support, 6318*5113495bSYour Name wmi_service_wpa3_ft_sae_support, 6319*5113495bSYour Name wmi_service_wpa3_ft_suite_b_support, 6320*5113495bSYour Name wmi_service_ft_fils, 6321*5113495bSYour Name wmi_service_adaptive_11r_support, 6322*5113495bSYour Name wmi_service_data_stall_recovery_support, 6323*5113495bSYour Name wmi_service_tx_compl_tsf64, 6324*5113495bSYour Name wmi_service_vdev_delete_all_peer, 6325*5113495bSYour Name wmi_service_three_way_coex_config_legacy, 6326*5113495bSYour Name wmi_service_multiple_coex_config_support, 6327*5113495bSYour Name wmi_service_rx_fse_support, 6328*5113495bSYour Name wmi_service_dynamic_hw_mode, 6329*5113495bSYour Name wmi_service_sae_roam_support, 6330*5113495bSYour Name wmi_service_owe_roam_support, 6331*5113495bSYour Name wmi_service_ext2_msg, 6332*5113495bSYour Name wmi_service_6ghz_support, 6333*5113495bSYour Name wmi_service_bw_165mhz_support, 6334*5113495bSYour Name wmi_service_bw_restricted_80p80_support, 6335*5113495bSYour Name wmi_service_packet_capture_support, 6336*5113495bSYour Name wmi_service_nan_vdev, 6337*5113495bSYour Name wmi_service_multiple_vdev_restart_ext, 6338*5113495bSYour Name wmi_service_peer_delete_no_peer_flush_tids_cmd, 6339*5113495bSYour Name wmi_service_time_sync_ftm, 6340*5113495bSYour Name wmi_service_nss_ratio_to_host_support, 6341*5113495bSYour Name wmi_roam_scan_chan_list_to_host_support, 6342*5113495bSYour Name wmi_beacon_protection_support, 6343*5113495bSYour Name wmi_service_sta_nan_ndi_four_port, 6344*5113495bSYour Name wmi_service_host_scan_stop_vdev_all, 6345*5113495bSYour Name wmi_service_ema_ap_support, 6346*5113495bSYour Name wmi_support_extend_address, 6347*5113495bSYour Name wmi_service_srg_srp_spatial_reuse_support, 6348*5113495bSYour Name wmi_service_suiteb_roam_support, 6349*5113495bSYour Name wmi_service_no_interband_mcc_support, 6350*5113495bSYour Name wmi_service_dual_sta_roam_support, 6351*5113495bSYour Name wmi_service_peer_create_conf, 6352*5113495bSYour Name wmi_service_configure_roam_trigger_param_support, 6353*5113495bSYour Name wmi_service_5dot9_ghz_support, 6354*5113495bSYour Name wmi_service_cfr_ta_ra_as_fp_support, 6355*5113495bSYour Name wmi_service_cfr_capture_count_support, 6356*5113495bSYour Name wmi_service_ocv_support, 6357*5113495bSYour Name wmi_service_ll_stats_per_chan_rx_tx_time, 6358*5113495bSYour Name wmi_service_thermal_multi_client_support, 6359*5113495bSYour Name wmi_service_mbss_param_in_vdev_start_support, 6360*5113495bSYour Name wmi_service_fse_cmem_alloc_support, 6361*5113495bSYour Name #ifdef FEATURE_CLUB_LL_STATS_AND_GET_STATION 6362*5113495bSYour Name wmi_service_get_station_in_ll_stats_req, 6363*5113495bSYour Name #endif 6364*5113495bSYour Name wmi_service_scan_conf_per_ch_support, 6365*5113495bSYour Name wmi_service_csa_beacon_template, 6366*5113495bSYour Name wmi_service_twt_bcast_req_support, 6367*5113495bSYour Name wmi_service_twt_bcast_resp_support, 6368*5113495bSYour Name wmi_service_spectral_scan_disabled, 6369*5113495bSYour Name #ifdef WLAN_SUPPORT_TWT 6370*5113495bSYour Name wmi_service_twt_nudge, 6371*5113495bSYour Name wmi_service_all_twt, 6372*5113495bSYour Name wmi_service_twt_statistics, 6373*5113495bSYour Name wmi_service_restricted_twt, 6374*5113495bSYour Name #endif 6375*5113495bSYour Name wmi_service_wapi_concurrency_supported, 6376*5113495bSYour Name wmi_service_sap_connected_d3_wow, 6377*5113495bSYour Name wmi_service_go_connected_d3_wow, 6378*5113495bSYour Name wmi_service_ext_tpc_reg_support, 6379*5113495bSYour Name wmi_service_ndi_txbf_support, 6380*5113495bSYour Name wmi_service_reg_cc_ext_event_support, 6381*5113495bSYour Name wmi_service_bang_radar_320_support, 6382*5113495bSYour Name wmi_service_eirp_preferred_support, 6383*5113495bSYour Name #if defined(CONFIG_BAND_6GHZ) 6384*5113495bSYour Name wmi_service_lower_6g_edge_ch_supp, 6385*5113495bSYour Name wmi_service_disable_upper_6g_edge_ch_supp, 6386*5113495bSYour Name #ifdef CONFIG_AFC_SUPPORT 6387*5113495bSYour Name wmi_service_afc_support, 6388*5113495bSYour Name #endif 6389*5113495bSYour Name #endif 6390*5113495bSYour Name wmi_service_dcs_awgn_int_support, 6391*5113495bSYour Name #ifdef WLAN_FEATURE_IGMP_OFFLOAD 6392*5113495bSYour Name wmi_service_igmp_offload_support, 6393*5113495bSYour Name #endif 6394*5113495bSYour Name #ifdef WLAN_FEATURE_11BE 6395*5113495bSYour Name wmi_service_11be, 6396*5113495bSYour Name #endif 6397*5113495bSYour Name #ifdef WLAN_FEATURE_11AX 6398*5113495bSYour Name #ifdef FEATURE_WLAN_TDLS 6399*5113495bSYour Name wmi_service_tdls_ax_support, 6400*5113495bSYour Name #endif 6401*5113495bSYour Name #endif 6402*5113495bSYour Name #ifdef WLAN_FEATURE_11BE_MLO 6403*5113495bSYour Name #ifdef FEATURE_WLAN_TDLS 6404*5113495bSYour Name wmi_service_tdls_mlo_support, 6405*5113495bSYour Name #endif 6406*5113495bSYour Name #endif 6407*5113495bSYour Name #ifdef WLAN_FEATURE_BIG_DATA_STATS 6408*5113495bSYour Name wmi_service_big_data_support, 6409*5113495bSYour Name #endif 6410*5113495bSYour Name wmi_service_sae_eapol_offload_support, 6411*5113495bSYour Name wmi_service_ampdu_tx_buf_size_256_support, 6412*5113495bSYour Name wmi_service_halphy_cal_enable_disable_support, 6413*5113495bSYour Name wmi_service_halphy_cal_status, 6414*5113495bSYour Name wmi_service_rtt_ap_initiator_staggered_mode_supported, 6415*5113495bSYour Name wmi_service_rtt_ap_initiator_bursted_mode_supported, 6416*5113495bSYour Name wmi_service_ema_multiple_group_supported, 6417*5113495bSYour Name wmi_service_large_beacon_supported, 6418*5113495bSYour Name wmi_service_aoa_for_rcc_supported, 6419*5113495bSYour Name #ifdef WLAN_FEATURE_P2P_P2P_STA 6420*5113495bSYour Name wmi_service_p2p_p2p_cc_support, 6421*5113495bSYour Name #endif 6422*5113495bSYour Name #ifdef THERMAL_STATS_SUPPORT 6423*5113495bSYour Name wmi_service_thermal_stats_temp_range_supported, 6424*5113495bSYour Name #endif 6425*5113495bSYour Name wmi_service_hw_mode_policy_offload_support, 6426*5113495bSYour Name wmi_service_mgmt_rx_reo_supported, 6427*5113495bSYour Name wmi_service_phy_dma_byte_swap_support, 6428*5113495bSYour Name wmi_service_spectral_session_info_support, 6429*5113495bSYour Name wmi_service_umac_hang_recovery_support, 6430*5113495bSYour Name wmi_service_mu_snif, 6431*5113495bSYour Name #ifdef WLAN_FEATURE_DYNAMIC_MAC_ADDR_UPDATE 6432*5113495bSYour Name wmi_service_dynamic_update_vdev_macaddr_support, 6433*5113495bSYour Name #endif 6434*5113495bSYour Name wmi_service_probe_all_bw_support, 6435*5113495bSYour Name wmi_service_pno_scan_conf_per_ch_support, 6436*5113495bSYour Name #ifdef QCA_UNDECODED_METADATA_SUPPORT 6437*5113495bSYour Name wmi_service_fp_phy_err_filter_support, 6438*5113495bSYour Name #endif 6439*5113495bSYour Name #ifdef WLAN_FEATURE_11BE_MLO 6440*5113495bSYour Name wmi_service_mlo_sta_nan_ndi_support, 6441*5113495bSYour Name #endif 6442*5113495bSYour Name wmi_service_pdev_rate_config_support, 6443*5113495bSYour Name wmi_service_multi_peer_group_cmd_support, 6444*5113495bSYour Name #ifdef WLAN_FEATURE_11BE 6445*5113495bSYour Name wmi_service_radar_found_chan_freq_eq_center_freq, 6446*5113495bSYour Name #endif 6447*5113495bSYour Name wmi_service_pn_replay_check_support, 6448*5113495bSYour Name #ifdef QCA_RSSI_DB2DBM 6449*5113495bSYour Name wmi_service_pdev_rssi_dbm_conv_event_support, 6450*5113495bSYour Name #endif 6451*5113495bSYour Name #ifdef WIFI_POS_CONVERGED 6452*5113495bSYour Name wmi_service_rtt_11az_mac_phy_sec_support, 6453*5113495bSYour Name wmi_service_rtt_11az_mac_sec_support, 6454*5113495bSYour Name wmi_service_rtt_11az_ntb_support, 6455*5113495bSYour Name wmi_service_rtt_11az_tb_support, 6456*5113495bSYour Name wmi_service_rtt_11az_tb_rsta_support, 6457*5113495bSYour Name #endif 6458*5113495bSYour Name wmi_service_pktlog_decode_info_support, 6459*5113495bSYour Name #ifdef WLAN_FEATURE_ROAM_OFFLOAD 6460*5113495bSYour Name wmi_service_roam_stats_per_candidate_frame_info, 6461*5113495bSYour Name #endif 6462*5113495bSYour Name #ifdef MULTI_CLIENT_LL_SUPPORT 6463*5113495bSYour Name wmi_service_configure_multi_client_ll_support, 6464*5113495bSYour Name #endif 6465*5113495bSYour Name #ifdef WLAN_VENDOR_HANDOFF_CONTROL 6466*5113495bSYour Name wmi_service_configure_vendor_handoff_control_support, 6467*5113495bSYour Name #endif 6468*5113495bSYour Name #ifdef FEATURE_WLAN_TDLS 6469*5113495bSYour Name #ifdef WLAN_FEATURE_11AX 6470*5113495bSYour Name wmi_service_tdls_6g_support, 6471*5113495bSYour Name #endif 6472*5113495bSYour Name wmi_service_tdls_wideband_support, 6473*5113495bSYour Name wmi_service_tdls_concurrency_support, 6474*5113495bSYour Name #endif 6475*5113495bSYour Name wmi_service_is_my_mgmt_frame, 6476*5113495bSYour Name wmi_service_linkspeed_roam_trigger_support, 6477*5113495bSYour Name #ifdef FEATURE_SET 6478*5113495bSYour Name wmi_service_feature_set_event_support, 6479*5113495bSYour Name #endif 6480*5113495bSYour Name #ifdef WLAN_PDEV_VDEV_SEND_MULTI_PARAM 6481*5113495bSYour Name wmi_service_combined_set_param_support, 6482*5113495bSYour Name #endif 6483*5113495bSYour Name #ifdef WLAN_FEATURE_SR 6484*5113495bSYour Name wmi_service_obss_per_packet_sr_support, 6485*5113495bSYour Name #endif 6486*5113495bSYour Name wmi_service_wpa3_sha384_roam_support, 6487*5113495bSYour Name wmi_service_multiple_vdev_restart_bmap, 6488*5113495bSYour Name wmi_service_v1a_v1b_supported, 6489*5113495bSYour Name wmi_service_self_mld_roam_between_dbs_and_hbs, 6490*5113495bSYour Name wmi_service_cfr_capture_pdev_id_soc, 6491*5113495bSYour Name #ifdef QCA_MANUAL_TRIGGERED_ULOFDMA 6492*5113495bSYour Name wmi_service_manual_ulofdma_trigger_support, 6493*5113495bSYour Name #endif 6494*5113495bSYour Name wmi_service_pre_rx_timeout, 6495*5113495bSYour Name #ifdef QCA_STANDALONE_SOUNDING_TRIGGER 6496*5113495bSYour Name wmi_service_standalone_sound, 6497*5113495bSYour Name #endif 6498*5113495bSYour Name wmi_service_cca_busy_info_for_each_20mhz, 6499*5113495bSYour Name wmi_service_vdev_param_chwidth_with_notify_support, 6500*5113495bSYour Name 6501*5113495bSYour Name #ifdef WLAN_FEATURE_11BE_MLO 6502*5113495bSYour Name wmi_service_mlo_tsf_sync, 6503*5113495bSYour Name wmi_service_n_link_mlo_support, 6504*5113495bSYour Name wmi_service_per_link_stats_support, 6505*5113495bSYour Name wmi_service_pdev_wsi_stats_info_support, 6506*5113495bSYour Name wmi_service_mlo_tid_to_link_mapping_support, 6507*5113495bSYour Name #endif 6508*5113495bSYour Name wmi_service_aux_mac_support, 6509*5113495bSYour Name #ifdef WLAN_ATF_INCREASED_STA 6510*5113495bSYour Name wmi_service_atf_max_client_512_support, 6511*5113495bSYour Name #endif 6512*5113495bSYour Name wmi_service_fisa_dynamic_msdu_aggr_size_support, 6513*5113495bSYour Name wmi_service_radar_flags_support, 6514*5113495bSYour Name #ifdef WLAN_FEATURE_ROAM_OFFLOAD 6515*5113495bSYour Name wmi_service_5ghz_hi_rssi_roam_support, 6516*5113495bSYour Name #endif 6517*5113495bSYour Name wmi_service_pdev_param_in_utf_wmi, 6518*5113495bSYour Name #ifdef WLAN_FEATURE_LL_LT_SAP 6519*5113495bSYour Name wmi_service_xpan_support, 6520*5113495bSYour Name #endif 6521*5113495bSYour Name wmi_service_multiple_reorder_queue_setup_support, 6522*5113495bSYour Name wmi_service_p2p_device_update_mac_addr_support, 6523*5113495bSYour Name #ifdef WLAN_CHIPSET_STATS 6524*5113495bSYour Name wmi_service_chipset_logging_support, 6525*5113495bSYour Name #endif 6526*5113495bSYour Name wmi_services_max, 6527*5113495bSYour Name } wmi_conv_service_ids; 6528*5113495bSYour Name #define WMI_SERVICE_UNAVAILABLE 0xFFFF 6529*5113495bSYour Name 6530*5113495bSYour Name /** 6531*5113495bSYour Name * enum WMI_DBG_PARAM - Debug params 6532*5113495bSYour Name * @WMI_DBGLOG_LOG_LEVEL: Set the loglevel 6533*5113495bSYour Name * @WMI_DBGLOG_VAP_ENABLE: Enable VAP level debug 6534*5113495bSYour Name * @WMI_DBGLOG_VAP_DISABLE: Disable VAP level debug 6535*5113495bSYour Name * @WMI_DBGLOG_MODULE_ENABLE: Enable MODULE level debug 6536*5113495bSYour Name * @WMI_DBGLOG_MODULE_DISABLE: Disable MODULE level debug 6537*5113495bSYour Name * @WMI_DBGLOG_MOD_LOG_LEVEL: Enable MODULE level debug 6538*5113495bSYour Name * @WMI_DBGLOG_TYPE: set type of the debug output 6539*5113495bSYour Name * @WMI_DBGLOG_REPORT_ENABLE: Enable Disable debug 6540*5113495bSYour Name * @WMI_DBGLOG_MOD_WOW_LOG_LEVEL: set the WOW MODULE debug loglevel 6541*5113495bSYour Name */ 6542*5113495bSYour Name typedef enum { 6543*5113495bSYour Name WMI_DBGLOG_LOG_LEVEL = 0x1, 6544*5113495bSYour Name WMI_DBGLOG_VAP_ENABLE, 6545*5113495bSYour Name WMI_DBGLOG_VAP_DISABLE, 6546*5113495bSYour Name WMI_DBGLOG_MODULE_ENABLE, 6547*5113495bSYour Name WMI_DBGLOG_MODULE_DISABLE, 6548*5113495bSYour Name WMI_DBGLOG_MOD_LOG_LEVEL, 6549*5113495bSYour Name WMI_DBGLOG_TYPE, 6550*5113495bSYour Name WMI_DBGLOG_REPORT_ENABLE, 6551*5113495bSYour Name WMI_DBGLOG_MOD_WOW_LOG_LEVEL 6552*5113495bSYour Name } WMI_DBG_PARAM; 6553*5113495bSYour Name 6554*5113495bSYour Name /** 6555*5113495bSYour Name * struct wmi_host_fw_ver - FW version in non-tlv target 6556*5113495bSYour Name * @sw_version: Version info 6557*5113495bSYour Name * @sw_version_1: Second dword of version 6558*5113495bSYour Name */ 6559*5113495bSYour Name struct wmi_host_fw_ver { 6560*5113495bSYour Name uint32_t sw_version; 6561*5113495bSYour Name uint32_t sw_version_1; 6562*5113495bSYour Name }; 6563*5113495bSYour Name 6564*5113495bSYour Name /** 6565*5113495bSYour Name * struct wmi_host_fw_abi_ver - FW version in non-tlv target 6566*5113495bSYour Name * @sw_version: Version info 6567*5113495bSYour Name * @abi_version: ABI version 6568*5113495bSYour Name */ 6569*5113495bSYour Name struct wmi_host_fw_abi_ver { 6570*5113495bSYour Name uint32_t sw_version; 6571*5113495bSYour Name uint32_t abi_version; 6572*5113495bSYour Name }; 6573*5113495bSYour Name 6574*5113495bSYour Name /** 6575*5113495bSYour Name * enum WMI_HOST_WIFI_STANDARD - Supported wifi standard 6576*5113495bSYour Name * @WMI_HOST_WIFI_STANDARD_4: Wifi standard 4 6577*5113495bSYour Name * @WMI_HOST_WIFI_STANDARD_5:Wifi standard 5 6578*5113495bSYour Name * @WMI_HOST_WIFI_STANDARD_6: Wifi standard 6 6579*5113495bSYour Name * @WMI_HOST_WIFI_STANDARD_6E: Wifi standard 6E 6580*5113495bSYour Name * @WMI_HOST_WIFI_STANDARD_7: Wifi standard 7 6581*5113495bSYour Name */ 6582*5113495bSYour Name typedef enum { 6583*5113495bSYour Name WMI_HOST_WIFI_STANDARD_4 = 0, 6584*5113495bSYour Name WMI_HOST_WIFI_STANDARD_5 = 1, 6585*5113495bSYour Name WMI_HOST_WIFI_STANDARD_6 = 2, 6586*5113495bSYour Name WMI_HOST_WIFI_STANDARD_6E = 3, 6587*5113495bSYour Name WMI_HOST_WIFI_STANDARD_7 = 4, 6588*5113495bSYour Name } WMI_HOST_WIFI_STANDARD; 6589*5113495bSYour Name 6590*5113495bSYour Name #ifdef FEATURE_SET 6591*5113495bSYour Name /** 6592*5113495bSYour Name * enum WMI_HOST_BAND_CONCURRENCY - Enum to represent supported concurrency 6593*5113495bSYour Name * @WMI_HOST_BAND_CONCURRENCY_NONE: No concurrency is supported 6594*5113495bSYour Name * @WMI_HOST_BAND_CONCURRENCY_DBS: DBS is supported 6595*5113495bSYour Name * @WMI_HOST_BAND_CONCURRENCY_DBS_SBS: DBS and SBS are supported 6596*5113495bSYour Name */ 6597*5113495bSYour Name typedef enum { 6598*5113495bSYour Name WMI_HOST_BAND_CONCURRENCY_NONE = 0, 6599*5113495bSYour Name WMI_HOST_BAND_CONCURRENCY_DBS = 1, 6600*5113495bSYour Name WMI_HOST_BAND_CONCURRENCY_DBS_SBS = 2, 6601*5113495bSYour Name } WMI_HOST_BAND_CONCURRENCY; 6602*5113495bSYour Name 6603*5113495bSYour Name /** 6604*5113495bSYour Name * enum WMI_HOST_VENDOR1_REQ1_VERSION - Vendor 1 requirement 1 version 6605*5113495bSYour Name * @WMI_HOST_VENDOR1_REQ1_VERSION_3_00: Major version 3, minor version 00 6606*5113495bSYour Name * @WMI_HOST_VENDOR1_REQ1_VERSION_3_01: Major version 3, minor version 01 6607*5113495bSYour Name * @WMI_HOST_VENDOR1_REQ1_VERSION_3_20: Major version 3, minor version 20 6608*5113495bSYour Name * @WMI_HOST_VENDOR1_REQ1_VERSION_3_30: Major version 3, minor version 30 6609*5113495bSYour Name * @WMI_HOST_VENDOR1_REQ1_VERSION_3_40: Major version 3, minor version 40 6610*5113495bSYour Name * @WMI_HOST_VENDOR1_REQ1_VERSION_4_00: Major version 4, minor version 00 6611*5113495bSYour Name */ 6612*5113495bSYour Name typedef enum { 6613*5113495bSYour Name WMI_HOST_VENDOR1_REQ1_VERSION_3_00 = 0, 6614*5113495bSYour Name WMI_HOST_VENDOR1_REQ1_VERSION_3_01 = 1, 6615*5113495bSYour Name WMI_HOST_VENDOR1_REQ1_VERSION_3_20 = 2, 6616*5113495bSYour Name WMI_HOST_VENDOR1_REQ1_VERSION_3_30 = 3, 6617*5113495bSYour Name WMI_HOST_VENDOR1_REQ1_VERSION_3_40 = 4, 6618*5113495bSYour Name WMI_HOST_VENDOR1_REQ1_VERSION_4_00 = 5, 6619*5113495bSYour Name } WMI_HOST_VENDOR1_REQ1_VERSION; 6620*5113495bSYour Name 6621*5113495bSYour Name /** 6622*5113495bSYour Name * enum WMI_HOST_VENDOR1_REQ2_VERSION - Vendor 1 requirement 2 version 6623*5113495bSYour Name * @WMI_HOST_VENDOR1_REQ2_VERSION_3_00: Major version 3, minor version 00 6624*5113495bSYour Name * @WMI_HOST_VENDOR1_REQ2_VERSION_3_01: Major version 3, minor version 01 6625*5113495bSYour Name * @WMI_HOST_VENDOR1_REQ2_VERSION_3_20: Major version 3, minor version 20 6626*5113495bSYour Name * @WMI_HOST_VENDOR1_REQ2_VERSION_3_50: Major version 3, minor version 50 6627*5113495bSYour Name */ 6628*5113495bSYour Name typedef enum { 6629*5113495bSYour Name WMI_HOST_VENDOR1_REQ2_VERSION_3_00 = 0, 6630*5113495bSYour Name WMI_HOST_VENDOR1_REQ2_VERSION_3_01 = 1, 6631*5113495bSYour Name WMI_HOST_VENDOR1_REQ2_VERSION_3_20 = 2, 6632*5113495bSYour Name WMI_HOST_VENDOR1_REQ2_VERSION_3_50 = 3, 6633*5113495bSYour Name } WMI_HOST_VENDOR1_REQ2_VERSION; 6634*5113495bSYour Name 6635*5113495bSYour Name /** 6636*5113495bSYour Name * enum WMI_HOST_NUM_ANTENNAS - Number of antennas 6637*5113495bSYour Name * @WMI_HOST_SISO: When 1x1 is supported 6638*5113495bSYour Name * @WMI_HOST_MIMO_2X2: When 2x2 MIMO is supported 6639*5113495bSYour Name */ 6640*5113495bSYour Name 6641*5113495bSYour Name typedef enum { 6642*5113495bSYour Name WMI_HOST_SISO = 1, 6643*5113495bSYour Name WMI_HOST_MIMO_2X2 = 2, 6644*5113495bSYour Name } WMI_HOST_NUM_ANTENNAS; 6645*5113495bSYour Name 6646*5113495bSYour Name /** 6647*5113495bSYour Name * struct target_feature_set - Feature set structure 6648*5113495bSYour Name * @wifi_standard: Wifi standard 6649*5113495bSYour Name * @concurrency_support: Indicates supported concurrencies 6650*5113495bSYour Name * @pno_in_unassoc_state: Indicates PNO support in un assoc state 6651*5113495bSYour Name * @pno_in_assoc_state: Indicates PNO support in assoc state 6652*5113495bSYour Name * @enable_twt: Enable TWT 6653*5113495bSYour Name * @enable_twt_requester: Enable TWT requester 6654*5113495bSYour Name * @enable_twt_broadcast: Enable TWT broadcast 6655*5113495bSYour Name * @enable_twt_flexible: Enable flexible TWT 6656*5113495bSYour Name * @enable_wifi_optimizer: indicates wifi optimizer is enabled or disabled 6657*5113495bSYour Name * @enable_rfc835: indicates rfc835 is enabled or disabled 6658*5113495bSYour Name * @sap_5g_supported: Indicates SAP 5g is supported or not 6659*5113495bSYour Name * @sap_6g_supported: Indicates SAP 6g is supported or not 6660*5113495bSYour Name * @band_capability: Band capability bit map 6661*5113495bSYour Name * @sap_max_num_clients: Max clients supported by SAP 6662*5113495bSYour Name * @set_country_code_hal_supported: Indicates country code hal supported or not 6663*5113495bSYour Name * @get_valid_channel_supported: Indicates get valid channel supported or not 6664*5113495bSYour Name * @supported_dot11mode: Indicates supported dot11 mode 6665*5113495bSYour Name * @sap_wpa3_support: Indicates wpa3 support for SAP 6666*5113495bSYour Name * @vendor_req_1_version: Indicates vendor1 req1 version 6667*5113495bSYour Name * @roaming_high_cu_roam_trigger: Roaming high CPU trigger enabled or disabled 6668*5113495bSYour Name * @roaming_emergency_trigger: Roaming emergency trigger enabled or disabled 6669*5113495bSYour Name * @roaming_btm_trihgger: Roaming btm trigger enabled or disabled 6670*5113495bSYour Name * @roaming_idle_trigger: Roaming idle trigger enabled or disabled 6671*5113495bSYour Name * @roaming_wtc_trigger: Roaming wtc trigger enabled or disabled 6672*5113495bSYour Name * @roaming_btcoex_trigger: Roaming btcoex trigger enabled or disabled 6673*5113495bSYour Name * @roaming_btw_wpa_wpa2: Roaming btw wpa wpa2 enabled or disabled 6674*5113495bSYour Name * @roaming_manage_chan_list_api: Roaming manage chan list api enabled or 6675*5113495bSYour Name * disabled 6676*5113495bSYour Name * @roaming_adaptive_11r: Roaming adaptive 11r enabled or disabled 6677*5113495bSYour Name * @roaming_ctrl_api_get_set: Roaming ctrl api get set enabled or disabled 6678*5113495bSYour Name * @roaming_ctrl_api_reassoc: Roaming ctrl api reassoc enabled or disabled 6679*5113495bSYour Name * @roaming_ctrl_get_cu: Roaming ctrl get cu enabled or disabled 6680*5113495bSYour Name * @vendor_req_2_version: Vendor requirement version 2 6681*5113495bSYour Name * @assurance_disconnect_reason_api: Assurance disconnect API supported or not 6682*5113495bSYour Name * @frame_pcap_log_mgmt: Frame pcap logging mgmt supported or not 6683*5113495bSYour Name * @frame_pcap_log_ctrl: Frame pcap logging ctrl supported or not 6684*5113495bSYour Name * @frame_pcap_log_data: Frame pcap logging data supported or not 6685*5113495bSYour Name * @security_wpa3_sae_h2e: Security wpa3 sae h2e supported or not 6686*5113495bSYour Name * @security_wpa3_sae_ft: Security wpa3 sae ft supported or not 6687*5113495bSYour Name * @security_wpa3_enterp_suitb: Security wpa3 enterprise suitb supported or not 6688*5113495bSYour Name * @security_wpa3_enterp_suitb_192bit: Security wpa3 enterprise suitb 192bit 6689*5113495bSYour Name * supported or not 6690*5113495bSYour Name * @security_fills_sha_256: Security fills sha 256 supported or not 6691*5113495bSYour Name * @security_fills_sha_384: Security fills sha 384 supported or not 6692*5113495bSYour Name * @security_fills_sha_256_FT: Security fills sha 256 FT supported or not 6693*5113495bSYour Name * @security_fills_sha_384_FT: Security fills sha 384 FT supported or not 6694*5113495bSYour Name * @security_enhanced_open: Security enhanced open supported or not 6695*5113495bSYour Name * @enable_nan: enable NAN 6696*5113495bSYour Name * @enable_tdls: Enable tdls 6697*5113495bSYour Name * @enable_p2p_6e: Enable p2p 6e 6698*5113495bSYour Name * @enable_tdls_offchannel: Enable tdls offchannel 6699*5113495bSYour Name * @enable_tdls_capability_enhance: Enable tdls capability enhance 6700*5113495bSYour Name * @max_tdls_peers: Max tdls peers 6701*5113495bSYour Name * @peer_bigdata_getbssinfo_support: Indicates bigdata getbssinfo support 6702*5113495bSYour Name * @peer_bigdata_assocreject_info_support: Indicates bigdata assoc reject 6703*5113495bSYour Name * info support 6704*5113495bSYour Name * @peer_getstainfo_support: Indicates getstainfo support 6705*5113495bSYour Name * @feature_set_version: Indicates feature set version info 6706*5113495bSYour Name * @num_antennas: Indicates number of antennas supported 6707*5113495bSYour Name * @sta_dump_support: Indicates sta dump info support 6708*5113495bSYour Name * @iface_combinations: Iface combination bit map 6709*5113495bSYour Name */ 6710*5113495bSYour Name struct target_feature_set { 6711*5113495bSYour Name WMI_HOST_WIFI_STANDARD wifi_standard; 6712*5113495bSYour Name WMI_HOST_BAND_CONCURRENCY concurrency_support; 6713*5113495bSYour Name bool pno_in_unassoc_state; 6714*5113495bSYour Name bool pno_in_assoc_state; 6715*5113495bSYour Name bool enable_twt; 6716*5113495bSYour Name bool enable_twt_requester; 6717*5113495bSYour Name bool enable_twt_broadcast; 6718*5113495bSYour Name bool enable_twt_flexible; 6719*5113495bSYour Name bool enable_wifi_optimizer; 6720*5113495bSYour Name bool enable_rfc835; 6721*5113495bSYour Name bool sap_5g_supported; 6722*5113495bSYour Name bool sap_6g_supported; 6723*5113495bSYour Name uint32_t band_capability; 6724*5113495bSYour Name uint8_t sap_max_num_clients; 6725*5113495bSYour Name bool set_country_code_hal_supported; 6726*5113495bSYour Name bool get_valid_channel_supported; 6727*5113495bSYour Name uint8_t supported_dot11mode; 6728*5113495bSYour Name bool sap_wpa3_support; 6729*5113495bSYour Name WMI_HOST_VENDOR1_REQ1_VERSION vendor_req_1_version; 6730*5113495bSYour Name bool roaming_high_cu_roam_trigger; 6731*5113495bSYour Name bool roaming_emergency_trigger; 6732*5113495bSYour Name bool roaming_btm_trihgger; 6733*5113495bSYour Name bool roaming_idle_trigger; 6734*5113495bSYour Name bool roaming_wtc_trigger; 6735*5113495bSYour Name bool roaming_btcoex_trigger; 6736*5113495bSYour Name bool roaming_btw_wpa_wpa2; 6737*5113495bSYour Name bool roaming_manage_chan_list_api; 6738*5113495bSYour Name bool roaming_adaptive_11r; 6739*5113495bSYour Name bool roaming_ctrl_api_get_set; 6740*5113495bSYour Name bool roaming_ctrl_api_reassoc; 6741*5113495bSYour Name bool roaming_ctrl_get_cu; 6742*5113495bSYour Name WMI_HOST_VENDOR1_REQ2_VERSION vendor_req_2_version; 6743*5113495bSYour Name bool assurance_disconnect_reason_api; 6744*5113495bSYour Name bool frame_pcap_log_mgmt; 6745*5113495bSYour Name bool frame_pcap_log_ctrl; 6746*5113495bSYour Name bool frame_pcap_log_data; 6747*5113495bSYour Name bool security_wpa3_sae_h2e; 6748*5113495bSYour Name bool security_wpa3_sae_ft; 6749*5113495bSYour Name bool security_wpa3_enterp_suitb; 6750*5113495bSYour Name bool security_wpa3_enterp_suitb_192bit; 6751*5113495bSYour Name bool security_fills_sha_256; 6752*5113495bSYour Name bool security_fills_sha_384; 6753*5113495bSYour Name bool security_fills_sha_256_FT; 6754*5113495bSYour Name bool security_fills_sha_384_FT; 6755*5113495bSYour Name bool security_enhanced_open; 6756*5113495bSYour Name bool enable_nan; 6757*5113495bSYour Name bool enable_tdls; 6758*5113495bSYour Name bool enable_p2p_6e; 6759*5113495bSYour Name bool enable_tdls_offchannel; 6760*5113495bSYour Name bool enable_tdls_capability_enhance; 6761*5113495bSYour Name uint8_t max_tdls_peers; 6762*5113495bSYour Name bool peer_bigdata_getbssinfo_support; 6763*5113495bSYour Name bool peer_bigdata_assocreject_info_support; 6764*5113495bSYour Name bool peer_getstainfo_support; 6765*5113495bSYour Name uint16_t feature_set_version; 6766*5113495bSYour Name WMI_HOST_NUM_ANTENNAS num_antennas; 6767*5113495bSYour Name bool sta_dump_support; 6768*5113495bSYour Name uint32_t iface_combinations; 6769*5113495bSYour Name }; 6770*5113495bSYour Name #endif 6771*5113495bSYour Name 6772*5113495bSYour Name /** 6773*5113495bSYour Name * struct target_resource_config - Resource config sent from host to target 6774*5113495bSYour Name * abstracted out to include union of both configs 6775*5113495bSYour Name * @num_vdevs: Number vdevs configured 6776*5113495bSYour Name * @num_peers: Number of peers 6777*5113495bSYour Name * @num_active_peers: Number of active peers for peer cache 6778*5113495bSYour Name * @num_offload_peers: Number of offload peers 6779*5113495bSYour Name * @num_offload_reorder_buffs: number of offload reorder buffs 6780*5113495bSYour Name * @num_peer_keys: number of peer keys 6781*5113495bSYour Name * @num_tids: number of tids 6782*5113495bSYour Name * @ast_skid_limit: AST skid limit 6783*5113495bSYour Name * @tx_chain_mask: TX chain mask 6784*5113495bSYour Name * @rx_chain_mask: RX chain mask 6785*5113495bSYour Name * @rx_timeout_pri: RX reorder timeout per AC 6786*5113495bSYour Name * @rx_decap_mode: RX decap mode 6787*5113495bSYour Name * @scan_max_pending_req: Scan mac pending req 6788*5113495bSYour Name * @bmiss_offload_max_vdev: Beacom miss offload max vdevs 6789*5113495bSYour Name * @roam_offload_max_vdev: Roam offload max vdevs 6790*5113495bSYour Name * @roam_offload_max_ap_profiles: roam offload max ap profiles 6791*5113495bSYour Name * @num_mcast_groups: num mcast groups 6792*5113495bSYour Name * @num_mcast_table_elems: number of macst table elems 6793*5113495bSYour Name * @mcast2ucast_mode: mcast enhance mode 6794*5113495bSYour Name * @tx_dbg_log_size: DBG log buf size 6795*5113495bSYour Name * @num_wds_entries: number of WDS entries 6796*5113495bSYour Name * @dma_burst_size: DMA burst size. 6797*5113495bSYour Name * @mac_aggr_delim: Mac aggr delim 6798*5113495bSYour Name * @rx_skip_defrag_timeout_dup_detection_check: Defrag dup check in host? 6799*5113495bSYour Name * @vow_config: vow configuration 6800*5113495bSYour Name * @gtk_offload_max_vdev: Max vdevs for GTK offload 6801*5113495bSYour Name * @num_msdu_desc: Number of msdu desc 6802*5113495bSYour Name * @max_frag_entries: Max frag entries 6803*5113495bSYour Name * @scheduler_params: 6804*5113495bSYour Name * @agile_capability: Target Agile Capability 6805*5113495bSYour Name * End common 6806*5113495bSYour Name * @enable_pci_gen: To enable pci gen switch 6807*5113495bSYour Name * @max_peer_ext_stats: Max peer EXT stats 6808*5113495bSYour Name * @smart_ant_cap: Smart antenna capabilities 6809*5113495bSYour Name * @BK_Minfree: BIN configuration for BK traffic 6810*5113495bSYour Name * @BE_Minfree: BIN configuration for BE traffic 6811*5113495bSYour Name * @VI_Minfree: BIN configuration for VI traffic 6812*5113495bSYour Name * @VO_Minfree: BIN configuration for VO traffic 6813*5113495bSYour Name * @rx_batchmode: RX batch mode 6814*5113495bSYour Name * @tt_support: Thermal throttling support 6815*5113495bSYour Name * @atf_config: ATF config 6816*5113495bSYour Name * @mgmt_comp_evt_bundle_support: bundle support required for mgmt complete evt 6817*5113495bSYour Name * @tx_msdu_new_partition_id_support: new partiition id support for tx msdu 6818*5113495bSYour Name * @new_htt_msg_format: 6819*5113495bSYour Name * @peer_unmap_conf_support: peer unmap conf support in fw 6820*5113495bSYour Name * @pktcapture_support: 6821*5113495bSYour Name * @iphdr_pad_config: ipheader pad config 6822*5113495bSYour Name * @qwrap_config: Qwrap configuration 6823*5113495bSYour Name * @alloc_frag_desc_for_data_pkt: Frag desc for data 6824*5113495bSYour Name * Added in MCL 6825*5113495bSYour Name * @num_tdls_vdevs: 6826*5113495bSYour Name * @num_tdls_conn_table_entries: 6827*5113495bSYour Name * @beacon_tx_offload_max_vdev: 6828*5113495bSYour Name * @num_multicast_filter_entries: 6829*5113495bSYour Name * @num_wow_filters: 6830*5113495bSYour Name * @num_keep_alive_pattern: 6831*5113495bSYour Name * @keep_alive_pattern_size: 6832*5113495bSYour Name * @max_tdls_concurrent_sleep_sta: 6833*5113495bSYour Name * @max_tdls_concurrent_buffer_sta: 6834*5113495bSYour Name * @wmi_send_separate: 6835*5113495bSYour Name * @num_ocb_vdevs: 6836*5113495bSYour Name * @num_ocb_channels: 6837*5113495bSYour Name * @num_ocb_schedules: 6838*5113495bSYour Name * @num_packet_filters: maximum number of packet filter rules to support 6839*5113495bSYour Name * @num_max_sta_vdevs: maximum number of concurrent station vdevs to support 6840*5113495bSYour Name * @num_ns_ext_tuples_cfg: 6841*5113495bSYour Name * @apf_instruction_size: 6842*5113495bSYour Name * @max_bssid_rx_filters: 6843*5113495bSYour Name * @use_pdev_id: 6844*5113495bSYour Name * @max_num_dbs_scan_duty_cycle: max dbs can duty cycle value 6845*5113495bSYour Name * @cce_disable: disable cce component 6846*5113495bSYour Name * @peer_map_unmap_v2: peer_map_unmap_version: configure peer map/unmap version 6847*5113495bSYour Name * @peer_map_unmap_version: 6848*5113495bSYour Name * @twt_ap_pdev_count: Number of MAC on which AP TWT feature is supported 6849*5113495bSYour Name * @twt_ap_sta_count: Max no of STA with which TWT sessions can be formed 6850*5113495bSYour Name * by the AP 6851*5113495bSYour Name * @max_bssid_indicator: max number of MBSS VAPs 6852*5113495bSYour Name * @eapol_minrate_set: 6853*5113495bSYour Name * @eapol_minrate_ac_set: 6854*5113495bSYour Name * @tstamp64_en: 6855*5113495bSYour Name * @three_way_coex_config_legacy_en: enable three way coex legacy feature 6856*5113495bSYour Name * @max_num_group_keys: max number of group keys supported for VLAN 6857*5113495bSYour Name * @re_ul_resp: enable 11ax UL response feature (UL-OFDMA) for repeater 6858*5113495bSYour Name * @ipa_disable: disable IPA feature 6859*5113495bSYour Name * @ast_1_valid_mask_enable: mask to enable ast index 1 6860*5113495bSYour Name * @ast_2_valid_mask_enable: mask to enable ast index 2 6861*5113495bSYour Name * @ast_3_valid_mask_enable: mask to enable ast index 3 6862*5113495bSYour Name * @ast_0_flow_mask_enable: mask to enable flow support for ast index 0 6863*5113495bSYour Name * @ast_1_flow_mask_enable: mask to enable flow support for ast index 1 6864*5113495bSYour Name * @ast_2_flow_mask_enable: mask to enable flow support for ast index 2 6865*5113495bSYour Name * @ast_3_flow_mask_enable: mask to enable flow support for ast index 3 6866*5113495bSYour Name * @ast_tid_high_mask_enable: enable tid valid mask for high priority flow 6867*5113495bSYour Name * @ast_tid_low_mask_enable: enable tid valid mask for low priority flow 6868*5113495bSYour Name * @nan_separate_iface_support: Separate iface creation for NAN 6869*5113495bSYour Name * @time_sync_ftm: enable ftm based time sync 6870*5113495bSYour Name * @is_reg_cc_ext_event_supported: Flag to indicate if reg_cc_ext is supported 6871*5113495bSYour Name * @is_host_dfs_320mhz_bangradar_supported: Flag to indicate dfs 320 supported 6872*5113495bSYour Name * @max_rnr_neighbours: Max supported RNR neighbors in multisoc APs 6873*5113495bSYour Name * @ema_max_vap_cnt: Number of maximum EMA tx-vaps at any instance of time 6874*5113495bSYour Name * @ema_max_profile_period: Maximum EMA profile periodicity on any pdev 6875*5113495bSYour Name * @max_ndp_sessions: Max ndp sessions support 6876*5113495bSYour Name * @max_ndi: max number of ndi host supports 6877*5113495bSYour Name * @carrier_vow_optimization: configure vow-optimization for carrier-usecase 6878*5113495bSYour Name * @is_sap_connected_d3wow_enabled: is sap d3wow with connected client supported 6879*5113495bSYour Name * @is_go_connected_d3wow_enabled: is go d3wow with connected client supported 6880*5113495bSYour Name * @sae_eapol_offload: 6881*5113495bSYour Name * @dynamic_pcie_gen_speed_change: is dynamic pcie gen speed change enabled 6882*5113495bSYour Name * @twt_ack_support_cap: 6883*5113495bSYour Name * @ema_init_config: 6884*5113495bSYour Name * @target_cap_flags: 6885*5113495bSYour Name * @is_6ghz_sp_pwrmode_supp_enabled: Indicates whether AP is capable of 6886*5113495bSYour Name * operating in SP Power mode in 6GHz. 6887*5113495bSYour Name * 0 - AP can operate in non-SP power mode. 6888*5113495bSYour Name * Eg: LPI mode 6889*5113495bSYour Name * 1 - AP can operate in all power modes, 6890*5113495bSYour Name * inclusive of SP power mode. 6891*5113495bSYour Name * @afc_timer_check_disable: Disables AFC Timer related checks in FW 6892*5113495bSYour Name * @afc_req_id_check_disable: Disables AFC Request ID check in FW 6893*5113495bSYour Name * @afc_indoor_support: AFC support indoor deployment 6894*5113495bSYour Name * @afc_outdoor_support: AFC support outdoor deployment 6895*5113495bSYour Name * @carrier_profile_config: Configuration for per-carrier profile 6896*5113495bSYour Name * @sawf: 6897*5113495bSYour Name * @reo_qdesc_shared_addr_table_enabled: Reo shared qref enhancement enabled 6898*5113495bSYour Name * @num_max_active_vdevs: max number of active virtual devices (VAPs) to 6899*5113495bSYour Name * support 6900*5113495bSYour Name * @num_max_mlo_link_per_ml_bss: number of max partner links of a ML BSS 6901*5113495bSYour Name * @notify_frame_support: capability to mark notify frames from host 6902*5113495bSYour Name * @dp_peer_meta_data_ver: datapath peer meta data version flag 6903*5113495bSYour Name * @tx_ilp_enable: capability to support TX ILP from host 6904*5113495bSYour Name * @rf_path: Indicates RF path 0 primary, 1 secondary 6905*5113495bSYour Name * @fw_ast_indication_disable: Disable AST indication 6906*5113495bSYour Name * @is_full_bw_nol_supported: Is full bandwidth needed to put to NOL 6907*5113495bSYour Name */ 6908*5113495bSYour Name typedef struct { 6909*5113495bSYour Name uint32_t num_vdevs; 6910*5113495bSYour Name uint32_t num_peers; 6911*5113495bSYour Name uint32_t num_active_peers; 6912*5113495bSYour Name uint32_t num_offload_peers; 6913*5113495bSYour Name uint32_t num_offload_reorder_buffs; 6914*5113495bSYour Name uint32_t num_peer_keys; 6915*5113495bSYour Name uint32_t num_tids; 6916*5113495bSYour Name uint32_t ast_skid_limit; 6917*5113495bSYour Name uint32_t tx_chain_mask; 6918*5113495bSYour Name uint32_t rx_chain_mask; 6919*5113495bSYour Name uint32_t rx_timeout_pri[4]; 6920*5113495bSYour Name uint32_t rx_decap_mode; 6921*5113495bSYour Name uint32_t scan_max_pending_req; 6922*5113495bSYour Name uint32_t bmiss_offload_max_vdev; 6923*5113495bSYour Name uint32_t roam_offload_max_vdev; 6924*5113495bSYour Name uint32_t roam_offload_max_ap_profiles; 6925*5113495bSYour Name uint32_t num_mcast_groups; 6926*5113495bSYour Name uint32_t num_mcast_table_elems; 6927*5113495bSYour Name uint32_t mcast2ucast_mode; 6928*5113495bSYour Name uint32_t tx_dbg_log_size; 6929*5113495bSYour Name uint32_t num_wds_entries; 6930*5113495bSYour Name uint32_t dma_burst_size; 6931*5113495bSYour Name uint32_t mac_aggr_delim; 6932*5113495bSYour Name uint32_t rx_skip_defrag_timeout_dup_detection_check; 6933*5113495bSYour Name uint32_t vow_config; 6934*5113495bSYour Name uint32_t gtk_offload_max_vdev; 6935*5113495bSYour Name uint32_t num_msdu_desc; /* Number of msdu desc */ 6936*5113495bSYour Name uint32_t max_frag_entries; 6937*5113495bSYour Name uint32_t scheduler_params; 6938*5113495bSYour Name uint32_t agile_capability; 6939*5113495bSYour Name uint32_t enable_pci_gen; 6940*5113495bSYour Name /* End common */ 6941*5113495bSYour Name 6942*5113495bSYour Name /* Added for Beeliner */ 6943*5113495bSYour Name uint32_t max_peer_ext_stats; 6944*5113495bSYour Name uint32_t smart_ant_cap; 6945*5113495bSYour Name uint32_t BK_Minfree; 6946*5113495bSYour Name uint32_t BE_Minfree; 6947*5113495bSYour Name uint32_t VI_Minfree; 6948*5113495bSYour Name uint32_t VO_Minfree; 6949*5113495bSYour Name uint32_t rx_batchmode; 6950*5113495bSYour Name uint32_t tt_support; 6951*5113495bSYour Name uint32_t atf_config:1, 6952*5113495bSYour Name mgmt_comp_evt_bundle_support:1, 6953*5113495bSYour Name tx_msdu_new_partition_id_support:1, 6954*5113495bSYour Name new_htt_msg_format:1, 6955*5113495bSYour Name peer_unmap_conf_support:1, 6956*5113495bSYour Name pktcapture_support:1; 6957*5113495bSYour Name uint32_t iphdr_pad_config; 6958*5113495bSYour Name uint32_t 6959*5113495bSYour Name qwrap_config:16, 6960*5113495bSYour Name alloc_frag_desc_for_data_pkt:16; 6961*5113495bSYour Name 6962*5113495bSYour Name /* Added in MCL */ 6963*5113495bSYour Name uint32_t num_tdls_vdevs; 6964*5113495bSYour Name uint32_t num_tdls_conn_table_entries; 6965*5113495bSYour Name uint32_t beacon_tx_offload_max_vdev; 6966*5113495bSYour Name uint32_t num_multicast_filter_entries; 6967*5113495bSYour Name uint32_t num_wow_filters; 6968*5113495bSYour Name uint32_t num_keep_alive_pattern; 6969*5113495bSYour Name uint32_t keep_alive_pattern_size; 6970*5113495bSYour Name uint32_t max_tdls_concurrent_sleep_sta; 6971*5113495bSYour Name uint32_t max_tdls_concurrent_buffer_sta; 6972*5113495bSYour Name uint32_t wmi_send_separate; 6973*5113495bSYour Name uint32_t num_ocb_vdevs; 6974*5113495bSYour Name uint32_t num_ocb_channels; 6975*5113495bSYour Name uint32_t num_ocb_schedules; 6976*5113495bSYour Name uint32_t num_packet_filters; 6977*5113495bSYour Name uint32_t num_max_sta_vdevs; 6978*5113495bSYour Name uint32_t num_ns_ext_tuples_cfg; 6979*5113495bSYour Name uint32_t apf_instruction_size; 6980*5113495bSYour Name uint32_t max_bssid_rx_filters; 6981*5113495bSYour Name uint32_t use_pdev_id; 6982*5113495bSYour Name uint32_t max_num_dbs_scan_duty_cycle; 6983*5113495bSYour Name bool cce_disable; 6984*5113495bSYour Name union { 6985*5113495bSYour Name bool peer_map_unmap_v2; 6986*5113495bSYour Name uint8_t peer_map_unmap_version; 6987*5113495bSYour Name }; 6988*5113495bSYour Name uint32_t twt_ap_pdev_count; 6989*5113495bSYour Name uint32_t twt_ap_sta_count; 6990*5113495bSYour Name uint32_t max_bssid_indicator; 6991*5113495bSYour Name uint32_t eapol_minrate_set:1, 6992*5113495bSYour Name eapol_minrate_ac_set:2; 6993*5113495bSYour Name bool tstamp64_en; 6994*5113495bSYour Name bool three_way_coex_config_legacy_en; 6995*5113495bSYour Name uint32_t max_num_group_keys; 6996*5113495bSYour Name uint32_t re_ul_resp; 6997*5113495bSYour Name bool ipa_disable; 6998*5113495bSYour Name uint32_t ast_1_valid_mask_enable:1, 6999*5113495bSYour Name ast_2_valid_mask_enable:1, 7000*5113495bSYour Name ast_3_valid_mask_enable:1; 7001*5113495bSYour Name uint32_t ast_0_flow_mask_enable:4, 7002*5113495bSYour Name ast_1_flow_mask_enable:4, 7003*5113495bSYour Name ast_2_flow_mask_enable:4, 7004*5113495bSYour Name ast_3_flow_mask_enable:4, 7005*5113495bSYour Name ast_tid_high_mask_enable:8, 7006*5113495bSYour Name ast_tid_low_mask_enable:8; 7007*5113495bSYour Name bool nan_separate_iface_support; 7008*5113495bSYour Name bool time_sync_ftm; 7009*5113495bSYour Name bool is_reg_cc_ext_event_supported; 7010*5113495bSYour Name bool is_host_dfs_320mhz_bangradar_supported; 7011*5113495bSYour Name uint32_t max_rnr_neighbours; 7012*5113495bSYour Name uint32_t ema_max_vap_cnt; 7013*5113495bSYour Name uint32_t ema_max_profile_period; 7014*5113495bSYour Name uint32_t max_ndp_sessions; 7015*5113495bSYour Name uint32_t max_ndi; 7016*5113495bSYour Name bool carrier_vow_optimization; 7017*5113495bSYour Name uint32_t is_sap_connected_d3wow_enabled; 7018*5113495bSYour Name uint32_t is_go_connected_d3wow_enabled; 7019*5113495bSYour Name bool sae_eapol_offload; 7020*5113495bSYour Name bool dynamic_pcie_gen_speed_change; 7021*5113495bSYour Name bool twt_ack_support_cap; 7022*5113495bSYour Name uint32_t ema_init_config; 7023*5113495bSYour Name uint32_t target_cap_flags; 7024*5113495bSYour Name bool is_6ghz_sp_pwrmode_supp_enabled; 7025*5113495bSYour Name bool afc_timer_check_disable; 7026*5113495bSYour Name bool afc_req_id_check_disable; 7027*5113495bSYour Name bool afc_indoor_support; 7028*5113495bSYour Name bool afc_outdoor_support; 7029*5113495bSYour Name uint32_t carrier_profile_config; 7030*5113495bSYour Name bool sawf; 7031*5113495bSYour Name bool reo_qdesc_shared_addr_table_enabled; 7032*5113495bSYour Name uint32_t num_max_active_vdevs; 7033*5113495bSYour Name uint32_t num_max_mlo_link_per_ml_bss; 7034*5113495bSYour Name uint8_t notify_frame_support; 7035*5113495bSYour Name uint8_t dp_peer_meta_data_ver; 7036*5113495bSYour Name #ifdef DP_TX_PACKET_INSPECT_FOR_ILP 7037*5113495bSYour Name uint8_t tx_ilp_enable; 7038*5113495bSYour Name #endif 7039*5113495bSYour Name bool rf_path; 7040*5113495bSYour Name bool fw_ast_indication_disable; 7041*5113495bSYour Name bool is_full_bw_nol_supported; 7042*5113495bSYour Name } target_resource_config; 7043*5113495bSYour Name 7044*5113495bSYour Name /** 7045*5113495bSYour Name * enum WMI_HOST_START_EVENT_PARAM - Enum replicated for host abstraction 7046*5113495bSYour Name * with FW 7047*5113495bSYour Name * @WMI_HOST_VDEV_START_RESP_EVENT: Event response of START CMD 7048*5113495bSYour Name * @WMI_HOST_VDEV_RESTART_RESP_EVENT: Event response of RESTART CMD 7049*5113495bSYour Name */ 7050*5113495bSYour Name typedef enum { 7051*5113495bSYour Name /* Event response of START CMD */ 7052*5113495bSYour Name WMI_HOST_VDEV_START_RESP_EVENT = 0, 7053*5113495bSYour Name /* Event response of RESTART CMD */ 7054*5113495bSYour Name WMI_HOST_VDEV_RESTART_RESP_EVENT, 7055*5113495bSYour Name } WMI_HOST_START_EVENT_PARAM; 7056*5113495bSYour Name 7057*5113495bSYour Name /** 7058*5113495bSYour Name * struct wmi_host_roam_event - host roam event param 7059*5113495bSYour Name * @vdev_id: vdev id 7060*5113495bSYour Name * @reason: roam reason 7061*5113495bSYour Name * @rssi: RSSI 7062*5113495bSYour Name */ 7063*5113495bSYour Name typedef struct { 7064*5113495bSYour Name uint32_t vdev_id; 7065*5113495bSYour Name uint32_t reason; 7066*5113495bSYour Name uint32_t rssi; 7067*5113495bSYour Name } wmi_host_roam_event; 7068*5113495bSYour Name 7069*5113495bSYour Name /** 7070*5113495bSYour Name * enum wmi_host_scan_event_type - Scan event type 7071*5113495bSYour Name * @WMI_HOST_SCAN_EVENT_STARTED: 7072*5113495bSYour Name * @WMI_HOST_SCAN_EVENT_COMPLETED: 7073*5113495bSYour Name * @WMI_HOST_SCAN_EVENT_BSS_CHANNEL: 7074*5113495bSYour Name * @WMI_HOST_SCAN_EVENT_FOREIGN_CHANNEL: 7075*5113495bSYour Name * @WMI_HOST_SCAN_EVENT_DEQUEUED: 7076*5113495bSYour Name * @WMI_HOST_SCAN_EVENT_PREEMPTED: 7077*5113495bSYour Name * @WMI_HOST_SCAN_EVENT_START_FAILED: 7078*5113495bSYour Name * @WMI_HOST_SCAN_EVENT_RESTARTED: 7079*5113495bSYour Name * @WMI_HOST_SCAN_EVENT_FOREIGN_CHANNEL_EXIT: 7080*5113495bSYour Name * @WMI_HOST_SCAN_EVENT_INVALID: 7081*5113495bSYour Name * @WMI_HOST_SCAN_EVENT_GPIO_TIMEOUT: 7082*5113495bSYour Name * @WMI_HOST_SCAN_EVENT_MAX: 7083*5113495bSYour Name */ 7084*5113495bSYour Name enum wmi_host_scan_event_type { 7085*5113495bSYour Name WMI_HOST_SCAN_EVENT_STARTED = 0x1, 7086*5113495bSYour Name WMI_HOST_SCAN_EVENT_COMPLETED = 0x2, 7087*5113495bSYour Name WMI_HOST_SCAN_EVENT_BSS_CHANNEL = 0x4, 7088*5113495bSYour Name WMI_HOST_SCAN_EVENT_FOREIGN_CHANNEL = 0x8, 7089*5113495bSYour Name WMI_HOST_SCAN_EVENT_DEQUEUED = 0x10, 7090*5113495bSYour Name WMI_HOST_SCAN_EVENT_PREEMPTED = 0x20, 7091*5113495bSYour Name WMI_HOST_SCAN_EVENT_START_FAILED = 0x40, 7092*5113495bSYour Name WMI_HOST_SCAN_EVENT_RESTARTED = 0x80, 7093*5113495bSYour Name WMI_HOST_SCAN_EVENT_FOREIGN_CHANNEL_EXIT = 0x100, 7094*5113495bSYour Name WMI_HOST_SCAN_EVENT_INVALID = 0x200, 7095*5113495bSYour Name WMI_HOST_SCAN_EVENT_GPIO_TIMEOUT = 0x400, 7096*5113495bSYour Name WMI_HOST_SCAN_EVENT_MAX = 0x8000 7097*5113495bSYour Name }; 7098*5113495bSYour Name 7099*5113495bSYour Name /** 7100*5113495bSYour Name * enum wmi_host_scan_completion_reason - Scan completion event type 7101*5113495bSYour Name * @WMI_HOST_SCAN_REASON_NONE: 7102*5113495bSYour Name * @WMI_HOST_SCAN_REASON_COMPLETED: 7103*5113495bSYour Name * @WMI_HOST_SCAN_REASON_CANCELLED: 7104*5113495bSYour Name * @WMI_HOST_SCAN_REASON_PREEMPTED: 7105*5113495bSYour Name * @WMI_HOST_SCAN_REASON_TIMEDOUT: 7106*5113495bSYour Name * @WMI_HOST_SCAN_REASON_INTERNAL_FAILURE: 7107*5113495bSYour Name * @WMI_HOST_SCAN_REASON_MAX: 7108*5113495bSYour Name */ 7109*5113495bSYour Name enum wmi_host_scan_completion_reason { 7110*5113495bSYour Name WMI_HOST_SCAN_REASON_NONE = 0xFF, 7111*5113495bSYour Name WMI_HOST_SCAN_REASON_COMPLETED = 0, 7112*5113495bSYour Name WMI_HOST_SCAN_REASON_CANCELLED = 1, 7113*5113495bSYour Name WMI_HOST_SCAN_REASON_PREEMPTED = 2, 7114*5113495bSYour Name WMI_HOST_SCAN_REASON_TIMEDOUT = 3, 7115*5113495bSYour Name WMI_HOST_SCAN_REASON_INTERNAL_FAILURE = 4, 7116*5113495bSYour Name WMI_HOST_SCAN_REASON_MAX, 7117*5113495bSYour Name }; 7118*5113495bSYour Name 7119*5113495bSYour Name /** 7120*5113495bSYour Name * struct wmi_host_scan_event - Scan event response from target 7121*5113495bSYour Name * @event: event type 7122*5113495bSYour Name * @reason: Reason for event 7123*5113495bSYour Name * @channel_freq: channel frequency 7124*5113495bSYour Name * @requestor: requestor id 7125*5113495bSYour Name * @scan_id: scan id 7126*5113495bSYour Name * @vdev_id: vdev id 7127*5113495bSYour Name */ 7128*5113495bSYour Name typedef struct { 7129*5113495bSYour Name uint32_t event; 7130*5113495bSYour Name uint32_t reason; 7131*5113495bSYour Name uint32_t channel_freq; 7132*5113495bSYour Name uint32_t requestor; 7133*5113495bSYour Name uint32_t scan_id; 7134*5113495bSYour Name uint32_t vdev_id; 7135*5113495bSYour Name } wmi_host_scan_event; 7136*5113495bSYour Name 7137*5113495bSYour Name /** 7138*5113495bSYour Name * struct wmi_host_pdev_reserve_ast_entry_event - Reserve AST entry 7139*5113495bSYour Name * @result: result 7140*5113495bSYour Name */ 7141*5113495bSYour Name typedef struct { 7142*5113495bSYour Name uint32_t result; 7143*5113495bSYour Name } wmi_host_pdev_reserve_ast_entry_event; 7144*5113495bSYour Name 7145*5113495bSYour Name /** 7146*5113495bSYour Name * struct wmi_host_mcast_ageout_entry - mcast aged-out entry 7147*5113495bSYour Name * @grp_addr: IPv4/6 mcast group addr 7148*5113495bSYour Name * @vdev_id: vdev id 7149*5113495bSYour Name */ 7150*5113495bSYour Name typedef struct { 7151*5113495bSYour Name uint8_t grp_addr[16]; 7152*5113495bSYour Name uint32_t vdev_id; 7153*5113495bSYour Name } wmi_host_mcast_ageout_entry; 7154*5113495bSYour Name 7155*5113495bSYour Name /** 7156*5113495bSYour Name * struct wmi_host_mcast_list_ageout_event - List of mcast entry aged-out 7157*5113495bSYour Name * @num_entry: Number of mcast entries timed-out 7158*5113495bSYour Name * @entry: List of wmi_host_mcast_ageout_entry 7159*5113495bSYour Name */ 7160*5113495bSYour Name typedef struct { 7161*5113495bSYour Name uint32_t num_entry; 7162*5113495bSYour Name QDF_FLEX_ARRAY(wmi_host_mcast_ageout_entry, entry); 7163*5113495bSYour Name } wmi_host_mcast_list_ageout_event; 7164*5113495bSYour Name 7165*5113495bSYour Name /** 7166*5113495bSYour Name * enum wmi_host_pdev_tpc_event_offset: offsets of TPC events 7167*5113495bSYour Name * @WMI_HOST_TX_POWER_MAX: offset of max tx power 7168*5113495bSYour Name * @WMI_HOST_TX_POWER_MIN: offset of min tx power 7169*5113495bSYour Name * @WMI_HOST_TX_POWER_LEN: size of tpc values 7170*5113495bSYour Name */ 7171*5113495bSYour Name enum wmi_host_pdev_tpc_event_offset { 7172*5113495bSYour Name WMI_HOST_TX_POWER_MAX, 7173*5113495bSYour Name WMI_HOST_TX_POWER_MIN, 7174*5113495bSYour Name WMI_HOST_TX_POWER_LEN, 7175*5113495bSYour Name }; 7176*5113495bSYour Name 7177*5113495bSYour Name /** 7178*5113495bSYour Name * struct wmi_host_pdev_generic_buffer_event 7179*5113495bSYour Name * @buf_type: Buffer type 7180*5113495bSYour Name * @frag_id: Frag id 7181*5113495bSYour Name * @more_frag: more frags pending 7182*5113495bSYour Name * @buf_len: buffer length 7183*5113495bSYour Name * @buf_info: variable length buffer 7184*5113495bSYour Name */ 7185*5113495bSYour Name typedef struct { 7186*5113495bSYour Name uint32_t buf_type; 7187*5113495bSYour Name uint32_t frag_id; 7188*5113495bSYour Name uint32_t more_frag; 7189*5113495bSYour Name uint32_t buf_len; 7190*5113495bSYour Name QDF_FLEX_ARRAY(uint32_t, buf_info); 7191*5113495bSYour Name } wmi_host_pdev_generic_buffer_event; 7192*5113495bSYour Name 7193*5113495bSYour Name /** 7194*5113495bSYour Name * enum WMI_HOST_BUFFER_TYPE - Enum for host buffer event 7195*5113495bSYour Name * @WMI_HOST_BUFFER_TYPE_RATEPWR_TABLE: 7196*5113495bSYour Name * @WMI_HOST_BUFFER_TYPE_CTL_TABLE: 7197*5113495bSYour Name */ 7198*5113495bSYour Name enum WMI_HOST_BUFFER_TYPE { 7199*5113495bSYour Name WMI_HOST_BUFFER_TYPE_RATEPWR_TABLE, 7200*5113495bSYour Name WMI_HOST_BUFFER_TYPE_CTL_TABLE, 7201*5113495bSYour Name }; 7202*5113495bSYour Name 7203*5113495bSYour Name /** 7204*5113495bSYour Name * enum WMI_HOST_TPC_CONFIG_EVENT_FLAG - Enums for TPC event 7205*5113495bSYour Name * @WMI_HOST_TPC_CONFIG_EVENT_FLAG_TABLE_CDD: 7206*5113495bSYour Name * @WMI_HOST_TPC_CONFIG_EVENT_FLAG_TABLE_STBC: 7207*5113495bSYour Name * @WMI_HOST_TPC_CONFIG_EVENT_FLAG_TABLE_TXBF: 7208*5113495bSYour Name */ 7209*5113495bSYour Name typedef enum { 7210*5113495bSYour Name WMI_HOST_TPC_CONFIG_EVENT_FLAG_TABLE_CDD = 0x1, 7211*5113495bSYour Name WMI_HOST_TPC_CONFIG_EVENT_FLAG_TABLE_STBC = 0x2, 7212*5113495bSYour Name WMI_HOST_TPC_CONFIG_EVENT_FLAG_TABLE_TXBF = 0x4, 7213*5113495bSYour Name } WMI_HOST_TPC_CONFIG_EVENT_FLAG; 7214*5113495bSYour Name 7215*5113495bSYour Name /** 7216*5113495bSYour Name * enum WMI_HOST_MU_ALGO_TYPE - Medium Utilization evaluation algorithms 7217*5113495bSYour Name * These algorithms can be complementary rather than exclusive. 7218*5113495bSYour Name * @WMI_HOST_MU_BASIC_ALGO: 7219*5113495bSYour Name * @WMI_HOST_MU_PER_BSSID_ALGO: 7220*5113495bSYour Name * @WMI_HOST_MU_HIDDEN_NODE_ALGO: 7221*5113495bSYour Name */ 7222*5113495bSYour Name typedef enum { 7223*5113495bSYour Name WMI_HOST_MU_BASIC_ALGO = 0x1, 7224*5113495bSYour Name WMI_HOST_MU_PER_BSSID_ALGO = 0x2, 7225*5113495bSYour Name WMI_HOST_MU_HIDDEN_NODE_ALGO = 0x4, 7226*5113495bSYour Name } WMI_HOST_MU_ALGO_TYPE; 7227*5113495bSYour Name /* max MU alg combinations supported by target */ 7228*5113495bSYour Name #define WMI_HOST_MU_MAX_ALGO_TYPE 3 7229*5113495bSYour Name 7230*5113495bSYour Name /** 7231*5113495bSYour Name * struct wmi_host_mu_db_entry 7232*5113495bSYour Name * @entry_type: 0=AP, 1=STA, 2=Small Cell(SC) 7233*5113495bSYour Name * @bssid_mac_addr: Transmitter MAC if entry is WiFi node. PLMNID if SC 7234*5113495bSYour Name * @tx_addr: Transmitter MAC if entry is WiFi node. PLMNID if SC 7235*5113495bSYour Name * @avg_duration_us: Avg. duration for which node was transmitting 7236*5113495bSYour Name * @avg_rssi: Avg. RSSI of all TX packets by node. Unit dBm 7237*5113495bSYour Name * @mu_percent: % medium utilization by node 7238*5113495bSYour Name */ 7239*5113495bSYour Name typedef struct { 7240*5113495bSYour Name uint32_t entry_type; 7241*5113495bSYour Name wmi_host_mac_addr bssid_mac_addr; 7242*5113495bSYour Name wmi_host_mac_addr tx_addr; 7243*5113495bSYour Name uint32_t avg_duration_us; 7244*5113495bSYour Name uint32_t avg_rssi; 7245*5113495bSYour Name uint32_t mu_percent; 7246*5113495bSYour Name } wmi_host_mu_db_entry; 7247*5113495bSYour Name 7248*5113495bSYour Name /** 7249*5113495bSYour Name * struct wmi_host_mu_report_event - WMI_MU_REPORT_EVENTID 7250*5113495bSYour Name * @mu_request_id: request id 7251*5113495bSYour Name * @status_reason: MU_STATUS_REASON 7252*5113495bSYour Name * @total_mu: MU_ALG_TYPE combinations 7253*5113495bSYour Name * @num_active_bssid: number of active bssid 7254*5113495bSYour Name * @hidden_node_mu : hidden node algo MU per bin 7255*5113495bSYour Name * @num_TA_entries : No. of entries found in MU db report 7256*5113495bSYour Name */ 7257*5113495bSYour Name typedef struct { 7258*5113495bSYour Name uint32_t mu_request_id; 7259*5113495bSYour Name uint32_t status_reason; 7260*5113495bSYour Name uint32_t total_mu[WMI_HOST_MU_MAX_ALGO_TYPE]; 7261*5113495bSYour Name uint32_t num_active_bssid; 7262*5113495bSYour Name uint32_t hidden_node_mu[LTEU_MAX_BINS]; 7263*5113495bSYour Name uint32_t num_TA_entries; 7264*5113495bSYour Name } wmi_host_mu_report_event; 7265*5113495bSYour Name 7266*5113495bSYour Name #define WMI_HOST_TIM_BITMAP_ARRAY_SIZE 17 7267*5113495bSYour Name 7268*5113495bSYour Name /** 7269*5113495bSYour Name * struct wmi_host_p2p_noa_descriptor - NoA desc in SWBA event 7270*5113495bSYour Name * @type_count: Absence count 7271*5113495bSYour Name * @duration: NoA duration 7272*5113495bSYour Name * @interval: NoA interval 7273*5113495bSYour Name * @start_time: start time 7274*5113495bSYour Name */ 7275*5113495bSYour Name typedef struct { 7276*5113495bSYour Name uint32_t type_count; 7277*5113495bSYour Name uint32_t duration; 7278*5113495bSYour Name uint32_t interval; 7279*5113495bSYour Name uint32_t start_time; 7280*5113495bSYour Name } wmi_host_p2p_noa_descriptor; 7281*5113495bSYour Name 7282*5113495bSYour Name /* Maximum CCK, OFDM rates supported */ 7283*5113495bSYour Name #define WMI_SA_MAX_CCK_OFDM_RATES 12 7284*5113495bSYour Name /* Maximum MCS rates supported; 4 rates in each dword */ 7285*5113495bSYour Name /* Maximum MCS ratecodes with 11ax */ 7286*5113495bSYour Name #define WMI_SA_MAX_MCS_RATES 96 7287*5113495bSYour Name /* Maximum ratecode per BW supported legacy, 20, 40, 80, 160 and 320 MHz */ 7288*5113495bSYour Name #define WMI_SA_MAX_RATE_COUNTERS 6 7289*5113495bSYour Name /* Maximum rate series used for transmission */ 7290*5113495bSYour Name #define SA_MAX_RATE_SERIES 2 7291*5113495bSYour Name 7292*5113495bSYour Name #define SA_MAX_LEGACY_RATE_DWORDS 3 7293*5113495bSYour Name #define SA_MAX_HT_RATE_DWORDS 10 7294*5113495bSYour Name #define SA_BYTES_IN_DWORD 4 7295*5113495bSYour Name #define SA_MASK_BYTE 0xff 7296*5113495bSYour Name #define SA_MASK_BYTE3 0xff0000 7297*5113495bSYour Name 7298*5113495bSYour Name /* Support 11ax 11bit ratecode */ 7299*5113495bSYour Name #define SA_MASK_RCODE 0x7ff 7300*5113495bSYour Name #define SA_WORD_BITS_LEN 16 7301*5113495bSYour Name #define SA_WORDS_IN_DWORD 2 7302*5113495bSYour Name #define SA_MAX_LEGACY_RATE_WORDS 6 7303*5113495bSYour Name #define SA_MAX_HT_RATE_WORDS 48 7304*5113495bSYour Name 7305*5113495bSYour Name #define SA_INVALID_PARAM_VALUE 0xffff 7306*5113495bSYour Name /* Mask to check PER threshold */ 7307*5113495bSYour Name #define SA_MASK_PER_TH 0xff 7308*5113495bSYour Name /* Mask to check Minimum packets for Smart Antenna Training */ 7309*5113495bSYour Name #define SA_MASK_MIN_PKTS 0xffff 7310*5113495bSYour Name 7311*5113495bSYour Name /** 7312*5113495bSYour Name * struct wmi_sa_rate_cap - smart antenna rat capabilities 7313*5113495bSYour Name * @pdev_id: pdev_id 7314*5113495bSYour Name * @ratecode_legacy: Rate code array for CCK OFDM 7315*5113495bSYour Name * @ratecode_20: Rate code array for 20 MHz BW 7316*5113495bSYour Name * @ratecode_40: Rate code array for 40 MHz BW 7317*5113495bSYour Name * @ratecode_80: Rate code array for 80 MHz BW 7318*5113495bSYour Name * @ratecode_160: Rate code array for 160 MHz BW 7319*5113495bSYour Name * @ratecode_320: Rate code array for 320 MHz BW 7320*5113495bSYour Name * @ratecount: Max Rate count for each mode 7321*5113495bSYour Name */ 7322*5113495bSYour Name typedef struct { 7323*5113495bSYour Name uint16_t ratecode_legacy[WMI_SA_MAX_CCK_OFDM_RATES]; 7324*5113495bSYour Name uint16_t ratecode_20[WMI_SA_MAX_MCS_RATES]; 7325*5113495bSYour Name uint16_t ratecode_40[WMI_SA_MAX_MCS_RATES]; 7326*5113495bSYour Name uint16_t ratecode_80[WMI_SA_MAX_MCS_RATES]; 7327*5113495bSYour Name uint16_t ratecode_160[WMI_SA_MAX_MCS_RATES]; 7328*5113495bSYour Name uint16_t ratecode_320[WMI_SA_MAX_MCS_RATES]; 7329*5113495bSYour Name uint8_t ratecount[WMI_SA_MAX_RATE_COUNTERS]; 7330*5113495bSYour Name } wmi_sa_rate_cap; 7331*5113495bSYour Name 7332*5113495bSYour Name /** Preamble types to be used with VDEV fixed rate configuration */ 7333*5113495bSYour Name typedef enum { 7334*5113495bSYour Name WMI_HOST_RATE_PREAMBLE_OFDM, 7335*5113495bSYour Name WMI_HOST_RATE_PREAMBLE_CCK, 7336*5113495bSYour Name WMI_HOST_RATE_PREAMBLE_HT, 7337*5113495bSYour Name WMI_HOST_RATE_PREAMBLE_VHT, 7338*5113495bSYour Name WMI_HOST_RATE_PREAMBLE_HE, 7339*5113495bSYour Name #ifdef WLAN_FEATURE_11BE 7340*5113495bSYour Name WMI_HOST_RATE_PREAMBLE_EHT, 7341*5113495bSYour Name #endif 7342*5113495bSYour Name } WMI_HOST_RATE_PREAMBLE; 7343*5113495bSYour Name 7344*5113495bSYour Name #define WMI_HOST_FIXED_RATE_NONE (0xff) 7345*5113495bSYour Name 7346*5113495bSYour Name /** preablbe long */ 7347*5113495bSYour Name #define WMI_HOST_VDEV_PREAMBLE_LONG 0x1 7348*5113495bSYour Name /** preablbe short */ 7349*5113495bSYour Name #define WMI_HOST_VDEV_PREAMBLE_SHORT 0x2 7350*5113495bSYour Name /** found a better AP */ 7351*5113495bSYour Name #define WMI_HOST_ROAM_REASON_BETTER_AP 0x1 7352*5113495bSYour Name /** beacon miss detected */ 7353*5113495bSYour Name #define WMI_HOST_ROAM_REASON_BMISS 0x2 7354*5113495bSYour Name /** deauth/disassoc received */ 7355*5113495bSYour Name #define WMI_HOST_ROAM_REASON_DEAUTH 0x2 7356*5113495bSYour Name /** connected AP's low rssi condition detected */ 7357*5113495bSYour Name #define WMI_HOST_ROAM_REASON_LOW_RSSI 0x3 7358*5113495bSYour Name /** found another AP that matches SSID and Security profile in 7359*5113495bSYour Name * WMI_ROAM_AP_PROFILE, found during scan triggered upon FINAL_BMISS 7360*5113495bSYour Name */ 7361*5113495bSYour Name #define WMI_HOST_ROAM_REASON_SUITABLE_AP 0x4 7362*5113495bSYour Name /** LFR3.0 roaming failed, indicate the disconnection to host */ 7363*5113495bSYour Name #define WMI_HOST_ROAM_REASON_HO_FAILED 0x5 7364*5113495bSYour Name 7365*5113495bSYour Name /** values for vdev_type */ 7366*5113495bSYour Name #define WMI_HOST_VDEV_TYPE_AP 0x1 7367*5113495bSYour Name #define WMI_HOST_VDEV_TYPE_STA 0x2 7368*5113495bSYour Name #define WMI_HOST_VDEV_TYPE_IBSS 0x3 7369*5113495bSYour Name #define WMI_HOST_VDEV_TYPE_MONITOR 0x4 7370*5113495bSYour Name 7371*5113495bSYour Name /** values for vdev_subtype */ 7372*5113495bSYour Name #define WMI_HOST_VDEV_SUBTYPE_P2P_DEVICE 0x1 7373*5113495bSYour Name #define WMI_HOST_VDEV_SUBTYPE_P2P_CLIENT 0x2 7374*5113495bSYour Name #define WMI_HOST_VDEV_SUBTYPE_P2P_GO 0x3 7375*5113495bSYour Name #define WMI_HOST_VDEV_SUBTYPE_PROXY_STA 0x4 7376*5113495bSYour Name #define WMI_HOST_VDEV_SUBTYPE_MESH 0x5 7377*5113495bSYour Name 7378*5113495bSYour Name #define WMI_HOST_MGMT_TID 17 7379*5113495bSYour Name /* Disable aging & learning */ 7380*5113495bSYour Name #define WMI_HOST_WDS_FLAG_STATIC 0x1 7381*5113495bSYour Name 7382*5113495bSYour Name #ifdef ENABLE_HOST_TO_TARGET_CONVERSION 7383*5113495bSYour Name #define PEER_PARAM(name) WMI_HOST_ ## name 7384*5113495bSYour Name #else 7385*5113495bSYour Name #define PEER_PARAM(name) WMI_HOST_ ## name = WMI_ ## name 7386*5113495bSYour Name #endif /* ENABLE_HOST_TO_TARGET_CONVERSION */ 7387*5113495bSYour Name 7388*5113495bSYour Name /* 7389*5113495bSYour Name * Peer param enum abstracted from target 7390*5113495bSYour Name * @WMI_HOST_PEER_MIMO_PS_STATE: mimo powersave state 7391*5113495bSYour Name * @WMI_HOST_PEER_AMPDU: enable/disable AMPDU . initial value (enabled) 7392*5113495bSYour Name * @WMI_HOST_PEER_AUTHORIZE: authorize/unauthorize peer. 7393*5113495bSYour Name * initial value is unauthorized (0) 7394*5113495bSYour Name * @WMI_HOST_PEER_CHWIDTH: Peer channel bandwidth 7395*5113495bSYour Name * @WMI_HOST_PEER_NSS: peer NSS 7396*5113495bSYour Name * @WMI_HOST_PEER_USE_4ADDR: USE 4 ADDR 7397*5113495bSYour Name * @WMI_HOST_PEER_EXT_STATS_ENABLE: Enable extended peer stats 7398*5113495bSYour Name * NON-TLV special 7399*5113495bSYour Name * @WMI_HOST_PEER_USE_FIXED_PWR: Use FIXED Pwr, 7400*5113495bSYour Name * @WMI_HOST_PEER_PARAM_FIXED_RATE: Set peer fixed rate 7401*5113495bSYour Name * @WMI_HOST_PEER_SET_MU_ALLOWLIST: Allowlist peer TIDs 7402*5113495bSYour Name * @WMI_HOST_PEER_MEMBERSHIP: set group membership status 7403*5113495bSYour Name * @WMI_HOST_PEER_USERPOS: User POS 7404*5113495bSYour Name * @WMI_HOST_PEER_CRIT_PROTO_HINT_ENABLED: Critical Protocol Hint enabled 7405*5113495bSYour Name * @WMI_HOST_PEER_TX_FAIL_CNT_THR: Tx Fail count threshold 7406*5113495bSYour Name * @WMI_HOST_PEER_SET_HW_RETRY_CTS2S: Set hardware retry CTS to self 7407*5113495bSYour Name * @WMI_HOST_PEER_IBSS_ATIM_WINDOW_LENGTH: IBSS ATIM window length 7408*5113495bSYour Name * @WMI_HOST_PEER_PHYMODE: Peer Phymode 7409*5113495bSYour Name * @WMI_HOST_PEER_SET_MAX_TX_RATE: Set MAX Tx rate 7410*5113495bSYour Name * @WMI_HOST_PEER_SET_DEFAULT_ROUTING: Set default Rx routing 7411*5113495bSYour Name * @WMI_HOST_PEER_SET_MIN_TX_RATE: Set Minimum T rate 7412*5113495bSYour Name * @WMI_HOST_PEER_NSS_VHT160: peer NSS for 160Mhz 7413*5113495bSYour Name * @WMI_HOST_PEER_NSS_VHT80_80: peer NSS for 80+80MHz 7414*5113495bSYour Name * @WMI_HOST_PEER_PARAM_SU_TXBF_SOUNDING_INTERVAL: Set SU sounding interval 7415*5113495bSYour Name * @WMI_HOST_PEER_PARAM_MU_TXBF_SOUNDING_INTERVAL: Set MU sounding interval 7416*5113495bSYour Name * @WMI_HOST_PEER_PARAM_TXBF_SOUNDING_ENABLE: Enable sounding interval set 7417*5113495bSYour Name * @WMI_HOST_PEER_PARAM_MU_ENABLE: Enable MU support 7418*5113495bSYour Name * @WMI_HOST_PEER_PARAM_OFDMA_ENABLE: Enable OFDMA support 7419*5113495bSYour Name * @WMI_HOST_PEER_PARAM_ENABLE_FT: Notify FT roam 7420*5113495bSYour Name * @WMI_HOST_PEER_CHWIDTH_PUNCTURE_20MHZ_BITMAP: Peer channel bandwidth and 7421*5113495bSYour Name * puncture bitmap 7422*5113495bSYour Name * @WMI_HOST_PEER_FT_ROAMING_PEER_UPDATE: Reset PN value on 7423*5113495bSYour Name * every roam event 7424*5113495bSYour Name * @WMI_HOST_PEER_PARAM_DMS_SUPPORT: Set DMS capability 7425*5113495bSYour Name */ 7426*5113495bSYour Name enum { 7427*5113495bSYour Name PEER_PARAM(PEER_MIMO_PS_STATE), 7428*5113495bSYour Name PEER_PARAM(PEER_AMPDU), 7429*5113495bSYour Name PEER_PARAM(PEER_AUTHORIZE), 7430*5113495bSYour Name PEER_PARAM(PEER_CHWIDTH), 7431*5113495bSYour Name PEER_PARAM(PEER_NSS), 7432*5113495bSYour Name PEER_PARAM(PEER_USE_4ADDR), 7433*5113495bSYour Name #if defined(WMI_NON_TLV_SUPPORT) || defined(WMI_TLV_AND_NON_TLV_SUPPORT) 7434*5113495bSYour Name PEER_PARAM(PEER_EXT_STATS_ENABLE), 7435*5113495bSYour Name #endif 7436*5113495bSYour Name PEER_PARAM(PEER_USE_FIXED_PWR), 7437*5113495bSYour Name PEER_PARAM(PEER_PARAM_FIXED_RATE), 7438*5113495bSYour Name PEER_PARAM(PEER_SET_MU_ALLOWLIST), 7439*5113495bSYour Name PEER_PARAM(PEER_MEMBERSHIP), 7440*5113495bSYour Name PEER_PARAM(PEER_USERPOS), 7441*5113495bSYour Name PEER_PARAM(PEER_CRIT_PROTO_HINT_ENABLED), 7442*5113495bSYour Name PEER_PARAM(PEER_TX_FAIL_CNT_THR), 7443*5113495bSYour Name PEER_PARAM(PEER_SET_HW_RETRY_CTS2S), 7444*5113495bSYour Name PEER_PARAM(PEER_IBSS_ATIM_WINDOW_LENGTH), 7445*5113495bSYour Name PEER_PARAM(PEER_PHYMODE), 7446*5113495bSYour Name PEER_PARAM(PEER_SET_MAX_TX_RATE), 7447*5113495bSYour Name PEER_PARAM(PEER_SET_DEFAULT_ROUTING), 7448*5113495bSYour Name PEER_PARAM(PEER_SET_MIN_TX_RATE), 7449*5113495bSYour Name PEER_PARAM(PEER_NSS_VHT160), 7450*5113495bSYour Name PEER_PARAM(PEER_NSS_VHT80_80), 7451*5113495bSYour Name PEER_PARAM(PEER_PARAM_SU_TXBF_SOUNDING_INTERVAL), 7452*5113495bSYour Name PEER_PARAM(PEER_PARAM_MU_TXBF_SOUNDING_INTERVAL), 7453*5113495bSYour Name PEER_PARAM(PEER_PARAM_TXBF_SOUNDING_ENABLE), 7454*5113495bSYour Name PEER_PARAM(PEER_PARAM_MU_ENABLE), 7455*5113495bSYour Name PEER_PARAM(PEER_PARAM_OFDMA_ENABLE), 7456*5113495bSYour Name PEER_PARAM(PEER_PARAM_ENABLE_FT), 7457*5113495bSYour Name PEER_PARAM(PEER_CHWIDTH_PUNCTURE_20MHZ_BITMAP), 7458*5113495bSYour Name PEER_PARAM(PEER_FT_ROAMING_PEER_UPDATE), 7459*5113495bSYour Name PEER_PARAM(PEER_PARAM_DMS_SUPPORT), 7460*5113495bSYour Name PEER_PARAM(PEER_PARAM_UL_OFDMA_RTD), 7461*5113495bSYour Name 7462*5113495bSYour Name }; 7463*5113495bSYour Name #define WMI_HOST_PEER_MIMO_PS_NONE 0x0 7464*5113495bSYour Name #define WMI_HOST_PEER_MIMO_PS_STATIC 0x1 7465*5113495bSYour Name #define WMI_HOST_PEER_MIMO_PS_DYNAMIC 0x2 7466*5113495bSYour Name typedef enum { 7467*5113495bSYour Name HOST_PLATFORM_HIGH_PERF, 7468*5113495bSYour Name HOST_PLATFORM_LOW_PERF, 7469*5113495bSYour Name HOST_PLATFORM_LOW_PERF_NO_FETCH, 7470*5113495bSYour Name } HOST_PLATFORM_TYPE; 7471*5113495bSYour Name 7472*5113495bSYour Name enum wmi_host_sta_ps_mode { 7473*5113495bSYour Name /** enable power save for the given STA VDEV */ 7474*5113495bSYour Name WMI_HOST_STA_PS_MODE_DISABLED = 0, 7475*5113495bSYour Name /** disable power save for a given STA VDEV */ 7476*5113495bSYour Name WMI_HOST_STA_PS_MODE_ENABLED = 1, 7477*5113495bSYour Name }; 7478*5113495bSYour Name enum wmi_host_sta_powersave_param { 7479*5113495bSYour Name /** 7480*5113495bSYour Name * Controls how frames are retrievd from AP while STA is sleeping 7481*5113495bSYour Name * 7482*5113495bSYour Name * (see enum wmi_sta_ps_param_rx_wake_policy) 7483*5113495bSYour Name */ 7484*5113495bSYour Name WMI_HOST_STA_PS_PARAM_RX_WAKE_POLICY = 0, 7485*5113495bSYour Name 7486*5113495bSYour Name /** 7487*5113495bSYour Name * The STA will go active after this many TX 7488*5113495bSYour Name * 7489*5113495bSYour Name * (see enum wmi_sta_ps_param_tx_wake_threshold) 7490*5113495bSYour Name */ 7491*5113495bSYour Name WMI_HOST_STA_PS_PARAM_TX_WAKE_THRESHOLD = 1, 7492*5113495bSYour Name 7493*5113495bSYour Name /** 7494*5113495bSYour Name * Number of PS-Poll to send before STA wakes up 7495*5113495bSYour Name * 7496*5113495bSYour Name * (see enum wmi_sta_ps_param_pspoll_count) 7497*5113495bSYour Name * 7498*5113495bSYour Name */ 7499*5113495bSYour Name WMI_HOST_STA_PS_PARAM_PSPOLL_COUNT = 2, 7500*5113495bSYour Name 7501*5113495bSYour Name /** 7502*5113495bSYour Name * TX/RX inactivity time in msec before going to sleep. 7503*5113495bSYour Name * 7504*5113495bSYour Name * The power save SM will monitor tx/rx activity on the VDEV, if no 7505*5113495bSYour Name * activity for the specified msec of the parameter 7506*5113495bSYour Name * the Power save SM will go to sleep. 7507*5113495bSYour Name */ 7508*5113495bSYour Name WMI_HOST_STA_PS_PARAM_INACTIVITY_TIME = 3, 7509*5113495bSYour Name 7510*5113495bSYour Name /** 7511*5113495bSYour Name * Set uapsd configuration. 7512*5113495bSYour Name * 7513*5113495bSYour Name * (see enum wmi_sta_ps_param_uapsd) 7514*5113495bSYour Name */ 7515*5113495bSYour Name WMI_HOST_STA_PS_PARAM_UAPSD = 4, 7516*5113495bSYour Name }; 7517*5113495bSYour Name /* prefix used by scan requestor ids on the host 7518*5113495bSYour Name * replicated here form wmi_unified.h*/ 7519*5113495bSYour Name #define WMI_HOST_P_SCAN_REQUESTOR_ID_PREFIX 0xA000 7520*5113495bSYour Name /* prefix used by scan request ids generated on the host */ 7521*5113495bSYour Name /* host cycles through the lower 12 bits to generate ids */ 7522*5113495bSYour Name #define WMI_HOST_P_SCAN_REQ_ID_PREFIX 0xA000 7523*5113495bSYour Name 7524*5113495bSYour Name #define WMI_HOST_RC_DS_FLAG 0x01 /* Dual stream flag */ 7525*5113495bSYour Name #define WMI_HOST_RC_CW40_FLAG 0x02 /* CW 40 */ 7526*5113495bSYour Name #define WMI_HOST_RC_SGI_FLAG 0x04 /* Short Guard Interval */ 7527*5113495bSYour Name #define WMI_HOST_RC_HT_FLAG 0x08 /* HT */ 7528*5113495bSYour Name #define WMI_HOST_RC_RTSCTS_FLAG 0x10 /* RTS-CTS */ 7529*5113495bSYour Name #define WMI_HOST_RC_TX_STBC_FLAG 0x20 /* TX STBC */ 7530*5113495bSYour Name #define WMI_HOST_RC_RX_STBC_FLAG 0xC0 /* RX STBC ,2 bits */ 7531*5113495bSYour Name #define WMI_HOST_RC_RX_STBC_FLAG_S 6 /* RX STBC ,2 bits */ 7532*5113495bSYour Name #define WMI_HOST_RC_WEP_TKIP_FLAG 0x100 /* WEP/TKIP encryption */ 7533*5113495bSYour Name #define WMI_HOST_RC_TS_FLAG 0x200 /* Three stream flag */ 7534*5113495bSYour Name #define WMI_HOST_RC_UAPSD_FLAG 0x400 /* UAPSD Rate Control */ 7535*5113495bSYour Name 7536*5113495bSYour Name /** HT Capabilities*/ 7537*5113495bSYour Name #define WMI_HOST_HT_CAP_ENABLED 0x0001 /* HT Enabled/ disabled */ 7538*5113495bSYour Name /* Short Guard Interval with HT20 */ 7539*5113495bSYour Name #define WMI_HOST_HT_CAP_HT20_SGI 0x0002 7540*5113495bSYour Name #define WMI_HOST_HT_CAP_DYNAMIC_SMPS 0x0004 /* Dynamic MIMO powersave */ 7541*5113495bSYour Name #define WMI_HOST_HT_CAP_TX_STBC 0x0008 /* B3 TX STBC */ 7542*5113495bSYour Name #define WMI_HOST_HT_CAP_TX_STBC_MASK_SHIFT 3 7543*5113495bSYour Name #define WMI_HOST_HT_CAP_RX_STBC 0x0030 /* B4-B5 RX STBC */ 7544*5113495bSYour Name #define WMI_HOST_HT_CAP_RX_STBC_MASK_SHIFT 4 7545*5113495bSYour Name #define WMI_HOST_HT_CAP_LDPC 0x0040 /* LDPC supported */ 7546*5113495bSYour Name #define WMI_HOST_HT_CAP_L_SIG_TXOP_PROT 0x0080 /* L-SIG TXOP Protection */ 7547*5113495bSYour Name #define WMI_HOST_HT_CAP_MPDU_DENSITY 0x0700 /* MPDU Density */ 7548*5113495bSYour Name #define WMI_HOST_HT_CAP_MPDU_DENSITY_MASK_SHIFT 8 7549*5113495bSYour Name #define WMI_HOST_HT_CAP_HT40_SGI 0x0800 7550*5113495bSYour Name #define WMI_HOST_HT_CAP_RX_LDPC 0x1000 7551*5113495bSYour Name #define WMI_HOST_HT_CAP_TX_LDPC 0x2000 7552*5113495bSYour Name #define WMI_HOST_HT_CAP_IBF_BFER 0x4000 7553*5113495bSYour Name 7554*5113495bSYour Name /* These macros should be used when we wish to advertise STBC support for 7555*5113495bSYour Name * only 1SS or 2SS or 3SS. */ 7556*5113495bSYour Name #define WMI_HOST_HT_CAP_RX_STBC_1SS 0x0010 /* B4-B5 RX STBC */ 7557*5113495bSYour Name #define WMI_HOST_HT_CAP_RX_STBC_2SS 0x0020 /* B4-B5 RX STBC */ 7558*5113495bSYour Name #define WMI_HOST_HT_CAP_RX_STBC_3SS 0x0030 /* B4-B5 RX STBC */ 7559*5113495bSYour Name 7560*5113495bSYour Name 7561*5113495bSYour Name #define WMI_HOST_HT_CAP_DEFAULT_ALL (WMI_HOST_HT_CAP_ENABLED | \ 7562*5113495bSYour Name WMI_HOST_HT_CAP_HT20_SGI | \ 7563*5113495bSYour Name WMI_HOST_HT_CAP_HT40_SGI | \ 7564*5113495bSYour Name WMI_HOST_HT_CAP_TX_STBC | \ 7565*5113495bSYour Name WMI_HOST_HT_CAP_RX_STBC | \ 7566*5113495bSYour Name WMI_HOST_HT_CAP_LDPC) 7567*5113495bSYour Name 7568*5113495bSYour Name /* WMI_HOST_VHT_CAP_* these maps to ieee 802.11ac vht capability information 7569*5113495bSYour Name field. The fields not defined here are not supported, or reserved. 7570*5113495bSYour Name Do not change these masks and if you have to add new one follow the 7571*5113495bSYour Name bitmask as specified by 802.11ac draft. 7572*5113495bSYour Name */ 7573*5113495bSYour Name 7574*5113495bSYour Name #define WMI_HOST_VHT_CAP_MAX_MPDU_LEN_MASK 0x00000003 7575*5113495bSYour Name #define WMI_HOST_VHT_CAP_RX_LDPC 0x00000010 7576*5113495bSYour Name #define WMI_HOST_VHT_CAP_SGI_80MHZ 0x00000020 7577*5113495bSYour Name #define WMI_HOST_VHT_CAP_SGI_160MHZ 0x00000040 7578*5113495bSYour Name #define WMI_HOST_VHT_CAP_TX_STBC 0x00000080 7579*5113495bSYour Name #define WMI_HOST_VHT_CAP_RX_STBC_MASK 0x00000300 7580*5113495bSYour Name #define WMI_HOST_VHT_CAP_RX_STBC_MASK_SHIFT 8 7581*5113495bSYour Name #define WMI_HOST_VHT_CAP_SU_BFER 0x00000800 7582*5113495bSYour Name #define WMI_HOST_VHT_CAP_SU_BFEE 0x00001000 7583*5113495bSYour Name #define WMI_HOST_VHT_CAP_MAX_CS_ANT_MASK 0x0000E000 7584*5113495bSYour Name #define WMI_HOST_VHT_CAP_MAX_CS_ANT_MASK_SHIFT 13 7585*5113495bSYour Name #define WMI_HOST_VHT_CAP_MAX_SND_DIM_MASK 0x00070000 7586*5113495bSYour Name #define WMI_HOST_VHT_CAP_MAX_SND_DIM_MASK_SHIFT 16 7587*5113495bSYour Name #define WMI_HOST_VHT_CAP_MU_BFER 0x00080000 7588*5113495bSYour Name #define WMI_HOST_VHT_CAP_MU_BFEE 0x00100000 7589*5113495bSYour Name #define WMI_HOST_VHT_CAP_MAX_AMPDU_LEN_EXP 0x03800000 7590*5113495bSYour Name #define WMI_HOST_VHT_CAP_MAX_AMPDU_LEN_EXP_SHIT 23 7591*5113495bSYour Name #define WMI_HOST_VHT_CAP_RX_FIXED_ANT 0x10000000 7592*5113495bSYour Name #define WMI_HOST_VHT_CAP_TX_FIXED_ANT 0x20000000 7593*5113495bSYour Name 7594*5113495bSYour Name #define WMI_HOST_VHT_CAP_MAX_MPDU_LEN_11454 0x00000002 7595*5113495bSYour Name 7596*5113495bSYour Name /* These macros should be used when we wish to advertise STBC support for 7597*5113495bSYour Name * only 1SS or 2SS or 3SS. */ 7598*5113495bSYour Name #define WMI_HOST_VHT_CAP_RX_STBC_1SS 0x00000100 7599*5113495bSYour Name #define WMI_HOST_VHT_CAP_RX_STBC_2SS 0x00000200 7600*5113495bSYour Name #define WMI_HOST_VHT_CAP_RX_STBC_3SS 0x00000300 7601*5113495bSYour Name 7602*5113495bSYour Name #define WMI_HOST_VHT_CAP_DEFAULT_ALL (WMI_HOST_VHT_CAP_MAX_MPDU_LEN_11454 | \ 7603*5113495bSYour Name WMI_HOST_VHT_CAP_SGI_80MHZ | \ 7604*5113495bSYour Name WMI_HOST_VHT_CAP_TX_STBC | \ 7605*5113495bSYour Name WMI_HOST_VHT_CAP_RX_STBC_MASK | \ 7606*5113495bSYour Name WMI_HOST_VHT_CAP_RX_LDPC | \ 7607*5113495bSYour Name WMI_HOST_VHT_CAP_MAX_AMPDU_LEN_EXP | \ 7608*5113495bSYour Name WMI_HOST_VHT_CAP_RX_FIXED_ANT | \ 7609*5113495bSYour Name WMI_HOST_VHT_CAP_TX_FIXED_ANT) 7610*5113495bSYour Name 7611*5113495bSYour Name /* Interested readers refer to Rx/Tx MCS Map definition as defined in 7612*5113495bSYour Name 802.11ac 7613*5113495bSYour Name */ 7614*5113495bSYour Name #define WMI_HOST_VHT_MAX_MCS_4_SS_MASK(r, ss) ((3 & (r)) << (((ss) - 1) << 1)) 7615*5113495bSYour Name #define WMI_HOST_VHT_MAX_SUPP_RATE_MASK 0x1fff0000 7616*5113495bSYour Name #define WMI_HOST_VHT_MAX_SUPP_RATE_MASK_SHIFT 16 7617*5113495bSYour Name 7618*5113495bSYour Name /** U-APSD configuration of peer station from (re)assoc request and TSPECs */ 7619*5113495bSYour Name enum wmi_host_ap_ps_param_uapsd { 7620*5113495bSYour Name WMI_HOST_AP_PS_UAPSD_AC0_DELIVERY_EN = (1 << 0), 7621*5113495bSYour Name WMI_HOST_AP_PS_UAPSD_AC0_TRIGGER_EN = (1 << 1), 7622*5113495bSYour Name WMI_HOST_AP_PS_UAPSD_AC1_DELIVERY_EN = (1 << 2), 7623*5113495bSYour Name WMI_HOST_AP_PS_UAPSD_AC1_TRIGGER_EN = (1 << 3), 7624*5113495bSYour Name WMI_HOST_AP_PS_UAPSD_AC2_DELIVERY_EN = (1 << 4), 7625*5113495bSYour Name WMI_HOST_AP_PS_UAPSD_AC2_TRIGGER_EN = (1 << 5), 7626*5113495bSYour Name WMI_HOST_AP_PS_UAPSD_AC3_DELIVERY_EN = (1 << 6), 7627*5113495bSYour Name WMI_HOST_AP_PS_UAPSD_AC3_TRIGGER_EN = (1 << 7), 7628*5113495bSYour Name }; 7629*5113495bSYour Name /** U-APSD maximum service period of peer station */ 7630*5113495bSYour Name enum wmi_host_ap_ps_peer_param_max_sp { 7631*5113495bSYour Name WMI_HOST_AP_PS_PEER_PARAM_MAX_SP_UNLIMITED = 0, 7632*5113495bSYour Name WMI_HOST_AP_PS_PEER_PARAM_MAX_SP_2 = 1, 7633*5113495bSYour Name WMI_HOST_AP_PS_PEER_PARAM_MAX_SP_4 = 2, 7634*5113495bSYour Name WMI_HOST_AP_PS_PEER_PARAM_MAX_SP_6 = 3, 7635*5113495bSYour Name 7636*5113495bSYour Name /* keep last! */ 7637*5113495bSYour Name MAX_HOST_WMI_AP_PS_PEER_PARAM_MAX_SP, 7638*5113495bSYour Name }; 7639*5113495bSYour Name 7640*5113495bSYour Name #define WMI_HOST_UAPSD_AC_TYPE_DELI 0 7641*5113495bSYour Name #define WMI_HOST_UAPSD_AC_TYPE_TRIG 1 7642*5113495bSYour Name 7643*5113495bSYour Name #define WMI_HOST_UAPSD_AC_BIT_MASK(ac, type) \ 7644*5113495bSYour Name ((type == WMI_HOST_UAPSD_AC_TYPE_DELI) ? (1<<(ac<<1)) :\ 7645*5113495bSYour Name (1<<((ac<<1)+1))) 7646*5113495bSYour Name 7647*5113495bSYour Name enum wmi_host_ap_ps_peer_param_wnm_sleep { 7648*5113495bSYour Name WMI_HOST_AP_PS_PEER_PARAM_WNM_SLEEP_ENABLE, 7649*5113495bSYour Name WMI_HOST_AP_PS_PEER_PARAM_WNM_SLEEP_DISABLE, 7650*5113495bSYour Name }; 7651*5113495bSYour Name 7652*5113495bSYour Name enum wmi_host_ap_ps_peer_param { 7653*5113495bSYour Name /** Set uapsd configuration for a given peer. 7654*5113495bSYour Name * 7655*5113495bSYour Name * This will include the delivery and trigger enabled state for every AC. 7656*5113495bSYour Name * The host MLME needs to set this based on AP capability and stations 7657*5113495bSYour Name * request Set in the association request received from the station. 7658*5113495bSYour Name * 7659*5113495bSYour Name * Lower 8 bits of the value specify the UAPSD configuration. 7660*5113495bSYour Name * 7661*5113495bSYour Name * (see enum wmi_ap_ps_param_uapsd) 7662*5113495bSYour Name * The default value is 0. 7663*5113495bSYour Name */ 7664*5113495bSYour Name WMI_HOST_AP_PS_PEER_PARAM_UAPSD = 0, 7665*5113495bSYour Name 7666*5113495bSYour Name /** 7667*5113495bSYour Name * Set the service period for a UAPSD capable station 7668*5113495bSYour Name * 7669*5113495bSYour Name * The service period from wme ie in the (re)assoc request frame. 7670*5113495bSYour Name * 7671*5113495bSYour Name * (see enum wmi_ap_ps_peer_param_max_sp) 7672*5113495bSYour Name */ 7673*5113495bSYour Name WMI_HOST_AP_PS_PEER_PARAM_MAX_SP = 1, 7674*5113495bSYour Name 7675*5113495bSYour Name /** Time in seconds for aging out buffered frames 7676*5113495bSYour Name * for STA in power save */ 7677*5113495bSYour Name WMI_HOST_AP_PS_PEER_PARAM_AGEOUT_TIME = 2, 7678*5113495bSYour Name 7679*5113495bSYour Name /** Specify frame types that are considered SIFS 7680*5113495bSYour Name * RESP trigger frame */ 7681*5113495bSYour Name WMI_HOST_AP_PS_PEER_PARAM_SIFS_RESP_FRMTYPE = 3, 7682*5113495bSYour Name 7683*5113495bSYour Name /** Specifies the trigger state of TID. 7684*5113495bSYour Name * Valid only for UAPSD frame type */ 7685*5113495bSYour Name WMI_HOST_AP_PS_PEER_PARAM_SIFS_RESP_UAPSD = 4, 7686*5113495bSYour Name 7687*5113495bSYour Name /** Specifies the WNM sleep state of a STA */ 7688*5113495bSYour Name WMI_HOST_AP_PS_PEER_PARAM_WNM_SLEEP = 5, 7689*5113495bSYour Name }; 7690*5113495bSYour Name #define WMI_HOST_RXERR_CRC 0x01 /* CRC error on frame */ 7691*5113495bSYour Name #define WMI_HOST_RXERR_DECRYPT 0x08 /* non-Michael decrypt error */ 7692*5113495bSYour Name #define WMI_HOST_RXERR_MIC 0x10 /* Michael MIC decrypt error */ 7693*5113495bSYour Name #define WMI_HOST_RXERR_KEY_CACHE_MISS 0x20 /* No/incorrect key matter in h/w */ 7694*5113495bSYour Name #define WMI_HOST_RXERR_PN 0x80 /* invalid PN in frame */ 7695*5113495bSYour Name 7696*5113495bSYour Name enum wmi_host_sta_ps_param_rx_wake_policy { 7697*5113495bSYour Name /* Wake up when ever there is an RX activity on the VDEV. In this mode 7698*5113495bSYour Name * the Power save SM(state machine) will come out of sleep by either 7699*5113495bSYour Name * sending null frame (or) a data frame (with PS==0) in response to TIM 7700*5113495bSYour Name * bit set in the received beacon frame from AP. 7701*5113495bSYour Name */ 7702*5113495bSYour Name WMI_HOST_STA_PS_RX_WAKE_POLICY_WAKE = 0, 7703*5113495bSYour Name 7704*5113495bSYour Name /* Here the power save state machine will not wakeup in response to TIM 7705*5113495bSYour Name * bit, instead it will send a PSPOLL (or) UASPD trigger based on UAPSD 7706*5113495bSYour Name * configuration setup by WMISET_PS_SET_UAPSD WMI command. When all 7707*5113495bSYour Name * access categories are delivery-enabled, the station will send a UAPSD 7708*5113495bSYour Name * trigger frame, otherwise it will send a PS-Poll. 7709*5113495bSYour Name */ 7710*5113495bSYour Name WMI_HOST_STA_PS_RX_WAKE_POLICY_POLL_UAPSD = 1, 7711*5113495bSYour Name }; 7712*5113495bSYour Name enum wmi_host_sta_ps_param_pspoll_count { 7713*5113495bSYour Name WMI_HOST_STA_PS_PSPOLL_COUNT_NO_MAX = 0, 7714*5113495bSYour Name /* Values greater than 0 indicate the maximum number of PS-Poll frames FW 7715*5113495bSYour Name * will send before waking up. 7716*5113495bSYour Name */ 7717*5113495bSYour Name }; 7718*5113495bSYour Name /** Number of tx frames/beacon that cause the power save SM to wake up. 7719*5113495bSYour Name * 7720*5113495bSYour Name * Value 1 causes the SM to wake up for every TX. Value 0 has a special 7721*5113495bSYour Name * meaning, It will cause the SM to never wake up. This is useful if you want 7722*5113495bSYour Name * to keep the system to sleep all the time for some kind of test mode . host 7723*5113495bSYour Name * can change this parameter any time. It will affect at the next tx frame. 7724*5113495bSYour Name */ 7725*5113495bSYour Name enum wmi_host_sta_ps_param_tx_wake_threshold { 7726*5113495bSYour Name WMI_HOST_STA_PS_TX_WAKE_THRESHOLD_NEVER = 0, 7727*5113495bSYour Name WMI_HOST_STA_PS_TX_WAKE_THRESHOLD_ALWAYS = 1, 7728*5113495bSYour Name 7729*5113495bSYour Name /* Values greater than one indicate that many TX attempts per beacon 7730*5113495bSYour Name * interval before the STA will wake up 7731*5113495bSYour Name */ 7732*5113495bSYour Name }; 7733*5113495bSYour Name /* 7734*5113495bSYour Name * Transmit power scale factor. 7735*5113495bSYour Name * 7736*5113495bSYour Name */ 7737*5113495bSYour Name typedef enum { 7738*5113495bSYour Name WMI_HOST_TP_SCALE_MAX = 0, /* no scaling (default) */ 7739*5113495bSYour Name WMI_HOST_TP_SCALE_50 = 1, /* 50% of max (-3 dBm) */ 7740*5113495bSYour Name WMI_HOST_TP_SCALE_25 = 2, /* 25% of max (-6 dBm) */ 7741*5113495bSYour Name WMI_HOST_TP_SCALE_12 = 3, /* 12% of max (-9 dBm) */ 7742*5113495bSYour Name WMI_HOST_TP_SCALE_6 = 4, /* 6% of max (-12 dBm) */ 7743*5113495bSYour Name WMI_HOST_TP_SCALE_MIN = 5, /* min, but still on */ 7744*5113495bSYour Name WMI_HOST_TP_SCALE_SIZE = 6, /* max num of enum */ 7745*5113495bSYour Name } WMI_HOST_TP_SCALE; 7746*5113495bSYour Name enum { 7747*5113495bSYour Name WMI_HOST_RATEPWR_TABLE_OPS_SET, 7748*5113495bSYour Name WMI_HOST_RATEPWR_TABLE_OPS_GET, 7749*5113495bSYour Name }; 7750*5113495bSYour Name /* reserved up through 0xF */ 7751*5113495bSYour Name /** 7752*5113495bSYour Name * struct _hp_dcs_mib_stats - WLAN IM stats from target to host 7753*5113495bSYour Name * Below statistics are sent from target to host periodically. 7754*5113495bSYour Name * These are collected at target as long as target is running 7755*5113495bSYour Name * and target chip is not in sleep. 7756*5113495bSYour Name * @listen_time: 7757*5113495bSYour Name * @reg_tx_frame_cnt: 7758*5113495bSYour Name * @reg_rx_frame_cnt: 7759*5113495bSYour Name * @reg_rxclr_cnt: 7760*5113495bSYour Name * @reg_cycle_cnt: delta cycle count 7761*5113495bSYour Name * @reg_rxclr_ext_cnt: 7762*5113495bSYour Name * @reg_ofdm_phyerr_cnt: 7763*5113495bSYour Name * @reg_cck_phyerr_cnt: CCK err count since last reset, read from register 7764*5113495bSYour Name */ 7765*5113495bSYour Name typedef struct _hp_dcs_mib_stats { 7766*5113495bSYour Name int32_t listen_time; 7767*5113495bSYour Name uint32_t reg_tx_frame_cnt; 7768*5113495bSYour Name uint32_t reg_rx_frame_cnt; 7769*5113495bSYour Name uint32_t reg_rxclr_cnt; 7770*5113495bSYour Name uint32_t reg_cycle_cnt; 7771*5113495bSYour Name uint32_t reg_rxclr_ext_cnt; 7772*5113495bSYour Name uint32_t reg_ofdm_phyerr_cnt; 7773*5113495bSYour Name uint32_t reg_cck_phyerr_cnt; 7774*5113495bSYour Name } wmi_host_dcs_mib_stats_t; 7775*5113495bSYour Name 7776*5113495bSYour Name /** 7777*5113495bSYour Name * struct _wmi_host_dcs_im_tgt_stats - DCS IM target stats 7778*5113495bSYour Name * @reg_tsf32: current running TSF from the TSF-1 7779*5113495bSYour Name * @last_ack_rssi: Known last frame rssi, in case of multiple stations, if 7780*5113495bSYour Name * and at different ranges, this would not guarantee that 7781*5113495bSYour Name * this is the least rssi. 7782*5113495bSYour Name * @tx_waste_time: Sum of all the failed durations in the last 7783*5113495bSYour Name * one second interval. 7784*5113495bSYour Name * @rx_time: count how many times the hal_rxerr_phy is marked, in this 7785*5113495bSYour Name * time period 7786*5113495bSYour Name * @phyerr_cnt: 7787*5113495bSYour Name * @mib_stats: wmi_host_dcs_mib_stats_t - collected mib stats as explained 7788*5113495bSYour Name * in mib structure 7789*5113495bSYour Name * @chan_nf: Channel noise floor (Units are in dBm) 7790*5113495bSYour Name * @my_bss_rx_cycle_count: BSS rx cycle count 7791*5113495bSYour Name * @reg_rxclr_ext40_cnt: extension channel 40Mhz rxclear count 7792*5113495bSYour Name * @reg_rxclr_ext80_cnt: extension channel 80Mhz rxclear count 7793*5113495bSYour Name */ 7794*5113495bSYour Name typedef struct _wmi_host_dcs_im_tgt_stats { 7795*5113495bSYour Name uint32_t reg_tsf32; 7796*5113495bSYour Name uint32_t last_ack_rssi; 7797*5113495bSYour Name uint32_t tx_waste_time; 7798*5113495bSYour Name uint32_t rx_time; 7799*5113495bSYour Name uint32_t phyerr_cnt; 7800*5113495bSYour Name wmi_host_dcs_mib_stats_t mib_stats; 7801*5113495bSYour Name uint32_t chan_nf; 7802*5113495bSYour Name uint32_t my_bss_rx_cycle_count; 7803*5113495bSYour Name /* these fields are added here for backward compatibility instead of 7804*5113495bSYour Name * wmi_host_dcs_mib_stats_t 7805*5113495bSYour Name */ 7806*5113495bSYour Name uint32_t reg_rxclr_ext40_cnt; 7807*5113495bSYour Name uint32_t reg_rxclr_ext80_cnt; 7808*5113495bSYour Name } wmi_host_dcs_im_tgt_stats_t; 7809*5113495bSYour Name 7810*5113495bSYour Name #ifndef BIT 7811*5113495bSYour Name #define BIT(n) (1 << (n)) 7812*5113495bSYour Name #endif 7813*5113495bSYour Name 7814*5113495bSYour Name /* 7815*5113495bSYour Name * Enum for pktlog req 7816*5113495bSYour Name */ 7817*5113495bSYour Name enum { 7818*5113495bSYour Name WMI_HOST_PKTLOG_EVENT_RX_BIT, 7819*5113495bSYour Name WMI_HOST_PKTLOG_EVENT_TX_BIT, 7820*5113495bSYour Name WMI_HOST_PKTLOG_EVENT_RCF_BIT, 7821*5113495bSYour Name WMI_HOST_PKTLOG_EVENT_RCU_BIT, 7822*5113495bSYour Name WMI_HOST_PKTLOG_EVENT_DBG_PRINT_BIT, 7823*5113495bSYour Name WMI_HOST_PKTLOG_EVENT_SMART_ANTENNA_BIT, 7824*5113495bSYour Name WMI_HOST_PKTLOG_EVENT_H_INFO_BIT, 7825*5113495bSYour Name WMI_HOST_PKTLOG_EVENT_STEERING_BIT, 7826*5113495bSYour Name WMI_HOST_PKTLOG_EVENT_TX_DATA_CAPTURE_BIT, 7827*5113495bSYour Name WMI_HOST_PKTLOG_EVENT_PHY_LOGGING_BIT, 7828*5113495bSYour Name WMI_HOST_PKTLOG_EVENT_CBF_BIT, 7829*5113495bSYour Name #ifdef BE_PKTLOG_SUPPORT 7830*5113495bSYour Name WMI_HOST_PKTLOG_EVENT_HYBRID_TX_BIT, 7831*5113495bSYour Name #endif 7832*5113495bSYour Name }; 7833*5113495bSYour Name 7834*5113495bSYour Name typedef enum { 7835*5113495bSYour Name WMI_HOST_PKTLOG_EVENT_RX = BIT(WMI_HOST_PKTLOG_EVENT_RX_BIT), 7836*5113495bSYour Name WMI_HOST_PKTLOG_EVENT_TX = BIT(WMI_HOST_PKTLOG_EVENT_TX_BIT), 7837*5113495bSYour Name WMI_HOST_PKTLOG_EVENT_RCF = 7838*5113495bSYour Name BIT(WMI_HOST_PKTLOG_EVENT_RCF_BIT), /* Rate Control Find */ 7839*5113495bSYour Name WMI_HOST_PKTLOG_EVENT_RCU = 7840*5113495bSYour Name BIT(WMI_HOST_PKTLOG_EVENT_RCU_BIT), /* Rate Control Update */ 7841*5113495bSYour Name WMI_HOST_PKTLOG_EVENT_DBG_PRINT = 7842*5113495bSYour Name BIT(WMI_HOST_PKTLOG_EVENT_DBG_PRINT_BIT), /* DEBUG prints */ 7843*5113495bSYour Name /* To support Smart Antenna */ 7844*5113495bSYour Name WMI_HOST_PKTLOG_EVENT_SMART_ANTENNA = 7845*5113495bSYour Name BIT(WMI_HOST_PKTLOG_EVENT_SMART_ANTENNA_BIT), 7846*5113495bSYour Name WMI_HOST_PKTLOG_EVENT_H_INFO = 7847*5113495bSYour Name BIT(WMI_HOST_PKTLOG_EVENT_H_INFO_BIT), 7848*5113495bSYour Name WMI_HOST_PKTLOG_EVENT_STEERING = 7849*5113495bSYour Name BIT(WMI_HOST_PKTLOG_EVENT_STEERING_BIT), 7850*5113495bSYour Name /* To support Tx data Capture */ 7851*5113495bSYour Name WMI_HOST_PKTLOG_EVENT_TX_DATA_CAPTURE = 7852*5113495bSYour Name BIT(WMI_HOST_PKTLOG_EVENT_TX_DATA_CAPTURE_BIT), 7853*5113495bSYour Name /* To support PHY logging */ 7854*5113495bSYour Name WMI_HOST_PKTLOG_EVENT_PHY_LOGGING = 7855*5113495bSYour Name BIT(WMI_HOST_PKTLOG_EVENT_PHY_LOGGING_BIT), 7856*5113495bSYour Name WMI_HOST_PKTLOG_EVENT_CBF = 7857*5113495bSYour Name BIT(WMI_HOST_PKTLOG_EVENT_CBF_BIT), 7858*5113495bSYour Name #ifdef BE_PKTLOG_SUPPORT 7859*5113495bSYour Name WMI_HOST_PKTLOG_EVENT_HYBRID_TX = 7860*5113495bSYour Name BIT(WMI_HOST_PKTLOG_EVENT_HYBRID_TX_BIT), 7861*5113495bSYour Name #endif 7862*5113495bSYour Name } WMI_HOST_PKTLOG_EVENT; 7863*5113495bSYour Name 7864*5113495bSYour Name /* 7865*5113495bSYour Name * wmi_host_phyerr 7866*5113495bSYour Name * 7867*5113495bSYour Name */ 7868*5113495bSYour Name #define WMI_HOST_PHY_ERROR_SPECTRAL_SCAN 0x26 7869*5113495bSYour Name #define WMI_HOST_PHY_ERROR_FALSE_RADAR_EXT 0x24 7870*5113495bSYour Name 7871*5113495bSYour Name #define WMI_HOST_AR900B_DFS_PHYERR_MASK 0x4 7872*5113495bSYour Name #define WMI_HOST_AR900B_SPECTRAL_PHYERR_MASK 0x4000000 7873*5113495bSYour Name 7874*5113495bSYour Name /** 7875*5113495bSYour Name * struct wmi_host_perchain_rssi_info - per chain RSSI info 7876*5113495bSYour Name * @rssi_pri20: RSSI on primary 20 7877*5113495bSYour Name * @rssi_sec20: RSSI on secomdary 20 7878*5113495bSYour Name * @rssi_sec40: RSSI secondary 40 7879*5113495bSYour Name * @rssi_sec80: RSSI secondary 80 7880*5113495bSYour Name */ 7881*5113495bSYour Name typedef struct wmi_host_perchain_rssi_info { 7882*5113495bSYour Name int8_t rssi_pri20; 7883*5113495bSYour Name int8_t rssi_sec20; 7884*5113495bSYour Name int8_t rssi_sec40; 7885*5113495bSYour Name int8_t rssi_sec80; 7886*5113495bSYour Name } wmi_host_perchain_rssi_info_t; 7887*5113495bSYour Name 7888*5113495bSYour Name /** 7889*5113495bSYour Name * struct _wmi_host_rf_info - RF measurement information 7890*5113495bSYour Name * @rssi_comb: RSSI Information 7891*5113495bSYour Name * @pc_rssi_info: For now, we know we are getting information 7892*5113495bSYour Name * for only 4 chains at max. For future extensions 7893*5113495bSYour Name * use a define 7894*5113495bSYour Name * @noise_floor: Noise floor information 7895*5113495bSYour Name */ 7896*5113495bSYour Name typedef struct _wmi_host_rf_info { 7897*5113495bSYour Name int8_t rssi_comb; 7898*5113495bSYour Name wmi_host_perchain_rssi_info_t pc_rssi_info[4]; 7899*5113495bSYour Name int16_t noise_floor[4]; 7900*5113495bSYour Name } wmi_host_rf_info_t; 7901*5113495bSYour Name 7902*5113495bSYour Name /** 7903*5113495bSYour Name * struct _wmi_host_chan_info 7904*5113495bSYour Name * @center_freq1: center frequency 1 in MHz 7905*5113495bSYour Name * @center_freq2: center frequency 2 in MHz -valid only for 7906*5113495bSYour Name * 11ACVHT 80PLUS80 mode 7907*5113495bSYour Name * @chan_width: channel width in MHz 7908*5113495bSYour Name */ 7909*5113495bSYour Name typedef struct _wmi_host_chan_info { 7910*5113495bSYour Name u_int16_t center_freq1; 7911*5113495bSYour Name u_int16_t center_freq2; 7912*5113495bSYour Name u_int8_t chan_width; 7913*5113495bSYour Name } wmi_host_chan_info_t; 7914*5113495bSYour Name 7915*5113495bSYour Name /** 7916*5113495bSYour Name * struct _wmi_host_phyerr 7917*5113495bSYour Name * @rf_info: 7918*5113495bSYour Name * @chan_info: 7919*5113495bSYour Name * @tsf64: 7920*5113495bSYour Name * @phy_err_code: 7921*5113495bSYour Name * @tsf_timestamp: 7922*5113495bSYour Name * @bufp: 7923*5113495bSYour Name * @buf_len: 7924*5113495bSYour Name * @phy_err_mask0: 7925*5113495bSYour Name * @phy_err_mask1: 7926*5113495bSYour Name * @pdev_id: pdev_id 7927*5113495bSYour Name */ 7928*5113495bSYour Name typedef struct _wmi_host_phyerr { 7929*5113495bSYour Name wmi_host_rf_info_t rf_info; 7930*5113495bSYour Name wmi_host_chan_info_t chan_info; 7931*5113495bSYour Name uint64_t tsf64; 7932*5113495bSYour Name int32_t phy_err_code; 7933*5113495bSYour Name uint32_t tsf_timestamp; 7934*5113495bSYour Name uint8_t *bufp; 7935*5113495bSYour Name uint32_t buf_len; 7936*5113495bSYour Name uint32_t phy_err_mask0; 7937*5113495bSYour Name uint32_t phy_err_mask1; 7938*5113495bSYour Name uint32_t pdev_id; 7939*5113495bSYour Name } wmi_host_phyerr_t; 7940*5113495bSYour Name 7941*5113495bSYour Name /** 7942*5113495bSYour Name * struct wmi_host_rtt_event_hdr 7943*5113495bSYour Name * @req_id: request id 7944*5113495bSYour Name * @status: status 7945*5113495bSYour Name * @meas_done: measurement done flag 7946*5113495bSYour Name * @meas_type: measurement type 7947*5113495bSYour Name * @report_type: report type 7948*5113495bSYour Name * @v3_status: v2 status 7949*5113495bSYour Name * @v3_finish: 7950*5113495bSYour Name * @v3_tm_start: 7951*5113495bSYour Name * @num_ap: number of AP 7952*5113495bSYour Name * @result: resuult 7953*5113495bSYour Name * @dest_mac: destination mac 7954*5113495bSYour Name */ 7955*5113495bSYour Name typedef struct { 7956*5113495bSYour Name uint16_t req_id; 7957*5113495bSYour Name uint16_t status:1, 7958*5113495bSYour Name meas_done:1, 7959*5113495bSYour Name meas_type:3, 7960*5113495bSYour Name report_type:3, 7961*5113495bSYour Name v3_status:2, 7962*5113495bSYour Name v3_finish:1, 7963*5113495bSYour Name v3_tm_start:1, 7964*5113495bSYour Name num_ap:4; 7965*5113495bSYour Name uint16_t result; 7966*5113495bSYour Name uint8_t dest_mac[QDF_MAC_ADDR_SIZE]; 7967*5113495bSYour Name } wmi_host_rtt_event_hdr; 7968*5113495bSYour Name 7969*5113495bSYour Name /** 7970*5113495bSYour Name * struct wmi_host_rtt_meas_event - RTT measurement event 7971*5113495bSYour Name * @chain_mask: 7972*5113495bSYour Name * @bw: 7973*5113495bSYour Name * @rsvd: 7974*5113495bSYour Name * @txrxchain_mask: Bit:0-3:chain mask 7975*5113495bSYour Name * Bit 4-5: band width info 7976*5113495bSYour Name * 00 --Legacy 20, 01 --HT/VHT20 7977*5113495bSYour Name * 10 --HT/VHT40, 11 -- VHT80 7978*5113495bSYour Name * @tod: resolution of 0.1ns 7979*5113495bSYour Name * @toa: resolution of 0.1ns 7980*5113495bSYour Name * @t3: 7981*5113495bSYour Name * @t4: 7982*5113495bSYour Name * @rssi0: 7983*5113495bSYour Name * @rssi1: 7984*5113495bSYour Name * @rssi2: 7985*5113495bSYour Name * @rssi3: 7986*5113495bSYour Name */ 7987*5113495bSYour Name typedef struct { 7988*5113495bSYour Name uint32_t chain_mask:3, 7989*5113495bSYour Name bw:2, 7990*5113495bSYour Name rsvd:27; 7991*5113495bSYour Name uint32_t txrxchain_mask; 7992*5113495bSYour Name uint64_t tod; 7993*5113495bSYour Name uint64_t toa; 7994*5113495bSYour Name uint64_t t3; 7995*5113495bSYour Name uint64_t t4; 7996*5113495bSYour Name uint32_t rssi0; 7997*5113495bSYour Name uint32_t rssi1; 7998*5113495bSYour Name uint32_t rssi2; 7999*5113495bSYour Name uint32_t rssi3; 8000*5113495bSYour Name } wmi_host_rtt_meas_event; 8001*5113495bSYour Name 8002*5113495bSYour Name /*----RTT Report event definition ----*/ 8003*5113495bSYour Name typedef enum { 8004*5113495bSYour Name /* rtt cmd header parsing error --terminate */ 8005*5113495bSYour Name WMI_HOST_RTT_COMMAND_HEADER_ERROR = 0, 8006*5113495bSYour Name /* rtt body parsing error -- skip current STA REQ */ 8007*5113495bSYour Name WMI_HOST_RTT_COMMAND_ERROR, 8008*5113495bSYour Name /* rtt no resource -- terminate */ 8009*5113495bSYour Name WMI_HOST_RTT_MODULE_BUSY, 8010*5113495bSYour Name /* STA exceed the support limit -- only server the first n STA */ 8011*5113495bSYour Name WMI_HOST_RTT_TOO_MANY_STA, 8012*5113495bSYour Name /* any allocate failure */ 8013*5113495bSYour Name WMI_HOST_RTT_NO_RESOURCE, 8014*5113495bSYour Name /* can not find vdev with vdev ID - skip current STA REQ */ 8015*5113495bSYour Name WMI_HOST_RTT_VDEV_ERROR, 8016*5113495bSYour Name /* Tx failure -- continiue and measure number */ 8017*5113495bSYour Name WMI_HOST_RTT_TRANSIMISSION_ERROR, 8018*5113495bSYour Name /* wait for first TM timer expire-terminate current STA measurement */ 8019*5113495bSYour Name WMI_HOST_RTT_TM_TIMER_EXPIRE, 8020*5113495bSYour Name /* we do not support RTT measurement with this type of frame */ 8021*5113495bSYour Name WMI_HOST_RTT_FRAME_TYPE_NOSUPPORT, 8022*5113495bSYour Name /* whole RTT measurement timer expire-terminate 8023*5113495bSYour Name ** current STA measurement */ 8024*5113495bSYour Name WMI_HOST_RTT_TIMER_EXPIRE, 8025*5113495bSYour Name /* channel switch failed */ 8026*5113495bSYour Name WMI_HOST_RTT_CHAN_SWITCH_ERROR, 8027*5113495bSYour Name /* TMR trans error, this dest peer will be skipped */ 8028*5113495bSYour Name WMI_HOST_RTT_TMR_TRANS_ERROR, 8029*5113495bSYour Name /* V3 only. If both CFR and Token mismatch, do not report */ 8030*5113495bSYour Name WMI_HOST_RTT_NO_REPORT_BAD_CFR_TOKEN, 8031*5113495bSYour Name /* For First TM, if CFR is bad, then do not report */ 8032*5113495bSYour Name WMI_HOST_RTT_NO_REPORT_FIRST_TM_BAD_CFR, 8033*5113495bSYour Name /* do not allow report type2 mix with type 0, 1 */ 8034*5113495bSYour Name WMI_HOST_RTT_REPORT_TYPE2_MIX, 8035*5113495bSYour Name /* LCI Configuration OK. - Responder only */ 8036*5113495bSYour Name WMI_HOST_RTT_LCI_CFG_OK, 8037*5113495bSYour Name /* LCR configuration OK. - Responder only */ 8038*5113495bSYour Name WMI_HOST_RTT_LCR_CFG_OK, 8039*5113495bSYour Name /* Bad configuration LCI (or) LCR request - Responder only */ 8040*5113495bSYour Name WMI_HOST_RTT_CFG_ERROR, 8041*5113495bSYour Name WMI_HOST_WMI_RTT_REJECT_MAX, 8042*5113495bSYour Name } WMI_HOST_RTT_ERROR_INDICATOR; 8043*5113495bSYour Name typedef struct { 8044*5113495bSYour Name wmi_host_rtt_event_hdr hdr; 8045*5113495bSYour Name WMI_HOST_RTT_ERROR_INDICATOR reject_reason; 8046*5113495bSYour Name } wmi_host_rtt_error_report_event; 8047*5113495bSYour Name 8048*5113495bSYour Name #if defined(AR9888) 8049*5113495bSYour Name typedef enum { 8050*5113495bSYour Name WMI_HOST_PROF_CPU_IDLE, 8051*5113495bSYour Name WMI_HOST_PROF_PPDU_PROC, 8052*5113495bSYour Name WMI_HOST_PROF_PPDU_POST, 8053*5113495bSYour Name WMI_HOST_PROF_HTT_TX_INPUT, 8054*5113495bSYour Name WMI_HOST_PROF_MSDU_ENQ, 8055*5113495bSYour Name WMI_HOST_PROF_PPDU_POST_HAL, 8056*5113495bSYour Name WMI_HOST_PROF_COMPUTE_TX_TIME, 8057*5113495bSYour Name 8058*5113495bSYour Name /* Add new ID's above this. */ 8059*5113495bSYour Name WMI_HOST_PROF_MAX_ID, 8060*5113495bSYour Name } wmi_host_profile_id_t; 8061*5113495bSYour Name #endif 8062*5113495bSYour Name 8063*5113495bSYour Name #define WMI_HOST_WLAN_PROFILE_MAX_HIST 3 8064*5113495bSYour Name #define WMI_HOST_WLAN_PROFILE_MAX_BIN_CNT 32 8065*5113495bSYour Name 8066*5113495bSYour Name #if defined(AR9888) 8067*5113495bSYour Name #define WMI_HOST_MAX_PROFILE WMI_HOST_PROF_MAX_ID 8068*5113495bSYour Name #else 8069*5113495bSYour Name #define WMI_HOST_MAX_PROFILE WMI_HOST_WLAN_PROFILE_MAX_BIN_CNT 8070*5113495bSYour Name #endif 8071*5113495bSYour Name 8072*5113495bSYour Name /** 8073*5113495bSYour Name * struct wmi_host_wlan_profile_t - Host profile param 8074*5113495bSYour Name * @id: profile id 8075*5113495bSYour Name * @cnt: Count 8076*5113495bSYour Name * @tot: 8077*5113495bSYour Name * @min: minimum 8078*5113495bSYour Name * @max: Mac 8079*5113495bSYour Name * @hist_intvl: history interval 8080*5113495bSYour Name * @hist: profile data history 8081*5113495bSYour Name */ 8082*5113495bSYour Name typedef struct { 8083*5113495bSYour Name uint32_t id; 8084*5113495bSYour Name uint32_t cnt; 8085*5113495bSYour Name uint32_t tot; 8086*5113495bSYour Name uint32_t min; 8087*5113495bSYour Name uint32_t max; 8088*5113495bSYour Name uint32_t hist_intvl; 8089*5113495bSYour Name uint32_t hist[WMI_HOST_WLAN_PROFILE_MAX_HIST]; 8090*5113495bSYour Name } wmi_host_wlan_profile_t; 8091*5113495bSYour Name 8092*5113495bSYour Name /** 8093*5113495bSYour Name * struct wmi_host_wlan_profile_ctx_t - profile context 8094*5113495bSYour Name * @tot: time in us 8095*5113495bSYour Name * @tx_msdu_cnt: MSDU TX count 8096*5113495bSYour Name * @tx_mpdu_cnt: MPDU tx count 8097*5113495bSYour Name * @tx_ppdu_cnt: PPDU tx count 8098*5113495bSYour Name * @rx_msdu_cnt: MSDU RX count 8099*5113495bSYour Name * @rx_mpdu_cnt: MPDU RXcount 8100*5113495bSYour Name * @bin_count: Bin count 8101*5113495bSYour Name */ 8102*5113495bSYour Name typedef struct { 8103*5113495bSYour Name uint32_t tot; 8104*5113495bSYour Name uint32_t tx_msdu_cnt; 8105*5113495bSYour Name uint32_t tx_mpdu_cnt; 8106*5113495bSYour Name uint32_t tx_ppdu_cnt; 8107*5113495bSYour Name uint32_t rx_msdu_cnt; 8108*5113495bSYour Name uint32_t rx_mpdu_cnt; 8109*5113495bSYour Name uint32_t bin_count; 8110*5113495bSYour Name } wmi_host_wlan_profile_ctx_t; 8111*5113495bSYour Name 8112*5113495bSYour Name /** 8113*5113495bSYour Name * struct wmi_host_pdev_bss_chan_info_event 8114*5113495bSYour Name * @pdev_id: pdev_id 8115*5113495bSYour Name * @freq: Units in MHz 8116*5113495bSYour Name * @noise_floor: units are dBm 8117*5113495bSYour Name * @rx_clear_count_low: 8118*5113495bSYour Name * @rx_clear_count_high: 8119*5113495bSYour Name * @cycle_count_low: 8120*5113495bSYour Name * @cycle_count_high: 8121*5113495bSYour Name * @tx_cycle_count_low: 8122*5113495bSYour Name * @tx_cycle_count_high: 8123*5113495bSYour Name * @rx_cycle_count_low: 8124*5113495bSYour Name * @rx_cycle_count_high: 8125*5113495bSYour Name * @rx_bss_cycle_count_low: 8126*5113495bSYour Name * @rx_bss_cycle_count_high: 8127*5113495bSYour Name * @reserved: 8128*5113495bSYour Name */ 8129*5113495bSYour Name typedef struct { 8130*5113495bSYour Name uint32_t pdev_id; 8131*5113495bSYour Name uint32_t freq; 8132*5113495bSYour Name uint32_t noise_floor; 8133*5113495bSYour Name uint32_t rx_clear_count_low; 8134*5113495bSYour Name uint32_t rx_clear_count_high; 8135*5113495bSYour Name uint32_t cycle_count_low; 8136*5113495bSYour Name uint32_t cycle_count_high; 8137*5113495bSYour Name uint32_t tx_cycle_count_low; 8138*5113495bSYour Name uint32_t tx_cycle_count_high; 8139*5113495bSYour Name uint32_t rx_cycle_count_low; 8140*5113495bSYour Name uint32_t rx_cycle_count_high; 8141*5113495bSYour Name uint32_t rx_bss_cycle_count_low; 8142*5113495bSYour Name uint32_t rx_bss_cycle_count_high; 8143*5113495bSYour Name uint32_t reserved; 8144*5113495bSYour Name } wmi_host_pdev_bss_chan_info_event; 8145*5113495bSYour Name 8146*5113495bSYour Name /** 8147*5113495bSYour Name * struct wmi_host_pdev_ctl_failsafe_event 8148*5113495bSYour Name * @ctl_failsafe_status: Indicate if Failsafe value is imposed on CTL 8149*5113495bSYour Name */ 8150*5113495bSYour Name struct wmi_host_pdev_ctl_failsafe_event { 8151*5113495bSYour Name uint32_t ctl_failsafe_status; 8152*5113495bSYour Name }; 8153*5113495bSYour Name 8154*5113495bSYour Name #define WMI_HOST_INST_STATS_INVALID_RSSI 0 8155*5113495bSYour Name 8156*5113495bSYour Name /* Event definition and new structure addition to send event 8157*5113495bSYour Name * to host to block/unblock tx data traffic based on peer_ast_idx or vdev id 8158*5113495bSYour Name */ 8159*5113495bSYour Name #define WMI_HOST_INVALID_PEER_AST_INDEX 0xffff 8160*5113495bSYour Name #define WMI_HOST_TX_DATA_TRAFFIC_CTRL_BLOCK 0x1 8161*5113495bSYour Name #define WMI_HOST_TX_DATA_TRAFFIC_CTRL_UNBLOCK 0x2 8162*5113495bSYour Name /** 8163*5113495bSYour Name * struct wmi_host_tx_data_traffic_ctrl_event 8164*5113495bSYour Name * @peer_ast_idx: For vdev based control, peer_ast_idx will be 8165*5113495bSYour Name * WMI_INVALID_PEER_AST_INDEX 8166*5113495bSYour Name * @vdev_id: only applies if peer_ast_idx == INVALID 8167*5113495bSYour Name * @ctrl_cmd: WMI_TX_DATA_TRAFFIC_CTRL_BLOCK or 8168*5113495bSYour Name * WMI_TX_DATA_TRAFFIC_CTRL_UNBLOCK 8169*5113495bSYour Name * @wmm_ac: Indicates AC to be blocked or unblocked 8170*5113495bSYour Name * Bits 4-31 : Reserved (Shall be zero) 8171*5113495bSYour Name * Bits 0-3 : WMM AC NO [ BE (1), BK (2), VI (3), VO (4)] 8172*5113495bSYour Name * Started numbering from 1 to preserve backward compatibility 8173*5113495bSYour Name */ 8174*5113495bSYour Name typedef struct { 8175*5113495bSYour Name uint32_t peer_ast_idx; 8176*5113495bSYour Name uint32_t vdev_id; 8177*5113495bSYour Name uint32_t ctrl_cmd; 8178*5113495bSYour Name uint32_t wmm_ac; 8179*5113495bSYour Name } wmi_host_tx_data_traffic_ctrl_event; 8180*5113495bSYour Name 8181*5113495bSYour Name /** 8182*5113495bSYour Name * struct wmi_host_ath_dcs_cw_int 8183*5113495bSYour Name * @channel: either number or freq in mhz 8184*5113495bSYour Name */ 8185*5113495bSYour Name typedef struct { 8186*5113495bSYour Name uint32_t channel; 8187*5113495bSYour Name } wmi_host_ath_dcs_cw_int; 8188*5113495bSYour Name 8189*5113495bSYour Name /** 8190*5113495bSYour Name * struct wmi_host_dcs_awgn_info: 8191*5113495bSYour Name * @channel_width : Channel width of interference 8192*5113495bSYour Name * @center_freq : Center frequency of primary channel 8193*5113495bSYour Name * @center_freq0 : Center frequency of segment 1 8194*5113495bSYour Name * @center_freq1 : Center frequency of segment 2 8195*5113495bSYour Name * @chan_bw_intf_bitmap: Per-20MHz interference bitmap 8196*5113495bSYour Name */ 8197*5113495bSYour Name struct wmi_host_dcs_awgn_info { 8198*5113495bSYour Name wmi_host_channel_width channel_width; 8199*5113495bSYour Name uint32_t center_freq; 8200*5113495bSYour Name uint32_t center_freq0; 8201*5113495bSYour Name uint32_t center_freq1; 8202*5113495bSYour Name uint32_t chan_bw_intf_bitmap; 8203*5113495bSYour Name }; 8204*5113495bSYour Name 8205*5113495bSYour Name #define WMI_MAX_POWER_DBG_ARGS 8 8206*5113495bSYour Name 8207*5113495bSYour Name /** 8208*5113495bSYour Name * struct wmi_power_dbg_params - power debug command parameter 8209*5113495bSYour Name * @pdev_id: subsystem identifier 8210*5113495bSYour Name * @module_id: parameter id 8211*5113495bSYour Name * @num_args: no of arguments 8212*5113495bSYour Name * @args: arguments 8213*5113495bSYour Name */ 8214*5113495bSYour Name struct wmi_power_dbg_params { 8215*5113495bSYour Name uint32_t pdev_id; 8216*5113495bSYour Name uint32_t module_id; 8217*5113495bSYour Name uint32_t num_args; 8218*5113495bSYour Name uint32_t args[WMI_MAX_POWER_DBG_ARGS]; 8219*5113495bSYour Name }; 8220*5113495bSYour Name 8221*5113495bSYour Name /** 8222*5113495bSYour Name * struct wmi_fw_dump_seg_req - individual segment details 8223*5113495bSYour Name * @seg_id: segment id. 8224*5113495bSYour Name * @seg_start_addr_lo: lower address of the segment. 8225*5113495bSYour Name * @seg_start_addr_hi: higher address of the segment. 8226*5113495bSYour Name * @seg_length: length of the segment. 8227*5113495bSYour Name * @dst_addr_lo: lower address of the destination buffer. 8228*5113495bSYour Name * @dst_addr_hi: higher address of the destination buffer. 8229*5113495bSYour Name * 8230*5113495bSYour Name * This structure carries the information to firmware about the 8231*5113495bSYour Name * individual segments. This structure is part of firmware memory 8232*5113495bSYour Name * dump request. 8233*5113495bSYour Name */ 8234*5113495bSYour Name struct wmi_fw_dump_seg_req { 8235*5113495bSYour Name uint8_t seg_id; 8236*5113495bSYour Name uint32_t seg_start_addr_lo; 8237*5113495bSYour Name uint32_t seg_start_addr_hi; 8238*5113495bSYour Name uint32_t seg_length; 8239*5113495bSYour Name uint32_t dst_addr_lo; 8240*5113495bSYour Name uint32_t dst_addr_hi; 8241*5113495bSYour Name }; 8242*5113495bSYour Name 8243*5113495bSYour Name /** 8244*5113495bSYour Name * enum wmi_userspace_log_level - Log level at userspace 8245*5113495bSYour Name * @WMI_LOG_LEVEL_NO_COLLECTION: verbose_level 0 corresponds to no collection 8246*5113495bSYour Name * @WMI_LOG_LEVEL_NORMAL_COLLECT: verbose_level 1 correspond to normal log 8247*5113495bSYour Name * level with minimal user impact. This is the default value. 8248*5113495bSYour Name * @WMI_LOG_LEVEL_ISSUE_REPRO: verbose_level 2 are enabled when user is lazily 8249*5113495bSYour Name * trying to reproduce a problem, wifi performances and power can be impacted 8250*5113495bSYour Name * but device should not otherwise be significantly impacted 8251*5113495bSYour Name * @WMI_LOG_LEVEL_ACTIVE: verbose_level 3+ are used when trying to 8252*5113495bSYour Name * actively debug a problem 8253*5113495bSYour Name * 8254*5113495bSYour Name * Various log levels defined in the userspace for logging applications 8255*5113495bSYour Name */ 8256*5113495bSYour Name enum wmi_userspace_log_level { 8257*5113495bSYour Name WMI_LOG_LEVEL_NO_COLLECTION, 8258*5113495bSYour Name WMI_LOG_LEVEL_NORMAL_COLLECT, 8259*5113495bSYour Name WMI_LOG_LEVEL_ISSUE_REPRO, 8260*5113495bSYour Name WMI_LOG_LEVEL_ACTIVE, 8261*5113495bSYour Name }; 8262*5113495bSYour Name 8263*5113495bSYour Name /** 8264*5113495bSYour Name * enum wmi_host_hw_mode_config_type - HW mode config type replicated from 8265*5113495bSYour Name * wmi_hw_mode_config_type in FW header 8266*5113495bSYour Name * @WMI_HOST_HW_MODE_SINGLE: Only one PHY is active. 8267*5113495bSYour Name * @WMI_HOST_HW_MODE_DBS: Both PHYs are active in different bands, 8268*5113495bSYour Name * one in 2G and another in 5G. 8269*5113495bSYour Name * @WMI_HOST_HW_MODE_SBS_PASSIVE: Both PHYs are in passive mode (only rx) in 8270*5113495bSYour Name * same band; no tx allowed. 8271*5113495bSYour Name * @WMI_HOST_HW_MODE_SBS: Both PHYs are active in the same band. 8272*5113495bSYour Name * Support for both PHYs within one band is planned 8273*5113495bSYour Name * for 5G only(as indicated in WMI_MAC_PHY_CAPABILITIES), 8274*5113495bSYour Name * but could be extended to other bands in the future. 8275*5113495bSYour Name * The separation of the band between the two PHYs needs 8276*5113495bSYour Name * to be communicated separately. 8277*5113495bSYour Name * @WMI_HOST_HW_MODE_DBS_SBS: 3 PHYs, with 2 on the same band doing SBS 8278*5113495bSYour Name * as in WMI_HW_MODE_SBS, and 3rd on the other band 8279*5113495bSYour Name * @WMI_HOST_HW_MODE_DBS_OR_SBS: Two PHY with one PHY capabale of both 2G and 8280*5113495bSYour Name * 5G. It can support SBS (5G + 5G) OR DBS (5G + 2G). 8281*5113495bSYour Name * @WMI_HOST_HW_MODE_DBS_2G_5G: Both PHYs are active in different bands. 8282*5113495bSYour Name * PhyA 2G and PhyB 5G 8283*5113495bSYour Name * @WMI_HOST_HW_MODE_2G_PHYB: Only one phy is active. 2G mode on PhyB. 8284*5113495bSYour Name * @WMI_HOST_HW_MODE_EMLSR: Both PHYs are active in listen mode in 1x1 8285*5113495bSYour Name * and Tx/Rx trigger on any PHY will switch 8286*5113495bSYour Name * from 1x1 to 2x2 on that Phy 8287*5113495bSYour Name * @WMI_HOST_HW_MODE_AUX_EMLSR_SINGLE: PHYA0 and AUX are active in listen mode 8288*5113495bSYour Name * in 1x1 and Tx/Rx trigger on any. 8289*5113495bSYour Name * PHY will switch from 1x1 to 2x2 8290*5113495bSYour Name * on that Phy. 8291*5113495bSYour Name * @WMI_HOST_HW_MODE_AUX_EMLSR_SPLIT: PHYA1 and AUX are active in listen mode 8292*5113495bSYour Name * in 1x1 and Tx/Rx trigger on any. 8293*5113495bSYour Name * PHY will switch from 1x1 to 2x2 8294*5113495bSYour Name * on that Phy. 8295*5113495bSYour Name * @WMI_HOST_HW_MODE_MAX: Max hw_mode_id. Used to indicate invalid mode. 8296*5113495bSYour Name * @WMI_HOST_HW_MODE_DETECT: Mode id used by host to choose mode from target 8297*5113495bSYour Name * supported modes. 8298*5113495bSYour Name */ 8299*5113495bSYour Name enum wmi_host_hw_mode_config_type { 8300*5113495bSYour Name WMI_HOST_HW_MODE_SINGLE = 0, 8301*5113495bSYour Name WMI_HOST_HW_MODE_DBS = 1, 8302*5113495bSYour Name WMI_HOST_HW_MODE_SBS_PASSIVE = 2, 8303*5113495bSYour Name WMI_HOST_HW_MODE_SBS = 3, 8304*5113495bSYour Name WMI_HOST_HW_MODE_DBS_SBS = 4, 8305*5113495bSYour Name WMI_HOST_HW_MODE_DBS_OR_SBS = 5, 8306*5113495bSYour Name WMI_HOST_HW_MODE_DBS_2G_5G = 6, 8307*5113495bSYour Name WMI_HOST_HW_MODE_2G_PHYB = 7, 8308*5113495bSYour Name WMI_HOST_HW_MODE_EMLSR = 8, 8309*5113495bSYour Name WMI_HOST_HW_MODE_AUX_EMLSR_SINGLE = 9, 8310*5113495bSYour Name WMI_HOST_HW_MODE_AUX_EMLSR_SPLIT = 10, 8311*5113495bSYour Name WMI_HOST_HW_MODE_MAX, 8312*5113495bSYour Name WMI_HOST_HW_MODE_DETECT, 8313*5113495bSYour Name }; 8314*5113495bSYour Name 8315*5113495bSYour Name /** 8316*5113495bSYour Name * enum wmi_host_dynamic_hw_mode_config_type - Host defined enum for 8317*5113495bSYour Name * dynamic mode switch 8318*5113495bSYour Name * @WMI_HOST_DYNAMIC_HW_MODE_DISABLED: hw mode switch is disabled 8319*5113495bSYour Name * @WMI_HOST_DYNAMIC_HW_MODE_SLOW: hw mode switch with interface down/up 8320*5113495bSYour Name * @WMI_HOST_DYNAMIC_HW_MODE_FAST: hw mode switch without interface down/up 8321*5113495bSYour Name * @WMI_HOST_DYNAMIC_HW_MODE_MAX: Max value to indicate invalid mode 8322*5113495bSYour Name */ 8323*5113495bSYour Name enum wmi_host_dynamic_hw_mode_config_type { 8324*5113495bSYour Name WMI_HOST_DYNAMIC_HW_MODE_DISABLED = 0, 8325*5113495bSYour Name WMI_HOST_DYNAMIC_HW_MODE_SLOW = 1, 8326*5113495bSYour Name WMI_HOST_DYNAMIC_HW_MODE_FAST = 2, 8327*5113495bSYour Name WMI_HOST_DYNAMIC_HW_MODE_MAX, 8328*5113495bSYour Name }; 8329*5113495bSYour Name 8330*5113495bSYour Name /* 8331*5113495bSYour Name * struct wmi_host_peer_txmu_cnt_event 8332*5113495bSYour Name * @tx_mu_transmitted - MU-MIMO tx count 8333*5113495bSYour Name */ 8334*5113495bSYour Name typedef struct { 8335*5113495bSYour Name uint32_t tx_mu_transmitted; 8336*5113495bSYour Name } wmi_host_peer_txmu_cnt_event; 8337*5113495bSYour Name 8338*5113495bSYour Name /** 8339*5113495bSYour Name * struct esp_estimation_event - esp airtime estimation event 8340*5113495bSYour Name * @ac_airtime_percentage: Estimated Airtime 8341*5113495bSYour Name * @pdev_id: PDEV_ID of Data 8342*5113495bSYour Name */ 8343*5113495bSYour Name struct esp_estimation_event { 8344*5113495bSYour Name uint32_t ac_airtime_percentage; 8345*5113495bSYour Name uint32_t pdev_id; 8346*5113495bSYour Name }; 8347*5113495bSYour Name 8348*5113495bSYour Name /* 8349*5113495bSYour Name * struct wmi_peer_gid_userpos_list_event 8350*5113495bSYour Name * @usr_list - User list 8351*5113495bSYour Name */ 8352*5113495bSYour Name #define GID_OVERLOAD_GROUP_COUNT 15 8353*5113495bSYour Name typedef struct { 8354*5113495bSYour Name uint32_t usr_list[GID_OVERLOAD_GROUP_COUNT]; 8355*5113495bSYour Name } wmi_host_peer_gid_userpos_list_event; 8356*5113495bSYour Name 8357*5113495bSYour Name /** 8358*5113495bSYour Name * enum rcpi_measurement_type - for identifying type of rcpi measurement 8359*5113495bSYour Name * @RCPI_MEASUREMENT_TYPE_AVG_MGMT: avg rcpi of mgmt frames 8360*5113495bSYour Name * @RCPI_MEASUREMENT_TYPE_AVG_DATA: avg rcpi of data frames 8361*5113495bSYour Name * @RCPI_MEASUREMENT_TYPE_LAST_MGMT: rcpi of last mgmt frame 8362*5113495bSYour Name * @RCPI_MEASUREMENT_TYPE_LAST_DATA: rcpi of last data frame 8363*5113495bSYour Name * @RCPI_MEASUREMENT_TYPE_INVALID: invalid rcpi measurement type 8364*5113495bSYour Name */ 8365*5113495bSYour Name enum rcpi_measurement_type { 8366*5113495bSYour Name RCPI_MEASUREMENT_TYPE_AVG_MGMT = 0x1, 8367*5113495bSYour Name RCPI_MEASUREMENT_TYPE_AVG_DATA = 0x2, 8368*5113495bSYour Name RCPI_MEASUREMENT_TYPE_LAST_MGMT = 0x3, 8369*5113495bSYour Name RCPI_MEASUREMENT_TYPE_LAST_DATA = 0x4, 8370*5113495bSYour Name RCPI_MEASUREMENT_TYPE_INVALID = 0x5, 8371*5113495bSYour Name }; 8372*5113495bSYour Name 8373*5113495bSYour Name /** 8374*5113495bSYour Name * struct rcpi_req - RCPI req parameter 8375*5113495bSYour Name * @vdev_id: virtual device id 8376*5113495bSYour Name * @measurement_type: type of rcpi from enum wmi_rcpi_measurement_type 8377*5113495bSYour Name * @mac_addr: peer mac addr for which measurement is required 8378*5113495bSYour Name */ 8379*5113495bSYour Name struct rcpi_req { 8380*5113495bSYour Name uint32_t vdev_id; 8381*5113495bSYour Name enum rcpi_measurement_type measurement_type; 8382*5113495bSYour Name uint8_t mac_addr[QDF_MAC_ADDR_SIZE]; 8383*5113495bSYour Name }; 8384*5113495bSYour Name 8385*5113495bSYour Name /** 8386*5113495bSYour Name * struct rcpi_res - RCPI response parameter 8387*5113495bSYour Name * @vdev_id: virtual device id 8388*5113495bSYour Name * @measurement_type: type of rcpi from enum wmi_rcpi_measurement_type 8389*5113495bSYour Name * @mac_addr: peer mac addr for which measurement is required 8390*5113495bSYour Name * @rcpi_value: value of RCPI computed by firmware 8391*5113495bSYour Name */ 8392*5113495bSYour Name struct rcpi_res { 8393*5113495bSYour Name uint32_t vdev_id; 8394*5113495bSYour Name enum rcpi_measurement_type measurement_type; 8395*5113495bSYour Name uint8_t mac_addr[QDF_MAC_ADDR_SIZE]; 8396*5113495bSYour Name int32_t rcpi_value; 8397*5113495bSYour Name }; 8398*5113495bSYour Name 8399*5113495bSYour Name #define WMI_HOST_BOARD_MCN_STRING_MAX_SIZE 19 8400*5113495bSYour Name #define WMI_HOST_BOARD_MCN_STRING_BUF_SIZE \ 8401*5113495bSYour Name (WMI_HOST_BOARD_MCN_STRING_MAX_SIZE+1) /* null-terminator */ 8402*5113495bSYour Name 8403*5113495bSYour Name /** 8404*5113495bSYour Name * enum WMI_HOST_CALIBRATION_STATUS - Host defined Enums for cal status 8405*5113495bSYour Name * @WMI_HOST_NO_FEATURE: The board was calibrated with a meta 8406*5113495bSYour Name * which did not have this feature 8407*5113495bSYour Name * @WMI_HOST_CALIBRATION_OK: The calibration status is OK 8408*5113495bSYour Name * @WMI_HOST_CALIBRATION_NOT_OK: The calibration status is NOT OK 8409*5113495bSYour Name */ 8410*5113495bSYour Name enum WMI_HOST_CALIBRATION_STATUS { 8411*5113495bSYour Name WMI_HOST_NO_FEATURE = 0, 8412*5113495bSYour Name WMI_HOST_CALIBRATION_OK, 8413*5113495bSYour Name WMI_HOST_CALIBRATION_NOT_OK, 8414*5113495bSYour Name }; 8415*5113495bSYour Name 8416*5113495bSYour Name /** 8417*5113495bSYour Name * struct wmi_host_pdev_utf_event - Host defined struct to hold utf event data 8418*5113495bSYour Name * @data: Pointer to data 8419*5113495bSYour Name * @datalen: Data length 8420*5113495bSYour Name * @pdev_id: Pdev_id of data 8421*5113495bSYour Name * 8422*5113495bSYour Name */ 8423*5113495bSYour Name struct wmi_host_pdev_utf_event { 8424*5113495bSYour Name uint8_t *data; 8425*5113495bSYour Name uint16_t datalen; 8426*5113495bSYour Name uint32_t pdev_id; 8427*5113495bSYour Name }; 8428*5113495bSYour Name 8429*5113495bSYour Name /** 8430*5113495bSYour Name * struct wmi_host_utf_seg_header_info - Host defined struct to map seg info in 8431*5113495bSYour Name * UTF event 8432*5113495bSYour Name * @len: segment length 8433*5113495bSYour Name * @msgref: message reference 8434*5113495bSYour Name * @segment_info: segment info 8435*5113495bSYour Name * @pdev_id: pdev_id 8436*5113495bSYour Name * 8437*5113495bSYour Name */ 8438*5113495bSYour Name struct wmi_host_utf_seg_header_info { 8439*5113495bSYour Name uint32_t len; 8440*5113495bSYour Name uint32_t msgref; 8441*5113495bSYour Name uint32_t segment_info; 8442*5113495bSYour Name uint32_t pdev_id; 8443*5113495bSYour Name }; 8444*5113495bSYour Name 8445*5113495bSYour Name /** 8446*5113495bSYour Name * struct wmi_host_pdev_qvit_event - Host defined struct to hold qvit event data 8447*5113495bSYour Name * @data: Pointer to data 8448*5113495bSYour Name * @datalen: Data length 8449*5113495bSYour Name * @pdev_id: Pdev ID 8450*5113495bSYour Name */ 8451*5113495bSYour Name struct wmi_host_pdev_qvit_event { 8452*5113495bSYour Name uint8_t *data; 8453*5113495bSYour Name uint16_t datalen; 8454*5113495bSYour Name uint32_t pdev_id; 8455*5113495bSYour Name }; 8456*5113495bSYour Name 8457*5113495bSYour Name /** 8458*5113495bSYour Name * enum wmi_peer_create_status - Peer Create response status 8459*5113495bSYour Name * @WMI_PEER_CREATE_SUCCESS: Peer creation successful at fw 8460*5113495bSYour Name * @WMI_PEER_EXISTS: Peer with same mac exists at fw 8461*5113495bSYour Name * @WMI_PEER_CREATE_FAILED: Peer creation failed at fw 8462*5113495bSYour Name */ 8463*5113495bSYour Name enum wmi_peer_create_status { 8464*5113495bSYour Name WMI_PEER_CREATE_SUCCESS = 0, 8465*5113495bSYour Name WMI_PEER_EXISTS = 1, 8466*5113495bSYour Name WMI_PEER_CREATE_FAILED = 2, 8467*5113495bSYour Name }; 8468*5113495bSYour Name 8469*5113495bSYour Name /** 8470*5113495bSYour Name * struct wmi_host_dcs_interference_param - DCS interference param 8471*5113495bSYour Name * @interference_type: Type of DCS Interference 8472*5113495bSYour Name * @pdev_id: pdev id 8473*5113495bSYour Name */ 8474*5113495bSYour Name struct wmi_host_dcs_interference_param { 8475*5113495bSYour Name uint32_t interference_type; 8476*5113495bSYour Name uint32_t pdev_id; 8477*5113495bSYour Name }; 8478*5113495bSYour Name 8479*5113495bSYour Name /** 8480*5113495bSYour Name * struct wmi_host_rf_characterization_event_param - rf characterization table 8481*5113495bSYour Name * @freq: center frequency of primary channel (in MHz) 8482*5113495bSYour Name * @chan_metric: primary channel-specific metric 8483*5113495bSYour Name * @bw: bandwidth of primary channel (in MHz) 8484*5113495bSYour Name */ 8485*5113495bSYour Name struct wmi_host_rf_characterization_event_param { 8486*5113495bSYour Name uint16_t freq; 8487*5113495bSYour Name uint8_t chan_metric; 8488*5113495bSYour Name wmi_host_channel_width bw; 8489*5113495bSYour Name }; 8490*5113495bSYour Name 8491*5113495bSYour Name /* 8492*5113495bSYour Name * struct wmi_host_fips_event_param: FIPS event param 8493*5113495bSYour Name * @pdev_id: pdev id 8494*5113495bSYour Name * @error_status: Error status: 0 (no err), 1, or OPER_TIMEOUR 8495*5113495bSYour Name * @data_len: FIPS data length 8496*5113495bSYour Name * @data: pointer to data 8497*5113495bSYour Name */ 8498*5113495bSYour Name struct wmi_host_fips_event_param { 8499*5113495bSYour Name uint32_t pdev_id; 8500*5113495bSYour Name uint32_t error_status; 8501*5113495bSYour Name uint32_t data_len; 8502*5113495bSYour Name uint32_t *data; 8503*5113495bSYour Name }; 8504*5113495bSYour Name 8505*5113495bSYour Name #ifdef WLAN_FEATURE_FIPS_BER_CCMGCM 8506*5113495bSYour Name /* 8507*5113495bSYour Name * struct wmi_host_fips_extend_event_param: FIPS extend event param 8508*5113495bSYour Name * @pdev_id: pdev id 8509*5113495bSYour Name * @fips_cookie: fips_cookie 8510*5113495bSYour Name * @cmd_frag_idx: cmd_frag_idx 8511*5113495bSYour Name * @more_bit: more_bit 8512*5113495bSYour Name * @error_status: Error status: 0 (no err), 1, or OPER_TIMEOUR 8513*5113495bSYour Name * @data_len: FIPS data length 8514*5113495bSYour Name * @data: pointer to data 8515*5113495bSYour Name */ 8516*5113495bSYour Name struct wmi_host_fips_extend_event_param { 8517*5113495bSYour Name uint32_t pdev_id; 8518*5113495bSYour Name uint32_t fips_cookie; 8519*5113495bSYour Name uint32_t cmd_frag_idx; 8520*5113495bSYour Name uint32_t more_bit; 8521*5113495bSYour Name uint32_t error_status; 8522*5113495bSYour Name uint32_t data_len; 8523*5113495bSYour Name uint32_t *data; 8524*5113495bSYour Name }; 8525*5113495bSYour Name #endif 8526*5113495bSYour Name 8527*5113495bSYour Name #ifdef WLAN_FEATURE_DISA_FIPS 8528*5113495bSYour Name /** 8529*5113495bSYour Name * struct disa_encrypt_decrypt_resp_params - disa encrypt response 8530*5113495bSYour Name * @vdev_id: vdev id 8531*5113495bSYour Name * @status: status 8532*5113495bSYour Name * @data_len: data length 8533*5113495bSYour Name * @data: data pointer 8534*5113495bSYour Name */ 8535*5113495bSYour Name struct disa_encrypt_decrypt_resp_params { 8536*5113495bSYour Name uint32_t vdev_id; 8537*5113495bSYour Name int32_t status; 8538*5113495bSYour Name uint32_t data_len; 8539*5113495bSYour Name uint8_t *data; 8540*5113495bSYour Name }; 8541*5113495bSYour Name #endif 8542*5113495bSYour Name 8543*5113495bSYour Name /** 8544*5113495bSYour Name * struct wmi_host_proxy_ast_reserve_param 8545*5113495bSYour Name * @pdev_id: pdev id 8546*5113495bSYour Name * @result: result 8547*5113495bSYour Name */ 8548*5113495bSYour Name struct wmi_host_proxy_ast_reserve_param { 8549*5113495bSYour Name uint32_t pdev_id; 8550*5113495bSYour Name uint32_t result; 8551*5113495bSYour Name }; 8552*5113495bSYour Name 8553*5113495bSYour Name /** 8554*5113495bSYour Name * struct wmi_host_pdev_band_to_mac - freq range for mac 8555*5113495bSYour Name * @pdev_id: PDEV ID to identify mac 8556*5113495bSYour Name * @start_freq: start frequency value 8557*5113495bSYour Name * @end_freq: end frequency value 8558*5113495bSYour Name */ 8559*5113495bSYour Name struct wmi_host_pdev_band_to_mac { 8560*5113495bSYour Name uint32_t pdev_id; 8561*5113495bSYour Name uint32_t start_freq; 8562*5113495bSYour Name uint32_t end_freq; 8563*5113495bSYour Name }; 8564*5113495bSYour Name #define WMI_HOST_MAX_PDEV 3 8565*5113495bSYour Name 8566*5113495bSYour Name #ifdef OL_ATH_SMART_LOGGING 8567*5113495bSYour Name 8568*5113495bSYour Name #define WMI_HOST_SMART_LOG_SCENARIO_SET(flag, scenario) ((flag) |= (scenario)) 8569*5113495bSYour Name #define WMI_HOST_SMART_LOG_SCENARIO_GET(flag, scenario) ((flag) & (scenario)) 8570*5113495bSYour Name 8571*5113495bSYour Name /** 8572*5113495bSYour Name * enum wmi_host_smart_log_scenario - Smart log scenarios to be enabled/disabled 8573*5113495bSYour Name * @WMI_HOST_SMART_LOG_ALL: All smart logging features. 8574*5113495bSYour Name * @WMI_HOST_SMART_LOG_CE_FULL_DETECT_BY_FW: CE with full detect by FW. 8575*5113495bSYour Name * @WMI_HOST_SMART_LOG_TX_RX_TIMEOUT: Tx/Rx timeout. 8576*5113495bSYour Name * @WMI_HOST_SMART_LOG_STA_KICKOUT: STA Kickout. 8577*5113495bSYour Name * @WMI_HOST_SMART_LOG_BCN_CMD_FAILURE: Beacon command failure. 8578*5113495bSYour Name * @WMI_HOST_SMART_LOG_P1_PING_FAILURE: P1 ping failure. Ping failure detection 8579*5113495bSYour Name * is done by host entities. So, host should be able to control the 8580*5113495bSYour Name * enable/disable of this feature. Yet, this is provided in case the 8581*5113495bSYour Name * corresponding FW specific debugs alone have to be enabled/disabled. 8582*5113495bSYour Name * @WMI_HOST_SMART_LOG_CONNECTION_FAILURE: Connection failure. Connection 8583*5113495bSYour Name * failure detection is done by host entities. So, host should be able to 8584*5113495bSYour Name * control the enable/disable of this feature. Yet, this is provided in case the 8585*5113495bSYour Name * corresponding FW specific debugs alone have to be enabled/disabled. 8586*5113495bSYour Name * @WMI_HOST_SMART_LOG_FW_INITIATED_PKT_LOG: FW Initiated packetlog. 8587*5113495bSYour Name * @WMI_HOST_SMART_LOG_EXTENSION_1: If WMI_HOST_SMART_LOG_EXTENSION_1 is set, 8588*5113495bSYour Name * then the 'log_case_ext_1' field in 'wmi_smart_logging' is used; else 8589*5113495bSYour Name * log_case_ext_1 is ignored. 8590*5113495bSYour Name */ 8591*5113495bSYour Name enum wmi_host_smart_log_scenario { 8592*5113495bSYour Name WMI_HOST_SMART_LOG_ALL = 0x0, 8593*5113495bSYour Name WMI_HOST_SMART_LOG_CE_FULL_DETECT_BY_FW = 0x1, 8594*5113495bSYour Name WMI_HOST_SMART_LOG_TX_RX_TIMEOUT = 0x2, 8595*5113495bSYour Name WMI_HOST_SMART_LOG_STA_KICKOUT = 0x4, 8596*5113495bSYour Name WMI_HOST_SMART_LOG_BCN_CMD_FAILURE = 0x8, 8597*5113495bSYour Name WMI_HOST_SMART_LOG_P1_PING_FAILURE = 0x10, 8598*5113495bSYour Name WMI_HOST_SMART_LOG_CONNECTION_FAILURE = 0x20, 8599*5113495bSYour Name WMI_HOST_SMART_LOG_FW_INITIATED_PKT_LOG = 0x40, 8600*5113495bSYour Name 8601*5113495bSYour Name /* New scenarios to be added here */ 8602*5113495bSYour Name 8603*5113495bSYour Name WMI_HOST_SMART_LOG_EXTENSION_1 = 0x80000000, 8604*5113495bSYour Name }; 8605*5113495bSYour Name 8606*5113495bSYour Name /** 8607*5113495bSYour Name * struct wmi_fatal_condition_event - Fatal condition event param 8608*5113495bSYour Name * @type: Type of event 8609*5113495bSYour Name * @subtype: Subtype of event 8610*5113495bSYour Name * @reserved0: obsolete 8611*5113495bSYour Name * @type_subtype_specific_data: Data specific to combination of type and 8612*5113495bSYour Name * subtype. This is held in a union with the original "reserved0" for backward 8613*5113495bSYour Name * compatibility with any code that might refer to it. The previously-reserved 8614*5113495bSYour Name * field now holds data under some conditions. The kind of data depends on the 8615*5113495bSYour Name * above "type" and "subtype" fields. The interpretation of the 8616*5113495bSYour Name * type_subtype_specific_data field based on different type + subtype values is 8617*5113495bSYour Name * shown below: 8618*5113495bSYour Name * 1. type == WMI_HOST_FATAL_CONDITION_PACKET_LOG_CONFIG + subtype 8619*5113495bSYour Name * == WMI_HOST_FATAL_SUBTYPE_PACKET_LOG_CONFIG_START -> 8620*5113495bSYour Name * type_subtype_specific_data = WMI_HOST_PKTLOG_EVENT 8621*5113495bSYour Name * For any type+subtype combinations not listed above, the recipient is expected 8622*5113495bSYour Name * to ignore the type_subtype_specific_data field. 8623*5113495bSYour Name */ 8624*5113495bSYour Name struct wmi_fatal_condition_event { 8625*5113495bSYour Name uint32_t type; 8626*5113495bSYour Name uint32_t subtype; 8627*5113495bSYour Name union { 8628*5113495bSYour Name uint32_t reserved0; 8629*5113495bSYour Name uint32_t type_subtype_specific_data; 8630*5113495bSYour Name }; 8631*5113495bSYour Name }; 8632*5113495bSYour Name 8633*5113495bSYour Name /*Currently the Max fatal events is 3 */ 8634*5113495bSYour Name #define FATAL_EVENTS_MAX 3 8635*5113495bSYour Name 8636*5113495bSYour Name /** 8637*5113495bSYour Name * struct wmi_debug_fatal_events - Fatal events list 8638*5113495bSYour Name * @num_events:Number of events 8639*5113495bSYour Name * @event: Each event data 8640*5113495bSYour Name */ 8641*5113495bSYour Name struct wmi_debug_fatal_events { 8642*5113495bSYour Name uint32_t num_events; 8643*5113495bSYour Name struct wmi_fatal_condition_event event[FATAL_EVENTS_MAX]; 8644*5113495bSYour Name }; 8645*5113495bSYour Name 8646*5113495bSYour Name /** 8647*5113495bSYour Name * enum wmi_host_fatal_condition_type - Values that 'type' can take in 8648*5113495bSYour Name * wmi_fatal_condition_event 8649*5113495bSYour Name * @WMI_HOST_FATAL_CONDITION_EVENT_COMPLETION: Fatal condition event completion 8650*5113495bSYour Name * @WMI_HOST_FATAL_CONDITION_CE_FAILURE: CE failure 8651*5113495bSYour Name * @WMI_HOST_FATAL_CONDITION_TIMEOUTS: Communication timeouts 8652*5113495bSYour Name * @WMI_HOST_FATAL_CONDITION_CONNECTION_ISSUE: Connection issue 8653*5113495bSYour Name * @WMI_HOST_FATAL_CONDITION_PACKET_LOG_CONFIG: Configuration for FW initiated 8654*5113495bSYour Name * packetlog 8655*5113495bSYour Name */ 8656*5113495bSYour Name enum wmi_host_fatal_condition_type { 8657*5113495bSYour Name WMI_HOST_FATAL_CONDITION_EVENT_COMPLETION, 8658*5113495bSYour Name WMI_HOST_FATAL_CONDITION_CE_FAILURE, 8659*5113495bSYour Name WMI_HOST_FATAL_CONDITION_TIMEOUTS, 8660*5113495bSYour Name WMI_HOST_FATAL_CONDITION_CONNECTION_ISSUE, 8661*5113495bSYour Name WMI_HOST_FATAL_CONDITION_PACKET_LOG_CONFIG, 8662*5113495bSYour Name }; 8663*5113495bSYour Name 8664*5113495bSYour Name /** 8665*5113495bSYour Name * enum wmi_host_fatal_condition_subtype_timeouts - Possible subtypes for 8666*5113495bSYour Name * WMI_HOST_FATAL_CONDITION_TIMEOUTS 8667*5113495bSYour Name * @WMI_HOST_FATAL_SUBTYPE_TX_TIMEOUT: Tx timeout 8668*5113495bSYour Name * @WMI_HOST_FATAL_SUBTYPE_RX_TIMEOUT: Rx timeout 8669*5113495bSYour Name */ 8670*5113495bSYour Name enum wmi_host_fatal_condition_subtype_timeouts { 8671*5113495bSYour Name WMI_HOST_FATAL_SUBTYPE_TX_TIMEOUT, 8672*5113495bSYour Name WMI_HOST_FATAL_SUBTYPE_RX_TIMEOUT, 8673*5113495bSYour Name }; 8674*5113495bSYour Name 8675*5113495bSYour Name /** 8676*5113495bSYour Name * enum wmi_host_fatal_condition_subtype_connection_issue - Possible subtypes 8677*5113495bSYour Name * for WMI_HOST_FATAL_CONDITION_CONNECTION_ISSUE 8678*5113495bSYour Name * @WMI_HOST_FATAL_SUBTYPE_STA_KICKOUT: STA Kickout 8679*5113495bSYour Name * @WMI_HOST_FATAL_SUBTYPE_P1_PING_FAILURE_START_DEBUG: Start debugging for P1 8680*5113495bSYour Name * ping failure 8681*5113495bSYour Name * @WMI_HOST_FATAL_SUBTYPE_P1_PING_FAILURE_STOP_DEBUG: Stop debugging for P1 8682*5113495bSYour Name * ping failure 8683*5113495bSYour Name * @WMI_HOST_FATAL_SUBTYPE_CONNECTION_FAILURE_START_DEBUG: Start debugging for 8684*5113495bSYour Name * connection failure 8685*5113495bSYour Name * @WMI_HOST_FATAL_SUBTYPE_CONNECTION_FAILURE_STOP_DEBUG: Stop debugging for 8686*5113495bSYour Name * connection failure 8687*5113495bSYour Name */ 8688*5113495bSYour Name enum wmi_host_fatal_condition_subtype_connection_issue { 8689*5113495bSYour Name WMI_HOST_FATAL_SUBTYPE_STA_KICKOUT, 8690*5113495bSYour Name WMI_HOST_FATAL_SUBTYPE_P1_PING_FAILURE_START_DEBUG, 8691*5113495bSYour Name WMI_HOST_FATAL_SUBTYPE_P1_PING_FAILURE_STOP_DEBUG, 8692*5113495bSYour Name WMI_HOST_FATAL_SUBTYPE_CONNECTION_FAILURE_START_DEBUG, 8693*5113495bSYour Name WMI_HOST_FATAL_SUBTYPE_CONNECTION_FAILURE_STOP_DEBUG, 8694*5113495bSYour Name }; 8695*5113495bSYour Name 8696*5113495bSYour Name /** 8697*5113495bSYour Name * enum wmi_host_fatal_condition_subtype_packet_log_config - Possible subtypes 8698*5113495bSYour Name * for WMI_HOST_FATAL_CONDITION_PACKET_LOG_CONFIG 8699*5113495bSYour Name * @WMI_HOST_FATAL_SUBTYPE_PACKET_LOG_CONFIG_START: Start FW initiated packetlog 8700*5113495bSYour Name * @WMI_HOST_FATAL_SUBTYPE_PACKET_LOG_CONFIG_STOP: Stop FW initiated packetlog 8701*5113495bSYour Name */ 8702*5113495bSYour Name enum wmi_host_fatal_condition_subtype_packet_log_config { 8703*5113495bSYour Name WMI_HOST_FATAL_SUBTYPE_PACKET_LOG_CONFIG_START, 8704*5113495bSYour Name WMI_HOST_FATAL_SUBTYPE_PACKET_LOG_CONFIG_STOP, 8705*5113495bSYour Name }; 8706*5113495bSYour Name 8707*5113495bSYour Name #endif /* OL_ATH_SMART_LOGGING */ 8708*5113495bSYour Name 8709*5113495bSYour Name #define GET_PN_MAX_LEN 16 8710*5113495bSYour Name #define GET_RX_PN_MAX_LEN 8 8711*5113495bSYour Name 8712*5113495bSYour Name /** 8713*5113495bSYour Name * struct wmi_host_get_pn_event - PN event params 8714*5113495bSYour Name * @vdev_id: vdev id 8715*5113495bSYour Name * @mac_addr: Peer mac address 8716*5113495bSYour Name * @key_ix: Key index 8717*5113495bSYour Name * @key_type: key type 8718*5113495bSYour Name * @pn: pn value 8719*5113495bSYour Name */ 8720*5113495bSYour Name struct wmi_host_get_pn_event { 8721*5113495bSYour Name uint32_t vdev_id; 8722*5113495bSYour Name uint8_t mac_addr[QDF_MAC_ADDR_SIZE]; 8723*5113495bSYour Name uint8_t key_ix; 8724*5113495bSYour Name uint32_t key_type; 8725*5113495bSYour Name uint8_t pn[GET_PN_MAX_LEN]; 8726*5113495bSYour Name }; 8727*5113495bSYour Name 8728*5113495bSYour Name /** 8729*5113495bSYour Name * struct wmi_host_get_rxpn_event - Rx PN event params 8730*5113495bSYour Name * @vdev_id: vdev id 8731*5113495bSYour Name * @mac_addr: Peer mac address 8732*5113495bSYour Name * @keyix: key index 8733*5113495bSYour Name * @pn: pn value 8734*5113495bSYour Name */ 8735*5113495bSYour Name struct wmi_host_get_rxpn_event { 8736*5113495bSYour Name uint32_t vdev_id; 8737*5113495bSYour Name uint8_t mac_addr[QDF_MAC_ADDR_SIZE]; 8738*5113495bSYour Name uint16_t keyix; 8739*5113495bSYour Name uint8_t pn[GET_RX_PN_MAX_LEN]; 8740*5113495bSYour Name }; 8741*5113495bSYour Name 8742*5113495bSYour Name /** 8743*5113495bSYour Name * struct wmi_init_cmd_param - INIT command params 8744*5113495bSYour Name * @res_cfg: pointer to resource config 8745*5113495bSYour Name * @num_mem_chunks: number of memory chunks 8746*5113495bSYour Name * @mem_chunks: pointer to memory chunks 8747*5113495bSYour Name * @hw_mode_id: HW mode index chosen 8748*5113495bSYour Name * @num_band_to_mac: Number of band to mac setting 8749*5113495bSYour Name * @band_to_mac: band to mac setting 8750*5113495bSYour Name */ 8751*5113495bSYour Name struct wmi_init_cmd_param { 8752*5113495bSYour Name target_resource_config *res_cfg; 8753*5113495bSYour Name uint8_t num_mem_chunks; 8754*5113495bSYour Name struct wmi_host_mem_chunk *mem_chunks; 8755*5113495bSYour Name uint32_t hw_mode_id; 8756*5113495bSYour Name uint32_t num_band_to_mac; 8757*5113495bSYour Name struct wmi_host_pdev_band_to_mac band_to_mac[WMI_HOST_MAX_PDEV]; 8758*5113495bSYour Name }; 8759*5113495bSYour Name 8760*5113495bSYour Name /** 8761*5113495bSYour Name * struct pdev_csa_switch_count_status - CSA switch count status event param 8762*5113495bSYour Name * @pdev_id: Physical device identifier 8763*5113495bSYour Name * @current_switch_count: Current CSA switch count 8764*5113495bSYour Name * @num_vdevs: Number of vdevs that need restart 8765*5113495bSYour Name * @vdev_ids: Array containing the vdev ids that need restart 8766*5113495bSYour Name */ 8767*5113495bSYour Name struct pdev_csa_switch_count_status { 8768*5113495bSYour Name uint32_t pdev_id; 8769*5113495bSYour Name uint32_t current_switch_count; 8770*5113495bSYour Name uint32_t num_vdevs; 8771*5113495bSYour Name uint32_t *vdev_ids; 8772*5113495bSYour Name }; 8773*5113495bSYour Name 8774*5113495bSYour Name /** 8775*5113495bSYour Name * enum wmi_host_active_apf_mode - FW_ACTIVE_APF_MODE, replicated from FW header 8776*5113495bSYour Name * @WMI_HOST_ACTIVE_APF_DISABLED: APF is disabled for all packets in active mode 8777*5113495bSYour Name * @WMI_HOST_ACTIVE_APF_ENABLED: APF is enabled for all packets in active mode 8778*5113495bSYour Name * @WMI_HOST_ACTIVE_APF_ADAPTIVE: APF is enabled for packets up to some 8779*5113495bSYour Name * threshold in active mode 8780*5113495bSYour Name */ 8781*5113495bSYour Name enum wmi_host_active_apf_mode { 8782*5113495bSYour Name WMI_HOST_ACTIVE_APF_DISABLED = (1 << 1), 8783*5113495bSYour Name WMI_HOST_ACTIVE_APF_ENABLED = (1 << 2), 8784*5113495bSYour Name WMI_HOST_ACTIVE_APF_ADAPTIVE = (1 << 3) 8785*5113495bSYour Name }; 8786*5113495bSYour Name 8787*5113495bSYour Name /** 8788*5113495bSYour Name * struct coex_config_params - Coex config command params 8789*5113495bSYour Name * @vdev_id: Virtual AP device identifier 8790*5113495bSYour Name * @config_type: Configuration type - wmi_coex_config_type enum 8791*5113495bSYour Name * @config_arg1: Configuration argument based on config type 8792*5113495bSYour Name * @config_arg2: Configuration argument based on config type 8793*5113495bSYour Name * @config_arg3: Configuration argument based on config type 8794*5113495bSYour Name * @config_arg4: Configuration argument based on config type 8795*5113495bSYour Name * @config_arg5: Configuration argument based on config type 8796*5113495bSYour Name * @config_arg6: Configuration argument based on config type 8797*5113495bSYour Name */ 8798*5113495bSYour Name struct coex_config_params { 8799*5113495bSYour Name uint32_t vdev_id; 8800*5113495bSYour Name uint32_t config_type; 8801*5113495bSYour Name uint32_t config_arg1; 8802*5113495bSYour Name uint32_t config_arg2; 8803*5113495bSYour Name uint32_t config_arg3; 8804*5113495bSYour Name uint32_t config_arg4; 8805*5113495bSYour Name uint32_t config_arg5; 8806*5113495bSYour Name uint32_t config_arg6; 8807*5113495bSYour Name }; 8808*5113495bSYour Name 8809*5113495bSYour Name /** 8810*5113495bSYour Name * struct coex_config_item - Multiple coex config item 8811*5113495bSYour Name * @config_type: Configuration type - wmi_coex_config_type enum 8812*5113495bSYour Name * @config_arg1: Configuration argument based on config type 8813*5113495bSYour Name * @config_arg2: Configuration argument based on config type 8814*5113495bSYour Name * @config_arg3: Configuration argument based on config type 8815*5113495bSYour Name * @config_arg4: Configuration argument based on config type 8816*5113495bSYour Name * @config_arg5: Configuration argument based on config type 8817*5113495bSYour Name * @config_arg6: Configuration argument based on config type 8818*5113495bSYour Name */ 8819*5113495bSYour Name struct coex_config_item { 8820*5113495bSYour Name uint32_t config_type; 8821*5113495bSYour Name uint32_t config_arg1; 8822*5113495bSYour Name uint32_t config_arg2; 8823*5113495bSYour Name uint32_t config_arg3; 8824*5113495bSYour Name uint32_t config_arg4; 8825*5113495bSYour Name uint32_t config_arg5; 8826*5113495bSYour Name uint32_t config_arg6; 8827*5113495bSYour Name }; 8828*5113495bSYour Name 8829*5113495bSYour Name #define COEX_MULTI_CONFIG_MAX_CNT 32 8830*5113495bSYour Name 8831*5113495bSYour Name /** 8832*5113495bSYour Name * struct coex_multi_config - Multiple coex config command parameters 8833*5113495bSYour Name * @vdev_id: Vdev id 8834*5113495bSYour Name * @num_configs: Number of config items 8835*5113495bSYour Name * @cfg_items: Array of coex config items 8836*5113495bSYour Name */ 8837*5113495bSYour Name struct coex_multi_config { 8838*5113495bSYour Name uint32_t vdev_id; 8839*5113495bSYour Name uint32_t num_configs; 8840*5113495bSYour Name struct coex_config_item cfg_items[COEX_MULTI_CONFIG_MAX_CNT]; 8841*5113495bSYour Name }; 8842*5113495bSYour Name 8843*5113495bSYour Name #define WMI_HOST_PDEV_ID_SOC 0xFF 8844*5113495bSYour Name #define WMI_HOST_PDEV_ID_0 0 8845*5113495bSYour Name #define WMI_HOST_PDEV_ID_1 1 8846*5113495bSYour Name #define WMI_HOST_PDEV_ID_2 2 8847*5113495bSYour Name #define WMI_HOST_PDEV_ID_INVALID 0xFFFFFFFF 8848*5113495bSYour Name 8849*5113495bSYour Name /** 8850*5113495bSYour Name * struct wmi_host_ready_ev_param - Data revieved in ready event 8851*5113495bSYour Name * @status: FW init status. Success or Failure. 8852*5113495bSYour Name * @num_dscp_table: Number of DSCP table supported in FW 8853*5113495bSYour Name * @num_extra_mac_addr: Extra mac address present in ready event. Used 8854*5113495bSYour Name * in DBDC mode to provide multiple mac per pdev. 8855*5113495bSYour Name * @num_total_peer: Total number of peers FW could allocate. Zero means 8856*5113495bSYour Name * FW could allocate num peers requested by host in init. 8857*5113495bSYour Name * Otherwise, host need update it max_peer to this value. 8858*5113495bSYour Name * @num_extra_peer: Number of extra peers created and used within FW. Host 8859*5113495bSYour Name * should expect peer_id can be num_total_peer + num_extra_peer 8860*5113495bSYour Name * but it can create only upto num_total_peer. 8861*5113495bSYour Name * @agile_capability: Boolean specification of whether the target supports 8862*5113495bSYour Name * agile DFS, by means of using one 80 MHz radio chain for 8863*5113495bSYour Name * radar detection, concurrently with using another radio 8864*5113495bSYour Name * chain for non-160 MHz regular operation. 8865*5113495bSYour Name * @max_ast_index: Max number of AST entries that FW could allocate. 8866*5113495bSYour Name * @pktlog_defs_checksum: checksum computed from the definitions of the enums 8867*5113495bSYour Name * and structs used within pktlog traces. This is sent 8868*5113495bSYour Name * from the FW as part of FW ready event and needs 8869*5113495bSYour Name * to be embedded in the pktlog buffer header as version. 8870*5113495bSYour Name * @num_max_active_vdevs: number of max active virtual devices (VAPs) to 8871*5113495bSYour Name * support 8872*5113495bSYour Name */ 8873*5113495bSYour Name struct wmi_host_ready_ev_param { 8874*5113495bSYour Name uint32_t status; 8875*5113495bSYour Name uint32_t num_dscp_table; 8876*5113495bSYour Name uint32_t num_extra_mac_addr; 8877*5113495bSYour Name uint32_t num_total_peer; 8878*5113495bSYour Name uint32_t num_extra_peer; 8879*5113495bSYour Name bool agile_capability; 8880*5113495bSYour Name uint32_t max_ast_index; 8881*5113495bSYour Name uint32_t pktlog_defs_checksum; 8882*5113495bSYour Name uint32_t num_max_active_vdevs; 8883*5113495bSYour Name }; 8884*5113495bSYour Name 8885*5113495bSYour Name enum bcn_offload_control_param { 8886*5113495bSYour Name BCN_OFFLD_CTRL_TX_DISABLE = 0, 8887*5113495bSYour Name BCN_OFFLD_CTRL_TX_ENABLE, 8888*5113495bSYour Name BCN_OFFLD_CTRL_SWBA_DISABLE, 8889*5113495bSYour Name BCN_OFFLD_CTRL_SWBA_ENABLE, 8890*5113495bSYour Name }; 8891*5113495bSYour Name 8892*5113495bSYour Name #ifdef OBSS_PD 8893*5113495bSYour Name /** 8894*5113495bSYour Name * struct wmi_host_obss_spatial_reuse_set_param - OBSS_PD_SPATIAL Reuse 8895*5113495bSYour Name * structure 8896*5113495bSYour Name * @enable: Enable/Disable Spatial Reuse 8897*5113495bSYour Name * @obss_min: Minimum OBSS level to use 8898*5113495bSYour Name * @obss_max: Maximum OBSS level to use 8899*5113495bSYour Name * @vdev_id: Vdev id 8900*5113495bSYour Name */ 8901*5113495bSYour Name struct wmi_host_obss_spatial_reuse_set_param { 8902*5113495bSYour Name uint32_t enable; 8903*5113495bSYour Name int32_t obss_min; 8904*5113495bSYour Name int32_t obss_max; 8905*5113495bSYour Name uint32_t vdev_id; 8906*5113495bSYour Name }; 8907*5113495bSYour Name 8908*5113495bSYour Name /** 8909*5113495bSYour Name * struct wmi_host_obss_spatial_reuse_set_def_thresh - default obsspd offsets 8910*5113495bSYour Name * @obss_min: Minimum OBSS level to use 8911*5113495bSYour Name * @obss_max: Maximum OBSS level to use 8912*5113495bSYour Name * @vdev_type: vdev_type should be one of WMI_VDEV_TYPE_STA or WMI_VDEV_TYPE_AP 8913*5113495bSYour Name */ 8914*5113495bSYour Name struct wmi_host_obss_spatial_reuse_set_def_thresh { 8915*5113495bSYour Name int32_t obss_min; 8916*5113495bSYour Name int32_t obss_max; 8917*5113495bSYour Name uint32_t vdev_type; 8918*5113495bSYour Name }; 8919*5113495bSYour Name #endif 8920*5113495bSYour Name 8921*5113495bSYour Name /** 8922*5113495bSYour Name * struct wmi_host_injector_frame_params - Injector frame configuration params 8923*5113495bSYour Name * @vdev_id: vdev identifier of VAP 8924*5113495bSYour Name * @enable: Enable/disable flag for the frame 8925*5113495bSYour Name * @frame_type: Frame type to be enabled 8926*5113495bSYour Name * @frame_inject_period: Periodicity of injector frame transmission in msecs 8927*5113495bSYour Name * @frame_duration: Frame Duration field in usecs 8928*5113495bSYour Name * @frame_bw: Bandwidth of the injected frame 8929*5113495bSYour Name * @dstmac: Destination address to be used for the frame 8930*5113495bSYour Name */ 8931*5113495bSYour Name struct wmi_host_injector_frame_params { 8932*5113495bSYour Name uint32_t vdev_id; 8933*5113495bSYour Name uint32_t enable; 8934*5113495bSYour Name uint32_t frame_type; 8935*5113495bSYour Name uint32_t frame_inject_period; 8936*5113495bSYour Name uint32_t frame_duration; 8937*5113495bSYour Name uint32_t frame_bw; 8938*5113495bSYour Name uint8_t dstmac[QDF_MAC_ADDR_SIZE]; 8939*5113495bSYour Name }; 8940*5113495bSYour Name 8941*5113495bSYour Name /** 8942*5113495bSYour Name * struct wdsentry - WDS entry structure 8943*5113495bSYour Name * @peer_mac: peer mac 8944*5113495bSYour Name * @wds_mac: wds mac address 8945*5113495bSYour Name * @flags: flags 8946*5113495bSYour Name */ 8947*5113495bSYour Name struct wdsentry { 8948*5113495bSYour Name u_int8_t peer_mac[QDF_MAC_ADDR_SIZE]; 8949*5113495bSYour Name u_int8_t wds_mac[QDF_MAC_ADDR_SIZE]; 8950*5113495bSYour Name uint32_t flags; 8951*5113495bSYour Name }; 8952*5113495bSYour Name 8953*5113495bSYour Name /** 8954*5113495bSYour Name * struct wmi_obss_detection_cfg_param - obss detection cfg 8955*5113495bSYour Name * @vdev_id: vdev id 8956*5113495bSYour Name * @obss_detect_period_ms: detection period in ms 8957*5113495bSYour Name * @obss_11b_ap_detect_mode: detect whether there is 11b ap/ibss 8958*5113495bSYour Name * @obss_11b_sta_detect_mode: detect whether there is 11b sta 8959*5113495bSYour Name * connected with other APs 8960*5113495bSYour Name * @obss_11g_ap_detect_mode: detect whether there is 11g AP 8961*5113495bSYour Name * @obss_11a_detect_mode: detect whether there is legacy 11a traffic 8962*5113495bSYour Name * @obss_ht_legacy_detect_mode: detect whether there is ap which is 8963*5113495bSYour Name * ht legacy mode 8964*5113495bSYour Name * @obss_ht_mixed_detect_mode: detect whether there is ap which is ht mixed mode 8965*5113495bSYour Name * @obss_ht_20mhz_detect_mode: detect whether there is ap which has 20M only 8966*5113495bSYour Name * station 8967*5113495bSYour Name */ 8968*5113495bSYour Name struct wmi_obss_detection_cfg_param { 8969*5113495bSYour Name uint32_t vdev_id; 8970*5113495bSYour Name uint32_t obss_detect_period_ms; 8971*5113495bSYour Name uint32_t obss_11b_ap_detect_mode; 8972*5113495bSYour Name uint32_t obss_11b_sta_detect_mode; 8973*5113495bSYour Name uint32_t obss_11g_ap_detect_mode; 8974*5113495bSYour Name uint32_t obss_11a_detect_mode; 8975*5113495bSYour Name uint32_t obss_ht_legacy_detect_mode; 8976*5113495bSYour Name uint32_t obss_ht_mixed_detect_mode; 8977*5113495bSYour Name uint32_t obss_ht_20mhz_detect_mode; 8978*5113495bSYour Name }; 8979*5113495bSYour Name 8980*5113495bSYour Name /** 8981*5113495bSYour Name * enum wmi_obss_detection_reason - obss detection event reasons 8982*5113495bSYour Name * @OBSS_OFFLOAD_DETECTION_DISABLED: OBSS detection disabled 8983*5113495bSYour Name * @OBSS_OFFLOAD_DETECTION_PRESENT: OBSS present detection 8984*5113495bSYour Name * @OBSS_OFFLOAD_DETECTION_ABSENT: OBSS absent detection 8985*5113495bSYour Name * 8986*5113495bSYour Name * Defines different types of reasons for obss detection event from firmware. 8987*5113495bSYour Name */ 8988*5113495bSYour Name enum wmi_obss_detection_reason { 8989*5113495bSYour Name OBSS_OFFLOAD_DETECTION_DISABLED = 0, 8990*5113495bSYour Name OBSS_OFFLOAD_DETECTION_PRESENT = 1, 8991*5113495bSYour Name OBSS_OFFLOAD_DETECTION_ABSENT = 2, 8992*5113495bSYour Name }; 8993*5113495bSYour Name 8994*5113495bSYour Name /** 8995*5113495bSYour Name * struct wmi_obss_detect_info - OBSS detection info from firmware 8996*5113495bSYour Name * @vdev_id: ID of the vdev to which this info belongs. 8997*5113495bSYour Name * @reason: Indicate if present or Absent detection, 8998*5113495bSYour Name * also if not supported offload for this vdev. 8999*5113495bSYour Name * @matched_detection_masks: Detection bit map. 9000*5113495bSYour Name * @matched_bssid_addr: MAC address valid for only if info is present detection. 9001*5113495bSYour Name */ 9002*5113495bSYour Name struct wmi_obss_detect_info { 9003*5113495bSYour Name uint32_t vdev_id; 9004*5113495bSYour Name enum wmi_obss_detection_reason reason; 9005*5113495bSYour Name uint32_t matched_detection_masks; 9006*5113495bSYour Name uint8_t matched_bssid_addr[QDF_MAC_ADDR_SIZE]; 9007*5113495bSYour Name }; 9008*5113495bSYour Name 9009*5113495bSYour Name #ifdef QCA_SUPPORT_CP_STATS 9010*5113495bSYour Name /** 9011*5113495bSYour Name * struct wmi_host_congestion_stats - host definition of congestion stats 9012*5113495bSYour Name * @vdev_id: ID of the vdev to which this info belongs. 9013*5113495bSYour Name * @congestion: This field holds the congestion percentage = 9014*5113495bSYour Name * (busy_time/total_time)*100 9015*5113495bSYour Name * for the interval from when the vdev was started to the current time 9016*5113495bSYour Name * (or the time at which the vdev was stopped). 9017*5113495bSYour Name */ 9018*5113495bSYour Name struct wmi_host_congestion_stats { 9019*5113495bSYour Name uint32_t vdev_id; 9020*5113495bSYour Name uint32_t congestion; 9021*5113495bSYour Name }; 9022*5113495bSYour Name #endif 9023*5113495bSYour Name 9024*5113495bSYour Name #ifdef FEATURE_WLAN_APF 9025*5113495bSYour Name /** 9026*5113495bSYour Name * struct wmi_apf_write_memory_params - Android Packet Filter write memory 9027*5113495bSYour Name * params 9028*5113495bSYour Name * @vdev_id: VDEV on which APF memory is to be written 9029*5113495bSYour Name * @apf_version: APF version number 9030*5113495bSYour Name * @program_len: Length reserved for program in the APF work memory 9031*5113495bSYour Name * @addr_offset: Relative address in APF work memory to start writing 9032*5113495bSYour Name * @length: Size of the write 9033*5113495bSYour Name * @buf: Pointer to the buffer 9034*5113495bSYour Name */ 9035*5113495bSYour Name struct wmi_apf_write_memory_params { 9036*5113495bSYour Name uint8_t vdev_id; 9037*5113495bSYour Name uint32_t apf_version; 9038*5113495bSYour Name uint32_t program_len; 9039*5113495bSYour Name uint32_t addr_offset; 9040*5113495bSYour Name uint32_t length; 9041*5113495bSYour Name uint8_t *buf; 9042*5113495bSYour Name }; 9043*5113495bSYour Name 9044*5113495bSYour Name /** 9045*5113495bSYour Name * struct wmi_apf_read_memory_params - Android Packet Filter read memory params 9046*5113495bSYour Name * @vdev_id: vdev id 9047*5113495bSYour Name * @addr_offset: Relative address in APF work memory to read from 9048*5113495bSYour Name * @length: Size of the memory fetch 9049*5113495bSYour Name */ 9050*5113495bSYour Name struct wmi_apf_read_memory_params { 9051*5113495bSYour Name uint8_t vdev_id; 9052*5113495bSYour Name uint32_t addr_offset; 9053*5113495bSYour Name uint32_t length; 9054*5113495bSYour Name }; 9055*5113495bSYour Name 9056*5113495bSYour Name /** 9057*5113495bSYour Name * struct wmi_apf_read_memory_resp_event_params - Event containing read Android 9058*5113495bSYour Name * Packet Filter memory response 9059*5113495bSYour Name * @vdev_id: vdev id 9060*5113495bSYour Name * @offset: Read memory offset 9061*5113495bSYour Name * @length: Read memory length 9062*5113495bSYour Name * @more_data: Indicates more data to come 9063*5113495bSYour Name * @data: Pointer to the data 9064*5113495bSYour Name */ 9065*5113495bSYour Name struct wmi_apf_read_memory_resp_event_params { 9066*5113495bSYour Name uint32_t vdev_id; 9067*5113495bSYour Name uint32_t offset; 9068*5113495bSYour Name uint32_t length; 9069*5113495bSYour Name bool more_data; 9070*5113495bSYour Name uint8_t *data; 9071*5113495bSYour Name }; 9072*5113495bSYour Name #endif /* FEATURE_WLAN_APF */ 9073*5113495bSYour Name 9074*5113495bSYour Name /* vdev control flags (per bits) */ 9075*5113495bSYour Name #define WMI_HOST_VDEV_FLAGS_NON_MBSSID_AP 0x00000001 9076*5113495bSYour Name #define WMI_HOST_VDEV_FLAGS_TRANSMIT_AP 0x00000002 9077*5113495bSYour Name #define WMI_HOST_VDEV_FLAGS_NON_TRANSMIT_AP 0x00000004 9078*5113495bSYour Name 9079*5113495bSYour Name /* Begin of roam scan stats definitions */ 9080*5113495bSYour Name 9081*5113495bSYour Name #define WMI_ROAM_SCAN_STATS_MAX 5 9082*5113495bSYour Name #define WMI_ROAM_SCAN_STATS_CANDIDATES_MAX 4 9083*5113495bSYour Name #define WMI_ROAM_SCAN_STATS_CHANNELS_MAX 50 9084*5113495bSYour Name 9085*5113495bSYour Name /** 9086*5113495bSYour Name * struct wmi_roam_scan_stats_req - Structure to hold roam scan stats request 9087*5113495bSYour Name * @vdev_id: interface id 9088*5113495bSYour Name */ 9089*5113495bSYour Name struct wmi_roam_scan_stats_req { 9090*5113495bSYour Name uint32_t vdev_id; 9091*5113495bSYour Name }; 9092*5113495bSYour Name 9093*5113495bSYour Name /** 9094*5113495bSYour Name * struct wmi_roam_scan_cand - Roam scan candidates 9095*5113495bSYour Name * @score: score of AP 9096*5113495bSYour Name * @rssi: rssi of the AP 9097*5113495bSYour Name * @freq: center frequency 9098*5113495bSYour Name * @bssid: bssid of AP 9099*5113495bSYour Name */ 9100*5113495bSYour Name struct wmi_roam_scan_cand { 9101*5113495bSYour Name uint32_t score; 9102*5113495bSYour Name uint32_t rssi; 9103*5113495bSYour Name uint32_t freq; 9104*5113495bSYour Name uint8_t bssid[QDF_MAC_ADDR_SIZE]; 9105*5113495bSYour Name }; 9106*5113495bSYour Name 9107*5113495bSYour Name /** 9108*5113495bSYour Name * struct wmi_roam_scan_stats_params - Roam scan details 9109*5113495bSYour Name * @time_stamp: time at which this roam scan happened 9110*5113495bSYour Name * @client_id: id of client which triggered this scan 9111*5113495bSYour Name * @num_scan_chans: number of channels that were scanned as part of this scan 9112*5113495bSYour Name * @scan_freqs: frequencies of the channels that were scanned 9113*5113495bSYour Name * @is_roam_successful: whether a successful roaming happened after this scan 9114*5113495bSYour Name * @old_bssid: bssid to which STA is connected just before this scan 9115*5113495bSYour Name * @new_bssid: bssid to which STA is roamed to in case of successful roaming 9116*5113495bSYour Name * @num_roam_candidates: no.of roam candidates that are being reported 9117*5113495bSYour Name * @cand: roam scan candidate details 9118*5113495bSYour Name * @trigger_id: reason for triggering this roam or roam scan 9119*5113495bSYour Name * @trigger_value: threshold value related to trigger_id 9120*5113495bSYour Name */ 9121*5113495bSYour Name struct wmi_roam_scan_stats_params { 9122*5113495bSYour Name uint64_t time_stamp; 9123*5113495bSYour Name uint32_t client_id; 9124*5113495bSYour Name uint32_t num_scan_chans; 9125*5113495bSYour Name uint32_t scan_freqs[WMI_ROAM_SCAN_STATS_CHANNELS_MAX]; 9126*5113495bSYour Name uint32_t is_roam_successful; 9127*5113495bSYour Name 9128*5113495bSYour Name /* Bssid to which STA is connected when the roam scan is triggered */ 9129*5113495bSYour Name uint8_t old_bssid[QDF_MAC_ADDR_SIZE]; 9130*5113495bSYour Name 9131*5113495bSYour Name /* 9132*5113495bSYour Name * Bssid to which STA is connected after roaming. Will be valid only 9133*5113495bSYour Name * if is_roam_successful is true. 9134*5113495bSYour Name */ 9135*5113495bSYour Name uint8_t new_bssid[QDF_MAC_ADDR_SIZE]; 9136*5113495bSYour Name 9137*5113495bSYour Name /* Number of roam candidates that are being reported in the stats */ 9138*5113495bSYour Name uint32_t num_roam_candidates; 9139*5113495bSYour Name struct wmi_roam_scan_cand cand[WMI_ROAM_SCAN_STATS_CANDIDATES_MAX]; 9140*5113495bSYour Name uint32_t trigger_id; 9141*5113495bSYour Name uint32_t trigger_value; 9142*5113495bSYour Name }; 9143*5113495bSYour Name 9144*5113495bSYour Name /** 9145*5113495bSYour Name * struct wmi_roam_scan_stats_res - Roam scan stats response from firmware 9146*5113495bSYour Name * @num_roam_scans: number of roam scans triggered 9147*5113495bSYour Name * @roam_scan: place holder to indicate the array of 9148*5113495bSYour Name * wmi_roam_scan_stats_params followed by this structure 9149*5113495bSYour Name */ 9150*5113495bSYour Name struct wmi_roam_scan_stats_res { 9151*5113495bSYour Name uint32_t num_roam_scans; 9152*5113495bSYour Name struct wmi_roam_scan_stats_params roam_scan[]; 9153*5113495bSYour Name }; 9154*5113495bSYour Name 9155*5113495bSYour Name #define MAX_ROAM_CANDIDATE_AP 9 9156*5113495bSYour Name #define MAX_ROAM_SCAN_CHAN 38 9157*5113495bSYour Name #define MAX_ROAM_SCAN_STATS_TLV 5 9158*5113495bSYour Name #define WLAN_MAX_BTM_CANDIDATE 8 9159*5113495bSYour Name #define WLAN_ROAM_MAX_FRAME_INFO (MAX_ROAM_CANDIDATE_AP * 6) 9160*5113495bSYour Name /** 9161*5113495bSYour Name * struct wmi_btm_req_candidate_info - BTM request candidate info 9162*5113495bSYour Name * @candidate_bssid: Candidate bssid received in BTM request 9163*5113495bSYour Name * @timestamp: candidate_timestamp; 9164*5113495bSYour Name * @preference: candidate preference 9165*5113495bSYour Name */ 9166*5113495bSYour Name struct wmi_btm_req_candidate_info { 9167*5113495bSYour Name struct qdf_mac_addr candidate_bssid; 9168*5113495bSYour Name uint32_t timestamp; 9169*5113495bSYour Name uint8_t preference; 9170*5113495bSYour Name }; 9171*5113495bSYour Name 9172*5113495bSYour Name /** 9173*5113495bSYour Name * struct wmi_roam_trigger_per_data - per roam trigger related information 9174*5113495bSYour Name * @rx_rate_thresh_percent: percentage of lower than rx rate threshold 9175*5113495bSYour Name * @tx_rate_thresh_percent: percentage of lower than tx rate threshold 9176*5113495bSYour Name */ 9177*5113495bSYour Name struct wmi_roam_trigger_per_data { 9178*5113495bSYour Name uint8_t rx_rate_thresh_percent; 9179*5113495bSYour Name uint8_t tx_rate_thresh_percent; 9180*5113495bSYour Name }; 9181*5113495bSYour Name 9182*5113495bSYour Name /** 9183*5113495bSYour Name * struct wmi_roam_trigger_bmiss_data - bmiss roam trigger related information 9184*5113495bSYour Name * @final_bmiss_cnt: final beacon miss count 9185*5113495bSYour Name * @consecutive_bmiss_cnt: consecutive beacon miss count 9186*5113495bSYour Name * @qos_null_success: is Qos-Null tx Success: 0: success, 1:fail 9187*5113495bSYour Name */ 9188*5113495bSYour Name struct wmi_roam_trigger_bmiss_data { 9189*5113495bSYour Name uint32_t final_bmiss_cnt; 9190*5113495bSYour Name uint32_t consecutive_bmiss_cnt; 9191*5113495bSYour Name uint8_t qos_null_success; 9192*5113495bSYour Name }; 9193*5113495bSYour Name 9194*5113495bSYour Name /** 9195*5113495bSYour Name * struct wmi_roam_trigger_low_rssi_data - low rssi roam trigger 9196*5113495bSYour Name * related information 9197*5113495bSYour Name * @current_rssi: Connected AP rssi in dBm 9198*5113495bSYour Name * @roam_rssi_threshold: rssi threshold value in dBm 9199*5113495bSYour Name * @rx_linkspeed_status: rx linkspeed status, 0:good linkspeed, 1:bad 9200*5113495bSYour Name */ 9201*5113495bSYour Name struct wmi_roam_trigger_low_rssi_data { 9202*5113495bSYour Name uint8_t current_rssi; 9203*5113495bSYour Name uint8_t roam_rssi_threshold; 9204*5113495bSYour Name uint8_t rx_linkspeed_status; 9205*5113495bSYour Name }; 9206*5113495bSYour Name 9207*5113495bSYour Name /** 9208*5113495bSYour Name * struct wmi_roam_trigger_hi_rssi_data - high rssi roam trigger 9209*5113495bSYour Name * related information 9210*5113495bSYour Name * @current_rssi: Connected AP rssi in dBm 9211*5113495bSYour Name * @hirssi_threshold: roam high RSSI threshold 9212*5113495bSYour Name */ 9213*5113495bSYour Name struct wmi_roam_trigger_hi_rssi_data { 9214*5113495bSYour Name uint8_t current_rssi; 9215*5113495bSYour Name uint8_t hirssi_threshold; 9216*5113495bSYour Name }; 9217*5113495bSYour Name 9218*5113495bSYour Name /** 9219*5113495bSYour Name * struct wmi_roam_trigger_congestion_data - congestion roam trigger 9220*5113495bSYour Name * related information 9221*5113495bSYour Name * @rx_tput: RX Throughput in bytes per second in dense env 9222*5113495bSYour Name * @tx_tput: TX Throughput in bytes per second in dense env 9223*5113495bSYour Name * @roamable_count: roamable AP count info in dense env 9224*5113495bSYour Name */ 9225*5113495bSYour Name struct wmi_roam_trigger_congestion_data { 9226*5113495bSYour Name uint32_t rx_tput; 9227*5113495bSYour Name uint32_t tx_tput; 9228*5113495bSYour Name uint8_t roamable_count; 9229*5113495bSYour Name }; 9230*5113495bSYour Name 9231*5113495bSYour Name /** 9232*5113495bSYour Name * struct wmi_roam_trigger_user_data - user roam trigger related information 9233*5113495bSYour Name * @invoke_reason: defined in wlan_roam_invoke_reason 9234*5113495bSYour Name */ 9235*5113495bSYour Name struct wmi_roam_trigger_user_data { 9236*5113495bSYour Name uint32_t invoke_reason; 9237*5113495bSYour Name }; 9238*5113495bSYour Name 9239*5113495bSYour Name /** 9240*5113495bSYour Name * struct wmi_roam_trigger_background_data - roam trigger related information 9241*5113495bSYour Name * @current_rssi: Connected AP rssi in dBm 9242*5113495bSYour Name * @data_rssi: data frame rssi in dBm 9243*5113495bSYour Name * @data_rssi_threshold: data rssi threshold in dBm 9244*5113495bSYour Name */ 9245*5113495bSYour Name struct wmi_roam_trigger_background_data { 9246*5113495bSYour Name uint8_t current_rssi; 9247*5113495bSYour Name uint8_t data_rssi; 9248*5113495bSYour Name uint8_t data_rssi_threshold; 9249*5113495bSYour Name }; 9250*5113495bSYour Name 9251*5113495bSYour Name /** 9252*5113495bSYour Name * struct wmi_roam_btm_trigger_data - BTM roam trigger related information 9253*5113495bSYour Name * @timestamp: timestamp 9254*5113495bSYour Name * @btm_request_mode: BTM request mode - solicited/unsolicited 9255*5113495bSYour Name * @disassoc_timer: Number of TBTT before AP disassociates the STA in ms 9256*5113495bSYour Name * @validity_interval: Preferred candidate list validity interval in ms 9257*5113495bSYour Name * @candidate_list_count: Number of candidates in BTM request. 9258*5113495bSYour Name * @btm_resp_status: Status code of the BTM response. 9259*5113495bSYour Name * @btm_bss_termination_timeout: BTM BSS termination timeout value 9260*5113495bSYour Name * in milli seconds 9261*5113495bSYour Name * @btm_mbo_assoc_retry_timeout: BTM MBO assoc retry timeout value in 9262*5113495bSYour Name * milli seconds 9263*5113495bSYour Name * @token: BTM request dialog token 9264*5113495bSYour Name * @btm_cand: BTM request candidate information 9265*5113495bSYour Name * @is_mlo: Flag to check whether the existing connection a MLO connection 9266*5113495bSYour Name * @band: indicates the link involved in MLO conenection. 9267*5113495bSYour Name */ 9268*5113495bSYour Name struct wmi_roam_btm_trigger_data { 9269*5113495bSYour Name uint32_t timestamp; 9270*5113495bSYour Name uint32_t btm_request_mode; 9271*5113495bSYour Name uint32_t disassoc_timer; 9272*5113495bSYour Name uint32_t validity_interval; 9273*5113495bSYour Name uint32_t candidate_list_count; 9274*5113495bSYour Name uint32_t btm_resp_status; 9275*5113495bSYour Name uint32_t btm_bss_termination_timeout; 9276*5113495bSYour Name uint32_t btm_mbo_assoc_retry_timeout; 9277*5113495bSYour Name uint16_t token; 9278*5113495bSYour Name struct wmi_btm_req_candidate_info btm_cand[WLAN_MAX_BTM_CANDIDATE]; 9279*5113495bSYour Name bool is_mlo; 9280*5113495bSYour Name uint8_t band; 9281*5113495bSYour Name }; 9282*5113495bSYour Name 9283*5113495bSYour Name /** 9284*5113495bSYour Name * struct wmi_roam_cu_trigger_data - BSS Load roam trigger parameters 9285*5113495bSYour Name * @cu_load: Connected AP CU load percentage 9286*5113495bSYour Name */ 9287*5113495bSYour Name struct wmi_roam_cu_trigger_data { 9288*5113495bSYour Name uint32_t cu_load; 9289*5113495bSYour Name /* TODO: Add threshold value */ 9290*5113495bSYour Name }; 9291*5113495bSYour Name 9292*5113495bSYour Name /** 9293*5113495bSYour Name * struct wmi_roam_rssi_trigger_data - RSSI roam trigger related 9294*5113495bSYour Name * parameters 9295*5113495bSYour Name * @threshold: RSSI threshold value in dBm for LOW rssi roam trigger 9296*5113495bSYour Name */ 9297*5113495bSYour Name struct wmi_roam_rssi_trigger_data { 9298*5113495bSYour Name uint32_t threshold; 9299*5113495bSYour Name }; 9300*5113495bSYour Name 9301*5113495bSYour Name /** 9302*5113495bSYour Name * struct wmi_roam_deauth_trigger_data - Deauth roaming trigger related 9303*5113495bSYour Name * parameters 9304*5113495bSYour Name * @type: 1- Deauthentication 2- Disassociation 9305*5113495bSYour Name * @reason: Status code of the Deauth/Disassoc received 9306*5113495bSYour Name */ 9307*5113495bSYour Name struct wmi_roam_deauth_trigger_data { 9308*5113495bSYour Name uint32_t type; 9309*5113495bSYour Name uint32_t reason; 9310*5113495bSYour Name }; 9311*5113495bSYour Name 9312*5113495bSYour Name /** 9313*5113495bSYour Name * struct wmi_roam_trigger_periodic_data - periodic roam trigger 9314*5113495bSYour Name * related information 9315*5113495bSYour Name * @periodic_timer_ms: roam scan periodic, milliseconds 9316*5113495bSYour Name */ 9317*5113495bSYour Name struct wmi_roam_trigger_periodic_data { 9318*5113495bSYour Name uint32_t periodic_timer_ms; 9319*5113495bSYour Name }; 9320*5113495bSYour Name 9321*5113495bSYour Name /** 9322*5113495bSYour Name * struct wmi_roam_trigger_tx_failures_data - tx failures roam trigger 9323*5113495bSYour Name * related information 9324*5113495bSYour Name * @kickout_threshold: consecutive tx failure threshold 9325*5113495bSYour Name * @kickout_reason: defined in wmi_peer_sta_kickout_reason 9326*5113495bSYour Name */ 9327*5113495bSYour Name struct wmi_roam_trigger_tx_failures_data { 9328*5113495bSYour Name uint32_t kickout_threshold; 9329*5113495bSYour Name uint32_t kickout_reason; 9330*5113495bSYour Name }; 9331*5113495bSYour Name 9332*5113495bSYour Name /** 9333*5113495bSYour Name * struct wmi_roam_wtc_btm_trigger_data - wtc btm roaming trigger related 9334*5113495bSYour Name * parameters 9335*5113495bSYour Name * @roaming_mode: Roaming Mode 9336*5113495bSYour Name * @vsie_trigger_reason: Roam trigger reason present in btm request 9337*5113495bSYour Name * @sub_code: Sub code present in btm request 9338*5113495bSYour Name * @wtc_mode: WTC mode 9339*5113495bSYour Name * @wtc_scan_mode: WTC scan mode 9340*5113495bSYour Name * @wtc_rssi_th: Connected AP threshold 9341*5113495bSYour Name * @wtc_candi_rssi_th: Candidate AP threshold 9342*5113495bSYour Name * @wtc_candi_rssi_ext_present: Flag to notify that whether fw sends rssi 9343*5113495bSYour Name * threshold for 5g & 6g AP to host or not 9344*5113495bSYour Name * @wtc_candi_rssi_th_5g: 5g candidate AP rssi threshold 9345*5113495bSYour Name * @wtc_candi_rssi_th_6g: 6g candidate AP rssi threshold 9346*5113495bSYour Name * @duration: WTC duration 9347*5113495bSYour Name */ 9348*5113495bSYour Name struct wmi_roam_wtc_btm_trigger_data { 9349*5113495bSYour Name uint32_t roaming_mode; 9350*5113495bSYour Name uint32_t vsie_trigger_reason; 9351*5113495bSYour Name uint32_t sub_code; 9352*5113495bSYour Name uint32_t wtc_mode; 9353*5113495bSYour Name uint32_t wtc_scan_mode; 9354*5113495bSYour Name uint32_t wtc_rssi_th; 9355*5113495bSYour Name uint32_t wtc_candi_rssi_th; 9356*5113495bSYour Name uint32_t wtc_candi_rssi_ext_present; 9357*5113495bSYour Name uint32_t wtc_candi_rssi_th_5g; 9358*5113495bSYour Name uint32_t wtc_candi_rssi_th_6g; 9359*5113495bSYour Name uint32_t duration; 9360*5113495bSYour Name }; 9361*5113495bSYour Name 9362*5113495bSYour Name /** 9363*5113495bSYour Name * struct wmi_roam_trigger_abort_reason - abort roam related information 9364*5113495bSYour Name * @abort_reason_code: detail in qca_wlan_roam_abort_reason 9365*5113495bSYour Name * @data_rssi: data rssi in dBm 9366*5113495bSYour Name * @data_rssi_threshold: data rssi threshold in dBm 9367*5113495bSYour Name * @rx_linkspeed_status: rx linkspeed status, 0:good linkspeed, 1:bad 9368*5113495bSYour Name */ 9369*5113495bSYour Name struct wmi_roam_trigger_abort_reason { 9370*5113495bSYour Name uint32_t abort_reason_code; 9371*5113495bSYour Name uint8_t data_rssi; 9372*5113495bSYour Name uint8_t data_rssi_threshold; 9373*5113495bSYour Name uint8_t rx_linkspeed_status; 9374*5113495bSYour Name }; 9375*5113495bSYour Name 9376*5113495bSYour Name /** 9377*5113495bSYour Name * struct wmi_roam_candidate_info - Roam scan candidate APs related info 9378*5113495bSYour Name * @timestamp: Host timestamp in millisecs 9379*5113495bSYour Name * @type: 0 - Candidate AP; 1 - Current connected AP. 9380*5113495bSYour Name * @bssid: AP bssid. 9381*5113495bSYour Name * @freq: Channel frquency 9382*5113495bSYour Name * @cu_load: Channel utilization load of the AP. 9383*5113495bSYour Name * @cu_score: Channel Utilization score. 9384*5113495bSYour Name * @rssi: Candidate AP rssi 9385*5113495bSYour Name * @rssi_score: AP RSSI score 9386*5113495bSYour Name * @total_score: Total score of the candidate AP. 9387*5113495bSYour Name * @etp: Estimated throughput value of the AP in Mbps 9388*5113495bSYour Name * @dl_reason: Denylist reason 9389*5113495bSYour Name * @dl_source: Source of adding AP to DL 9390*5113495bSYour Name * @dl_timestamp:This timestamp indicates the time when AP added 9391*5113495bSYour Name * to denylist. 9392*5113495bSYour Name * @dl_original_timeout: Original timeout value in milli seconds 9393*5113495bSYour Name * when AP added to DL 9394*5113495bSYour Name * @is_mlo: Flag to check whether the existing connection is MLO connection 9395*5113495bSYour Name */ 9396*5113495bSYour Name struct wmi_roam_candidate_info { 9397*5113495bSYour Name uint32_t timestamp; 9398*5113495bSYour Name uint8_t type; 9399*5113495bSYour Name struct qdf_mac_addr bssid; 9400*5113495bSYour Name uint16_t freq; 9401*5113495bSYour Name uint32_t cu_load; 9402*5113495bSYour Name uint32_t cu_score; 9403*5113495bSYour Name uint32_t rssi; 9404*5113495bSYour Name uint32_t rssi_score; 9405*5113495bSYour Name uint32_t total_score; 9406*5113495bSYour Name uint32_t etp; 9407*5113495bSYour Name uint32_t dl_reason; 9408*5113495bSYour Name uint32_t dl_source; 9409*5113495bSYour Name uint32_t dl_timestamp; 9410*5113495bSYour Name uint32_t dl_original_timeout; 9411*5113495bSYour Name bool is_mlo; 9412*5113495bSYour Name }; 9413*5113495bSYour Name 9414*5113495bSYour Name /** 9415*5113495bSYour Name * struct wmi_roam_scan_data - Roam scan event details 9416*5113495bSYour Name * @present: Flag to check if the roam scan tlv is present 9417*5113495bSYour Name * @is_btcoex_active: is bluetooth connection active 9418*5113495bSYour Name * @type: 0 - Partial roam scan; 1 - Full roam scan 9419*5113495bSYour Name * @num_ap: Number of candidate APs. 9420*5113495bSYour Name * @num_chan: Number of channels. 9421*5113495bSYour Name * @frame_info_count: Frame info TLV count 9422*5113495bSYour Name * @next_rssi_threshold: Next roam can trigger rssi threshold 9423*5113495bSYour Name * @chan_freq: List of frequencies scanned as part of roam scan 9424*5113495bSYour Name * @ap: List of candidate AP info 9425*5113495bSYour Name * @dwell_type: roam scan channel dwell type, enum in roam_scan_dwell_type 9426*5113495bSYour Name * @scan_complete_timestamp: timestamp of all channels scan completed 9427*5113495bSYour Name * @is_mlo: Flag to check whether the existing connection is MLO connection 9428*5113495bSYour Name * @band: Band involved in the roaming during a MLO connection. 9429*5113495bSYour Name */ 9430*5113495bSYour Name struct wmi_roam_scan_data { 9431*5113495bSYour Name bool present; 9432*5113495bSYour Name bool is_btcoex_active; 9433*5113495bSYour Name uint16_t type; 9434*5113495bSYour Name uint16_t num_ap; 9435*5113495bSYour Name uint16_t num_chan; 9436*5113495bSYour Name uint16_t frame_info_count; 9437*5113495bSYour Name uint32_t next_rssi_threshold; 9438*5113495bSYour Name uint16_t chan_freq[MAX_ROAM_SCAN_CHAN]; 9439*5113495bSYour Name struct wmi_roam_candidate_info ap[MAX_ROAM_CANDIDATE_AP]; 9440*5113495bSYour Name uint8_t dwell_type[MAX_ROAM_SCAN_CHAN]; 9441*5113495bSYour Name uint32_t scan_complete_timestamp; 9442*5113495bSYour Name bool is_mlo; 9443*5113495bSYour Name uint8_t band; 9444*5113495bSYour Name }; 9445*5113495bSYour Name 9446*5113495bSYour Name /** 9447*5113495bSYour Name * struct wmi_roam_result - Roam result related info. 9448*5113495bSYour Name * @present: Flag to check if the roam result tlv is present 9449*5113495bSYour Name * @timestamp: Host timestamp in millisecs 9450*5113495bSYour Name * @status: 0 - Roaming is success ; 1 - Roaming failed ; 9451*5113495bSYour Name * 2 - No roam 9452*5113495bSYour Name * @fail_reason: One of WMI_ROAM_FAIL_REASON_ID 9453*5113495bSYour Name * @roam_abort_reason: Roam abort reason codes 9454*5113495bSYour Name * @fail_bssid: BSSID of the last attempted roam failed AP 9455*5113495bSYour Name */ 9456*5113495bSYour Name struct wmi_roam_result { 9457*5113495bSYour Name bool present; 9458*5113495bSYour Name uint32_t timestamp; 9459*5113495bSYour Name uint32_t status; 9460*5113495bSYour Name uint32_t fail_reason; 9461*5113495bSYour Name uint32_t roam_abort_reason; 9462*5113495bSYour Name struct qdf_mac_addr fail_bssid; 9463*5113495bSYour Name }; 9464*5113495bSYour Name 9465*5113495bSYour Name #define WLAN_11KV_TYPE_BTM_REQ 1 9466*5113495bSYour Name #define WLAN_11KV_TYPE_NEIGHBOR_RPT 2 9467*5113495bSYour Name 9468*5113495bSYour Name /** 9469*5113495bSYour Name * struct wmi_neighbor_report_data - Neighbor report/BTM request related 9470*5113495bSYour Name * data. 9471*5113495bSYour Name * @present: Flag to check if the roam 11kv tlv is present 9472*5113495bSYour Name * @timestamp: Host timestamp in millisecs 9473*5113495bSYour Name * @req_type: 1 - BTM query ; 2 - 11K neighbor report request 9474*5113495bSYour Name * @req_time: Request timestamp in ms 9475*5113495bSYour Name * @resp_time: Response timestamp in ms 9476*5113495bSYour Name * @num_freq: Number of frequencies 9477*5113495bSYour Name * @freq: Channel frequency in Mhz 9478*5113495bSYour Name * @btm_query_token: BTM query dialog token. 9479*5113495bSYour Name * @btm_query_reason: BTM query reasons as defined in 9480*5113495bSYour Name * IEEE802.11v spec table 7-43x 9481*5113495bSYour Name * @req_token: Request token 9482*5113495bSYour Name * @resp_token: Response Token 9483*5113495bSYour Name * @num_rpt: Number of report element 9484*5113495bSYour Name * @is_mlo: Flag to check if the current connection is MLO connection 9485*5113495bSYour Name * @band: indicates the link involved in MLO conenection. 9486*5113495bSYour Name */ 9487*5113495bSYour Name struct wmi_neighbor_report_data { 9488*5113495bSYour Name bool present; 9489*5113495bSYour Name uint32_t timestamp; 9490*5113495bSYour Name uint8_t req_type; 9491*5113495bSYour Name uint32_t req_time; 9492*5113495bSYour Name uint32_t resp_time; 9493*5113495bSYour Name uint8_t num_freq; 9494*5113495bSYour Name uint32_t freq[MAX_ROAM_SCAN_CHAN]; 9495*5113495bSYour Name uint16_t btm_query_token; 9496*5113495bSYour Name uint8_t btm_query_reason; 9497*5113495bSYour Name uint8_t req_token; 9498*5113495bSYour Name uint8_t resp_token; 9499*5113495bSYour Name uint8_t num_rpt; 9500*5113495bSYour Name bool is_mlo; 9501*5113495bSYour Name uint8_t band; 9502*5113495bSYour Name }; 9503*5113495bSYour Name 9504*5113495bSYour Name /** 9505*5113495bSYour Name * struct wmi_roam_trigger_info() - Roam trigger related details 9506*5113495bSYour Name * @present: Flag to check if the roam_trigger_info tlv is present 9507*5113495bSYour Name * @common_roam: Flag to indicate common roam or special roam 9508*5113495bSYour Name * @trigger_reason: Roam trigger reason(enum WMI_ROAM_TRIGGER_REASON_ID) 9509*5113495bSYour Name * @trigger_sub_reason: Sub reason for roam trigger if multiple roam scans 9510*5113495bSYour Name * @current_rssi: Connected AP RSSI 9511*5113495bSYour Name * @timestamp: Host timestamp in millisecs when roam scan was triggered 9512*5113495bSYour Name * @per_trig_data: per roam trigger parameters 9513*5113495bSYour Name * @bmiss_trig_data: beacon miss roam trigger parameters. 9514*5113495bSYour Name * @low_rssi_trig_data: low rssi roam trigger parameters. 9515*5113495bSYour Name * @hi_rssi_trig_data: high rssi roam trigger parameters. 9516*5113495bSYour Name * @congestion_trig_data: congestion roam trigger parameters. 9517*5113495bSYour Name * @user_trig_data: user trigger roam parameters. 9518*5113495bSYour Name * @background_trig_data: background roam trigger parameters. 9519*5113495bSYour Name * @btm_trig_data: BTM roam trigger parameters. 9520*5113495bSYour Name * @cu_trig_data: BSS Load roam trigger parameters. 9521*5113495bSYour Name * @rssi_trig_data: RSSI trigger related info. 9522*5113495bSYour Name * @deauth_trig_data: Deauth roam trigger related info 9523*5113495bSYour Name * @periodic_trig_data: periodic roam trigger parameters. 9524*5113495bSYour Name * @tx_failures_trig_data: tx failures roam trigger parameters. 9525*5113495bSYour Name * @wtc_btm_trig_data: WTC BTM roam trigger related info 9526*5113495bSYour Name * @abort_reason: roam abort reason 9527*5113495bSYour Name * @scan_type: roam scan type 9528*5113495bSYour Name * @roam_status: roam result status 9529*5113495bSYour Name * @fail_reason: roam fail reason 9530*5113495bSYour Name */ 9531*5113495bSYour Name struct wmi_roam_trigger_info { 9532*5113495bSYour Name bool present; 9533*5113495bSYour Name bool common_roam; 9534*5113495bSYour Name uint32_t trigger_reason; 9535*5113495bSYour Name uint32_t trigger_sub_reason; 9536*5113495bSYour Name uint32_t current_rssi; 9537*5113495bSYour Name uint32_t timestamp; 9538*5113495bSYour Name union { 9539*5113495bSYour Name struct wmi_roam_trigger_per_data per_trig_data; 9540*5113495bSYour Name struct wmi_roam_trigger_bmiss_data bmiss_trig_data; 9541*5113495bSYour Name struct wmi_roam_trigger_low_rssi_data low_rssi_trig_data; 9542*5113495bSYour Name struct wmi_roam_trigger_hi_rssi_data hi_rssi_trig_data; 9543*5113495bSYour Name struct wmi_roam_trigger_congestion_data congestion_trig_data; 9544*5113495bSYour Name struct wmi_roam_trigger_user_data user_trig_data; 9545*5113495bSYour Name struct wmi_roam_trigger_background_data background_trig_data; 9546*5113495bSYour Name struct wmi_roam_btm_trigger_data btm_trig_data; 9547*5113495bSYour Name struct wmi_roam_cu_trigger_data cu_trig_data; 9548*5113495bSYour Name struct wmi_roam_rssi_trigger_data rssi_trig_data; 9549*5113495bSYour Name struct wmi_roam_deauth_trigger_data deauth_trig_data; 9550*5113495bSYour Name struct wmi_roam_trigger_periodic_data periodic_trig_data; 9551*5113495bSYour Name struct wmi_roam_trigger_tx_failures_data tx_failures_trig_data; 9552*5113495bSYour Name struct wmi_roam_wtc_btm_trigger_data wtc_btm_trig_data; 9553*5113495bSYour Name }; 9554*5113495bSYour Name struct wmi_roam_trigger_abort_reason abort_reason; 9555*5113495bSYour Name uint32_t scan_type; 9556*5113495bSYour Name uint32_t roam_status; 9557*5113495bSYour Name uint32_t fail_reason; 9558*5113495bSYour Name }; 9559*5113495bSYour Name 9560*5113495bSYour Name /* End of roam scan stats definitions */ 9561*5113495bSYour Name 9562*5113495bSYour Name /** 9563*5113495bSYour Name * enum wmi_obss_color_collision_evt_type - bss color collision event type 9564*5113495bSYour Name * @OBSS_COLOR_COLLISION_DETECTION_DISABLE: OBSS color detection disabled 9565*5113495bSYour Name * @OBSS_COLOR_COLLISION_DETECTION: OBSS color collision detection 9566*5113495bSYour Name * @OBSS_COLOR_FREE_SLOT_TIMER_EXPIRY: OBSS free slot detection with 9567*5113495bSYour Name * within expiry period 9568*5113495bSYour Name * @OBSS_COLOR_FREE_SLOT_AVAILABLE: OBSS free slot detection 9569*5113495bSYour Name * 9570*5113495bSYour Name * Defines different types of type for obss color collision event type. 9571*5113495bSYour Name */ 9572*5113495bSYour Name enum wmi_obss_color_collision_evt_type { 9573*5113495bSYour Name OBSS_COLOR_COLLISION_DETECTION_DISABLE = 0, 9574*5113495bSYour Name OBSS_COLOR_COLLISION_DETECTION = 1, 9575*5113495bSYour Name OBSS_COLOR_FREE_SLOT_TIMER_EXPIRY = 2, 9576*5113495bSYour Name OBSS_COLOR_FREE_SLOT_AVAILABLE = 3, 9577*5113495bSYour Name }; 9578*5113495bSYour Name 9579*5113495bSYour Name /** 9580*5113495bSYour Name * struct wmi_obss_color_collision_cfg_param - obss color collision cfg 9581*5113495bSYour Name * @vdev_id: vdev id 9582*5113495bSYour Name * @flags: proposed for future use cases, currently not used. 9583*5113495bSYour Name * @evt_type: bss color collision event. 9584*5113495bSYour Name * @current_bss_color: current bss color. 9585*5113495bSYour Name * @detection_period_ms: scan interval for both AP and STA mode. 9586*5113495bSYour Name * @scan_period_ms: scan period for passive scan to detect collision. 9587*5113495bSYour Name * @free_slot_expiry_time_ms: FW to notify host at timer expiry after 9588*5113495bSYour Name * which Host will disable the bss color. 9589*5113495bSYour Name */ 9590*5113495bSYour Name struct wmi_obss_color_collision_cfg_param { 9591*5113495bSYour Name uint32_t vdev_id; 9592*5113495bSYour Name uint32_t flags; 9593*5113495bSYour Name enum wmi_obss_color_collision_evt_type evt_type; 9594*5113495bSYour Name uint32_t current_bss_color; 9595*5113495bSYour Name uint32_t detection_period_ms; 9596*5113495bSYour Name uint32_t scan_period_ms; 9597*5113495bSYour Name uint32_t free_slot_expiry_time_ms; 9598*5113495bSYour Name }; 9599*5113495bSYour Name 9600*5113495bSYour Name /** 9601*5113495bSYour Name * struct wmi_obss_color_collision_info - bss color detection info from firmware 9602*5113495bSYour Name * @vdev_id: ID of the vdev to which this info belongs. 9603*5113495bSYour Name * @evt_type: bss color collision event. 9604*5113495bSYour Name * @obss_color_bitmap_bit0to31: Bit set indicating BSS color present. 9605*5113495bSYour Name * @obss_color_bitmap_bit32to63: Bit set indicating BSS color present. 9606*5113495bSYour Name */ 9607*5113495bSYour Name struct wmi_obss_color_collision_info { 9608*5113495bSYour Name uint32_t vdev_id; 9609*5113495bSYour Name enum wmi_obss_color_collision_evt_type evt_type; 9610*5113495bSYour Name uint32_t obss_color_bitmap_bit0to31; 9611*5113495bSYour Name uint32_t obss_color_bitmap_bit32to63; 9612*5113495bSYour Name }; 9613*5113495bSYour Name 9614*5113495bSYour Name #ifdef WMI_AP_SUPPORT 9615*5113495bSYour Name /** 9616*5113495bSYour Name * struct vap_pcp_tid_map_params - PCP tid map params 9617*5113495bSYour Name * @vdev_id: vdev id 9618*5113495bSYour Name * @pcp_to_tid_map: pointer to array of pcp to tid map table 9619*5113495bSYour Name */ 9620*5113495bSYour Name struct vap_pcp_tid_map_params { 9621*5113495bSYour Name uint32_t vdev_id; 9622*5113495bSYour Name uint32_t *pcp_to_tid_map; 9623*5113495bSYour Name }; 9624*5113495bSYour Name 9625*5113495bSYour Name /** 9626*5113495bSYour Name * struct vap_tidmap_prec_params - tidmap precedence params 9627*5113495bSYour Name * @vdev_id: vdev id 9628*5113495bSYour Name * @map_precedence: precedence of tid mapping 9629*5113495bSYour Name */ 9630*5113495bSYour Name struct vap_tidmap_prec_params { 9631*5113495bSYour Name uint32_t vdev_id; 9632*5113495bSYour Name uint32_t map_precedence; 9633*5113495bSYour Name }; 9634*5113495bSYour Name 9635*5113495bSYour Name #endif 9636*5113495bSYour Name 9637*5113495bSYour Name /** 9638*5113495bSYour Name * struct peer_vlan_config_param - peer vlan parameter 9639*5113495bSYour Name * @tx_cmd: Tx command 9640*5113495bSYour Name * @rx_cmd: Rx Command 9641*5113495bSYour Name * @tx_strip_insert: Strip or Insert vlan in Tx[0:Strip, 1: Insert] 9642*5113495bSYour Name * @tx_strip_insert_inner: Enable tx_strip_insert operation for inner vlan tag. 9643*5113495bSYour Name * @tx_strip_insert_outer: Enable tx_strip_insert operation for outer vlan tag. 9644*5113495bSYour Name * @rx_strip_c_tag: Strip c_tag 9645*5113495bSYour Name * @rx_strip_s_tag: Strip s_tag 9646*5113495bSYour Name * @rx_insert_c_tag: Insert c_tag 9647*5113495bSYour Name * @rx_insert_s_tag: Insert s_tag 9648*5113495bSYour Name * @insert_vlan_inner_tci: Vlan inner tci 9649*5113495bSYour Name * @insert_vlan_outer_tci: Vlan outer tci 9650*5113495bSYour Name * @vdev_id: vdev id corresponding to peer. 9651*5113495bSYour Name */ 9652*5113495bSYour Name struct peer_vlan_config_param { 9653*5113495bSYour Name uint16_t tx_cmd:1; 9654*5113495bSYour Name uint16_t rx_cmd:1; 9655*5113495bSYour Name uint16_t tx_strip_insert:1; 9656*5113495bSYour Name uint16_t tx_strip_insert_inner:1; 9657*5113495bSYour Name uint16_t tx_strip_insert_outer:1; 9658*5113495bSYour Name uint16_t rx_strip_c_tag:1; 9659*5113495bSYour Name uint16_t rx_strip_s_tag:1; 9660*5113495bSYour Name uint16_t rx_insert_c_tag:1; 9661*5113495bSYour Name uint16_t rx_insert_s_tag:1; 9662*5113495bSYour Name uint16_t insert_vlan_inner_tci; 9663*5113495bSYour Name uint16_t insert_vlan_outer_tci; 9664*5113495bSYour Name uint8_t vdev_id; 9665*5113495bSYour Name }; 9666*5113495bSYour Name 9667*5113495bSYour Name /** 9668*5113495bSYour Name * struct wmi_cfr_peer_tx_event_param - CFR peer tx_event params 9669*5113495bSYour Name * @capture_method: CFR data capture method 9670*5113495bSYour Name * @vdev_id: ID of vdev to which this info belongs 9671*5113495bSYour Name * @peer_mac_addr: Peer MAC address. In AP mode, it is the address of connected 9672*5113495bSYour Name * peer for which CFR capture is needed. In STA mode, this is 9673*5113495bSYour Name * the address of AP it is connected to. 9674*5113495bSYour Name * @primary_20mhz_chan: Primary 20 MHz channel frequency in MHz 9675*5113495bSYour Name * @bandwidth: BW of measurement 9676*5113495bSYour Name * 0 - 20MHz, 1 - 40MHz, 2 - 80MHz, 3 - 160MHz, 4 - 80+80MHz 9677*5113495bSYour Name * @phy_mode: Phy mode of channel, type - WMI_HOST_WLAN_PHY_MODE 9678*5113495bSYour Name * @band_center_freq1: Center frequency 1 in MHz 9679*5113495bSYour Name * @band_center_freq2: Center frequency 2 in MHz 9680*5113495bSYour Name * @spatial_streams: Number of spatial streams 9681*5113495bSYour Name * @correlation_info_1: Address of data from wmi_dma_buf_release_entry [31:0] 9682*5113495bSYour Name * @correlation_info_2: 9683*5113495bSYour Name * Bits [3:0] - Address of data from wmi_dma_buf_release_entry [35:32] 9684*5113495bSYour Name * Bits [15:4] - Reserved 9685*5113495bSYour Name * Bits [31:16] - Hardware PPDU ID [15:0] 9686*5113495bSYour Name * @status: 9687*5113495bSYour Name * Bits [1:0] - TX status, if any. 0-OK, 1-XRETRY, 2-DROP, 3-FILTERED. 9688*5113495bSYour Name * Bits [30:2] - Reserved 9689*5113495bSYour Name * Bit [31] - Status of the CFR capture of the peer 9690*5113495bSYour Name * 1 - Successful, 0 - Unsuccessful. 9691*5113495bSYour Name * @timestamp_us: Timestamp in microseconds at which the CFR was captured 9692*5113495bSYour Name * in the hardware. The clock used for this timestamp is private 9693*5113495bSYour Name * to the target and not visible to the host. So, Host can 9694*5113495bSYour Name * interpret only the relative timestamp deltas from one message 9695*5113495bSYour Name * to the next, but can't interpret the absolute timestamp 9696*5113495bSYour Name * from a single message 9697*5113495bSYour Name * @counter: Count of the current CFR capture from FW. 9698*5113495bSYour Name * This is helpful to identify any drops in FW 9699*5113495bSYour Name * @chain_rssi: Per chain RSSI of the peer, for upto WMI_HOST_MAX_CHAINS. 9700*5113495bSYour Name * Each chain's entry reports the RSSI for different bandwidths. 9701*5113495bSYour Name * Bits [7:0] - Primary 20 MHz 9702*5113495bSYour Name * Bits [15:8] - Secondary 20 MHz of 40 MHz channel (if applicable) 9703*5113495bSYour Name * Bits [23:16] - Secondary 40 MHz of 80 MHz channel (if applicable) 9704*5113495bSYour Name * Bits [31:24] - Secondary 80 MHz of 160 MHz channel (if applicable) 9705*5113495bSYour Name * Each of these 8-bit RSSI reports is in dBm units. 0x80 means invalid. 9706*5113495bSYour Name * Unused bytes within used chain_rssi indices will be 0x80. 9707*5113495bSYour Name * Unused rssi_chain indices will be set to 0x80808080. 9708*5113495bSYour Name * @chain_phase: Per chain phase of peer for upto WMI_HOST_MAX_CHAINS. 9709*5113495bSYour Name * @cfo_measurement: 9710*5113495bSYour Name * @agc_gain: 9711*5113495bSYour Name * @rx_start_ts: 9712*5113495bSYour Name * @rx_ts_reset: 9713*5113495bSYour Name * @mcs_rate: 9714*5113495bSYour Name * @gi_type: 9715*5113495bSYour Name * @agc_gain_tbl_index: 9716*5113495bSYour Name */ 9717*5113495bSYour Name typedef struct { 9718*5113495bSYour Name uint32_t capture_method; 9719*5113495bSYour Name uint32_t vdev_id; 9720*5113495bSYour Name struct qdf_mac_addr peer_mac_addr; 9721*5113495bSYour Name uint32_t primary_20mhz_chan; 9722*5113495bSYour Name uint32_t bandwidth; 9723*5113495bSYour Name uint32_t phy_mode; 9724*5113495bSYour Name uint32_t band_center_freq1; 9725*5113495bSYour Name uint32_t band_center_freq2; 9726*5113495bSYour Name uint32_t spatial_streams; 9727*5113495bSYour Name uint32_t correlation_info_1; 9728*5113495bSYour Name uint32_t correlation_info_2; 9729*5113495bSYour Name uint32_t status; 9730*5113495bSYour Name uint32_t timestamp_us; 9731*5113495bSYour Name uint32_t counter; 9732*5113495bSYour Name uint32_t chain_rssi[WMI_HOST_MAX_CHAINS]; 9733*5113495bSYour Name uint16_t chain_phase[WMI_HOST_MAX_CHAINS]; 9734*5113495bSYour Name int32_t cfo_measurement; 9735*5113495bSYour Name uint8_t agc_gain[WMI_HOST_MAX_CHAINS]; 9736*5113495bSYour Name uint32_t rx_start_ts; 9737*5113495bSYour Name uint32_t rx_ts_reset; 9738*5113495bSYour Name uint32_t mcs_rate; 9739*5113495bSYour Name uint32_t gi_type; 9740*5113495bSYour Name uint8_t agc_gain_tbl_index[WMI_HOST_MAX_CHAINS]; 9741*5113495bSYour Name } wmi_cfr_peer_tx_event_param; 9742*5113495bSYour Name 9743*5113495bSYour Name /** 9744*5113495bSYour Name * struct wmi_cfr_phase_delta_param - AoA phase delta params 9745*5113495bSYour Name * @pdev_id: pdev id 9746*5113495bSYour Name * @freq: primary 20 MHz channel frequency in mhz 9747*5113495bSYour Name * @max_chains: indicates max chains for which AoA will be reported 9748*5113495bSYour Name * @chain_phase_mask: indicates the chains to which phase values are 9749*5113495bSYour Name * reported by target 9750*5113495bSYour Name * @phase_delta: phase delta associated with reported chain's each gain value 9751*5113495bSYour Name * @ibf_cal_val: IBF values to be added with phase delta of chains reported 9752*5113495bSYour Name */ 9753*5113495bSYour Name struct wmi_cfr_phase_delta_param { 9754*5113495bSYour Name uint32_t pdev_id; 9755*5113495bSYour Name uint32_t freq; 9756*5113495bSYour Name uint32_t max_chains; 9757*5113495bSYour Name uint32_t chain_phase_mask; 9758*5113495bSYour Name uint32_t phase_delta[WMI_MAX_CHAINS_PHASE][WMI_MAX_AOA_PHASE_DELTA]; 9759*5113495bSYour Name uint32_t ibf_cal_val[WMI_MAX_CHAINS_PHASE]; 9760*5113495bSYour Name }; 9761*5113495bSYour Name 9762*5113495bSYour Name #ifdef WLAN_RCC_ENHANCED_AOA_SUPPORT 9763*5113495bSYour Name struct wmi_cfr_enh_phase_delta_param { 9764*5113495bSYour Name uint32_t pdev_id; 9765*5113495bSYour Name uint32_t freq; 9766*5113495bSYour Name uint32_t max_chains; 9767*5113495bSYour Name uint32_t data_for_chainmask; 9768*5113495bSYour Name uint32_t xbar_config; 9769*5113495bSYour Name uint32_t ibf_cal_val[WMI_HOST_MAX_NUM_CHAINS]; 9770*5113495bSYour Name uint32_t array_size; 9771*5113495bSYour Name uint32_t *gain_stop_index_array; 9772*5113495bSYour Name uint32_t *enh_phase_delta_array; 9773*5113495bSYour Name }; 9774*5113495bSYour Name #endif /* WLAN_RCC_ENHANCED_AOA_SUPPORT */ 9775*5113495bSYour Name 9776*5113495bSYour Name /** 9777*5113495bSYour Name * struct wmi_host_oem_indirect_data - Indirect OEM data 9778*5113495bSYour Name * @pdev_id: pdev id 9779*5113495bSYour Name * @len: length of data in bytes 9780*5113495bSYour Name * @addr: 36 bit address 9781*5113495bSYour Name */ 9782*5113495bSYour Name struct wmi_host_oem_indirect_data { 9783*5113495bSYour Name uint32_t pdev_id; 9784*5113495bSYour Name uint32_t len; 9785*5113495bSYour Name uint64_t addr; 9786*5113495bSYour Name }; 9787*5113495bSYour Name 9788*5113495bSYour Name /** 9789*5113495bSYour Name * struct wmi_oem_response_param - OEM response info 9790*5113495bSYour Name * @num_data1: First data response length 9791*5113495bSYour Name * @num_data2: Second data response length 9792*5113495bSYour Name * @data_1: First data 9793*5113495bSYour Name * @data_2: Second data 9794*5113495bSYour Name * @indirect_data: Indirect data 9795*5113495bSYour Name */ 9796*5113495bSYour Name struct wmi_oem_response_param { 9797*5113495bSYour Name uint32_t num_data1; 9798*5113495bSYour Name uint32_t num_data2; 9799*5113495bSYour Name uint8_t *data_1; 9800*5113495bSYour Name uint8_t *data_2; 9801*5113495bSYour Name struct wmi_host_oem_indirect_data indirect_data; 9802*5113495bSYour Name }; 9803*5113495bSYour Name 9804*5113495bSYour Name /** 9805*5113495bSYour Name * struct wifi_pos_pasn_peer_data - Wifi pos 11az ranging peer 9806*5113495bSYour Name * data. This structure is used to copy the peer related info from 9807*5113495bSYour Name * PASN events and pass it to wifi pos module 9808*5113495bSYour Name * @vdev_id: vdev id 9809*5113495bSYour Name * @num_peers: Total number of peers to be deleted 9810*5113495bSYour Name * @peer_info: PASN peer entry details 9811*5113495bSYour Name */ 9812*5113495bSYour Name struct wifi_pos_pasn_peer_data { 9813*5113495bSYour Name uint8_t vdev_id; 9814*5113495bSYour Name uint8_t num_peers; 9815*5113495bSYour Name struct wlan_pasn_request peer_info[WLAN_MAX_11AZ_PEERS]; 9816*5113495bSYour Name }; 9817*5113495bSYour Name 9818*5113495bSYour Name /** 9819*5113495bSYour Name * struct mws_coex_state - Modem Wireless Subsystem(MWS) coex info 9820*5113495bSYour Name * @vdev_id : vdev id 9821*5113495bSYour Name * @coex_scheme_bitmap: LTE-WLAN coexistence scheme bitmap 9822*5113495bSYour Name * Indicates the final schemes applied for the current Coex scenario. 9823*5113495bSYour Name * Bit 0 - TDM policy 9824*5113495bSYour Name * Bit 1 - Forced TDM policy 9825*5113495bSYour Name * Bit 2 - Dynamic Power Back-off policy 9826*5113495bSYour Name * Bit 3 - Channel Avoidance policy 9827*5113495bSYour Name * Bit 4 - Static Power Back-off policy. 9828*5113495bSYour Name * @active_conflict_count : active conflict count 9829*5113495bSYour Name * @potential_conflict_count: Potential conflict count 9830*5113495bSYour Name * @chavd_group0_bitmap: Indicates the WLAN channels to be avoided in 9831*5113495bSYour Name * b/w WLAN CH-1 and WLAN CH-14 9832*5113495bSYour Name * @chavd_group1_bitmap: Indicates the WLAN channels to be avoided in 9833*5113495bSYour Name * WLAN CH-36 and WLAN CH-64 9834*5113495bSYour Name * @chavd_group2_bitmap: Indicates the WLAN channels to be avoided in 9835*5113495bSYour Name * b/w WLAN CH-100 and WLAN CH-140 9836*5113495bSYour Name * @chavd_group3_bitmap: Indicates the WLAN channels to be avoided in 9837*5113495bSYour Name * b/w WLAN CH-149 and WLAN CH-165 9838*5113495bSYour Name */ 9839*5113495bSYour Name struct mws_coex_state { 9840*5113495bSYour Name uint32_t vdev_id; 9841*5113495bSYour Name uint32_t coex_scheme_bitmap; 9842*5113495bSYour Name uint32_t active_conflict_count; 9843*5113495bSYour Name uint32_t potential_conflict_count; 9844*5113495bSYour Name uint32_t chavd_group0_bitmap; 9845*5113495bSYour Name uint32_t chavd_group1_bitmap; 9846*5113495bSYour Name uint32_t chavd_group2_bitmap; 9847*5113495bSYour Name uint32_t chavd_group3_bitmap; 9848*5113495bSYour Name }; 9849*5113495bSYour Name 9850*5113495bSYour Name /** 9851*5113495bSYour Name * struct mws_coex_dpwb_state - Modem Wireless Subsystem(MWS) coex DPWB info 9852*5113495bSYour Name * @vdev_id: vdev id 9853*5113495bSYour Name * @current_dpwb_state: Current state of the Dynamic Power Back-off SM 9854*5113495bSYour Name * @pnp1_value: Tx power to be applied in next Dynamic Power Back-off cycle 9855*5113495bSYour Name * @lte_dutycycle: Indicates the duty cycle of current LTE frame 9856*5113495bSYour Name * @sinr_wlan_on: LTE SINR value in dB, when WLAN is ON 9857*5113495bSYour Name * @sinr_wlan_off: LTE SINR value in dB, when WLAN is OFF 9858*5113495bSYour Name * @bler_count: LTE blocks with error for the current block err report. 9859*5113495bSYour Name * @block_count: Number of LTE blocks considered for bler count report. 9860*5113495bSYour Name * @wlan_rssi_level: WLAN RSSI level 9861*5113495bSYour Name * @wlan_rssi: WLAN RSSI value in dBm considered in DP backoff algo 9862*5113495bSYour Name * @is_tdm_running: Indicates whether any TDM policy triggered 9863*5113495bSYour Name */ 9864*5113495bSYour Name struct mws_coex_dpwb_state { 9865*5113495bSYour Name uint32_t vdev_id; 9866*5113495bSYour Name int32_t current_dpwb_state; 9867*5113495bSYour Name int32_t pnp1_value; 9868*5113495bSYour Name uint32_t lte_dutycycle; 9869*5113495bSYour Name int32_t sinr_wlan_on; 9870*5113495bSYour Name int32_t sinr_wlan_off; 9871*5113495bSYour Name uint32_t bler_count; 9872*5113495bSYour Name uint32_t block_count; 9873*5113495bSYour Name uint32_t wlan_rssi_level; 9874*5113495bSYour Name int32_t wlan_rssi; 9875*5113495bSYour Name uint32_t is_tdm_running; 9876*5113495bSYour Name }; 9877*5113495bSYour Name 9878*5113495bSYour Name /** 9879*5113495bSYour Name * struct mws_coex_tdm_state - Modem Wireless Subsystem(MWS) coex TDM state info 9880*5113495bSYour Name * @vdev_id: vdev id 9881*5113495bSYour Name * @tdm_policy_bitmap: Time Division Multiplexing (TDM) LTE-Coex Policy type. 9882*5113495bSYour Name * @tdm_sf_bitmap: TDM LTE/WLAN sub-frame bitmap. 9883*5113495bSYour Name */ 9884*5113495bSYour Name struct mws_coex_tdm_state { 9885*5113495bSYour Name uint32_t vdev_id; 9886*5113495bSYour Name uint32_t tdm_policy_bitmap; 9887*5113495bSYour Name uint32_t tdm_sf_bitmap; 9888*5113495bSYour Name }; 9889*5113495bSYour Name 9890*5113495bSYour Name /** 9891*5113495bSYour Name * struct mws_coex_idrx_state - Modem Wireless Subsystem(MWS) coex IDRX state 9892*5113495bSYour Name * @vdev_id: vdev id 9893*5113495bSYour Name * @sub0_techid: SUB0 LTE-coex tech. 9894*5113495bSYour Name * @sub0_policy: SUB0 mitigation policy. 9895*5113495bSYour Name * @sub0_is_link_critical: Set if SUB0 is in link critical state. 9896*5113495bSYour Name * @sub0_static_power: LTE SUB0 imposed static power applied 9897*5113495bSYour Name * to WLAN due to LTE-WLAN coex. 9898*5113495bSYour Name * @sub0_rssi: LTE SUB0 RSSI value in dBm. 9899*5113495bSYour Name * @sub1_techid: SUB1 LTE-coex tech. 9900*5113495bSYour Name * @sub1_policy: SUB1 mitigation policy. 9901*5113495bSYour Name * @sub1_is_link_critical: Set if SUB1 is in link critical state. 9902*5113495bSYour Name * @sub1_static_power: LTE SUB1 imposed static power applied 9903*5113495bSYour Name * to WLAN due to LTE-WLAN coex. 9904*5113495bSYour Name * @sub1_rssi: LTE SUB1 RSSI value in dBm. 9905*5113495bSYour Name */ 9906*5113495bSYour Name struct mws_coex_idrx_state { 9907*5113495bSYour Name uint32_t vdev_id; 9908*5113495bSYour Name uint32_t sub0_techid; 9909*5113495bSYour Name uint32_t sub0_policy; 9910*5113495bSYour Name uint32_t sub0_is_link_critical; 9911*5113495bSYour Name int32_t sub0_static_power; 9912*5113495bSYour Name int32_t sub0_rssi; 9913*5113495bSYour Name uint32_t sub1_techid; 9914*5113495bSYour Name uint32_t sub1_policy; 9915*5113495bSYour Name uint32_t sub1_is_link_critical; 9916*5113495bSYour Name int32_t sub1_static_power; 9917*5113495bSYour Name int32_t sub1_rssi; 9918*5113495bSYour Name }; 9919*5113495bSYour Name 9920*5113495bSYour Name /** 9921*5113495bSYour Name * struct mws_antenna_sharing_info - MWS Antenna sharing Info 9922*5113495bSYour Name * @vdev_id: vdev id 9923*5113495bSYour Name * @coex_flags: BDF values of Coex flags 9924*5113495bSYour Name * @coex_config: BDF values of Coex Antenna sharing config 9925*5113495bSYour Name * @tx_chain_mask: Tx Chain mask value 9926*5113495bSYour Name * @rx_chain_mask: Rx Chain mask value 9927*5113495bSYour Name * @rx_nss: Currently active Rx Spatial streams 9928*5113495bSYour Name * @force_mrc: Forced MRC policy type 9929*5113495bSYour Name * @rssi_type: RSSI value considered for MRC 9930*5113495bSYour Name * @chain0_rssi: RSSI value measured at Chain-0 in dBm 9931*5113495bSYour Name * @chain1_rssi: RSSI value measured at Chain-1 in dBm 9932*5113495bSYour Name * @combined_rssi: RSSI value of two chains combined in dBm 9933*5113495bSYour Name * @imbalance: Absolute imbalance between two Rx chains in dB 9934*5113495bSYour Name * @mrc_threshold: RSSI threshold defined for the above imbalance value in dBm 9935*5113495bSYour Name * @grant_duration: Antenna grant duration to WLAN, in milliseconds 9936*5113495bSYour Name */ 9937*5113495bSYour Name struct mws_antenna_sharing_info { 9938*5113495bSYour Name uint32_t vdev_id; 9939*5113495bSYour Name uint32_t coex_flags; 9940*5113495bSYour Name uint32_t coex_config; 9941*5113495bSYour Name uint32_t tx_chain_mask; 9942*5113495bSYour Name uint32_t rx_chain_mask; 9943*5113495bSYour Name uint32_t rx_nss; 9944*5113495bSYour Name uint32_t force_mrc; 9945*5113495bSYour Name uint32_t rssi_type; 9946*5113495bSYour Name int32_t chain0_rssi; 9947*5113495bSYour Name int32_t chain1_rssi; 9948*5113495bSYour Name int32_t combined_rssi; 9949*5113495bSYour Name uint32_t imbalance; 9950*5113495bSYour Name int32_t mrc_threshold; 9951*5113495bSYour Name uint32_t grant_duration; 9952*5113495bSYour Name }; 9953*5113495bSYour Name 9954*5113495bSYour Name #ifdef FEATURE_ANI_LEVEL_REQUEST 9955*5113495bSYour Name /* Maximum number of freqs for which ANI level can be requested */ 9956*5113495bSYour Name #define MAX_NUM_FREQS_FOR_ANI_LEVEL 20 9957*5113495bSYour Name 9958*5113495bSYour Name /* A valid ANI level lies between 0 to 9 */ 9959*5113495bSYour Name #define MAX_ANI_LEVEL 9 9960*5113495bSYour Name 9961*5113495bSYour Name struct wmi_host_ani_level_event { 9962*5113495bSYour Name uint32_t chan_freq; 9963*5113495bSYour Name uint32_t ani_level; 9964*5113495bSYour Name }; 9965*5113495bSYour Name #endif /* FEATURE_ANI_LEVEL_REQUEST */ 9966*5113495bSYour Name 9967*5113495bSYour Name #define WMI_HOST_TBTT_OFFSET_INVALID 0xffffffff 9968*5113495bSYour Name #define MAX_SUPPORTED_NEIGHBORS 16 9969*5113495bSYour Name 9970*5113495bSYour Name /* command type for WMI_PDEV_TBTT_OFFSET_SYNC_CMDID */ 9971*5113495bSYour Name enum wmi_host_tbtt_offset_cmd_type { 9972*5113495bSYour Name WMI_HOST_PDEV_GET_TBTT_OFFSET, 9973*5113495bSYour Name WMI_HOST_PDEV_SET_TBTT_OFFSET, 9974*5113495bSYour Name }; 9975*5113495bSYour Name 9976*5113495bSYour Name /** 9977*5113495bSYour Name * struct wmi_raw_event_buffer - fw event buffers 9978*5113495bSYour Name * @evt_raw_buf: event raw buffer 9979*5113495bSYour Name * @evt_processed_buf: event processed buffer 9980*5113495bSYour Name */ 9981*5113495bSYour Name struct wmi_raw_event_buffer { 9982*5113495bSYour Name void *evt_raw_buf; 9983*5113495bSYour Name void *evt_processed_buf; 9984*5113495bSYour Name }; 9985*5113495bSYour Name 9986*5113495bSYour Name /* dpd_status from WMI_PDEV_GET_DPD_STATUS_EVENTID */ 9987*5113495bSYour Name enum wmi_host_dpd_status { 9988*5113495bSYour Name WMI_HOST_DPD_STATUS_FAIL = 0, 9989*5113495bSYour Name WMI_HOST_DPD_STATUS_PASS = 1, 9990*5113495bSYour Name WMI_HOST_DPD_STATUS_INVALID = 2, 9991*5113495bSYour Name }; 9992*5113495bSYour Name 9993*5113495bSYour Name /** 9994*5113495bSYour Name * struct wmi_host_pdev_get_dpd_status_event 9995*5113495bSYour Name * @pdev_id: pdev id 9996*5113495bSYour Name * @dpd_status: dpd status from FW - FAIL/PASS/INVALID 9997*5113495bSYour Name */ 9998*5113495bSYour Name struct wmi_host_pdev_get_dpd_status_event { 9999*5113495bSYour Name uint32_t pdev_id; 10000*5113495bSYour Name enum wmi_host_dpd_status dpd_status; 10001*5113495bSYour Name }; 10002*5113495bSYour Name 10003*5113495bSYour Name struct wmi_host_pdev_get_halphy_cal_status_event { 10004*5113495bSYour Name uint32_t pdev_id; 10005*5113495bSYour Name uint32_t halphy_cal_adc_status:1, 10006*5113495bSYour Name halphy_cal_bwfilter_status:1, 10007*5113495bSYour Name halphy_cal_pdet_and_pal_status:1, 10008*5113495bSYour Name halphy_cal_rxdco_status:1, 10009*5113495bSYour Name halphy_cal_comb_txiq_rxiq_status:1, 10010*5113495bSYour Name halphy_cal_ibf_status:1, 10011*5113495bSYour Name halphy_cal_pa_droop_status:1, 10012*5113495bSYour Name halphy_cal_dac_status:1, 10013*5113495bSYour Name halphy_cal_ani_status:1, 10014*5113495bSYour Name halphy_cal_noise_floor_status:1; 10015*5113495bSYour Name }; 10016*5113495bSYour Name 10017*5113495bSYour Name /** 10018*5113495bSYour Name * enum wmi_host_set_halphy_cal_chan_sel - channel select values for 10019*5113495bSYour Name * set halphy cal 10020*5113495bSYour Name * @WMI_HOST_SET_HALPHY_CAL_HOME_CHANNEL: Home channel 10021*5113495bSYour Name * @WMI_HOST_SET_HALPHY_CAL_SCAN_CHANNEL: Scan channel 10022*5113495bSYour Name * @WMI_HOST_SET_HALPHY_CAL_BOTH_CHANNELS: Both (Home + Scan) channels 10023*5113495bSYour Name */ 10024*5113495bSYour Name 10025*5113495bSYour Name enum wmi_host_set_halphy_cal_chan_sel { 10026*5113495bSYour Name WMI_HOST_SET_HALPHY_CAL_HOME_CHANNEL = 0, 10027*5113495bSYour Name WMI_HOST_SET_HALPHY_CAL_SCAN_CHANNEL = 1, 10028*5113495bSYour Name WMI_HOST_SET_HALPHY_CAL_BOTH_CHANNELS = 2, 10029*5113495bSYour Name }; 10030*5113495bSYour Name 10031*5113495bSYour Name /** 10032*5113495bSYour Name * struct wmi_host_send_set_halphy_cal_info 10033*5113495bSYour Name * @pdev_id: pdev id 10034*5113495bSYour Name * @value: bmap value 10035*5113495bSYour Name * @chan_sel: channel for calibration - HOME/SCAN/BOTH 10036*5113495bSYour Name */ 10037*5113495bSYour Name struct wmi_host_send_set_halphy_cal_info { 10038*5113495bSYour Name uint8_t pdev_id; 10039*5113495bSYour Name uint32_t value; 10040*5113495bSYour Name enum wmi_host_set_halphy_cal_chan_sel chan_sel; 10041*5113495bSYour Name }; 10042*5113495bSYour Name 10043*5113495bSYour Name /** 10044*5113495bSYour Name * struct wmi_install_key_comp_event - params of install key complete event 10045*5113495bSYour Name * @vdev_id: unique id identifying the VDEV, generated by the caller 10046*5113495bSYour Name * @key_ix: key index 10047*5113495bSYour Name * @key_flags: key flags 10048*5113495bSYour Name * @status: Event status 10049*5113495bSYour Name * @peer_macaddr: MAC address used for installing 10050*5113495bSYour Name */ 10051*5113495bSYour Name struct wmi_install_key_comp_event { 10052*5113495bSYour Name uint32_t vdev_id; 10053*5113495bSYour Name uint32_t key_ix; 10054*5113495bSYour Name uint32_t key_flags; 10055*5113495bSYour Name uint32_t status; 10056*5113495bSYour Name uint8_t peer_macaddr[QDF_MAC_ADDR_SIZE]; 10057*5113495bSYour Name }; 10058*5113495bSYour Name 10059*5113495bSYour Name /** 10060*5113495bSYour Name * enum wmi_host_set_halphy_cal_status - status values from 10061*5113495bSYour Name * WMI_PDEV_SET_HALPHY_CAL_BMAP_EVENTID 10062*5113495bSYour Name * @WMI_HOST_SET_HALPHY_CAL_STATUS_SUCCESS: set halphy cal success 10063*5113495bSYour Name * @WMI_HOST_SET_HALPHY_CAL_STATUS_FAIL: set halphy cal failure 10064*5113495bSYour Name */ 10065*5113495bSYour Name enum wmi_host_set_halphy_cal_status { 10066*5113495bSYour Name WMI_HOST_SET_HALPHY_CAL_STATUS_SUCCESS = 0, 10067*5113495bSYour Name WMI_HOST_SET_HALPHY_CAL_STATUS_FAIL = 1, 10068*5113495bSYour Name }; 10069*5113495bSYour Name 10070*5113495bSYour Name /** 10071*5113495bSYour Name * struct wmi_host_pdev_set_halphy_cal_event 10072*5113495bSYour Name * @pdev_id: pdev id 10073*5113495bSYour Name * @status: PASS/FAIL 10074*5113495bSYour Name */ 10075*5113495bSYour Name struct wmi_host_pdev_set_halphy_cal_event { 10076*5113495bSYour Name uint32_t pdev_id; 10077*5113495bSYour Name enum wmi_host_set_halphy_cal_status status; 10078*5113495bSYour Name }; 10079*5113495bSYour Name 10080*5113495bSYour Name #ifdef FEATURE_MEC_OFFLOAD 10081*5113495bSYour Name /** 10082*5113495bSYour Name * struct set_mec_timer_params - params MEC timer params 10083*5113495bSYour Name * @pdev_id: unique id identifying the PDEV, generated by the caller 10084*5113495bSYour Name * @vdev_id: unique id identifying the VDEV, generated by the caller 10085*5113495bSYour Name * @mec_aging_timer_threshold: The Threshold for mec aging timer in ms 10086*5113495bSYour Name * @enable: Enable/Disable the command 10087*5113495bSYour Name */ 10088*5113495bSYour Name struct set_mec_timer_params { 10089*5113495bSYour Name uint32_t pdev_id; 10090*5113495bSYour Name uint32_t vdev_id; 10091*5113495bSYour Name uint32_t mec_aging_timer_threshold; 10092*5113495bSYour Name }; 10093*5113495bSYour Name #endif 10094*5113495bSYour Name 10095*5113495bSYour Name #ifdef WLAN_FEATURE_DYNAMIC_MAC_ADDR_UPDATE 10096*5113495bSYour Name /** 10097*5113495bSYour Name * struct set_mac_addr_params - Set MAC address command parameter 10098*5113495bSYour Name * @vdev_id: vdev id 10099*5113495bSYour Name * @mac_addr: VDEV MAC address 10100*5113495bSYour Name * @mld_addr: MLD address of the vdev 10101*5113495bSYour Name */ 10102*5113495bSYour Name struct set_mac_addr_params { 10103*5113495bSYour Name uint8_t vdev_id; 10104*5113495bSYour Name struct qdf_mac_addr mac_addr; 10105*5113495bSYour Name struct qdf_mac_addr mld_addr; 10106*5113495bSYour Name }; 10107*5113495bSYour Name #endif 10108*5113495bSYour Name 10109*5113495bSYour Name #ifdef WLAN_FEATURE_SON 10110*5113495bSYour Name /** 10111*5113495bSYour Name * struct wmi_host_inst_rssi_stats_resp - inst rssi stats 10112*5113495bSYour Name * @inst_rssi: instantaneous rssi above the noise floor in dB unit 10113*5113495bSYour Name * @peer_macaddr: peer mac address 10114*5113495bSYour Name * @vdev_id: vdev_id 10115*5113495bSYour Name */ 10116*5113495bSYour Name struct wmi_host_inst_rssi_stats_resp { 10117*5113495bSYour Name uint32_t inst_rssi; 10118*5113495bSYour Name struct qdf_mac_addr peer_macaddr; 10119*5113495bSYour Name uint32_t vdev_id; 10120*5113495bSYour Name }; 10121*5113495bSYour Name #endif 10122*5113495bSYour Name 10123*5113495bSYour Name /** 10124*5113495bSYour Name * struct vdev_pn_mgmt_rxfilter_params - Send PN mgmt RxFilter command params 10125*5113495bSYour Name * @vdev_id: vdev id 10126*5113495bSYour Name * @pn_rxfilter: Rx Filter 10127*5113495bSYour Name */ 10128*5113495bSYour Name struct vdev_pn_mgmt_rxfilter_params { 10129*5113495bSYour Name uint8_t vdev_id; 10130*5113495bSYour Name uint32_t pn_rxfilter; 10131*5113495bSYour Name }; 10132*5113495bSYour Name 10133*5113495bSYour Name /** 10134*5113495bSYour Name * struct wmi_host_sw_cal_ver - BDF and FTM cal version data 10135*5113495bSYour Name * @bdf_cal_ver: SW cal version in BDF 10136*5113495bSYour Name * @ftm_cal_ver: SW cal version in factory data 10137*5113495bSYour Name * @status: status. 0 for success, non-zero if version is incorrect 10138*5113495bSYour Name */ 10139*5113495bSYour Name struct wmi_host_sw_cal_ver { 10140*5113495bSYour Name uint32_t bdf_cal_ver; 10141*5113495bSYour Name uint32_t ftm_cal_ver; 10142*5113495bSYour Name uint32_t status; 10143*5113495bSYour Name }; 10144*5113495bSYour Name 10145*5113495bSYour Name #ifdef HEALTH_MON_SUPPORT 10146*5113495bSYour Name /** 10147*5113495bSYour Name * struct wmi_health_mon_params - Health mon params 10148*5113495bSYour Name * @ring_buf_paddr_low: Ring buffer physical address LOW 10149*5113495bSYour Name * @ring_buf_paddr_high: Ring buffer physical address HIGH 10150*5113495bSYour Name * @initial_upload_period_ms: Health mon periodic time 10151*5113495bSYour Name * @read_index: ring element read_index 10152*5113495bSYour Name */ 10153*5113495bSYour Name struct wmi_health_mon_params { 10154*5113495bSYour Name uint32_t ring_buf_paddr_low; 10155*5113495bSYour Name uint32_t ring_buf_paddr_high; 10156*5113495bSYour Name uint32_t initial_upload_period_ms; 10157*5113495bSYour Name uint32_t read_index; 10158*5113495bSYour Name }; 10159*5113495bSYour Name #endif /* HEALTH_MON_SUPPORT */ 10160*5113495bSYour Name 10161*5113495bSYour Name /** 10162*5113495bSYour Name * struct edca_pifs_vparam - edca/pifs param for ll sap 10163*5113495bSYour Name * @vdev_id: vdev id 10164*5113495bSYour Name * @param: pointer to wlan_edca_pifs_param_ie struct 10165*5113495bSYour Name */ 10166*5113495bSYour Name struct edca_pifs_vparam { 10167*5113495bSYour Name uint8_t vdev_id; 10168*5113495bSYour Name struct wlan_edca_pifs_param_ie param; 10169*5113495bSYour Name }; 10170*5113495bSYour Name 10171*5113495bSYour Name /** 10172*5113495bSYour Name * struct wmi_host_coex_fix_chan_cap - fw capability to support fixed chan SAP 10173*5113495bSYour Name * @fix_chan_priority: Fix channel priority, set to 1 if firmware supports it 10174*5113495bSYour Name */ 10175*5113495bSYour Name struct wmi_host_coex_fix_chan_cap { 10176*5113495bSYour Name uint32_t fix_chan_priority; 10177*5113495bSYour Name }; 10178*5113495bSYour Name #endif /* _WMI_UNIFIED_PARAM_H_ */ 10179