xref: /wlan-driver/qca-wifi-host-cmn/wmi/inc/wmi_unified_param.h (revision 5113495b16420b49004c444715d2daae2066e7dc)
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