xref: /wlan-driver/qcacld-3.0/components/mlme/dispatcher/inc/wlan_mlme_public_struct.h (revision 5113495b16420b49004c444715d2daae2066e7dc)
1*5113495bSYour Name /*
2*5113495bSYour Name  * Copyright (c) 2018-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  * DOC: contains mlme structure definitions
22*5113495bSYour Name  */
23*5113495bSYour Name 
24*5113495bSYour Name #ifndef _WLAN_MLME_STRUCT_H_
25*5113495bSYour Name #define _WLAN_MLME_STRUCT_H_
26*5113495bSYour Name 
27*5113495bSYour Name #include <wlan_cmn.h>
28*5113495bSYour Name #include <reg_services_public_struct.h>
29*5113495bSYour Name #include <wmi_unified_param.h>
30*5113495bSYour Name #include <sir_api.h>
31*5113495bSYour Name #include "wlan_cm_roam_public_struct.h"
32*5113495bSYour Name #include "wlan_mlme_twt_public_struct.h"
33*5113495bSYour Name #include "cfg_mlme_generic.h"
34*5113495bSYour Name #include "host_diag_core_event.h"
35*5113495bSYour Name 
36*5113495bSYour Name #define OWE_TRANSITION_OUI_TYPE "\x50\x6f\x9a\x1c"
37*5113495bSYour Name #define OWE_TRANSITION_OUI_SIZE 4
38*5113495bSYour Name 
39*5113495bSYour Name /*
40*5113495bSYour Name  * EID_VENDOR| IE_LEN | OUI |OUI_TYPE| OWE transition BSSID|SSID_LEN|   SSID   |
41*5113495bSYour Name  *   (1)     |  (1)   | (3) |   (1)  |         (6)         |   (1)  |(SSID_LEN)|
42*5113495bSYour Name  */
43*5113495bSYour Name #define OWE_SSID_LEN_OFFSET 12
44*5113495bSYour Name #define OWE_SSID_OFFSET     13
45*5113495bSYour Name 
46*5113495bSYour Name #define CFG_PMKID_MODES_OKC                        (0x1)
47*5113495bSYour Name #define CFG_PMKID_MODES_PMKSA_CACHING              (0x2)
48*5113495bSYour Name 
49*5113495bSYour Name #define CFG_VHT_BASIC_MCS_SET_STADEF    0xFFFE
50*5113495bSYour Name 
51*5113495bSYour Name #define CFG_VHT_RX_MCS_MAP_STAMIN    0
52*5113495bSYour Name #define CFG_VHT_RX_MCS_MAP_STAMAX    0xFFFF
53*5113495bSYour Name #define CFG_VHT_RX_MCS_MAP_STADEF    0xFFFE
54*5113495bSYour Name 
55*5113495bSYour Name #define CFG_VHT_TX_MCS_MAP_STAMIN    0
56*5113495bSYour Name #define CFG_VHT_TX_MCS_MAP_STAMAX    0xFFFF
57*5113495bSYour Name #define CFG_VHT_TX_MCS_MAP_STADEF    0xFFFE
58*5113495bSYour Name 
59*5113495bSYour Name #define STA_DOT11_MODE_INDX       0
60*5113495bSYour Name #define P2P_DEV_DOT11_MODE_INDX   4
61*5113495bSYour Name #define NAN_DISC_DOT11_MODE_INDX  8
62*5113495bSYour Name #define OCB_DOT11_MODE_INDX       12
63*5113495bSYour Name #define TDLS_DOT11_MODE_INDX      16
64*5113495bSYour Name #define NDI_DOT11_MODE_INDX       20
65*5113495bSYour Name 
66*5113495bSYour Name /* Roam debugging related macro defines */
67*5113495bSYour Name #define MAX_ROAM_DEBUG_BUF_SIZE    250
68*5113495bSYour Name #define MAX_ROAM_EVENTS_SUPPORTED  5
69*5113495bSYour Name #define ROAM_FAILURE_BUF_SIZE      60
70*5113495bSYour Name #define TIME_STRING_LEN            24
71*5113495bSYour Name 
72*5113495bSYour Name #define ROAM_CHANNEL_BUF_SIZE      300
73*5113495bSYour Name #define LINE_STR "=============================================================="
74*5113495bSYour Name /*
75*5113495bSYour Name  * MLME_CFG_VHT_CSN_BEAMFORMEE_ANT_SUPPORTED_FW_DEF + 1 is
76*5113495bSYour Name  * assumed to be the default fw supported BF antennas, if fw
77*5113495bSYour Name  * says it supports 8 antennas in rx ready event and if
78*5113495bSYour Name  * gTxBFCsnValue INI value is configured above 3, set
79*5113495bSYour Name  * the same to MLME_CFG_VHT_CSN_BEAMFORMEE_ANT_SUPPORTED.
80*5113495bSYour Name  * Otherwise, fall back and set fw default value[3].
81*5113495bSYour Name  */
82*5113495bSYour Name #define MLME_VHT_CSN_BEAMFORMEE_ANT_SUPPORTED_FW_DEF 3
83*5113495bSYour Name 
84*5113495bSYour Name #define CFG_STR_DATA_LEN     17
85*5113495bSYour Name #define CFG_EDCA_DATA_LEN    17
86*5113495bSYour Name #define CFG_MAX_TX_POWER_2_4_LEN    128
87*5113495bSYour Name #define CFG_MAX_TX_POWER_5_LEN      256
88*5113495bSYour Name #define CFG_POWER_USAGE_MAX_LEN      4
89*5113495bSYour Name #define CFG_MAX_STR_LEN       256
90*5113495bSYour Name #define MAX_VENDOR_IES_LEN 1532
91*5113495bSYour Name 
92*5113495bSYour Name #define CFG_MAX_PMK_LEN       64
93*5113495bSYour Name 
94*5113495bSYour Name #define CFG_VALID_CHANNEL_LIST_STRING_LEN (CFG_VALID_CHANNEL_LIST_LEN * 4)
95*5113495bSYour Name 
96*5113495bSYour Name #define DEFAULT_ROAM_TRIGGER_BITMAP 0xFFFFFFFF
97*5113495bSYour Name 
98*5113495bSYour Name /*
99*5113495bSYour Name  * detect AP off based FW reported last RSSI > roaming Low rssi
100*5113495bSYour Name  * and not less than 20db of host cached RSSI
101*5113495bSYour Name  */
102*5113495bSYour Name #define AP_OFF_RSSI_OFFSET 20
103*5113495bSYour Name 
104*5113495bSYour Name /* Default beacon interval of 100 ms */
105*5113495bSYour Name #define CUSTOM_CONC_GO_BI 100
106*5113495bSYour Name 
107*5113495bSYour Name #define HECAP_TXRX_MCS_NSS_IDX_80    (0)
108*5113495bSYour Name #define HECAP_TXRX_MCS_NSS_IDX_160   (1)
109*5113495bSYour Name #define HECAP_TXRX_MCS_NSS_IDX_80_80 (2)
110*5113495bSYour Name #define INVALID_MCS_NSS_INDEX         0xff
111*5113495bSYour Name 
112*5113495bSYour Name enum diagwlan_status_eventsubtype {
113*5113495bSYour Name 	DIAG_WLAN_STATUS_CONNECT = 0,
114*5113495bSYour Name 	DIAG_WLAN_STATUS_DISCONNECT
115*5113495bSYour Name };
116*5113495bSYour Name 
117*5113495bSYour Name enum diagwlan_status_eventreason {
118*5113495bSYour Name 	DIAG_REASON_UNSPECIFIED = 0,
119*5113495bSYour Name 	DIAG_REASON_USER_REQUESTED,
120*5113495bSYour Name 	DIAG_REASON_MIC_ERROR,
121*5113495bSYour Name 	DIAG_REASON_DISASSOC,
122*5113495bSYour Name 	DIAG_REASON_DEAUTH,
123*5113495bSYour Name 	DIAG_REASON_HANDOFF,
124*5113495bSYour Name 	DIAG_REASON_ROAM_SYNCH_IND,
125*5113495bSYour Name 	DIAG_REASON_ROAM_SYNCH_CNF,
126*5113495bSYour Name 	DIAG_REASON_ROAM_HO_FAIL,
127*5113495bSYour Name };
128*5113495bSYour Name 
129*5113495bSYour Name /**
130*5113495bSYour Name  * struct mlme_cfg_str - generic structure for all mlme CFG string items
131*5113495bSYour Name  *
132*5113495bSYour Name  * @max_len: maximum data length allowed
133*5113495bSYour Name  * @len: valid no. of elements of the data
134*5113495bSYour Name  * @data: uint8_t array to store values
135*5113495bSYour Name  */
136*5113495bSYour Name struct mlme_cfg_str {
137*5113495bSYour Name 	qdf_size_t max_len;
138*5113495bSYour Name 	qdf_size_t len;
139*5113495bSYour Name 	uint8_t data[CFG_STR_DATA_LEN];
140*5113495bSYour Name };
141*5113495bSYour Name 
142*5113495bSYour Name /**
143*5113495bSYour Name  * enum e_edca_type - to index edca params for edca profile
144*5113495bSYour Name  *			 EDCA profile   AC   unicast/bcast
145*5113495bSYour Name  * @edca_ani_acbe_local:    ani          BE      unicast
146*5113495bSYour Name  * @edca_ani_acbk_local:    ani          BK      unicast
147*5113495bSYour Name  * @edca_ani_acvi_local:    ani          VI      unicast
148*5113495bSYour Name  * @edca_ani_acvo_local:    ani          VO      unicast
149*5113495bSYour Name  * @edca_ani_acbe_bcast:    ani          BE      bcast
150*5113495bSYour Name  * @edca_ani_acbk_bcast:    ani          BK      bcast
151*5113495bSYour Name  * @edca_ani_acvi_bcast:    ani          VI      bcast
152*5113495bSYour Name  * @edca_ani_acvo_bcast:    ani          VO      bcast
153*5113495bSYour Name  * @edca_wme_acbe_local:    wme          BE      unicast
154*5113495bSYour Name  * @edca_wme_acbk_local:    wme          BK      unicast
155*5113495bSYour Name  * @edca_wme_acvi_local:    wme          VI      unicast
156*5113495bSYour Name  * @edca_wme_acvo_local:    wme          VO      unicast
157*5113495bSYour Name  * @edca_wme_acbe_bcast:    wme          BE      bcast
158*5113495bSYour Name  * @edca_wme_acbk_bcast:    wme          BK      bcast
159*5113495bSYour Name  * @edca_wme_acvi_bcast:    wme          VI      bcast
160*5113495bSYour Name  * @edca_wme_acvo_bcast:    wme          VO      bcast
161*5113495bSYour Name  * @edca_etsi_acbe_local:   etsi         BE      unicast
162*5113495bSYour Name  * @edca_etsi_acbk_local:   etsi         BK      unicast
163*5113495bSYour Name  * @edca_etsi_acvi_local:   etsi         VI      unicast
164*5113495bSYour Name  * @edca_etsi_acvo_local:   etsi         VO      unicast
165*5113495bSYour Name  * @edca_etsi_acbe_bcast:   etsi         BE      bcast
166*5113495bSYour Name  * @edca_etsi_acbk_bcast:   etsi         BK      bcast
167*5113495bSYour Name  * @edca_etsi_acvi_bcast:   etsi         VI      bcast
168*5113495bSYour Name  * @edca_etsi_acvo_bcast:   etsi         VO      bcast
169*5113495bSYour Name  */
170*5113495bSYour Name enum e_edca_type {
171*5113495bSYour Name 	edca_ani_acbe_local,
172*5113495bSYour Name 	edca_ani_acbk_local,
173*5113495bSYour Name 	edca_ani_acvi_local,
174*5113495bSYour Name 	edca_ani_acvo_local,
175*5113495bSYour Name 	edca_ani_acbe_bcast,
176*5113495bSYour Name 	edca_ani_acbk_bcast,
177*5113495bSYour Name 	edca_ani_acvi_bcast,
178*5113495bSYour Name 	edca_ani_acvo_bcast,
179*5113495bSYour Name 	edca_wme_acbe_local,
180*5113495bSYour Name 	edca_wme_acbk_local,
181*5113495bSYour Name 	edca_wme_acvi_local,
182*5113495bSYour Name 	edca_wme_acvo_local,
183*5113495bSYour Name 	edca_wme_acbe_bcast,
184*5113495bSYour Name 	edca_wme_acbk_bcast,
185*5113495bSYour Name 	edca_wme_acvi_bcast,
186*5113495bSYour Name 	edca_wme_acvo_bcast,
187*5113495bSYour Name 	edca_etsi_acbe_local,
188*5113495bSYour Name 	edca_etsi_acbk_local,
189*5113495bSYour Name 	edca_etsi_acvi_local,
190*5113495bSYour Name 	edca_etsi_acvo_local,
191*5113495bSYour Name 	edca_etsi_acbe_bcast,
192*5113495bSYour Name 	edca_etsi_acbk_bcast,
193*5113495bSYour Name 	edca_etsi_acvi_bcast,
194*5113495bSYour Name 	edca_etsi_acvo_bcast
195*5113495bSYour Name };
196*5113495bSYour Name 
197*5113495bSYour Name #define CFG_EDCA_PROFILE_ACM_IDX      0
198*5113495bSYour Name #define CFG_EDCA_PROFILE_AIFSN_IDX    1
199*5113495bSYour Name #define CFG_EDCA_PROFILE_CWMINA_IDX   2
200*5113495bSYour Name #define CFG_EDCA_PROFILE_CWMAXA_IDX   4
201*5113495bSYour Name #define CFG_EDCA_PROFILE_TXOPA_IDX    6
202*5113495bSYour Name #define CFG_EDCA_PROFILE_CWMINB_IDX   7
203*5113495bSYour Name #define CFG_EDCA_PROFILE_CWMAXB_IDX   9
204*5113495bSYour Name #define CFG_EDCA_PROFILE_TXOPB_IDX    11
205*5113495bSYour Name #define CFG_EDCA_PROFILE_CWMING_IDX   12
206*5113495bSYour Name #define CFG_EDCA_PROFILE_CWMAXG_IDX   14
207*5113495bSYour Name #define CFG_EDCA_PROFILE_TXOPG_IDX    16
208*5113495bSYour Name 
209*5113495bSYour Name /**
210*5113495bSYour Name  * struct mlme_edca_ac_vo - cwmin, cwmax and  aifs value for edca_ac_vo
211*5113495bSYour Name  *
212*5113495bSYour Name  * @vo_cwmin: cwmin value for voice
213*5113495bSYour Name  * @vo_cwmax: cwmax value for voice
214*5113495bSYour Name  * @vo_aifs: aifs value for voice
215*5113495bSYour Name  */
216*5113495bSYour Name struct mlme_edca_ac_vo {
217*5113495bSYour Name 	uint32_t vo_cwmin;
218*5113495bSYour Name 	uint32_t vo_cwmax;
219*5113495bSYour Name 	uint32_t vo_aifs;
220*5113495bSYour Name };
221*5113495bSYour Name 
222*5113495bSYour Name /**
223*5113495bSYour Name  * enum mlme_dot11_mode - Dot11 mode of the vdev
224*5113495bSYour Name  * @MLME_DOT11_MODE_ALL: vdev supports all dot11 modes
225*5113495bSYour Name  * @MLME_DOT11_MODE_ABG: vdev supports just 11A, 11B and 11G modes
226*5113495bSYour Name  * @MLME_DOT11_MODE_11A: vdev just supports 11A mode
227*5113495bSYour Name  * @MLME_DOT11_MODE_11B: vdev supports 11B mode, and modes above it
228*5113495bSYour Name  * @MLME_DOT11_MODE_11G: vdev supports 11G mode, and modes above it
229*5113495bSYour Name  * @MLME_DOT11_MODE_11N: vdev supports 11N mode, and modes above it
230*5113495bSYour Name  * @MLME_DOT11_MODE_11G_ONLY: vdev just supports 11G mode
231*5113495bSYour Name  * @MLME_DOT11_MODE_11N_ONLY: vdev just supports 11N mode
232*5113495bSYour Name  * @MLME_DOT11_MODE_11AC: vdev supports 11AC mode, and modes above it
233*5113495bSYour Name  * @MLME_DOT11_MODE_11AC_ONLY: vdev just supports 11AC mode
234*5113495bSYour Name  * @MLME_DOT11_MODE_11AX: vdev supports 11AX mode, and modes above it
235*5113495bSYour Name  * @MLME_DOT11_MODE_11AX_ONLY: vdev just supports 11AX mode
236*5113495bSYour Name  * @MLME_DOT11_MODE_11BE: vdev supports 11BE mode, and modes above it
237*5113495bSYour Name  * @MLME_DOT11_MODE_11BE_ONLY: vdev just supports 11BE mode
238*5113495bSYour Name  */
239*5113495bSYour Name enum mlme_dot11_mode {
240*5113495bSYour Name 	MLME_DOT11_MODE_ALL,
241*5113495bSYour Name 	/* Initial dot11 modes should come first */
242*5113495bSYour Name 	MLME_DOT11_MODE_ABG,
243*5113495bSYour Name 	MLME_DOT11_MODE_11A,
244*5113495bSYour Name 	MLME_DOT11_MODE_11B,
245*5113495bSYour Name 	MLME_DOT11_MODE_11G,
246*5113495bSYour Name 	MLME_DOT11_MODE_11N,
247*5113495bSYour Name 	MLME_DOT11_MODE_11G_ONLY,
248*5113495bSYour Name 	MLME_DOT11_MODE_11N_ONLY,
249*5113495bSYour Name 	MLME_DOT11_MODE_11AC,
250*5113495bSYour Name 	MLME_DOT11_MODE_11AC_ONLY,
251*5113495bSYour Name 	MLME_DOT11_MODE_11AX,
252*5113495bSYour Name 	MLME_DOT11_MODE_11AX_ONLY,
253*5113495bSYour Name 	MLME_DOT11_MODE_11BE,
254*5113495bSYour Name 	MLME_DOT11_MODE_11BE_ONLY,
255*5113495bSYour Name };
256*5113495bSYour Name 
257*5113495bSYour Name /**
258*5113495bSYour Name  * struct wlan_mlme_dot11_mode - dot11 mode
259*5113495bSYour Name  *
260*5113495bSYour Name  * @dot11_mode: dot11 mode supported
261*5113495bSYour Name  * @vdev_type_dot11_mode: dot11 mode supported by different vdev types
262*5113495bSYour Name  */
263*5113495bSYour Name struct wlan_mlme_dot11_mode {
264*5113495bSYour Name 	enum mlme_dot11_mode dot11_mode;
265*5113495bSYour Name 	uint32_t vdev_type_dot11_mode;
266*5113495bSYour Name };
267*5113495bSYour Name 
268*5113495bSYour Name /**
269*5113495bSYour Name  * struct mlme_edca_ac_vi - cwmin, cwmax and  aifs value for edca_ac_vi
270*5113495bSYour Name  *
271*5113495bSYour Name  * @vi_cwmin: cwmin value for video
272*5113495bSYour Name  * @vi_cwmax: cwmax value for video
273*5113495bSYour Name  * @vi_aifs: aifs value for video
274*5113495bSYour Name  */
275*5113495bSYour Name struct mlme_edca_ac_vi {
276*5113495bSYour Name 	uint32_t vi_cwmin;
277*5113495bSYour Name 	uint32_t vi_cwmax;
278*5113495bSYour Name 	uint32_t vi_aifs;
279*5113495bSYour Name };
280*5113495bSYour Name 
281*5113495bSYour Name /**
282*5113495bSYour Name  * struct mlme_edca_ac_bk - cwmin, cwmax and  aifs value for edca_ac_bk
283*5113495bSYour Name  *
284*5113495bSYour Name  * @bk_cwmin: cwmin value for background
285*5113495bSYour Name  * @bk_cwmax: cwmax value for background
286*5113495bSYour Name  * @bk_aifs: aifs value for background
287*5113495bSYour Name  */
288*5113495bSYour Name struct mlme_edca_ac_bk {
289*5113495bSYour Name 	uint32_t bk_cwmin;
290*5113495bSYour Name 	uint32_t bk_cwmax;
291*5113495bSYour Name 	uint32_t bk_aifs;
292*5113495bSYour Name };
293*5113495bSYour Name 
294*5113495bSYour Name /**
295*5113495bSYour Name  * struct mlme_edca_ac_be - cwmin, cwmax and  aifs value for edca_ac_be
296*5113495bSYour Name  *
297*5113495bSYour Name  * @be_cwmin: cwmin value for best effort
298*5113495bSYour Name  * @be_cwmax: cwmax value for best effort
299*5113495bSYour Name  * @be_aifs: aifs value for best effort
300*5113495bSYour Name  */
301*5113495bSYour Name struct mlme_edca_ac_be {
302*5113495bSYour Name 	uint32_t be_cwmin;
303*5113495bSYour Name 	uint32_t be_cwmax;
304*5113495bSYour Name 	uint32_t be_aifs;
305*5113495bSYour Name };
306*5113495bSYour Name 
307*5113495bSYour Name /**
308*5113495bSYour Name  * enum mlme_ts_info_ack_policy - TS Info Ack Policy
309*5113495bSYour Name  * @TS_INFO_ACK_POLICY_NORMAL_ACK:normal ack
310*5113495bSYour Name  * @TS_INFO_ACK_POLICY_HT_IMMEDIATE_BLOCK_ACK: HT immediate block ack
311*5113495bSYour Name  */
312*5113495bSYour Name enum mlme_ts_info_ack_policy {
313*5113495bSYour Name 	TS_INFO_ACK_POLICY_NORMAL_ACK = 0,
314*5113495bSYour Name 	TS_INFO_ACK_POLICY_HT_IMMEDIATE_BLOCK_ACK = 1,
315*5113495bSYour Name };
316*5113495bSYour Name 
317*5113495bSYour Name /**
318*5113495bSYour Name  * struct wlan_mlme_edca_params - EDCA pramaters related config items
319*5113495bSYour Name  *
320*5113495bSYour Name  * @ani_acbk_l:  EDCA parameters for ANI local access category background
321*5113495bSYour Name  * @ani_acbe_l:  EDCA parameters for ANI local access category best effort
322*5113495bSYour Name  * @ani_acvi_l:  EDCA parameters for ANI local access category video
323*5113495bSYour Name  * @ani_acvo_l:  EDCA parameters for ANI local access category voice
324*5113495bSYour Name  * @ani_acbk_b:  EDCA parameters for ANI bcast access category background
325*5113495bSYour Name  * @ani_acbe_b:  EDCA parameters for ANI bcast access category best effort
326*5113495bSYour Name  * @ani_acvi_b:  EDCA parameters for ANI bcast access category video
327*5113495bSYour Name  * @ani_acvo_b:  EDCA parameters for ANI bcast access category voice
328*5113495bSYour Name  * @wme_acbk_l:  EDCA parameters for WME local access category background
329*5113495bSYour Name  * @wme_acbe_l:  EDCA parameters for WME local access category best effort
330*5113495bSYour Name  * @wme_acvi_l:  EDCA parameters for WME local access category video
331*5113495bSYour Name  * @wme_acvo_l:  EDCA parameters for WME local access category voice
332*5113495bSYour Name  * @wme_acbk_b:  EDCA parameters for WME bcast access category background
333*5113495bSYour Name  * @wme_acbe_b:  EDCA parameters for WME bcast access category best effort
334*5113495bSYour Name  * @wme_acvi_b:  EDCA parameters for WME bcast access category video
335*5113495bSYour Name  * @wme_acvo_b:  EDCA parameters for WME bcast access category voice
336*5113495bSYour Name  * @etsi_acbk_l: EDCA parameters for ETSI local access category background
337*5113495bSYour Name  * @etsi_acbe_l: EDCA parameters for ETSI local access category best effort
338*5113495bSYour Name  * @etsi_acvi_l: EDCA parameters for ETSI local access category video
339*5113495bSYour Name  * @etsi_acvo_l: EDCA parameters for ETSI local access category voice
340*5113495bSYour Name  * @etsi_acbk_b: EDCA parameters for ETSI bcast access category background
341*5113495bSYour Name  * @etsi_acbe_b: EDCA parameters for ETSI bcast access category best effort
342*5113495bSYour Name  * @etsi_acvi_b: EDCA parameters for ETSI bcast access category video
343*5113495bSYour Name  * @etsi_acvo_b: EDCA parameters for ETSI bcast access category voice
344*5113495bSYour Name  * @enable_edca_params: Enable edca parameter
345*5113495bSYour Name  * @enable_wmm_txop: Enable WMM TxOp
346*5113495bSYour Name  * @edca_ac_vo: value for edca_ac_vo
347*5113495bSYour Name  * @edca_ac_vi: value for edca_ac_vi
348*5113495bSYour Name  * @edca_ac_bk: value for edca_ac_bk
349*5113495bSYour Name  * @edca_ac_be: value for edca_ac_be
350*5113495bSYour Name  * @edca_param_type: Edca param type
351*5113495bSYour Name  */
352*5113495bSYour Name struct wlan_mlme_edca_params {
353*5113495bSYour Name 	struct mlme_cfg_str ani_acbk_l;
354*5113495bSYour Name 	struct mlme_cfg_str ani_acbe_l;
355*5113495bSYour Name 	struct mlme_cfg_str ani_acvi_l;
356*5113495bSYour Name 	struct mlme_cfg_str ani_acvo_l;
357*5113495bSYour Name 	struct mlme_cfg_str ani_acbk_b;
358*5113495bSYour Name 	struct mlme_cfg_str ani_acbe_b;
359*5113495bSYour Name 	struct mlme_cfg_str ani_acvi_b;
360*5113495bSYour Name 	struct mlme_cfg_str ani_acvo_b;
361*5113495bSYour Name 
362*5113495bSYour Name 	struct mlme_cfg_str wme_acbk_l;
363*5113495bSYour Name 	struct mlme_cfg_str wme_acbe_l;
364*5113495bSYour Name 	struct mlme_cfg_str wme_acvi_l;
365*5113495bSYour Name 	struct mlme_cfg_str wme_acvo_l;
366*5113495bSYour Name 	struct mlme_cfg_str wme_acbk_b;
367*5113495bSYour Name 	struct mlme_cfg_str wme_acbe_b;
368*5113495bSYour Name 	struct mlme_cfg_str wme_acvi_b;
369*5113495bSYour Name 	struct mlme_cfg_str wme_acvo_b;
370*5113495bSYour Name 
371*5113495bSYour Name 	struct mlme_cfg_str etsi_acbk_l;
372*5113495bSYour Name 	struct mlme_cfg_str etsi_acbe_l;
373*5113495bSYour Name 	struct mlme_cfg_str etsi_acvi_l;
374*5113495bSYour Name 	struct mlme_cfg_str etsi_acvo_l;
375*5113495bSYour Name 	struct mlme_cfg_str etsi_acbk_b;
376*5113495bSYour Name 	struct mlme_cfg_str etsi_acbe_b;
377*5113495bSYour Name 	struct mlme_cfg_str etsi_acvi_b;
378*5113495bSYour Name 	struct mlme_cfg_str etsi_acvo_b;
379*5113495bSYour Name 
380*5113495bSYour Name 	bool enable_edca_params;
381*5113495bSYour Name 	bool enable_wmm_txop;
382*5113495bSYour Name 	struct mlme_edca_ac_vo edca_ac_vo;
383*5113495bSYour Name 	struct mlme_edca_ac_vi edca_ac_vi;
384*5113495bSYour Name 	struct mlme_edca_ac_bk edca_ac_bk;
385*5113495bSYour Name 	struct mlme_edca_ac_be edca_ac_be;
386*5113495bSYour Name 
387*5113495bSYour Name 	enum host_edca_param_type edca_param_type;
388*5113495bSYour Name };
389*5113495bSYour Name 
390*5113495bSYour Name /* To configure EDCA/PIFS param for LL SAP */
391*5113495bSYour Name #define CFG_EDCA_PARAM_ACM         0
392*5113495bSYour Name #define CFG_EDCA_PARAM_AIFSN       2
393*5113495bSYour Name #define CFG_EDCA_PARAM_ACI         3
394*5113495bSYour Name #define CFG_EDCA_PARAM_CWMIN       2
395*5113495bSYour Name #define CFG_EDCA_PARAM_CWMAX       3
396*5113495bSYour Name #define CFG_EDCA_PARAM_TXOP        47
397*5113495bSYour Name #define CFG_PIFS_PARAM_SAP_OFFSET  0
398*5113495bSYour Name #define CFG_PIFS_PARAM_LEB_OFFSET  1
399*5113495bSYour Name #define CFG_PIFS_PARAM_REB_OFFSET  2
400*5113495bSYour Name 
401*5113495bSYour Name #define WLAN_CFG_MFR_NAME_LEN (63)
402*5113495bSYour Name #define WLAN_CFG_MODEL_NUMBER_LEN (31)
403*5113495bSYour Name #define WLAN_CFG_MODEL_NAME_LEN (31)
404*5113495bSYour Name #define WLAN_CFG_MFR_PRODUCT_NAME_LEN (31)
405*5113495bSYour Name #define WLAN_CFG_MFR_PRODUCT_VERSION_LEN (31)
406*5113495bSYour Name 
407*5113495bSYour Name #define MLME_NUM_WLM_LATENCY_LEVEL 4
408*5113495bSYour Name #define MLME_RMENABLEDCAP_MAX_LEN  5
409*5113495bSYour Name 
410*5113495bSYour Name #ifndef ANI_LITTLE_BIT_ENDIAN
411*5113495bSYour Name /**
412*5113495bSYour Name  * struct mlme_ht_capabilities_info - HT Capabilities Info
413*5113495bSYour Name  * @l_sig_tx_op_protection: L-SIG TXOP Protection Mechanism support
414*5113495bSYour Name  * @stbc_control_frame: STBC Control frame support
415*5113495bSYour Name  * @psmp: PSMP Support
416*5113495bSYour Name  * @dsss_cck_mode_40_mhz: To indicate use of DSSS/CCK in 40Mhz
417*5113495bSYour Name  * @maximal_amsdu_size: Maximum AMSDU Size - 0:3839 octes, 1:7935 octets
418*5113495bSYour Name  * @delayed_ba: Support of Delayed Block Ack
419*5113495bSYour Name  * @rx_stbc: Rx STBC Support - 0:Not Supported, 1: 1SS, 2: 1,2SS, 3: 1,2,3SS
420*5113495bSYour Name  * @tx_stbc: Tx STBC Support
421*5113495bSYour Name  * @short_gi_40_mhz: Short GI Support for HT40
422*5113495bSYour Name  * @short_gi_20_mhz: Short GI support for HT20
423*5113495bSYour Name  * @green_field: Support for HT Greenfield PPDUs
424*5113495bSYour Name  * @mimo_power_save: SM Power Save Mode - 0:Static, 1:Dynamic, 3:Disabled, 2:Res
425*5113495bSYour Name  * @supported_channel_width_set: Supported Chan Width - 0:20Mhz, 1:20Mhz & 40Mhz
426*5113495bSYour Name  * @adv_coding_cap: Rx LDPC support
427*5113495bSYour Name  */
428*5113495bSYour Name struct mlme_ht_capabilities_info {
429*5113495bSYour Name 	uint16_t l_sig_tx_op_protection:1;
430*5113495bSYour Name 	uint16_t stbc_control_frame:1;
431*5113495bSYour Name 	uint16_t psmp:1;
432*5113495bSYour Name 	uint16_t dsss_cck_mode_40_mhz:1;
433*5113495bSYour Name 	uint16_t maximal_amsdu_size:1;
434*5113495bSYour Name 	uint16_t delayed_ba:1;
435*5113495bSYour Name 	uint16_t rx_stbc:2;
436*5113495bSYour Name 	uint16_t tx_stbc:1;
437*5113495bSYour Name 	uint16_t short_gi_40_mhz:1;
438*5113495bSYour Name 	uint16_t short_gi_20_mhz:1;
439*5113495bSYour Name 	uint16_t green_field:1;
440*5113495bSYour Name 	uint16_t mimo_power_save:2;
441*5113495bSYour Name 	uint16_t supported_channel_width_set:1;
442*5113495bSYour Name 	uint16_t adv_coding_cap:1;
443*5113495bSYour Name } qdf_packed;
444*5113495bSYour Name #else
445*5113495bSYour Name struct mlme_ht_capabilities_info {
446*5113495bSYour Name 	uint16_t adv_coding_cap:1;
447*5113495bSYour Name 	uint16_t supported_channel_width_set:1;
448*5113495bSYour Name 	uint16_t mimo_power_save:2;
449*5113495bSYour Name 	uint16_t green_field:1;
450*5113495bSYour Name 	uint16_t short_gi_20_mhz:1;
451*5113495bSYour Name 	uint16_t short_gi_40_mhz:1;
452*5113495bSYour Name 	uint16_t tx_stbc:1;
453*5113495bSYour Name 	uint16_t rx_stbc:2;
454*5113495bSYour Name 	uint16_t delayed_ba:1;
455*5113495bSYour Name 	uint16_t maximal_amsdu_size:1;
456*5113495bSYour Name 	uint16_t dsss_cck_mode_40_mhz:1;
457*5113495bSYour Name 	uint16_t psmp:1;
458*5113495bSYour Name 	uint16_t stbc_control_frame:1;
459*5113495bSYour Name 	uint16_t l_sig_tx_op_protection:1;
460*5113495bSYour Name } qdf_packed;
461*5113495bSYour Name #endif
462*5113495bSYour Name 
463*5113495bSYour Name /**
464*5113495bSYour Name  * struct wlan_ht_config - HT capabilities
465*5113495bSYour Name  * @ht_caps: ht caps in bitwise
466*5113495bSYour Name  * @caps: uint32 caps
467*5113495bSYour Name  */
468*5113495bSYour Name struct wlan_ht_config {
469*5113495bSYour Name 	union {
470*5113495bSYour Name 		struct mlme_ht_capabilities_info ht_caps;
471*5113495bSYour Name 		uint32_t caps;
472*5113495bSYour Name 	};
473*5113495bSYour Name };
474*5113495bSYour Name 
475*5113495bSYour Name #ifndef ANI_LITTLE_BIT_ENDIAN
476*5113495bSYour Name /**
477*5113495bSYour Name  * struct mlme_ht_param_info - HT AMPDU Parameters Info
478*5113495bSYour Name  * @reserved: reserved bits
479*5113495bSYour Name  * @mpdu_density: MPDU Density
480*5113495bSYour Name  * @max_rx_ampdu_factor: Max Rx AMPDU Factor
481*5113495bSYour Name  */
482*5113495bSYour Name struct mlme_ht_param_info {
483*5113495bSYour Name 	uint8_t reserved:3;
484*5113495bSYour Name 	uint8_t mpdu_density:3;
485*5113495bSYour Name 	uint8_t max_rx_ampdu_factor:2;
486*5113495bSYour Name } qdf_packed;
487*5113495bSYour Name #else
488*5113495bSYour Name struct mlme_ht_param_info {
489*5113495bSYour Name 	uint8_t max_rx_ampdu_factor:2;
490*5113495bSYour Name 	uint8_t mpdu_density:3;
491*5113495bSYour Name 	uint8_t reserved:3;
492*5113495bSYour Name } qdf_packed;
493*5113495bSYour Name #endif
494*5113495bSYour Name 
495*5113495bSYour Name #ifndef ANI_LITTLE_BIT_ENDIAN
496*5113495bSYour Name /**
497*5113495bSYour Name  * struct mlme_ht_ext_cap_info - Extended HT Capabilities Info
498*5113495bSYour Name  * @reserved_2: Reserved Bits
499*5113495bSYour Name  * @mcs_feedback: MCS Feedback Capability
500*5113495bSYour Name  * @reserved_1: Reserved Bits
501*5113495bSYour Name  * @transition_time: Time needed for transition between 20Mhz and 40 Mhz
502*5113495bSYour Name  * @pco: PCO (Phased Coexistence Operation) Support
503*5113495bSYour Name  */
504*5113495bSYour Name struct mlme_ht_ext_cap_info {
505*5113495bSYour Name 	uint16_t reserved_2:6;
506*5113495bSYour Name 	uint16_t mcs_feedback:2;
507*5113495bSYour Name 	uint16_t reserved_1:5;
508*5113495bSYour Name 	uint16_t transition_time:2;
509*5113495bSYour Name 	uint16_t pco:1;
510*5113495bSYour Name } qdf_packed;
511*5113495bSYour Name #else
512*5113495bSYour Name struct mlme_ht_ext_cap_info {
513*5113495bSYour Name 	uint16_t pco:1;
514*5113495bSYour Name 	uint16_t transition_time:2;
515*5113495bSYour Name 	uint16_t reserved1:5;
516*5113495bSYour Name 	uint16_t mcs_feedback:2;
517*5113495bSYour Name 	uint16_t reserved2:6;
518*5113495bSYour Name } qdf_packed;
519*5113495bSYour Name #endif
520*5113495bSYour Name 
521*5113495bSYour Name #ifndef ANI_LITTLE_BIT_ENDIAN
522*5113495bSYour Name /**
523*5113495bSYour Name  * struct mlme_ht_info_field_1 - Additional HT IE Field1
524*5113495bSYour Name  * @service_interval_granularity: Shortest Service Interval
525*5113495bSYour Name  * @controlled_access_only: Access Control for assoc requests
526*5113495bSYour Name  * @rifs_mode: Reduced Interframe Spacing mode
527*5113495bSYour Name  * @recommended_tx_width_set: Recommended Tx Channel Width
528*5113495bSYour Name  * @secondary_channel_offset: Secondary Channel Offset
529*5113495bSYour Name  */
530*5113495bSYour Name struct mlme_ht_info_field_1 {
531*5113495bSYour Name 	uint8_t service_interval_granularity:3;
532*5113495bSYour Name 	uint8_t controlled_access_only:1;
533*5113495bSYour Name 	uint8_t rifs_mode:1;
534*5113495bSYour Name 	uint8_t recommended_tx_width_set:1;
535*5113495bSYour Name 	uint8_t secondary_channel_offset:2;
536*5113495bSYour Name } qdf_packed;
537*5113495bSYour Name #else
538*5113495bSYour Name struct mlme_ht_info_field_1 {
539*5113495bSYour Name 	uint8_t secondary_channel_offset:2;
540*5113495bSYour Name 	uint8_t recommended_tx_width_set:1;
541*5113495bSYour Name 	uint8_t rifs_mode:1;
542*5113495bSYour Name 	uint8_t controlled_access_only:1;
543*5113495bSYour Name 	uint8_t service_interval_granularity:3;
544*5113495bSYour Name } qdf_packed;
545*5113495bSYour Name #endif
546*5113495bSYour Name 
547*5113495bSYour Name /* struct mlme_ht_info_field_2 - Additional HT IE Field2
548*5113495bSYour Name  * @reserved: reserved bits
549*5113495bSYour Name  * @obss_non_ht_sta_present: Protection for non-HT STAs by Overlapping BSS
550*5113495bSYour Name  * @transmit_burst_limit: Transmit Burst Limit
551*5113495bSYour Name  * @non_gf_devices_present: Non Greenfield devices present
552*5113495bSYour Name  * @op_mode: Operation Mode
553*5113495bSYour Name  */
554*5113495bSYour Name #ifndef ANI_LITTLE_BIT_ENDIAN
555*5113495bSYour Name struct mlme_ht_info_field_2 {
556*5113495bSYour Name 	uint16_t reserved:11;
557*5113495bSYour Name 	uint16_t obss_non_ht_sta_present:1;
558*5113495bSYour Name 	uint16_t transmit_burst_limit:1;
559*5113495bSYour Name 	uint16_t non_gf_devices_present:1;
560*5113495bSYour Name 	uint16_t op_mode:2;
561*5113495bSYour Name } qdf_packed;
562*5113495bSYour Name #else
563*5113495bSYour Name struct mlme_ht_info_field_2 {
564*5113495bSYour Name 	uint16_t op_mode:2;
565*5113495bSYour Name 	uint16_t non_gf_devices_present:1;
566*5113495bSYour Name 	uint16_t transmit_burst_limit:1;
567*5113495bSYour Name 	uint16_t obss_non_ht_sta_present:1;
568*5113495bSYour Name 	uint16_t reserved:11;
569*5113495bSYour Name } qdf_packed;
570*5113495bSYour Name #endif
571*5113495bSYour Name 
572*5113495bSYour Name #ifdef WLAN_FEATURE_FILS_SK
573*5113495bSYour Name 
574*5113495bSYour Name /**
575*5113495bSYour Name  * struct wlan_fils_connection_info  - Fils connection parameters
576*5113495bSYour Name  * @is_fils_connection: flag to indicate if the connection is done using
577*5113495bSYour Name  * authentication algorithm as 4
578*5113495bSYour Name  * @keyname_nai: key name network access identifier
579*5113495bSYour Name  * @key_nai_length:  key name network access identifier length
580*5113495bSYour Name  * @erp_sequence_number: FILS ERP sequence number
581*5113495bSYour Name  * @r_rk: re-authentication Root Key length
582*5113495bSYour Name  * @r_rk_length: reauthentication root keys length
583*5113495bSYour Name  * @rik: Re-authentication integrity key
584*5113495bSYour Name  * @rik_length: Re-Authentication integrity key length
585*5113495bSYour Name  * @realm: Realm name
586*5113495bSYour Name  * @realm_len: Realm length
587*5113495bSYour Name  * @akm_type: FILS connection akm
588*5113495bSYour Name  * @auth_type: FILS Authentication Algorithm
589*5113495bSYour Name  * @pmk: Pairwise master key
590*5113495bSYour Name  * @pmk_len: Pairwise master key length
591*5113495bSYour Name  * @pmkid: Pairwise master key ID
592*5113495bSYour Name  * @fils_ft: FILS FT key
593*5113495bSYour Name  * @fils_ft_len: Length of FILS FT
594*5113495bSYour Name  */
595*5113495bSYour Name struct wlan_fils_connection_info {
596*5113495bSYour Name 	bool is_fils_connection;
597*5113495bSYour Name 	uint8_t keyname_nai[FILS_MAX_KEYNAME_NAI_LENGTH];
598*5113495bSYour Name 	uint32_t key_nai_length;
599*5113495bSYour Name 	uint32_t erp_sequence_number;
600*5113495bSYour Name 	uint8_t r_rk[WLAN_FILS_MAX_RRK_LENGTH];
601*5113495bSYour Name 	uint32_t r_rk_length;
602*5113495bSYour Name 	uint8_t rik[WLAN_FILS_MAX_RIK_LENGTH];
603*5113495bSYour Name 	uint32_t rik_length;
604*5113495bSYour Name 	uint8_t realm[WLAN_FILS_MAX_REALM_LEN];
605*5113495bSYour Name 	uint32_t realm_len;
606*5113495bSYour Name 	uint8_t akm_type;
607*5113495bSYour Name 	uint8_t auth_type;
608*5113495bSYour Name 	uint8_t pmk[MAX_PMK_LEN];
609*5113495bSYour Name 	uint8_t pmk_len;
610*5113495bSYour Name 	uint8_t pmkid[PMKID_LEN];
611*5113495bSYour Name 	uint8_t fils_ft[WLAN_FILS_FT_MAX_LEN];
612*5113495bSYour Name 	uint8_t fils_ft_len;
613*5113495bSYour Name };
614*5113495bSYour Name #endif
615*5113495bSYour Name 
616*5113495bSYour Name #ifndef ANI_LITTLE_BIT_ENDIAN
617*5113495bSYour Name /**
618*5113495bSYour Name  * struct mlme_ht_info_field_3 - Additional HT IE Field3
619*5113495bSYour Name  * @reserved: reserved bits
620*5113495bSYour Name  * @pco_phase: PCO Phase
621*5113495bSYour Name  * @pco_active: PCO state
622*5113495bSYour Name  * @lsig_txop_protection_full_support: L-Sig TXOP Protection Full Support
623*5113495bSYour Name  * @secondary_beacon: Beacon ID
624*5113495bSYour Name  * @dual_cts_protection: Dual CTS protection Required
625*5113495bSYour Name  * @basic_stbc_mcs: Basic STBC MCS
626*5113495bSYour Name  */
627*5113495bSYour Name struct mlme_ht_info_field_3 {
628*5113495bSYour Name 	uint16_t reserved:4;
629*5113495bSYour Name 	uint16_t pco_phase:1;
630*5113495bSYour Name 	uint16_t pco_active:1;
631*5113495bSYour Name 	uint16_t lsig_txop_protection_full_support:1;
632*5113495bSYour Name 	uint16_t secondary_beacon:1;
633*5113495bSYour Name 	uint16_t dual_cts_protection:1;
634*5113495bSYour Name 	uint16_t basic_stbc_mcs:7;
635*5113495bSYour Name } qdf_packed;
636*5113495bSYour Name #else
637*5113495bSYour Name struct mlme_ht_info_field_3 {
638*5113495bSYour Name 	uint16_t basic_stbc_mcs:7;
639*5113495bSYour Name 	uint16_t dual_cts_protection:1;
640*5113495bSYour Name 	uint16_t secondary_beacon:1;
641*5113495bSYour Name 	uint16_t lsig_txop_protection_full_support:1;
642*5113495bSYour Name 	uint16_t pco_active:1;
643*5113495bSYour Name 	uint16_t pco_phase:1;
644*5113495bSYour Name 	uint16_t reserved:4;
645*5113495bSYour Name } qdf_packed;
646*5113495bSYour Name #endif
647*5113495bSYour Name 
648*5113495bSYour Name /**
649*5113495bSYour Name  * struct wlan_mlme_ht_caps - HT Capabilities related config items
650*5113495bSYour Name  * @ht_cap_info: HT capabilities Info Structure
651*5113495bSYour Name  * @ampdu_params: AMPDU parameters
652*5113495bSYour Name  * @ext_cap_info: HT EXT capabilities info
653*5113495bSYour Name  * @info_field_1: HT Information Subset 1
654*5113495bSYour Name  * @info_field_2: HT Information Subset 2
655*5113495bSYour Name  * @info_field_3: HT Information Subset 3
656*5113495bSYour Name  * @short_preamble: Short Preamble support
657*5113495bSYour Name  * @enable_ampdu_ps: Enable AMPDU Power Save
658*5113495bSYour Name  * @enable_smps: Enabled SM Power Save
659*5113495bSYour Name  * @smps : SM Power Save mode
660*5113495bSYour Name  * @max_num_amsdu: Max number of AMSDU
661*5113495bSYour Name  * @tx_ldpc_enable: Enable Tx LDPC
662*5113495bSYour Name  * @short_slot_time_enabled: Enabled/disable short slot time
663*5113495bSYour Name  */
664*5113495bSYour Name struct wlan_mlme_ht_caps {
665*5113495bSYour Name 	struct mlme_ht_capabilities_info ht_cap_info;
666*5113495bSYour Name 	struct mlme_ht_param_info ampdu_params;
667*5113495bSYour Name 	struct mlme_ht_ext_cap_info ext_cap_info;
668*5113495bSYour Name 	struct mlme_ht_info_field_1 info_field_1;
669*5113495bSYour Name 	struct mlme_ht_info_field_2 info_field_2;
670*5113495bSYour Name 	struct mlme_ht_info_field_3 info_field_3;
671*5113495bSYour Name 	bool short_preamble;
672*5113495bSYour Name 	bool enable_ampdu_ps;
673*5113495bSYour Name 	bool enable_smps;
674*5113495bSYour Name 	uint8_t smps;
675*5113495bSYour Name 	uint8_t max_num_amsdu;
676*5113495bSYour Name 	uint8_t tx_ldpc_enable;
677*5113495bSYour Name 	bool short_slot_time_enabled;
678*5113495bSYour Name };
679*5113495bSYour Name 
680*5113495bSYour Name #define MLME_CFG_WPS_UUID_MAX_LEN    16
681*5113495bSYour Name /**
682*5113495bSYour Name  * struct wlan_mlme_wps_params - All wps based related cfg items
683*5113495bSYour Name  *
684*5113495bSYour Name  * @enable_wps: to enable wps
685*5113495bSYour Name  * @wps_state: current wps state
686*5113495bSYour Name  * @wps_version: wps version
687*5113495bSYour Name  * @wps_cfg_method: wps config method
688*5113495bSYour Name  * @wps_primary_device_category: wps primary device category
689*5113495bSYour Name  * @wps_primary_device_oui: primary device OUI
690*5113495bSYour Name  * @wps_device_sub_category: device sub category
691*5113495bSYour Name  * @wps_device_password_id: password id of device
692*5113495bSYour Name  * @wps_uuid: wps uuid to be sent in probe
693*5113495bSYour Name  */
694*5113495bSYour Name struct wlan_mlme_wps_params {
695*5113495bSYour Name 	uint8_t enable_wps;
696*5113495bSYour Name 	uint8_t wps_state;
697*5113495bSYour Name 	uint8_t wps_version;
698*5113495bSYour Name 	uint32_t wps_cfg_method;
699*5113495bSYour Name 	uint32_t wps_primary_device_category;
700*5113495bSYour Name 	uint32_t wps_primary_device_oui;
701*5113495bSYour Name 	uint16_t wps_device_sub_category;
702*5113495bSYour Name 	uint32_t wps_device_password_id;
703*5113495bSYour Name 	struct mlme_cfg_str wps_uuid;
704*5113495bSYour Name };
705*5113495bSYour Name 
706*5113495bSYour Name #define MLME_CFG_LISTEN_INTERVAL        1
707*5113495bSYour Name #define MLME_CFG_BEACON_INTERVAL_DEF    100
708*5113495bSYour Name #define MLME_CFG_TX_MGMT_RATE_DEF       0xFF
709*5113495bSYour Name #define MLME_CFG_TX_MGMT_2G_RATE_DEF    0xFF
710*5113495bSYour Name #define MLME_CFG_TX_MGMT_5G_RATE_DEF    0xFF
711*5113495bSYour Name 
712*5113495bSYour Name /**
713*5113495bSYour Name  * struct wlan_mlme_cfg_sap - SAP related config items
714*5113495bSYour Name  * @cfg_ssid: SSID to be configured
715*5113495bSYour Name  * @beacon_interval: beacon interval
716*5113495bSYour Name  * @dtim_interval:   dtim interval
717*5113495bSYour Name  * @listen_interval: listen interval
718*5113495bSYour Name  * @sap_11g_policy:  Check if 11g support is enabled
719*5113495bSYour Name  * @assoc_sta_limit: Limit on number of STA associated to SAP
720*5113495bSYour Name  * @enable_lte_coex: Flag for LTE coexistence
721*5113495bSYour Name  * @rate_tx_mgmt: mgmt frame tx rate
722*5113495bSYour Name  * @rate_tx_mgmt_2g: mgmt frame tx rate for 2G band
723*5113495bSYour Name  * @rate_tx_mgmt_5g: mgmt frame tx rate for 5G band
724*5113495bSYour Name  * @tele_bcn_wakeup_en: beacon wakeup enable/disable
725*5113495bSYour Name  * @tele_bcn_max_li: max listen interval
726*5113495bSYour Name  * @sap_get_peer_info: get peer info
727*5113495bSYour Name  * @sap_allow_all_chan_param_name: allow all channels
728*5113495bSYour Name  * @sap_max_no_peers: Maximum number of peers
729*5113495bSYour Name  * @sap_max_offload_peers: Maximum number of peer offloads
730*5113495bSYour Name  * @sap_max_offload_reorder_buffs: Maximum offload reorder buffs
731*5113495bSYour Name  * @sap_ch_switch_beacon_cnt: Number of beacons to be sent out during CSA
732*5113495bSYour Name  * @sap_internal_restart: flag to check if sap restart is in progress
733*5113495bSYour Name  * @sap_ch_switch_mode: Channel switch test mode enable/disable
734*5113495bSYour Name  * @chan_switch_hostapd_rate_enabled_name: enable/disable skip hostapd rate
735*5113495bSYour Name  * @reduced_beacon_interval: reduced beacon interval value
736*5113495bSYour Name  * @max_li_modulated_dtim_time: Max modulated DTIM time.
737*5113495bSYour Name  * @country_code_priority: Country code priority.
738*5113495bSYour Name  * @sap_pref_chan_location: SAP Preferred channel location.
739*5113495bSYour Name  * @sap_force_11n_for_11ac:
740*5113495bSYour Name  * @go_force_11n_for_11ac:
741*5113495bSYour Name  * @ap_random_bssid_enable:
742*5113495bSYour Name  * @sap_mcc_chnl_avoid: SAP MCC channel avoidance flag
743*5113495bSYour Name  * @sap_11ac_override: Overrirde SAP bandwidth to 11ac
744*5113495bSYour Name  * @go_11ac_override: Override GO bandwidth to 11ac
745*5113495bSYour Name  * @sap_sae_enabled: enable sae in sap mode
746*5113495bSYour Name  * @is_sap_bcast_deauth_enabled: enable bcast deauth for sap
747*5113495bSYour Name  * @is_6g_sap_fd_enabled: enable fils discovery on sap
748*5113495bSYour Name  * @disable_bcn_prot: disable beacon protection for sap
749*5113495bSYour Name  * @sap_ps_with_twt_enable: SAP power save with TWT
750*5113495bSYour Name  */
751*5113495bSYour Name struct wlan_mlme_cfg_sap {
752*5113495bSYour Name 	uint16_t beacon_interval;
753*5113495bSYour Name 	uint16_t dtim_interval;
754*5113495bSYour Name 	uint16_t listen_interval;
755*5113495bSYour Name 	bool sap_11g_policy;
756*5113495bSYour Name 	uint8_t assoc_sta_limit;
757*5113495bSYour Name 	bool enable_lte_coex;
758*5113495bSYour Name 	uint8_t rate_tx_mgmt;
759*5113495bSYour Name 	uint8_t rate_tx_mgmt_2g;
760*5113495bSYour Name 	uint8_t rate_tx_mgmt_5g;
761*5113495bSYour Name 	bool tele_bcn_wakeup_en;
762*5113495bSYour Name 	uint8_t tele_bcn_max_li;
763*5113495bSYour Name 	bool sap_get_peer_info;
764*5113495bSYour Name 	bool sap_allow_all_chan_param_name;
765*5113495bSYour Name 	uint8_t sap_max_no_peers;
766*5113495bSYour Name 	uint8_t sap_max_offload_peers;
767*5113495bSYour Name 	uint8_t sap_max_offload_reorder_buffs;
768*5113495bSYour Name 	uint8_t sap_ch_switch_beacon_cnt;
769*5113495bSYour Name 	bool sap_internal_restart;
770*5113495bSYour Name 	bool sap_ch_switch_mode;
771*5113495bSYour Name 	bool chan_switch_hostapd_rate_enabled_name;
772*5113495bSYour Name 	uint8_t reduced_beacon_interval;
773*5113495bSYour Name 	uint8_t max_li_modulated_dtim_time;
774*5113495bSYour Name 	bool country_code_priority;
775*5113495bSYour Name 	uint8_t sap_pref_chan_location;
776*5113495bSYour Name 	bool sap_force_11n_for_11ac;
777*5113495bSYour Name 	bool go_force_11n_for_11ac;
778*5113495bSYour Name 	bool ap_random_bssid_enable;
779*5113495bSYour Name 	uint8_t sap_mcc_chnl_avoid;
780*5113495bSYour Name 	bool sap_11ac_override;
781*5113495bSYour Name 	bool go_11ac_override;
782*5113495bSYour Name 	bool sap_sae_enabled;
783*5113495bSYour Name 	bool is_sap_bcast_deauth_enabled;
784*5113495bSYour Name 	bool is_6g_sap_fd_enabled;
785*5113495bSYour Name 	bool disable_bcn_prot;
786*5113495bSYour Name 	bool sap_ps_with_twt_enable;
787*5113495bSYour Name };
788*5113495bSYour Name 
789*5113495bSYour Name /**
790*5113495bSYour Name  * struct wlan_mlme_dfs_cfg - DFS Capabilities related config items
791*5113495bSYour Name  * @dfs_master_capable: Is DFS master mode support enabled
792*5113495bSYour Name  * @dfs_disable_channel_switch: disable channel switch on radar detection
793*5113495bSYour Name  * @dfs_ignore_cac: Disable cac
794*5113495bSYour Name  * @dfs_filter_offload: dfs filter offloaad
795*5113495bSYour Name  * @dfs_beacon_tx_enhanced: enhance dfs beacon tx
796*5113495bSYour Name  * @dfs_prefer_non_dfs: perefer non dfs channel after radar
797*5113495bSYour Name  * @dfs_disable_japan_w53: Disable W53 channels
798*5113495bSYour Name  * @sap_tx_leakage_threshold: sap tx leakage threshold
799*5113495bSYour Name  * @dfs_pri_multiplier: dfs_pri_multiplier for handle missing pulses
800*5113495bSYour Name  */
801*5113495bSYour Name struct wlan_mlme_dfs_cfg {
802*5113495bSYour Name 	bool dfs_master_capable;
803*5113495bSYour Name 	bool dfs_disable_channel_switch;
804*5113495bSYour Name 	bool dfs_ignore_cac;
805*5113495bSYour Name 	bool dfs_filter_offload;
806*5113495bSYour Name 	bool dfs_beacon_tx_enhanced;
807*5113495bSYour Name 	bool dfs_prefer_non_dfs;
808*5113495bSYour Name 	bool dfs_disable_japan_w53;
809*5113495bSYour Name 	uint32_t sap_tx_leakage_threshold;
810*5113495bSYour Name 	uint32_t dfs_pri_multiplier;
811*5113495bSYour Name };
812*5113495bSYour Name 
813*5113495bSYour Name /**
814*5113495bSYour Name  * struct wlan_mlme_mbo - Multiband Operation related ini configs
815*5113495bSYour Name  * @mbo_candidate_rssi_thres: candidate AP's min rssi to accept it
816*5113495bSYour Name  * @mbo_current_rssi_thres: Connected AP's rssi threshold below which
817*5113495bSYour Name  * transition is considered
818*5113495bSYour Name  * @mbo_current_rssi_mcc_thres: connected AP's RSSI threshold value to prefer
819*5113495bSYour Name  * against MCC
820*5113495bSYour Name  * @mbo_candidate_rssi_btc_thres: Candidate AP's minimum RSSI threshold to
821*5113495bSYour Name  * prefer it even in BT coex.
822*5113495bSYour Name  */
823*5113495bSYour Name struct wlan_mlme_mbo {
824*5113495bSYour Name 	int8_t mbo_candidate_rssi_thres;
825*5113495bSYour Name 	int8_t mbo_current_rssi_thres;
826*5113495bSYour Name 	int8_t mbo_current_rssi_mcc_thres;
827*5113495bSYour Name 	int8_t mbo_candidate_rssi_btc_thres;
828*5113495bSYour Name };
829*5113495bSYour Name 
830*5113495bSYour Name /**
831*5113495bSYour Name  * struct wlan_mlme_powersave - Powersave related ini configs
832*5113495bSYour Name  * @is_imps_enabled: flag to enable/disable IMPS
833*5113495bSYour Name  * @is_bmps_enabled: flag to enable/disable BMPS
834*5113495bSYour Name  * @auto_bmps_timer_val: auto BMPS timer value
835*5113495bSYour Name  * @bmps_min_listen_interval: BMPS listen interval minimum value
836*5113495bSYour Name  * @bmps_max_listen_interval: BMPS listen interval maximum value
837*5113495bSYour Name  * @dtim_selection_diversity: dtim selection diversity value to be sent to fw
838*5113495bSYour Name  */
839*5113495bSYour Name struct wlan_mlme_powersave {
840*5113495bSYour Name 	bool is_imps_enabled;
841*5113495bSYour Name 	bool is_bmps_enabled;
842*5113495bSYour Name 	uint32_t auto_bmps_timer_val;
843*5113495bSYour Name 	uint32_t bmps_min_listen_interval;
844*5113495bSYour Name 	uint32_t bmps_max_listen_interval;
845*5113495bSYour Name 	uint32_t dtim_selection_diversity;
846*5113495bSYour Name };
847*5113495bSYour Name 
848*5113495bSYour Name /**
849*5113495bSYour Name  * struct mlme_vht_capabilities_info - MLME VHT config items
850*5113495bSYour Name  * @supp_chan_width: Supported Channel Width
851*5113495bSYour Name  * @ldpc_coding_cap: LDPC Coding Capability
852*5113495bSYour Name  * @short_gi_80mhz: 80MHz Short Guard Interval
853*5113495bSYour Name  * @short_gi_160mhz: 160MHz Short Guard Interval
854*5113495bSYour Name  * @tx_stbc: Tx STBC cap
855*5113495bSYour Name  * @rx_stbc: Rx STBC cap
856*5113495bSYour Name  * @su_bformer: SU Beamformer cap
857*5113495bSYour Name  * @su_bformee: SU Beamformee cap
858*5113495bSYour Name  * @tx_bfee_ant_supp: Tx beamformee anti supp
859*5113495bSYour Name  * @num_soundingdim: Number of sounding dimensions
860*5113495bSYour Name  * @mu_bformer: MU Beamformer cap
861*5113495bSYour Name  * @txop_ps: Tx OPs in power save
862*5113495bSYour Name  * @htc_vhtc: htc_vht capability
863*5113495bSYour Name  * @link_adap_cap: Link adaptation capability
864*5113495bSYour Name  * @rx_antpattern: Rx Antenna Pattern cap
865*5113495bSYour Name  * @tx_antpattern: Tx Antenna Pattern cap
866*5113495bSYour Name  * @rx_mcs_map: Rx MCS Map
867*5113495bSYour Name  * @tx_mcs_map: Tx MCS Map
868*5113495bSYour Name  * @rx_supp_data_rate: Rx highest supported data rate
869*5113495bSYour Name  * @tx_supp_data_rate: Tx highest supported data rate
870*5113495bSYour Name  * @basic_mcs_set: Basic MCS set
871*5113495bSYour Name  * @enable_txbf_20mhz: enable tx bf for 20mhz
872*5113495bSYour Name  * @channel_width: Channel width capability for 11ac
873*5113495bSYour Name  * @rx_mcs: VHT Rx MCS capability for 1x1 mode
874*5113495bSYour Name  * @tx_mcs: VHT Tx MCS capability for 1x1 mode
875*5113495bSYour Name  * @rx_mcs2x2: VHT Rx MCS capability for 2x2 mode
876*5113495bSYour Name  * @tx_mcs2x2: VHT Tx MCS capability for 2x2 mode
877*5113495bSYour Name  * @enable_vht20_mcs9: Enables VHT MCS9 in 20M BW operation
878*5113495bSYour Name  * @enable2x2: Enables/disables VHT Tx/Rx MCS values for 2x2
879*5113495bSYour Name  * @enable_mu_bformee: Enables/disables multi-user (MU)
880*5113495bSYour Name  * beam formee capability
881*5113495bSYour Name  * @enable_paid: Enables/disables paid
882*5113495bSYour Name  * @enable_gid: Enables/disables gid
883*5113495bSYour Name  * @b24ghz_band: To control VHT support in 2.4 GHz band
884*5113495bSYour Name  * @vendor_24ghz_band: to control VHT support based on vendor
885*5113495bSYour Name  * ie in 2.4 GHz band
886*5113495bSYour Name  * @ampdu_len_exponent: To handle maximum receive AMPDU ampdu len exponent
887*5113495bSYour Name  * @ampdu_len: To handle maximum receive AMPDU ampdu len
888*5113495bSYour Name  * @tx_bfee_sap: enable tx bfee SAp
889*5113495bSYour Name  * @vendor_vhtie: enable subfee vendor vht ie
890*5113495bSYour Name  * @tx_bf_cap: Transmit bf capability
891*5113495bSYour Name  * @as_cap: Antenna sharing capability info
892*5113495bSYour Name  * @disable_ldpc_with_txbf_ap: Disable ldpc capability
893*5113495bSYour Name  * @vht_mcs_10_11_supp: VHT MCS 10 & 11 support
894*5113495bSYour Name  * @extended_nss_bw_supp:
895*5113495bSYour Name  * @vht_extended_nss_bw_cap:
896*5113495bSYour Name  * @max_nsts_total:
897*5113495bSYour Name  * @restricted_80p80_bw_supp:
898*5113495bSYour Name  */
899*5113495bSYour Name struct mlme_vht_capabilities_info {
900*5113495bSYour Name 	uint8_t supp_chan_width;
901*5113495bSYour Name 	bool ldpc_coding_cap;
902*5113495bSYour Name 	bool short_gi_80mhz;
903*5113495bSYour Name 	bool short_gi_160mhz;
904*5113495bSYour Name 	bool tx_stbc;
905*5113495bSYour Name 	bool rx_stbc;
906*5113495bSYour Name 	bool su_bformer;
907*5113495bSYour Name 	bool su_bformee;
908*5113495bSYour Name 	uint8_t tx_bfee_ant_supp;
909*5113495bSYour Name 	uint8_t num_soundingdim;
910*5113495bSYour Name 	bool mu_bformer;
911*5113495bSYour Name 	bool txop_ps;
912*5113495bSYour Name 	bool htc_vhtc;
913*5113495bSYour Name 	uint8_t link_adap_cap;
914*5113495bSYour Name 	bool rx_antpattern;
915*5113495bSYour Name 	bool tx_antpattern;
916*5113495bSYour Name 	uint32_t rx_mcs_map;
917*5113495bSYour Name 	uint32_t tx_mcs_map;
918*5113495bSYour Name 	uint32_t rx_supp_data_rate;
919*5113495bSYour Name 	uint32_t tx_supp_data_rate;
920*5113495bSYour Name 	uint32_t basic_mcs_set;
921*5113495bSYour Name 	bool enable_txbf_20mhz;
922*5113495bSYour Name 	uint8_t channel_width;
923*5113495bSYour Name 	uint32_t rx_mcs;
924*5113495bSYour Name 	uint32_t tx_mcs;
925*5113495bSYour Name 	uint8_t rx_mcs2x2;
926*5113495bSYour Name 	uint8_t tx_mcs2x2;
927*5113495bSYour Name 	bool enable_vht20_mcs9;
928*5113495bSYour Name 	bool enable2x2;
929*5113495bSYour Name 	bool enable_mu_bformee;
930*5113495bSYour Name 	bool enable_paid;
931*5113495bSYour Name 	bool enable_gid;
932*5113495bSYour Name 	bool b24ghz_band;
933*5113495bSYour Name 	bool vendor_24ghz_band;
934*5113495bSYour Name 	uint8_t ampdu_len_exponent;
935*5113495bSYour Name 	uint8_t ampdu_len;
936*5113495bSYour Name 	bool tx_bfee_sap;
937*5113495bSYour Name 	bool vendor_vhtie;
938*5113495bSYour Name 	uint8_t tx_bf_cap;
939*5113495bSYour Name 	uint8_t as_cap;
940*5113495bSYour Name 	bool disable_ldpc_with_txbf_ap;
941*5113495bSYour Name 	bool vht_mcs_10_11_supp;
942*5113495bSYour Name 	uint8_t extended_nss_bw_supp;
943*5113495bSYour Name 	uint8_t vht_extended_nss_bw_cap;
944*5113495bSYour Name 	uint8_t max_nsts_total;
945*5113495bSYour Name 	bool restricted_80p80_bw_supp;
946*5113495bSYour Name };
947*5113495bSYour Name 
948*5113495bSYour Name /**
949*5113495bSYour Name  * struct wlan_mlme_vht_caps - VHT Capabilities related config items
950*5113495bSYour Name  * @vht_cap_info: VHT capabilities Info Structure
951*5113495bSYour Name  */
952*5113495bSYour Name struct wlan_mlme_vht_caps {
953*5113495bSYour Name 	struct mlme_vht_capabilities_info vht_cap_info;
954*5113495bSYour Name };
955*5113495bSYour Name 
956*5113495bSYour Name /**
957*5113495bSYour Name  * struct wlan_vht_config - VHT capabilities
958*5113495bSYour Name  * @max_mpdu_len: MPDU length
959*5113495bSYour Name  * @supported_channel_widthset: channel width set
960*5113495bSYour Name  * @ldpc_coding: LDPC coding capability
961*5113495bSYour Name  * @shortgi80: short GI 80 support
962*5113495bSYour Name  * @shortgi160and80plus80: short Gi 160 & 80+80 support
963*5113495bSYour Name  * @tx_stbc: Tx STBC cap
964*5113495bSYour Name  * @rx_stbc: Rx STBC cap
965*5113495bSYour Name  * @su_beam_former: SU beam former cap
966*5113495bSYour Name  * @su_beam_formee: SU beam formee cap
967*5113495bSYour Name  * @csnof_beamformer_antSup: Antenna support for beamforming
968*5113495bSYour Name  * @num_soundingdim: Sound dimensions
969*5113495bSYour Name  * @mu_beam_former: MU beam former cap
970*5113495bSYour Name  * @mu_beam_formee: MU beam formee cap
971*5113495bSYour Name  * @vht_txops: TXOP power save
972*5113495bSYour Name  * @htc_vhtcap: HTC VHT capability
973*5113495bSYour Name  * @max_ampdu_lenexp: AMPDU length
974*5113495bSYour Name  * @vht_link_adapt: VHT link adapatation capable
975*5113495bSYour Name  * @rx_antpattern: RX antenna pattern
976*5113495bSYour Name  * @tx_antpattern: TX antenna pattern
977*5113495bSYour Name  * @extended_nss_bw_supp:
978*5113495bSYour Name  * @caps: entire capability bitmap
979*5113495bSYour Name  */
980*5113495bSYour Name struct wlan_vht_config {
981*5113495bSYour Name 	union {
982*5113495bSYour Name 		struct {
983*5113495bSYour Name 			uint32_t           max_mpdu_len:2;
984*5113495bSYour Name 			uint32_t supported_channel_widthset:2;
985*5113495bSYour Name 			uint32_t        ldpc_coding:1;
986*5113495bSYour Name 			uint32_t         shortgi80:1;
987*5113495bSYour Name 			uint32_t shortgi160and80plus80:1;
988*5113495bSYour Name 			uint32_t               tx_stbc:1;
989*5113495bSYour Name 			uint32_t               rx_stbc:3;
990*5113495bSYour Name 			uint32_t      su_beam_former:1;
991*5113495bSYour Name 			uint32_t      su_beam_formee:1;
992*5113495bSYour Name 			uint32_t csnof_beamformer_antSup:3;
993*5113495bSYour Name 			uint32_t       num_soundingdim:3;
994*5113495bSYour Name 			uint32_t      mu_beam_former:1;
995*5113495bSYour Name 			uint32_t      mu_beam_formee:1;
996*5113495bSYour Name 			uint32_t            vht_txops:1;
997*5113495bSYour Name 			uint32_t            htc_vhtcap:1;
998*5113495bSYour Name 			uint32_t       max_ampdu_lenexp:3;
999*5113495bSYour Name 			uint32_t        vht_link_adapt:2;
1000*5113495bSYour Name 			uint32_t         rx_antpattern:1;
1001*5113495bSYour Name 			uint32_t         tx_antpattern:1;
1002*5113495bSYour Name 			uint32_t  extended_nss_bw_supp:2;
1003*5113495bSYour Name 		};
1004*5113495bSYour Name 		uint32_t caps;
1005*5113495bSYour Name 	};
1006*5113495bSYour Name };
1007*5113495bSYour Name 
1008*5113495bSYour Name /**
1009*5113495bSYour Name  * struct wlan_mlme_qos - QOS TX/RX aggregation related CFG items
1010*5113495bSYour Name  * @tx_aggregation_size: TX aggr size in number of MPDUs
1011*5113495bSYour Name  * @tx_aggregation_size_be: No. of MPDUs for BE queue for TX aggr
1012*5113495bSYour Name  * @tx_aggregation_size_bk: No. of MPDUs for BK queue for TX aggr
1013*5113495bSYour Name  * @tx_aggregation_size_vi: No. of MPDUs for VI queue for TX aggr
1014*5113495bSYour Name  * @tx_aggregation_size_vo: No. of MPDUs for VO queue for TX aggr
1015*5113495bSYour Name  * @rx_aggregation_size: No. of MPDUs for RX aggr
1016*5113495bSYour Name  * @tx_aggr_sw_retry_threshold_be: aggr sw retry threshold for BE
1017*5113495bSYour Name  * @tx_aggr_sw_retry_threshold_bk: aggr sw retry threshold for BK
1018*5113495bSYour Name  * @tx_aggr_sw_retry_threshold_vi: aggr sw retry threshold for VI
1019*5113495bSYour Name  * @tx_aggr_sw_retry_threshold_vo: aggr sw retry threshold for VO
1020*5113495bSYour Name  * @tx_aggr_sw_retry_threshold: aggr sw retry threshold
1021*5113495bSYour Name  * @tx_non_aggr_sw_retry_threshold_be: non aggr sw retry threshold for BE
1022*5113495bSYour Name  * @tx_non_aggr_sw_retry_threshold_bk: non aggr sw retry threshold for BK
1023*5113495bSYour Name  * @tx_non_aggr_sw_retry_threshold_vi: non aggr sw retry threshold for VI
1024*5113495bSYour Name  * @tx_non_aggr_sw_retry_threshold_vo: non aggr sw retry threshold for VO
1025*5113495bSYour Name  * @tx_non_aggr_sw_retry_threshold: non aggr sw retry threshold
1026*5113495bSYour Name  * @sap_max_inactivity_override: Override updating ap_sta_inactivity from
1027*5113495bSYour Name  * hostapd.conf
1028*5113495bSYour Name  * @sap_uapsd_enabled: Flag to enable/disable UAPSD for SAP
1029*5113495bSYour Name  */
1030*5113495bSYour Name struct wlan_mlme_qos {
1031*5113495bSYour Name 	uint32_t tx_aggregation_size;
1032*5113495bSYour Name 	uint32_t tx_aggregation_size_be;
1033*5113495bSYour Name 	uint32_t tx_aggregation_size_bk;
1034*5113495bSYour Name 	uint32_t tx_aggregation_size_vi;
1035*5113495bSYour Name 	uint32_t tx_aggregation_size_vo;
1036*5113495bSYour Name 	uint32_t rx_aggregation_size;
1037*5113495bSYour Name 	uint32_t tx_aggr_sw_retry_threshold_be;
1038*5113495bSYour Name 	uint32_t tx_aggr_sw_retry_threshold_bk;
1039*5113495bSYour Name 	uint32_t tx_aggr_sw_retry_threshold_vi;
1040*5113495bSYour Name 	uint32_t tx_aggr_sw_retry_threshold_vo;
1041*5113495bSYour Name 	uint32_t tx_aggr_sw_retry_threshold;
1042*5113495bSYour Name 	uint32_t tx_non_aggr_sw_retry_threshold_be;
1043*5113495bSYour Name 	uint32_t tx_non_aggr_sw_retry_threshold_bk;
1044*5113495bSYour Name 	uint32_t tx_non_aggr_sw_retry_threshold_vi;
1045*5113495bSYour Name 	uint32_t tx_non_aggr_sw_retry_threshold_vo;
1046*5113495bSYour Name 	uint32_t tx_non_aggr_sw_retry_threshold;
1047*5113495bSYour Name 	bool sap_max_inactivity_override;
1048*5113495bSYour Name 	bool sap_uapsd_enabled;
1049*5113495bSYour Name };
1050*5113495bSYour Name 
1051*5113495bSYour Name #ifdef WLAN_FEATURE_11AX
1052*5113495bSYour Name #define MLME_HE_PPET_LEN 25
1053*5113495bSYour Name #define WNI_CFG_HE_OPS_BSS_COLOR_MAX 0x3F
1054*5113495bSYour Name 
1055*5113495bSYour Name /**
1056*5113495bSYour Name  * struct wlan_mlme_he_caps - HE Capabilities related config items
1057*5113495bSYour Name  * @dot11_he_cap:
1058*5113495bSYour Name  * @he_cap_orig:
1059*5113495bSYour Name  * @he_ppet_2g:
1060*5113495bSYour Name  * @he_ppet_5g:
1061*5113495bSYour Name  * @he_ops_basic_mcs_nss:
1062*5113495bSYour Name  * @he_dynamic_fragmentation:
1063*5113495bSYour Name  * @enable_ul_mimo:
1064*5113495bSYour Name  * @enable_ul_ofdm:
1065*5113495bSYour Name  * @he_sta_obsspd:
1066*5113495bSYour Name  * @he_mcs_12_13_supp_2g:
1067*5113495bSYour Name  * @he_mcs_12_13_supp_5g:
1068*5113495bSYour Name  * @disable_sap_mcs_12_13: Bitmap to disable he mcs 12 13 for SAP
1069*5113495bSYour Name  */
1070*5113495bSYour Name struct wlan_mlme_he_caps {
1071*5113495bSYour Name 	tDot11fIEhe_cap dot11_he_cap;
1072*5113495bSYour Name 	tDot11fIEhe_cap he_cap_orig;
1073*5113495bSYour Name 	uint8_t he_ppet_2g[MLME_HE_PPET_LEN];
1074*5113495bSYour Name 	uint8_t he_ppet_5g[MLME_HE_PPET_LEN];
1075*5113495bSYour Name 	uint32_t he_ops_basic_mcs_nss;
1076*5113495bSYour Name 	uint8_t he_dynamic_fragmentation;
1077*5113495bSYour Name 	uint8_t enable_ul_mimo;
1078*5113495bSYour Name 	uint8_t enable_ul_ofdm;
1079*5113495bSYour Name 	uint32_t he_sta_obsspd;
1080*5113495bSYour Name 	uint16_t he_mcs_12_13_supp_2g;
1081*5113495bSYour Name 	uint16_t he_mcs_12_13_supp_5g;
1082*5113495bSYour Name 	uint32_t disable_sap_mcs_12_13;
1083*5113495bSYour Name };
1084*5113495bSYour Name #endif
1085*5113495bSYour Name 
1086*5113495bSYour Name #ifdef WLAN_FEATURE_11BE
1087*5113495bSYour Name /**
1088*5113495bSYour Name  * struct wlan_mlme_eht_caps - EHT Capabilities related config items
1089*5113495bSYour Name  * @dot11_eht_cap: current EHT capabilities
1090*5113495bSYour Name  * @eht_cap_orig: original EHT capabilities
1091*5113495bSYour Name  */
1092*5113495bSYour Name struct wlan_mlme_eht_caps {
1093*5113495bSYour Name 	tDot11fIEeht_cap dot11_eht_cap;
1094*5113495bSYour Name 	tDot11fIEeht_cap eht_cap_orig;
1095*5113495bSYour Name 	/* Add members to store INI configuration corresponding to 11be */
1096*5113495bSYour Name };
1097*5113495bSYour Name #endif
1098*5113495bSYour Name 
1099*5113495bSYour Name /**
1100*5113495bSYour Name  * struct wlan_mlme_chain_cfg - Chain info related structure
1101*5113495bSYour Name  * @max_tx_chains_2g: max tx chains supported in 2.4ghz band
1102*5113495bSYour Name  * @max_rx_chains_2g: max rx chains supported in 2.4ghz band
1103*5113495bSYour Name  * @max_tx_chains_5g: max tx chains supported in 5ghz band
1104*5113495bSYour Name  * @max_rx_chains_5g: max rx chains supported in 5ghz band
1105*5113495bSYour Name  */
1106*5113495bSYour Name struct wlan_mlme_chain_cfg {
1107*5113495bSYour Name 	uint8_t max_tx_chains_2g;
1108*5113495bSYour Name 	uint8_t max_rx_chains_2g;
1109*5113495bSYour Name 	uint8_t max_tx_chains_5g;
1110*5113495bSYour Name 	uint8_t max_rx_chains_5g;
1111*5113495bSYour Name };
1112*5113495bSYour Name 
1113*5113495bSYour Name /**
1114*5113495bSYour Name  * struct mlme_tgt_caps - mlme related capability coming from target (FW)
1115*5113495bSYour Name  * @data_stall_recovery_fw_support: does target supports data stall recovery.
1116*5113495bSYour Name  * @bigtk_support: does the target support bigtk capability or not.
1117*5113495bSYour Name  * @stop_all_host_scan_support: Target capability that indicates if the target
1118*5113495bSYour Name  * supports stop all host scan request type.
1119*5113495bSYour Name  * @peer_create_conf_support: Peer create confirmation command support
1120*5113495bSYour Name  * @dual_sta_roam_fw_support: Firmware support for dual sta roaming feature
1121*5113495bSYour Name  * @ocv_support: FW supports OCV
1122*5113495bSYour Name  *
1123*5113495bSYour Name  * Add all the mlme-tgt related capabilities here, and the public API would fill
1124*5113495bSYour Name  * the related capability in the required mlme cfg structure.
1125*5113495bSYour Name  */
1126*5113495bSYour Name struct mlme_tgt_caps {
1127*5113495bSYour Name 	bool data_stall_recovery_fw_support;
1128*5113495bSYour Name 	bool bigtk_support;
1129*5113495bSYour Name 	bool stop_all_host_scan_support;
1130*5113495bSYour Name 	bool peer_create_conf_support;
1131*5113495bSYour Name 	bool dual_sta_roam_fw_support;
1132*5113495bSYour Name 	bool ocv_support;
1133*5113495bSYour Name };
1134*5113495bSYour Name 
1135*5113495bSYour Name /**
1136*5113495bSYour Name  * struct wlan_mlme_rates - RATES related config items
1137*5113495bSYour Name  * @cfp_period: cfp period info
1138*5113495bSYour Name  * @cfp_max_duration: cfp Max duration info
1139*5113495bSYour Name  * @max_htmcs_txdata: max HT mcs info for Tx
1140*5113495bSYour Name  * @disable_abg_rate_txdata: disable abg rate info for tx data
1141*5113495bSYour Name  * @sap_max_mcs_txdata: sap max mcs info
1142*5113495bSYour Name  * @disable_high_ht_mcs_2x2: disable high mcs for 2x2 info
1143*5113495bSYour Name  * @supported_11b: supported 11B rates
1144*5113495bSYour Name  * @supported_11a: supported 11A rates
1145*5113495bSYour Name  * @supported_mcs_set: supported MCS set
1146*5113495bSYour Name  * @basic_mcs_set: basic MCS set
1147*5113495bSYour Name  * @current_mcs_set: current MCS set
1148*5113495bSYour Name  */
1149*5113495bSYour Name struct wlan_mlme_rates {
1150*5113495bSYour Name 	uint8_t cfp_period;
1151*5113495bSYour Name 	uint16_t cfp_max_duration;
1152*5113495bSYour Name 	uint16_t max_htmcs_txdata;
1153*5113495bSYour Name 	bool disable_abg_rate_txdata;
1154*5113495bSYour Name 	uint16_t sap_max_mcs_txdata;
1155*5113495bSYour Name 	uint8_t disable_high_ht_mcs_2x2;
1156*5113495bSYour Name 	struct mlme_cfg_str supported_11b;
1157*5113495bSYour Name 	struct mlme_cfg_str supported_11a;
1158*5113495bSYour Name 	struct mlme_cfg_str supported_mcs_set;
1159*5113495bSYour Name 	struct mlme_cfg_str basic_mcs_set;
1160*5113495bSYour Name 	struct mlme_cfg_str current_mcs_set;
1161*5113495bSYour Name };
1162*5113495bSYour Name 
1163*5113495bSYour Name 
1164*5113495bSYour Name /* Flags for gLimProtectionControl that is updated in pe session*/
1165*5113495bSYour Name #define MLME_FORCE_POLICY_PROTECTION_DISABLE        0
1166*5113495bSYour Name #define MLME_FORCE_POLICY_PROTECTION_CTS            1
1167*5113495bSYour Name #define MLME_FORCE_POLICY_PROTECTION_RTS            2
1168*5113495bSYour Name #define MLME_FORCE_POLICY_PROTECTION_DUAL_CTS       3
1169*5113495bSYour Name #define MLME_FORCE_POLICY_PROTECTION_RTS_ALWAYS     4
1170*5113495bSYour Name #define MLME_FORCE_POLICY_PROTECTION_AUTO           5
1171*5113495bSYour Name 
1172*5113495bSYour Name /* protection_enabled bits*/
1173*5113495bSYour Name #define MLME_PROTECTION_ENABLED_FROM_llA            0
1174*5113495bSYour Name #define MLME_PROTECTION_ENABLED_FROM_llB            1
1175*5113495bSYour Name #define MLME_PROTECTION_ENABLED_FROM_llG            2
1176*5113495bSYour Name #define MLME_PROTECTION_ENABLED_HT_20               3
1177*5113495bSYour Name #define MLME_PROTECTION_ENABLED_NON_GF              4
1178*5113495bSYour Name #define MLME_PROTECTION_ENABLED_LSIG_TXOP           5
1179*5113495bSYour Name #define MLME_PROTECTION_ENABLED_RIFS                6
1180*5113495bSYour Name #define MLME_PROTECTION_ENABLED_OBSS                7
1181*5113495bSYour Name #define MLME_PROTECTION_ENABLED_OLBC_FROM_llA       8
1182*5113495bSYour Name #define MLME_PROTECTION_ENABLED_OLBC_FROM_llB       9
1183*5113495bSYour Name #define MLME_PROTECTION_ENABLED_OLBC_FROM_llG       10
1184*5113495bSYour Name #define MLME_PROTECTION_ENABLED_OLBC_HT20           11
1185*5113495bSYour Name #define MLME_PROTECTION_ENABLED_OLBC_NON_GF         12
1186*5113495bSYour Name #define MLME_PROTECTION_ENABLED_OLBC_LSIG_TXOP      13
1187*5113495bSYour Name #define MLME_PROTECTION_ENABLED_OLBC_RIFS           14
1188*5113495bSYour Name #define MLME_PROTECTION_ENABLED_OLBC_OBSS           15
1189*5113495bSYour Name 
1190*5113495bSYour Name /**
1191*5113495bSYour Name  * struct wlan_mlme_feature_flag - feature related information
1192*5113495bSYour Name  * @accept_short_slot_assoc: enable short slot feature
1193*5113495bSYour Name  * @enable_hcf: enable HCF feature
1194*5113495bSYour Name  * @enable_rsn: enable RSN for connection
1195*5113495bSYour Name  * @enable_short_preamble_11g: enable short preamble for 11g
1196*5113495bSYour Name  * @enable_short_slot_time_11g: enable shot slot time for 11g
1197*5113495bSYour Name  * @enable_ampdu: enable AMPDU feature
1198*5113495bSYour Name  * @enable_mcc: enable MCC feature
1199*5113495bSYour Name  * @mcc_rts_cts_prot: RTS-CTS protection in MCC
1200*5113495bSYour Name  * @mcc_bcast_prob_rsp: broadcast Probe Response in MCC
1201*5113495bSYour Name  * @channel_bonding_mode: channel bonding mode
1202*5113495bSYour Name  * @enable_block_ack: enable block ack feature
1203*5113495bSYour Name  * @channel_bonding_mode_24ghz: configures Channel Bonding in 24 GHz
1204*5113495bSYour Name  * @channel_bonding_mode_5ghz:  configures Channel Bonding in 5 GHz
1205*5113495bSYour Name  * @update_cw_allowed: to check update chan width allowed or not
1206*5113495bSYour Name  */
1207*5113495bSYour Name struct wlan_mlme_feature_flag {
1208*5113495bSYour Name 	bool accept_short_slot_assoc;
1209*5113495bSYour Name 	bool enable_hcf;
1210*5113495bSYour Name 	bool enable_rsn;
1211*5113495bSYour Name 	bool enable_short_preamble_11g;
1212*5113495bSYour Name 	bool enable_short_slot_time_11g;
1213*5113495bSYour Name 	bool enable_ampdu;
1214*5113495bSYour Name 	bool enable_mcc;
1215*5113495bSYour Name 	uint8_t mcc_rts_cts_prot;
1216*5113495bSYour Name 	uint8_t mcc_bcast_prob_rsp;
1217*5113495bSYour Name 	uint32_t channel_bonding_mode;
1218*5113495bSYour Name 	uint32_t enable_block_ack;
1219*5113495bSYour Name 	uint32_t channel_bonding_mode_24ghz;
1220*5113495bSYour Name 	uint32_t channel_bonding_mode_5ghz;
1221*5113495bSYour Name 	bool update_cw_allowed;
1222*5113495bSYour Name };
1223*5113495bSYour Name 
1224*5113495bSYour Name /**
1225*5113495bSYour Name  * struct wlan_mlme_sap_protection - SAP erp protection config items
1226*5113495bSYour Name  * @ignore_peer_ht_opmode:     Ignore the ht opmode of the peer. Dynamic via INI
1227*5113495bSYour Name  * @enable_ap_obss_protection: enable/disable AP OBSS protection
1228*5113495bSYour Name  * @protection_force_policy:   Protection force policy. Static via cfg
1229*5113495bSYour Name  * @is_ap_prot_enabled:        Enable/disable SAP protection
1230*5113495bSYour Name  * @ap_protection_mode:        AP protection bitmap
1231*5113495bSYour Name  * @protection_enabled:        Force enable protection. static via cfg
1232*5113495bSYour Name  */
1233*5113495bSYour Name struct wlan_mlme_sap_protection {
1234*5113495bSYour Name 	bool ignore_peer_ht_opmode;
1235*5113495bSYour Name 	bool enable_ap_obss_protection;
1236*5113495bSYour Name 	uint8_t protection_force_policy;
1237*5113495bSYour Name 	bool is_ap_prot_enabled;
1238*5113495bSYour Name 	uint16_t ap_protection_mode;
1239*5113495bSYour Name 	uint32_t protection_enabled;
1240*5113495bSYour Name };
1241*5113495bSYour Name 
1242*5113495bSYour Name /**
1243*5113495bSYour Name  * struct wlan_mlme_chainmask - All chainmask related cfg items
1244*5113495bSYour Name  * @txchainmask1x1:     To set transmit chainmask
1245*5113495bSYour Name  * @rxchainmask1x1:     To set rx chainmask
1246*5113495bSYour Name  * @tx_chain_mask_cck:  Used to enable/disable Cck ChainMask
1247*5113495bSYour Name  * @tx_chain_mask_1ss:  Enables/disables tx chain Mask1ss
1248*5113495bSYour Name  * @num_11b_tx_chains:  Number of Tx Chains in 11b mode
1249*5113495bSYour Name  * @num_11ag_tx_chains: Number of Tx Chains in 11ag mode
1250*5113495bSYour Name  * @tx_chain_mask_2g:   Tx chain mask for 2g
1251*5113495bSYour Name  * @rx_chain_mask_2g:   Tx chain mask for 2g
1252*5113495bSYour Name  * @tx_chain_mask_5g:   Tx chain mask for 5g
1253*5113495bSYour Name  * @rx_chain_mask_5g:   Rx chain mask for 5g
1254*5113495bSYour Name  * @enable_bt_chain_separation: Enable/Disable BT/WLAN Host chain separation
1255*5113495bSYour Name  */
1256*5113495bSYour Name struct wlan_mlme_chainmask {
1257*5113495bSYour Name 	uint8_t txchainmask1x1;
1258*5113495bSYour Name 	uint8_t rxchainmask1x1;
1259*5113495bSYour Name 	bool tx_chain_mask_cck;
1260*5113495bSYour Name 	uint8_t tx_chain_mask_1ss;
1261*5113495bSYour Name 	uint16_t num_11b_tx_chains;
1262*5113495bSYour Name 	uint16_t num_11ag_tx_chains;
1263*5113495bSYour Name 	uint8_t tx_chain_mask_2g;
1264*5113495bSYour Name 	uint8_t rx_chain_mask_2g;
1265*5113495bSYour Name 	uint8_t tx_chain_mask_5g;
1266*5113495bSYour Name 	uint8_t rx_chain_mask_5g;
1267*5113495bSYour Name 	bool enable_bt_chain_separation;
1268*5113495bSYour Name };
1269*5113495bSYour Name 
1270*5113495bSYour Name /**
1271*5113495bSYour Name  * enum wlan_mlme_ratemask_type: Type of PHY for ratemask
1272*5113495bSYour Name  * @WLAN_MLME_RATEMASK_TYPE_NO_MASK: no ratemask set
1273*5113495bSYour Name  * @WLAN_MLME_RATEMASK_TYPE_CCK: CCK/OFDM rate
1274*5113495bSYour Name  * @WLAN_MLME_RATEMASK_TYPE_HT: HT rate
1275*5113495bSYour Name  * @WLAN_MLME_RATEMASK_TYPE_VHT: VHT rate
1276*5113495bSYour Name  * @WLAN_MLME_RATEMASK_TYPE_HE: HE rate
1277*5113495bSYour Name  * @WLAN_MLME_RATEMASK_TYPE_MAX: max enumeration
1278*5113495bSYour Name  *
1279*5113495bSYour Name  * This is used for 'type' values in wlan_mlme_ratemask
1280*5113495bSYour Name  */
1281*5113495bSYour Name enum wlan_mlme_ratemask_type {
1282*5113495bSYour Name 	WLAN_MLME_RATEMASK_TYPE_NO_MASK  =  0,
1283*5113495bSYour Name 	WLAN_MLME_RATEMASK_TYPE_CCK      =  1,
1284*5113495bSYour Name 	WLAN_MLME_RATEMASK_TYPE_HT       =  2,
1285*5113495bSYour Name 	WLAN_MLME_RATEMASK_TYPE_VHT      =  3,
1286*5113495bSYour Name 	WLAN_MLME_RATEMASK_TYPE_HE       =  4,
1287*5113495bSYour Name 	/* keep this last */
1288*5113495bSYour Name 	WLAN_MLME_RATEMASK_TYPE_MAX,
1289*5113495bSYour Name };
1290*5113495bSYour Name 
1291*5113495bSYour Name /**
1292*5113495bSYour Name  * struct wlan_mlme_ratemask - ratemask config parameters
1293*5113495bSYour Name  * @type:       Type of PHY the mask to be applied
1294*5113495bSYour Name  * @lower32:    Lower 32 bits in the 1st 64-bit value
1295*5113495bSYour Name  * @higher32:   Higher 32 bits in the 1st 64-bit value
1296*5113495bSYour Name  * @lower32_2:  Lower 32 bits in the 2nd 64-bit value
1297*5113495bSYour Name  * @higher32_2: Higher 32 bits in the 2nd 64-bit value
1298*5113495bSYour Name  */
1299*5113495bSYour Name struct wlan_mlme_ratemask {
1300*5113495bSYour Name 	enum wlan_mlme_ratemask_type type;
1301*5113495bSYour Name 	uint32_t lower32;
1302*5113495bSYour Name 	uint32_t higher32;
1303*5113495bSYour Name 	uint32_t lower32_2;
1304*5113495bSYour Name 	uint32_t higher32_2;
1305*5113495bSYour Name };
1306*5113495bSYour Name 
1307*5113495bSYour Name /**
1308*5113495bSYour Name  * struct dual_sta_policy - Concurrent STA policy configuration
1309*5113495bSYour Name  * @concurrent_sta_policy: Possible values are defined in enum
1310*5113495bSYour Name  * qca_wlan_concurrent_sta_policy_config
1311*5113495bSYour Name  * @primary_vdev_id: specified iface is the primary STA iface, say 0 means
1312*5113495bSYour Name  * vdev 0 is acting as primary interface
1313*5113495bSYour Name  */
1314*5113495bSYour Name struct dual_sta_policy {
1315*5113495bSYour Name 	uint8_t concurrent_sta_policy;
1316*5113495bSYour Name 	uint8_t primary_vdev_id;
1317*5113495bSYour Name };
1318*5113495bSYour Name 
1319*5113495bSYour Name /**
1320*5113495bSYour Name  * enum mlme_cfg_frame_type  - frame type to configure mgmt hw tx retry count
1321*5113495bSYour Name  * @CFG_GO_NEGOTIATION_REQ_FRAME_TYPE: p2p go negotiation request fame
1322*5113495bSYour Name  * @CFG_P2P_INVITATION_REQ_FRAME_TYPE: p2p invitation request frame
1323*5113495bSYour Name  * @CFG_PROVISION_DISCOVERY_REQ_FRAME_TYPE: p2p provision discovery request
1324*5113495bSYour Name  * @CFG_FRAME_TYPE_MAX: max enumeration
1325*5113495bSYour Name  */
1326*5113495bSYour Name enum mlme_cfg_frame_type {
1327*5113495bSYour Name 	CFG_GO_NEGOTIATION_REQ_FRAME_TYPE = 0,
1328*5113495bSYour Name 	CFG_P2P_INVITATION_REQ_FRAME_TYPE = 1,
1329*5113495bSYour Name 	CFG_PROVISION_DISCOVERY_REQ_FRAME_TYPE = 2,
1330*5113495bSYour Name 	CFG_FRAME_TYPE_MAX,
1331*5113495bSYour Name };
1332*5113495bSYour Name 
1333*5113495bSYour Name #define MAX_MGMT_HW_TX_RETRY_COUNT 127
1334*5113495bSYour Name 
1335*5113495bSYour Name /**
1336*5113495bSYour Name  * struct wlan_user_mcc_quota - User MCC quota configuration
1337*5113495bSYour Name  * @op_mode: Mode for which MCC quota needs to be applied
1338*5113495bSYour Name  * @quota: User MCC quota value
1339*5113495bSYour Name  * @vdev_id: Intended VDEV id for the quota
1340*5113495bSYour Name  */
1341*5113495bSYour Name struct wlan_user_mcc_quota {
1342*5113495bSYour Name 	enum QDF_OPMODE op_mode;
1343*5113495bSYour Name 	uint8_t quota;
1344*5113495bSYour Name 	uint8_t vdev_id;
1345*5113495bSYour Name };
1346*5113495bSYour Name 
1347*5113495bSYour Name /**
1348*5113495bSYour Name  * enum wlan_mlme_hw_mode_config_type - HW mode config type replicated from
1349*5113495bSYour Name  *                                     wmi_hw_mode_config_type in FW header.
1350*5113495bSYour Name  *                                     similar as wmi_host_hw_mode_config_type.
1351*5113495bSYour Name  * @WLAN_MLME_HW_MODE_SINGLE: Only one PHY is active.
1352*5113495bSYour Name  * @WLAN_MLME_HW_MODE_DBS: Both PHYs are active in different bands,
1353*5113495bSYour Name  *                        one in 2G and another in 5G.
1354*5113495bSYour Name  * @WLAN_MLME_HW_MODE_SBS_PASSIVE: Both PHYs are in passive mode (only rx) in
1355*5113495bSYour Name  *                        same band; no tx allowed.
1356*5113495bSYour Name  * @WLAN_MLME_HW_MODE_SBS: Both PHYs are active in the same band.
1357*5113495bSYour Name  *                        Support for both PHYs within one band is planned
1358*5113495bSYour Name  *                        for 5G only(as indicated in WMI_MAC_PHY_CAPABILITIES),
1359*5113495bSYour Name  *                        but could be extended to other bands in the future.
1360*5113495bSYour Name  *                        The separation of the band between the two PHYs needs
1361*5113495bSYour Name  *                        to be communicated separately.
1362*5113495bSYour Name  * @WLAN_MLME_HW_MODE_DBS_SBS: 3 PHYs, with 2 on the same band doing SBS
1363*5113495bSYour Name  *                           as in WMI_HW_MODE_SBS, and 3rd on the other band
1364*5113495bSYour Name  * @WLAN_MLME_HW_MODE_DBS_OR_SBS: Two PHY with one PHY capabale of both 2G and
1365*5113495bSYour Name  *                        5G. It can support SBS (5G + 5G) OR DBS (5G + 2G).
1366*5113495bSYour Name  * @WLAN_MLME_HW_MODE_DBS_2G_5G: Both PHYs are active in different bands.
1367*5113495bSYour Name  *                               PhyA 2G and PhyB 5G
1368*5113495bSYour Name  * @WLAN_MLME_HW_MODE_2G_PHYB: Only one phy is active. 2G mode on PhyB.
1369*5113495bSYour Name  * @WLAN_MLME_HW_MODE_EMLSR: Both PHYs are active in listen mode in 1x1
1370*5113495bSYour Name  *                          and Tx/Rx trigger on any PHY will switch
1371*5113495bSYour Name  *                          from 1x1 to 2x2 on that Phy
1372*5113495bSYour Name  * @WLAN_MLME_HW_MODE_AUX_EMLSR_SINGLE:  PHYA0 and AUX are active in listen mode
1373*5113495bSYour Name  *                                      in 1x1 and Tx/Rx trigger on any.
1374*5113495bSYour Name  *                                      PHY will switch from 1x1 to 2x2
1375*5113495bSYour Name  *                                      on that Phy.
1376*5113495bSYour Name  * @WLAN_MLME_HW_MODE_AUX_EMLSR_SPLIT: PHYA1 and AUX are active in listen mode
1377*5113495bSYour Name  *                                    in 1x1 and Tx/Rx trigger on any.
1378*5113495bSYour Name  *                                    PHY will switch from 1x1 to 2x2
1379*5113495bSYour Name  *                                    on that Phy.
1380*5113495bSYour Name  * @WLAN_MLME_HW_MODE_MAX: Max hw_mode_id.
1381*5113495bSYour Name  */
1382*5113495bSYour Name enum wlan_mlme_hw_mode_config_type {
1383*5113495bSYour Name 	WLAN_MLME_HW_MODE_SINGLE       = 0,
1384*5113495bSYour Name 	WLAN_MLME_HW_MODE_DBS          = 1,
1385*5113495bSYour Name 	WLAN_MLME_HW_MODE_SBS_PASSIVE  = 2,
1386*5113495bSYour Name 	WLAN_MLME_HW_MODE_SBS          = 3,
1387*5113495bSYour Name 	WLAN_MLME_HW_MODE_DBS_SBS      = 4,
1388*5113495bSYour Name 	WLAN_MLME_HW_MODE_DBS_OR_SBS   = 5,
1389*5113495bSYour Name 	WLAN_MLME_HW_MODE_DBS_2G_5G    = 6,
1390*5113495bSYour Name 	WLAN_MLME_HW_MODE_2G_PHYB      = 7,
1391*5113495bSYour Name 	WLAN_MLME_HW_MODE_EMLSR        = 8,
1392*5113495bSYour Name 	WLAN_MLME_HW_MODE_AUX_EMLSR_SINGLE = 9,
1393*5113495bSYour Name 	WLAN_MLME_HW_MODE_AUX_EMLSR_SPLIT  = 10,
1394*5113495bSYour Name 	WLAN_MLME_HW_MODE_MAX,
1395*5113495bSYour Name };
1396*5113495bSYour Name 
1397*5113495bSYour Name /**
1398*5113495bSYour Name  * enum wlan_mlme_aux_caps_bit - Bit mapping for aux capability
1399*5113495bSYour Name  *
1400*5113495bSYour Name  * @WLAN_MLME_AUX_MODE_SCAN_BIT: if set, aux scan is supported
1401*5113495bSYour Name  * @WLAN_MLME_AUX_MODE_LISTEN_BIT: if set, aux listen is supported
1402*5113495bSYour Name  * @WLAN_MLME_AUX_MODE_EMLSR_BIT: if set, aux emlsr is supported
1403*5113495bSYour Name  */
1404*5113495bSYour Name enum wlan_mlme_aux_caps_bit {
1405*5113495bSYour Name 	WLAN_MLME_AUX_MODE_SCAN_BIT = 0,
1406*5113495bSYour Name 	WLAN_MLME_AUX_MODE_LISTEN_BIT = 1,
1407*5113495bSYour Name 	WLAN_MLME_AUX_MODE_EMLSR_BIT = 2,
1408*5113495bSYour Name };
1409*5113495bSYour Name 
1410*5113495bSYour Name /* struct wlan_mlme_aux_dev_caps - wlan mlme aux dev capability
1411*5113495bSYour Name  *
1412*5113495bSYour Name  * @supported_modes_bitmap: indicate which mode this AUX supports for the
1413*5113495bSYour Name  *                          HW mode defined in hw_mode_id
1414*5113495bSYour Name  * @listen_pdev_id_map: indicate which AUX MAC can listen/scan for the HW mode
1415*5113495bSYour Name  *                      described in hw_mode_id
1416*5113495bSYour Name  * @emlsr_pdev_id_map: indicate which AUX MAC can perform eMLSR for the HW mode
1417*5113495bSYour Name  *                     described in hw_mode_id.
1418*5113495bSYour Name  */
1419*5113495bSYour Name struct wlan_mlme_aux_dev_caps {
1420*5113495bSYour Name 	uint32_t supported_modes_bitmap;
1421*5113495bSYour Name 	uint32_t listen_pdev_id_map;
1422*5113495bSYour Name 	uint32_t emlsr_pdev_id_map;
1423*5113495bSYour Name };
1424*5113495bSYour Name 
1425*5113495bSYour Name /* struct wlan_mlme_generic - Generic CFG config items
1426*5113495bSYour Name  *
1427*5113495bSYour Name  * @band_capability: HW Band Capability - Both or 2.4G only or 5G only
1428*5113495bSYour Name  * @band: Current Band - Internal variable, initialized to INI and updated later
1429*5113495bSYour Name  * @select_5ghz_margin: RSSI margin to select 5Ghz over 2.4 Ghz
1430*5113495bSYour Name  * @sub_20_chan_width: Sub 20Mhz Channel Width
1431*5113495bSYour Name  * @ito_repeat_count: ITO Repeat Count
1432*5113495bSYour Name  * @pmf_sa_query_max_retries: PMF query max retries for SAP
1433*5113495bSYour Name  * @pmf_sa_query_retry_interval: PMF query retry interval for SAP
1434*5113495bSYour Name  * @dropped_pkt_disconnect_thresh: Threshold for dropped pkts before disconnect
1435*5113495bSYour Name  * @rtt_mac_randomization: Enable/Disable RTT MAC randomization
1436*5113495bSYour Name  * @rtt3_enabled: RTT3 enable or disable info
1437*5113495bSYour Name  * @prevent_link_down: Enable/Disable prevention of link down
1438*5113495bSYour Name  * @memory_deep_sleep: Enable/Disable memory deep sleep
1439*5113495bSYour Name  * @cck_tx_fir_override: Enable/Disable CCK Tx FIR Override
1440*5113495bSYour Name  * @crash_inject: Enable/Disable Crash Inject
1441*5113495bSYour Name  * @lpass_support: Enable/Disable LPASS Support
1442*5113495bSYour Name  * @self_recovery: Enable/Disable Self Recovery
1443*5113495bSYour Name  * @sap_dot11mc: Enable/Disable SAP 802.11mc support
1444*5113495bSYour Name  * @fatal_event_trigger: Enable/Disable Fatal Events Trigger
1445*5113495bSYour Name  * @optimize_ca_event: Enable/Disable Optimization of CA events
1446*5113495bSYour Name  * @fw_timeout_crash: Enable/Disable FW Timeout Crash *
1447*5113495bSYour Name  * @debug_packet_log: Debug packet log flags
1448*5113495bSYour Name  * @enabled_11h: enable 11h flag
1449*5113495bSYour Name  * @enabled_11d: enable 11d flag
1450*5113495bSYour Name  * @enable_beacon_reception_stats: enable beacon reception stats
1451*5113495bSYour Name  * @data_stall_recovery_fw_support: whether FW supports Data stall recovery.
1452*5113495bSYour Name  * @enable_change_channel_bandwidth: enable/disable change channel bw in mission
1453*5113495bSYour Name  * mode
1454*5113495bSYour Name  * @disable_4way_hs_offload: enable/disable 4 way handshake offload to firmware
1455*5113495bSYour Name  * @as_enabled: antenna sharing enabled or not (FW capability)
1456*5113495bSYour Name  * @mgmt_retry_max: maximum retries for management frame
1457*5113495bSYour Name  * @enable_he_mcs0_for_6ghz_mgmt: HE MCS0 rate for mgmt frames in 6GHz band
1458*5113495bSYour Name  * @bmiss_skip_full_scan: Decide if full scan can be skipped in firmware if no
1459*5113495bSYour Name  * candidate is found in partial scan based on channel map
1460*5113495bSYour Name  * @enable_ring_buffer: Decide to enable/disable ring buffer for bug report
1461*5113495bSYour Name  * @enable_peer_unmap_conf_support: Indicate whether to send conf for peer unmap
1462*5113495bSYour Name  * @dfs_chan_ageout_time: Set DFS Channel ageout time
1463*5113495bSYour Name  * @bigtk_support: Whether BIGTK is supported or not
1464*5113495bSYour Name  * @stop_all_host_scan_support: Target capability that indicates if the target
1465*5113495bSYour Name  * supports stop all host scan request type.
1466*5113495bSYour Name  * @dual_sta_roam_fw_support: Firmware support for dual sta roaming feature
1467*5113495bSYour Name  * @sae_connect_retries: sae connect retry bitmask
1468*5113495bSYour Name  * @wls_6ghz_capable: wifi location service(WLS) is 6ghz capable
1469*5113495bSYour Name  * @enabled_rf_test_mode: Enable/disable the RF test mode config
1470*5113495bSYour Name  * @monitor_mode_concurrency: Monitor mode concurrency supported
1471*5113495bSYour Name  * @ocv_support: FW supports OCV or not
1472*5113495bSYour Name  * @wds_mode: wds mode supported
1473*5113495bSYour Name  * @dual_sta_policy_cfg: Dual STA policies configuration
1474*5113495bSYour Name  * @tx_retry_multiplier: TX xretry extension parameter
1475*5113495bSYour Name  * @mgmt_hw_tx_retry_count: MGMT HW tx retry count for frames
1476*5113495bSYour Name  * @std_6ghz_conn_policy: 6GHz standard connection policy
1477*5113495bSYour Name  * @disable_vlp_sta_conn_to_sp_ap: Disable VLP STA connection to SP AP
1478*5113495bSYour Name  * @eht_mode: EHT mode of operation
1479*5113495bSYour Name  * @t2lm_negotiation_support: T2LM negotiation supported enum value
1480*5113495bSYour Name  * @enable_emlsr_mode: 11BE eMLSR mode support
1481*5113495bSYour Name  * @mld_id: MLD ID of requested BSS within ML probe request frame
1482*5113495bSYour Name  * @oem_eht_mlo_crypto_bitmap: Bitmap of APs allowed by OEMs to connect
1483*5113495bSYour Name  * in EHT/MLO.
1484*5113495bSYour Name  * @safe_mode_enable: safe mode to bypass some strict 6 GHz checks for
1485*5113495bSYour Name  * connection, bypass strict power levels
1486*5113495bSYour Name  * @sr_enable_modes: modes for which SR(Spatial Reuse) is enabled
1487*5113495bSYour Name  * @wlan_mlme_aux0_dev_caps: capability for aux0
1488*5113495bSYour Name  * @bt_profile_con: Bluetooth connection profile
1489*5113495bSYour Name  */
1490*5113495bSYour Name struct wlan_mlme_generic {
1491*5113495bSYour Name 	uint32_t band_capability;
1492*5113495bSYour Name 	uint32_t band;
1493*5113495bSYour Name 	uint8_t select_5ghz_margin;
1494*5113495bSYour Name 	uint8_t sub_20_chan_width;
1495*5113495bSYour Name 	uint8_t ito_repeat_count;
1496*5113495bSYour Name 	uint8_t pmf_sa_query_max_retries;
1497*5113495bSYour Name 	uint16_t pmf_sa_query_retry_interval;
1498*5113495bSYour Name 	uint16_t dropped_pkt_disconnect_thresh;
1499*5113495bSYour Name 	bool rtt_mac_randomization;
1500*5113495bSYour Name 	bool rtt3_enabled;
1501*5113495bSYour Name 	bool prevent_link_down;
1502*5113495bSYour Name 	bool memory_deep_sleep;
1503*5113495bSYour Name 	bool cck_tx_fir_override;
1504*5113495bSYour Name 	bool crash_inject;
1505*5113495bSYour Name 	bool lpass_support;
1506*5113495bSYour Name 	bool self_recovery;
1507*5113495bSYour Name 	bool sap_dot11mc;
1508*5113495bSYour Name 	bool fatal_event_trigger;
1509*5113495bSYour Name 	bool optimize_ca_event;
1510*5113495bSYour Name 	bool fw_timeout_crash;
1511*5113495bSYour Name 	uint8_t debug_packet_log;
1512*5113495bSYour Name 	bool enabled_11h;
1513*5113495bSYour Name 	bool enabled_11d;
1514*5113495bSYour Name 	bool enable_deauth_to_disassoc_map;
1515*5113495bSYour Name 	bool enable_beacon_reception_stats;
1516*5113495bSYour Name 	bool data_stall_recovery_fw_support;
1517*5113495bSYour Name 	uint32_t disable_4way_hs_offload;
1518*5113495bSYour Name 	bool as_enabled;
1519*5113495bSYour Name 	uint8_t mgmt_retry_max;
1520*5113495bSYour Name 	bool enable_he_mcs0_for_6ghz_mgmt;
1521*5113495bSYour Name 	bool bmiss_skip_full_scan;
1522*5113495bSYour Name 	bool enable_ring_buffer;
1523*5113495bSYour Name 	bool enable_peer_unmap_conf_support;
1524*5113495bSYour Name 	uint8_t dfs_chan_ageout_time;
1525*5113495bSYour Name 	bool bigtk_support;
1526*5113495bSYour Name 	bool stop_all_host_scan_support;
1527*5113495bSYour Name 	bool dual_sta_roam_fw_support;
1528*5113495bSYour Name 	uint32_t sae_connect_retries;
1529*5113495bSYour Name 	bool wls_6ghz_capable;
1530*5113495bSYour Name 	bool enabled_rf_test_mode;
1531*5113495bSYour Name 	enum monitor_mode_concurrency monitor_mode_concurrency;
1532*5113495bSYour Name 	bool ocv_support;
1533*5113495bSYour Name 	enum wlan_wds_mode wds_mode;
1534*5113495bSYour Name 	struct dual_sta_policy dual_sta_policy;
1535*5113495bSYour Name 	uint32_t tx_retry_multiplier;
1536*5113495bSYour Name 	uint8_t mgmt_hw_tx_retry_count[CFG_FRAME_TYPE_MAX];
1537*5113495bSYour Name #ifdef CONFIG_BAND_6GHZ
1538*5113495bSYour Name 	bool std_6ghz_conn_policy;
1539*5113495bSYour Name 	bool disable_vlp_sta_conn_to_sp_ap;
1540*5113495bSYour Name #endif
1541*5113495bSYour Name #ifdef WLAN_FEATURE_11BE_MLO
1542*5113495bSYour Name 	enum wlan_eht_mode eht_mode;
1543*5113495bSYour Name 	bool enable_emlsr_mode;
1544*5113495bSYour Name 	enum t2lm_negotiation_support t2lm_negotiation_support;
1545*5113495bSYour Name 	uint8_t mld_id;
1546*5113495bSYour Name #endif
1547*5113495bSYour Name #ifdef WLAN_FEATURE_11BE
1548*5113495bSYour Name 	uint32_t oem_eht_mlo_crypto_bitmap;
1549*5113495bSYour Name #endif
1550*5113495bSYour Name #ifdef WLAN_FEATURE_MCC_QUOTA
1551*5113495bSYour Name 	struct wlan_user_mcc_quota user_mcc_quota;
1552*5113495bSYour Name #endif
1553*5113495bSYour Name 	bool safe_mode_enable;
1554*5113495bSYour Name #if defined(WLAN_FEATURE_SR)
1555*5113495bSYour Name 	uint32_t sr_enable_modes;
1556*5113495bSYour Name #endif
1557*5113495bSYour Name 	struct wlan_mlme_aux_dev_caps
1558*5113495bSYour Name 		wlan_mlme_aux0_dev_caps[WLAN_MLME_HW_MODE_MAX];
1559*5113495bSYour Name 	bool bt_profile_con;
1560*5113495bSYour Name };
1561*5113495bSYour Name 
1562*5113495bSYour Name /**
1563*5113495bSYour Name  * struct wlan_mlme_product_details_cfg - product details config items
1564*5113495bSYour Name  * @manufacturer_name: manufacture name
1565*5113495bSYour Name  * @model_number: model number
1566*5113495bSYour Name  * @model_name: model name
1567*5113495bSYour Name  * @manufacture_product_name: manufacture product name
1568*5113495bSYour Name  * @manufacture_product_version: manufacture product version
1569*5113495bSYour Name  */
1570*5113495bSYour Name struct wlan_mlme_product_details_cfg {
1571*5113495bSYour Name 	char manufacturer_name[WLAN_CFG_MFR_NAME_LEN + 1];
1572*5113495bSYour Name 	char model_number[WLAN_CFG_MODEL_NUMBER_LEN + 1];
1573*5113495bSYour Name 	char model_name[WLAN_CFG_MODEL_NAME_LEN + 1];
1574*5113495bSYour Name 	char manufacture_product_name[WLAN_CFG_MFR_PRODUCT_NAME_LEN + 1];
1575*5113495bSYour Name 	char manufacture_product_version[WLAN_CFG_MFR_PRODUCT_VERSION_LEN + 1];
1576*5113495bSYour Name };
1577*5113495bSYour Name 
1578*5113495bSYour Name /**
1579*5113495bSYour Name  * struct acs_weight - Normalize ACS weight for mentioned channels
1580*5113495bSYour Name  * @chan_freq: frequency of the channel
1581*5113495bSYour Name  * @normalize_weight: Normalization factor of the frequency
1582*5113495bSYour Name  */
1583*5113495bSYour Name struct acs_weight {
1584*5113495bSYour Name 	uint32_t chan_freq;
1585*5113495bSYour Name 	uint8_t normalize_weight;
1586*5113495bSYour Name };
1587*5113495bSYour Name 
1588*5113495bSYour Name /**
1589*5113495bSYour Name  * struct acs_weight_range - Normalize ACS weight for mentioned channel range
1590*5113495bSYour Name  * @start_freq: frequency of the start channel
1591*5113495bSYour Name  * @end_freq: frequency of the end channel
1592*5113495bSYour Name  * @normalize_weight: Normalization factor for freq range
1593*5113495bSYour Name  */
1594*5113495bSYour Name struct acs_weight_range {
1595*5113495bSYour Name 	uint32_t start_freq;
1596*5113495bSYour Name 	uint32_t end_freq;
1597*5113495bSYour Name 	uint8_t normalize_weight;
1598*5113495bSYour Name };
1599*5113495bSYour Name 
1600*5113495bSYour Name #define MAX_ACS_WEIGHT_RANGE              10
1601*5113495bSYour Name #define MLME_GET_DFS_CHAN_WEIGHT(np_chan_weight) (np_chan_weight & 0x000000FF)
1602*5113495bSYour Name 
1603*5113495bSYour Name /**
1604*5113495bSYour Name  * struct wlan_mlme_acs - All acs related cfg items
1605*5113495bSYour Name  * @is_acs_with_more_param: to enable acs with more param
1606*5113495bSYour Name  * @auto_channel_select_weight: to set acs channel weight
1607*5113495bSYour Name  * @is_vendor_acs_support: enable application based channel selection
1608*5113495bSYour Name  * @is_acs_support_for_dfs_ltecoex: enable channel for dfs and lte coex
1609*5113495bSYour Name  * @is_external_acs_policy: control external policy
1610*5113495bSYour Name  * @normalize_weight_chan: Weight factor to be considered in ACS
1611*5113495bSYour Name  * @normalize_weight_num_chan: Number of freq items for normalization.
1612*5113495bSYour Name  * @normalize_weight_range: Frequency range for weight normalization
1613*5113495bSYour Name  * @num_weight_range: num of ranges provided by user
1614*5113495bSYour Name  * @force_sap_start: Force SAP start when no channel is found suitable
1615*5113495bSYour Name  * by ACS
1616*5113495bSYour Name  * @acs_prefer_6ghz_psc: Select 6 GHz PSC channel as priority
1617*5113495bSYour Name  * @np_chan_weightage: Weightage to be given to non preferred channels.
1618*5113495bSYour Name  */
1619*5113495bSYour Name struct wlan_mlme_acs {
1620*5113495bSYour Name 	bool is_acs_with_more_param;
1621*5113495bSYour Name 	uint32_t auto_channel_select_weight;
1622*5113495bSYour Name 	bool is_vendor_acs_support;
1623*5113495bSYour Name 	bool is_acs_support_for_dfs_ltecoex;
1624*5113495bSYour Name 	bool is_external_acs_policy;
1625*5113495bSYour Name 	struct acs_weight normalize_weight_chan[NUM_CHANNELS];
1626*5113495bSYour Name 	uint16_t normalize_weight_num_chan;
1627*5113495bSYour Name 	struct acs_weight_range normalize_weight_range[MAX_ACS_WEIGHT_RANGE];
1628*5113495bSYour Name 	uint16_t num_weight_range;
1629*5113495bSYour Name 	bool force_sap_start;
1630*5113495bSYour Name 	bool acs_prefer_6ghz_psc;
1631*5113495bSYour Name 	uint32_t np_chan_weightage;
1632*5113495bSYour Name };
1633*5113495bSYour Name 
1634*5113495bSYour Name /**
1635*5113495bSYour Name  * struct wlan_mlme_cfg_twt - All twt related cfg items
1636*5113495bSYour Name  * @is_twt_enabled: global twt configuration
1637*5113495bSYour Name  * @is_bcast_responder_enabled: bcast responder enable/disable
1638*5113495bSYour Name  * @is_bcast_requestor_enabled: bcast requestor enable/disable
1639*5113495bSYour Name  * @bcast_requestor_tgt_cap: Broadcast requestor target capability
1640*5113495bSYour Name  * @bcast_responder_tgt_cap: Broadcast responder target capability
1641*5113495bSYour Name  * @bcast_legacy_tgt_cap: Broadcast Target capability. This is the legacy
1642*5113495bSYour Name  * capability.
1643*5113495bSYour Name  * @is_twt_nudge_tgt_cap_enabled: support for nudge request enable/disable
1644*5113495bSYour Name  * @is_all_twt_tgt_cap_enabled: support for all twt enable/disable
1645*5113495bSYour Name  * @is_twt_statistics_tgt_cap_enabled: support for twt statistics
1646*5113495bSYour Name  * @twt_congestion_timeout: congestion timeout value
1647*5113495bSYour Name  * @disable_btwt_usr_cfg: User config param to enable/disable the BTWT support
1648*5113495bSYour Name  * @enable_twt_24ghz: Enable/disable host TWT when STA is connected in
1649*5113495bSYour Name  * 2.4Ghz
1650*5113495bSYour Name  * @disable_twt_info_frame: Enable/disable TWT info frame
1651*5113495bSYour Name  * @req_flag: requestor flag enable/disable
1652*5113495bSYour Name  * @res_flag: responder flag enable/disable
1653*5113495bSYour Name  * @twt_res_svc_cap: responder service capability
1654*5113495bSYour Name  */
1655*5113495bSYour Name struct wlan_mlme_cfg_twt {
1656*5113495bSYour Name 	bool is_twt_enabled;
1657*5113495bSYour Name 	bool is_bcast_responder_enabled;
1658*5113495bSYour Name 	bool is_bcast_requestor_enabled;
1659*5113495bSYour Name 	bool bcast_requestor_tgt_cap;
1660*5113495bSYour Name 	bool bcast_responder_tgt_cap;
1661*5113495bSYour Name 	bool bcast_legacy_tgt_cap;
1662*5113495bSYour Name 	bool is_twt_nudge_tgt_cap_enabled;
1663*5113495bSYour Name 	bool is_all_twt_tgt_cap_enabled;
1664*5113495bSYour Name 	bool is_twt_statistics_tgt_cap_enabled;
1665*5113495bSYour Name 	uint32_t twt_congestion_timeout;
1666*5113495bSYour Name 	bool disable_btwt_usr_cfg;
1667*5113495bSYour Name 	bool enable_twt_24ghz;
1668*5113495bSYour Name 	bool disable_twt_info_frame;
1669*5113495bSYour Name 	bool req_flag;
1670*5113495bSYour Name 	bool res_flag;
1671*5113495bSYour Name 	bool twt_res_svc_cap;
1672*5113495bSYour Name };
1673*5113495bSYour Name 
1674*5113495bSYour Name /**
1675*5113495bSYour Name  * struct wlan_mlme_obss_ht40 - OBSS HT40 config items
1676*5113495bSYour Name  * @active_dwelltime:        obss active dwelltime
1677*5113495bSYour Name  * @passive_dwelltime:       obss passive dwelltime
1678*5113495bSYour Name  * @width_trigger_interval:  obss trigger interval
1679*5113495bSYour Name  * @passive_per_channel:     obss scan passive total duration per channel
1680*5113495bSYour Name  * @active_per_channel:      obss scan active total duration per channel
1681*5113495bSYour Name  * @width_trans_delay:       obss width transition delay
1682*5113495bSYour Name  * @scan_activity_threshold: obss scan activity threshold
1683*5113495bSYour Name  * @is_override_ht20_40_24g: use channel bonding in 2.4 GHz
1684*5113495bSYour Name  * @obss_detection_offload_enabled:       Enable OBSS detection offload
1685*5113495bSYour Name  * @obss_color_collision_offload_enabled: Enable obss color collision
1686*5113495bSYour Name  * @bss_color_collision_det_sta: STA BSS color collision detection offload
1687*5113495bSYour Name  * @bss_color_collision_det_tgt_support: STA BSS color collision detection
1688*5113495bSYour Name  * target support
1689*5113495bSYour Name  */
1690*5113495bSYour Name struct wlan_mlme_obss_ht40 {
1691*5113495bSYour Name 	uint32_t active_dwelltime;
1692*5113495bSYour Name 	uint32_t passive_dwelltime;
1693*5113495bSYour Name 	uint32_t width_trigger_interval;
1694*5113495bSYour Name 	uint32_t passive_per_channel;
1695*5113495bSYour Name 	uint32_t active_per_channel;
1696*5113495bSYour Name 	uint32_t width_trans_delay;
1697*5113495bSYour Name 	uint32_t scan_activity_threshold;
1698*5113495bSYour Name 	bool is_override_ht20_40_24g;
1699*5113495bSYour Name 	bool obss_detection_offload_enabled;
1700*5113495bSYour Name 	bool obss_color_collision_offload_enabled;
1701*5113495bSYour Name 	bool bss_color_collision_det_sta;
1702*5113495bSYour Name 	bool bss_color_collision_det_tgt_support;
1703*5113495bSYour Name };
1704*5113495bSYour Name 
1705*5113495bSYour Name /**
1706*5113495bSYour Name  * struct wlan_mlme_eml_cap - EML capabilities of MLD
1707*5113495bSYour Name  * @emlsr_supp: eMLSR Support
1708*5113495bSYour Name  * @emlsr_pad_delay: eMLSR Padding Delay
1709*5113495bSYour Name  * @emlsr_trans_delay: eMLSR transition delay
1710*5113495bSYour Name  * @emlmr_supp: eMLMR Support
1711*5113495bSYour Name  * @emlmr_delay: eMLMR Delay
1712*5113495bSYour Name  * @trans_timeout: Transition Timeout
1713*5113495bSYour Name  * @reserved: Reserved
1714*5113495bSYour Name  */
1715*5113495bSYour Name struct wlan_mlme_eml_cap {
1716*5113495bSYour Name 	uint16_t emlsr_supp:1,
1717*5113495bSYour Name 		 emlsr_pad_delay:3,
1718*5113495bSYour Name 		 emlsr_trans_delay:3,
1719*5113495bSYour Name 		 emlmr_supp:1,
1720*5113495bSYour Name 		 emlmr_delay:3,
1721*5113495bSYour Name 		 trans_timeout:4,
1722*5113495bSYour Name 		 reserved:1;
1723*5113495bSYour Name };
1724*5113495bSYour Name 
1725*5113495bSYour Name /**
1726*5113495bSYour Name  * enum dot11p_mode - The 802.11p mode of operation
1727*5113495bSYour Name  * @CFG_11P_DISABLED:   802.11p mode is disabled
1728*5113495bSYour Name  * @CFG_11P_STANDALONE: 802.11p-only operation
1729*5113495bSYour Name  * @CFG_11P_CONCURRENT: 802.11p and WLAN operate concurrently
1730*5113495bSYour Name  */
1731*5113495bSYour Name enum dot11p_mode {
1732*5113495bSYour Name 	CFG_11P_DISABLED = 0,
1733*5113495bSYour Name 	CFG_11P_STANDALONE,
1734*5113495bSYour Name 	CFG_11P_CONCURRENT,
1735*5113495bSYour Name };
1736*5113495bSYour Name 
1737*5113495bSYour Name #define MAX_VDEV_NSS                2
1738*5113495bSYour Name #define MAX_VDEV_CHAINS             2
1739*5113495bSYour Name 
1740*5113495bSYour Name /**
1741*5113495bSYour Name  * struct wlan_mlme_nss_chains -     MLME vdev config of nss, and chains
1742*5113495bSYour Name  * @num_tx_chains:                   tx chains of vdev config
1743*5113495bSYour Name  * @num_rx_chains:                   rx chains of vdev config
1744*5113495bSYour Name  * @tx_nss:                          tx nss of vdev config
1745*5113495bSYour Name  * @rx_nss:                          rx nss of vdev config
1746*5113495bSYour Name  * @num_tx_chains_11b:               number of tx chains in 11b mode
1747*5113495bSYour Name  * @num_tx_chains_11g:               number of tx chains in 11g mode
1748*5113495bSYour Name  * @num_tx_chains_11a:               number of tx chains in 11a mode
1749*5113495bSYour Name  * @disable_rx_mrc:                  disable 2 rx chains, in rx nss 1 mode
1750*5113495bSYour Name  * @disable_tx_mrc:                  disable 2 tx chains, in tx nss 1 mode
1751*5113495bSYour Name  * @enable_dynamic_nss_chains_cfg:   enable the dynamic nss chain config to FW
1752*5113495bSYour Name  * @restart_sap_on_dyn_nss_chains_cfg: restart SAP on dynamic NSS chains
1753*5113495bSYour Name  * update
1754*5113495bSYour Name  */
1755*5113495bSYour Name struct wlan_mlme_nss_chains {
1756*5113495bSYour Name 	uint32_t num_tx_chains[NSS_CHAINS_BAND_MAX];
1757*5113495bSYour Name 	uint32_t num_rx_chains[NSS_CHAINS_BAND_MAX];
1758*5113495bSYour Name 	uint32_t tx_nss[NSS_CHAINS_BAND_MAX];
1759*5113495bSYour Name 	uint32_t rx_nss[NSS_CHAINS_BAND_MAX];
1760*5113495bSYour Name 	uint32_t num_tx_chains_11b;
1761*5113495bSYour Name 	uint32_t num_tx_chains_11g;
1762*5113495bSYour Name 	uint32_t num_tx_chains_11a;
1763*5113495bSYour Name 	bool disable_rx_mrc[NSS_CHAINS_BAND_MAX];
1764*5113495bSYour Name 	bool disable_tx_mrc[NSS_CHAINS_BAND_MAX];
1765*5113495bSYour Name 	bool enable_dynamic_nss_chains_cfg;
1766*5113495bSYour Name 	bool restart_sap_on_dyn_nss_chains_cfg;
1767*5113495bSYour Name };
1768*5113495bSYour Name 
1769*5113495bSYour Name /**
1770*5113495bSYour Name  * enum station_keepalive_method - available keepalive methods for stations
1771*5113495bSYour Name  * @MLME_STA_KEEPALIVE_MIN: ensure KEEPALIVE_NULL or ARP are not values of 0
1772*5113495bSYour Name  * @MLME_STA_KEEPALIVE_NULL_DATA: null data packet
1773*5113495bSYour Name  * @MLME_STA_KEEPALIVE_GRAT_ARP: gratuitous ARP packet
1774*5113495bSYour Name  * @MLME_STA_KEEPALIVE_UNSOLICIT_ARP_RSP: unsolicited  ARP response packet
1775*5113495bSYour Name  * @MLME_STA_KEEPALIVE_COUNT: number of method options available
1776*5113495bSYour Name  */
1777*5113495bSYour Name enum station_keepalive_method {
1778*5113495bSYour Name 	MLME_STA_KEEPALIVE_MIN,
1779*5113495bSYour Name 	MLME_STA_KEEPALIVE_NULL_DATA = 1,
1780*5113495bSYour Name 	MLME_STA_KEEPALIVE_GRAT_ARP = 2,
1781*5113495bSYour Name 	MLME_STA_KEEPALIVE_UNSOLICIT_ARP_RSP = 3,
1782*5113495bSYour Name 	/* keep at the end */
1783*5113495bSYour Name 	MLME_STA_KEEPALIVE_COUNT
1784*5113495bSYour Name };
1785*5113495bSYour Name 
1786*5113495bSYour Name /**
1787*5113495bSYour Name  * enum station_prefer_bw - Station preferred bandwidth to connect AP
1788*5113495bSYour Name  * @STA_PREFER_BW_DEFAULT: Station connects AP with its max bw capability.
1789*5113495bSYour Name  * @STA_PREFER_BW_VHT80MHZ: Station connects in VHT 80MHz 2x2 when AP is in
1790*5113495bSYour Name  *				160MHz 2x2
1791*5113495bSYour Name  * @STA_PREFER_BW_80MHZ: Station connects in 80MHz when AP is in 160MHz
1792*5113495bSYour Name  */
1793*5113495bSYour Name enum station_prefer_bw {
1794*5113495bSYour Name 	STA_PREFER_BW_DEFAULT,
1795*5113495bSYour Name 	STA_PREFER_BW_VHT80MHZ,
1796*5113495bSYour Name 	STA_PREFER_BW_80MHZ
1797*5113495bSYour Name };
1798*5113495bSYour Name 
1799*5113495bSYour Name /**
1800*5113495bSYour Name  * struct wlan_mlme_sta_cfg - MLME STA configuration items
1801*5113495bSYour Name  * @sta_keep_alive_period:          Sends NULL frame to AP period
1802*5113495bSYour Name  * @bss_max_idle_period:            BSS max idle period
1803*5113495bSYour Name  * @tgt_gtx_usr_cfg:                Target gtx user config
1804*5113495bSYour Name  * @pmkid_modes:                    Enable PMKID modes
1805*5113495bSYour Name  * @wait_cnf_timeout:               Wait assoc cnf timeout
1806*5113495bSYour Name  * @sta_miracast_mcc_rest_time:     STA+MIRACAST(P2P) MCC rest time
1807*5113495bSYour Name  * @dot11p_mode:                    Set 802.11p mode
1808*5113495bSYour Name  * @fils_max_chan_guard_time:       Set maximum channel guard time
1809*5113495bSYour Name  * @current_rssi:                   Current rssi
1810*5113495bSYour Name  * @deauth_retry_cnt:               Deauth retry count
1811*5113495bSYour Name  * @sta_prefer_80mhz_over_160mhz:   Set Sta preference to connect in 80HZ/160HZ
1812*5113495bSYour Name  * @ignore_peer_erp_info:           Ignore peer information
1813*5113495bSYour Name  * @enable_5g_ebt:                  Set default 5G early beacon termination
1814*5113495bSYour Name  * @deauth_before_connection:       Send deauth before connection or not
1815*5113495bSYour Name  * @enable_go_cts2self_for_sta:     Stop NOA and start using cts2self
1816*5113495bSYour Name  * @qcn_ie_support:                 QCN IE support
1817*5113495bSYour Name  * @force_rsne_override:            Force rsnie override from user
1818*5113495bSYour Name  * @single_tid:                     Set replay counter for all TID
1819*5113495bSYour Name  * @allow_tpc_from_ap:              Support for AP power constraint
1820*5113495bSYour Name  * @sta_keepalive_method:           STA keepalive method
1821*5113495bSYour Name  * @usr_disabled_roaming:           User disable roaming for current connection
1822*5113495bSYour Name  * @usr_scan_probe_unicast_ra:      User config unicast probe req in scan
1823*5113495bSYour Name  * @event_payload:                  Diagnostic event payload
1824*5113495bSYour Name  * @max_li_modulated_dtim_time_ms:  Max modulated DTIM time in ms.
1825*5113495bSYour Name  * @mlo_same_link_mld_address:      Use one of the links same as mld address
1826*5113495bSYour Name  * @user_set_link_num:              save link num set by vendor command
1827*5113495bSYour Name  * @mlo_support_link_num:           max number of links that sta mlo supports
1828*5113495bSYour Name  * @mlo_support_link_band:          band bitmap that sta mlo supports
1829*5113495bSYour Name  * @mlo_max_simultaneous_links:     number of simultaneous links
1830*5113495bSYour Name  * @mlo_prefer_percentage:          percentage to boost/reduce mlo scoring
1831*5113495bSYour Name  * @mlo_5gl_5gh_mlsr:               enable/disable 5GL+5GH MLSR
1832*5113495bSYour Name  * @epcs_capability:                epcs capability enable or disable flag
1833*5113495bSYour Name  * @usr_disable_eht:                user disable the eht for STA
1834*5113495bSYour Name  * @eht_disable_punct_in_us_lpi:    Disable eht puncture in us lpi mode
1835*5113495bSYour Name  */
1836*5113495bSYour Name struct wlan_mlme_sta_cfg {
1837*5113495bSYour Name 	uint32_t sta_keep_alive_period;
1838*5113495bSYour Name 	uint32_t bss_max_idle_period;
1839*5113495bSYour Name 	uint32_t tgt_gtx_usr_cfg;
1840*5113495bSYour Name 	uint32_t pmkid_modes;
1841*5113495bSYour Name 	uint32_t wait_cnf_timeout;
1842*5113495bSYour Name 	uint32_t sta_miracast_mcc_rest_time;
1843*5113495bSYour Name 	enum dot11p_mode dot11p_mode;
1844*5113495bSYour Name 	uint8_t fils_max_chan_guard_time;
1845*5113495bSYour Name 	uint8_t current_rssi;
1846*5113495bSYour Name 	uint8_t deauth_retry_cnt;
1847*5113495bSYour Name 	uint8_t sta_prefer_80mhz_over_160mhz;
1848*5113495bSYour Name 	bool ignore_peer_erp_info;
1849*5113495bSYour Name 	bool enable_5g_ebt;
1850*5113495bSYour Name 	bool deauth_before_connection;
1851*5113495bSYour Name 	bool enable_go_cts2self_for_sta;
1852*5113495bSYour Name 	bool qcn_ie_support;
1853*5113495bSYour Name 	bool single_tid;
1854*5113495bSYour Name 	bool allow_tpc_from_ap;
1855*5113495bSYour Name 	enum station_keepalive_method sta_keepalive_method;
1856*5113495bSYour Name 	bool usr_disabled_roaming;
1857*5113495bSYour Name 	bool usr_scan_probe_unicast_ra;
1858*5113495bSYour Name #ifdef FEATURE_WLAN_DIAG_SUPPORT_CSR
1859*5113495bSYour Name 	host_event_wlan_status_payload_type event_payload;
1860*5113495bSYour Name #endif
1861*5113495bSYour Name 	uint16_t max_li_modulated_dtim_time_ms;
1862*5113495bSYour Name #ifdef WLAN_FEATURE_11BE_MLO
1863*5113495bSYour Name 	bool mlo_same_link_mld_address;
1864*5113495bSYour Name 	uint8_t user_set_link_num;
1865*5113495bSYour Name 	uint8_t mlo_support_link_num;
1866*5113495bSYour Name 	uint8_t mlo_support_link_band;
1867*5113495bSYour Name 	uint8_t mlo_max_simultaneous_links;
1868*5113495bSYour Name 	int8_t mlo_prefer_percentage;
1869*5113495bSYour Name 	bool mlo_5gl_5gh_mlsr;
1870*5113495bSYour Name #endif
1871*5113495bSYour Name #ifdef WLAN_FEATURE_11BE
1872*5113495bSYour Name 	bool epcs_capability;
1873*5113495bSYour Name 	bool usr_disable_eht;
1874*5113495bSYour Name 	bool eht_disable_punct_in_us_lpi;
1875*5113495bSYour Name #endif
1876*5113495bSYour Name };
1877*5113495bSYour Name 
1878*5113495bSYour Name /**
1879*5113495bSYour Name  * struct wlan_mlme_stats_cfg - MLME stats configuration items
1880*5113495bSYour Name  * @stats_periodic_display_time: time after which stats will be printed
1881*5113495bSYour Name  * @stats_link_speed_rssi_high: rssi link speed, high
1882*5113495bSYour Name  * @stats_link_speed_rssi_med: medium rssi link speed
1883*5113495bSYour Name  * @stats_link_speed_rssi_low: rssi link speed, low
1884*5113495bSYour Name  * @stats_report_max_link_speed_rssi: report speed limit
1885*5113495bSYour Name  */
1886*5113495bSYour Name struct wlan_mlme_stats_cfg {
1887*5113495bSYour Name 	uint32_t stats_periodic_display_time;
1888*5113495bSYour Name 	int stats_link_speed_rssi_high;
1889*5113495bSYour Name 	int stats_link_speed_rssi_med;
1890*5113495bSYour Name 	int stats_link_speed_rssi_low;
1891*5113495bSYour Name 	uint32_t stats_report_max_link_speed_rssi;
1892*5113495bSYour Name };
1893*5113495bSYour Name 
1894*5113495bSYour Name /**
1895*5113495bSYour Name  * enum roaming_dfs_channel_type - Allow dfs channel in roam
1896*5113495bSYour Name  * @ROAMING_DFS_CHANNEL_DISABLED:   Disallow dfs channel in roam
1897*5113495bSYour Name  * @ROAMING_DFS_CHANNEL_ENABLED_NORMAL: Allow dfs channel
1898*5113495bSYour Name  * @ROAMING_DFS_CHANNEL_ENABLED_ACTIVE: Allow dfs channel with active scan
1899*5113495bSYour Name  */
1900*5113495bSYour Name enum roaming_dfs_channel_type {
1901*5113495bSYour Name 	ROAMING_DFS_CHANNEL_DISABLED,
1902*5113495bSYour Name 	ROAMING_DFS_CHANNEL_ENABLED_NORMAL,
1903*5113495bSYour Name 	ROAMING_DFS_CHANNEL_ENABLED_ACTIVE,
1904*5113495bSYour Name };
1905*5113495bSYour Name 
1906*5113495bSYour Name /**
1907*5113495bSYour Name  * struct bss_load_trigger - parameters related to bss load triggered roam
1908*5113495bSYour Name  * @enabled: flag to check if this trigger is enabled/disabled
1909*5113495bSYour Name  * @threshold: Bss load threshold value above which roaming should start
1910*5113495bSYour Name  * @sample_time: Time duration in milliseconds for which the bss load value
1911*5113495bSYour Name  * should be monitored
1912*5113495bSYour Name  * @rssi_threshold_6ghz: RSSI threshold of the current connected AP below which
1913*5113495bSYour Name  * roam should be triggered if bss load threshold exceeds the configured value.
1914*5113495bSYour Name  * This value is applicable only when we are connected in 6GHz band.
1915*5113495bSYour Name  * @rssi_threshold_5ghz: RSSI threshold of the current connected AP below which
1916*5113495bSYour Name  * roam should be triggered if bss load threshold exceeds the configured value.
1917*5113495bSYour Name  * This value is applicable only when we are connected in 5GHz band.
1918*5113495bSYour Name  * @rssi_threshold_24ghz: RSSI threshold of the current connected AP below which
1919*5113495bSYour Name  * roam should be triggered if bss load threshold exceeds the configured value.
1920*5113495bSYour Name  * This value is applicable only when we are connected in 2.4 GHz band.
1921*5113495bSYour Name  */
1922*5113495bSYour Name struct bss_load_trigger {
1923*5113495bSYour Name 	bool enabled;
1924*5113495bSYour Name 	uint32_t threshold;
1925*5113495bSYour Name 	uint32_t sample_time;
1926*5113495bSYour Name 	uint32_t rssi_threshold_6ghz;
1927*5113495bSYour Name 	int32_t rssi_threshold_5ghz;
1928*5113495bSYour Name 	int32_t rssi_threshold_24ghz;
1929*5113495bSYour Name };
1930*5113495bSYour Name 
1931*5113495bSYour Name /*
1932*5113495bSYour Name  * AKM suites supported by firmware for roaming
1933*5113495bSYour Name  */
1934*5113495bSYour Name #define AKM_FT_SAE           0
1935*5113495bSYour Name #define AKM_FT_SUITEB_SHA384 1
1936*5113495bSYour Name #define AKM_FT_FILS          2
1937*5113495bSYour Name #define AKM_SAE              3
1938*5113495bSYour Name #define AKM_OWE              4
1939*5113495bSYour Name #define AKM_SUITEB           5
1940*5113495bSYour Name #define AKM_SAE_EXT          6
1941*5113495bSYour Name 
1942*5113495bSYour Name #define LFR3_STA_ROAM_DISABLE_BY_P2P BIT(0)
1943*5113495bSYour Name #define LFR3_STA_ROAM_DISABLE_BY_NAN BIT(1)
1944*5113495bSYour Name 
1945*5113495bSYour Name /**
1946*5113495bSYour Name  * struct fw_scan_channels  - Channel details part of VDEV set PCL command
1947*5113495bSYour Name  * @num_channels: Number of channels
1948*5113495bSYour Name  * @freq: Channel Frequency list
1949*5113495bSYour Name  */
1950*5113495bSYour Name struct fw_scan_channels {
1951*5113495bSYour Name 	uint8_t num_channels;
1952*5113495bSYour Name 	uint32_t freq[NUM_CHANNELS];
1953*5113495bSYour Name };
1954*5113495bSYour Name 
1955*5113495bSYour Name /**
1956*5113495bSYour Name  * struct wlan_mlme_lfr_cfg - MLME LMAC fast roaming config
1957*5113495bSYour Name  * @mawc_roam_enabled: Enable/Disable MAWC during roaming
1958*5113495bSYour Name  * @enable_fast_roam_in_concurrency: Enable LFR roaming on STA during
1959*5113495bSYour Name  *                                   concurrency
1960*5113495bSYour Name  * @vendor_btm_param: Vendor WTC roam trigger parameters
1961*5113495bSYour Name  * @roam_rt_stats: Roam event stats vendor command parameters
1962*5113495bSYour Name  * @lfr3_roaming_offload: Enable/disable roam offload feature
1963*5113495bSYour Name  * @lfr3_dual_sta_roaming_enabled: Enable/Disable dual sta roaming offload
1964*5113495bSYour Name  *                                 feature
1965*5113495bSYour Name  * @enable_self_bss_roam: enable roaming to connected BSSID
1966*5113495bSYour Name  * @enable_disconnect_roam_offload: enable disassoc/deauth roam scan.
1967*5113495bSYour Name  * @enable_idle_roam: flag to enable/disable idle roam in fw
1968*5113495bSYour Name  * @idle_roam_rssi_delta: rssi delta of connected ap which is used to
1969*5113495bSYour Name  *                        identify if the AP is idle or in motion
1970*5113495bSYour Name  * @idle_roam_inactive_time: Timeout value in seconds, above which the
1971*5113495bSYour Name  *                           connection is idle
1972*5113495bSYour Name  * @idle_data_packet_count: data packet count measured during inactive time,
1973*5113495bSYour Name  *                          below which the connection is idle.
1974*5113495bSYour Name  * @idle_roam_band: Bands on which idle roam scan is allowed
1975*5113495bSYour Name  * @idle_roam_min_rssi: Minimum rssi of connected AP to be considered for
1976*5113495bSYour Name  *                      idle roam trigger.
1977*5113495bSYour Name  * @enable_roam_reason_vsie: Enable/disable incluison of roam reason
1978*5113495bSYour Name  *                           vsie in Re(assoc) frame
1979*5113495bSYour Name  * @roam_trigger_bitmap: Bitmap of roaming triggers.
1980*5113495bSYour Name  * @sta_roam_disable: STA roaming disabled by interfaces
1981*5113495bSYour Name  * @roam_info_stats_num: STA roaming information cache number
1982*5113495bSYour Name  * @roam_high_rssi_delta: Delta change in high RSSI at which roam scan is
1983*5113495bSYour Name  * triggered in 2.4/5 GHz.
1984*5113495bSYour Name  * @early_stop_scan_enable: Set early stop scan
1985*5113495bSYour Name  * @enable_5g_band_pref: Enable preference for 5G from INI
1986*5113495bSYour Name  * @ese_enabled: Enable ESE feature
1987*5113495bSYour Name  * @lfr_enabled: Enable fast roaming
1988*5113495bSYour Name  * @mawc_enabled: Enable MAWC
1989*5113495bSYour Name  * @fast_transition_enabled: Enable fast transition
1990*5113495bSYour Name  * @wes_mode_enabled: Enable WES mode
1991*5113495bSYour Name  * @mawc_roam_traffic_threshold: Configure traffic threshold
1992*5113495bSYour Name  * @mawc_roam_ap_rssi_threshold: Best AP RSSI threshold
1993*5113495bSYour Name  * @mawc_roam_rssi_high_adjust: Adjust MAWC roam high RSSI
1994*5113495bSYour Name  * @mawc_roam_rssi_low_adjust: Adjust MAWC roam low RSSI
1995*5113495bSYour Name  * @roam_rssi_abs_threshold: The min RSSI of the candidate AP
1996*5113495bSYour Name  * @rssi_threshold_offset_5g: Lookup threshold offset for 5G band
1997*5113495bSYour Name  * @early_stop_scan_min_threshold: Set early stop scan min
1998*5113495bSYour Name  * @early_stop_scan_max_threshold: Set early stop scan max
1999*5113495bSYour Name  * @roam_dense_traffic_threshold: Dense traffic threshold
2000*5113495bSYour Name  * @roam_dense_rssi_thre_offset: Sets dense roam RSSI threshold diff
2001*5113495bSYour Name  * @roam_dense_min_aps: Sets minimum number of AP for dense roam
2002*5113495bSYour Name  * @roam_bg_scan_bad_rssi_threshold:RSSI threshold for background roam
2003*5113495bSYour Name  * @roam_bg_scan_client_bitmap: Bitmap used to identify the scan clients
2004*5113495bSYour Name  * @roam_bg_scan_bad_rssi_offset_2g:RSSI threshold offset for 2G to 5G roam
2005*5113495bSYour Name  * @roam_data_rssi_threshold_triggers: triggers of bad data RSSI threshold to
2006*5113495bSYour Name  *                                     roam
2007*5113495bSYour Name  * @roam_data_rssi_threshold: Bad data RSSI threshold to roam
2008*5113495bSYour Name  * @rx_data_inactivity_time: Rx duration to check data RSSI
2009*5113495bSYour Name  * @adaptive_roamscan_dwell_mode: Sets dwell time adaptive mode
2010*5113495bSYour Name  * @per_roam_enable: To enabled/disable PER based roaming in FW
2011*5113495bSYour Name  * @per_roam_config_high_rate_th: Rate at which PER based roam will stop
2012*5113495bSYour Name  * @per_roam_config_low_rate_th: Rate at which PER based roam will start
2013*5113495bSYour Name  * @per_roam_config_rate_th_percent:Percentage at which FW will issue roam scan
2014*5113495bSYour Name  * @per_roam_rest_time: FW will wait once it issues a roam scan.
2015*5113495bSYour Name  * @per_roam_monitor_time: Min time to be considered as valid scenario
2016*5113495bSYour Name  * @per_roam_min_candidate_rssi: Min roamable AP RSSI for candidate selection
2017*5113495bSYour Name  * @lfr3_disallow_duration: Disallow duration before roaming
2018*5113495bSYour Name  * @lfr3_rssi_channel_penalization: RSSI penalization
2019*5113495bSYour Name  * @lfr3_num_disallowed_aps: Max number of AP's to maintain in LCA list
2020*5113495bSYour Name  * @rssi_boost_threshold_5g: Boost threshold above which 5 GHz is favored
2021*5113495bSYour Name  * @rssi_boost_factor_5g: Factor by which 5GHz RSSI is boosted
2022*5113495bSYour Name  * @max_rssi_boost_5g: Maximum boost that can be applied to 5G RSSI
2023*5113495bSYour Name  * @rssi_penalize_threshold_5g: Penalize thres above which 5G isn't favored
2024*5113495bSYour Name  * @rssi_penalize_factor_5g: Factor by which 5GHz RSSI is penalizeed
2025*5113495bSYour Name  * @max_rssi_penalize_5g: Max penalty that can be applied to 5G RSSI
2026*5113495bSYour Name  * @max_num_pre_auth: Configure max number of pre-auth
2027*5113495bSYour Name  * @roam_preauth_retry_count: Configure the max number of preauth retry
2028*5113495bSYour Name  * @roam_preauth_no_ack_timeout: Configure the no ack timeout period
2029*5113495bSYour Name  * @roam_rssi_diff: Enable roam based on rssi
2030*5113495bSYour Name  * @roam_rssi_diff_6ghz: RSSI diff value to be used for roaming to 6 GHz AP.
2031*5113495bSYour Name  * @bg_rssi_threshold: Background RSSI threshold
2032*5113495bSYour Name  * @roam_scan_offload_enabled: Enable Roam Scan Offload
2033*5113495bSYour Name  * @neighbor_scan_timer_period: Neighbor scan timer period
2034*5113495bSYour Name  * @neighbor_scan_min_timer_period: Min neighbor scan timer period
2035*5113495bSYour Name  * @neighbor_lookup_rssi_threshold: Neighbor lookup rssi threshold
2036*5113495bSYour Name  * @opportunistic_scan_threshold_diff: Set oppurtunistic threshold diff
2037*5113495bSYour Name  * @roam_rescan_rssi_diff: Sets RSSI for Scan trigger in firmware
2038*5113495bSYour Name  * @neighbor_scan_min_chan_time: Neighbor scan channel min time
2039*5113495bSYour Name  * @neighbor_scan_max_chan_time: Neighbor scan channel max time
2040*5113495bSYour Name  * @passive_max_channel_time: Passive scan channel max time
2041*5113495bSYour Name  * @neighbor_scan_results_refresh_period: Neighbor scan refresh period
2042*5113495bSYour Name  * @empty_scan_refresh_period: Empty scan refresh period
2043*5113495bSYour Name  * @roam_bmiss_first_bcnt: First beacon miss count
2044*5113495bSYour Name  * @roam_bmiss_final_bcnt: Final beacon miss count
2045*5113495bSYour Name  * @roam_beacon_rssi_weight: Beacon miss weight
2046*5113495bSYour Name  * @roaming_dfs_channel: Allow dfs channel in roam
2047*5113495bSYour Name  * @roam_scan_hi_rssi_maxcount: 5GHz maximum scan count
2048*5113495bSYour Name  * @roam_scan_hi_rssi_delta: RSSI Delta for scan trigger
2049*5113495bSYour Name  * @roam_scan_hi_rssi_delay: Minimum delay between 5GHz scans
2050*5113495bSYour Name  * @roam_scan_hi_rssi_ub: Upper bound after which 5GHz scan
2051*5113495bSYour Name  * @roam_prefer_5ghz: Prefer roaming to 5GHz Bss
2052*5113495bSYour Name  * @roam_intra_band: Prefer roaming within Band
2053*5113495bSYour Name  * @enable_adaptive_11r: Flag to check if adaptive 11r ini is enabled
2054*5113495bSYour Name  * @tgt_adaptive_11r_cap: Flag to check if target supports adaptive 11r
2055*5113495bSYour Name  * @enable_ft_im_roaming: Flag to enable/disable FT-IM roaming
2056*5113495bSYour Name  * @roam_scan_home_away_time: The home away time to firmware
2057*5113495bSYour Name  * @roam_scan_n_probes: The number of probes to be sent for firmware roaming
2058*5113495bSYour Name  * @delay_before_vdev_stop: Wait time for tx complete before vdev stop
2059*5113495bSYour Name  * @neighbor_scan_channel_list: Neighbor scan channel list
2060*5113495bSYour Name  * @neighbor_scan_channel_list_num: Neighbor scan channel list number
2061*5113495bSYour Name  * @enable_lfr_subnet_detection: Enable LFR3 subnet detection
2062*5113495bSYour Name  * @ho_delay_for_rx: Delay hand-off by this duration to receive
2063*5113495bSYour Name  * @min_delay_btw_roam_scans: Min duration
2064*5113495bSYour Name  * @roam_trigger_reason_bitmask: Contains roam_trigger_reasons
2065*5113495bSYour Name  * @enable_ftopen: Enable/disable FT open feature
2066*5113495bSYour Name  * @roam_force_rssi_trigger: Force RSSI trigger or not
2067*5113495bSYour Name  * @bss_load_trig: configuration of BSS load roam trigger
2068*5113495bSYour Name  * @roaming_scan_policy: Config roaming scan policy in fw
2069*5113495bSYour Name  * @roam_scan_inactivity_time: Device inactivity monitoring time in
2070*5113495bSYour Name  * milliseconds for which the device is considered to be inactive.
2071*5113495bSYour Name  * @roam_inactive_data_packet_count: Maximum allowed data packets count
2072*5113495bSYour Name  * during roam_scan_inactivity_time.
2073*5113495bSYour Name  * @fw_akm_bitmap: Supported Akm suites of firmware
2074*5113495bSYour Name  * @roam_full_scan_period: Idle period in seconds between two successive
2075*5113495bSYour Name  * full channel roam scans
2076*5113495bSYour Name  * @saved_freq_list: Valid channel list
2077*5113495bSYour Name  * @sae_single_pmk_feature_enabled: Contains value of ini
2078*5113495bSYour Name  * sae_single_pmk_feature_enabled
2079*5113495bSYour Name  * @rso_user_config: RSO user config
2080*5113495bSYour Name  * @enable_ft_over_ds: Enable FT over DS
2081*5113495bSYour Name  * @beaconloss_timeout_onwakeup: time in sec to configure FW BMISS event
2082*5113495bSYour Name  * during wakeup.
2083*5113495bSYour Name  * @beaconloss_timeout_onsleep: time in sec to configure FW BMISS event
2084*5113495bSYour Name  * during sleep.
2085*5113495bSYour Name  * @roam_ho_delay_config: Roam HO delay value
2086*5113495bSYour Name  * @exclude_rm_partial_scan_freq: Exclude the channels in roam full scan that
2087*5113495bSYour Name  * are already scanned as part of partial scan.
2088*5113495bSYour Name  * @roam_full_scan_6ghz_on_disc: Include the 6 GHz channels in roam full scan
2089*5113495bSYour Name  * only on prior discovery of any 6 GHz support in the environment.
2090*5113495bSYour Name  * @disconnect_on_nud_roam_invoke_fail: indicate whether disconnect ap when
2091*5113495bSYour Name  * roam invoke fail on nud.
2092*5113495bSYour Name  * @hs20_btm_offload_disable: indicate whether btm offload is enable/disable
2093*5113495bSYour Name  * for Hotspot 2.0
2094*5113495bSYour Name  */
2095*5113495bSYour Name struct wlan_mlme_lfr_cfg {
2096*5113495bSYour Name 	bool mawc_roam_enabled;
2097*5113495bSYour Name 	bool enable_fast_roam_in_concurrency;
2098*5113495bSYour Name #ifdef WLAN_FEATURE_ROAM_OFFLOAD
2099*5113495bSYour Name 	struct wlan_cm_roam_vendor_btm_params vendor_btm_param;
2100*5113495bSYour Name 	struct wlan_cm_roam_rt_stats roam_rt_stats;
2101*5113495bSYour Name 	bool lfr3_roaming_offload;
2102*5113495bSYour Name 	bool lfr3_dual_sta_roaming_enabled;
2103*5113495bSYour Name 	bool enable_self_bss_roam;
2104*5113495bSYour Name 	bool enable_disconnect_roam_offload;
2105*5113495bSYour Name 	bool enable_idle_roam;
2106*5113495bSYour Name 	uint32_t idle_roam_rssi_delta;
2107*5113495bSYour Name 	uint32_t idle_roam_inactive_time;
2108*5113495bSYour Name 	uint32_t idle_data_packet_count;
2109*5113495bSYour Name 	uint32_t idle_roam_band;
2110*5113495bSYour Name 	int32_t idle_roam_min_rssi;
2111*5113495bSYour Name 	bool enable_roam_reason_vsie;
2112*5113495bSYour Name 	uint32_t roam_trigger_bitmap;
2113*5113495bSYour Name 	uint32_t sta_roam_disable;
2114*5113495bSYour Name 	uint32_t roam_info_stats_num;
2115*5113495bSYour Name 	uint8_t roam_high_rssi_delta;
2116*5113495bSYour Name #endif
2117*5113495bSYour Name 	bool early_stop_scan_enable;
2118*5113495bSYour Name 	bool enable_5g_band_pref;
2119*5113495bSYour Name #ifdef FEATURE_WLAN_ESE
2120*5113495bSYour Name 	bool ese_enabled;
2121*5113495bSYour Name #endif
2122*5113495bSYour Name 	bool lfr_enabled;
2123*5113495bSYour Name 	bool mawc_enabled;
2124*5113495bSYour Name 	bool fast_transition_enabled;
2125*5113495bSYour Name 	bool wes_mode_enabled;
2126*5113495bSYour Name 	uint32_t mawc_roam_traffic_threshold;
2127*5113495bSYour Name 	uint32_t mawc_roam_ap_rssi_threshold;
2128*5113495bSYour Name 	uint8_t mawc_roam_rssi_high_adjust;
2129*5113495bSYour Name 	uint8_t mawc_roam_rssi_low_adjust;
2130*5113495bSYour Name 	uint32_t roam_rssi_abs_threshold;
2131*5113495bSYour Name 	uint8_t rssi_threshold_offset_5g;
2132*5113495bSYour Name 	int8_t early_stop_scan_min_threshold;
2133*5113495bSYour Name 	int8_t early_stop_scan_max_threshold;
2134*5113495bSYour Name 	uint32_t roam_dense_traffic_threshold;
2135*5113495bSYour Name 	uint32_t roam_dense_rssi_thre_offset;
2136*5113495bSYour Name 	uint32_t roam_dense_min_aps;
2137*5113495bSYour Name 	uint32_t roam_bg_scan_bad_rssi_threshold;
2138*5113495bSYour Name 	uint32_t roam_bg_scan_client_bitmap;
2139*5113495bSYour Name 	uint32_t roam_bg_scan_bad_rssi_offset_2g;
2140*5113495bSYour Name 	uint32_t roam_data_rssi_threshold_triggers;
2141*5113495bSYour Name 	int32_t roam_data_rssi_threshold;
2142*5113495bSYour Name 	uint32_t rx_data_inactivity_time;
2143*5113495bSYour Name 	uint32_t adaptive_roamscan_dwell_mode;
2144*5113495bSYour Name 	uint32_t per_roam_enable;
2145*5113495bSYour Name 	uint32_t per_roam_config_high_rate_th;
2146*5113495bSYour Name 	uint32_t per_roam_config_low_rate_th;
2147*5113495bSYour Name 	uint32_t per_roam_config_rate_th_percent;
2148*5113495bSYour Name 	uint32_t per_roam_rest_time;
2149*5113495bSYour Name 	uint32_t per_roam_monitor_time;
2150*5113495bSYour Name 	uint32_t per_roam_min_candidate_rssi;
2151*5113495bSYour Name 	uint32_t lfr3_disallow_duration;
2152*5113495bSYour Name 	uint32_t lfr3_rssi_channel_penalization;
2153*5113495bSYour Name 	uint32_t lfr3_num_disallowed_aps;
2154*5113495bSYour Name 	uint32_t rssi_boost_threshold_5g;
2155*5113495bSYour Name 	uint32_t rssi_boost_factor_5g;
2156*5113495bSYour Name 	uint32_t max_rssi_boost_5g;
2157*5113495bSYour Name 	uint32_t rssi_penalize_threshold_5g;
2158*5113495bSYour Name 	uint32_t rssi_penalize_factor_5g;
2159*5113495bSYour Name 	uint32_t max_rssi_penalize_5g;
2160*5113495bSYour Name 	uint32_t max_num_pre_auth;
2161*5113495bSYour Name 	uint32_t roam_preauth_retry_count;
2162*5113495bSYour Name 	uint32_t roam_preauth_no_ack_timeout;
2163*5113495bSYour Name 	uint8_t roam_rssi_diff;
2164*5113495bSYour Name 	uint8_t roam_rssi_diff_6ghz;
2165*5113495bSYour Name 	uint8_t bg_rssi_threshold;
2166*5113495bSYour Name 	bool roam_scan_offload_enabled;
2167*5113495bSYour Name 	uint32_t neighbor_scan_timer_period;
2168*5113495bSYour Name 	uint32_t neighbor_scan_min_timer_period;
2169*5113495bSYour Name 	uint32_t neighbor_lookup_rssi_threshold;
2170*5113495bSYour Name 	uint32_t opportunistic_scan_threshold_diff;
2171*5113495bSYour Name 	uint32_t roam_rescan_rssi_diff;
2172*5113495bSYour Name 	uint16_t neighbor_scan_min_chan_time;
2173*5113495bSYour Name 	uint16_t neighbor_scan_max_chan_time;
2174*5113495bSYour Name 	uint32_t passive_max_channel_time;
2175*5113495bSYour Name 	uint32_t neighbor_scan_results_refresh_period;
2176*5113495bSYour Name 	uint32_t empty_scan_refresh_period;
2177*5113495bSYour Name 	uint8_t roam_bmiss_first_bcnt;
2178*5113495bSYour Name 	uint8_t roam_bmiss_final_bcnt;
2179*5113495bSYour Name 	enum roaming_dfs_channel_type roaming_dfs_channel;
2180*5113495bSYour Name 	uint32_t roam_scan_hi_rssi_maxcount;
2181*5113495bSYour Name 	uint32_t roam_scan_hi_rssi_delta;
2182*5113495bSYour Name 	uint32_t roam_scan_hi_rssi_delay;
2183*5113495bSYour Name 	uint32_t roam_scan_hi_rssi_ub;
2184*5113495bSYour Name 	bool roam_prefer_5ghz;
2185*5113495bSYour Name 	bool roam_intra_band;
2186*5113495bSYour Name #ifdef WLAN_ADAPTIVE_11R
2187*5113495bSYour Name 	bool enable_adaptive_11r;
2188*5113495bSYour Name 	bool tgt_adaptive_11r_cap;
2189*5113495bSYour Name #endif
2190*5113495bSYour Name 	bool enable_ft_im_roaming;
2191*5113495bSYour Name 	uint16_t roam_scan_home_away_time;
2192*5113495bSYour Name 	uint32_t roam_scan_n_probes;
2193*5113495bSYour Name 	uint8_t delay_before_vdev_stop;
2194*5113495bSYour Name 	uint8_t neighbor_scan_channel_list[CFG_VALID_CHANNEL_LIST_LEN];
2195*5113495bSYour Name 	uint8_t neighbor_scan_channel_list_num;
2196*5113495bSYour Name #ifdef FEATURE_LFR_SUBNET_DETECTION
2197*5113495bSYour Name 	bool enable_lfr_subnet_detection;
2198*5113495bSYour Name #endif
2199*5113495bSYour Name 	uint8_t ho_delay_for_rx;
2200*5113495bSYour Name 	uint8_t min_delay_btw_roam_scans;
2201*5113495bSYour Name 	uint32_t roam_trigger_reason_bitmask;
2202*5113495bSYour Name 	bool enable_ftopen;
2203*5113495bSYour Name 	bool roam_force_rssi_trigger;
2204*5113495bSYour Name 	struct bss_load_trigger bss_load_trig;
2205*5113495bSYour Name 	bool roaming_scan_policy;
2206*5113495bSYour Name 	uint32_t roam_scan_inactivity_time;
2207*5113495bSYour Name 	uint32_t roam_inactive_data_packet_count;
2208*5113495bSYour Name 	uint32_t fw_akm_bitmap;
2209*5113495bSYour Name 	uint32_t roam_full_scan_period;
2210*5113495bSYour Name 	struct fw_scan_channels saved_freq_list;
2211*5113495bSYour Name #if defined(WLAN_SAE_SINGLE_PMK) && defined(WLAN_FEATURE_ROAM_OFFLOAD)
2212*5113495bSYour Name 	bool sae_single_pmk_feature_enabled;
2213*5113495bSYour Name #endif
2214*5113495bSYour Name 	struct rso_config_params rso_user_config;
2215*5113495bSYour Name 	bool enable_ft_over_ds;
2216*5113495bSYour Name 	uint8_t beaconloss_timeout_onwakeup;
2217*5113495bSYour Name 	uint8_t beaconloss_timeout_onsleep;
2218*5113495bSYour Name 	uint16_t roam_ho_delay_config;
2219*5113495bSYour Name 	uint8_t exclude_rm_partial_scan_freq;
2220*5113495bSYour Name 	uint8_t roam_full_scan_6ghz_on_disc;
2221*5113495bSYour Name 	bool disconnect_on_nud_roam_invoke_fail;
2222*5113495bSYour Name 	bool hs20_btm_offload_disable;
2223*5113495bSYour Name };
2224*5113495bSYour Name 
2225*5113495bSYour Name /**
2226*5113495bSYour Name  * struct wlan_mlme_wmm_config - WMM configuration
2227*5113495bSYour Name  * @wmm_mode: Enable WMM feature
2228*5113495bSYour Name  * @b80211e_is_enabled: Enable 802.11e feature
2229*5113495bSYour Name  * @uapsd_mask: what ACs to setup U-APSD for at assoc
2230*5113495bSYour Name  */
2231*5113495bSYour Name struct wlan_mlme_wmm_config {
2232*5113495bSYour Name 	uint8_t wmm_mode;
2233*5113495bSYour Name 	bool b80211e_is_enabled;
2234*5113495bSYour Name 	uint8_t uapsd_mask;
2235*5113495bSYour Name };
2236*5113495bSYour Name 
2237*5113495bSYour Name /**
2238*5113495bSYour Name  * struct wlan_mlme_wmm_tspec_element - Default TSPEC parameters
2239*5113495bSYour Name  * from the wmm spec
2240*5113495bSYour Name  * @inactivity_intv: inactivity_interval as per wmm spec
2241*5113495bSYour Name  * @burst_size_def: TS burst size
2242*5113495bSYour Name  * @ts_ack_policy: TS Info ACK policy
2243*5113495bSYour Name  * @ts_acm_is_off: ACM is off for AC
2244*5113495bSYour Name  */
2245*5113495bSYour Name struct wlan_mlme_wmm_tspec_element {
2246*5113495bSYour Name #ifdef FEATURE_WLAN_ESE
2247*5113495bSYour Name 	uint32_t inactivity_intv;
2248*5113495bSYour Name #endif
2249*5113495bSYour Name 	bool burst_size_def;
2250*5113495bSYour Name 	enum mlme_ts_info_ack_policy ts_ack_policy;
2251*5113495bSYour Name 	bool ts_acm_is_off;
2252*5113495bSYour Name };
2253*5113495bSYour Name 
2254*5113495bSYour Name /**
2255*5113495bSYour Name  * struct wlan_mlme_wmm_ac_vo - Default TSPEC parameters
2256*5113495bSYour Name  * for AC_VO
2257*5113495bSYour Name  * @dir_ac_vo: TSPEC direction for VO
2258*5113495bSYour Name  * @nom_msdu_size_ac_vo: normal MSDU size for VO
2259*5113495bSYour Name  * @mean_data_rate_ac_vo: mean data rate for VO
2260*5113495bSYour Name  * @min_phy_rate_ac_vo: min PHY rate for VO
2261*5113495bSYour Name  * @sba_ac_vo: surplus bandwidth allowance for VO
2262*5113495bSYour Name  * @uapsd_vo_srv_intv: Uapsd service interval for voice
2263*5113495bSYour Name  * @uapsd_vo_sus_intv: Uapsd suspension interval for voice
2264*5113495bSYour Name  */
2265*5113495bSYour Name struct wlan_mlme_wmm_ac_vo {
2266*5113495bSYour Name 	uint8_t dir_ac_vo;
2267*5113495bSYour Name 	uint16_t nom_msdu_size_ac_vo;
2268*5113495bSYour Name 	uint32_t mean_data_rate_ac_vo;
2269*5113495bSYour Name 	uint32_t min_phy_rate_ac_vo;
2270*5113495bSYour Name 	uint16_t sba_ac_vo;
2271*5113495bSYour Name 	uint32_t uapsd_vo_srv_intv;
2272*5113495bSYour Name 	uint32_t uapsd_vo_sus_intv;
2273*5113495bSYour Name };
2274*5113495bSYour Name 
2275*5113495bSYour Name /**
2276*5113495bSYour Name  * struct wlan_mlme_wmm_ac_vi - Default TSPEC parameters
2277*5113495bSYour Name  * for AC_VI
2278*5113495bSYour Name  * @dir_ac_vi: TSPEC direction for VI
2279*5113495bSYour Name  * @nom_msdu_size_ac_vi: normal MSDU size for VI
2280*5113495bSYour Name  * @mean_data_rate_ac_vi: mean data rate for VI
2281*5113495bSYour Name  * @min_phy_rate_ac_vi: min PHY rate for VI
2282*5113495bSYour Name  * @sba_ac_vi: surplus bandwidth allowance for VI
2283*5113495bSYour Name  * @uapsd_vi_srv_intv: Uapsd service interval for VI
2284*5113495bSYour Name  * @uapsd_vi_sus_intv: Uapsd suspension interval for VI
2285*5113495bSYour Name  */
2286*5113495bSYour Name struct wlan_mlme_wmm_ac_vi {
2287*5113495bSYour Name 	uint8_t dir_ac_vi;
2288*5113495bSYour Name 	uint16_t nom_msdu_size_ac_vi;
2289*5113495bSYour Name 	uint32_t mean_data_rate_ac_vi;
2290*5113495bSYour Name 	uint32_t min_phy_rate_ac_vi;
2291*5113495bSYour Name 	uint16_t sba_ac_vi;
2292*5113495bSYour Name 	uint32_t uapsd_vi_srv_intv;
2293*5113495bSYour Name 	uint32_t uapsd_vi_sus_intv;
2294*5113495bSYour Name };
2295*5113495bSYour Name 
2296*5113495bSYour Name /**
2297*5113495bSYour Name  * struct wlan_mlme_wmm_ac_be - Default TSPEC parameters
2298*5113495bSYour Name  * for AC_BE
2299*5113495bSYour Name  * @dir_ac_be: TSPEC direction for BE
2300*5113495bSYour Name  * @nom_msdu_size_ac_be: normal MSDU size for BE
2301*5113495bSYour Name  * @mean_data_rate_ac_be: mean data rate for BE
2302*5113495bSYour Name  * @min_phy_rate_ac_be: min PHY rate for BE
2303*5113495bSYour Name  * @sba_ac_be: surplus bandwidth allowance for BE
2304*5113495bSYour Name  * @uapsd_be_srv_intv: Uapsd service interval for BE
2305*5113495bSYour Name  * @uapsd_be_sus_intv: Uapsd suspension interval for BE
2306*5113495bSYour Name  */
2307*5113495bSYour Name struct wlan_mlme_wmm_ac_be {
2308*5113495bSYour Name 	uint8_t dir_ac_be;
2309*5113495bSYour Name 	uint16_t nom_msdu_size_ac_be;
2310*5113495bSYour Name 	uint32_t mean_data_rate_ac_be;
2311*5113495bSYour Name 	uint32_t min_phy_rate_ac_be;
2312*5113495bSYour Name 	uint16_t sba_ac_be;
2313*5113495bSYour Name 	uint32_t uapsd_be_srv_intv;
2314*5113495bSYour Name 	uint32_t uapsd_be_sus_intv;
2315*5113495bSYour Name 
2316*5113495bSYour Name };
2317*5113495bSYour Name 
2318*5113495bSYour Name /**
2319*5113495bSYour Name  * struct wlan_mlme_wmm_ac_bk - Default TSPEC parameters
2320*5113495bSYour Name  * for AC_BK
2321*5113495bSYour Name  * @dir_ac_bk: TSPEC direction for BK
2322*5113495bSYour Name  * @nom_msdu_size_ac_bk: normal MSDU size for BK
2323*5113495bSYour Name  * @mean_data_rate_ac_bk: mean data rate for BK
2324*5113495bSYour Name  * @min_phy_rate_ac_bk: min PHY rate for BK
2325*5113495bSYour Name  * @sba_ac_bk: surplus bandwidth allowance for BK
2326*5113495bSYour Name  * @uapsd_bk_srv_intv: Uapsd service interval for BK
2327*5113495bSYour Name  * @uapsd_bk_sus_intv: Uapsd suspension interval for BK
2328*5113495bSYour Name  */
2329*5113495bSYour Name struct wlan_mlme_wmm_ac_bk {
2330*5113495bSYour Name 	uint8_t dir_ac_bk;
2331*5113495bSYour Name 	uint16_t nom_msdu_size_ac_bk;
2332*5113495bSYour Name 	uint32_t mean_data_rate_ac_bk;
2333*5113495bSYour Name 	uint32_t min_phy_rate_ac_bk;
2334*5113495bSYour Name 	uint16_t sba_ac_bk;
2335*5113495bSYour Name 	uint32_t uapsd_bk_srv_intv;
2336*5113495bSYour Name 	uint32_t uapsd_bk_sus_intv;
2337*5113495bSYour Name };
2338*5113495bSYour Name 
2339*5113495bSYour Name /**
2340*5113495bSYour Name  * struct wlan_mlme_wmm_params - WMM CFG Items
2341*5113495bSYour Name  * @qos_enabled: AP is enabled with 11E
2342*5113495bSYour Name  * @wme_enabled: AP is enabled with WMM
2343*5113495bSYour Name  * @max_sp_length: Maximum SP Length
2344*5113495bSYour Name  * @wsm_enabled: AP is enabled with WSM
2345*5113495bSYour Name  * @edca_profile: WMM Edca profile
2346*5113495bSYour Name  * @wmm_config: WMM configuration
2347*5113495bSYour Name  * @wmm_tspec_element: Default TSPEC parameters
2348*5113495bSYour Name  * @ac_vo: Default TSPEC parameters for AC_VO
2349*5113495bSYour Name  * @ac_vi: Default TSPEC parameters for AC_VI
2350*5113495bSYour Name  * @ac_be: Default TSPEC parameters for AC_BE
2351*5113495bSYour Name  * @ac_bk: Default TSPEC parameters for AC_BK
2352*5113495bSYour Name  * @delayed_trigger_frm_int: delay int(in ms) of UAPSD auto trigger
2353*5113495bSYour Name  */
2354*5113495bSYour Name struct wlan_mlme_wmm_params {
2355*5113495bSYour Name 	bool qos_enabled;
2356*5113495bSYour Name 	bool wme_enabled;
2357*5113495bSYour Name 	uint8_t max_sp_length;
2358*5113495bSYour Name 	bool wsm_enabled;
2359*5113495bSYour Name 	uint32_t edca_profile;
2360*5113495bSYour Name 	struct wlan_mlme_wmm_config wmm_config;
2361*5113495bSYour Name 	struct wlan_mlme_wmm_tspec_element wmm_tspec_element;
2362*5113495bSYour Name 	struct wlan_mlme_wmm_ac_vo ac_vo;
2363*5113495bSYour Name 	struct wlan_mlme_wmm_ac_vi ac_vi;
2364*5113495bSYour Name 	struct wlan_mlme_wmm_ac_be ac_be;
2365*5113495bSYour Name 	struct wlan_mlme_wmm_ac_bk ac_bk;
2366*5113495bSYour Name 	uint32_t delayed_trigger_frm_int;
2367*5113495bSYour Name };
2368*5113495bSYour Name 
2369*5113495bSYour Name /**
2370*5113495bSYour Name  * struct wlan_mlme_weight_config - weight params to
2371*5113495bSYour Name  * calculate best candidate
2372*5113495bSYour Name  * @rssi_weightage: RSSI weightage
2373*5113495bSYour Name  * @ht_caps_weightage: HT caps weightage
2374*5113495bSYour Name  * @vht_caps_weightage: VHT caps weightage
2375*5113495bSYour Name  * @he_caps_weightage: HE caps weightage
2376*5113495bSYour Name  * @chan_width_weightage: Channel width weightage
2377*5113495bSYour Name  * @chan_band_weightage: Channel band weightage
2378*5113495bSYour Name  * @nss_weightage: NSS weightage
2379*5113495bSYour Name  * @beamforming_cap_weightage: Beamforming caps weightage
2380*5113495bSYour Name  * @pcl_weightage: PCL weightage
2381*5113495bSYour Name  * @channel_congestion_weightage: channel congestion weightage
2382*5113495bSYour Name  * @oce_wan_weightage: OCE WAN metrics weightage
2383*5113495bSYour Name  * @oce_ap_tx_pwr_weightage: weightage based on ap tx power
2384*5113495bSYour Name  * @oce_subnet_id_weightage: weightage based on subnet id
2385*5113495bSYour Name  * @sae_pk_ap_weightage:SAE-PK AP weightage
2386*5113495bSYour Name  */
2387*5113495bSYour Name struct  wlan_mlme_weight_config {
2388*5113495bSYour Name 	uint8_t rssi_weightage;
2389*5113495bSYour Name 	uint8_t ht_caps_weightage;
2390*5113495bSYour Name 	uint8_t vht_caps_weightage;
2391*5113495bSYour Name 	uint8_t he_caps_weightage;
2392*5113495bSYour Name 	uint8_t chan_width_weightage;
2393*5113495bSYour Name 	uint8_t chan_band_weightage;
2394*5113495bSYour Name 	uint8_t nss_weightage;
2395*5113495bSYour Name 	uint8_t beamforming_cap_weightage;
2396*5113495bSYour Name 	uint8_t pcl_weightage;
2397*5113495bSYour Name 	uint8_t channel_congestion_weightage;
2398*5113495bSYour Name 	uint8_t oce_wan_weightage;
2399*5113495bSYour Name 	uint8_t oce_ap_tx_pwr_weightage;
2400*5113495bSYour Name 	uint8_t oce_subnet_id_weightage;
2401*5113495bSYour Name 	uint8_t sae_pk_ap_weightage;
2402*5113495bSYour Name };
2403*5113495bSYour Name 
2404*5113495bSYour Name /**
2405*5113495bSYour Name  * struct wlan_mlme_rssi_cfg_score - RSSI params to
2406*5113495bSYour Name  * calculate best candidate
2407*5113495bSYour Name  * @best_rssi_threshold: Best RSSI threshold
2408*5113495bSYour Name  * @good_rssi_threshold: Good RSSI threshold
2409*5113495bSYour Name  * @bad_rssi_threshold: Bad RSSI threshold
2410*5113495bSYour Name  * @good_rssi_pcnt: Good RSSI Percentage
2411*5113495bSYour Name  * @bad_rssi_pcnt: Bad RSSI Percentage
2412*5113495bSYour Name  * @good_rssi_bucket_size: Good RSSI Bucket Size
2413*5113495bSYour Name  * @bad_rssi_bucket_size: Bad RSSI Bucket Size
2414*5113495bSYour Name  * @rssi_pref_5g_rssi_thresh: Preferred 5G RSSI threshold
2415*5113495bSYour Name  */
2416*5113495bSYour Name struct wlan_mlme_rssi_cfg_score  {
2417*5113495bSYour Name 	uint32_t best_rssi_threshold;
2418*5113495bSYour Name 	uint32_t good_rssi_threshold;
2419*5113495bSYour Name 	uint32_t bad_rssi_threshold;
2420*5113495bSYour Name 	uint32_t good_rssi_pcnt;
2421*5113495bSYour Name 	uint32_t bad_rssi_pcnt;
2422*5113495bSYour Name 	uint32_t good_rssi_bucket_size;
2423*5113495bSYour Name 	uint32_t bad_rssi_bucket_size;
2424*5113495bSYour Name 	uint32_t rssi_pref_5g_rssi_thresh;
2425*5113495bSYour Name };
2426*5113495bSYour Name 
2427*5113495bSYour Name /**
2428*5113495bSYour Name  * struct wlan_mlme_roam_scoring_cfg - MLME roam related scoring config
2429*5113495bSYour Name  * @enable_scoring_for_roam: Enable/disable BSS Scoring for Roaming
2430*5113495bSYour Name  * @roam_trigger_bitmap: bitmap for various roam triggers
2431*5113495bSYour Name  * @roam_score_delta: percentage delta in roam score
2432*5113495bSYour Name  * @apsd_enabled: Enable automatic power save delivery
2433*5113495bSYour Name  * @min_roam_score_delta: Minimum difference between connected AP's and
2434*5113495bSYour Name  *			candidate AP's roam score to start roaming.
2435*5113495bSYour Name  */
2436*5113495bSYour Name struct wlan_mlme_roam_scoring_cfg {
2437*5113495bSYour Name 	bool enable_scoring_for_roam;
2438*5113495bSYour Name 	uint32_t roam_trigger_bitmap;
2439*5113495bSYour Name 	uint32_t roam_score_delta;
2440*5113495bSYour Name 	bool apsd_enabled;
2441*5113495bSYour Name 	uint32_t min_roam_score_delta;
2442*5113495bSYour Name };
2443*5113495bSYour Name 
2444*5113495bSYour Name /* struct wlan_mlme_threshold - Threshold related config items
2445*5113495bSYour Name  * @rts_threshold: set rts threshold
2446*5113495bSYour Name  * @frag_threshold: set fragmentation threshold
2447*5113495bSYour Name  */
2448*5113495bSYour Name struct wlan_mlme_threshold {
2449*5113495bSYour Name 	uint32_t rts_threshold;
2450*5113495bSYour Name 	uint32_t frag_threshold;
2451*5113495bSYour Name };
2452*5113495bSYour Name 
2453*5113495bSYour Name /* struct mlme_max_tx_power_24 - power related items
2454*5113495bSYour Name  * @max_len: max length of string
2455*5113495bSYour Name  * @len: actual len of string
2456*5113495bSYour Name  * @data: Data in string format
2457*5113495bSYour Name  */
2458*5113495bSYour Name struct mlme_max_tx_power_24 {
2459*5113495bSYour Name 	qdf_size_t max_len;
2460*5113495bSYour Name 	qdf_size_t len;
2461*5113495bSYour Name 	uint8_t data[CFG_MAX_TX_POWER_2_4_LEN];
2462*5113495bSYour Name };
2463*5113495bSYour Name 
2464*5113495bSYour Name /* struct mlme_max_tx_power_5 - power related items
2465*5113495bSYour Name  * @max_len: max length of string
2466*5113495bSYour Name  * @len: actual len of string
2467*5113495bSYour Name  * @data: Data in string format
2468*5113495bSYour Name  */
2469*5113495bSYour Name struct mlme_max_tx_power_5 {
2470*5113495bSYour Name 	qdf_size_t max_len;
2471*5113495bSYour Name 	qdf_size_t len;
2472*5113495bSYour Name 	uint8_t data[CFG_MAX_TX_POWER_5_LEN];
2473*5113495bSYour Name };
2474*5113495bSYour Name 
2475*5113495bSYour Name /* struct mlme_power_usage - power related items
2476*5113495bSYour Name  * @max_len: max length of string
2477*5113495bSYour Name  * @len: actual len of string
2478*5113495bSYour Name  * @data: Data in string format
2479*5113495bSYour Name  */
2480*5113495bSYour Name struct mlme_power_usage {
2481*5113495bSYour Name 	qdf_size_t max_len;
2482*5113495bSYour Name 	qdf_size_t len;
2483*5113495bSYour Name 	char data[CFG_POWER_USAGE_MAX_LEN];
2484*5113495bSYour Name };
2485*5113495bSYour Name 
2486*5113495bSYour Name /**
2487*5113495bSYour Name  * struct wlan_mlme_power - power related config items
2488*5113495bSYour Name  * @max_tx_power_24: max power Tx for 2.4 ghz, this is based on frequencies
2489*5113495bSYour Name  * @max_tx_power_5: max power Tx for 5 ghz, this is based on frequencies
2490*5113495bSYour Name  * @max_tx_power_24_chan: max power Tx for 2.4 ghz, this is based on channel
2491*5113495bSYour Name  * numbers, this is added to parse the ini values to maintain the backward
2492*5113495bSYour Name  * compatibility, these channel numbers are converted to frequencies and copied
2493*5113495bSYour Name  * to max_tx_power_24 structure, once this conversion is done this structure
2494*5113495bSYour Name  * should not be used.
2495*5113495bSYour Name  * @max_tx_power_5_chan: max power Tx for 5 ghz, this is based on channel
2496*5113495bSYour Name  * numbers, this is added to parse the ini values to maintain the backward
2497*5113495bSYour Name  * compatibility, these channel numbers are converted to frequencies and copied
2498*5113495bSYour Name  * to max_tx_power_24 structure, once this conversion is done this structure
2499*5113495bSYour Name  * should not be used.
2500*5113495bSYour Name  * @power_usage: power usage mode, min, max, mod
2501*5113495bSYour Name  * @tx_power_2g: limit tx power in 2.4 ghz
2502*5113495bSYour Name  * @tx_power_5g: limit tx power in 5 ghz
2503*5113495bSYour Name  * @current_tx_power_level: current tx power level
2504*5113495bSYour Name  * @local_power_constraint: local power constraint
2505*5113495bSYour Name  * @skip_tpe: option to not consider TPE values in 2.4G/5G bands
2506*5113495bSYour Name  */
2507*5113495bSYour Name struct wlan_mlme_power {
2508*5113495bSYour Name 	struct mlme_max_tx_power_24 max_tx_power_24;
2509*5113495bSYour Name 	struct mlme_max_tx_power_5 max_tx_power_5;
2510*5113495bSYour Name 	struct mlme_max_tx_power_24 max_tx_power_24_chan;
2511*5113495bSYour Name 	struct mlme_max_tx_power_5 max_tx_power_5_chan;
2512*5113495bSYour Name 	struct mlme_power_usage power_usage;
2513*5113495bSYour Name 	uint8_t tx_power_2g;
2514*5113495bSYour Name 	uint8_t tx_power_5g;
2515*5113495bSYour Name 	uint8_t current_tx_power_level;
2516*5113495bSYour Name 	uint8_t local_power_constraint;
2517*5113495bSYour Name 	bool skip_tpe;
2518*5113495bSYour Name };
2519*5113495bSYour Name 
2520*5113495bSYour Name /**
2521*5113495bSYour Name  * struct wlan_mlme_timeout - mlme timeout related config items
2522*5113495bSYour Name  * @join_failure_timeout: join failure timeout (can be changed in connect req)
2523*5113495bSYour Name  * @probe_req_retry_timeout: Probe req retry timeout during join time
2524*5113495bSYour Name  * @join_failure_timeout_ori: original value of above join timeout
2525*5113495bSYour Name  * @auth_failure_timeout: authenticate failure timeout
2526*5113495bSYour Name  * @auth_rsp_timeout: authenticate response timeout
2527*5113495bSYour Name  * @assoc_failure_timeout: assoc failure timeout
2528*5113495bSYour Name  * @reassoc_failure_timeout: re-assoc failure timeout
2529*5113495bSYour Name  * @olbc_detect_timeout: OLBC detect timeout
2530*5113495bSYour Name  * @addts_rsp_timeout: ADDTS rsp timeout value
2531*5113495bSYour Name  * @heart_beat_threshold: Heart beat threshold
2532*5113495bSYour Name  * @ap_keep_alive_timeout: AP keep alive timeout value
2533*5113495bSYour Name  * @ap_link_monitor_timeout: AP link monitor timeout value
2534*5113495bSYour Name  * @wmi_wq_watchdog_timeout: timeout period for wmi watchdog bite
2535*5113495bSYour Name  * @sae_auth_failure_timeout: SAE authentication failure timeout
2536*5113495bSYour Name  */
2537*5113495bSYour Name struct wlan_mlme_timeout {
2538*5113495bSYour Name 	uint32_t join_failure_timeout;
2539*5113495bSYour Name 	uint32_t probe_req_retry_timeout;
2540*5113495bSYour Name 	uint32_t join_failure_timeout_ori;
2541*5113495bSYour Name 	uint32_t auth_failure_timeout;
2542*5113495bSYour Name 	uint32_t auth_rsp_timeout;
2543*5113495bSYour Name 	uint32_t assoc_failure_timeout;
2544*5113495bSYour Name 	uint32_t reassoc_failure_timeout;
2545*5113495bSYour Name 	uint32_t olbc_detect_timeout;
2546*5113495bSYour Name 	uint32_t addts_rsp_timeout;
2547*5113495bSYour Name 	uint32_t heart_beat_threshold;
2548*5113495bSYour Name 	uint32_t ap_keep_alive_timeout;
2549*5113495bSYour Name 	uint32_t ap_link_monitor_timeout;
2550*5113495bSYour Name 	uint32_t wmi_wq_watchdog_timeout;
2551*5113495bSYour Name 	uint32_t sae_auth_failure_timeout;
2552*5113495bSYour Name };
2553*5113495bSYour Name 
2554*5113495bSYour Name /**
2555*5113495bSYour Name  * struct wlan_mlme_oce - OCE related config items
2556*5113495bSYour Name  * @enable_bcast_probe_rsp: enable broadcast probe response
2557*5113495bSYour Name  * @oce_sta_enabled: enable/disable oce feature for sta
2558*5113495bSYour Name  * @oce_sap_enabled: enable/disable oce feature for sap
2559*5113495bSYour Name  * @fils_enabled: enable/disable fils support
2560*5113495bSYour Name  * @feature_bitmap: oce feature bitmap
2561*5113495bSYour Name  *
2562*5113495bSYour Name  */
2563*5113495bSYour Name struct wlan_mlme_oce {
2564*5113495bSYour Name 	bool enable_bcast_probe_rsp;
2565*5113495bSYour Name 	bool oce_sta_enabled;
2566*5113495bSYour Name 	bool oce_sap_enabled;
2567*5113495bSYour Name 	bool fils_enabled;
2568*5113495bSYour Name 	uint8_t feature_bitmap;
2569*5113495bSYour Name };
2570*5113495bSYour Name 
2571*5113495bSYour Name /**
2572*5113495bSYour Name  * enum wep_key_id  - values passed to get/set wep default keys
2573*5113495bSYour Name  * @MLME_WEP_DEFAULT_KEY_1: wep default key 1
2574*5113495bSYour Name  * @MLME_WEP_DEFAULT_KEY_2: wep default key 2
2575*5113495bSYour Name  * @MLME_WEP_DEFAULT_KEY_3: wep default key 3
2576*5113495bSYour Name  * @MLME_WEP_DEFAULT_KEY_4: wep default key 4
2577*5113495bSYour Name  */
2578*5113495bSYour Name enum wep_key_id {
2579*5113495bSYour Name 	MLME_WEP_DEFAULT_KEY_1 = 0,
2580*5113495bSYour Name 	MLME_WEP_DEFAULT_KEY_2,
2581*5113495bSYour Name 	MLME_WEP_DEFAULT_KEY_3,
2582*5113495bSYour Name 	MLME_WEP_DEFAULT_KEY_4
2583*5113495bSYour Name };
2584*5113495bSYour Name 
2585*5113495bSYour Name /**
2586*5113495bSYour Name  * struct wlan_mlme_wep_cfg - WEP related configs
2587*5113495bSYour Name  * @is_privacy_enabled:     Flag to check if encryption is enabled
2588*5113495bSYour Name  * @is_shared_key_auth:     Flag to check if the auth type is shared key
2589*5113495bSYour Name  * @is_auth_open_system:    Flag to check if the auth type is open
2590*5113495bSYour Name  * @auth_type:              Authentication type value
2591*5113495bSYour Name  * @wep_default_key_id:     Default WEP key id
2592*5113495bSYour Name  */
2593*5113495bSYour Name struct wlan_mlme_wep_cfg {
2594*5113495bSYour Name 	bool is_privacy_enabled;
2595*5113495bSYour Name 	bool is_shared_key_auth;
2596*5113495bSYour Name 	bool is_auth_open_system;
2597*5113495bSYour Name 	uint8_t auth_type;
2598*5113495bSYour Name 	uint8_t wep_default_key_id;
2599*5113495bSYour Name };
2600*5113495bSYour Name 
2601*5113495bSYour Name /**
2602*5113495bSYour Name  * struct wlan_mlme_wifi_pos_cfg - WIFI POS configs
2603*5113495bSYour Name  * @fine_time_meas_cap: fine timing measurement capability information
2604*5113495bSYour Name  * @oem_6g_support_disable: oem is 6Ghz disabled if set
2605*5113495bSYour Name  */
2606*5113495bSYour Name struct wlan_mlme_wifi_pos_cfg {
2607*5113495bSYour Name 	uint32_t fine_time_meas_cap;
2608*5113495bSYour Name 	bool oem_6g_support_disable;
2609*5113495bSYour Name };
2610*5113495bSYour Name 
2611*5113495bSYour Name #define MLME_SET_BIT(value, bit_offset) ((value) |= (1 << (bit_offset)))
2612*5113495bSYour Name #define MLME_CLEAR_BIT(value, bit_offset) ((value) &= ~(1 << (bit_offset)))
2613*5113495bSYour Name 
2614*5113495bSYour Name /* Mask to check if BTM offload is enabled/disabled*/
2615*5113495bSYour Name #define BTM_OFFLOAD_ENABLED_MASK    0x01
2616*5113495bSYour Name 
2617*5113495bSYour Name #define BTM_OFFLOAD_CONFIG_BIT_0    0
2618*5113495bSYour Name #define BTM_OFFLOAD_CONFIG_BIT_8    8
2619*5113495bSYour Name #define BTM_OFFLOAD_CONFIG_BIT_7    7
2620*5113495bSYour Name 
2621*5113495bSYour Name /**
2622*5113495bSYour Name  * struct wlan_mlme_btm - BTM related configs
2623*5113495bSYour Name  * @prefer_btm_query: flag to prefer btm query over 11k
2624*5113495bSYour Name  * @abridge_flag: set this flag to enable firmware to sort candidates based on
2625*5113495bSYour Name  * roam score rather than selecting preferred APs.
2626*5113495bSYour Name  * @btm_offload_config: configure btm offload
2627*5113495bSYour Name  * @btm_solicited_timeout: configure timeout value for waiting BTM request
2628*5113495bSYour Name  * @btm_max_attempt_cnt: configure maximum attempt for sending BTM query to ESS
2629*5113495bSYour Name  * @btm_sticky_time: configure Stick time after roaming to new AP by BTM
2630*5113495bSYour Name  * @rct_validity_timer: Timeout values for roam cache table entries
2631*5113495bSYour Name  * @disassoc_timer_threshold: Disassociation timeout till which roam scan need
2632*5113495bSYour Name  * not be triggered
2633*5113495bSYour Name  * @btm_query_bitmask: Bitmask to send BTM query with candidate list on
2634*5113495bSYour Name  * various roam
2635*5113495bSYour Name  * @btm_trig_min_candidate_score: Minimum score to consider the AP as candidate
2636*5113495bSYour Name  * when the roam trigger is BTM.
2637*5113495bSYour Name  */
2638*5113495bSYour Name struct wlan_mlme_btm {
2639*5113495bSYour Name 	bool prefer_btm_query;
2640*5113495bSYour Name 	bool abridge_flag;
2641*5113495bSYour Name 	uint32_t btm_offload_config;
2642*5113495bSYour Name 	uint32_t btm_solicited_timeout;
2643*5113495bSYour Name 	uint32_t btm_max_attempt_cnt;
2644*5113495bSYour Name 	uint32_t btm_sticky_time;
2645*5113495bSYour Name 	uint32_t rct_validity_timer;
2646*5113495bSYour Name 	uint32_t disassoc_timer_threshold;
2647*5113495bSYour Name 	uint32_t btm_query_bitmask;
2648*5113495bSYour Name 	uint32_t btm_trig_min_candidate_score;
2649*5113495bSYour Name };
2650*5113495bSYour Name 
2651*5113495bSYour Name /**
2652*5113495bSYour Name  * struct wlan_mlme_fe_wlm - WLM related configs
2653*5113495bSYour Name  * @latency_enable: Flag to check if latency is enabled
2654*5113495bSYour Name  * @latency_reset: Flag to check if latency reset is enabled
2655*5113495bSYour Name  * @latency_level: WLM latency level
2656*5113495bSYour Name  * @latency_flags: WLM latency flags setting
2657*5113495bSYour Name  * @latency_host_flags: WLM latency host flags setting
2658*5113495bSYour Name  * @multi_client_ll_support: To check whether host support multi client feature
2659*5113495bSYour Name  */
2660*5113495bSYour Name struct wlan_mlme_fe_wlm {
2661*5113495bSYour Name 	bool latency_enable;
2662*5113495bSYour Name 	bool latency_reset;
2663*5113495bSYour Name 	uint8_t latency_level;
2664*5113495bSYour Name 	uint32_t latency_flags[MLME_NUM_WLM_LATENCY_LEVEL];
2665*5113495bSYour Name 	uint32_t latency_host_flags[MLME_NUM_WLM_LATENCY_LEVEL];
2666*5113495bSYour Name #ifdef MULTI_CLIENT_LL_SUPPORT
2667*5113495bSYour Name 	bool multi_client_ll_support;
2668*5113495bSYour Name #endif
2669*5113495bSYour Name };
2670*5113495bSYour Name 
2671*5113495bSYour Name /**
2672*5113495bSYour Name  * struct wlan_mlme_fe_rrm - RRM related configs
2673*5113495bSYour Name  * @rrm_enabled: Flag to check if RRM is enabled for STA
2674*5113495bSYour Name  * @sap_rrm_enabled: Flag to check if RRM is enabled for SAP
2675*5113495bSYour Name  * @rrm_rand_interval: RRM randomization interval
2676*5113495bSYour Name  * @rm_capability: RM enabled capabilities IE
2677*5113495bSYour Name  */
2678*5113495bSYour Name struct wlan_mlme_fe_rrm {
2679*5113495bSYour Name 	bool rrm_enabled;
2680*5113495bSYour Name 	bool sap_rrm_enabled;
2681*5113495bSYour Name 	uint8_t rrm_rand_interval;
2682*5113495bSYour Name 	uint8_t rm_capability[MLME_RMENABLEDCAP_MAX_LEN];
2683*5113495bSYour Name };
2684*5113495bSYour Name 
2685*5113495bSYour Name #ifdef MWS_COEX
2686*5113495bSYour Name /**
2687*5113495bSYour Name  * struct wlan_mlme_mwc - MWC related configs
2688*5113495bSYour Name  * @mws_coex_4g_quick_tdm:  bitmap to set mws-coex 5g-nr power limit
2689*5113495bSYour Name  * @mws_coex_5g_nr_pwr_limit: bitmap to set mws-coex 5g-nr power limit
2690*5113495bSYour Name  * @mws_coex_pcc_channel_avoid_delay: PCC avoidance delay in seconds
2691*5113495bSYour Name  * @mws_coex_scc_channel_avoid_delay: SCC avoidance delay in seconds
2692*5113495bSYour Name  **/
2693*5113495bSYour Name struct wlan_mlme_mwc {
2694*5113495bSYour Name 	uint32_t mws_coex_4g_quick_tdm;
2695*5113495bSYour Name 	uint32_t mws_coex_5g_nr_pwr_limit;
2696*5113495bSYour Name 	uint32_t mws_coex_pcc_channel_avoid_delay;
2697*5113495bSYour Name 	uint32_t mws_coex_scc_channel_avoid_delay;
2698*5113495bSYour Name };
2699*5113495bSYour Name #else
2700*5113495bSYour Name struct wlan_mlme_mwc {
2701*5113495bSYour Name };
2702*5113495bSYour Name #endif
2703*5113495bSYour Name 
2704*5113495bSYour Name /**
2705*5113495bSYour Name  * enum mlme_reg_srd_master_modes  - Bitmap of SRD master modes supported
2706*5113495bSYour Name  * @MLME_SRD_MASTER_MODE_SAP: SRD master mode for SAP
2707*5113495bSYour Name  * @MLME_SRD_MASTER_MODE_P2P_GO: SRD master mode for P2P-GO
2708*5113495bSYour Name  * @MLME_SRD_MASTER_MODE_NAN: SRD master mode for NAN
2709*5113495bSYour Name  */
2710*5113495bSYour Name enum mlme_reg_srd_master_modes {
2711*5113495bSYour Name 	MLME_SRD_MASTER_MODE_SAP = 1,
2712*5113495bSYour Name 	MLME_SRD_MASTER_MODE_P2P_GO = 2,
2713*5113495bSYour Name 	MLME_SRD_MASTER_MODE_NAN = 4,
2714*5113495bSYour Name };
2715*5113495bSYour Name 
2716*5113495bSYour Name /**
2717*5113495bSYour Name  * struct wlan_mlme_reg - REG related configs
2718*5113495bSYour Name  * @self_gen_frm_pwr: self-generated frame power in tx chain mask
2719*5113495bSYour Name  * for CCK rates
2720*5113495bSYour Name  * @etsi_srd_chan_in_master_mode: etsi srd chan in master mode
2721*5113495bSYour Name  * @fcc_5dot9_ghz_chan_in_master_mode: fcc 5.9 GHz chan in master mode
2722*5113495bSYour Name  * @restart_beaconing_on_ch_avoid: restart beaconing on ch avoid
2723*5113495bSYour Name  * @indoor_channel_support: indoor channel support
2724*5113495bSYour Name  * @scan_11d_interval: scan 11d interval
2725*5113495bSYour Name  * @valid_channel_freq_list: array for valid channel list
2726*5113495bSYour Name  * @valid_channel_list_num: valid channel list number
2727*5113495bSYour Name  * @enable_11d_in_world_mode: Whether to enable 11d scan in world mode or not
2728*5113495bSYour Name  * @avoid_acs_freq_list: List of the frequencies which need to be avoided
2729*5113495bSYour Name  * during acs
2730*5113495bSYour Name  * @avoid_acs_freq_list_num: Number of the frequencies to be avoided during acs
2731*5113495bSYour Name  * @ignore_fw_reg_offload_ind: Ignore fw regulatory offload indication
2732*5113495bSYour Name  * @enable_pending_chan_list_req: enables/disables scan channel
2733*5113495bSYour Name  * list command to FW till the current scan is complete.
2734*5113495bSYour Name  * @retain_nol_across_regdmn_update: Retain the NOL list across the regdomain.
2735*5113495bSYour Name  * @enable_nan_on_indoor_channels: Enable nan on Indoor channels
2736*5113495bSYour Name  * @enable_6ghz_sp_pwrmode_supp: Enable 6 GHz SP mode support
2737*5113495bSYour Name  * @afc_disable_timer_check: Disable AFC timer check
2738*5113495bSYour Name  * @afc_disable_request_id_check: Disable AFC request id check
2739*5113495bSYour Name  * @is_afc_reg_noaction: Whether no action to AFC power event
2740*5113495bSYour Name  * @coex_unsafe_chan_nb_user_prefer: Honor coex unsafe freq event from firmware
2741*5113495bSYour Name  * or not
2742*5113495bSYour Name  * @coex_unsafe_chan_reg_disable: To disable reg channels for received coex
2743*5113495bSYour Name  * unsafe channels list
2744*5113495bSYour Name  */
2745*5113495bSYour Name struct wlan_mlme_reg {
2746*5113495bSYour Name 	uint32_t self_gen_frm_pwr;
2747*5113495bSYour Name 	uint8_t etsi_srd_chan_in_master_mode;
2748*5113495bSYour Name 	bool fcc_5dot9_ghz_chan_in_master_mode;
2749*5113495bSYour Name 	enum restart_beaconing_on_ch_avoid_rule
2750*5113495bSYour Name 		restart_beaconing_on_ch_avoid;
2751*5113495bSYour Name 	bool indoor_channel_support;
2752*5113495bSYour Name 	uint32_t scan_11d_interval;
2753*5113495bSYour Name 	uint32_t valid_channel_freq_list[CFG_VALID_CHANNEL_LIST_LEN];
2754*5113495bSYour Name 	uint32_t valid_channel_list_num;
2755*5113495bSYour Name 	bool enable_11d_in_world_mode;
2756*5113495bSYour Name #ifdef SAP_AVOID_ACS_FREQ_LIST
2757*5113495bSYour Name 	uint16_t avoid_acs_freq_list[CFG_VALID_CHANNEL_LIST_LEN];
2758*5113495bSYour Name 	uint8_t avoid_acs_freq_list_num;
2759*5113495bSYour Name #endif
2760*5113495bSYour Name 	bool ignore_fw_reg_offload_ind;
2761*5113495bSYour Name 	bool enable_pending_chan_list_req;
2762*5113495bSYour Name 	bool retain_nol_across_regdmn_update;
2763*5113495bSYour Name 	bool enable_nan_on_indoor_channels;
2764*5113495bSYour Name #if defined(CONFIG_AFC_SUPPORT) && defined(CONFIG_BAND_6GHZ)
2765*5113495bSYour Name 	bool enable_6ghz_sp_pwrmode_supp;
2766*5113495bSYour Name 	bool afc_disable_timer_check;
2767*5113495bSYour Name 	bool afc_disable_request_id_check;
2768*5113495bSYour Name 	bool is_afc_reg_noaction;
2769*5113495bSYour Name #endif
2770*5113495bSYour Name #ifdef FEATURE_WLAN_CH_AVOID_EXT
2771*5113495bSYour Name 	uint32_t coex_unsafe_chan_nb_user_prefer;
2772*5113495bSYour Name 	bool coex_unsafe_chan_reg_disable;
2773*5113495bSYour Name #endif
2774*5113495bSYour Name };
2775*5113495bSYour Name 
2776*5113495bSYour Name #define IOT_AGGR_INFO_MAX_NUM 32
2777*5113495bSYour Name 
2778*5113495bSYour Name /**
2779*5113495bSYour Name  * struct wlan_iot_aggr - IOT related AGGR rule
2780*5113495bSYour Name  *
2781*5113495bSYour Name  * @oui: OUI for the rule
2782*5113495bSYour Name  * @oui_len: length of the OUI
2783*5113495bSYour Name  * @ampdu_sz: max aggregation size in no. of MPDUs
2784*5113495bSYour Name  * @amsdu_sz: max aggregation size in no. of MSDUs
2785*5113495bSYour Name  */
2786*5113495bSYour Name struct wlan_iot_aggr {
2787*5113495bSYour Name 	uint8_t oui[OUI_LENGTH];
2788*5113495bSYour Name 	uint32_t oui_len;
2789*5113495bSYour Name 	uint32_t ampdu_sz;
2790*5113495bSYour Name 	uint32_t amsdu_sz;
2791*5113495bSYour Name };
2792*5113495bSYour Name 
2793*5113495bSYour Name /**
2794*5113495bSYour Name  * struct wlan_mlme_iot - IOT related CFG Items
2795*5113495bSYour Name  *
2796*5113495bSYour Name  * @aggr: aggr rules
2797*5113495bSYour Name  * @aggr_num: number of the configured aggr rules
2798*5113495bSYour Name  */
2799*5113495bSYour Name struct wlan_mlme_iot {
2800*5113495bSYour Name 	struct wlan_iot_aggr aggr[IOT_AGGR_INFO_MAX_NUM];
2801*5113495bSYour Name 	uint32_t aggr_num;
2802*5113495bSYour Name };
2803*5113495bSYour Name 
2804*5113495bSYour Name /**
2805*5113495bSYour Name  * struct wlan_mlme_cfg - MLME config items
2806*5113495bSYour Name  * @chainmask_cfg: VHT chainmask related cfg items
2807*5113495bSYour Name  * @edca_params: edca related CFG items
2808*5113495bSYour Name  * @gen: Generic CFG items
2809*5113495bSYour Name  * @ht_caps: HT related CFG Items
2810*5113495bSYour Name  * @he_caps: HE related cfg items
2811*5113495bSYour Name  * @eht_caps: EHT related cfg items
2812*5113495bSYour Name  * @lfr: LFR related CFG Items
2813*5113495bSYour Name  * @ibss: IBSS related CFG items
2814*5113495bSYour Name  * @obss_ht40:obss ht40 CFG Items
2815*5113495bSYour Name  * @mbo_cfg: Multiband Operation related CFG items
2816*5113495bSYour Name  * @vht_caps: VHT related CFG Items
2817*5113495bSYour Name  * @qos_mlme_params: QOS CFG Items
2818*5113495bSYour Name  * @rates: Rates related cfg items
2819*5113495bSYour Name  * @product_details: product details related CFG Items
2820*5113495bSYour Name  * @dfs_cfg: DFS related CFG Items
2821*5113495bSYour Name  * @sap_protection_cfg: SAP erp protection related CFG items
2822*5113495bSYour Name  * @sap_cfg: sap CFG items
2823*5113495bSYour Name  * @nss_chains_ini_cfg: Per vdev nss, chains related CFG items
2824*5113495bSYour Name  * @sta: sta CFG Items
2825*5113495bSYour Name  * @stats: stats CFG Items
2826*5113495bSYour Name  * @roam_scoring: BSS Scoring related CFG Items
2827*5113495bSYour Name  * @oce: OCE related CFG items
2828*5113495bSYour Name  * @threshold: threshold related cfg items
2829*5113495bSYour Name  * @timeouts: mlme timeout related CFG items
2830*5113495bSYour Name  * @twt_cfg: TWT CFG Items
2831*5113495bSYour Name  * @power: power related items
2832*5113495bSYour Name  * @acs: ACS related CFG items
2833*5113495bSYour Name  * @feature_flags: Feature flag config items
2834*5113495bSYour Name  * @ps_params: Powersave related ini configs
2835*5113495bSYour Name  * @wep_params:  WEP related config items
2836*5113495bSYour Name  * @wifi_pos_cfg: WIFI POS config
2837*5113495bSYour Name  * @wmm_params: WMM related CFG & INI Items
2838*5113495bSYour Name  * @wps_params: WPS related CFG itmes
2839*5113495bSYour Name  * @btm: BTM related CFG itmes
2840*5113495bSYour Name  * @wlm_config: WLM related CFG items
2841*5113495bSYour Name  * @rrm_config: RRM related CFG items
2842*5113495bSYour Name  * @mwc: MWC related CFG items
2843*5113495bSYour Name  * @dot11_mode: dot11 mode supported
2844*5113495bSYour Name  * @reg: REG related CFG itmes
2845*5113495bSYour Name  * @trig_score_delta: Roam score delta value for various roam triggers
2846*5113495bSYour Name  * @trig_min_rssi: Expected minimum RSSI value of candidate AP for
2847*5113495bSYour Name  * various roam triggers
2848*5113495bSYour Name  * @ratemask_cfg: ratemask configuration
2849*5113495bSYour Name  * @iot: IOT related CFG items
2850*5113495bSYour Name  * @connection_roaming_ini_flag: To indicate whether connection_roaming related
2851*5113495bSYour Name  * ini file is present or not.
2852*5113495bSYour Name  * @eml_cap: EML capability subfield present in ML IE common info
2853*5113495bSYour Name  * @dynamic_nss_chains_support : intersection of host and fw capability of
2854*5113495bSYour Name  *				 dynamic NSS chain support
2855*5113495bSYour Name  */
2856*5113495bSYour Name struct wlan_mlme_cfg {
2857*5113495bSYour Name 	struct wlan_mlme_chainmask chainmask_cfg;
2858*5113495bSYour Name 	struct wlan_mlme_edca_params edca_params;
2859*5113495bSYour Name 	struct wlan_mlme_generic gen;
2860*5113495bSYour Name 	struct wlan_mlme_ht_caps ht_caps;
2861*5113495bSYour Name #ifdef WLAN_FEATURE_11AX
2862*5113495bSYour Name 	struct wlan_mlme_he_caps he_caps;
2863*5113495bSYour Name #endif
2864*5113495bSYour Name #ifdef WLAN_FEATURE_11BE
2865*5113495bSYour Name 	struct wlan_mlme_eht_caps eht_caps;
2866*5113495bSYour Name #endif
2867*5113495bSYour Name 	struct wlan_mlme_lfr_cfg lfr;
2868*5113495bSYour Name 	struct wlan_mlme_obss_ht40 obss_ht40;
2869*5113495bSYour Name 	struct wlan_mlme_mbo mbo_cfg;
2870*5113495bSYour Name 	struct wlan_mlme_vht_caps vht_caps;
2871*5113495bSYour Name 	struct wlan_mlme_qos qos_mlme_params;
2872*5113495bSYour Name 	struct wlan_mlme_rates rates;
2873*5113495bSYour Name 	struct wlan_mlme_product_details_cfg product_details;
2874*5113495bSYour Name 	struct wlan_mlme_dfs_cfg dfs_cfg;
2875*5113495bSYour Name 	struct wlan_mlme_sap_protection sap_protection_cfg;
2876*5113495bSYour Name 	struct wlan_mlme_cfg_sap sap_cfg;
2877*5113495bSYour Name 	struct wlan_mlme_nss_chains nss_chains_ini_cfg;
2878*5113495bSYour Name 	struct wlan_mlme_sta_cfg sta;
2879*5113495bSYour Name 	struct wlan_mlme_stats_cfg stats;
2880*5113495bSYour Name 	struct wlan_mlme_roam_scoring_cfg roam_scoring;
2881*5113495bSYour Name 	struct wlan_mlme_oce oce;
2882*5113495bSYour Name 	struct wlan_mlme_threshold threshold;
2883*5113495bSYour Name 	struct wlan_mlme_timeout timeouts;
2884*5113495bSYour Name 	struct wlan_mlme_cfg_twt twt_cfg;
2885*5113495bSYour Name 	struct wlan_mlme_power power;
2886*5113495bSYour Name 	struct wlan_mlme_acs acs;
2887*5113495bSYour Name 	struct wlan_mlme_feature_flag feature_flags;
2888*5113495bSYour Name 	struct wlan_mlme_powersave ps_params;
2889*5113495bSYour Name 	struct wlan_mlme_wep_cfg wep_params;
2890*5113495bSYour Name 	struct wlan_mlme_wifi_pos_cfg wifi_pos_cfg;
2891*5113495bSYour Name 	struct wlan_mlme_wmm_params wmm_params;
2892*5113495bSYour Name 	struct wlan_mlme_wps_params wps_params;
2893*5113495bSYour Name 	struct wlan_mlme_btm btm;
2894*5113495bSYour Name 	struct wlan_mlme_fe_wlm wlm_config;
2895*5113495bSYour Name 	struct wlan_mlme_fe_rrm rrm_config;
2896*5113495bSYour Name 	struct wlan_mlme_mwc mwc;
2897*5113495bSYour Name 	struct wlan_mlme_dot11_mode dot11_mode;
2898*5113495bSYour Name 	struct wlan_mlme_reg reg;
2899*5113495bSYour Name 	struct roam_trigger_score_delta trig_score_delta[NUM_OF_ROAM_TRIGGERS];
2900*5113495bSYour Name 	struct roam_trigger_min_rssi trig_min_rssi[NUM_OF_ROAM_MIN_RSSI];
2901*5113495bSYour Name 	struct wlan_mlme_ratemask ratemask_cfg;
2902*5113495bSYour Name 	struct wlan_mlme_iot iot;
2903*5113495bSYour Name 	bool connection_roaming_ini_flag;
2904*5113495bSYour Name 	struct wlan_mlme_eml_cap eml_cap;
2905*5113495bSYour Name 	bool dynamic_nss_chains_support;
2906*5113495bSYour Name };
2907*5113495bSYour Name 
2908*5113495bSYour Name /**
2909*5113495bSYour Name  * struct mlme_pmk_info - SAE Roaming using single pmk info
2910*5113495bSYour Name  * @pmk: pmk
2911*5113495bSYour Name  * @pmk_len: pmk length
2912*5113495bSYour Name  * @spmk_timeout_period: Time to generate new SPMK in seconds.
2913*5113495bSYour Name  * @spmk_timestamp: System timestamp at which the Single PMK entry was added.
2914*5113495bSYour Name  */
2915*5113495bSYour Name struct mlme_pmk_info {
2916*5113495bSYour Name 	uint8_t pmk[CFG_MAX_PMK_LEN];
2917*5113495bSYour Name 	uint8_t pmk_len;
2918*5113495bSYour Name 	uint16_t spmk_timeout_period;
2919*5113495bSYour Name 	qdf_time_t spmk_timestamp;
2920*5113495bSYour Name };
2921*5113495bSYour Name 
2922*5113495bSYour Name /**
2923*5113495bSYour Name  * struct wlan_mlme_sae_single_pmk - SAE Roaming using single pmk configuration
2924*5113495bSYour Name  * structure
2925*5113495bSYour Name  * @sae_single_pmk_ap: Current connected AP has VSIE or not
2926*5113495bSYour Name  * @pmk_info: pmk information
2927*5113495bSYour Name  */
2928*5113495bSYour Name struct wlan_mlme_sae_single_pmk {
2929*5113495bSYour Name 	bool sae_single_pmk_ap;
2930*5113495bSYour Name 	struct mlme_pmk_info pmk_info;
2931*5113495bSYour Name };
2932*5113495bSYour Name 
2933*5113495bSYour Name #define ROAM_FRAME_INFO_FRAME_TYPE_EXT 3
2934*5113495bSYour Name /**
2935*5113495bSYour Name  * struct mlme_roam_debug_info - Roam debug information storage structure.
2936*5113495bSYour Name  * @trigger:            Roam trigger related data
2937*5113495bSYour Name  * @scan:               Roam scan related data structure.
2938*5113495bSYour Name  * @result:             Roam result parameters.
2939*5113495bSYour Name  * @data_11kv:          Neighbor report/BTM parameters.
2940*5113495bSYour Name  * @btm_rsp:            BTM response information
2941*5113495bSYour Name  * @roam_init_info:     Roam initial info
2942*5113495bSYour Name  * @roam_msg_info:      roam related message information
2943*5113495bSYour Name  * @frame_info:         Information related to mgmt/eapol frames exchanged
2944*5113495bSYour Name  *                      during roaming.
2945*5113495bSYour Name  */
2946*5113495bSYour Name struct mlme_roam_debug_info {
2947*5113495bSYour Name 	struct wmi_roam_trigger_info trigger;
2948*5113495bSYour Name 	struct wmi_roam_scan_data scan;
2949*5113495bSYour Name 	struct wmi_roam_result result;
2950*5113495bSYour Name 	struct wmi_neighbor_report_data data_11kv;
2951*5113495bSYour Name 	struct roam_btm_response_data btm_rsp;
2952*5113495bSYour Name 	struct roam_initial_data roam_init_info;
2953*5113495bSYour Name 	struct roam_msg_info roam_msg_info;
2954*5113495bSYour Name 	struct roam_frame_info frame_info[WLAN_ROAM_MAX_FRAME_INFO];
2955*5113495bSYour Name };
2956*5113495bSYour Name 
2957*5113495bSYour Name /**
2958*5113495bSYour Name  * struct wlan_change_bi - Message struct to update beacon interval
2959*5113495bSYour Name  * @message_type: type of message
2960*5113495bSYour Name  * @length: length of message
2961*5113495bSYour Name  * @beacon_interval: beacon interval to update to (seconds)
2962*5113495bSYour Name  * @bssid: BSSID of vdev
2963*5113495bSYour Name  * @session_id: session ID of vdev
2964*5113495bSYour Name  */
2965*5113495bSYour Name struct wlan_change_bi {
2966*5113495bSYour Name 	uint16_t message_type;
2967*5113495bSYour Name 	uint16_t length;
2968*5113495bSYour Name 	uint16_t beacon_interval;
2969*5113495bSYour Name 	struct qdf_mac_addr bssid;
2970*5113495bSYour Name 	uint8_t session_id;
2971*5113495bSYour Name };
2972*5113495bSYour Name 
2973*5113495bSYour Name #ifdef FEATURE_SET
2974*5113495bSYour Name /**
2975*5113495bSYour Name  * enum wlan_mlme_iface_combinations - Iface combinations
2976*5113495bSYour Name  * @MLME_IFACE_STA_P2P_SUPPORT: STA + P2P concurrency bit
2977*5113495bSYour Name  * @MLME_IFACE_STA_SAP_SUPPORT: STA + SAP concurrency bit
2978*5113495bSYour Name  * @MLME_IFACE_STA_NAN_SUPPORT: STA + NAN concurrency bit
2979*5113495bSYour Name  * @MLME_IFACE_STA_TDLS_SUPPORT: STA + TDLS concurrency bit
2980*5113495bSYour Name  * @MLME_IFACE_STA_DUAL_P2P_SUPPORT: STA + P2P + P2P concurrency bit
2981*5113495bSYour Name  * @MLME_IFACE_STA_SAP_P2P_SUPPORT: STA + SAP + P2P concurrency bit
2982*5113495bSYour Name  * @MLME_IFACE_STA_SAP_NAN_SUPPORT: STA + SAP + NAN concurrency bit
2983*5113495bSYour Name  * @MLME_IFACE_STA_P2P_NAN_SUPPORT: STA + P2P + NAN concurrency bit
2984*5113495bSYour Name  * @MLME_IFACE_STA_P2P_TDLS_SUPPORT: STA + P2P + TDLS concurrency bit
2985*5113495bSYour Name  * @MLME_IFACE_STA_SAP_TDLS_SUPPORT: STA + SAP + TDLS concurrency bit
2986*5113495bSYour Name  * @MLME_IFACE_STA_NAN_TDLS_SUPPORT: STA + NAN + TDLS concurrency bit
2987*5113495bSYour Name  * @MLME_IFACE_STA_SAP_P2P_TDLS_SUPPORT: STA + SAP + P2P + TDLS concurrency bit
2988*5113495bSYour Name  * @MLME_IFACE_STA_SAP_NAN_TDLS_SUPPORT: STA + SAP + NAN + TDLS concurrency bit
2989*5113495bSYour Name  * @MLME_IFACE_STA_P2P_P2P_TDLS_SUPPORT: STA + P2P + P2P + TDLS concurrency bit
2990*5113495bSYour Name  * @MLME_IFACE_STA_P2P_NAN_TDLS_SUPPORT: STA + P2P + NAN + TDLS concurrency bit
2991*5113495bSYour Name  */
2992*5113495bSYour Name enum wlan_mlme_iface_combinations {
2993*5113495bSYour Name 	MLME_IFACE_STA_P2P_SUPPORT = 0x1,
2994*5113495bSYour Name 	MLME_IFACE_STA_SAP_SUPPORT = 0x2,
2995*5113495bSYour Name 	MLME_IFACE_STA_NAN_SUPPORT = 0x4,
2996*5113495bSYour Name 	MLME_IFACE_STA_TDLS_SUPPORT = 0x8,
2997*5113495bSYour Name 	MLME_IFACE_STA_DUAL_P2P_SUPPORT = 0x10,
2998*5113495bSYour Name 	MLME_IFACE_STA_SAP_P2P_SUPPORT = 0x20,
2999*5113495bSYour Name 	MLME_IFACE_STA_SAP_NAN_SUPPORT = 0x40,
3000*5113495bSYour Name 	MLME_IFACE_STA_P2P_NAN_SUPPORT = 0x80,
3001*5113495bSYour Name 	MLME_IFACE_STA_P2P_TDLS_SUPPORT = 0x100,
3002*5113495bSYour Name 	MLME_IFACE_STA_SAP_TDLS_SUPPORT = 0x200,
3003*5113495bSYour Name 	MLME_IFACE_STA_NAN_TDLS_SUPPORT = 0x400,
3004*5113495bSYour Name 	MLME_IFACE_STA_SAP_P2P_TDLS_SUPPORT = 0x800,
3005*5113495bSYour Name 	MLME_IFACE_STA_SAP_NAN_TDLS_SUPPORT = 0x1000,
3006*5113495bSYour Name 	MLME_IFACE_STA_P2P_P2P_TDLS_SUPPORT = 0x2000,
3007*5113495bSYour Name 	MLME_IFACE_STA_P2P_NAN_TDLS_SUPPORT = 0x4000,
3008*5113495bSYour Name };
3009*5113495bSYour Name 
3010*5113495bSYour Name /**
3011*5113495bSYour Name  * struct wlan_mlme_features - Mlme feature set structure
3012*5113495bSYour Name  * @enable_wifi_optimizer: indicates wifi optimizer is enabled or disabled
3013*5113495bSYour Name  * @sap_max_num_clients: maximum number of SoftAP clients
3014*5113495bSYour Name  * @roaming_high_cu_roam_trigger: Roaming high CPU trigger enabled or disabled
3015*5113495bSYour Name  * @roaming_emergency_trigger: Roaming emergency trigger enabled or disabled
3016*5113495bSYour Name  * @roaming_btm_trihgger: Roaming btm trigger enabled or disabled
3017*5113495bSYour Name  * @roaming_idle_trigger: Roaming idle trigger enabled or disabled
3018*5113495bSYour Name  * @roaming_wtc_trigger: Roaming wtc trigger enabled or disabled
3019*5113495bSYour Name  * @roaming_btcoex_trigger: Roaming btcoex trigger enabled or disabled
3020*5113495bSYour Name  * @roaming_btw_wpa_wpa2: Roaming btw wpa wpa2 enabled or disabled
3021*5113495bSYour Name  * @roaming_manage_chan_list_api: Roaming manage chan list api enabled or
3022*5113495bSYour Name  * disabled
3023*5113495bSYour Name  * @roaming_adaptive_11r: Roaming adaptive 11r enabled or disabled
3024*5113495bSYour Name  * @roaming_ctrl_api_get_set: Roaming ctrl api get set enabled or disabled
3025*5113495bSYour Name  * @roaming_ctrl_api_reassoc: Roaming ctrl api reassoc enabled or disabled
3026*5113495bSYour Name  * @roaming_ctrl_get_cu: Roaming ctrl get cu enabled or disabled
3027*5113495bSYour Name  * @vendor_req_1_version: Vendor requirement version 1
3028*5113495bSYour Name  * @vendor_req_2_version: Vendor requirement version 2
3029*5113495bSYour Name  * @enable2x2: Enable 2x2
3030*5113495bSYour Name  * @iface_combinations: iface combination bitmask
3031*5113495bSYour Name  */
3032*5113495bSYour Name struct wlan_mlme_features {
3033*5113495bSYour Name 	bool enable_wifi_optimizer;
3034*5113495bSYour Name 	uint8_t sap_max_num_clients;
3035*5113495bSYour Name 	bool roaming_high_cu_roam_trigger;
3036*5113495bSYour Name 	bool roaming_emergency_trigger;
3037*5113495bSYour Name 	bool roaming_btm_trihgger;
3038*5113495bSYour Name 	bool roaming_idle_trigger;
3039*5113495bSYour Name 	bool roaming_wtc_trigger;
3040*5113495bSYour Name 	bool roaming_btcoex_trigger;
3041*5113495bSYour Name 	bool roaming_btw_wpa_wpa2;
3042*5113495bSYour Name 	bool roaming_manage_chan_list_api;
3043*5113495bSYour Name 	bool roaming_adaptive_11r;
3044*5113495bSYour Name 	bool roaming_ctrl_api_get_set;
3045*5113495bSYour Name 	bool roaming_ctrl_api_reassoc;
3046*5113495bSYour Name 	bool roaming_ctrl_get_cu;
3047*5113495bSYour Name 	WMI_HOST_VENDOR1_REQ1_VERSION vendor_req_1_version;
3048*5113495bSYour Name 	WMI_HOST_VENDOR1_REQ2_VERSION vendor_req_2_version;
3049*5113495bSYour Name 	bool enable2x2;
3050*5113495bSYour Name 	uint32_t iface_combinations;
3051*5113495bSYour Name };
3052*5113495bSYour Name #endif
3053*5113495bSYour Name 
3054*5113495bSYour Name /**
3055*5113495bSYour Name  * enum host_concurrent_ap_policy - Host concurrent AP policy value
3056*5113495bSYour Name  * @HOST_CONCURRENT_AP_POLICY_UNSPECIFIED: Unspecified concurrent policy value
3057*5113495bSYour Name  * @HOST_CONCURRENT_AP_POLICY_GAMING_AUDIO: Gaming audio concurrent policy value
3058*5113495bSYour Name  * @HOST_CONCURRENT_AP_POLICY_LOSSLESS_AUDIO_STREAMING: Lossless audio
3059*5113495bSYour Name  * concurrent streaming policy value
3060*5113495bSYour Name  * @HOST_CONCURRENT_AP_POLICY_XR: Concurrent policy to meet AR/VR requirements.
3061*5113495bSYour Name  */
3062*5113495bSYour Name enum host_concurrent_ap_policy {
3063*5113495bSYour Name 	HOST_CONCURRENT_AP_POLICY_UNSPECIFIED = 0,
3064*5113495bSYour Name 	HOST_CONCURRENT_AP_POLICY_GAMING_AUDIO = 1,
3065*5113495bSYour Name 	HOST_CONCURRENT_AP_POLICY_LOSSLESS_AUDIO_STREAMING = 2,
3066*5113495bSYour Name 	HOST_CONCURRENT_AP_POLICY_XR = 3
3067*5113495bSYour Name };
3068*5113495bSYour Name 
3069*5113495bSYour Name /**
3070*5113495bSYour Name  * enum ll_ap_type - low latency AP type
3071*5113495bSYour Name  * @LL_AP_TYPE_HT: low latency AP type high throughput
3072*5113495bSYour Name  * @LL_AP_TYPE_LT: low latency AP type low latency
3073*5113495bSYour Name  * @LL_AP_TYPE_ANY: low latency AP type any
3074*5113495bSYour Name  */
3075*5113495bSYour Name enum ll_ap_type {
3076*5113495bSYour Name 	LL_AP_TYPE_HT = 0,
3077*5113495bSYour Name 	LL_AP_TYPE_LT = 1,
3078*5113495bSYour Name 	LL_AP_TYPE_ANY = 2,
3079*5113495bSYour Name };
3080*5113495bSYour Name 
3081*5113495bSYour Name /**
3082*5113495bSYour Name  * struct sap_ch_info - Structure holding all the information required to make
3083*5113495bSYour Name  * a decision for the best operating channel based on dfs formula.
3084*5113495bSYour Name  * @chan_freq: Channel frequency found in scanresult
3085*5113495bSYour Name  * @bss_count: Bss found in scanresult for this channel
3086*5113495bSYour Name  * @rssi_agr: Max value of rssi among all BSS(es) from scan result
3087*5113495bSYour Name  * for this channel.
3088*5113495bSYour Name  * @weight: Weightage of this channel
3089*5113495bSYour Name  * @weight_copy: copy of the original weight
3090*5113495bSYour Name  * @valid: Is this a valid center frequency for regulatory domain
3091*5113495bSYour Name  * @weight_calc_done: Weight calculation done for this channel
3092*5113495bSYour Name  */
3093*5113495bSYour Name struct sap_ch_info {
3094*5113495bSYour Name 	uint32_t chan_freq;
3095*5113495bSYour Name 	uint16_t bss_count;
3096*5113495bSYour Name 	int32_t rssi_agr;
3097*5113495bSYour Name 	uint32_t weight;
3098*5113495bSYour Name 	uint32_t weight_copy;
3099*5113495bSYour Name 	bool valid;
3100*5113495bSYour Name 	bool weight_calc_done;
3101*5113495bSYour Name };
3102*5113495bSYour Name 
3103*5113495bSYour Name /**
3104*5113495bSYour Name  * struct sap_sel_ch_info - Wrapper of sap_ch_info structure.
3105*5113495bSYour Name  * @ch_info: Ptr to the channel information.
3106*5113495bSYour Name  * @num_ch: Total num of channels.
3107*5113495bSYour Name  */
3108*5113495bSYour Name struct sap_sel_ch_info {
3109*5113495bSYour Name 	struct sap_ch_info *ch_info;
3110*5113495bSYour Name 	uint8_t num_ch;
3111*5113495bSYour Name };
3112*5113495bSYour Name 
3113*5113495bSYour Name /**
3114*5113495bSYour Name  * enum mlme_peer_oper_mode_ind - Peer mode indication type
3115*5113495bSYour Name  * @mlme_peer_ind_smps: spatial multiplexing power save
3116*5113495bSYour Name  * @mlme_peer_ind_omn: Operating mode notification
3117*5113495bSYour Name  * @mlme_peer_ind_omi: Operating mode indication
3118*5113495bSYour Name  */
3119*5113495bSYour Name enum mlme_peer_oper_mode_ind {
3120*5113495bSYour Name 	mlme_peer_ind_smps,
3121*5113495bSYour Name 	mlme_peer_ind_omn,
3122*5113495bSYour Name 	mlme_peer_ind_omi,
3123*5113495bSYour Name };
3124*5113495bSYour Name 
3125*5113495bSYour Name /**
3126*5113495bSYour Name  * struct peer_oper_mode_event - structure for peer oper mode indication data
3127*5113495bSYour Name  * @peer_mac_address: mac address of peer
3128*5113495bSYour Name  * @ind_type: indication type of type @enum mlme_peer_oper_mode_ind
3129*5113495bSYour Name  * @new_rxnss: New Rx NSS
3130*5113495bSYour Name  * @new_bw: New bandwidth
3131*5113495bSYour Name  * @new_txnss: New Tx NSS, valid only for mlme_peer_ind_omi
3132*5113495bSYour Name  * @new_disablemu: Disabled MU mode, valid only for mlme_peer_ind_omi
3133*5113495bSYour Name  */
3134*5113495bSYour Name struct peer_oper_mode_event {
3135*5113495bSYour Name 	struct qdf_mac_addr peer_mac_address;
3136*5113495bSYour Name 	uint32_t ind_type;
3137*5113495bSYour Name 	uint32_t new_rxnss;
3138*5113495bSYour Name 	uint32_t new_bw;
3139*5113495bSYour Name 	uint32_t new_txnss;
3140*5113495bSYour Name 	uint32_t new_disablemu;
3141*5113495bSYour Name };
3142*5113495bSYour Name #endif
3143