xref: /wlan-dirver/qca-wifi-host-cmn/os_if/linux/qca_vendor.h (revision 3149adf58a329e17232a4c0e58d460d025edd55a)
1 /*
2  * Copyright (c) 2012-2018 The Linux Foundation. All rights reserved.
3  *
4  * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
5  *
6  *
7  * Permission to use, copy, modify, and/or distribute this software for
8  * any purpose with or without fee is hereby granted, provided that the
9  * above copyright notice and this permission notice appear in all
10  * copies.
11  *
12  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
13  * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
14  * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
15  * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
16  * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
17  * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
18  * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
19  * PERFORMANCE OF THIS SOFTWARE.
20  */
21 
22 /*
23  * This file was originally distributed by Qualcomm Atheros, Inc.
24  * under proprietary terms before Copyright ownership was assigned
25  * to the Linux Foundation.
26  */
27 
28 /**
29  * DOC: declares vendor commands interfacing with linux kernel
30  */
31 
32 
33 #ifndef _WLAN_QCA_VENDOR_H_
34 #define _WLAN_QCA_VENDOR_H_
35 
36 /* Vendor id to be used in vendor specific command and events
37  * to user space.
38  * NOTE: The authoritative place for definition of QCA_NL80211_VENDOR_ID,
39  * vendor subcmd definitions prefixed with QCA_NL80211_VENDOR_SUBCMD, and
40  * qca_wlan_vendor_attr is open source file src/common/qca-vendor.h in
41  * git://w1.fi/srv/git/hostap.git; the values here are just a copy of that
42  */
43 
44 #define QCA_NL80211_VENDOR_ID           0x001374
45 
46 /**
47  * enum qca_nl80211_vendor_subcmds: NL 80211 vendor sub command
48  *
49  * @QCA_NL80211_VENDOR_SUBCMD_UNSPEC: Unspecified
50  * @QCA_NL80211_VENDOR_SUBCMD_TEST: Test
51  *	Sub commands 2 to 8 are not used
52  * @QCA_NL80211_VENDOR_SUBCMD_ROAMING: Roaming
53  * @QCA_NL80211_VENDOR_SUBCMD_AVOID_FREQUENCY: Avoid frequency.
54  * @QCA_NL80211_VENDOR_SUBCMD_DFS_CAPABILITY: DFS capability
55  * @QCA_NL80211_VENDOR_SUBCMD_NAN: Nan
56  * @QCA_NL80211_VENDOR_SUBCMD_STATS_EXT: Ext stats
57  * @QCA_NL80211_VENDOR_SUBCMD_LL_STATS_SET: Link layer stats set
58  * @QCA_NL80211_VENDOR_SUBCMD_LL_STATS_GET: Link layer stats get
59  * @QCA_NL80211_VENDOR_SUBCMD_LL_STATS_CLR: Link layer stats clear
60  * @QCA_NL80211_VENDOR_SUBCMD_LL_STATS_RADIO_RESULTS: Link layer stats radio
61  *	results
62  * @QCA_NL80211_VENDOR_SUBCMD_LL_STATS_IFACE_RESULTS: Link layer stats interface
63  *	results
64  * @QCA_NL80211_VENDOR_SUBCMD_LL_STATS_PEERS_RESULTS: Link layer stats peer
65  *	results
66  * @QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_START: Ext scan start
67  * @QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_STOP: Ext scan stop
68  * @QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_GET_VALID_CHANNELS: Ext scan get valid
69  *	channels
70  * @QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_GET_CAPABILITIES: Ext scan get capability
71  * @QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_GET_CACHED_RESULTS: Ext scan get cached
72  *	results
73  * @QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_SCAN_RESULTS_AVAILABLE: Ext scan results
74  *	available. Used when report_threshold is reached in scan cache.
75  * @QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_FULL_SCAN_RESULT: Ext scan full scan
76  *	result. Used to report scan results when each probe rsp. is received,
77  *	if report_events enabled in wifi_scan_cmd_params.
78  * @QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_SCAN_EVENT: Ext scan event from target.
79  *	Indicates progress of scanning state-machine.
80  * @QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_HOTLIST_AP_FOUND: Ext scan hotlist
81  *	ap found
82  * @QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_SET_BSSID_HOTLIST: Ext scan set hotlist
83  *	bssid
84  * @QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_RESET_BSSID_HOTLIST: Ext scan reset
85  *	hotlist bssid
86  * @QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_SIGNIFICANT_CHANGE: Ext scan significant
87  *	change
88  * @QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_SET_SIGNIFICANT_CHANGE: Ext scan set
89  *	significant change
90  *	ap found
91  * @QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_RESET_SIGNIFICANT_CHANGE: Ext scan reset
92  *	significant change
93  * @QCA_NL80211_VENDOR_SUBCMD_TDLS_ENABLE: Ext tdls enable
94  * @QCA_NL80211_VENDOR_SUBCMD_TDLS_DISABLE: Ext tdls disable
95  * @QCA_NL80211_VENDOR_SUBCMD_TDLS_GET_STATUS: Ext tdls get status
96  * @QCA_NL80211_VENDOR_SUBCMD_TDLS_STATE: Ext tdls state
97  * @QCA_NL80211_VENDOR_SUBCMD_GET_SUPPORTED_FEATURES: Get supported features
98  * @QCA_NL80211_VENDOR_SUBCMD_SCANNING_MAC_OUI: Set scanning_mac_oui
99  * @QCA_NL80211_VENDOR_SUBCMD_NO_DFS_FLAG: No DFS flag
100  * @QCA_NL80211_VENDOR_SUBCMD_GET_CONCURRENCY_MATRIX: Get Concurrency Matrix
101  * @QCA_NL80211_VENDOR_SUBCMD_KEY_MGMT_SET_KEY: Get the key mgmt offload keys
102  * @QCA_NL80211_VENDOR_SUBCMD_KEY_MGMT_ROAM_AUTH: After roaming, send the
103  * roaming and auth information.
104  * @QCA_NL80211_VENDOR_SUBCMD_OCB_SET_SCHED: Set OCB schedule
105  * @QCA_NL80211_VENDOR_SUBCMD_DO_ACS: ACS offload flag
106  * @QCA_NL80211_VENDOR_SUBCMD_GET_FEATURES: Get the supported features by the
107  * driver.
108  * @QCA_NL80211_VENDOR_SUBCMD_DFS_OFFLOAD_CAC_STARTED: Indicate that driver
109  *	started CAC on DFS channel
110  * @QCA_NL80211_VENDOR_SUBCMD_DFS_OFFLOAD_CAC_FINISHED: Indicate that driver
111  * 	completed the CAC check on DFS channel
112  * @QCA_NL80211_VENDOR_SUBCMD_DFS_OFFLOAD_CAC_ABORTED: Indicate that the CAC
113  * 	check was aborted by the driver
114  * @QCA_NL80211_VENDOR_SUBCMD_DFS_OFFLOAD_CAC_NOP_FINISHED: Indicate that the
115  * 	driver completed NOP
116  * @QCA_NL80211_VENDOR_SUBCMD_DFS_OFFLOAD_RADAR_DETECTED: Indicate that the
117  * 	driver detected radar signal on the current operating channel
118  * @QCA_NL80211_VENDOR_SUBCMD_GET_WIFI_INFO: get wlan driver information
119  * @QCA_NL80211_VENDOR_SUBCMD_WIFI_LOGGER_START: start wifi logger
120  * @QCA_NL80211_VENDOR_SUBCMD_WIFI_LOGGER_MEMORY_DUMP: memory dump request
121  * @QCA_NL80211_VENDOR_SUBCMD_GET_LOGGER_FEATURE_SET: get logger feature set
122  * @QCA_NL80211_VENDOR_SUBCMD_ROAM: roam
123  * @QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_SET_SSID_HOTLIST: extscan set ssid hotlist
124  * @QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_RESET_SSID_HOTLIST:
125  *	extscan reset ssid hotlist
126  * @QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_HOTLIST_SSID_FOUND: hotlist ssid found
127  * @QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_HOTLIST_SSID_LOST: hotlist ssid lost
128  * @QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_PNO_SET_LIST: set pno list
129  * @QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_PNO_SET_PASSPOINT_LIST: set passpoint list
130  * @QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_PNO_RESET_PASSPOINT_LIST:
131  *	reset passpoint list
132  * @QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_PNO_NETWORK_FOUND: pno network found
133  * @QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_PNO_PASSPOINT_NETWORK_FOUND:
134  *	passpoint network found
135  * @QCA_NL80211_VENDOR_SUBCMD_SET_WIFI_CONFIGURATION: set wifi config
136  * @QCA_NL80211_VENDOR_SUBCMD_GET_WIFI_CONFIGURATION: get wifi config
137  * @QCA_NL80211_VENDOR_SUBCMD_GET_LOGGER_FEATURE_SET: get logging features
138  * @QCA_NL80211_VENDOR_SUBCMD_LINK_PROPERTIES: get link properties
139  * @QCA_NL80211_VENDOR_SUBCMD_GW_PARAM_CONFIG: set gateway parameters
140  * @QCA_NL80211_VENDOR_SUBCMD_GET_PREFERRED_FREQ_LIST: get preferred channel
141 	list
142  * @QCA_NL80211_VENDOR_SUBCMD_SET_PROBABLE_OPER_CHANNEL: channel hint
143  * @QCA_NL80211_VENDOR_SUBCMD_SETBAND: vendor setband command
144  * @QCA_NL80211_VENDOR_SUBCMD_TRIGGER_SCAN: venodr scan command
145  * @QCA_NL80211_VENDOR_SUBCMD_SCAN_DONE: vendor scan complete
146  * @QCA_NL80211_VENDOR_SUBCMD_ABORT_SCAN: vendor abort scan
147  * @QCA_NL80211_VENDOR_SUBCMD_OTA_TEST: enable OTA test
148  * @QCA_NL80211_VENDOR_SUBCMD_SET_TXPOWER_SCALE: set tx power by percentage
149  * @QCA_NL80211_VENDOR_SUBCMD_SET_TXPOWER_SCALE_DECR_DB: reduce tx power by DB
150  * @QCA_NL80211_VENDOR_SUBCMD_SET_SAP_CONFIG: SAP configuration
151  * @QCA_NL80211_VENDOR_SUBCMD_TSF: TSF operations command
152  * @QCA_NL80211_VENDOR_SUBCMD_WISA: WISA mode configuration
153  * @QCA_NL80211_VENDOR_SUBCMD_P2P_LISTEN_OFFLOAD_START: Command used to
154  *	start the P2P Listen Offload function in device and pass the listen
155  *	channel, period, interval, count, number of device types, device
156  *	types and vendor information elements to device driver and firmware.
157  * @QCA_NL80211_VENDOR_SUBCMD_P2P_LISTEN_OFFLOAD_STOP: Command/event used to
158  *	indicate stop request/response of the P2P Listen Offload function in
159  *	device. As an event, it indicates either the feature stopped after it
160  *	was already running or feature has actually failed to start.
161  * @QCA_NL80211_VENDOR_SUBCMD_GET_STATION: send BSS Information
162  * @QCA_NL80211_VENDOR_SUBCMD_SAP_CONDITIONAL_CHAN_SWITCH: After SAP starts
163  *     beaconing, this sub command provides the driver, the frequencies on the
164  *     5 GHz to check for any radar activity. Driver selects one channel from
165  *     this priority list provided through
166  *     @QCA_WLAN_VENDOR_ATTR_SAP_CONDITIONAL_CHAN_SWITCH_FREQ_LIST and starts
167  *     to check for radar activity on it. If no radar activity is detected
168  *     during the channel availability check period, driver internally switches
169  *     to the selected frequency of operation. If the frequency is zero, driver
170  *     internally selects a channel. The status of this conditional switch is
171  *     indicated through an event using the same sub command through
172  *     @QCA_WLAN_VENDOR_ATTR_SAP_CONDITIONAL_CHAN_SWITCH_STATUS. Attributes are
173  *     listed in qca_wlan_vendor_attr_sap_conditional_chan_switch
174  * @QCA_NL80211_VENDOR_SUBCMD_LL_STATS_EXT: Command/event used to config
175  *      indication period and threshold for MAC layer counters.
176  * @QCA_NL80211_VENDOR_SUBCMD_CONFIGURE_TDLS: Configure the TDLS behavior
177  *	in the host driver. The different TDLS configurations are defined
178  *	by the attributes in enum qca_wlan_vendor_attr_tdls_configuration.
179  * @QCA_NL80211_VENDOR_SUBCMD_GET_HE_CAPABILITIES: Get HE related capabilities
180  * @QCA_NL80211_VENDOR_SUBCMD_SET_SAR_LIMITS:Set the Specific Absorption Rate
181  *	(SAR) power limits. A critical regulation for FCC compliance, OEMs
182  *	require methods to set SAR limits on TX power of WLAN/WWAN.
183  *	enum qca_vendor_attr_sar_limits attributes are used with this command.
184  * @QCA_NL80211_VENDOR_SUBCMD_EXTERNAL_ACS: Vendor command used to get/set
185  *      configuration of vendor ACS.
186  * @QCA_NL80211_VENDOR_SUBCMD_CHIP_PWRSAVE_FAILURE: Vendor event carrying the
187  *      requisite information leading to a power save failure. The information
188  *      carried as part of this event is represented by the
189  *      enum qca_attr_chip_power_save_failure attributes.
190  * @QCA_NL80211_VENDOR_SUBCMD_NUD_STATS_SET: Start/Stop the NUD statistics
191  *      collection. Uses attributes defined in enum qca_attr_nud_stats_set.
192  * @QCA_NL80211_VENDOR_SUBCMD_NUD_STATS_GET: Get the NUD statistics. These
193  *      statistics are represented by the enum qca_attr_nud_stats_get
194  *      attributes.
195  * @QCA_NL80211_VENDOR_SUBCMD_FETCH_BSS_TRANSITION_STATUS: Sub-command to fetch
196  *      the BSS transition status, whether accept or reject, for a list of
197  *      candidate BSSIDs provided by the userspace. This uses the vendor
198  *      attributes QCA_WLAN_VENDOR_ATTR_BTM_MBO_TRANSITION_REASON and
199  *      QCA_WLAN_VENDOR_ATTR_BTM_CANDIDATE_INFO. The userspace shall specify
200  *      the attributes QCA_WLAN_VENDOR_ATTR_BTM_MBO_TRANSITION_REASON and an
201  *      array of QCA_WLAN_VENDOR_ATTR_BTM_CANDIDATE_INFO_BSSID nested in
202  *      QCA_WLAN_VENDOR_ATTR_BTM_CANDIDATE_INFO in the request. In the response
203  *      the driver shall specify array of
204  *      QCA_WLAN_VENDOR_ATTR_BTM_CANDIDATE_INFO_BSSID and
205  *      QCA_WLAN_VENDOR_ATTR_BTM_CANDIDATE_INFO_STATUS pairs nested in
206  *      QCA_WLAN_VENDOR_ATTR_BTM_CANDIDATE_INFO.
207  * @QCA_NL80211_VENDOR_SUBCMD_SET_TRACE_LEVEL: Set the trace level for a
208  *      specific QCA module. The trace levels are represented by
209  *      enum qca_attr_trace_level attributes.
210  * @QCA_NL80211_VENDOR_SUBCMD_BRP_SET_ANT_LIMIT: Set the Beam Refinement
211  *      Protocol antenna limit in different modes. See enum
212  *      qca_wlan_vendor_attr_brp_ant_limit_mode.
213  * @QCA_NL80211_VENDOR_SUBCMD_SPECTRAL_SCAN_START: Start spectral scan. The scan
214  *      parameters are specified by enum qca_wlan_vendor_attr_spectral_scan.
215  *      This returns a cookie (%QCA_WLAN_VENDOR_ATTR_SPECTRAL_SCAN_COOKIE)
216  *      identifying the operation in success case.
217  * @QCA_NL80211_VENDOR_SUBCMD_SPECTRAL_SCAN_STOP: Stop spectral scan. This uses
218  *      a cookie (%QCA_WLAN_VENDOR_ATTR_SPECTRAL_SCAN_COOKIE) from
219  * @QCA_NL80211_VENDOR_SUBCMD_SPECTRAL_SCAN_START to identify the scan to
220  *      be stopped.
221  * @QCA_NL80211_VENDOR_SUBCMD_ACTIVE_TOS: Set the active Type Of Service on the
222  *     specific interface. This can be used to modify some of the low level
223  *     scan parameters (off channel dwell time, home channel time) in the
224  *     driver/firmware. These parameters are maintained within the host
225  *     driver.
226  *     This command is valid only when the interface is in the connected
227  *     state.
228  *     These scan parameters shall be reset by the driver/firmware once
229  *     disconnected. The attributes used with this command are defined in
230  *     enum qca_wlan_vendor_attr_active_tos.
231  * @QCA_NL80211_VENDOR_SUBCMD_HANG: Event indicating to the user space that the
232  *      driver has detected an internal failure. This event carries the
233  *      information indicating the reason that triggered this detection. The
234  *      attributes for this command are defined in
235  *      enum qca_wlan_vendor_attr_hang.
236  * @QCA_NL80211_VENDOR_SUBCMD_SPECTRAL_SCAN_GET_CONFIG: Get the current values
237  *     of spectral parameters used. The spectral scan parameters are specified
238  *     by enum qca_wlan_vendor_attr_spectral_scan.
239  * @QCA_NL80211_VENDOR_SUBCMD_SPECTRAL_SCAN_GET_DIAG_STATS: Get the debug stats
240  *     for spectral scan functionality. The debug stats are specified by
241  *     enum qca_wlan_vendor_attr_spectral_diag_stats.
242  * @QCA_NL80211_VENDOR_SUBCMD_SPECTRAL_SCAN_GET_CAP_INFO: Get spectral
243  *     scan system capabilities. The capabilities are specified
244  *     by enum qca_wlan_vendor_attr_spectral_cap.
245  * @QCA_NL80211_VENDOR_SUBCMD_SPECTRAL_SCAN_GET_STATUS: Get the current
246  *     status of spectral scan. The status values are specified
247  *     by enum qca_wlan_vendor_attr_spectral_scan_status.
248  * @QCA_NL80211_VENDOR_SUBCMD_HTT_STATS: Request the firmware
249  *     DP stats for a particualr stats type for response evnet
250  *     it carries the stats data sent from the FW
251  * @QCA_NL80211_VENDOR_SUBCMD_GET_RROP_INFO: Get vendor specific Representative
252  *     RF Operating Parameter (RROP) information. The attributes for this
253  *     information are defined in enum qca_wlan_vendor_attr_rrop_info. This is
254  *     intended for use by external Auto Channel Selection applications.
255  * @QCA_NL80211_VENDOR_SUBCMD_GET_SAR_LIMITS: Get the Specific Absorption Rate
256  *	(SAR) power limits. This is a companion to the command
257  *	@QCA_NL80211_VENDOR_SUBCMD_SET_SAR_LIMITS and is used to retrieve the
258  *	settings currently in use. The attributes returned by this command are
259  *	defined by enum qca_vendor_attr_sar_limits.
260  * @QCA_NL80211_VENDOR_SUBCMD_WLAN_MAC_INFO: Provides the current behaviour of
261  *      the WLAN hardware MAC's associated with each WLAN netdev interface.
262  *      This works both as a query (user space asks the current mode) or event
263  *      interface (driver advertizing the current mode to the user space).
264  *      Driver does not trigger this event for temporary hardware mode changes.
265  *      Mode changes w.r.t Wi-Fi connection updation ( VIZ creation / deletion,
266  *      channel change etc ) are updated with this event. Attributes for this
267  *      interface are defined in enum qca_wlan_vendor_attr_mac.
268  * @QCA_NL80211_VENDOR_SUBCMD_SET_QDEPTH_THRESH: Set MSDU queue depth threshold
269  *	per peer per TID. Attributes for this command are define in
270  *	enum qca_wlan_set_qdepth_thresh_attr
271  * @QCA_NL80211_VENDOR_SUBCMD_WIFI_TEST_CONFIGURATION: Sub command to set WiFi
272  *	test configuration. Attributes for this command are defined in
273  *	enum qca_wlan_vendor_attr_wifi_test_config.
274  *
275  */
276 
277 enum qca_nl80211_vendor_subcmds {
278 	QCA_NL80211_VENDOR_SUBCMD_UNSPEC = 0,
279 	QCA_NL80211_VENDOR_SUBCMD_TEST = 1,
280 	QCA_NL80211_VENDOR_SUBCMD_ROAMING = 9,
281 	QCA_NL80211_VENDOR_SUBCMD_AVOID_FREQUENCY = 10,
282 	QCA_NL80211_VENDOR_SUBCMD_DFS_CAPABILITY = 11,
283 	QCA_NL80211_VENDOR_SUBCMD_NAN = 12,
284 	QCA_NL80211_VENDOR_SUBCMD_STATS_EXT = 13,
285 
286 	QCA_NL80211_VENDOR_SUBCMD_LL_STATS_SET = 14,
287 	QCA_NL80211_VENDOR_SUBCMD_LL_STATS_GET = 15,
288 	QCA_NL80211_VENDOR_SUBCMD_LL_STATS_CLR = 16,
289 	QCA_NL80211_VENDOR_SUBCMD_LL_STATS_RADIO_RESULTS = 17,
290 	QCA_NL80211_VENDOR_SUBCMD_LL_STATS_IFACE_RESULTS = 18,
291 	QCA_NL80211_VENDOR_SUBCMD_LL_STATS_PEERS_RESULTS = 19,
292 
293 	QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_START = 20,
294 	QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_STOP = 21,
295 	QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_GET_VALID_CHANNELS = 22,
296 	QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_GET_CAPABILITIES = 23,
297 	QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_GET_CACHED_RESULTS = 24,
298 	QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_SCAN_RESULTS_AVAILABLE = 25,
299 	QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_FULL_SCAN_RESULT = 26,
300 	QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_SCAN_EVENT = 27,
301 	QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_HOTLIST_AP_FOUND = 28,
302 	QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_SET_BSSID_HOTLIST = 29,
303 	QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_RESET_BSSID_HOTLIST = 30,
304 	QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_SIGNIFICANT_CHANGE = 31,
305 	QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_SET_SIGNIFICANT_CHANGE = 32,
306 	QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_RESET_SIGNIFICANT_CHANGE = 33,
307 
308 	QCA_NL80211_VENDOR_SUBCMD_TDLS_ENABLE = 34,
309 	QCA_NL80211_VENDOR_SUBCMD_TDLS_DISABLE = 35,
310 	QCA_NL80211_VENDOR_SUBCMD_TDLS_GET_STATUS = 36,
311 	QCA_NL80211_VENDOR_SUBCMD_TDLS_STATE = 37,
312 
313 	QCA_NL80211_VENDOR_SUBCMD_GET_SUPPORTED_FEATURES = 38,
314 
315 	QCA_NL80211_VENDOR_SUBCMD_SCANNING_MAC_OUI = 39,
316 	QCA_NL80211_VENDOR_SUBCMD_NO_DFS_FLAG = 40,
317 
318 	QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_HOTLIST_AP_LOST = 41,
319 
320 	/* Get Concurrency Matrix */
321 	QCA_NL80211_VENDOR_SUBCMD_GET_CONCURRENCY_MATRIX = 42,
322 
323 	QCA_NL80211_VENDOR_SUBCMD_KEY_MGMT_SET_KEY = 50,
324 	QCA_NL80211_VENDOR_SUBCMD_KEY_MGMT_ROAM_AUTH = 51,
325 	QCA_NL80211_VENDOR_SUBCMD_APFIND = 52,
326 
327 	/* Deprecated */
328 	QCA_NL80211_VENDOR_SUBCMD_OCB_SET_SCHED = 53,
329 
330 	QCA_NL80211_VENDOR_SUBCMD_DO_ACS = 54,
331 
332 	QCA_NL80211_VENDOR_SUBCMD_GET_FEATURES = 55,
333 
334 	/* Off loaded DFS events */
335 	QCA_NL80211_VENDOR_SUBCMD_DFS_OFFLOAD_CAC_STARTED = 56,
336 	QCA_NL80211_VENDOR_SUBCMD_DFS_OFFLOAD_CAC_FINISHED = 57,
337 	QCA_NL80211_VENDOR_SUBCMD_DFS_OFFLOAD_CAC_ABORTED = 58,
338 	QCA_NL80211_VENDOR_SUBCMD_DFS_OFFLOAD_CAC_NOP_FINISHED = 59,
339 	QCA_NL80211_VENDOR_SUBCMD_DFS_OFFLOAD_RADAR_DETECTED = 60,
340 
341 	QCA_NL80211_VENDOR_SUBCMD_GET_WIFI_INFO = 61,
342 	QCA_NL80211_VENDOR_SUBCMD_WIFI_LOGGER_START = 62,
343 	QCA_NL80211_VENDOR_SUBCMD_WIFI_LOGGER_MEMORY_DUMP = 63,
344 	QCA_NL80211_VENDOR_SUBCMD_ROAM = 64,
345 	QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_SET_SSID_HOTLIST = 65,
346 	QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_RESET_SSID_HOTLIST = 66,
347 	QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_HOTLIST_SSID_FOUND = 67,
348 	QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_HOTLIST_SSID_LOST = 68,
349 	QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_PNO_SET_LIST = 69,
350 	QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_PNO_SET_PASSPOINT_LIST = 70,
351 	QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_PNO_RESET_PASSPOINT_LIST = 71,
352 	QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_PNO_NETWORK_FOUND = 72,
353 	QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_PNO_PASSPOINT_NETWORK_FOUND = 73,
354 
355 	/* Wi-Fi Configuration subcommands */
356 	QCA_NL80211_VENDOR_SUBCMD_SET_WIFI_CONFIGURATION = 74,
357 	QCA_NL80211_VENDOR_SUBCMD_GET_WIFI_CONFIGURATION = 75,
358 	QCA_NL80211_VENDOR_SUBCMD_GET_LOGGER_FEATURE_SET = 76,
359 	QCA_NL80211_VENDOR_SUBCMD_GET_RING_DATA = 77,
360 
361 	QCA_NL80211_VENDOR_SUBCMD_TDLS_GET_CAPABILITIES = 78,
362 	QCA_NL80211_VENDOR_SUBCMD_OFFLOADED_PACKETS = 79,
363 	QCA_NL80211_VENDOR_SUBCMD_MONITOR_RSSI = 80,
364 	QCA_NL80211_VENDOR_SUBCMD_NDP = 81,
365 
366 	/* NS Offload enable/disable cmd */
367 	QCA_NL80211_VENDOR_SUBCMD_ND_OFFLOAD = 82,
368 
369 	QCA_NL80211_VENDOR_SUBCMD_PACKET_FILTER = 83,
370 	QCA_NL80211_VENDOR_SUBCMD_GET_BUS_SIZE = 84,
371 
372 	QCA_NL80211_VENDOR_SUBCMD_GET_WAKE_REASON_STATS = 85,
373 
374 	QCA_NL80211_VENDOR_SUBCMD_DATA_OFFLOAD = 91,
375 	/* OCB commands */
376 	QCA_NL80211_VENDOR_SUBCMD_OCB_SET_CONFIG = 92,
377 	QCA_NL80211_VENDOR_SUBCMD_OCB_SET_UTC_TIME = 93,
378 	QCA_NL80211_VENDOR_SUBCMD_OCB_START_TIMING_ADVERT = 94,
379 	QCA_NL80211_VENDOR_SUBCMD_OCB_STOP_TIMING_ADVERT = 95,
380 	QCA_NL80211_VENDOR_SUBCMD_OCB_GET_TSF_TIMER = 96,
381 	QCA_NL80211_VENDOR_SUBCMD_DCC_GET_STATS = 97,
382 	QCA_NL80211_VENDOR_SUBCMD_DCC_CLEAR_STATS = 98,
383 	QCA_NL80211_VENDOR_SUBCMD_DCC_UPDATE_NDL = 99,
384 	QCA_NL80211_VENDOR_SUBCMD_DCC_STATS_EVENT = 100,
385 
386 	/* subcommand to get link properties */
387 	QCA_NL80211_VENDOR_SUBCMD_LINK_PROPERTIES = 101,
388 	/* LFR Subnet Detection */
389 	QCA_NL80211_VENDOR_SUBCMD_GW_PARAM_CONFIG = 102,
390 
391 	/* DBS subcommands */
392 	QCA_NL80211_VENDOR_SUBCMD_GET_PREFERRED_FREQ_LIST = 103,
393 	QCA_NL80211_VENDOR_SUBCMD_SET_PROBABLE_OPER_CHANNEL = 104,
394 
395 	/* Vendor setband command */
396 	QCA_NL80211_VENDOR_SUBCMD_SETBAND = 105,
397 
398 	/* Vendor scan commands */
399 	QCA_NL80211_VENDOR_SUBCMD_TRIGGER_SCAN = 106,
400 	QCA_NL80211_VENDOR_SUBCMD_SCAN_DONE = 107,
401 
402 	/* OTA test subcommand */
403 	QCA_NL80211_VENDOR_SUBCMD_OTA_TEST = 108,
404 	/* Tx power scaling subcommands */
405 	QCA_NL80211_VENDOR_SUBCMD_SET_TXPOWER_SCALE = 109,
406 	/* Tx power scaling in db subcommands */
407 	QCA_NL80211_VENDOR_SUBCMD_SET_TXPOWER_SCALE_DECR_DB = 115,
408 	QCA_NL80211_VENDOR_SUBCMD_ACS_POLICY = 116,
409 	QCA_NL80211_VENDOR_SUBCMD_STA_CONNECT_ROAM_POLICY = 117,
410 	QCA_NL80211_VENDOR_SUBCMD_SET_SAP_CONFIG  = 118,
411 	QCA_NL80211_VENDOR_SUBCMD_TSF = 119,
412 	QCA_NL80211_VENDOR_SUBCMD_WISA = 120,
413 	QCA_NL80211_VENDOR_SUBCMD_GET_STATION = 121,
414 	QCA_NL80211_VENDOR_SUBCMD_P2P_LISTEN_OFFLOAD_START = 122,
415 	QCA_NL80211_VENDOR_SUBCMD_P2P_LISTEN_OFFLOAD_STOP = 123,
416 	QCA_NL80211_VENDOR_SUBCMD_SAP_CONDITIONAL_CHAN_SWITCH = 124,
417 	QCA_NL80211_VENDOR_SUBCMD_GPIO_CONFIG_COMMAND = 125,
418 
419 	QCA_NL80211_VENDOR_SUBCMD_GET_HW_CAPABILITY = 126,
420 	QCA_NL80211_VENDOR_SUBCMD_LL_STATS_EXT = 127,
421 	/* FTM/indoor location subcommands */
422 	QCA_NL80211_VENDOR_SUBCMD_LOC_GET_CAPA = 128,
423 	QCA_NL80211_VENDOR_SUBCMD_FTM_START_SESSION = 129,
424 	QCA_NL80211_VENDOR_SUBCMD_FTM_ABORT_SESSION = 130,
425 	QCA_NL80211_VENDOR_SUBCMD_FTM_MEAS_RESULT = 131,
426 	QCA_NL80211_VENDOR_SUBCMD_FTM_SESSION_DONE = 132,
427 	QCA_NL80211_VENDOR_SUBCMD_FTM_CFG_RESPONDER = 133,
428 	QCA_NL80211_VENDOR_SUBCMD_AOA_MEAS = 134,
429 	QCA_NL80211_VENDOR_SUBCMD_AOA_ABORT_MEAS = 135,
430 	QCA_NL80211_VENDOR_SUBCMD_AOA_MEAS_RESULT = 136,
431 
432 	/* Encrypt/Decrypt command */
433 	QCA_NL80211_VENDOR_SUBCMD_ENCRYPTION_TEST = 137,
434 
435 	QCA_NL80211_VENDOR_SUBCMD_GET_CHAIN_RSSI = 138,
436 	/* DMG low level RF sector operations */
437 	QCA_NL80211_VENDOR_SUBCMD_DMG_RF_GET_SECTOR_CFG = 139,
438 	QCA_NL80211_VENDOR_SUBCMD_DMG_RF_SET_SECTOR_CFG = 140,
439 	QCA_NL80211_VENDOR_SUBCMD_DMG_RF_GET_SELECTED_SECTOR = 141,
440 	QCA_NL80211_VENDOR_SUBCMD_DMG_RF_SET_SELECTED_SECTOR = 142,
441 
442 	/* Configure the TDLS mode from user space */
443 	QCA_NL80211_VENDOR_SUBCMD_CONFIGURE_TDLS = 143,
444 
445 	QCA_NL80211_VENDOR_SUBCMD_GET_HE_CAPABILITIES = 144,
446 
447 	/* Vendor abort scan command */
448 	QCA_NL80211_VENDOR_SUBCMD_ABORT_SCAN = 145,
449 
450 	/* Set Specific Absorption Rate(SAR) Power Limits */
451 	QCA_NL80211_VENDOR_SUBCMD_SET_SAR_LIMITS = 146,
452 
453 	/* External Auto channel configuration setting */
454 	QCA_NL80211_VENDOR_SUBCMD_EXTERNAL_ACS = 147,
455 
456 	QCA_NL80211_VENDOR_SUBCMD_CHIP_PWRSAVE_FAILURE = 148,
457 	QCA_NL80211_VENDOR_SUBCMD_NUD_STATS_SET = 149,
458 	QCA_NL80211_VENDOR_SUBCMD_NUD_STATS_GET = 150,
459 	QCA_NL80211_VENDOR_SUBCMD_FETCH_BSS_TRANSITION_STATUS = 151,
460 
461 	/* Set the trace level for QDF */
462 	QCA_NL80211_VENDOR_SUBCMD_SET_TRACE_LEVEL = 152,
463 
464 	QCA_NL80211_VENDOR_SUBCMD_BRP_SET_ANT_LIMIT = 153,
465 
466 	QCA_NL80211_VENDOR_SUBCMD_SPECTRAL_SCAN_START = 154,
467 	QCA_NL80211_VENDOR_SUBCMD_SPECTRAL_SCAN_STOP = 155,
468 	QCA_NL80211_VENDOR_SUBCMD_ACTIVE_TOS = 156,
469 	QCA_NL80211_VENDOR_SUBCMD_HANG = 157,
470 	QCA_NL80211_VENDOR_SUBCMD_SPECTRAL_SCAN_GET_CONFIG = 158,
471 	QCA_NL80211_VENDOR_SUBCMD_SPECTRAL_SCAN_GET_DIAG_STATS = 159,
472 	QCA_NL80211_VENDOR_SUBCMD_SPECTRAL_SCAN_GET_CAP_INFO = 160,
473 	QCA_NL80211_VENDOR_SUBCMD_SPECTRAL_SCAN_GET_STATUS = 161,
474 	QCA_NL80211_VENDOR_SUBCMD_HTT_STATS = 162,
475 	QCA_NL80211_VENDOR_SUBCMD_GET_RROP_INFO = 163,
476 	QCA_NL80211_VENDOR_SUBCMD_GET_SAR_LIMITS = 164,
477 	QCA_NL80211_VENDOR_SUBCMD_WLAN_MAC_INFO = 165,
478 	QCA_NL80211_VENDOR_SUBCMD_SET_QDEPTH_THRESH = 166,
479 	/* Wi-Fi test configuration subcommand */
480 	QCA_NL80211_VENDOR_SUBCMD_WIFI_TEST_CONFIGURATION = 169,
481 };
482 
483 enum qca_wlan_vendor_tos {
484 	QCA_WLAN_VENDOR_TOS_BK = 0,
485 	QCA_WLAN_VENDOR_TOS_BE = 1,
486 	QCA_WLAN_VENDOR_TOS_VI = 2,
487 	QCA_WLAN_VENDOR_TOS_VO = 3,
488 };
489 
490 /**
491  * enum qca_wlan_vendor_attr_active_tos - Used by the vendor command
492  * QCA_NL80211_VENDOR_SUBCMD_ACTIVE_TOS.
493  */
494 enum qca_wlan_vendor_attr_active_tos {
495 	QCA_WLAN_VENDOR_ATTR_ACTIVE_TOS_INVALID = 0,
496 	/* Type Of Service - Represented by qca_wlan_vendor_tos */
497 	QCA_WLAN_VENDOR_ATTR_ACTIVE_TOS = 1,
498 	/* Flag attribute representing the start (attribute included) or stop
499 	 * (attribute not included) of the respective TOS.
500 	 */
501 	QCA_WLAN_VENDOR_ATTR_ACTIVE_TOS_START = 2,
502 	QCA_WLAN_VENDOR_ATTR_ACTIVE_TOS_MAX = 3,
503 };
504 
505 enum qca_wlan_vendor_hang_reason {
506 	/* Unspecified reason */
507 	QCA_WLAN_HANG_REASON_UNSPECIFIED = 0,
508 	/* No Map for the MAC entry for the received frame */
509 	QCA_WLAN_HANG_RX_HASH_NO_ENTRY_FOUND = 1,
510 	/* peer deletion timeout happened */
511 	QCA_WLAN_HANG_PEER_DELETION_TIMEDOUT = 2,
512 	/* peer unmap timeout */
513 	QCA_WLAN_HANG_PEER_UNMAP_TIMEDOUT = 3,
514 	/* Scan request timed out */
515 	QCA_WLAN_HANG_SCAN_REQ_EXPIRED = 4,
516 	/* Consecutive Scan attempt failures */
517 	QCA_WLAN_HANG_SCAN_ATTEMPT_FAILURES = 5,
518 	/* Unable to get the message buffer */
519 	QCA_WLAN_HANG_GET_MSG_BUFF_FAILURE = 6,
520 	/* Current command processing is timedout */
521 	QCA_WLAN_HANG_ACTIVE_LIST_TIMEOUT = 7,
522 	/* Timeout for an ACK from FW for suspend request */
523 	QCA_WLAN_HANG_SUSPEND_TIMEOUT = 8,
524 	/* Timeout for an ACK from FW for resume request */
525 	QCA_WLAN_HANG_RESUME_TIMEOUT = 9,
526 	/* Transmission timeout for consecutive data frames */
527 	QCA_WLAN_HANG_TRANSMISSIONS_TIMEOUT = 10,
528 	/* Timeout for the TX completion status of data frame */
529 	QCA_WLAN_HANG_TX_COMPLETE_TIMEOUT = 11,
530 	/* DXE failure for tx/Rx, DXE resource unavailability */
531 	QCA_WLAN_HANG_DXE_FAILURE = 12,
532 	/* WMI pending commands exceed the maximum count */
533 	QCA_WLAN_HANG_WMI_EXCEED_MAX_PENDING_CMDS = 13,
534 };
535 
536 /**
537  * enum qca_wlan_vendor_attr_hang - Used by the vendor command
538  * QCA_NL80211_VENDOR_SUBCMD_HANG.
539  */
540 enum qca_wlan_vendor_attr_hang {
541 	QCA_WLAN_VENDOR_ATTR_HANG_INVALID = 0,
542 	/*
543 	 * Reason for the Hang - Represented by enum
544 	 * qca_wlan_vendor_hang_reason.
545 	 */
546 	QCA_WLAN_VENDOR_ATTR_HANG_REASON = 1,
547 
548 	QCA_WLAN_VENDOR_ATTR_HANG_AFTER_LAST,
549 	QCA_WLAN_VENDOR_ATTR_HANG_MAX =
550 		QCA_WLAN_VENDOR_ATTR_HANG_AFTER_LAST - 1,
551 };
552 
553 /**
554  * enum qca_vendor_attr_set_trace_level - Config params for QDF set trace level
555  * @QCA_WLAN_VENDOR_ATTR_SET_TRACE_LEVEL_INVALID: Invalid trace level
556  * @QCA_WLAN_VENDOR_ATTR_SET_TRACE_LEVEL_PARAM : Trace level parameters
557  * @QCA_WLAN_VENDOR_ATTR_SET_TRACE_LEVEL_MODULE_ID : Module of which trace
558     level needs to be updated.
559  * @QCA_WLAN_VENDOR_ATTR_SET_TRACE_LEVEL_TRACE_MASK : verbose mask, which need
560  * to be set.
561  * @QCA_WLAN_VENDOR_ATTR_SET_TRACE_LEVEL_AFTER_LAST : after last.
562  * @QCA_WLAN_VENDOR_ATTR_SET_TRACE_LEVEL_MAX : Max attribute.
563  */
564 enum qca_vendor_attr_set_trace_level {
565 	QCA_WLAN_VENDOR_ATTR_SET_TRACE_LEVEL_INVALID = 0,
566 	/*
567 	* Array of QCA_WLAN_VENDOR_ATTR_SET_TRACE_LEVEL_PARAM
568 	* attributes.
569 	*/
570 	QCA_WLAN_VENDOR_ATTR_SET_TRACE_LEVEL_PARAM = 1,
571 	QCA_WLAN_VENDOR_ATTR_SET_TRACE_LEVEL_MODULE_ID = 2,
572 	QCA_WLAN_VENDOR_ATTR_SET_TRACE_LEVEL_TRACE_MASK = 3,
573 	QCA_WLAN_VENDOR_ATTR_SET_TRACE_LEVEL_AFTER_LAST,
574 	QCA_WLAN_VENDOR_ATTR_SET_TRACE_LEVEL_MAX =
575 		QCA_WLAN_VENDOR_ATTR_SET_TRACE_LEVEL_AFTER_LAST - 1,
576 };
577 
578 /**
579  * enum qca_wlan_vendor_attr_get_station - Sub commands used by
580  * QCA_NL80211_VENDOR_SUBCMD_GET_STATION to get the corresponding
581  * station information. The information obtained through these
582  * commands signify the current info in connected state and
583  * latest cached information during the connected state , if queried
584  * when in disconnected state.
585  *
586  * @QCA_WLAN_VENDOR_ATTR_GET_STATION_INVALID: Invalid attribute
587  * @QCA_WLAN_VENDOR_ATTR_GET_STATION_INFO: bss info
588  * @QCA_WLAN_VENDOR_ATTR_GET_STATION_ASSOC_FAIL_REASON: assoc fail reason
589  * @QCA_WLAN_VENDOR_ATTR_GET_STATION_REMOTE: remote station info
590  * @QCA_WLAN_VENDOR_ATTR_GET_STATION_AFTER_LAST: After last
591  */
592 enum qca_wlan_vendor_attr_get_station {
593 	QCA_WLAN_VENDOR_ATTR_GET_STATION_INVALID = 0,
594 	QCA_WLAN_VENDOR_ATTR_GET_STATION_INFO,
595 	QCA_WLAN_VENDOR_ATTR_GET_STATION_ASSOC_FAIL_REASON,
596 	QCA_WLAN_VENDOR_ATTR_GET_STATION_REMOTE,
597 
598 	/* keep last */
599 	QCA_WLAN_VENDOR_ATTR_GET_STATION_AFTER_LAST,
600 	QCA_WLAN_VENDOR_ATTR_GET_STATION_MAX =
601 		QCA_WLAN_VENDOR_ATTR_GET_STATION_AFTER_LAST - 1,
602 };
603 
604 /**
605  * enum qca_wlan_802_11_mode - dot11 mode
606  * @QCA_WLAN_802_11_MODE_11B: mode B
607  * @QCA_WLAN_802_11_MODE_11G: mode G
608  * @QCA_WLAN_802_11_MODE_11N: mode N
609  * @QCA_WLAN_802_11_MODE_11A: mode A
610  * @QCA_WLAN_802_11_MODE_11AC: mode AC
611  * @QCA_WLAN_802_11_MODE_INVALID: Invalid dot11 mode
612  */
613 enum qca_wlan_802_11_mode {
614 	QCA_WLAN_802_11_MODE_11B,
615 	QCA_WLAN_802_11_MODE_11G,
616 	QCA_WLAN_802_11_MODE_11N,
617 	QCA_WLAN_802_11_MODE_11A,
618 	QCA_WLAN_802_11_MODE_11AC,
619 	QCA_WLAN_802_11_MODE_INVALID,
620 };
621 
622 /**
623  * enum qca_wlan_auth_type - Authentication key management type
624  * @QCA_WLAN_AUTH_TYPE_INVALID: Invalid key management type
625  * @QCA_WLAN_AUTH_TYPE_OPEN: Open key
626  * @QCA_WLAN_AUTH_TYPE_SHARED: shared key
627  * @QCA_WLAN_AUTH_TYPE_WPA: wpa key
628  * @QCA_WLAN_AUTH_TYPE_WPA_PSK: wpa psk key
629  * @QCA_WLAN_AUTH_TYPE_WPA_NONE: wpa none key
630  * @QCA_WLAN_AUTH_TYPE_RSN: rsn key
631  * @QCA_WLAN_AUTH_TYPE_RSN_PSK: rsn psk key
632  * @QCA_WLAN_AUTH_TYPE_FT: ft key
633  * @QCA_WLAN_AUTH_TYPE_FT_PSK: ft psk key
634  * @QCA_WLAN_AUTH_TYPE_SHA256: shared 256 key
635  * @QCA_WLAN_AUTH_TYPE_SHA256_PSK: shared 256 psk
636  * @QCA_WLAN_AUTH_TYPE_WAI: wai key
637  * @QCA_WLAN_AUTH_TYPE_WAI_PSK wai psk key
638  * @QCA_WLAN_AUTH_TYPE_CCKM_WPA: cckm wpa key
639  * @QCA_WLAN_AUTH_TYPE_CCKM_RSN: cckm rsn key
640  */
641 enum qca_wlan_auth_type {
642 	QCA_WLAN_AUTH_TYPE_INVALID,
643 	QCA_WLAN_AUTH_TYPE_OPEN,
644 	QCA_WLAN_AUTH_TYPE_SHARED,
645 	QCA_WLAN_AUTH_TYPE_WPA,
646 	QCA_WLAN_AUTH_TYPE_WPA_PSK,
647 	QCA_WLAN_AUTH_TYPE_WPA_NONE,
648 	QCA_WLAN_AUTH_TYPE_RSN,
649 	QCA_WLAN_AUTH_TYPE_RSN_PSK,
650 	QCA_WLAN_AUTH_TYPE_FT,
651 	QCA_WLAN_AUTH_TYPE_FT_PSK,
652 	QCA_WLAN_AUTH_TYPE_SHA256,
653 	QCA_WLAN_AUTH_TYPE_SHA256_PSK,
654 	QCA_WLAN_AUTH_TYPE_WAI,
655 	QCA_WLAN_AUTH_TYPE_WAI_PSK,
656 	QCA_WLAN_AUTH_TYPE_CCKM_WPA,
657 	QCA_WLAN_AUTH_TYPE_CCKM_RSN,
658 	QCA_WLAN_AUTH_TYPE_AUTOSWITCH,
659 };
660 
661 /**
662  * enum qca_wlan_vendor_attr_get_station_info - Station Info queried
663  * through QCA_NL80211_VENDOR_SUBCMD_GET_STATION.
664  *
665  * @QCA_WLAN_VENDOR_ATTR_GET_STATION_INFO_INVALID: Invalid Attribute
666  * @QCA_WLAN_VENDOR_ATTR_GET_STATION_INFO_LINK_STANDARD_NL80211_ATTR:
667  *  Get the standard NL attributes Nested with this attribute.
668  *  Ex : Query BW , BITRATE32 , NSS , Signal , Noise of the Link -
669  *  NL80211_ATTR_SSID / NL80211_ATTR_SURVEY_INFO (Connected Channel) /
670  *  NL80211_ATTR_STA_INFO
671  * @QCA_WLAN_VENDOR_ATTR_GET_STATION_INFO_AP_STANDARD_NL80211_ATTR:
672  *  Get the standard NL attributes Nested with this attribute.
673  *  Ex : Query HT/VHT Capability advertized by the AP.
674  *  NL80211_ATTR_VHT_CAPABILITY / NL80211_ATTR_HT_CAPABILITY
675  * @QCA_WLAN_VENDOR_ATTR_GET_STATION_INFO_ROAM_COUNT:
676  *  Number of successful Roam attempts before a
677  *  disconnect, Unsigned 32 bit value
678  * @QCA_WLAN_VENDOR_ATTR_GET_STATION_INFO_AKM:
679  *  Authentication Key Management Type used for the connected session.
680  *  Signified by enum qca_wlan_auth_type
681  * @QCA_WLAN_VENDOR_ATTR_GET_STATION_INFO_802_11_MODE: 802.11 Mode of the
682  *  connected Session, signified by enum qca_wlan_802_11_mode
683  * @QCA_WLAN_VENDOR_ATTR_GET_STATION_INFO_AP_HS20_INDICATION:
684  *  HS20 Indication Element
685  * @QCA_WLAN_VENDOR_ATTR_GET_STATION_INFO_ASSOC_FAIL_REASON:
686  *  Status Code Corresponding to the Association Failure.
687  *  Unsigned 32 bit value.
688  * @QCA_WLAN_VENDOR_ATTR_GET_STATION_INFO_REMOTE_MAX_PHY_RATE:
689  *  Max phy rate of remote station
690  * @QCA_WLAN_VENDOR_ATTR_GET_STATION_INFO_REMOTE_TX_PACKETS:
691  *  TX packets to remote station
692  * @QCA_WLAN_VENDOR_ATTR_GET_STATION_INFO_REMOTE_TX_BYTES:
693  *  TX bytes to remote station
694  * @QCA_WLAN_VENDOR_ATTR_GET_STATION_INFO_REMOTE_RX_PACKETS:
695  *  RX packets from remote station
696  * @QCA_WLAN_VENDOR_ATTR_GET_STATION_INFO_REMOTE_RX_BYTES:
697  *  RX bytes from remote station
698  * @QCA_WLAN_VENDOR_ATTR_GET_STATION_INFO_REMOTE_LAST_TX_RATE:
699  *  Last TX rate with remote station
700  * @QCA_WLAN_VENDOR_ATTR_GET_STATION_INFO_REMOTE_LAST_RX_RATE:
701  *  Last RX rate with remote station
702  * @QCA_WLAN_VENDOR_ATTR_GET_STATION_INFO_REMOTE_WMM:
703  *  Remote station enable/disable WMM
704  * @QCA_WLAN_VENDOR_ATTR_GET_STATION_INFO_REMOTE_SUPPORTED_MODE:
705  *  Remote staion connection mode
706  * @QCA_WLAN_VENDOR_ATTR_GET_STATION_INFO_REMOTE_AMPDU:
707  *  Remote station AMPDU enable/disable
708  * @QCA_WLAN_VENDOR_ATTR_GET_STATION_INFO_REMOTE_TX_STBC:
709  *  Remote station TX Space-time block coding enable/disable
710  * @QCA_WLAN_VENDOR_ATTR_GET_STATION_INFO_REMOTE_RX_STBC:
711  *  Remote station RX Space-time block coding enable/disable
712  * @QCA_WLAN_VENDOR_ATTR_GET_STATION_INFO_REMOTE_CH_WIDTH:
713  *  Remote station channel width
714  * @QCA_WLAN_VENDOR_ATTR_GET_STATION_INFO_REMOTE_SGI_ENABLE:
715  *  Remote station short GI enable/disable
716  * @QCA_WLAN_VENDOR_ATTR_GET_STATION_INFO_PAD: Attribute type for padding
717  * @QCA_WLAN_VENDOR_ATTR_GET_STATION_INFO_AFTER_LAST: After last
718  */
719 enum qca_wlan_vendor_attr_get_station_info {
720 	QCA_WLAN_VENDOR_ATTR_GET_STATION_INFO_INVALID = 0,
721 	QCA_WLAN_VENDOR_ATTR_GET_STATION_INFO_LINK_STANDARD_NL80211_ATTR,
722 	QCA_WLAN_VENDOR_ATTR_GET_STATION_INFO_AP_STANDARD_NL80211_ATTR,
723 	QCA_WLAN_VENDOR_ATTR_GET_STATION_INFO_ROAM_COUNT,
724 	QCA_WLAN_VENDOR_ATTR_GET_STATION_INFO_AKM,
725 	QCA_WLAN_VENDOR_ATTR_GET_STATION_INFO_802_11_MODE,
726 	QCA_WLAN_VENDOR_ATTR_GET_STATION_INFO_AP_HS20_INDICATION,
727 	QCA_WLAN_VENDOR_ATTR_GET_STATION_INFO_HT_OPERATION,
728 	QCA_WLAN_VENDOR_ATTR_GET_STATION_INFO_VHT_OPERATION,
729 	QCA_WLAN_VENDOR_ATTR_GET_STATION_INFO_ASSOC_FAIL_REASON,
730 	QCA_WLAN_VENDOR_ATTR_GET_STATION_INFO_REMOTE_MAX_PHY_RATE,
731 	QCA_WLAN_VENDOR_ATTR_GET_STATION_INFO_REMOTE_TX_PACKETS,
732 	QCA_WLAN_VENDOR_ATTR_GET_STATION_INFO_REMOTE_TX_BYTES,
733 	QCA_WLAN_VENDOR_ATTR_GET_STATION_INFO_REMOTE_RX_PACKETS,
734 	QCA_WLAN_VENDOR_ATTR_GET_STATION_INFO_REMOTE_RX_BYTES,
735 	QCA_WLAN_VENDOR_ATTR_GET_STATION_INFO_REMOTE_LAST_TX_RATE,
736 	QCA_WLAN_VENDOR_ATTR_GET_STATION_INFO_REMOTE_LAST_RX_RATE,
737 	QCA_WLAN_VENDOR_ATTR_GET_STATION_INFO_REMOTE_WMM,
738 	QCA_WLAN_VENDOR_ATTR_GET_STATION_INFO_REMOTE_SUPPORTED_MODE,
739 	QCA_WLAN_VENDOR_ATTR_GET_STATION_INFO_REMOTE_AMPDU,
740 	QCA_WLAN_VENDOR_ATTR_GET_STATION_INFO_REMOTE_TX_STBC,
741 	QCA_WLAN_VENDOR_ATTR_GET_STATION_INFO_REMOTE_RX_STBC,
742 	QCA_WLAN_VENDOR_ATTR_GET_STATION_INFO_REMOTE_CH_WIDTH,
743 	QCA_WLAN_VENDOR_ATTR_GET_STATION_INFO_REMOTE_SGI_ENABLE,
744 #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 7, 0))
745 	QCA_WLAN_VENDOR_ATTR_GET_STATION_INFO_PAD,
746 #endif
747 	/* keep last */
748 	QCA_WLAN_VENDOR_ATTR_GET_STATION_INFO_AFTER_LAST,
749 	QCA_WLAN_VENDOR_ATTR_GET_STATION_INFO_MAX =
750 		QCA_WLAN_VENDOR_ATTR_GET_STATION_INFO_AFTER_LAST - 1,
751 };
752 
753 /**
754  * enum qca_nl80211_vendor_subcmds_index - vendor sub commands index
755  *
756  * @QCA_NL80211_VENDOR_SUBCMD_AVOID_FREQUENCY_INDEX: Avoid frequency
757  * @QCA_NL80211_VENDOR_SUBCMD_NAN_INDEX: Nan
758  * @QCA_NL80211_VENDOR_SUBCMD_STATS_EXT_INDEX: Ext stats
759  * @QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_START_INDEX: Ext scan start
760  * @QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_STOP_INDEX: Ext scan stop
761  * @QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_GET_CAPABILITIES_INDEX: Ext scan get
762  *	capability
763  * @QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_GET_CACHED_RESULTS_INDEX: Ext scan get
764  *	cached results
765  * @QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_SCAN_RESULTS_AVAILABLE_INDEX: Ext scan
766  *	results available
767  * @QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_FULL_SCAN_RESULT_INDEX: Ext scan full
768  *	scan result
769  * @QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_SCAN_EVENT_INDEX: Ext scan event
770  * @QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_HOTLIST_AP_FOUND_INDEX: Ext scan hot list
771  *	AP found
772  * @QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_SET_BSSID_HOTLIST_INDEX: Ext scan set
773  *	bssid hotlist
774  * @QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_RESET_BSSID_HOTLIST_INDEX: Ext scan reset
775  *	bssid hotlist
776  * @QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_SIGNIFICANT_CHANGE_INDEX: Ext scan
777  *	significant change
778  * @QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_SET_SIGNIFICANT_CHANGE_INDEX: Ext scan
779  *	set significant change
780  * @QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_RESET_SIGNIFICANT_CHANGE_INDEX: Ext scan
781  *	reset significant change
782  * @QCA_NL80211_VENDOR_SUBCMD_LL_STATS_SET_INDEX: Set stats
783  * @QCA_NL80211_VENDOR_SUBCMD_LL_STATS_GET_INDEX: Get stats
784  * @QCA_NL80211_VENDOR_SUBCMD_LL_STATS_CLR_INDEX: Clear stats
785  * @QCA_NL80211_VENDOR_SUBCMD_LL_RADIO_STATS_INDEX: Radio stats
786  * @QCA_NL80211_VENDOR_SUBCMD_LL_IFACE_STATS_INDEX: Iface stats
787  * @QCA_NL80211_VENDOR_SUBCMD_LL_PEER_INFO_STATS_INDEX: Peer info stats
788  * @QCA_NL80211_VENDOR_SUBCMD_LL_STATS_EXT_INDEX: MAC layer counters
789  * @QCA_NL80211_VENDOR_SUBCMD_TDLS_STATE_CHANGE_INDEX: Ext tdls state change
790  * @QCA_NL80211_VENDOR_SUBCMD_DO_ACS_INDEX: ACS command
791  * @QCA_NL80211_VENDOR_SUBCMD_KEY_MGMT_ROAM_AUTH_INDEX: Pass Roam and Auth info
792  * @QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_HOTLIST_AP_LOST_INDEX: hotlist ap lost
793  * @QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_PNO_NETWORK_FOUND_INDEX:
794  *	pno network found index
795  * @QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_PNO_PASSPOINT_NETWORK_FOUND_INDEX:
796  *	passpoint match found index
797  * @QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_SET_SSID_HOTLIST_INDEX:
798  *	set ssid hotlist index
799  * @QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_RESET_SSID_HOTLIST_INDEX:
800  *	reset ssid hotlist index
801  * @QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_HOTLIST_SSID_FOUND_INDEX:
802  *	hotlist ssid found index
803  * @QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_HOTLIST_SSID_LOST_INDEX:
804  *	hotlist ssid lost index
805  * @QCA_NL80211_VENDOR_SUBCMD_DCC_STATS_EVENT_INDEX
806  *	dcc stats event index
807  * @QCA_NL80211_VENDOR_SUBCMD_SCAN_INDEX: vendor scan index
808  * @QCA_NL80211_VENDOR_SUBCMD_SCAN_DONE_INDEX:
809  *	vendor scan complete event  index
810  * @QCA_NL80211_VENDOR_SUBCMD_GW_PARAM_CONFIG_INDEX:
811  *	update gateway parameters index
812  * @QCA_NL80211_VENDOR_SUBCMD_TSF_INDEX: TSF response events index
813  * @QCA_NL80211_VENDOR_SUBCMD_P2P_LO_EVENT_INDEX:
814  *      P2P listen offload index
815  * @QCA_NL80211_VENDOR_SUBCMD_SAP_CONDITIONAL_CHAN_SWITCH_INDEX: SAP
816  *      conditional channel switch index
817  * @QCA_NL80211_VENDOR_SUBCMD_NUD_STATS_GET_INDEX: NUD DEBUG Stats index
818  * @QCA_NL80211_VENDOR_SUBCMD_HANG_REASON_INDEX: hang event reason index
819  * @QCA_NL80211_VENDOR_SUBCMD_WLAN_MAC_INFO_INDEX: MAC mode info index
820  */
821 
822 enum qca_nl80211_vendor_subcmds_index {
823 	QCA_NL80211_VENDOR_SUBCMD_AVOID_FREQUENCY_INDEX = 0,
824 
825 #ifdef WLAN_FEATURE_NAN
826 	QCA_NL80211_VENDOR_SUBCMD_NAN_INDEX,
827 #endif /* WLAN_FEATURE_NAN */
828 
829 #ifdef WLAN_FEATURE_STATS_EXT
830 	QCA_NL80211_VENDOR_SUBCMD_STATS_EXT_INDEX,
831 #endif /* WLAN_FEATURE_STATS_EXT */
832 
833 #ifdef FEATURE_WLAN_EXTSCAN
834 	QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_START_INDEX,
835 	QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_STOP_INDEX,
836 	QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_GET_CAPABILITIES_INDEX,
837 	QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_GET_CACHED_RESULTS_INDEX,
838 	QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_SCAN_RESULTS_AVAILABLE_INDEX,
839 	QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_FULL_SCAN_RESULT_INDEX,
840 	QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_SCAN_EVENT_INDEX,
841 	QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_HOTLIST_AP_FOUND_INDEX,
842 	QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_SET_BSSID_HOTLIST_INDEX,
843 	QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_RESET_BSSID_HOTLIST_INDEX,
844 	QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_SIGNIFICANT_CHANGE_INDEX,
845 	QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_SET_SIGNIFICANT_CHANGE_INDEX,
846 	QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_RESET_SIGNIFICANT_CHANGE_INDEX,
847 #endif /* FEATURE_WLAN_EXTSCAN */
848 
849 #ifdef WLAN_FEATURE_LINK_LAYER_STATS
850 	QCA_NL80211_VENDOR_SUBCMD_LL_STATS_SET_INDEX,
851 	QCA_NL80211_VENDOR_SUBCMD_LL_STATS_GET_INDEX,
852 	QCA_NL80211_VENDOR_SUBCMD_LL_STATS_CLR_INDEX,
853 	QCA_NL80211_VENDOR_SUBCMD_LL_RADIO_STATS_INDEX,
854 	QCA_NL80211_VENDOR_SUBCMD_LL_IFACE_STATS_INDEX,
855 	QCA_NL80211_VENDOR_SUBCMD_LL_PEER_INFO_STATS_INDEX,
856 	QCA_NL80211_VENDOR_SUBCMD_LL_STATS_EXT_INDEX,
857 #endif /* WLAN_FEATURE_LINK_LAYER_STATS */
858 
859 	QCA_NL80211_VENDOR_SUBCMD_TDLS_STATE_CHANGE_INDEX,
860 	QCA_NL80211_VENDOR_SUBCMD_DO_ACS_INDEX,
861 #ifdef WLAN_FEATURE_ROAM_OFFLOAD
862 	QCA_NL80211_VENDOR_SUBCMD_KEY_MGMT_ROAM_AUTH_INDEX,
863 #endif
864 	/* DFS */
865 	QCA_NL80211_VENDOR_SUBCMD_DFS_OFFLOAD_CAC_STARTED_INDEX,
866 	QCA_NL80211_VENDOR_SUBCMD_DFS_OFFLOAD_CAC_FINISHED_INDEX,
867 	QCA_NL80211_VENDOR_SUBCMD_DFS_OFFLOAD_CAC_ABORTED_INDEX,
868 	QCA_NL80211_VENDOR_SUBCMD_DFS_OFFLOAD_CAC_NOP_FINISHED_INDEX,
869 	QCA_NL80211_VENDOR_SUBCMD_DFS_OFFLOAD_RADAR_DETECTED_INDEX,
870 #ifdef FEATURE_WLAN_EXTSCAN
871 	QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_HOTLIST_AP_LOST_INDEX,
872 	QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_PNO_NETWORK_FOUND_INDEX,
873 	QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_PNO_PASSPOINT_NETWORK_FOUND_INDEX,
874 	QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_SET_SSID_HOTLIST_INDEX,
875 	QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_RESET_SSID_HOTLIST_INDEX,
876 	QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_HOTLIST_SSID_FOUND_INDEX,
877 	QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_HOTLIST_SSID_LOST_INDEX,
878 #endif /* FEATURE_WLAN_EXTSCAN */
879 	QCA_NL80211_VENDOR_SUBCMD_GET_WIFI_CONFIGURATION_INDEX,
880 	QCA_NL80211_VENDOR_SUBCMD_MONITOR_RSSI_INDEX,
881 #ifdef WLAN_FEATURE_MEMDUMP
882 	QCA_NL80211_VENDOR_SUBCMD_WIFI_LOGGER_MEMORY_DUMP_INDEX,
883 #endif /* WLAN_FEATURE_MEMDUMP */
884 	/* OCB events */
885 	QCA_NL80211_VENDOR_SUBCMD_DCC_STATS_EVENT_INDEX,
886 	QCA_NL80211_VENDOR_SUBCMD_SCAN_INDEX,
887 	QCA_NL80211_VENDOR_SUBCMD_SCAN_DONE_INDEX,
888 	QCA_NL80211_VENDOR_SUBCMD_GW_PARAM_CONFIG_INDEX,
889 #ifdef WLAN_FEATURE_TSF
890 	QCA_NL80211_VENDOR_SUBCMD_TSF_INDEX,
891 #endif
892 #ifdef WLAN_FEATURE_NAN_DATAPATH
893 	QCA_NL80211_VENDOR_SUBCMD_NDP_INDEX,
894 #endif /* WLAN_FEATURE_NAN_DATAPATH */
895 	QCA_NL80211_VENDOR_SUBCMD_P2P_LO_EVENT_INDEX,
896 	QCA_NL80211_VENDOR_SUBCMD_SAP_CONDITIONAL_CHAN_SWITCH_INDEX,
897 	QCA_NL80211_VENDOR_SUBCMD_UPDATE_EXTERNAL_ACS_CONFIG,
898 	QCA_NL80211_VENDOR_SUBCMD_PWR_SAVE_FAIL_DETECTED_INDEX,
899 	QCA_NL80211_VENDOR_SUBCMD_NUD_STATS_GET_INDEX,
900 	QCA_NL80211_VENDOR_SUBCMD_HANG_REASON_INDEX,
901 	QCA_NL80211_VENDOR_SUBCMD_HTT_STATS_INDEX,
902 	QCA_NL80211_VENDOR_SUBCMD_WLAN_MAC_INFO_INDEX,
903 };
904 
905 /**
906  * enum qca_wlan_vendor_attr_tdls_enable - TDLS enable attribute
907  *
908  * @QCA_WLAN_VENDOR_ATTR_TDLS_ENABLE_INVALID: Invalid initial value
909  * @QCA_WLAN_VENDOR_ATTR_TDLS_ENABLE_MAC_ADDR: An array of 6 x Unsigned 8-bit
910  *	value
911  * @QCA_WLAN_VENDOR_ATTR_TDLS_ENABLE_CHANNEL: Signed 32-bit value, but lets
912  *	keep as unsigned for now
913  * @QCA_WLAN_VENDOR_ATTR_TDLS_ENABLE_GLOBAL_OPERATING_CLASS: operating class
914  * @QCA_WLAN_VENDOR_ATTR_TDLS_ENABLE_MAX_LATENCY_MS: Enable max latency in ms
915  * @QCA_WLAN_VENDOR_ATTR_TDLS_ENABLE_MIN_BANDWIDTH_KBPS: Enable min bandwidth
916  *	in KBPS
917  * @QCA_WLAN_VENDOR_ATTR_TDLS_ENABLE_AFTER_LAST: After last
918  * @QCA_WLAN_VENDOR_ATTR_TDLS_ENABLE_MAX: Max value
919  */
920 enum qca_wlan_vendor_attr_tdls_enable {
921 	QCA_WLAN_VENDOR_ATTR_TDLS_ENABLE_INVALID = 0,
922 	QCA_WLAN_VENDOR_ATTR_TDLS_ENABLE_MAC_ADDR,
923 	QCA_WLAN_VENDOR_ATTR_TDLS_ENABLE_CHANNEL,
924 	QCA_WLAN_VENDOR_ATTR_TDLS_ENABLE_GLOBAL_OPERATING_CLASS,
925 	QCA_WLAN_VENDOR_ATTR_TDLS_ENABLE_MAX_LATENCY_MS,
926 	QCA_WLAN_VENDOR_ATTR_TDLS_ENABLE_MIN_BANDWIDTH_KBPS,
927 	QCA_WLAN_VENDOR_ATTR_TDLS_ENABLE_AFTER_LAST,
928 	QCA_WLAN_VENDOR_ATTR_TDLS_ENABLE_MAX =
929 		QCA_WLAN_VENDOR_ATTR_TDLS_ENABLE_AFTER_LAST - 1,
930 };
931 
932 /**
933  * enum qca_wlan_vendor_attr_tdls_disable: tdls disable attribute
934  *
935  * @QCA_WLAN_VENDOR_ATTR_TDLS_DISABLE_INVALID: Invalid initial value
936  * @QCA_WLAN_VENDOR_ATTR_TDLS_DISABLE_MAC_ADDR: An array of 6 x Unsigned
937  *	8-bit value
938  * @QCA_WLAN_VENDOR_ATTR_TDLS_DISABLE_AFTER_LAST: After last
939  * @QCA_WLAN_VENDOR_ATTR_TDLS_DISABLE_MAX: Max value
940  */
941 enum qca_wlan_vendor_attr_tdls_disable {
942 	QCA_WLAN_VENDOR_ATTR_TDLS_DISABLE_INVALID = 0,
943 	QCA_WLAN_VENDOR_ATTR_TDLS_DISABLE_MAC_ADDR,
944 	QCA_WLAN_VENDOR_ATTR_TDLS_DISABLE_AFTER_LAST,
945 	QCA_WLAN_VENDOR_ATTR_TDLS_DISABLE_MAX =
946 		QCA_WLAN_VENDOR_ATTR_TDLS_DISABLE_AFTER_LAST - 1,
947 };
948 
949 /**
950  * qca_chip_power_save_failure_reason: Power save failure reason
951  * @QCA_CHIP_POWER_SAVE_FAILURE_REASON_PROTOCOL: Indicates power save failure
952  * due to protocol/module.
953  * @QCA_CHIP_POWER_SAVE_FAILURE_REASON_HARDWARE: power save failure
954  * due to hardware
955  */
956 enum qca_chip_power_save_failure_reason {
957 	QCA_CHIP_POWER_SAVE_FAILURE_REASON_PROTOCOL = 0,
958 	QCA_CHIP_POWER_SAVE_FAILURE_REASON_HARDWARE = 1,
959 };
960 
961 /**
962  * qca_attr_chip_power_save_failure: attributes to vendor subcmd
963  * @QCA_NL80211_VENDOR_SUBCMD_CHIP_PWRSAVE_FAILURE. This carry the requisite
964  * information leading to the power save failure.
965  * @QCA_ATTR_CHIP_POWER_SAVE_FAILURE_INVALID : invalid
966  * @QCA_ATTR_CHIP_POWER_SAVE_FAILURE_REASON : power save failure reason
967  * represented by enum qca_chip_power_save_failure_reason
968  * @QCA_ATTR_CHIP_POWER_SAVE_FAILURE_LAST : Last
969  * @QCA_ATTR_CHIP_POWER_SAVE_FAILURE_MAX : Max value
970  */
971 enum qca_attr_chip_power_save_failure {
972 	QCA_ATTR_CHIP_POWER_SAVE_FAILURE_INVALID = 0,
973 
974 	QCA_ATTR_CHIP_POWER_SAVE_FAILURE_REASON = 1,
975 
976 	/* keep last */
977 	QCA_ATTR_CHIP_POWER_SAVE_FAILURE_LAST,
978 	QCA_ATTR_CHIP_POWER_SAVE_FAILURE_MAX =
979 		QCA_ATTR_CHIP_POWER_SAVE_FAILURE_LAST - 1,
980 };
981 
982 
983 /**
984  * enum qca_wlan_vendor_attr_tdls_get_status - tdls get status attribute
985  *
986  * @QCA_WLAN_VENDOR_ATTR_TDLS_GET_STATUS_INVALID: Invalid initial value
987  * @QCA_WLAN_VENDOR_ATTR_TDLS_GET_STATUS_MAC_ADDR: An array of 6 x Unsigned
988  *	8-bit value
989  * @QCA_WLAN_VENDOR_ATTR_TDLS_GET_STATUS_STATE: get status state,
990  *	unsigned 32-bit value
991  * @QCA_WLAN_VENDOR_ATTR_TDLS_GET_STATUS_REASON: get status reason
992  * @QCA_WLAN_VENDOR_ATTR_TDLS_GET_STATUS_CHANNEL: get status channel,
993  *	unsigned 32-bit value
994  * @QCA_WLAN_VENDOR_ATTR_TDLS_GET_STATUS_GLOBAL_OPERATING_CLASS: get operating
995  *	class, unsigned 32-bit value
996  * @QCA_WLAN_VENDOR_ATTR_TDLS_GET_STATUS_AFTER_LAST: After last
997  * @QCA_WLAN_VENDOR_ATTR_TDLS_GET_STATUS_MAX: Max value
998  */
999 enum qca_wlan_vendor_attr_tdls_get_status {
1000 	QCA_WLAN_VENDOR_ATTR_TDLS_GET_STATUS_INVALID = 0,
1001 	QCA_WLAN_VENDOR_ATTR_TDLS_GET_STATUS_MAC_ADDR,
1002 	QCA_WLAN_VENDOR_ATTR_TDLS_GET_STATUS_STATE,
1003 	QCA_WLAN_VENDOR_ATTR_TDLS_GET_STATUS_REASON,
1004 	QCA_WLAN_VENDOR_ATTR_TDLS_GET_STATUS_CHANNEL,
1005 	QCA_WLAN_VENDOR_ATTR_TDLS_GET_STATUS_GLOBAL_OPERATING_CLASS,
1006 	QCA_WLAN_VENDOR_ATTR_TDLS_GET_STATUS_AFTER_LAST,
1007 	QCA_WLAN_VENDOR_ATTR_TDLS_GET_STATUS_MAX =
1008 		QCA_WLAN_VENDOR_ATTR_TDLS_GET_STATUS_AFTER_LAST - 1,
1009 };
1010 
1011 /**
1012  * enum qca_wlan_vendor_attr_tdls_state - tdls state attribute
1013  *
1014  * @QCA_WLAN_VENDOR_ATTR_TDLS_STATE_INVALID: Initial invalid value
1015  * @QCA_WLAN_VENDOR_ATTR_TDLS_STATE_MAC_ADDR: An array of 6 x Unsigned
1016  *	8-bit value
1017  * @QCA_WLAN_VENDOR_ATTR_TDLS_NEW_STATE: TDLS new state,
1018  *	unsigned 32-bit value
1019  * @QCA_WLAN_VENDOR_ATTR_TDLS_STATE_REASON: TDLS state reason
1020  * @QCA_WLAN_VENDOR_ATTR_TDLS_STATE_CHANNEL: TDLS state channel,
1021  *	unsigned 32-bit value
1022  * @QCA_WLAN_VENDOR_ATTR_TDLS_STATE_GLOBAL_OPERATING_CLASS: TDLS state
1023  *	operating class, unsigned 32-bit value
1024  * @QCA_WLAN_VENDOR_ATTR_TDLS_STATE_AFTER_LAST: After last
1025  * @QCA_WLAN_VENDOR_ATTR_TDLS_STATE_MAX: Max value
1026  */
1027 enum qca_wlan_vendor_attr_tdls_state {
1028 	QCA_WLAN_VENDOR_ATTR_TDLS_STATE_INVALID = 0,
1029 	QCA_WLAN_VENDOR_ATTR_TDLS_STATE_MAC_ADDR,
1030 	QCA_WLAN_VENDOR_ATTR_TDLS_NEW_STATE,
1031 	QCA_WLAN_VENDOR_ATTR_TDLS_STATE_REASON,
1032 	QCA_WLAN_VENDOR_ATTR_TDLS_STATE_CHANNEL,
1033 	QCA_WLAN_VENDOR_ATTR_TDLS_STATE_GLOBAL_OPERATING_CLASS,
1034 	QCA_WLAN_VENDOR_ATTR_TDLS_STATE_AFTER_LAST,
1035 	QCA_WLAN_VENDOR_ATTR_TDLS_STATE_MAX =
1036 		QCA_WLAN_VENDOR_ATTR_TDLS_STATE_AFTER_LAST - 1,
1037 };
1038 
1039 /* enum's to provide TDLS capabilites */
1040 enum qca_wlan_vendor_attr_get_tdls_capabilities {
1041 	QCA_WLAN_VENDOR_ATTR_TDLS_GET_CAPS_INVALID = 0,
1042 	QCA_WLAN_VENDOR_ATTR_TDLS_GET_CAPS_MAX_CONC_SESSIONS = 1,
1043 	QCA_WLAN_VENDOR_ATTR_TDLS_GET_CAPS_FEATURES_SUPPORTED = 2,
1044 
1045 	/* keep last */
1046 	QCA_WLAN_VENDOR_ATTR_TDLS_GET_CAPS_AFTER_LAST,
1047 	QCA_WLAN_VENDOR_ATTR_TDLS_GET_CAPS_MAX =
1048 		QCA_WLAN_VENDOR_ATTR_TDLS_GET_CAPS_AFTER_LAST - 1,
1049 };
1050 
1051 enum qca_wlan_vendor_attr {
1052 	QCA_WLAN_VENDOR_ATTR_INVALID = 0,
1053 	/* used by QCA_NL80211_VENDOR_SUBCMD_DFS_CAPABILITY */
1054 	QCA_WLAN_VENDOR_ATTR_DFS     = 1,
1055 	/* used by QCA_NL80211_VENDOR_SUBCMD_NAN */
1056 	QCA_WLAN_VENDOR_ATTR_NAN     = 2,
1057 	/* used by QCA_NL80211_VENDOR_SUBCMD_STATS_EXT */
1058 	QCA_WLAN_VENDOR_ATTR_STATS_EXT     = 3,
1059 	/* used by QCA_NL80211_VENDOR_SUBCMD_STATS_EXT */
1060 	QCA_WLAN_VENDOR_ATTR_IFINDEX     = 4,
1061 	/*
1062 	 * used by QCA_NL80211_VENDOR_SUBCMD_ROAMING, u32 with values defined
1063 	 * by enum qca_roaming_policy.
1064 	 */
1065 	QCA_WLAN_VENDOR_ATTR_ROAMING_POLICY = 5,
1066 	QCA_WLAN_VENDOR_ATTR_MAC_ADDR = 6,
1067 	/* used by QCA_NL80211_VENDOR_SUBCMD_GET_FEATURES */
1068 	QCA_WLAN_VENDOR_ATTR_FEATURE_FLAGS = 7,
1069 	QCA_WLAN_VENDOR_ATTR_TEST = 8,
1070 	/*
1071 	 * used by QCA_NL80211_VENDOR_SUBCMD_GET_FEATURES
1072 	 * Unsigned 32-bit value.
1073 	 */
1074 	QCA_WLAN_VENDOR_ATTR_CONCURRENCY_CAPA = 9,
1075 	/* Unsigned 32-bit value */
1076 	QCA_WLAN_VENDOR_ATTR_MAX_CONCURRENT_CHANNELS_2_4_BAND = 10,
1077 	/* Unsigned 32-bit value */
1078 	QCA_WLAN_VENDOR_ATTR_MAX_CONCURRENT_CHANNELS_5_0_BAND = 11,
1079 	/* Unsigned 32-bit value from enum qca_set_band. */
1080 	QCA_WLAN_VENDOR_ATTR_SETBAND_VALUE = 12,
1081 	/* Dummy (NOP) attribute for 64 bit padding */
1082 	QCA_WLAN_VENDOR_ATTR_PAD = 13,
1083 	/*
1084 	 * Unique FTM session cookie (Unsigned 64 bit). Specified in
1085 	 * QCA_NL80211_VENDOR_SUBCMD_FTM_START_SESSION. Reported in
1086 	 * the session in QCA_NL80211_VENDOR_SUBCMD_FTM_MEAS_RESULT and
1087 	 * QCA_NL80211_VENDOR_SUBCMD_FTM_SESSION_DONE.
1088 	 */
1089 	QCA_WLAN_VENDOR_ATTR_FTM_SESSION_COOKIE = 14,
1090 	/*
1091 	 * Indoor location capabilities, returned by
1092 	 * QCA_NL80211_VENDOR_SUBCMD_LOC_GET_CAPA.
1093 	 * see enum qca_wlan_vendor_attr_loc_capa.
1094 	 */
1095 	QCA_WLAN_VENDOR_ATTR_LOC_CAPA = 15,
1096 	/*
1097 	 * Array of nested attributes containing information about each peer
1098 	 * in FTM measurement session. See enum qca_wlan_vendor_attr_peer_info
1099 	 * for supported attributes for each peer.
1100 	 */
1101 	QCA_WLAN_VENDOR_ATTR_FTM_MEAS_PEERS = 16,
1102 	/*
1103 	 * Array of nested attributes containing measurement results for
1104 	 * one or more peers, reported by the
1105 	 * QCA_NL80211_VENDOR_SUBCMD_FTM_MEAS_RESULT event.
1106 	 * See enum qca_wlan_vendor_attr_peer_result for list of supported
1107 	 * attributes.
1108 	 */
1109 	QCA_WLAN_VENDOR_ATTR_FTM_MEAS_PEER_RESULTS = 17,
1110 	/* Flag attribute for enabling or disabling responder functionality. */
1111 	QCA_WLAN_VENDOR_ATTR_FTM_RESPONDER_ENABLE = 18,
1112 	/*
1113 	 * Used in the QCA_NL80211_VENDOR_SUBCMD_FTM_CFG_RESPONDER
1114 	 * command to specify the LCI report that will be sent by
1115 	 * the responder during a measurement exchange. The format is
1116 	 * defined in IEEE P802.11-REVmc/D7.0, 9.4.2.22.10.
1117 	 */
1118 	QCA_WLAN_VENDOR_ATTR_FTM_LCI = 19,
1119 	/*
1120 	 * Used in the QCA_NL80211_VENDOR_SUBCMD_FTM_CFG_RESPONDER
1121 	 * command to specify the location civic report that will
1122 	 * be sent by the responder during a measurement exchange.
1123 	 * The format is defined in IEEE P802.11-REVmc/D7.0, 9.4.2.22.13.
1124 	 */
1125 	QCA_WLAN_VENDOR_ATTR_FTM_LCR = 20,
1126 	/*
1127 	 * Session/measurement completion status code,
1128 	 * reported in QCA_NL80211_VENDOR_SUBCMD_FTM_SESSION_DONE and
1129 	 * QCA_NL80211_VENDOR_SUBCMD_AOA_MEAS_RESULT
1130 	 * see enum qca_vendor_attr_loc_session_status.
1131 	 */
1132 	QCA_WLAN_VENDOR_ATTR_LOC_SESSION_STATUS = 21,
1133 	/*
1134 	 * Initial dialog token used by responder (0 if not specified),
1135 	 * unsigned 8 bit value.
1136 	 */
1137 	QCA_WLAN_VENDOR_ATTR_FTM_INITIAL_TOKEN = 22,
1138 	/*
1139 	 * AOA measurement type. Requested in QCA_NL80211_VENDOR_SUBCMD_AOA_MEAS
1140 	 * and optionally in QCA_NL80211_VENDOR_SUBCMD_FTM_START_SESSION if
1141 	 * AOA measurements are needed as part of an FTM session.
1142 	 * Reported by QCA_NL80211_VENDOR_SUBCMD_AOA_MEAS_RESULT. See
1143 	 * enum qca_wlan_vendor_attr_aoa_type.
1144 	 */
1145 	QCA_WLAN_VENDOR_ATTR_AOA_TYPE = 23,
1146 	/*
1147 	 * A bit mask (unsigned 32 bit value) of antenna arrays used
1148 	 * by indoor location measurements. Refers to the antenna
1149 	 * arrays described by QCA_VENDOR_ATTR_LOC_CAPA_ANTENNA_ARRAYS.
1150 	 */
1151 	QCA_WLAN_VENDOR_ATTR_LOC_ANTENNA_ARRAY_MASK = 24,
1152 	/*
1153 	 * AOA measurement data. Its contents depends on the AOA measurement
1154 	 * type and antenna array mask:
1155 	 * QCA_WLAN_VENDOR_ATTR_AOA_TYPE_TOP_CIR_PHASE: array of U16 values,
1156 	 * phase of the strongest CIR path for each antenna in the measured
1157 	 * array(s).
1158 	 * QCA_WLAN_VENDOR_ATTR_AOA_TYPE_TOP_CIR_PHASE_AMP: array of 2 U16
1159 	 * values, phase and amplitude of the strongest CIR path for each
1160 	 * antenna in the measured array(s).
1161 	 */
1162 	QCA_WLAN_VENDOR_ATTR_AOA_MEAS_RESULT = 25,
1163 	/*
1164 	 *  Used in QCA_NL80211_VENDOR_SUBCMD_GET_CHAIN_RSSI command
1165 	 * to specify the chain number (unsigned 32 bit value) to inquire
1166 	 * the corresponding antenna RSSI value */
1167 	QCA_WLAN_VENDOR_ATTR_CHAIN_INDEX = 26,
1168 	/*
1169 	 *  Used in QCA_NL80211_VENDOR_SUBCMD_GET_CHAIN_RSSI command
1170 	 * to report the specific antenna RSSI value (unsigned 32 bit value) */
1171 	QCA_WLAN_VENDOR_ATTR_CHAIN_RSSI = 27,
1172 	/* Frequency in MHz, various uses. Unsigned 32 bit value */
1173 	QCA_WLAN_VENDOR_ATTR_FREQ = 28,
1174 	/*
1175 	 *  TSF timer value, unsigned 64 bit value.
1176 	 * May be returned by various commands.
1177 	 */
1178 	QCA_WLAN_VENDOR_ATTR_TSF = 29,
1179 	/*
1180 	 * DMG RF sector index, unsigned 16 bit number. Valid values are
1181 	 * 0..127 for sector indices or 65535 as special value used to
1182 	 * unlock sector selection in
1183 	 * QCA_NL80211_VENDOR_SUBCMD_DMG_RF_SET_SELECTED_SECTOR.
1184 	 */
1185 	QCA_WLAN_VENDOR_ATTR_DMG_RF_SECTOR_INDEX = 30,
1186 	/*
1187 	 * DMG RF sector type, unsigned 8 bit value. One of the values
1188 	 * in enum qca_wlan_vendor_attr_dmg_rf_sector_type.
1189 	 */
1190 	QCA_WLAN_VENDOR_ATTR_DMG_RF_SECTOR_TYPE = 31,
1191 	/*
1192 	 * Bitmask of DMG RF modules for which information is requested. Each
1193 	 * bit corresponds to an RF module with the same index as the bit
1194 	 * number. Unsigned 32 bit number but only low 8 bits can be set since
1195 	 * all DMG chips currently have up to 8 RF modules.
1196 	 */
1197 	QCA_WLAN_VENDOR_ATTR_DMG_RF_MODULE_MASK = 32,
1198 	/*
1199 	 * Array of nested attributes where each entry is DMG RF sector
1200 	 * configuration for a single RF module.
1201 	 * Attributes for each entry are taken from enum
1202 	 * qca_wlan_vendor_attr_dmg_rf_sector_cfg.
1203 	 * Specified in QCA_NL80211_VENDOR_SUBCMD_DMG_RF_SET_SECTOR_CFG
1204 	 * and returned by QCA_NL80211_VENDOR_SUBCMD_DMG_RF_GET_SECTOR_CFG.
1205 	 */
1206 	QCA_WLAN_VENDOR_ATTR_DMG_RF_SECTOR_CFG = 33,
1207 	/*
1208 	 * Used in QCA_NL80211_VENDOR_SUBCMD_STATS_EXT command
1209 	 * to report frame aggregation statistics to userspace.
1210 	 */
1211 	QCA_WLAN_VENDOR_ATTR_RX_AGGREGATION_STATS_HOLES_NUM = 34,
1212 	QCA_WLAN_VENDOR_ATTR_RX_AGGREGATION_STATS_HOLES_INFO = 35,
1213 	/*
1214 	 * Unsigned 8-bit value representing MBO transition reason code as
1215 	 * provided by the AP used by subcommand
1216 	 * QCA_NL80211_VENDOR_SUBCMD_FETCH_BSS_TRANSITION_STATUS. This is
1217 	 * specified by the userspace in the request to the driver.
1218 	 */
1219 	QCA_WLAN_VENDOR_ATTR_BTM_MBO_TRANSITION_REASON = 36,
1220 	/*
1221 	 * Array of nested attributes, BSSID and status code, used by subcommand
1222 	 * QCA_NL80211_VENDOR_SUBCMD_FETCH_BSS_TRANSITION_STATUS, where each
1223 	 * entry is taken from enum qca_wlan_vendor_attr_btm_candidate_info.
1224 	 * The userspace space specifies the list/array of candidate BSSIDs in
1225 	 * the order of preference in the request. The driver specifies the
1226 	 * status code, for each BSSID in the list, in the response. The
1227 	 * acceptable candidates are listed in the order preferred by the
1228 	 * driver.
1229 	 */
1230 	QCA_WLAN_VENDOR_ATTR_BTM_CANDIDATE_INFO = 37,
1231 	/*
1232 	 * Used in QCA_NL80211_VENDOR_SUBCMD_BRP_SET_ANT_LIMIT command
1233 	 * See enum qca_wlan_vendor_attr_brp_ant_limit_mode.
1234 	 */
1235 	QCA_WLAN_VENDOR_ATTR_BRP_ANT_LIMIT_MODE = 38,
1236 	/*
1237 	 * Used in QCA_NL80211_VENDOR_SUBCMD_BRP_SET_ANT_LIMIT command
1238 	 * to define the number of antennas to use for BRP.
1239 	 * different purpose in each ANT_LIMIT_MODE:
1240 	 * DISABLE - ignored
1241 	 * EFFECTIVE - upper limit to number of antennas to be used
1242 	 * FORCE - exact number of antennas to be used
1243 	 * unsigned 8 bit value
1244 	 */
1245 	QCA_WLAN_VENDOR_ATTR_BRP_ANT_NUM_LIMIT = 39,
1246 	/*
1247 	 * Used in QCA_NL80211_VENDOR_SUBCMD_GET_CHAIN_RSSI command
1248 	 * to report the corresponding antenna index to the chain RSSI value
1249 	 */
1250 	QCA_WLAN_VENDOR_ATTR_ANTENNA_INFO = 40,
1251 
1252 	/* keep last */
1253 	QCA_WLAN_VENDOR_ATTR_AFTER_LAST,
1254 		QCA_WLAN_VENDOR_ATTR_MAX = QCA_WLAN_VENDOR_ATTR_AFTER_LAST - 1
1255 };
1256 
1257 #ifdef FEATURE_WLAN_EXTSCAN
1258 enum qca_wlan_vendor_attr_extscan_config_params {
1259 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_SUBCMD_CONFIG_PARAM_INVALID = 0,
1260 
1261 	/* Unsigned 32-bit value */
1262 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_SUBCMD_CONFIG_PARAM_REQUEST_ID = 1,
1263 
1264 	/*
1265 	 * Attributes for data used by
1266 	 * QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_GET_VALID_CHANNELS sub command.
1267 	 */
1268 
1269 	/* Unsigned 32-bit value */
1270 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_GET_VALID_CHANNELS_CONFIG_PARAM_WIFI_BAND
1271 	= 2,
1272 	/* Unsigned 32-bit value */
1273 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_GET_VALID_CHANNELS_CONFIG_PARAM_MAX_CHANNELS
1274 	= 3,
1275 
1276 	/*
1277 	 * Attributes for input params used by
1278 	 * QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_START sub command.
1279 	 */
1280 
1281 	/* Unsigned 32-bit value; channel frequency */
1282 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_CHANNEL_SPEC_CHANNEL = 4,
1283 	/* Unsigned 32-bit value; dwell time in ms. */
1284 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_CHANNEL_SPEC_DWELL_TIME = 5,
1285 	/* Unsigned 8-bit value; 0: active; 1: passive; N/A for DFS */
1286 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_CHANNEL_SPEC_PASSIVE = 6,
1287 	/* Unsigned 8-bit value; channel class */
1288 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_CHANNEL_SPEC_CLASS = 7,
1289 
1290 	/* Unsigned 8-bit value; bucket index, 0 based */
1291 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_BUCKET_SPEC_INDEX = 8,
1292 	/* Unsigned 8-bit value; band. */
1293 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_BUCKET_SPEC_BAND = 9,
1294 	/* Unsigned 32-bit value; desired period, in ms. */
1295 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_BUCKET_SPEC_PERIOD = 10,
1296 	/* Unsigned 8-bit value; report events semantics. */
1297 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_BUCKET_SPEC_REPORT_EVENTS = 11,
1298 	/*
1299 	 * Unsigned 32-bit value. Followed by a nested array of
1300 	 * EXTSCAN_CHANNEL_SPEC_* attributes.
1301 	 */
1302 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_BUCKET_SPEC_NUM_CHANNEL_SPECS = 12,
1303 
1304 	/*
1305 	 * Array of QCA_WLAN_VENDOR_ATTR_EXTSCAN_CHANNEL_SPEC_* attributes.
1306 	 * Array size: QCA_WLAN_VENDOR_ATTR_EXTSCAN_BUCKET_SPEC_NUM_CHANNEL_SPECS
1307 	 */
1308 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_CHANNEL_SPEC = 13,
1309 
1310 	/* Unsigned 32-bit value; base timer period in ms. */
1311 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_SCAN_CMD_PARAMS_BASE_PERIOD = 14,
1312 	/*
1313 	 * Unsigned 32-bit value; number of APs to store in each scan in the
1314 	 * BSSID/RSSI history buffer (keep the highest RSSI APs).
1315 	 */
1316 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_SCAN_CMD_PARAMS_MAX_AP_PER_SCAN = 15,
1317 	/*
1318 	 * Unsigned 8-bit value; in %, when scan buffer is this much full, wake
1319 	 * up AP.
1320 	 */
1321 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_SCAN_CMD_PARAMS_REPORT_THRESHOLD_PERCENT
1322 	= 16,
1323 
1324 	/*
1325 	 * Unsigned 8-bit value; number of scan bucket specs; followed by a
1326 	 * nested array of_EXTSCAN_BUCKET_SPEC_* attributes and values. The size
1327 	 * of the array is determined by NUM_BUCKETS.
1328 	 */
1329 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_SCAN_CMD_PARAMS_NUM_BUCKETS = 17,
1330 
1331 	/*
1332 	 * Array of QCA_WLAN_VENDOR_ATTR_EXTSCAN_BUCKET_SPEC_* attributes.
1333 	 * Array size: QCA_WLAN_VENDOR_ATTR_EXTSCAN_SCAN_CMD_PARAMS_NUM_BUCKETS
1334 	 */
1335 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_BUCKET_SPEC = 18,
1336 
1337 	/* Unsigned 8-bit value */
1338 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_GET_CACHED_SCAN_RESULTS_CONFIG_PARAM_FLUSH
1339 	= 19,
1340 	/* Unsigned 32-bit value; maximum number of results to be returned. */
1341 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_GET_CACHED_SCAN_RESULTS_CONFIG_PARAM_MAX
1342 	= 20,
1343 
1344 	/* An array of 6 x unsigned 8-bit value */
1345 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_AP_THRESHOLD_PARAM_BSSID = 21,
1346 	/* Signed 32-bit value */
1347 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_AP_THRESHOLD_PARAM_RSSI_LOW = 22,
1348 	/* Signed 32-bit value */
1349 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_AP_THRESHOLD_PARAM_RSSI_HIGH = 23,
1350 	/* Unsigned 32-bit value */
1351 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_AP_THRESHOLD_PARAM_CHANNEL = 24,
1352 
1353 	/*
1354 	 * Number of hotlist APs as unsigned 32-bit value, followed by a nested
1355 	 * array of AP_THRESHOLD_PARAM attributes and values. The size of the
1356 	 * array is determined by NUM_AP.
1357 	 */
1358 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_BSSID_HOTLIST_PARAMS_NUM_AP = 25,
1359 
1360 	/*
1361 	 * Array of QCA_WLAN_VENDOR_ATTR_EXTSCAN_AP_THRESHOLD_PARAM_* attributes.
1362 	 * Array size: QCA_WLAN_VENDOR_ATTR_EXTSCAN_BUCKET_SPEC_NUM_CHANNEL_SPECS
1363 	 */
1364 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_AP_THRESHOLD_PARAM = 26,
1365 
1366 	/* Unsigned 32-bit value; number of samples for averaging RSSI. */
1367 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_SIGNIFICANT_CHANGE_PARAMS_RSSI_SAMPLE_SIZE
1368 	= 27,
1369 	/* Unsigned 32-bit value; number of samples to confirm AP loss. */
1370 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_SIGNIFICANT_CHANGE_PARAMS_LOST_AP_SAMPLE_SIZE
1371 	= 28,
1372 	/* Unsigned 32-bit value; number of APs breaching threshold. */
1373 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_SIGNIFICANT_CHANGE_PARAMS_MIN_BREACHING = 29,
1374 	/*
1375 	 * Unsigned 32-bit value; number of APs. Followed by an array of
1376 	 * AP_THRESHOLD_PARAM attributes. Size of the array is NUM_AP.
1377 	 */
1378 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_SIGNIFICANT_CHANGE_PARAMS_NUM_AP = 30,
1379 	/* Unsigned 32-bit value; number of samples to confirm AP loss. */
1380 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_BSSID_HOTLIST_PARAMS_LOST_AP_SAMPLE_SIZE
1381 	= 31,
1382 	/*
1383 	 * Unsigned 32-bit value. If max_period is non zero or different than
1384 	 * period, then this bucket is an exponential backoff bucket.
1385 	 */
1386 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_BUCKET_SPEC_MAX_PERIOD = 32,
1387 	/* Unsigned 32-bit value. */
1388 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_BUCKET_SPEC_BASE = 33,
1389 	/*
1390 	 * Unsigned 32-bit value. For exponential back off bucket, number of
1391 	 * scans to perform for a given period.
1392 	 */
1393 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_BUCKET_SPEC_STEP_COUNT = 34,
1394 	/*
1395 	 * Unsigned 8-bit value; in number of scans, wake up AP after these
1396 	 * many scans.
1397 	 */
1398 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_SCAN_CMD_PARAMS_REPORT_THRESHOLD_NUM_SCANS
1399 	= 35,
1400 
1401 	/*
1402 	 * Attributes for data used by
1403 	 * QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_SET_SSID_HOTLIST sub command.
1404 	 */
1405 
1406 	/* Unsigned 3-2bit value; number of samples to confirm SSID loss. */
1407 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_SSID_HOTLIST_PARAMS_LOST_SSID_SAMPLE_SIZE
1408 	= 36,
1409 	/*
1410 	 * Number of hotlist SSIDs as unsigned 32-bit value, followed by a
1411 	 * nested array of SSID_THRESHOLD_PARAM_* attributes and values. The
1412 	 * size of the array is determined by NUM_SSID.
1413 	 */
1414 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_SSID_HOTLIST_PARAMS_NUM_SSID = 37,
1415 	/*
1416 	 * Array of QCA_WLAN_VENDOR_ATTR_EXTSCAN_SSID_THRESHOLD_PARAM_*
1417 	 * attributes.
1418 	 * Array size: QCA_WLAN_VENDOR_ATTR_EXTSCAN_SSID_HOTLIST_PARAMS_NUM_SSID
1419 	 */
1420 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_SSID_THRESHOLD_PARAM = 38,
1421 
1422 	/* An array of 33 x unsigned 8-bit value; NULL terminated SSID */
1423 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_SSID_THRESHOLD_PARAM_SSID = 39,
1424 	/* Unsigned 8-bit value */
1425 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_SSID_THRESHOLD_PARAM_BAND = 40,
1426 	/* Signed 32-bit value */
1427 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_SSID_THRESHOLD_PARAM_RSSI_LOW = 41,
1428 	/* Signed 32-bit value */
1429 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_SSID_THRESHOLD_PARAM_RSSI_HIGH = 42,
1430 	/* Unsigned 32-bit value; a bitmask with additional extscan config flag.
1431 	 */
1432 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_CONFIGURATION_FLAGS = 43,
1433 
1434 	/* keep last */
1435 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_SUBCMD_CONFIG_PARAM_AFTER_LAST,
1436 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_SUBCMD_CONFIG_PARAM_MAX =
1437 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_SUBCMD_CONFIG_PARAM_AFTER_LAST - 1,
1438 };
1439 
1440 enum qca_wlan_vendor_attr_extscan_results {
1441 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_RESULTS_INVALID = 0,
1442 
1443 	/*
1444 	 * Unsigned 32-bit value; must match the request Id supplied by
1445 	 * Wi-Fi HAL in the corresponding subcmd NL msg.
1446 	 */
1447 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_RESULTS_REQUEST_ID = 1,
1448 
1449 	/*
1450 	 * Unsigned 32-bit value; used to indicate the status response from
1451 	 * firmware/driver for the vendor sub-command.
1452 	 */
1453 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_STATUS = 2,
1454 
1455 	/*
1456 	 * EXTSCAN Valid Channels attributes */
1457 	/* Unsigned 32bit value; followed by a nested array of CHANNELS. */
1458 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_RESULTS_NUM_CHANNELS = 3,
1459 	/*
1460 	 * An array of NUM_CHANNELS x unsigned 32-bit value integers
1461 	 * representing channel numbers.
1462 	 */
1463 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_RESULTS_CHANNELS = 4,
1464 
1465 	/* EXTSCAN Capabilities attributes */
1466 
1467 	/* Unsigned 32-bit value */
1468 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_RESULTS_CAPABILITIES_MAX_SCAN_CACHE_SIZE = 5,
1469 	/* Unsigned 32-bit value */
1470 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_RESULTS_CAPABILITIES_MAX_SCAN_BUCKETS = 6,
1471 	/* Unsigned 32-bit value */
1472 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_RESULTS_CAPABILITIES_MAX_AP_CACHE_PER_SCAN
1473 	= 7,
1474 	/* Unsigned 32-bit value */
1475 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_RESULTS_CAPABILITIES_MAX_RSSI_SAMPLE_SIZE
1476 	= 8,
1477 	/* Signed 32-bit value */
1478 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_RESULTS_CAPABILITIES_MAX_SCAN_REPORTING_THRESHOLD
1479 	= 9,
1480 	/* Unsigned 32-bit value */
1481 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_RESULTS_CAPABILITIES_MAX_HOTLIST_BSSIDS = 10,
1482 	/* Unsigned 32-bit value */
1483 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_RESULTS_CAPABILITIES_MAX_SIGNIFICANT_WIFI_CHANGE_APS
1484 	= 11,
1485 	/* Unsigned 32-bit value */
1486 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_RESULTS_CAPABILITIES_MAX_BSSID_HISTORY_ENTRIES
1487 	= 12,
1488 
1489 	/*
1490 	 * EXTSCAN Attributes used with
1491 	 * QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_SCAN_RESULTS_AVAILABLE sub-command.
1492 	 */
1493 
1494 	/* Unsigned 32-bit value */
1495 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_RESULTS_NUM_RESULTS_AVAILABLE = 13,
1496 
1497 	/*
1498 	 * EXTSCAN attributes used with
1499 	 * QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_FULL_SCAN_RESULT sub-command.
1500 	 */
1501 
1502 	/*
1503 	 * An array of NUM_RESULTS_AVAILABLE x
1504 	 * QCA_WLAN_VENDOR_ATTR_EXTSCAN_RESULTS_SCAN_RESULT_*
1505 	 */
1506 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_RESULTS_LIST = 14,
1507 
1508 	/* Unsigned 64-bit value; age of sample at the time of retrieval */
1509 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_RESULTS_SCAN_RESULT_TIME_STAMP = 15,
1510 	/* 33 x unsigned 8-bit value; NULL terminated SSID */
1511 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_RESULTS_SCAN_RESULT_SSID = 16,
1512 	/* An array of 6 x unsigned 8-bit value */
1513 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_RESULTS_SCAN_RESULT_BSSID = 17,
1514 	/* Unsigned 32-bit value; channel frequency in MHz */
1515 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_RESULTS_SCAN_RESULT_CHANNEL = 18,
1516 	/* Signed 32-bit value */
1517 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_RESULTS_SCAN_RESULT_RSSI = 19,
1518 	/* Unsigned 32-bit value */
1519 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_RESULTS_SCAN_RESULT_RTT = 20,
1520 	/* Unsigned 32-bit value */
1521 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_RESULTS_SCAN_RESULT_RTT_SD = 21,
1522 	/* Unsigned 16-bit value */
1523 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_RESULTS_SCAN_RESULT_BEACON_PERIOD = 22,
1524 	/* Unsigned 16-bit value */
1525 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_RESULTS_SCAN_RESULT_CAPABILITY = 23,
1526 	/* Unsigned 32-bit value; size of the IE DATA blob */
1527 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_RESULTS_SCAN_RESULT_IE_LENGTH = 24,
1528 	/*
1529 	 * An array of IE_LENGTH x unsigned 8-bit value; blob of all the
1530 	 * information elements found in the beacon; this data should be a
1531 	 * packed list of wifi_information_element objects, one after the
1532 	 * other.
1533 	 */
1534 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_RESULTS_SCAN_RESULT_IE_DATA = 25,
1535 
1536 	/*
1537 	 * Unsigned 8-bit value; set by driver to indicate more scan results are
1538 	 * available.
1539 	 */
1540 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_RESULTS_SCAN_RESULT_MORE_DATA = 26,
1541 
1542 	/*
1543 	 * EXTSCAN attributes for
1544 	 * QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_SCAN_EVENT sub-command.
1545 	 */
1546 	/* Unsigned 8-bit value */
1547 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_RESULTS_SCAN_EVENT_TYPE = 27,
1548 	/* Unsigned 32-bit value */
1549 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_RESULTS_SCAN_EVENT_STATUS = 28,
1550 
1551 	/*
1552 	 * EXTSCAN attributes for
1553 	 * QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_HOTLIST_AP_FOUND sub-command.
1554 	 */
1555 	/*
1556 	 * Use attr QCA_WLAN_VENDOR_ATTR_EXTSCAN_RESULTS_NUM_RESULTS_AVAILABLE
1557 	 * to indicate number of results.
1558 	 * Also, use QCA_WLAN_VENDOR_ATTR_EXTSCAN_RESULTS_LIST to indicate the
1559 	 * list of results.
1560 	 */
1561 
1562 	/*
1563 	 * EXTSCAN attributes for
1564 	 * QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_SIGNIFICANT_CHANGE sub-command.
1565 	 */
1566 	/* An array of 6 x unsigned 8-bit value */
1567 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_RESULTS_SIGNIFICANT_CHANGE_RESULT_BSSID = 29,
1568 	/* Unsigned 32-bit value */
1569 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_RESULTS_SIGNIFICANT_CHANGE_RESULT_CHANNEL
1570 	= 30,
1571 	/* Unsigned 32-bit value. */
1572 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_RESULTS_SIGNIFICANT_CHANGE_RESULT_NUM_RSSI
1573 	= 31,
1574 	/*
1575 	 * A nested array of signed 32-bit RSSI values. Size of the array is
1576 	 * determined by (NUM_RSSI of SIGNIFICANT_CHANGE_RESULT_NUM_RSSI.
1577 	 */
1578 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_RESULTS_SIGNIFICANT_CHANGE_RESULT_RSSI_LIST
1579 	= 32,
1580 
1581 	/*
1582 	 * EXTSCAN attributes used with
1583 	 * QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_GET_CACHED_RESULTS sub-command.
1584 	 */
1585 	/*
1586 	 * Use attr QCA_WLAN_VENDOR_ATTR_EXTSCAN_RESULTS_NUM_RESULTS_AVAILABLE
1587 	 * to indicate number of extscan cached results returned.
1588 	 * Also, use QCA_WLAN_VENDOR_ATTR_EXTSCAN_CACHED_RESULTS_LIST to indicate
1589 	 *  the list of extscan cached results.
1590 	 */
1591 
1592 	/*
1593 	 * An array of NUM_RESULTS_AVAILABLE x
1594 	 * QCA_NL80211_VENDOR_ATTR_EXTSCAN_CACHED_RESULTS_*
1595 	 */
1596 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_CACHED_RESULTS_LIST = 33,
1597 	/* Unsigned 32-bit value; a unique identifier for the scan unit. */
1598 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_CACHED_RESULTS_SCAN_ID = 34,
1599 	/*
1600 	 * Unsigned 32-bit value; a bitmask w/additional information about scan.
1601 	 */
1602 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_CACHED_RESULTS_FLAGS = 35,
1603 	/*
1604 	 * Use attr QCA_WLAN_VENDOR_ATTR_EXTSCAN_RESULTS_NUM_RESULTS_AVAILABLE
1605 	 * to indicate number of wifi scan results/bssids retrieved by the scan.
1606 	 * Also, use QCA_WLAN_VENDOR_ATTR_EXTSCAN_RESULTS_LIST to indicate the
1607 	 * list of wifi scan results returned for each cached result block.
1608 	 */
1609 
1610 	/*
1611 	 * EXTSCAN attributes for
1612 	 * QCA_NL80211_VENDOR_SUBCMD_PNO_NETWORK_FOUND sub-command.
1613 	 */
1614 	/*
1615 	 * Use QCA_WLAN_VENDOR_ATTR_EXTSCAN_RESULTS_NUM_RESULTS_AVAILABLE for
1616 	 * number of results.
1617 	 * Use QCA_WLAN_VENDOR_ATTR_EXTSCAN_RESULTS_LIST to indicate the nested
1618 	 * list of wifi scan results returned for each
1619 	 * wifi_passpoint_match_result block.
1620 	 * Array size: QCA_WLAN_VENDOR_ATTR_EXTSCAN_RESULTS_NUM_RESULTS_AVAILABLE.
1621 	 */
1622 
1623 	/*
1624 	 * EXTSCAN attributes for
1625 	 * QCA_NL80211_VENDOR_SUBCMD_PNO_PASSPOINT_NETWORK_FOUND sub-command.
1626 	 */
1627 	/* Unsigned 32-bit value */
1628 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_PNO_RESULTS_PASSPOINT_NETWORK_FOUND_NUM_MATCHES
1629 	= 36,
1630 	/*
1631 	 * A nested array of
1632 	 * QCA_WLAN_VENDOR_ATTR_EXTSCAN_PNO_RESULTS_PASSPOINT_MATCH_*
1633 	 * attributes. Array size =
1634 	 * *_ATTR_EXTSCAN_PNO_RESULTS_PASSPOINT_NETWORK_FOUND_NUM_MATCHES.
1635 	 */
1636 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_PNO_RESULTS_PASSPOINT_MATCH_RESULT_LIST = 37,
1637 
1638 	/* Unsigned 32-bit value; network block id for the matched network */
1639 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_PNO_RESULTS_PASSPOINT_MATCH_ID = 38,
1640 	/*
1641 	 * Use QCA_WLAN_VENDOR_ATTR_EXTSCAN_RESULTS_LIST to indicate the nested
1642 	 * list of wifi scan results returned for each
1643 	 * wifi_passpoint_match_result block.
1644 	 */
1645 	/* Unsigned 32-bit value */
1646 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_PNO_RESULTS_PASSPOINT_MATCH_ANQP_LEN = 39,
1647 	/*
1648 	 * An array size of PASSPOINT_MATCH_ANQP_LEN of unsigned 8-bit values;
1649 	 * ANQP data in the information_element format.
1650 	 */
1651 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_PNO_RESULTS_PASSPOINT_MATCH_ANQP = 40,
1652 
1653 	/* Unsigned 32-bit value; a EXTSCAN Capabilities attribute. */
1654 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_RESULTS_CAPABILITIES_MAX_HOTLIST_SSIDS = 41,
1655 	/* Unsigned 32-bit value; a EXTSCAN Capabilities attribute. */
1656 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_RESULTS_CAPABILITIES_MAX_NUM_EPNO_NETS = 42,
1657 	/* Unsigned 32-bit value; a EXTSCAN Capabilities attribute. */
1658 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_RESULTS_CAPABILITIES_MAX_NUM_EPNO_NETS_BY_SSID
1659 	= 43,
1660 	/* Unsigned 32-bit value; a EXTSCAN Capabilities attribute. */
1661 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_RESULTS_CAPABILITIES_MAX_NUM_WHITELISTED_SSID
1662 	= 44,
1663 
1664 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_RESULTS_BUCKETS_SCANNED = 45,
1665 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_MAX_NUM_BLACKLISTED_BSSID = 46,
1666 
1667 	/* keep last */
1668 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_RESULTS_AFTER_LAST,
1669 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_RESULTS_MAX =
1670 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_RESULTS_AFTER_LAST - 1,
1671 };
1672 #endif
1673 
1674 #ifdef WLAN_FEATURE_LINK_LAYER_STATS
1675 
1676 /**
1677  * enum qca_wlan_vendor_attr_ll_stats_set - vendor attribute set stats
1678  *
1679  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_SET_INVALID: Invalid initial value
1680  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_SET_CONFIG_MPDU_SIZE_THRESHOLD: Size threshold
1681  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_SET_CONFIG_AGGRESSIVE_STATS_GATHERING:
1682  *	Aggresive stats gathering
1683  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_SET_AFTER_LAST: After last
1684  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_SET_MAX: Max value
1685  */
1686 enum qca_wlan_vendor_attr_ll_stats_set {
1687 	QCA_WLAN_VENDOR_ATTR_LL_STATS_SET_INVALID = 0,
1688 	QCA_WLAN_VENDOR_ATTR_LL_STATS_SET_CONFIG_MPDU_SIZE_THRESHOLD = 1,
1689 	QCA_WLAN_VENDOR_ATTR_LL_STATS_SET_CONFIG_AGGRESSIVE_STATS_GATHERING,
1690 	/* keep last */
1691 	QCA_WLAN_VENDOR_ATTR_LL_STATS_SET_AFTER_LAST,
1692 	QCA_WLAN_VENDOR_ATTR_LL_STATS_SET_MAX =
1693 		QCA_WLAN_VENDOR_ATTR_LL_STATS_SET_AFTER_LAST - 1
1694 };
1695 
1696 /**
1697  * enum qca_wlan_vendor_attr_ll_stats_get - vendor attribute get stats
1698  *
1699  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_GET_INVALID: Invalid initial value
1700  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_GET_CONFIG_REQ_ID: Unsigned 32bit value
1701  *	provided by the caller issuing the GET stats command. When reporting
1702  *	the stats results, the driver uses the same value to indicate which
1703  *	GET request the results correspond to.
1704  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_GET_CONFIG_REQ_MASK: Get config request mask
1705  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_CLR_CONFIG_RSP_MASK: Config response mask
1706  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_CLR_CONFIG_STOP_RSP: Config stop response
1707  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_GET_AFTER_LAST: After last
1708  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_GET_MAX: Max value
1709  */
1710 enum qca_wlan_vendor_attr_ll_stats_get {
1711 	QCA_WLAN_VENDOR_ATTR_LL_STATS_GET_INVALID = 0,
1712 	QCA_WLAN_VENDOR_ATTR_LL_STATS_GET_CONFIG_REQ_ID,
1713 	QCA_WLAN_VENDOR_ATTR_LL_STATS_GET_CONFIG_REQ_MASK,
1714 	QCA_WLAN_VENDOR_ATTR_LL_STATS_GET_AFTER_LAST,
1715 	QCA_WLAN_VENDOR_ATTR_LL_STATS_GET_MAX =
1716 		QCA_WLAN_VENDOR_ATTR_LL_STATS_GET_AFTER_LAST - 1
1717 };
1718 
1719 /**
1720  * enum qca_wlan_vendor_attr_ll_stats_clr - vendor attribute clear stats
1721  *
1722  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_CLR_INVALID: Invalid initial value
1723  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_CLR_CONFIG_REQ_MASK: Config request mask
1724  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_CLR_CONFIG_STOP_REQ: Config stop mask
1725  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_CLR_CONFIG_RSP_MASK: Config response mask
1726  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_CLR_CONFIG_STOP_RSP: Config stop response
1727  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_CLR_AFTER_LAST: After last
1728  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_CLR_MAX: Max value
1729  */
1730 enum qca_wlan_vendor_attr_ll_stats_clr {
1731 	QCA_WLAN_VENDOR_ATTR_LL_STATS_CLR_INVALID = 0,
1732 	QCA_WLAN_VENDOR_ATTR_LL_STATS_CLR_CONFIG_REQ_MASK,
1733 	QCA_WLAN_VENDOR_ATTR_LL_STATS_CLR_CONFIG_STOP_REQ,
1734 	QCA_WLAN_VENDOR_ATTR_LL_STATS_CLR_CONFIG_RSP_MASK,
1735 	QCA_WLAN_VENDOR_ATTR_LL_STATS_CLR_CONFIG_STOP_RSP,
1736 	QCA_WLAN_VENDOR_ATTR_LL_STATS_CLR_AFTER_LAST,
1737 	QCA_WLAN_VENDOR_ATTR_LL_STATS_CLR_MAX =
1738 		QCA_WLAN_VENDOR_ATTR_LL_STATS_CLR_AFTER_LAST - 1
1739 };
1740 
1741 /**
1742  * enum qca_wlan_vendor_attr_ll_stats_results_type - ll stats result type
1743  *
1744  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_TYPE_INVALID: Initial invalid value
1745  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_TYPE_RADIO: Link layer stats type radio
1746  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_TYPE_IFACE: Link layer stats type interface
1747  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_TYPE_PEER: Link layer stats type peer
1748  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_TYPE_AFTER_LAST: Last value
1749  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_TYPE_MAX: Max value
1750  */
1751 enum qca_wlan_vendor_attr_ll_stats_results_type {
1752 	QCA_WLAN_VENDOR_ATTR_LL_STATS_TYPE_INVALID = 0,
1753 
1754 	QCA_WLAN_VENDOR_ATTR_LL_STATS_TYPE_RADIO = 1,
1755 	QCA_WLAN_VENDOR_ATTR_LL_STATS_TYPE_IFACE,
1756 	QCA_WLAN_VENDOR_ATTR_LL_STATS_TYPE_PEER,
1757 
1758 	QCA_WLAN_VENDOR_ATTR_LL_STATS_TYPE_AFTER_LAST,
1759 	QCA_WLAN_VENDOR_ATTR_LL_STATS_TYPE_MAX =
1760 		QCA_WLAN_VENDOR_ATTR_LL_STATS_TYPE_AFTER_LAST - 1
1761 };
1762 
1763 /**
1764  * enum qca_wlan_vendor_attr_ll_stats_results - vendor attribute stats results
1765  *
1766  * Attributes of type QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_INFO_* are nested
1767  * within the interface stats.
1768  *
1769  * Attributes of type QCA_WLAN_VENDOR_ATTR_LL_STATS_WMM_AC_* could be nested
1770  * within the interface stats.
1771  *
1772  * Attributes of type QCA_WLAN_VENDOR_ATTR_LL_STATS_PEER_INFO_* are nested
1773  * within the interface stats.
1774  *
1775  * Attributes of type QCA_WLAN_VENDOR_ATTR_LL_STATS_RATE_* could be nested
1776  * within the peer info stats.
1777  *
1778  * Attributes of type QCA_WLAN_VENDOR_ATTR_LL_STATS_CHANNEL_INFO_* could be
1779  * nested within the channel stats.
1780  *
1781  * Attributes of type QCA_WLAN_VENDOR_ATTR_LL_STATS_CHANNEL_ could be nested
1782  * within the radio stats.
1783  *
1784  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_INVALID: Invalid initial value
1785  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_RESULTS_REQ_ID: Unsigned 32bit value
1786  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_BEACON_RX: Unsigned 32bit value
1787  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_MGMT_RX: Unsigned 32bit value
1788  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_MGMT_ACTION_RX: Unsigned 32bit value
1789  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_MGMT_ACTION_TX: Unsigned 32bit value
1790  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_RSSI_MGMT: Unsigned 32bit value
1791  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_RSSI_DATA: Unsigned 32bit value
1792  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_RSSI_ACK: Unsigned 32bit value
1793  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_INFO_MODE: Interface mode, e.g., STA,
1794  *	SOFTAP, IBSS, etc. Type = enum wifi_interface_mode
1795  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_INFO_MAC_ADDR: Interface MAC address.
1796  *	An array of 6 Unsigned int8_t
1797  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_INFO_STATE:
1798  *	Type = enum wifi_connection_state,  e.g., DISCONNECTED, AUTHENTICATING,
1799  *	etc. Valid for STA, CLI only
1800  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_INFO_ROAMING:
1801  *	Type = enum wifi_roam_state. Roaming state, e.g., IDLE or ACTIVE
1802  *	(is that valid for STA only?)
1803  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_INFO_CAPABILITIES: Unsigned 32bit value.
1804  *	WIFI_CAPABILITY_XXX
1805  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_INFO_SSID: NULL terminated SSID. An
1806  *	array of 33 Unsigned 8bit values
1807  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_INFO_BSSID: BSSID. An array of 6
1808  *	Unsigned 8bit values
1809  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_INFO_AP_COUNTRY_STR: Country string
1810  *	advertised by AP. An array of 3 Unsigned 8bit values
1811  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_INFO_COUNTRY_STR: Country string for
1812  *	this association. An array of 3 Unsigned 8bit values
1813  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_WMM_AC_AC: Type = enum wifi_traffic_ac e.g.
1814  *	V0, VI, BE and BK
1815  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_WMM_AC_TX_MPDU: Unsigned int 32 value
1816  *	corresponding to respective AC
1817  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_WMM_AC_RX_MPDU: Unsigned int 32 value
1818  *	corresponding to respective AC
1819  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_WMM_AC_TX_MCAST: Unsigned int 32 value
1820  *	corresponding to respective AC
1821  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_WMM_AC_RX_MCAST: Unsigned int 32 value
1822  *	corresponding to respective AC
1823  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_WMM_AC_RX_AMPDU: Unsigned int 32 value
1824  *	corresponding to respective AC
1825  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_WMM_AC_TX_AMPDU: Unsigned int 32 value
1826  *	corresponding to respective AC
1827  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_WMM_AC_MPDU_LOST: Unsigned int 32 value
1828  *	corresponding to respective AC
1829  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_WMM_AC_RETRIES: Unsigned int 32 value
1830  *	corresponding to respective AC
1831  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_WMM_AC_RETRIES_SHORT: Unsigned int 32 value
1832  *	corresponding to respective AC
1833  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_WMM_AC_CONTENTION_TIME_MIN: Unsigned int 32
1834  *	value corresponding to respective AC
1835  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_WMM_AC_CONTENTION_TIME_MAX: Unsigned int 32
1836  *	value corresponding to respective AC
1837  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_WMM_AC_CONTENTION_TIME_AVG: Unsigned int 32
1838  *	value corresponding to respective AC
1839  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_WMM_AC_CONTENTION_NUM_SAMPLES: Unsigned int 32
1840  *	value corresponding to respective AC
1841  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_NUM_PEERS: Unsigned int 32
1842  *	value corresponding to respective AC
1843  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_PEER_INFO_TYPE: Type = enum wifi_peer_type
1844  *	Peer type, e.g., STA, AP, P2P GO etc
1845  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_PEER_INFO_MAC_ADDRESS: MAC addr corresponding
1846  *	to respective peer. An array of 6 Unsigned 8bit values
1847  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_PEER_INFO_CAPABILITIES: Unsigned int 32bit
1848  *	value representing capabilities corresponding to respective peer.
1849  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_PEER_INFO_NUM_RATES: Unsigned 32bit value.
1850  *	Number of rates
1851  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_RATE_PREAMBLE: Unsigned int 8bit value:
1852  *	0: OFDM, 1:CCK, 2:HT 3:VHT 4..7 reserved
1853  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_RATE_NSS: Unsigned int 8bit value:
1854  *	0:1x1, 1:2x2, 3:3x3, 4:4x4
1855  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_RATE_BW: Unsigned int 8bit value:
1856  *	0:20MHz, 1:40Mhz, 2:80Mhz, 3:160Mhz
1857  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_RATE_MCS_INDEX: Unsigned int 8bit value:
1858  *	OFDM/CCK rate code would be as per IEEE Std in the units of 0.5mbps
1859  *	HT/VHT it would be mcs index
1860  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_RATE_BIT_RATE: Unsigned 32bit value.
1861  *	Bit rate in units of 100Kbps
1862  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_RATE_TX_MPDU: Unsigned int 32bit value.
1863  *	Number of successfully transmitted data pkts i.e., with ACK received
1864  *	corresponding to the respective rate
1865  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_RATE_RX_MPDU: Unsigned int 32bit value.
1866  *	Number of received data pkts corresponding to the respective rate
1867  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_RATE_MPDU_LOST: Unsigned int 32bit value.
1868  *	Number of data pkts losses, i.e., no ACK received corresponding to
1869  *	the respective rate
1870  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_RATE_RETRIES: Unsigned int 32bit value.
1871  *	Total number of data pkt retries for the respective rate
1872  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_RATE_RETRIES_SHORT: Unsigned int 32bit value.
1873  *	Total number of short data pkt retries for the respective rate
1874  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_RATE_RETRIES_LONG: Unsigned int 32bit value.
1875  *	Total number of long data pkt retries for the respective rate
1876  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_RADIO_ID: Radio id
1877  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_RADIO_ON_TIME: Unsigned 32bit value.
1878  *	Total number of msecs the radio is awake accruing over time
1879  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_RADIO_TX_TIME: Unsigned 32bit value.
1880  *	Total number of msecs the radio is transmitting accruing over time
1881  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_RADIO_RX_TIME: Unsigned 32bit value.
1882  *	Total number of msecs the radio is in active receive accruing over time
1883  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_RADIO_ON_TIME_SCAN: Unsigned 32bit value.
1884  *	Total number of msecs the radio is awake due to all scan accruing
1885  *	over time
1886  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_RADIO_ON_TIME_NBD: Unsigned 32bit value.
1887  *	Total number of msecs the radio is awake due to NAN accruing over time.
1888  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_RADIO_ON_TIME_GSCAN: Unsigned 32bit value.
1889  *	Total number of msecs the radio is awake due to GSCAN accruing over time
1890  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_RADIO_ON_TIME_ROAM_SCAN: Unsigned 32bit value.
1891  *	Total number of msecs the radio is awake due to roam scan accruing over
1892  *	time.
1893  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_RADIO_ON_TIME_PNO_SCAN: Unsigned 32bit value.
1894  *	Total number of msecs the radio is awake due to PNO scan accruing over
1895  *	time.
1896  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_RADIO_ON_TIME_HS20: Unsigned 32bit value.
1897  *	Total number of msecs the radio is awake due to HS2.0 scans and GAS
1898  *	exchange accruing over time.
1899  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_RADIO_NUM_CHANNELS: Unsigned 32bit value.
1900  *	Number of channels
1901  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_CHANNEL_INFO_WIDTH:
1902  *	Type = enum wifi_channel_width. Channel width, e.g., 20, 40, 80, etc.
1903  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_CHANNEL_INFO_CENTER_FREQ:
1904  *	Unsigned 32bit value. Primary 20MHz channel.
1905  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_CHANNEL_INFO_CENTER_FREQ0:
1906  *	Unsigned 32bit value. Center frequency (MHz) first segment.
1907  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_CHANNEL_INFO_CENTER_FREQ1:
1908  *	Unsigned 32bit value. Center frequency (MHz) second segment.
1909  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_CHANNEL_ON_TIME: Unsigned int 32bit value
1910  *	representing total number of msecs the radio is awake on that channel
1911  *	accruing over time, corresponding to the respective channel.
1912  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_CHANNEL_CCA_BUSY_TIME:  Unsigned int 32bit
1913  *	value representing total number of msecs the CCA register is busy
1914  *	accruing  over time corresponding to the respective channel.
1915  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_NUM_RADIOS: Number of radios
1916  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_CH_INFO: Channel info
1917  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_PEER_INFO: Peer info
1918  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_PEER_INFO_RATE_INFO: Peer rate info
1919  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_WMM_INFO: WMM info
1920  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_RESULTS_MORE_DATA: Unsigned 8bit value.
1921  *	Used by the driver; if set to 1, it indicates that more stats, e.g.,
1922  *	peers or radio, are to follow in the next
1923  *	QCA_NL80211_VENDOR_SUBCMD_LL_STATS_*_RESULTS event. Otherwise, it
1924  *	is set to 0.
1925  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_AVERAGE_TSF_OFFSET: tsf offset
1926  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_LEAKY_AP_DETECTED: leaky ap detected
1927  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_LEAKY_AP_AVG_NUM_FRAMES_LEAKED:
1928  *	average number of frames leaked
1929  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_LEAKY_AP_GUARD_TIME: guard time
1930  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_TYPE: Link Layer stats type
1931  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_RADIO_NUM_TX_LEVELS: LL Radio Number of
1932  *      Tx Levels
1933  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_RADIO_TX_TIME_PER_LEVEL:Number of msecs the
1934  *      radio spent in transmitting for each power level
1935  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_RTS_SUCC_CNT: RTS successful count
1936  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_RTS_FAIL_CNT: RTS fail count
1937  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_PPDU_SUCC_CNT: PPDU successful count
1938  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_PPDU_FAIL_CNT: PPDU fail count
1939  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_AFTER_LAST: After last
1940  * @QCA_WLAN_VENDOR_ATTR_FEATURE_SET_MAX: Max value
1941  */
1942 
1943 enum qca_wlan_vendor_attr_ll_stats_results {
1944 	QCA_WLAN_VENDOR_ATTR_LL_STATS_INVALID = 0,
1945 	QCA_WLAN_VENDOR_ATTR_LL_STATS_RESULTS_REQ_ID = 1,
1946 
1947 	QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_BEACON_RX = 2,
1948 	QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_MGMT_RX = 3,
1949 	QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_MGMT_ACTION_RX = 4,
1950 	QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_MGMT_ACTION_TX = 5,
1951 	QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_RSSI_MGMT = 6,
1952 	QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_RSSI_DATA = 7,
1953 	QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_RSSI_ACK = 8,
1954 	QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_INFO_MODE = 9,
1955 	QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_INFO_MAC_ADDR = 10,
1956 	QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_INFO_STATE = 11,
1957 	QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_INFO_ROAMING = 12,
1958 	QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_INFO_CAPABILITIES = 13,
1959 	QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_INFO_SSID = 14,
1960 	QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_INFO_BSSID = 15,
1961 	QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_INFO_AP_COUNTRY_STR = 16,
1962 	QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_INFO_COUNTRY_STR = 17,
1963 
1964 	QCA_WLAN_VENDOR_ATTR_LL_STATS_WMM_AC_AC = 18,
1965 	QCA_WLAN_VENDOR_ATTR_LL_STATS_WMM_AC_TX_MPDU = 19,
1966 	QCA_WLAN_VENDOR_ATTR_LL_STATS_WMM_AC_RX_MPDU = 20,
1967 	QCA_WLAN_VENDOR_ATTR_LL_STATS_WMM_AC_TX_MCAST = 21,
1968 	QCA_WLAN_VENDOR_ATTR_LL_STATS_WMM_AC_RX_MCAST = 22,
1969 	QCA_WLAN_VENDOR_ATTR_LL_STATS_WMM_AC_RX_AMPDU = 23,
1970 	QCA_WLAN_VENDOR_ATTR_LL_STATS_WMM_AC_TX_AMPDU = 24,
1971 	QCA_WLAN_VENDOR_ATTR_LL_STATS_WMM_AC_MPDU_LOST = 25,
1972 	QCA_WLAN_VENDOR_ATTR_LL_STATS_WMM_AC_RETRIES = 26,
1973 	QCA_WLAN_VENDOR_ATTR_LL_STATS_WMM_AC_RETRIES_SHORT = 27,
1974 	QCA_WLAN_VENDOR_ATTR_LL_STATS_WMM_AC_RETRIES_LONG = 28,
1975 	QCA_WLAN_VENDOR_ATTR_LL_STATS_WMM_AC_CONTENTION_TIME_MIN = 29,
1976 	QCA_WLAN_VENDOR_ATTR_LL_STATS_WMM_AC_CONTENTION_TIME_MAX = 30,
1977 	QCA_WLAN_VENDOR_ATTR_LL_STATS_WMM_AC_CONTENTION_TIME_AVG = 31,
1978 	QCA_WLAN_VENDOR_ATTR_LL_STATS_WMM_AC_CONTENTION_NUM_SAMPLES = 32,
1979 
1980 	QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_NUM_PEERS = 33,
1981 
1982 	QCA_WLAN_VENDOR_ATTR_LL_STATS_PEER_INFO_TYPE = 34,
1983 	QCA_WLAN_VENDOR_ATTR_LL_STATS_PEER_INFO_MAC_ADDRESS = 35,
1984 	QCA_WLAN_VENDOR_ATTR_LL_STATS_PEER_INFO_CAPABILITIES = 36,
1985 	QCA_WLAN_VENDOR_ATTR_LL_STATS_PEER_INFO_NUM_RATES = 37,
1986 
1987 	QCA_WLAN_VENDOR_ATTR_LL_STATS_RATE_PREAMBLE = 38,
1988 	QCA_WLAN_VENDOR_ATTR_LL_STATS_RATE_NSS = 39,
1989 	QCA_WLAN_VENDOR_ATTR_LL_STATS_RATE_BW = 40,
1990 	QCA_WLAN_VENDOR_ATTR_LL_STATS_RATE_MCS_INDEX = 41,
1991 	QCA_WLAN_VENDOR_ATTR_LL_STATS_RATE_BIT_RATE = 42,
1992 
1993 	QCA_WLAN_VENDOR_ATTR_LL_STATS_RATE_TX_MPDU = 43,
1994 	QCA_WLAN_VENDOR_ATTR_LL_STATS_RATE_RX_MPDU = 44,
1995 	QCA_WLAN_VENDOR_ATTR_LL_STATS_RATE_MPDU_LOST = 45,
1996 	QCA_WLAN_VENDOR_ATTR_LL_STATS_RATE_RETRIES = 46,
1997 	QCA_WLAN_VENDOR_ATTR_LL_STATS_RATE_RETRIES_SHORT = 47,
1998 	QCA_WLAN_VENDOR_ATTR_LL_STATS_RATE_RETRIES_LONG = 48,
1999 
2000 	QCA_WLAN_VENDOR_ATTR_LL_STATS_RADIO_ID = 49,
2001 	QCA_WLAN_VENDOR_ATTR_LL_STATS_RADIO_ON_TIME = 50,
2002 	QCA_WLAN_VENDOR_ATTR_LL_STATS_RADIO_TX_TIME = 51,
2003 	QCA_WLAN_VENDOR_ATTR_LL_STATS_RADIO_RX_TIME = 52,
2004 	QCA_WLAN_VENDOR_ATTR_LL_STATS_RADIO_ON_TIME_SCAN = 53,
2005 	QCA_WLAN_VENDOR_ATTR_LL_STATS_RADIO_ON_TIME_NBD = 54,
2006 	QCA_WLAN_VENDOR_ATTR_LL_STATS_RADIO_ON_TIME_GSCAN = 55,
2007 	QCA_WLAN_VENDOR_ATTR_LL_STATS_RADIO_ON_TIME_ROAM_SCAN = 56,
2008 	QCA_WLAN_VENDOR_ATTR_LL_STATS_RADIO_ON_TIME_PNO_SCAN = 57,
2009 	QCA_WLAN_VENDOR_ATTR_LL_STATS_RADIO_ON_TIME_HS20 = 58,
2010 	QCA_WLAN_VENDOR_ATTR_LL_STATS_RADIO_NUM_CHANNELS = 59,
2011 
2012 	QCA_WLAN_VENDOR_ATTR_LL_STATS_CHANNEL_INFO_WIDTH = 60,
2013 	QCA_WLAN_VENDOR_ATTR_LL_STATS_CHANNEL_INFO_CENTER_FREQ = 61,
2014 	QCA_WLAN_VENDOR_ATTR_LL_STATS_CHANNEL_INFO_CENTER_FREQ0 = 62,
2015 	QCA_WLAN_VENDOR_ATTR_LL_STATS_CHANNEL_INFO_CENTER_FREQ1 = 63,
2016 
2017 	QCA_WLAN_VENDOR_ATTR_LL_STATS_CHANNEL_ON_TIME = 64,
2018 	QCA_WLAN_VENDOR_ATTR_LL_STATS_CHANNEL_CCA_BUSY_TIME = 65,
2019 
2020 	QCA_WLAN_VENDOR_ATTR_LL_STATS_NUM_RADIOS = 66,
2021 	QCA_WLAN_VENDOR_ATTR_LL_STATS_CH_INFO = 67,
2022 	QCA_WLAN_VENDOR_ATTR_LL_STATS_PEER_INFO = 68,
2023 	QCA_WLAN_VENDOR_ATTR_LL_STATS_PEER_INFO_RATE_INFO = 69,
2024 	QCA_WLAN_VENDOR_ATTR_LL_STATS_WMM_INFO = 70,
2025 
2026 	QCA_WLAN_VENDOR_ATTR_LL_STATS_RESULTS_MORE_DATA = 71,
2027 
2028 	QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_AVERAGE_TSF_OFFSET = 72,
2029 	QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_LEAKY_AP_DETECTED = 73,
2030 	QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_LEAKY_AP_AVG_NUM_FRAMES_LEAKED = 74,
2031 	QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_LEAKY_AP_GUARD_TIME = 75,
2032 
2033 	QCA_WLAN_VENDOR_ATTR_LL_STATS_TYPE = 76,
2034 
2035 	QCA_WLAN_VENDOR_ATTR_LL_STATS_RADIO_NUM_TX_LEVELS = 77,
2036 
2037 	QCA_WLAN_VENDOR_ATTR_LL_STATS_RADIO_TX_TIME_PER_LEVEL = 78,
2038 
2039 	QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_RTS_SUCC_CNT = 79,
2040 	QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_RTS_FAIL_CNT = 80,
2041 	QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_PPDU_SUCC_CNT = 81,
2042 	QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_PPDU_FAIL_CNT = 82,
2043 
2044 	/* keep last */
2045 	QCA_WLAN_VENDOR_ATTR_LL_STATS_AFTER_LAST,
2046 	QCA_WLAN_VENDOR_ATTR_LL_STATS_MAX =
2047 		QCA_WLAN_VENDOR_ATTR_LL_STATS_AFTER_LAST - 1
2048 };
2049 
2050 enum qca_wlan_vendor_attr_ll_stats_type {
2051 	QCA_NL80211_VENDOR_SUBCMD_LL_STATS_TYPE_INVALID = 0,
2052 	QCA_NL80211_VENDOR_SUBCMD_LL_STATS_TYPE_RADIO = 1,
2053 	QCA_NL80211_VENDOR_SUBCMD_LL_STATS_TYPE_IFACE = 2,
2054 	QCA_NL80211_VENDOR_SUBCMD_LL_STATS_TYPE_PEERS = 3,
2055 
2056 	/* keep last */
2057 	QCA_NL80211_VENDOR_SUBCMD_LL_STATS_TYPE_AFTER_LAST,
2058 	QCA_NL80211_VENDOR_SUBCMD_LL_STATS_TYPE_MAX =
2059 	QCA_NL80211_VENDOR_SUBCMD_LL_STATS_TYPE_AFTER_LAST - 1,
2060 };
2061 
2062 #endif /* WLAN_FEATURE_LINK_LAYER_STATS */
2063 
2064 /**
2065  * enum qca_wlan_vendor_attr_get_supported_features - get supported feature
2066  *
2067  * @QCA_WLAN_VENDOR_ATTR_FEATURE_SET_INVALID: Invalid initial value
2068  * @QCA_WLAN_VENDOR_ATTR_FEATURE_SET: Unsigned 32bit value
2069  * @QCA_WLAN_VENDOR_ATTR_FEATURE_SET_AFTER_LAST: After last
2070  * @QCA_WLAN_VENDOR_ATTR_FEATURE_SET_MAX: Max value
2071  */
2072 enum qca_wlan_vendor_attr_get_supported_features {
2073 	QCA_WLAN_VENDOR_ATTR_FEATURE_SET_INVALID = 0,
2074 	QCA_WLAN_VENDOR_ATTR_FEATURE_SET = 1,
2075 	QCA_WLAN_VENDOR_ATTR_FEATURE_SET_AFTER_LAST,
2076 	QCA_WLAN_VENDOR_ATTR_FEATURE_SET_MAX =
2077 		QCA_WLAN_VENDOR_ATTR_FEATURE_SET_AFTER_LAST - 1,
2078 };
2079 
2080 /**
2081  * enum qca_wlan_vendor_attr_set_scanning_mac_oui - set scanning mac oui
2082  *
2083  * @QCA_WLAN_VENDOR_ATTR_SET_SCANNING_MAC_OUI_INVALID: Invalid initial value
2084  * @QCA_WLAN_VENDOR_ATTR_SET_SCANNING_MAC_OUI: An array of 3 x Unsigned 8-bit
2085  *	value
2086  * @QCA_WLAN_VENDOR_ATTR_SET_SCANNING_MAC_OUI_AFTER_LAST: After last
2087  * @QCA_WLAN_VENDOR_ATTR_SET_SCANNING_MAC_OUI_MAX: Max value
2088  */
2089 enum qca_wlan_vendor_attr_set_scanning_mac_oui {
2090 	QCA_WLAN_VENDOR_ATTR_SET_SCANNING_MAC_OUI_INVALID = 0,
2091 	QCA_WLAN_VENDOR_ATTR_SET_SCANNING_MAC_OUI = 1,
2092 	QCA_WLAN_VENDOR_ATTR_SET_SCANNING_MAC_OUI_AFTER_LAST,
2093 	QCA_WLAN_VENDOR_ATTR_SET_SCANNING_MAC_OUI_MAX =
2094 		QCA_WLAN_VENDOR_ATTR_SET_SCANNING_MAC_OUI_AFTER_LAST - 1,
2095 };
2096 
2097 /**
2098  * enum qca_wlan_vendor_attr_scan - Specifies vendor scan attributes
2099  *
2100  * @QCA_WLAN_VENDOR_ATTR_SCAN_IE: IEs that should be included as part of scan
2101  * @QCA_WLAN_VENDOR_ATTR_SCAN_FREQUENCIES: Nested unsigned 32-bit attributes
2102  *	with frequencies to be scanned (in MHz)
2103  * @QCA_WLAN_VENDOR_ATTR_SCAN_SSIDS: Nested attribute with SSIDs to be scanned
2104  * @QCA_WLAN_VENDOR_ATTR_SCAN_SUPP_RATES: Nested array attribute of supported
2105  *	rates to be included
2106  * @QCA_WLAN_VENDOR_ATTR_SCAN_TX_NO_CCK_RATE: flag used to send probe requests
2107  *	at non CCK rate in 2GHz band
2108  * @QCA_WLAN_VENDOR_ATTR_SCAN_FLAGS: Unsigned 32-bit scan flags
2109  * @QCA_WLAN_VENDOR_ATTR_SCAN_COOKIE: Unsigned 64-bit cookie provided by the
2110  *	driver for the specific scan request
2111  * @QCA_WLAN_VENDOR_ATTR_SCAN_STATUS: Unsigned 8-bit status of the scan
2112  *	request decoded as in enum scan_status
2113  * @QCA_WLAN_VENDOR_ATTR_SCAN_MAC: 6-byte MAC address to use when randomisation
2114  *	scan flag is set
2115  * @QCA_WLAN_VENDOR_ATTR_SCAN_MAC_MASK: 6-byte MAC address mask to be used with
2116  *	randomisation
2117  * @QCA_WLAN_VENDOR_ATTR_SCAN_BSSID: BSSID provided to do scan for specific BSS
2118  */
2119 enum qca_wlan_vendor_attr_scan {
2120 	QCA_WLAN_VENDOR_ATTR_SCAN_INVALID_PARAM = 0,
2121 	QCA_WLAN_VENDOR_ATTR_SCAN_IE,
2122 	QCA_WLAN_VENDOR_ATTR_SCAN_FREQUENCIES,
2123 	QCA_WLAN_VENDOR_ATTR_SCAN_SSIDS,
2124 	QCA_WLAN_VENDOR_ATTR_SCAN_SUPP_RATES,
2125 	QCA_WLAN_VENDOR_ATTR_SCAN_TX_NO_CCK_RATE,
2126 	QCA_WLAN_VENDOR_ATTR_SCAN_FLAGS,
2127 	QCA_WLAN_VENDOR_ATTR_SCAN_COOKIE,
2128 	QCA_WLAN_VENDOR_ATTR_SCAN_STATUS,
2129 	QCA_WLAN_VENDOR_ATTR_SCAN_MAC,
2130 	QCA_WLAN_VENDOR_ATTR_SCAN_MAC_MASK,
2131 	QCA_WLAN_VENDOR_ATTR_SCAN_BSSID,
2132 	QCA_WLAN_VENDOR_ATTR_SCAN_AFTER_LAST,
2133 	QCA_WLAN_VENDOR_ATTR_SCAN_MAX =
2134 		QCA_WLAN_VENDOR_ATTR_SCAN_AFTER_LAST - 1
2135 };
2136 
2137 /**
2138  * enum scan_status - Specifies the valid values the vendor scan attribute
2139  *	QCA_WLAN_VENDOR_ATTR_SCAN_STATUS can take
2140  * @VENDOR_SCAN_STATUS_NEW_RESULTS: implies the vendor scan is successful with
2141  *	new scan results
2142  * @VENDOR_SCAN_STATUS_ABORTED: implies the vendor scan was aborted in-between
2143  */
2144 enum scan_status {
2145 	VENDOR_SCAN_STATUS_NEW_RESULTS,
2146 	VENDOR_SCAN_STATUS_ABORTED,
2147 	VENDOR_SCAN_STATUS_MAX,
2148 };
2149 
2150 /**
2151  * enum qca_wlan_vendor_attr_get_concurrency_matrix - get concurrency matrix
2152  *
2153  * NL attributes for data used by
2154  * QCA_NL80211_VENDOR_SUBCMD_GET_CONCURRENCY_MATRIX sub command.
2155  *
2156  * @QCA_WLAN_VENDOR_ATTR_GET_CONCURRENCY_MATRIX_INVALID: Invalid initial value
2157  * @QCA_WLAN_VENDOR_ATTR_GET_CONCURRENCY_MATRIX_CONFIG_PARAM_SET_SIZE_MAX:
2158  *	Unsigned 32-bit value
2159  * @QCA_WLAN_VENDOR_ATTR_GET_CONCURRENCY_MATRIX_RESULTS_SET_SIZE:
2160  *	Unsigned 32-bit value
2161  * @QCA_WLAN_VENDOR_ATTR_GET_CONCURRENCY_MATRIX_RESULTS_SET: Set results. An
2162  *	array of SET_SIZE x Unsigned 32bit values representing concurrency
2163  *	combinations
2164  * @QCA_WLAN_VENDOR_ATTR_GET_CONCURRENCY_MATRIX_AFTER_LAST: After last
2165  * @QCA_WLAN_VENDOR_ATTR_GET_CONCURRENCY_MATRIX_MAX: Max value
2166  */
2167 enum qca_wlan_vendor_attr_get_concurrency_matrix {
2168 	QCA_WLAN_VENDOR_ATTR_GET_CONCURRENCY_MATRIX_INVALID = 0,
2169 	QCA_WLAN_VENDOR_ATTR_GET_CONCURRENCY_MATRIX_CONFIG_PARAM_SET_SIZE_MAX
2170 									= 1,
2171 	QCA_WLAN_VENDOR_ATTR_GET_CONCURRENCY_MATRIX_RESULTS_SET_SIZE = 2,
2172 	QCA_WLAN_VENDOR_ATTR_GET_CONCURRENCY_MATRIX_RESULTS_SET = 3,
2173 	QCA_WLAN_VENDOR_ATTR_GET_CONCURRENCY_MATRIX_AFTER_LAST,
2174 	QCA_WLAN_VENDOR_ATTR_GET_CONCURRENCY_MATRIX_MAX =
2175 		QCA_WLAN_VENDOR_ATTR_GET_CONCURRENCY_MATRIX_AFTER_LAST - 1,
2176 };
2177 
2178 /**
2179  * enum qca_wlan_vendor_attr_set_no_dfs_flag - vendor attribute set no dfs flag
2180  *
2181  * @QCA_WLAN_VENDOR_ATTR_SET_NO_DFS_FLAG_INVALID: Invalid initial value
2182  * @QCA_WLAN_VENDOR_ATTR_SET_NO_DFS_FLAG: Unsigned 32-bit value
2183  * @QCA_WLAN_VENDOR_ATTR_SET_NO_DFS_FLAG_AFTER_LAST: After last
2184  * @QCA_WLAN_VENDOR_ATTR_SET_NO_DFS_FLAG_MAX: Max value
2185  */
2186 enum qca_wlan_vendor_attr_set_no_dfs_flag {
2187 	QCA_WLAN_VENDOR_ATTR_SET_NO_DFS_FLAG_INVALID = 0,
2188 	QCA_WLAN_VENDOR_ATTR_SET_NO_DFS_FLAG = 1,
2189 	QCA_WLAN_VENDOR_ATTR_SET_NO_DFS_FLAG_AFTER_LAST,
2190 	QCA_WLAN_VENDOR_ATTR_SET_NO_DFS_FLAG_MAX =
2191 		QCA_WLAN_VENDOR_ATTR_SET_NO_DFS_FLAG_AFTER_LAST - 1,
2192 };
2193 
2194 /**
2195  * enum qca_vendor_attr_wisa_cmd
2196  * @QCA_WLAN_VENDOR_ATTR_WISA_INVALID: Invalid attr
2197  * @QCA_WLAN_VENDOR_ATTR_WISA_MODE: WISA mode value attr (u32)
2198  * @QCA_WLAN_VENDOR_ATTR_WISA_AFTER_LAST: After last
2199  * @QCA_WLAN_VENDOR_ATTR_WISA_MAX: Max Value
2200  * WISA setup vendor commands
2201  */
2202 enum qca_vendor_attr_wisa_cmd {
2203 	QCA_WLAN_VENDOR_ATTR_WISA_INVALID = 0,
2204 	QCA_WLAN_VENDOR_ATTR_WISA_MODE,
2205 	QCA_WLAN_VENDOR_ATTR_WISA_AFTER_LAST,
2206 	QCA_WLAN_VENDOR_ATTR_WISA_MAX =
2207 		QCA_WLAN_VENDOR_ATTR_WISA_AFTER_LAST - 1
2208 };
2209 
2210 enum qca_roaming_policy {
2211 	QCA_ROAMING_NOT_ALLOWED,
2212 	QCA_ROAMING_ALLOWED_WITHIN_ESS,
2213 };
2214 
2215 /**
2216  * enum qca_wlan_vendor_attr_roam_auth - vendor event for roaming
2217  * @QCA_WLAN_VENDOR_ATTR_ROAM_AUTH_BSSID: BSSID of the roamed AP
2218  * @QCA_WLAN_VENDOR_ATTR_ROAM_AUTH_REQ_IE: Request IE
2219  * @QCA_WLAN_VENDOR_ATTR_ROAM_AUTH_RESP_IE: Response IE
2220  * @QCA_WLAN_VENDOR_ATTR_ROAM_AUTH_AUTHORIZED: Authorization Status
2221  * @QCA_WLAN_VENDOR_ATTR_ROAM_AUTH_KEY_REPLAY_CTR: Replay Counter
2222  * @QCA_WLAN_VENDOR_ATTR_ROAM_AUTH_PTK_KCK: KCK of the PTK
2223  * @QCA_WLAN_VENDOR_ATTR_ROAM_AUTH_PTK_KEK: KEK of the PTK
2224  * @QCA_WLAN_VENDOR_ATTR_ROAM_AUTH_SUBNET_STATUS: subnet change status
2225  * @QCA_WLAN_VENDOR_ATTR_ROAM_AUTH_STATUS:
2226  * Indicates the status of re-association requested by user space for
2227  * the BSSID specified by QCA_WLAN_VENDOR_ATTR_ROAM_AUTH_BSSID.
2228  * Type u16.
2229  * Represents the status code from AP. Use
2230  * %WLAN_STATUS_UNSPECIFIED_FAILURE if the device cannot give you the
2231  * real status code for failures.
2232  * @QCA_WLAN_VENDOR_ATTR_ROAM_AUTH_RETAIN_CONNECTION:
2233  * This attribute indicates that the old association was maintained when
2234  * a re-association is requested by user space and that re-association
2235  * attempt fails (i.e., cannot connect to the requested BSS, but can
2236  * remain associated with the BSS with which the association was in
2237  * place when being requested to roam). Used along with
2238  * WLAN_VENDOR_ATTR_ROAM_AUTH_STATUS to indicate the current
2239  * re-association status. Type flag.
2240  * This attribute is applicable only for re-association failure cases.
2241  * @QCA_WLAN_VENDOR_ATTR_ROAM_AUTH_PMK: AUTH PMK
2242  * @QCA_WLAN_VENDOR_ATTR_ROAM_AUTH_PMKID: AUTH PMKID
2243  * @QCA_WLAN_VENDOR_ATTR_ROAM_AUTH_FILS_ERP_NEXT_SEQ_NUM: FILS erp next
2244  * seq number
2245  */
2246 enum qca_wlan_vendor_attr_roam_auth {
2247 	QCA_WLAN_VENDOR_ATTR_ROAM_AUTH_INVALID = 0,
2248 	QCA_WLAN_VENDOR_ATTR_ROAM_AUTH_BSSID,
2249 	QCA_WLAN_VENDOR_ATTR_ROAM_AUTH_REQ_IE,
2250 	QCA_WLAN_VENDOR_ATTR_ROAM_AUTH_RESP_IE,
2251 	QCA_WLAN_VENDOR_ATTR_ROAM_AUTH_AUTHORIZED,
2252 	QCA_WLAN_VENDOR_ATTR_ROAM_AUTH_KEY_REPLAY_CTR,
2253 	QCA_WLAN_VENDOR_ATTR_ROAM_AUTH_PTK_KCK,
2254 	QCA_WLAN_VENDOR_ATTR_ROAM_AUTH_PTK_KEK,
2255 	QCA_WLAN_VENDOR_ATTR_ROAM_AUTH_SUBNET_STATUS,
2256 	QCA_WLAN_VENDOR_ATTR_ROAM_AUTH_STATUS,
2257 	QCA_WLAN_VENDOR_ATTR_ROAM_AUTH_RETAIN_CONNECTION,
2258 	QCA_WLAN_VENDOR_ATTR_ROAM_AUTH_PMK,
2259 	QCA_WLAN_VENDOR_ATTR_ROAM_AUTH_PMKID,
2260 	QCA_WLAN_VENDOR_ATTR_ROAM_AUTH_FILS_ERP_NEXT_SEQ_NUM,
2261 	QCA_WLAN_VENDOR_ATTR_ROAM_AUTH_AFTER_LAST,
2262 	QCA_WLAN_VENDOR_ATTR_ROAM_AUTH_MAX =
2263 		QCA_WLAN_VENDOR_ATTR_ROAM_AUTH_AFTER_LAST - 1
2264 };
2265 
2266 /**
2267  * enum qca_wlan_vendor_attr_wifi_config - wifi config
2268  *
2269  * @QCA_WLAN_VENDOR_ATTR_WIFI_CONFIG_INVALID: Invalid initial value
2270  * @QCA_WLAN_VENDOR_ATTR_WIFI_CONFIG_DYNAMIC_DTIM: dynamic DTIM
2271  * @QCA_WLAN_VENDOR_ATTR_WIFI_CONFIG_STATS_AVG_FACTOR: avg factor
2272  * @QCA_WLAN_VENDOR_ATTR_WIFI_CONFIG_GUARD_TIME: guard time
2273  * @QCA_WLAN_VENDOR_ATTR_WIFI_CONFIG_AFTER_LAST: after last
2274  * @QCA_WLAN_VENDOR_ATTR_WIFI_CONFIG_MAX: max value
2275  */
2276 enum qca_wlan_vendor_attr_wifi_config {
2277 	QCA_WLAN_VENDOR_ATTR_WIFI_CONFIG_INVALID = 0,
2278 	QCA_WLAN_VENDOR_ATTR_WIFI_CONFIG_DYNAMIC_DTIM = 1,
2279 	QCA_WLAN_VENDOR_ATTR_WIFI_CONFIG_STATS_AVG_FACTOR = 2,
2280 	QCA_WLAN_VENDOR_ATTR_WIFI_CONFIG_GUARD_TIME = 3,
2281 
2282 	/* keep last */
2283 	QCA_WLAN_VENDOR_ATTR_WIFI_CONFIG_AFTER_LAST,
2284 	QCA_WLAN_VENDOR_ATTR_WIFI_CONFIG_MAX =
2285 		QCA_WLAN_VENDOR_ATTR_WIFI_CONFIG_AFTER_LAST - 1,
2286 };
2287 
2288 /**
2289  * enum qca_wlan_epno_type - the type of request to the EPNO command
2290  * @QCA_WLAN_EPNO: epno type request
2291  * @QCA_WLAN_PNO: pno type request
2292  */
2293 enum qca_wlan_epno_type {
2294 	QCA_WLAN_EPNO,
2295 	QCA_WLAN_PNO
2296 };
2297 
2298 /**
2299  * enum qca_wlan_vendor_attr_pno_config_params - pno config params
2300  *
2301  * @QCA_WLAN_VENDOR_ATTR_PNO_INVALID - Invalid initial value
2302  *
2303  *	NL attributes for data used by
2304  *	QCA_NL80211_VENDOR_SUBCMD_PNO_SET_PASSPOINT_LIST sub command.
2305  * @QCA_WLAN_VENDOR_ATTR_PNO_PASSPOINT_LIST_PARAM_NUM:
2306  *	Unsigned 32-bit value; pno passpoint number of networks
2307  * @QCA_WLAN_VENDOR_ATTR_PNO_PASSPOINT_LIST_PARAM_NETWORK_ARRAY:
2308  *	Array of nested QCA_WLAN_VENDOR_ATTR_PNO_PASSPOINT_NETWORK_PARAM_*
2309  *	attributes. Array size =
2310  *	QCA_WLAN_VENDOR_ATTR_PNO_PASSPOINT_LIST_PARAM_NUM.
2311  * @QCA_WLAN_VENDOR_ATTR_PNO_PASSPOINT_NETWORK_PARAM_ID:
2312  *	Unsigned 32-bit value; network id
2313  * @QCA_WLAN_VENDOR_ATTR_PNO_PASSPOINT_NETWORK_PARAM_REALM:
2314  *	An array of 256 x Unsigned 8-bit value; NULL terminated UTF8 encoded
2315  *	realm, 0 if unspecified.
2316  * @QCA_WLAN_VENDOR_ATTR_PNO_PASSPOINT_NETWORK_PARAM_ROAM_CNSRTM_ID:
2317  *	An array of 16 x Unsigned 32-bit value; roaming consortium ids
2318  *	to match, 0 if unspecified.
2319  * @QCA_WLAN_VENDOR_ATTR_PNO_PASSPOINT_NETWORK_PARAM_ROAM_PLMN:
2320  *	An array of 6 x Unsigned 8-bit value; mcc/mnc combination, 0s if
2321  *	unspecified.
2322  *
2323  *	NL attributes for data used by
2324  *	QCA_NL80211_VENDOR_SUBCMD_PNO_SET_LIST sub command.
2325  * @QCA_WLAN_VENDOR_ATTR_PNO_SET_LIST_PARAM_NUM_NETWORKS:
2326  *	Unsigned 32-bit value; set pno number of networks
2327  * @QCA_WLAN_VENDOR_ATTR_PNO_SET_LIST_PARAM_EPNO_NETWORKS_LIST:
2328  *	Array of nested
2329  *	QCA_WLAN_VENDOR_ATTR_PNO_SET_LIST_PARAM_EPNO_NETWORK_*
2330  *	attributes. Array size =
2331  *		QCA_WLAN_VENDOR_ATTR_PNO_SET_LIST_PARAM_NUM_NETWORKS
2332  * @QCA_WLAN_VENDOR_ATTR_PNO_SET_LIST_PARAM_EPNO_NETWORK_SSID:
2333  *	An array of 33 x Unsigned 8-bit value; NULL terminated SSID
2334  * @QCA_WLAN_VENDOR_ATTR_PNO_SET_LIST_PARAM_EPNO_NETWORK_RSSI_THRESHOLD:
2335  *	Signed 8-bit value; threshold for considering this SSID as found,
2336  *	required granularity for this threshold is 4dBm to 8dBm
2337  * @QCA_WLAN_VENDOR_ATTR_PNO_SET_LIST_PARAM_EPNO_NETWORK_FLAGS:
2338  *	Unsigned 8-bit value; WIFI_PNO_FLAG_XXX
2339  * @QCA_WLAN_VENDOR_ATTR_PNO_SET_LIST_PARAM_EPNO_NETWORK_AUTH_BIT:
2340  *	Unsigned 8-bit value; auth bit field for matching WPA IE
2341  * @QCA_WLAN_VENDOR_ATTR_PNO_SET_LIST_PARAM_EPNO_TYPE
2342  *	Unsigned 8-bit to indicate ePNO type; values from qca_wlan_epno_type
2343  *@QCA_WLAN_VENDOR_ATTR_PNO_SET_LIST_PARAM_EPNO_CHANNEL_LIST
2344  *	Nested attribute to send the channel list
2345  *@QCA_WLAN_VENDOR_ATTR_PNO_SET_LIST_PARAM_EPNO_SCAN_INTERVAL
2346  *	Unsigned 32-bit value; indicates the Interval between PNO scan
2347  *	cycles in msec
2348  *@QCA_WLAN_VENDOR_ATTR_EPNO_MIN5GHZ_RSSI
2349  *	Signed 32-bit value; minimum 5GHz RSSI for a BSSID to be considered
2350  *@QCA_WLAN_VENDOR_ATTR_EPNO_MIN24GHZ_RSSI
2351  *	Signed 32-bit value; minimum 2.4GHz RSSI for a BSSID to be considered
2352  *	This attribute is obsolete now.
2353  *@QCA_WLAN_VENDOR_ATTR_EPNO_INITIAL_SCORE_MAX
2354  *	Signed 32-bit value; the maximum score that a network
2355  *	can have before bonuses
2356  *@QCA_WLAN_VENDOR_ATTR_EPNO_CURRENT_CONNECTION_BONUS
2357  *	Signed 32-bit value; only report when there is a network's
2358  *	score this much higher han the current connection
2359  *@QCA_WLAN_VENDOR_ATTR_EPNO_SAME_NETWORK_BONUS
2360  *	Signed 32-bit value; score bonus for all networks with
2361  *	the same network flag
2362  *@QCA_WLAN_VENDOR_ATTR_EPNO_SECURE_BONUS
2363  *	Signed 32-bit value; score bonus for networks that are not open
2364  *@QCA_WLAN_VENDOR_ATTR_EPNO_BAND5GHZ_BONUS
2365  *	Signed 32-bit value; 5GHz RSSI score bonus applied to all
2366  *	5GHz networks
2367  *@QCA_WLAN_VENDOR_ATTR_PNO_CONFIG_REQUEST_ID
2368  *	Unsigned 32-bit value, representing the PNO Request ID
2369  * @QCA_WLAN_VENDOR_ATTR_PNO_AFTER_LAST: After last
2370  * @QCA_WLAN_VENDOR_ATTR_PNO_MAX: max
2371  */
2372 enum qca_wlan_vendor_attr_pno_config_params {
2373 	QCA_WLAN_VENDOR_ATTR_PNO_INVALID = 0,
2374 
2375 	QCA_WLAN_VENDOR_ATTR_PNO_PASSPOINT_LIST_PARAM_NUM = 1,
2376 	QCA_WLAN_VENDOR_ATTR_PNO_PASSPOINT_LIST_PARAM_NETWORK_ARRAY = 2,
2377 	QCA_WLAN_VENDOR_ATTR_PNO_PASSPOINT_NETWORK_PARAM_ID = 3,
2378 	QCA_WLAN_VENDOR_ATTR_PNO_PASSPOINT_NETWORK_PARAM_REALM = 4,
2379 	QCA_WLAN_VENDOR_ATTR_PNO_PASSPOINT_NETWORK_PARAM_ROAM_CNSRTM_ID = 5,
2380 	QCA_WLAN_VENDOR_ATTR_PNO_PASSPOINT_NETWORK_PARAM_ROAM_PLMN = 6,
2381 
2382 	QCA_WLAN_VENDOR_ATTR_PNO_SET_LIST_PARAM_NUM_NETWORKS = 7,
2383 	QCA_WLAN_VENDOR_ATTR_PNO_SET_LIST_PARAM_EPNO_NETWORKS_LIST = 8,
2384 	QCA_WLAN_VENDOR_ATTR_PNO_SET_LIST_PARAM_EPNO_NETWORK_SSID = 9,
2385 	QCA_WLAN_VENDOR_ATTR_PNO_SET_LIST_PARAM_EPNO_NETWORK_RSSI_THRESHOLD = 10,
2386 	QCA_WLAN_VENDOR_ATTR_PNO_SET_LIST_PARAM_EPNO_NETWORK_FLAGS = 11,
2387 	QCA_WLAN_VENDOR_ATTR_PNO_SET_LIST_PARAM_EPNO_NETWORK_AUTH_BIT = 12,
2388 	QCA_WLAN_VENDOR_ATTR_PNO_SET_LIST_PARAM_EPNO_TYPE = 13,
2389 	QCA_WLAN_VENDOR_ATTR_PNO_SET_LIST_PARAM_EPNO_CHANNEL_LIST = 14,
2390 	QCA_WLAN_VENDOR_ATTR_PNO_SET_LIST_PARAM_EPNO_SCAN_INTERVAL = 15,
2391 	QCA_WLAN_VENDOR_ATTR_EPNO_MIN5GHZ_RSSI = 16,
2392 	QCA_WLAN_VENDOR_ATTR_EPNO_MIN24GHZ_RSSI = 17,
2393 	QCA_WLAN_VENDOR_ATTR_EPNO_INITIAL_SCORE_MAX = 18,
2394 	QCA_WLAN_VENDOR_ATTR_EPNO_CURRENT_CONNECTION_BONUS = 19,
2395 	QCA_WLAN_VENDOR_ATTR_EPNO_SAME_NETWORK_BONUS = 20,
2396 	QCA_WLAN_VENDOR_ATTR_EPNO_SECURE_BONUS = 21,
2397 	QCA_WLAN_VENDOR_ATTR_EPNO_BAND5GHZ_BONUS = 22,
2398 
2399 	QCA_WLAN_VENDOR_ATTR_PNO_CONFIG_REQUEST_ID = 23,
2400 	/* keep last */
2401 	QCA_WLAN_VENDOR_ATTR_PNO_AFTER_LAST,
2402 	QCA_WLAN_VENDOR_ATTR_PNO_MAX =
2403 		QCA_WLAN_VENDOR_ATTR_PNO_AFTER_LAST - 1,
2404 };
2405 
2406 /**
2407  * enum qca_wlan_vendor_attr_roaming_config_params - roaming config params
2408  *
2409  * @QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_INVALID: Invalid initial value
2410  * @QCA_WLAN_VENDOR_ATTR_ROAMING_SUBCMD: roaming sub command
2411  * @QCA_WLAN_VENDOR_ATTR_ROAMING_REQ_ID: Request id
2412  * @QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_WHITE_LIST_SSID_NUM_NETWORKS:
2413  *	number of whitelist networks
2414  * @QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_WHITE_LIST_SSID_LIST:
2415  *	Whitelist ssid list
2416  * @QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_WHITE_LIST_SSID:
2417  *	white list ssid
2418  * @QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_A_BAND_BOOST_THRESHOLD:
2419  *	'a' band boost threshold
2420  * @QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_A_BAND_PENALTY_THRESHOLD:
2421  *	'a' band penalty threshold
2422  * @QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_A_BAND_BOOST_FACTOR:
2423  *	'a' band boost factor
2424  * @QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_A_BAND_PENALTY_FACTOR:
2425  *	'a' band penalty factor
2426  * @QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_A_BAND_MAX_BOOST:
2427  *	'a' band max boost
2428  * @QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_LAZY_ROAM_HISTERESYS:
2429  *	lazy roam histeresys
2430  * @QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_ALERT_ROAM_RSSI_TRIGGER:
2431  *	alert roam rssi trigger
2432  * @QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_SET_LAZY_ROAM_ENABLE:
2433  *	set lazy roam enable
2434  * @QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_SET_BSSID_PREFS:
2435  *	set bssid preference
2436  * @QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_SET_LAZY_ROAM_NUM_BSSID:
2437  *	set lazy roam number of bssid
2438  * @QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_SET_LAZY_ROAM_BSSID:
2439  *	set lazy roam bssid
2440  * @QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_SET_LAZY_ROAM_RSSI_MODIFIER:
2441  *	set lazy roam rssi modifier
2442  * @QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_SET_BSSID_PARAMS:
2443  *	set bssid params
2444  * @QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_SET_BSSID_PARAMS_NUM_BSSID:
2445  *	set bssid params num bssid
2446  * @QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_SET_BSSID_PARAMS_BSSID:
2447  *	set bssid params bssid
2448  * @QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_AFTER_LAST: After last
2449  * @QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_MAX: Max
2450  */
2451 enum qca_wlan_vendor_attr_roaming_config_params {
2452 	QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_INVALID = 0,
2453 
2454 	QCA_WLAN_VENDOR_ATTR_ROAMING_SUBCMD = 1,
2455 	QCA_WLAN_VENDOR_ATTR_ROAMING_REQ_ID = 2,
2456 
2457 	QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_WHITE_LIST_SSID_NUM_NETWORKS = 3,
2458 	QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_WHITE_LIST_SSID_LIST = 4,
2459 	QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_WHITE_LIST_SSID = 5,
2460 
2461 	QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_A_BAND_BOOST_THRESHOLD = 6,
2462 	QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_A_BAND_PENALTY_THRESHOLD = 7,
2463 	QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_A_BAND_BOOST_FACTOR = 8,
2464 	QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_A_BAND_PENALTY_FACTOR = 9,
2465 	QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_A_BAND_MAX_BOOST = 10,
2466 	QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_LAZY_ROAM_HISTERESYS = 11,
2467 	QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_ALERT_ROAM_RSSI_TRIGGER = 12,
2468 
2469 	QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_SET_LAZY_ROAM_ENABLE = 13,
2470 
2471 	QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_SET_BSSID_PREFS = 14,
2472 	QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_SET_LAZY_ROAM_NUM_BSSID = 15,
2473 	QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_SET_LAZY_ROAM_BSSID = 16,
2474 	QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_SET_LAZY_ROAM_RSSI_MODIFIER = 17,
2475 
2476 	QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_SET_BSSID_PARAMS = 18,
2477 	QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_SET_BSSID_PARAMS_NUM_BSSID = 19,
2478 	QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_SET_BSSID_PARAMS_BSSID = 20,
2479 
2480 	/* keep last */
2481 	QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_AFTER_LAST,
2482 	QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_MAX =
2483 		QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_AFTER_LAST - 1,
2484 };
2485 
2486 /**
2487  * enum qca_wlan_vendor_attr_roam_subcmd - roam sub commands
2488  *
2489  * @QCA_WLAN_VENDOR_ATTR_ROAM_SUBCMD_INVALID: Invalid initial value
2490  * @QCA_WLAN_VENDOR_ATTR_ROAM_SUBCMD_SSID_WHITE_LIST: ssid white list
2491  * @QCA_WLAN_VENDOR_ATTR_ROAM_SUBCMD_SET_EXTSCAN_ROAM_PARAMS: roam params
2492  * @QCA_WLAN_VENDOR_ATTR_ROAM_SUBCMD_SET_LAZY_ROAM: set lazy roam
2493  * @QCA_WLAN_VENDOR_ATTR_ROAM_SUBCMD_SET_BSSID_PREFS: set bssid prefs
2494  * @QCA_WLAN_VENDOR_ATTR_ROAM_SUBCMD_SET_BSSID_PARAMS: set bssid params
2495  * @QCA_WLAN_VENDOR_ATTR_ROAM_SUBCMD_SET_BLACKLIST_BSSID: set blacklist bssid
2496  * @QCA_WLAN_VENDOR_ATTR_ROAM_SUBCMD_AFTER_LAST: after last
2497  * @QCA_WLAN_VENDOR_ATTR_ROAM_SUBCMD_MAX: subcmd max
2498  */
2499 enum qca_wlan_vendor_attr_roam_subcmd {
2500 	QCA_WLAN_VENDOR_ATTR_ROAM_SUBCMD_INVALID = 0,
2501 	QCA_WLAN_VENDOR_ATTR_ROAM_SUBCMD_SSID_WHITE_LIST = 1,
2502 	QCA_WLAN_VENDOR_ATTR_ROAM_SUBCMD_SET_EXTSCAN_ROAM_PARAMS = 2,
2503 	QCA_WLAN_VENDOR_ATTR_ROAM_SUBCMD_SET_LAZY_ROAM = 3,
2504 	QCA_WLAN_VENDOR_ATTR_ROAM_SUBCMD_SET_BSSID_PREFS = 4,
2505 	QCA_WLAN_VENDOR_ATTR_ROAM_SUBCMD_SET_BSSID_PARAMS = 5,
2506 	QCA_WLAN_VENDOR_ATTR_ROAM_SUBCMD_SET_BLACKLIST_BSSID = 6,
2507 
2508 	/* KEEP LAST */
2509 	QCA_WLAN_VENDOR_ATTR_ROAM_SUBCMD_AFTER_LAST,
2510 	QCA_WLAN_VENDOR_ATTR_ROAM_SUBCMD_MAX =
2511 		QCA_WLAN_VENDOR_ATTR_ROAM_SUBCMD_AFTER_LAST - 1,
2512 };
2513 
2514 /**
2515  * enum qca_wlan_vendor_attr_get_wifi_info - wifi driver information
2516  *
2517  * @QCA_WLAN_VENDOR_ATTR_WIFI_INFO_GET_INVALID: Invalid initial value
2518  * @QCA_WLAN_VENDOR_ATTR_WIFI_INFO_DRIVER_VERSION: get host driver version
2519  * @QCA_WLAN_VENDOR_ATTR_WIFI_INFO_FIRMWARE_VERSION: ger firmware version
2520  * @QCA_WLAN_VENDOR_ATTR_WIFI_INFO_RADIO_INDEX - get radio index
2521  * @QCA_WLAN_VENDOR_ATTR_WIFI_INFO_GET_AFTER_LAST: after last
2522  * @QCA_WLAN_VENDOR_ATTR_WIFI_INFO_GET_MAX: subcmd max
2523  */
2524 enum qca_wlan_vendor_attr_get_wifi_info {
2525 	QCA_WLAN_VENDOR_ATTR_WIFI_INFO_GET_INVALID = 0,
2526 	QCA_WLAN_VENDOR_ATTR_WIFI_INFO_DRIVER_VERSION     = 1,
2527 	QCA_WLAN_VENDOR_ATTR_WIFI_INFO_FIRMWARE_VERSION   = 2,
2528 	QCA_WLAN_VENDOR_ATTR_WIFI_INFO_RADIO_INDEX        = 3,
2529 
2530 	/* KEEP LAST */
2531 	QCA_WLAN_VENDOR_ATTR_WIFI_INFO_GET_AFTER_LAST,
2532 	QCA_WLAN_VENDOR_ATTR_WIFI_INFO_GET_MAX  =
2533 		QCA_WLAN_VENDOR_ATTR_WIFI_INFO_GET_AFTER_LAST - 1,
2534 };
2535 
2536 enum qca_wlan_vendor_attr_logger_results {
2537 	QCA_WLAN_VENDOR_ATTR_LOGGER_RESULTS_INVALID = 0,
2538 
2539 	/*
2540 	 * Unsigned 32-bit value; must match the request Id supplied by
2541 	 * Wi-Fi HAL in the corresponding subcmd NL msg.
2542 	 */
2543 	QCA_WLAN_VENDOR_ATTR_LOGGER_RESULTS_REQUEST_ID = 1,
2544 
2545 	/*
2546 	 * Unsigned 32-bit value; used to indicate the size of memory
2547 	 * dump to be allocated.
2548 	 */
2549 	QCA_WLAN_VENDOR_ATTR_LOGGER_RESULTS_MEMDUMP_SIZE = 2,
2550 
2551 	/* keep last */
2552 	QCA_WLAN_VENDOR_ATTR_LOGGER_RESULTS_AFTER_LAST,
2553 	QCA_WLAN_VENDOR_ATTR_LOGGER_RESULTS_MAX =
2554 	QCA_WLAN_VENDOR_ATTR_LOGGER_RESULTS_AFTER_LAST - 1,
2555 };
2556 
2557 /**
2558  * qca_wlan_vendor_channel_prop_flags: This represent the flags for a channel.
2559  * This is used by QCA_WLAN_VENDOR_EXTERNAL_ACS_EVENT_CHAN_INFO_ATTR_FLAGS.
2560  */
2561 enum qca_wlan_vendor_channel_prop_flags {
2562 	/* Bits 0, 1, 2, and 3 are reserved */
2563 
2564 	/* Turbo channel */
2565 	QCA_WLAN_VENDOR_CHANNEL_PROP_FLAG_TURBO         = 1 << 4,
2566 	/* CCK channel */
2567 	QCA_WLAN_VENDOR_CHANNEL_PROP_FLAG_CCK           = 1 << 5,
2568 	/* OFDM channel */
2569 	QCA_WLAN_VENDOR_CHANNEL_PROP_FLAG_OFDM          = 1 << 6,
2570 	/* 2.4 GHz spectrum channel. */
2571 	QCA_WLAN_VENDOR_CHANNEL_PROP_FLAG_2GHZ          = 1 << 7,
2572 	/* 5 GHz spectrum channel */
2573 	QCA_WLAN_VENDOR_CHANNEL_PROP_FLAG_5GHZ          = 1 << 8,
2574 	/* Only passive scan allowed */
2575 	QCA_WLAN_VENDOR_CHANNEL_PROP_FLAG_PASSIVE       = 1 << 9,
2576 	/* Dynamic CCK-OFDM channel */
2577 	QCA_WLAN_VENDOR_CHANNEL_PROP_FLAG_DYN           = 1 << 10,
2578 	/* GFSK channel (FHSS PHY) */
2579 	QCA_WLAN_VENDOR_CHANNEL_PROP_FLAG_GFSK          = 1 << 11,
2580 	/* Radar found on channel */
2581 	QCA_WLAN_VENDOR_CHANNEL_PROP_FLAG_RADAR         = 1 << 12,
2582 	/* 11a static turbo channel only */
2583 	QCA_WLAN_VENDOR_CHANNEL_PROP_FLAG_STURBO        = 1 << 13,
2584 	/* Half rate channel */
2585 	QCA_WLAN_VENDOR_CHANNEL_PROP_FLAG_HALF          = 1 << 14,
2586 	/* Quarter rate channel */
2587 	QCA_WLAN_VENDOR_CHANNEL_PROP_FLAG_QUARTER       = 1 << 15,
2588 	/* HT 20 channel */
2589 	QCA_WLAN_VENDOR_CHANNEL_PROP_FLAG_HT20          = 1 << 16,
2590 	/* HT 40 with extension channel above */
2591 	QCA_WLAN_VENDOR_CHANNEL_PROP_FLAG_HT40PLUS      = 1 << 17,
2592 	/* HT 40 with extension channel below */
2593 	QCA_WLAN_VENDOR_CHANNEL_PROP_FLAG_HT40MINUS     = 1 << 18,
2594 	/* HT 40 intolerant */
2595 	QCA_WLAN_VENDOR_CHANNEL_PROP_FLAG_HT40INTOL     = 1 << 19,
2596 	/* VHT 20 channel */
2597 	QCA_WLAN_VENDOR_CHANNEL_PROP_FLAG_VHT20         = 1 << 20,
2598 	/* VHT 40 with extension channel above */
2599 	QCA_WLAN_VENDOR_CHANNEL_PROP_FLAG_VHT40PLUS     = 1 << 21,
2600 	/* VHT 40 with extension channel below */
2601 	QCA_WLAN_VENDOR_CHANNEL_PROP_FLAG_VHT40MINUS    = 1 << 22,
2602 	/* VHT 80 channel */
2603 	QCA_WLAN_VENDOR_CHANNEL_PROP_FLAG_VHT80         = 1 << 23,
2604 	/* HT 40 intolerant mark bit for ACS use */
2605 	QCA_WLAN_VENDOR_CHANNEL_PROP_FLAG_HT40INTOLMARK = 1 << 24,
2606 	/* Channel temporarily blocked due to noise */
2607 	QCA_WLAN_VENDOR_CHANNEL_PROP_FLAG_BLOCKED       = 1 << 25,
2608 	/* VHT 160 channel */
2609 	QCA_WLAN_VENDOR_CHANNEL_PROP_FLAG_VHT160        = 1 << 26,
2610 	/* VHT 80+80 channel */
2611 	QCA_WLAN_VENDOR_CHANNEL_PROP_FLAG_VHT80_80      = 1 << 27,
2612 	/* HE 20 channel */
2613 	QCA_WLAN_VENDOR_CHANNEL_PROP_FLAG_HE20          = 1 << 28,
2614 	/* HE 40 with extension channel above */
2615 	QCA_WLAN_VENDOR_CHANNEL_PROP_FLAG_HE40PLUS      = 1 << 29,
2616 	/* HE 40 with extension channel below */
2617 	QCA_WLAN_VENDOR_CHANNEL_PROP_FLAG_HE40MINUS     = 1 << 30,
2618 	/* HE 40 intolerant */
2619 	QCA_WLAN_VENDOR_CHANNEL_PROP_FLAG_HE40INTOL     = 1 << 31,
2620 };
2621 
2622 /**
2623  * qca_wlan_vendor_channel_prop_flags_2: This represents the flags for a
2624  * channel, and is a continuation of qca_wlan_vendor_channel_prop_flags. This is
2625  * used by QCA_WLAN_VENDOR_EXTERNAL_ACS_EVENT_CHAN_INFO_ATTR_FLAGS_2.
2626  */
2627 enum qca_wlan_vendor_channel_prop_flags_2 {
2628 	/* HE 40 intolerant mark bit for ACS use */
2629 	QCA_WLAN_VENDOR_CHANNEL_PROP_FLAG_HE40INTOLMARK = 1 << 0,
2630 	/* HE 80 channel */
2631 	QCA_WLAN_VENDOR_CHANNEL_PROP_FLAG_HE80          = 1 << 1,
2632 	/* HE 160 channel */
2633 	QCA_WLAN_VENDOR_CHANNEL_PROP_FLAG_HE160         = 1 << 2,
2634 	/* HE 80+80 channel */
2635 	QCA_WLAN_VENDOR_CHANNEL_PROP_FLAG_HE80_80       = 1 << 3,
2636 };
2637 
2638 /**
2639  * qca_wlan_vendor_channel_prop_flags_ext: This represent the extended flags for
2640  * each channel. This is used by
2641  * QCA_WLAN_VENDOR_EXTERNAL_ACS_EVENT_CHAN_INFO_ATTR_FLAG_EXT.
2642  */
2643 enum qca_wlan_vendor_channel_prop_flags_ext {
2644 	/* Radar found on channel */
2645 	QCA_WLAN_VENDOR_CHANNEL_PROP_FLAG_EXT_RADAR_FOUND     = 1 << 0,
2646 	/* DFS required on channel */
2647 	QCA_WLAN_VENDOR_CHANNEL_PROP_FLAG_EXT_DFS             = 1 << 1,
2648 	/* DFS required on channel for 2nd band of 80+80 */
2649 	QCA_WLAN_VENDOR_CHANNEL_PROP_FLAG_EXT_DFS_CFREQ2      = 1 << 2,
2650 	/* If channel has been checked for DFS */
2651 	QCA_WLAN_VENDOR_CHANNEL_PROP_FLAG_EXT_DFS_CLEAR       = 1 << 3,
2652 	/* Excluded in 802.11d */
2653 	QCA_WLAN_VENDOR_CHANNEL_PROP_FLAG_EXT_11D_EXCLUDED    = 1 << 4,
2654 	/* Channel Switch Announcement received on this channel */
2655 	QCA_WLAN_VENDOR_CHANNEL_PROP_FLAG_EXT_CSA_RECEIVED    = 1 << 5,
2656 	/* Ad-hoc is not allowed */
2657 	QCA_WLAN_VENDOR_CHANNEL_PROP_FLAG_EXT_DISALLOW_ADHOC  = 1 << 6,
2658 	/* Station only channel */
2659 	QCA_WLAN_VENDOR_CHANNEL_PROP_FLAG_EXT_DISALLOW_HOSTAP = 1 << 7,
2660 	/* DFS radar history for slave device (STA mode) */
2661 	QCA_WLAN_VENDOR_CHANNEL_PROP_FLAG_EXT_HISTORY_RADAR   = 1 << 8,
2662 	/* DFS CAC valid for slave device (STA mode) */
2663 	QCA_WLAN_VENDOR_CHANNEL_PROP_FLAG_EXT_CAC_VALID       = 1 << 9,
2664 };
2665 
2666 /**
2667  * qca_wlan_vendor_attr_nud_stats_set: Attributes to vendor subcmd
2668  * QCA_NL80211_VENDOR_SUBCMD_NUD_STATS_SET. This carries the requisite
2669  * information to start/stop the NUD statistics collection.
2670  */
2671 enum qca_attr_nud_stats_set {
2672 	QCA_ATTR_NUD_STATS_SET_INVALID = 0,
2673 
2674 	/*
2675 	 * Flag to start/stop the NUD statistics collection.
2676 	 * Start - If included, Stop - If not included
2677 	 */
2678 	QCA_ATTR_NUD_STATS_SET_START = 1,
2679 	/* IPv4 address of the default gateway (in network byte order) */
2680 	QCA_ATTR_NUD_STATS_GW_IPV4 = 2,
2681 	/*
2682 	 * Represents the data packet type to be monitored.
2683 	 * Host driver tracks the stats corresponding to each data frame
2684 	 * represented by these flags.
2685 	 * These data packets are represented by
2686 	 * enum qca_wlan_vendor_nud_stats_set_data_pkt_info.
2687 	 */
2688 	QCA_ATTR_NUD_STATS_SET_DATA_PKT_INFO = 3,
2689 	/* keep last */
2690 	QCA_ATTR_NUD_STATS_SET_LAST,
2691 	QCA_ATTR_NUD_STATS_SET_MAX =
2692 		QCA_ATTR_NUD_STATS_SET_LAST - 1,
2693 };
2694 
2695 /**
2696  * enum qca_attr_connectivity_check_stats_set - attribute to vendor subcmd
2697  *	QCA_NL80211_VENDOR_SUBCMD_NUD_STATS_SET. This carry the requisite
2698  *	information to start / stop the NUD stats collection.
2699  * @QCA_ATTR_CONNECTIVITY_CHECK_STATS_STATS_PKT_INFO_TYPE: set pkt info stats
2700  *	Bitmap to Flag to Start / Stop the NUD stats collection
2701  *	Start - If included , Stop - If not included
2702  * @QCA_ATTR_CONNECTIVITY_CHECK_STATS_DNS_DOMAIN_NAME: set gatway ipv4 address
2703  *	IPv4 address of Default Gateway (in network byte order)
2704  *	QCA_NL80211_VENDOR_SUBCMD_NUD_STATS_SET. This carry the requisite
2705  *	information to start / stop the NUD stats collection.
2706  * @QCA_ATTR_CONNECTIVITY_CHECK_STATS_SRC_PORT: set nud debug stats
2707  *	Flag to Start / Stop the NUD stats collection
2708  *	Start - If included , Stop - If not included
2709  * @QCA_ATTR_CONNECTIVITY_CHECK_STATS_DEST_PORT: set gatway ipv4 address
2710  *	IPv4 address of Default Gateway (in network byte order)
2711  *	QCA_NL80211_VENDOR_SUBCMD_NUD_STATS_SET. This carry the requisite
2712  *	information to start / stop the NUD stats collection.
2713  * @QCA_ATTR_CONNECTIVITY_CHECK_STATS_DEST_IPV4: set nud debug stats
2714  *	Flag to Start / Stop the NUD stats collection
2715  *	Start - If included , Stop - If not included
2716  * @QCA_ATTR_CONNECTIVITY_CHECK_STATS_DEST_IPV6: set gatway ipv4 address
2717  *	IPv4 address of Default Gateway (in network byte order)
2718  */
2719 enum qca_attr_connectivity_check_stats_set {
2720 	QCA_ATTR_CONNECTIVITY_CHECK_STATS_SET_INVALID = 0,
2721 	QCA_ATTR_CONNECTIVITY_CHECK_STATS_STATS_PKT_INFO_TYPE = 1,
2722 	QCA_ATTR_CONNECTIVITY_CHECK_STATS_DNS_DOMAIN_NAME = 2,
2723 	QCA_ATTR_CONNECTIVITY_CHECK_STATS_SRC_PORT = 3,
2724 	QCA_ATTR_CONNECTIVITY_CHECK_STATS_DEST_PORT = 4,
2725 	QCA_ATTR_CONNECTIVITY_CHECK_STATS_DEST_IPV4 = 5,
2726 	QCA_ATTR_CONNECTIVITY_CHECK_STATS_DEST_IPV6 = 6,
2727 	/* keep last */
2728 	QCA_ATTR_CONNECTIVITY_CHECK_STATS_SET_LAST,
2729 	QCA_ATTR_CONNECTIVITY_CHECK_STATS_SET_MAX =
2730 		QCA_ATTR_CONNECTIVITY_CHECK_STATS_SET_LAST - 1,
2731 };
2732 
2733 /**
2734  * qca_wlan_vendor_nud_stats_data_pkt_flags: Flag representing the various
2735  * data types for which the stats have to get collected.
2736  */
2737 enum qca_wlan_vendor_connectivity_check_pkt_flags {
2738 	QCA_WLAN_VENDOR_CONNECTIVITY_CHECK_SET_ARP = 1 << 0,
2739 	QCA_WLAN_VENDOR_CONNECTIVITY_CHECK_SET_DNS = 1 << 1,
2740 	QCA_WLAN_VENDOR_CONNECTIVITY_CHECK_SET_TCP_HANDSHAKE = 1 << 2,
2741 	QCA_WLAN_VENDOR_CONNECTIVITY_CHECK_SET_ICMPV4 = 1 << 3,
2742 	QCA_WLAN_VENDOR_CONNECTIVITY_CHECK_SET_ICMPV6 = 1 << 4,
2743 	/* Used by QCA_ATTR_NUD_STATS_PKT_TYPE only in nud stats get
2744 	 * to represent the stats of respective data type.
2745 	 */
2746 	QCA_WLAN_VENDOR_CONNECTIVITY_CHECK_SET_TCP_SYN = 1 << 5,
2747 	QCA_WLAN_VENDOR_CONNECTIVITY_CHECK_SET_TCP_SYN_ACK = 1 << 6,
2748 	QCA_WLAN_VENDOR_CONNECTIVITY_CHECK_SET_TCP_ACK = 1 << 7,
2749 };
2750 
2751 enum qca_attr_connectivity_check_stats {
2752 	QCA_ATTR_CONNECTIVITY_CHECK_STATS_INVALID = 0,
2753 	/* Data packet type for which the stats are collected.
2754 	 * Represented by enum qca_wlan_vendor_nud_stats_data_pkt_flags
2755 	 */
2756 	QCA_ATTR_CONNECTIVITY_CHECK_STATS_PKT_TYPE = 1,
2757 	/* ID corresponding to the DNS frame for which the respective DNS stats
2758 	 * are monitored (u32).
2759 	 */
2760 	QCA_ATTR_CONNECTIVITY_CHECK_STATS_PKT_DNS_DOMAIN_NAME = 2,
2761 	/* source / destination port on which the respective proto stats are
2762 	 * collected (u32).
2763 	 */
2764 	QCA_ATTR_CONNECTIVITY_CHECK_STATS_PKT_SRC_PORT = 3,
2765 	QCA_ATTR_CONNECTIVITY_CHECK_STATS_PKT_DEST_PORT = 4,
2766 	/* IPv4/IPv6 address for which the destined data packets are
2767 	 * monitored. (in network byte order)
2768 	 */
2769 	QCA_ATTR_CONNECTIVITY_CHECK_STATS_PKT_DEST_IPV4 = 5,
2770 	QCA_ATTR_CONNECTIVITY_CHECK_STATS_PKT_DEST_IPV6 = 6,
2771 	/* Data packet Request count received from netdev */
2772 	QCA_ATTR_CONNECTIVITY_CHECK_STATS_PKT_REQ_COUNT_FROM_NETDEV = 7,
2773 	/* Data packet Request count sent to lower MAC from upper MAC */
2774 	QCA_ATTR_CONNECTIVITY_CHECK_STATS_PKT_REQ_COUNT_TO_LOWER_MAC = 8,
2775 	/* Data packet Request count received by lower MAC from upper MAC */
2776 	QCA_ATTR_CONNECTIVITY_CHECK_STATS_PKT_REQ_RX_COUNT_BY_LOWER_MAC = 9,
2777 	/* Data packet Request count successfully transmitted by the device */
2778 	QCA_ATTR_CONNECTIVITY_CHECK_STATS_PKT_REQ_COUNT_TX_SUCCESS = 10,
2779 	/* Data packet Response count received by lower MAC */
2780 	QCA_ATTR_CONNECTIVITY_CHECK_STATS_PKT_RSP_RX_COUNT_BY_LOWER_MAC = 11,
2781 	/* Data packet Response count received by upper MAC */
2782 	QCA_ATTR_CONNECTIVITY_CHECK_STATS_PKT_RSP_RX_COUNT_BY_UPPER_MAC = 12,
2783 	/* Data packet Response count delivered to netdev */
2784 	QCA_ATTR_CONNECTIVITY_CHECK_STATS_PKT_RSP_COUNT_TO_NETDEV = 13,
2785 	/* Data Packet Response count that are dropped out of order */
2786 	QCA_ATTR_CONNECTIVITY_CHECK_STATS_PKT_RSP_COUNT_OUT_OF_ORDER_DROP = 14,
2787 
2788 	/* keep last */
2789 	QCA_ATTR_CONNECTIVITY_CHECK_DATA_STATS_LAST,
2790 	QCA_ATTR_CONNECTIVITY_CHECK_DATA_STATS_MAX =
2791 		QCA_ATTR_CONNECTIVITY_CHECK_DATA_STATS_LAST - 1,
2792 };
2793 
2794 /**
2795  * qca_attr_nud_stats_get: Attributes to vendor subcmd
2796  * QCA_NL80211_VENDOR_SUBCMD_NUD_STATS_GET. This carries the requisite
2797  * NUD statistics collected when queried.
2798  */
2799 enum qca_attr_nud_stats_get {
2800 	QCA_ATTR_NUD_STATS_GET_INVALID = 0,
2801 	/* ARP Request count from netdev */
2802 	QCA_ATTR_NUD_STATS_ARP_REQ_COUNT_FROM_NETDEV = 1,
2803 	/* ARP Request count sent to lower MAC from upper MAC */
2804 	QCA_ATTR_NUD_STATS_ARP_REQ_COUNT_TO_LOWER_MAC = 2,
2805 	/* ARP Request count received by lower MAC from upper MAC */
2806 	QCA_ATTR_NUD_STATS_ARP_REQ_RX_COUNT_BY_LOWER_MAC = 3,
2807 	/* ARP Request count successfully transmitted by the device */
2808 	QCA_ATTR_NUD_STATS_ARP_REQ_COUNT_TX_SUCCESS = 4,
2809 	/* ARP Response count received by lower MAC */
2810 	QCA_ATTR_NUD_STATS_ARP_RSP_RX_COUNT_BY_LOWER_MAC = 5,
2811 	/* ARP Response count received by upper MAC */
2812 	QCA_ATTR_NUD_STATS_ARP_RSP_RX_COUNT_BY_UPPER_MAC = 6,
2813 	/* ARP Response count delivered to netdev */
2814 	QCA_ATTR_NUD_STATS_ARP_RSP_COUNT_TO_NETDEV = 7,
2815 	/* ARP Response count delivered to netdev */
2816 	QCA_ATTR_NUD_STATS_ARP_RSP_COUNT_OUT_OF_ORDER_DROP = 8,
2817 	/*
2818 	 * Flag indicating if the station's link to the AP is active.
2819 	 * Active Link - If included, Inactive link - If not included
2820 	 */
2821 	QCA_ATTR_NUD_STATS_AP_LINK_ACTIVE = 9,
2822 	/*
2823 	 * Flag indicating if there is any duplicate address detected (DAD).
2824 	 * Yes - If detected, No - If not detected.
2825 	 */
2826 	QCA_ATTR_NUD_STATS_IS_DAD = 10,
2827 	/*
2828 	 * List of Data types for which the stats are requested.
2829 	 * This list does not carry ARP stats as they are done by the
2830 	 * above attributes. Represented by enum qca_attr_nud_data_stats.
2831 	 */
2832 	QCA_ATTR_NUD_STATS_DATA_PKT_STATS = 11,
2833 	/* keep last */
2834 	QCA_ATTR_NUD_STATS_GET_LAST,
2835 	QCA_ATTR_NUD_STATS_GET_MAX =
2836 		QCA_ATTR_NUD_STATS_GET_LAST - 1,
2837 };
2838 
2839 enum qca_wlan_btm_candidate_status {
2840 	QCA_STATUS_ACCEPT = 0,
2841 	QCA_STATUS_REJECT_EXCESSIVE_FRAME_LOSS_EXPECTED = 1,
2842 	QCA_STATUS_REJECT_EXCESSIVE_DELAY_EXPECTED = 2,
2843 	QCA_STATUS_REJECT_INSUFFICIENT_QOS_CAPACITY = 3,
2844 	QCA_STATUS_REJECT_LOW_RSSI = 4,
2845 	QCA_STATUS_REJECT_HIGH_INTERFERENCE = 5,
2846 	QCA_STATUS_REJECT_UNKNOWN = 6,
2847 };
2848 
2849 enum qca_wlan_vendor_attr_btm_candidate_info {
2850 	QCA_WLAN_VENDOR_ATTR_BTM_CANDIDATE_INFO_INVALID = 0,
2851 
2852 	/* 6-byte MAC address representing the BSSID of transition candidate */
2853 	QCA_WLAN_VENDOR_ATTR_BTM_CANDIDATE_INFO_BSSID = 1,
2854 	/*
2855 	 * Unsigned 32-bit value from enum qca_wlan_btm_candidate_status
2856 	 * returned by the driver. It says whether the BSSID provided in
2857 	 * QCA_WLAN_VENDOR_ATTR_BTM_CANDIDATE_INFO_BSSID is acceptable by
2858 	 * the driver, if not it specifies the reason for rejection.
2859 	 * Note that the user-space can overwrite the transition reject reason
2860 	 * codes provided by driver based on more information.
2861 	 */
2862 	QCA_WLAN_VENDOR_ATTR_BTM_CANDIDATE_INFO_STATUS = 2,
2863 
2864 	/* keep last */
2865 	QCA_WLAN_VENDOR_ATTR_BTM_CANDIDATE_INFO_AFTER_LAST,
2866 	QCA_WLAN_VENDOR_ATTR_BTM_CANDIDATE_INFO_MAX =
2867 	QCA_WLAN_VENDOR_ATTR_BTM_CANDIDATE_INFO_AFTER_LAST - 1,
2868 };
2869 
2870 enum qca_attr_trace_level {
2871 	QCA_ATTR_TRACE_LEVEL_INVALID = 0,
2872 	/*
2873 	 * Nested array of the following attributes:
2874 	 * QCA_ATTR_TRACE_LEVEL_MODULE,
2875 	 * QCA_ATTR_TRACE_LEVEL_MASK.
2876 	 */
2877 	QCA_ATTR_TRACE_LEVEL_PARAM = 1,
2878 	/*
2879 	 * Specific QCA host driver module. Please refer to the QCA host
2880 	 * driver implementation to get the specific module ID.
2881 	 */
2882 	QCA_ATTR_TRACE_LEVEL_MODULE = 2,
2883 	/* Different trace level masks represented in the QCA host driver. */
2884 	QCA_ATTR_TRACE_LEVEL_MASK = 3,
2885 
2886 	/* keep last */
2887 	QCA_ATTR_TRACE_LEVEL_AFTER_LAST,
2888 	QCA_ATTR_TRACE_LEVEL_MAX =
2889 		QCA_ATTR_TRACE_LEVEL_AFTER_LAST - 1,
2890 };
2891 
2892 /**
2893  * enum qca_wlan_vendor_attr_get_logger_features - value for logger
2894  *                                                 supported features
2895  * @QCA_WLAN_VENDOR_ATTR_LOGGER_INVALID - Invalid
2896  * @QCA_WLAN_VENDOR_ATTR_LOGGER_SUPPORTED - Indicate the supported features
2897  * @QCA_WLAN_VENDOR_ATTR_LOGGER_AFTER_LAST - To keep track of the last enum
2898  * @QCA_WLAN_VENDOR_ATTR_LOGGER_MAX - max value possible for this type
2899  *
2900  * enum values are used for NL attributes for data used by
2901  * QCA_NL80211_VENDOR_SUBCMD_GET_LOGGER_FEATURE_SET sub command.
2902  */
2903 enum qca_wlan_vendor_attr_get_logger_features {
2904 	QCA_WLAN_VENDOR_ATTR_LOGGER_INVALID = 0,
2905 	QCA_WLAN_VENDOR_ATTR_LOGGER_SUPPORTED = 1,
2906 
2907 	/* keep last */
2908 	QCA_WLAN_VENDOR_ATTR_LOGGER_AFTER_LAST,
2909 	QCA_WLAN_VENDOR_ATTR_LOGGER_MAX =
2910 		QCA_WLAN_VENDOR_ATTR_LOGGER_AFTER_LAST - 1,
2911 };
2912 
2913 /**
2914  * enum qca_wlan_vendor_attr_link_properties - link properties
2915  *
2916  * @QCA_WLAN_VENDOR_ATTR_LINK_PROPERTIES_INVALID: Invalid initial value
2917  * @QCA_WLAN_VENDOR_ATTR_LINK_PROPERTIES_NSS: Unsigned 8-bit value to
2918  *	specify the number of spatial streams negotiated
2919  * @QCA_WLAN_VENDOR_ATTR_LINK_PROPERTIES_RATE_FLAGS: Unsigned 8-bit value
2920  *	to specify negotiated rate flags i.e. ht, vht and channel width
2921  * @QCA_WLAN_VENDOR_ATTR_LINK_PROPERTIES_FREQ: Unsigned 32bit value to
2922  *	specify the operating frequency
2923  * @QCA_WLAN_VENDOR_ATTR_LINK_PROPERTIES_AFTER_LAST: after last
2924  * @QCA_WLAN_VENDOR_ATTR_LINK_PROPERTIES_MAX: max value
2925  */
2926 enum qca_wlan_vendor_attr_link_properties {
2927 	QCA_WLAN_VENDOR_ATTR_LINK_PROPERTIES_INVALID = 0,
2928 	QCA_WLAN_VENDOR_ATTR_LINK_PROPERTIES_NSS = 1,
2929 	QCA_WLAN_VENDOR_ATTR_LINK_PROPERTIES_RATE_FLAGS = 2,
2930 	QCA_WLAN_VENDOR_ATTR_LINK_PROPERTIES_FREQ = 3,
2931 
2932 	/* KEEP LAST */
2933 	QCA_WLAN_VENDOR_ATTR_LINK_PROPERTIES_AFTER_LAST,
2934 	QCA_WLAN_VENDOR_ATTR_LINK_PROPERTIES_MAX =
2935 		QCA_WLAN_VENDOR_ATTR_LINK_PROPERTIES_AFTER_LAST - 1,
2936 };
2937 
2938 /**
2939  * enum qca_wlan_vendor_attr_nd_offload - vendor NS offload support
2940  *
2941  * @QCA_WLAN_VENDOR_ATTR_ND_OFFLOAD_INVALID - Invalid
2942  * @QCA_WLAN_VENDOR_ATTR_ND_OFFLOAD_FLAG - Flag to set NS offload
2943  * @QCA_WLAN_VENDOR_ATTR_ND_OFFLOAD_AFTER_LAST - To keep track of the last enum
2944  * @QCA_WLAN_VENDOR_ATTR_ND_OFFLOAD_MAX - max value possible for this type
2945  *
2946  * enum values are used for NL attributes for data used by
2947  * QCA_NL80211_VENDOR_SUBCMD_ND_OFFLOAD sub command.
2948  */
2949 enum qca_wlan_vendor_attr_nd_offload {
2950 	QCA_WLAN_VENDOR_ATTR_ND_OFFLOAD_INVALID = 0,
2951 	QCA_WLAN_VENDOR_ATTR_ND_OFFLOAD_FLAG,
2952 
2953 	/* Keep last */
2954 	QCA_WLAN_VENDOR_ATTR_ND_OFFLOAD_AFTER_LAST,
2955 	QCA_WLAN_VENDOR_ATTR_ND_OFFLOAD_MAX =
2956 		QCA_WLAN_VENDOR_ATTR_ND_OFFLOAD_AFTER_LAST - 1,
2957 };
2958 
2959 /**
2960  * enum qca_wlan_vendor_features - vendor device/driver features
2961  * @QCA_WLAN_VENDOR_FEATURE_KEY_MGMT_OFFLOAD: Device supports key
2962  * management offload, a mechanism where the station's firmware
2963  * does the exchange with the AP to establish the temporal keys
2964  * after roaming, rather than having the supplicant do it.
2965  * @QCA_WLAN_VENDOR_FEATURE_OFFCHANNEL_SIMULTANEOUS: Device supports
2966  *        simultaneous off-channel operations.
2967  * @QQCA_WLAN_VENDOR_FEATURE_P2P_LISTEN_OFFLOAD: Device supports P2P
2968  *	Listen offload; a mechanism where the station's firmware
2969  *	takes care of responding to incoming Probe Request frames received
2970  *	from other P2P devices whilst in Listen state, rather than having the
2971  *	user space wpa_supplicant do it. Information from received P2P
2972  *	Requests are forwarded from firmware to host whenever the APPS
2973  *	processor exits power collapse state.
2974  * @QCA_WLAN_VENDOR_FEATURE_OCE_STA: Device supports all OCE non-AP STA
2975  *	specific features
2976  * @QCA_WLAN_VENDOR_FEATURE_OCE_AP: Device supports all OCE AP specific
2977  *	features.
2978  * @QCA_WLAN_VENDOR_FEATURE_OCE_STA_CFON: Device supports OCE STA-CFON
2979  *	specific features only. If a Device sets this bit but not the
2980  *	QCA_WLAN_VENDOR_FEATURE_OCE_AP, the userspace shall assume that
2981  *	this Device may not support all OCE AP functionalities but can support
2982  *	only OCE STA-CFON functionalities.
2983  */
2984 enum qca_wlan_vendor_features {
2985 	QCA_WLAN_VENDOR_FEATURE_KEY_MGMT_OFFLOAD = 0,
2986 	QCA_WLAN_VENDOR_FEATURE_SUPPORT_HW_MODE_ANY = 1,
2987 	QCA_WLAN_VENDOR_FEATURE_OFFCHANNEL_SIMULTANEOUS = 2,
2988 	QCA_WLAN_VENDOR_FEATURE_P2P_LISTEN_OFFLOAD	= 3,
2989 	QCA_WLAN_VENDOR_FEATURE_OCE_STA = 4,
2990 	QCA_WLAN_VENDOR_FEATURE_OCE_AP = 5,
2991 	QCA_WLAN_VENDOR_FEATURE_OCE_STA_CFON = 6,
2992 	/* Additional features need to be added above this */
2993 	NUM_QCA_WLAN_VENDOR_FEATURES
2994 };
2995 
2996 /**
2997  * enum qca_wlan_vendor_attr_sap_conditional_chan_switch - Parameters for SAP
2998  *     conditional channel switch
2999  * @QCA_WLAN_VENDOR_ATTR_SAP_CONDITIONAL_CHAN_SWITCH_INVALID: Invalid initial
3000  *     value
3001  * @QCA_WLAN_VENDOR_ATTR_SAP_CONDITIONAL_CHAN_SWITCH_FREQ_LIST: Priority based
3002  * frequency list (an array of u32 values in host byte order)
3003  * @QCA_WLAN_VENDOR_ATTR_SAP_CONDITIONAL_CHAN_SWITCH_STATUS: Status of the
3004  *     conditional switch (u32)- 0: Success, Non-zero: Failure
3005  * @QCA_WLAN_VENDOR_ATTR_SAP_CONDITIONAL_CHAN_SWITCH_AFTER_LAST: After last
3006  * @QCA_WLAN_VENDOR_ATTR_SAP_CONDITIONAL_CHAN_SWITCH_MAX: Subcommand max
3007  */
3008 enum qca_wlan_vendor_attr_sap_conditional_chan_switch {
3009 	QCA_WLAN_VENDOR_ATTR_SAP_CONDITIONAL_CHAN_SWITCH_INVALID = 0,
3010 	QCA_WLAN_VENDOR_ATTR_SAP_CONDITIONAL_CHAN_SWITCH_FREQ_LIST = 1,
3011 	QCA_WLAN_VENDOR_ATTR_SAP_CONDITIONAL_CHAN_SWITCH_STATUS = 2,
3012 
3013 	/* Keep Last */
3014 	QCA_WLAN_VENDOR_ATTR_SAP_CONDITIONAL_CHAN_SWITCH_AFTER_LAST,
3015 	QCA_WLAN_VENDOR_ATTR_SAP_CONDITIONAL_CHAN_SWITCH_MAX =
3016 	QCA_WLAN_VENDOR_ATTR_SAP_CONDITIONAL_CHAN_SWITCH_AFTER_LAST - 1,
3017 };
3018 
3019 /**
3020  * enum wifi_logger_supported_features - values for supported logger features
3021  * @WIFI_LOGGER_MEMORY_DUMP_SUPPORTED: Memory dump of FW
3022  * @WIFI_LOGGER_PER_PACKET_TX_RX_STATUS_SUPPORTED: Per packet statistics
3023  * @WIFI_LOGGER_CONNECT_EVENT_SUPPORTED: Logging of Connectivity events
3024  * @WIFI_LOGGER_POWER_EVENT_SUPPORTED: Power of driver
3025  * @WIFI_LOGGER_WAKE_LOCK_SUPPORTE: Wakelock of driver
3026  * @WIFI_LOGGER_WATCHDOG_TIMER_SUPPORTED: monitor FW health
3027  * @WIFI_LOGGER_DRIVER_DUMP_SUPPORTED: support driver dump
3028  * @WIFI_LOGGER_PACKET_FATE_SUPPORTED: tracks connection packets fate
3029  */
3030 enum wifi_logger_supported_features {
3031 	WIFI_LOGGER_MEMORY_DUMP_SUPPORTED = (1 << (0)),
3032 	WIFI_LOGGER_PER_PACKET_TX_RX_STATUS_SUPPORTED = (1 << (1)),
3033 	WIFI_LOGGER_CONNECT_EVENT_SUPPORTED = (1 << (2)),
3034 	WIFI_LOGGER_POWER_EVENT_SUPPORTED = (1 << (3)),
3035 	WIFI_LOGGER_WAKE_LOCK_SUPPORTED = (1 << (4)),
3036 	WIFI_LOGGER_VERBOSE_SUPPORTED = (1 << (5)),
3037 	WIFI_LOGGER_WATCHDOG_TIMER_SUPPORTED = (1 << (6)),
3038 	WIFI_LOGGER_DRIVER_DUMP_SUPPORTED = (1 << (7)),
3039 	WIFI_LOGGER_PACKET_FATE_SUPPORTED = (1 << (8))
3040 };
3041 /**
3042  * enum qca_wlan_vendor_attr_acs_offload
3043  *
3044  * @QCA_WLAN_VENDOR_ATTR_ACS_PRIMARY_CHANNEL: ACS selected primary channel
3045  * @QCA_WLAN_VENDOR_ATTR_ACS_SECONDARY_CHANNEL: ACS selected secondary channel
3046  * @QCA_WLAN_VENDOR_ATTR_ACS_HW_MODE: hw_mode for ACS
3047  * @QCA_WLAN_VENDOR_ATTR_ACS_HT_ENABLED: indicate if HT capability is enabled
3048  * @QCA_WLAN_VENDOR_ATTR_ACS_HT40_ENABLED: indicate HT capability
3049  */
3050 enum qca_wlan_vendor_attr_acs_offload {
3051 	QCA_WLAN_VENDOR_ATTR_ACS_CHANNEL_INVALID = 0,
3052 	QCA_WLAN_VENDOR_ATTR_ACS_PRIMARY_CHANNEL,
3053 	QCA_WLAN_VENDOR_ATTR_ACS_SECONDARY_CHANNEL,
3054 	QCA_WLAN_VENDOR_ATTR_ACS_HW_MODE,
3055 	QCA_WLAN_VENDOR_ATTR_ACS_HT_ENABLED,
3056 	QCA_WLAN_VENDOR_ATTR_ACS_HT40_ENABLED,
3057 	QCA_WLAN_VENDOR_ATTR_ACS_VHT_ENABLED,
3058 	QCA_WLAN_VENDOR_ATTR_ACS_CHWIDTH,
3059 	QCA_WLAN_VENDOR_ATTR_ACS_CH_LIST,
3060 	QCA_WLAN_VENDOR_ATTR_ACS_VHT_SEG0_CENTER_CHANNEL,
3061 	QCA_WLAN_VENDOR_ATTR_ACS_VHT_SEG1_CENTER_CHANNEL,
3062 	QCA_WLAN_VENDOR_ATTR_ACS_FREQ_LIST,
3063 	/* keep last */
3064 	QCA_WLAN_VENDOR_ATTR_ACS_AFTER_LAST,
3065 	QCA_WLAN_VENDOR_ATTR_ACS_MAX =
3066 		QCA_WLAN_VENDOR_ATTR_ACS_AFTER_LAST - 1
3067 };
3068 
3069 /**
3070  * enum qca_wlan_vendor_acs_hw_mode
3071  *
3072  * @QCA_ACS_MODE_IEEE80211B: 11b mode
3073  * @QCA_ACS_MODE_IEEE80211G: 11g mode
3074  * @QCA_ACS_MODE_IEEE80211A: 11a mode
3075  * @QCA_ACS_MODE_IEEE80211AD: 11ad mode
3076  */
3077 enum qca_wlan_vendor_acs_hw_mode {
3078 	QCA_ACS_MODE_IEEE80211B,
3079 	QCA_ACS_MODE_IEEE80211G,
3080 	QCA_ACS_MODE_IEEE80211A,
3081 	QCA_ACS_MODE_IEEE80211AD,
3082 	QCA_ACS_MODE_IEEE80211ANY,
3083 };
3084 
3085 /**
3086  * enum qca_access_policy - access control policy
3087  *
3088  * Access control policy is applied on the configured IE
3089  * (QCA_WLAN_VENDOR_ATTR_CONFIG_ACCESS_POLICY_IE).
3090  * To be set with QCA_WLAN_VENDOR_ATTR_CONFIG_ACCESS_POLICY.
3091  *
3092  * @QCA_ACCESS_POLICY_ACCEPT_UNLESS_LISTED: Deny Wi-Fi Connections which match
3093  *»       with the specific configuration (IE) set, i.e. allow all the
3094  *»       connections which do not match the configuration.
3095  * @QCA_ACCESS_POLICY_DENY_UNLESS_LISTED: Accept Wi-Fi Connections which match
3096  *»       with the specific configuration (IE) set, i.e. deny all the
3097  *»       connections which do not match the configuration.
3098  */
3099 enum qca_access_policy {
3100 	QCA_ACCESS_POLICY_ACCEPT_UNLESS_LISTED,
3101 	QCA_ACCESS_POLICY_DENY_UNLESS_LISTED,
3102 };
3103 
3104 /**
3105  * enum qca_ignore_assoc_disallowed - Ignore assoc disallowed values
3106  *
3107  * The valid values for the ignore assoc disallowed
3108  *
3109  * @QCA_IGNORE_ASSOC_DISALLOWED_DISABLE: Disable ignore assoc disallowed
3110  * @QCA_IGNORE_ASSOC_DISALLOWED_ENABLE: Enable ignore assoc disallowed
3111  *
3112  */
3113 enum qca_ignore_assoc_disallowed {
3114 	QCA_IGNORE_ASSOC_DISALLOWED_DISABLE,
3115 	QCA_IGNORE_ASSOC_DISALLOWED_ENABLE
3116 };
3117 
3118 /* Attributes for data used by
3119  * QCA_NL80211_VENDOR_SUBCMD_SET_WIFI_CONFIGURATION and
3120  * QCA_NL80211_VENDOR_SUBCMD_GET_WIFI_CONFIGURATION subcommands.
3121  */
3122 enum qca_wlan_vendor_attr_config {
3123 	QCA_WLAN_VENDOR_ATTR_CONFIG_INVALID = 0,
3124 	/*
3125 	 * Unsigned 32-bit value to set the DTIM period.
3126 	 * Whether the wifi chipset wakes at every dtim beacon or a multiple of
3127 	 * the DTIM period. If DTIM is set to 3, the STA shall wake up every 3
3128 	 * DTIM beacons.
3129 	 */
3130 	QCA_WLAN_VENDOR_ATTR_CONFIG_MODULATED_DTIM = 1,
3131 	/*
3132 	 * Unsigned 32-bit value to set the wifi_iface stats averaging factor
3133 	 * used to calculate statistics like average the TSF offset or average
3134 	 * number of frame leaked.
3135 	 * For instance, upon Beacon frame reception:
3136 	 * current_avg = ((beacon_TSF - TBTT) * factor + previous_avg * (0x10000 - factor) ) / 0x10000
3137 	 * For instance, when evaluating leaky APs:
3138 	 * current_avg = ((num frame received within guard time) * factor + previous_avg * (0x10000 - factor)) / 0x10000
3139 	 */
3140 	QCA_WLAN_VENDOR_ATTR_CONFIG_STATS_AVG_FACTOR = 2,
3141 	/*
3142 	 * Unsigned 32-bit value to configure guard time, i.e., when
3143 	 * implementing IEEE power management based on frame control PM bit, how
3144 	 * long the driver waits before shutting down the radio and after
3145 	 * receiving an ACK frame for a Data frame with PM bit set.
3146 	 */
3147 	QCA_WLAN_VENDOR_ATTR_CONFIG_GUARD_TIME = 3,
3148 	/* Unsigned 32-bit value to change the FTM capability dynamically */
3149 	QCA_WLAN_VENDOR_ATTR_CONFIG_FINE_TIME_MEASUREMENT = 4,
3150 	/* Unsigned 16-bit value to configure maximum TX rate dynamically */
3151 	QCA_WLAN_VENDOR_ATTR_CONF_TX_RATE = 5,
3152 	/*
3153 	 * Unsigned 32-bit value to configure the number of continuous
3154 	 * Beacon Miss which shall be used by the firmware to penalize
3155 	 * the RSSI.
3156 	 */
3157 	QCA_WLAN_VENDOR_ATTR_CONFIG_PENALIZE_AFTER_NCONS_BEACON_MISS = 6,
3158 	/*
3159 	 * Unsigned 8-bit value to configure the channel avoidance indication
3160 	 * behavior. Firmware to send only one indication and ignore duplicate
3161 	 * indications when set to avoid multiple Apps wakeups.
3162 	 */
3163 	QCA_WLAN_VENDOR_ATTR_CONFIG_CHANNEL_AVOIDANCE_IND = 7,
3164 	/*
3165 	 * 8-bit unsigned value to configure the maximum TX MPDU for
3166 	 * aggregation.
3167 	 */
3168 	QCA_WLAN_VENDOR_ATTR_CONFIG_TX_MPDU_AGGREGATION = 8,
3169 	/*
3170 	 * 8-bit unsigned value to configure the maximum RX MPDU for
3171 	 * aggregation.
3172 	 */
3173 	QCA_WLAN_VENDOR_ATTR_CONFIG_RX_MPDU_AGGREGATION = 9,
3174 	/*
3175 	 * 8-bit unsigned value to configure the Non aggregrate/11g sw
3176 	 * retry threshold (0 disable, 31 max).
3177 	 */
3178 	QCA_WLAN_VENDOR_ATTR_CONFIG_NON_AGG_RETRY = 10,
3179 	/*
3180 	 * 8-bit unsigned value to configure the aggregrate sw
3181 	 * retry threshold (0 disable, 31 max).
3182 	 */
3183 	QCA_WLAN_VENDOR_ATTR_CONFIG_AGG_RETRY = 11,
3184 	/*
3185 	 * 8-bit unsigned value to configure the MGMT frame
3186 	 * retry threshold (0 disable, 31 max).
3187 	 */
3188 	QCA_WLAN_VENDOR_ATTR_CONFIG_MGMT_RETRY = 12,
3189 	/*
3190 	 * 8-bit unsigned value to configure the CTRL frame
3191 	 * retry threshold (0 disable, 31 max).
3192 	 */
3193 	QCA_WLAN_VENDOR_ATTR_CONFIG_CTRL_RETRY = 13,
3194 	/*
3195 	 * 8-bit unsigned value to configure the propagation delay for
3196 	 * 2G/5G band (0~63, units in us)
3197 	 */
3198 	QCA_WLAN_VENDOR_ATTR_CONFIG_PROPAGATION_DELAY = 14,
3199 	/*
3200 	 * Unsigned 32-bit value to configure the number of unicast TX fail
3201 	 * packet count. The peer is disconnected once this threshold is
3202 	 * reached.
3203 	 */
3204 	QCA_WLAN_VENDOR_ATTR_CONFIG_TX_FAIL_COUNT = 15,
3205 	/*
3206 	 * Attribute used to set scan default IEs to the driver.
3207 	 *
3208 	 * These IEs can be used by scan operations that will be initiated by
3209 	 * the driver/firmware.
3210 	 *
3211 	 * For further scan requests coming to the driver, these IEs should be
3212 	 * merged with the IEs received along with scan request coming to the
3213 	 * driver. If a particular IE is present in the scan default IEs but not
3214 	 * present in the scan request, then that IE should be added to the IEs
3215 	 * sent in the Probe Request frames for that scan request.
3216 	 */
3217 	QCA_WLAN_VENDOR_ATTR_CONFIG_SCAN_DEFAULT_IES = 16,
3218 	/* Unsigned 32-bit attribute for generic commands */
3219 	QCA_WLAN_VENDOR_ATTR_CONFIG_GENERIC_COMMAND = 17,
3220 	/* Unsigned 32-bit value attribute for generic commands */
3221 	QCA_WLAN_VENDOR_ATTR_CONFIG_GENERIC_VALUE = 18,
3222 	/* Unsigned 32-bit data attribute for generic command response */
3223 	QCA_WLAN_VENDOR_ATTR_CONFIG_GENERIC_DATA = 19,
3224 	/*
3225 	 * Unsigned 32-bit length attribute for
3226 	 * QCA_WLAN_VENDOR_ATTR_CONFIG_GENERIC_DATA
3227 	 */
3228 	QCA_WLAN_VENDOR_ATTR_CONFIG_GENERIC_LENGTH = 20,
3229 	/*
3230 	 * Unsigned 32-bit flags attribute for
3231 	 * QCA_WLAN_VENDOR_ATTR_CONFIG_GENERIC_DATA
3232 	 */
3233 	QCA_WLAN_VENDOR_ATTR_CONFIG_GENERIC_FLAGS = 21,
3234 	/*
3235 	 * Unsigned 32-bit, defining the access policy.
3236 	 * See enum qca_access_policy. Used with
3237 	 * QCA_WLAN_VENDOR_ATTR_CONFIG_ACCESS_POLICY_IE_LIST.
3238 	 */
3239 	QCA_WLAN_VENDOR_ATTR_CONFIG_ACCESS_POLICY = 22,
3240 	/*
3241 	 * Sets the list of full set of IEs for which a specific access policy
3242 	 * has to be applied. Used along with
3243 	 * QCA_WLAN_VENDOR_ATTR_CONFIG_ACCESS_POLICY to control the access.
3244 	 * Zero length payload can be used to clear this access constraint.
3245 	 */
3246 	QCA_WLAN_VENDOR_ATTR_CONFIG_ACCESS_POLICY_IE_LIST = 23,
3247 	/*
3248 	 * Unsigned 32-bit, specifies the interface index (netdev) for which the
3249 	 * corresponding configurations are applied. If the interface index is
3250 	 * not specified, the configurations are attributed to the respective
3251 	 * wiphy.
3252 	 */
3253 	QCA_WLAN_VENDOR_ATTR_CONFIG_IFINDEX = 24,
3254 	/* 8-bit unsigned value to trigger QPower: 1-Enable, 0-Disable */
3255 	QCA_WLAN_VENDOR_ATTR_CONFIG_QPOWER = 25,
3256 	/*
3257 	 * 8-bit unsigned value to configure the driver and below layers to
3258 	 * ignore the assoc disallowed set by APs while connecting
3259 	 * 1-Ignore, 0-Don't ignore
3260 	 */
3261 	QCA_WLAN_VENDOR_ATTR_CONFIG_IGNORE_ASSOC_DISALLOWED = 26,
3262 	/*
3263 	 * 32-bit unsigned value to trigger antenna diversity features:
3264 	 * 1-Enable, 0-Disable
3265 	 */
3266 	QCA_WLAN_VENDOR_ATTR_CONFIG_ANT_DIV_ENA = 27,
3267 	/* 32-bit unsigned value to configure specific chain antenna */
3268 	QCA_WLAN_VENDOR_ATTR_CONFIG_ANT_DIV_CHAIN = 28,
3269 	/*
3270 	 * 32-bit unsigned value to trigger cycle selftest
3271 	 * 1-Enable, 0-Disable
3272 	 */
3273 	QCA_WLAN_VENDOR_ATTR_CONFIG_ANT_DIV_SELFTEST = 29,
3274 	/*
3275 	 * 32-bit unsigned to configure the cycle time of selftest
3276 	 * the unit is micro-second
3277 	 */
3278 	QCA_WLAN_VENDOR_ATTR_CONFIG_ANT_DIV_SELFTEST_INTVL = 30,
3279 	/* 32-bit unsigned value to set reorder timeout for AC_VO */
3280 	QCA_WLAN_VENDOR_ATTR_CONFIG_RX_REORDER_TIMEOUT_VOICE = 31,
3281 	/* 32-bit unsigned value to set reorder timeout for AC_VI */
3282 	QCA_WLAN_VENDOR_ATTR_CONFIG_RX_REORDER_TIMEOUT_VIDEO = 32,
3283 	/* 32-bit unsigned value to set reorder timeout for AC_BE */
3284 	QCA_WLAN_VENDOR_ATTR_CONFIG_RX_REORDER_TIMEOUT_BESTEFFORT = 33,
3285 	/* 32-bit unsigned value to set reorder timeout for AC_BK */
3286 	QCA_WLAN_VENDOR_ATTR_CONFIG_RX_REORDER_TIMEOUT_BACKGROUND = 34,
3287 	/* 6-byte MAC address to point out the specific peer */
3288 	QCA_WLAN_VENDOR_ATTR_CONFIG_RX_BLOCKSIZE_PEER_MAC = 35,
3289 	/* 32-bit unsigned value to set window size for specific peer */
3290 	QCA_WLAN_VENDOR_ATTR_CONFIG_RX_BLOCKSIZE_WINLIMIT = 36,
3291 	/* 8-bit unsigned value to set the beacon miss threshold in 2.4 GHz */
3292 	QCA_WLAN_VENDOR_ATTR_CONFIG_BEACON_MISS_THRESHOLD_24 = 37,
3293 	/* 8-bit unsigned value to set the beacon miss threshold in 5 GHz */
3294 	QCA_WLAN_VENDOR_ATTR_CONFIG_BEACON_MISS_THRESHOLD_5 = 38,
3295 	/*
3296 	 * 32-bit unsigned value to configure 5 or 10 MHz channel width for
3297 	 * station device while in disconnect state. The attribute use the
3298 	 * value of enum nl80211_chan_width: NL80211_CHAN_WIDTH_5 means 5 MHz,
3299 	 * NL80211_CHAN_WIDTH_10 means 10 MHz. If set, the device work in 5 or
3300 	 * 10 MHz channel width, the station will not connect to a BSS using 20
3301 	 * MHz or higher bandwidth. Set to NL80211_CHAN_WIDTH_20_NOHT to
3302 	 * clear this constraint.
3303 	 */
3304 	QCA_WLAN_VENDOR_ATTR_CONFIG_SUB20_CHAN_WIDTH = 39,
3305 	/*
3306 	 * 32-bit unsigned value to configure the propagation absolute delay
3307 	 * for 2G/5G band (units in us)
3308 	 */
3309 	QCA_WLAN_VENDOR_ATTR_CONFIG_PROPAGATION_ABS_DELAY = 40,
3310 	/* 32-bit unsigned value to set probe period */
3311 	QCA_WLAN_VENDOR_ATTR_CONFIG_ANT_DIV_PROBE_PERIOD = 41,
3312 	/* 32-bit unsigned value to set stay period */
3313 	QCA_WLAN_VENDOR_ATTR_CONFIG_ANT_DIV_STAY_PERIOD = 42,
3314 	/* 32-bit unsigned value to set snr diff */
3315 	QCA_WLAN_VENDOR_ATTR_CONFIG_ANT_DIV_SNR_DIFF = 43,
3316 	/* 32-bit unsigned value to set probe dwell time */
3317 	QCA_WLAN_VENDOR_ATTR_CONFIG_ANT_DIV_PROBE_DWELL_TIME = 44,
3318 	/* 32-bit unsigned value to set mgmt snr weight */
3319 	QCA_WLAN_VENDOR_ATTR_CONFIG_ANT_DIV_MGMT_SNR_WEIGHT = 45,
3320 	/* 32-bit unsigned value to set data snr weight */
3321 	QCA_WLAN_VENDOR_ATTR_CONFIG_ANT_DIV_DATA_SNR_WEIGHT = 46,
3322 	/* 32-bit unsigned value to set ack snr weight */
3323 	QCA_WLAN_VENDOR_ATTR_CONFIG_ANT_DIV_ACK_SNR_WEIGHT = 47,
3324 	/*
3325 	 * 32-bit unsigned value to configure the listen interval.
3326 	 * This is in units of beacon intervals. This configuration alters
3327 	 * the negotiated listen interval with the AP during the connection.
3328 	 * It is highly recommended to configure a value less than or equal to
3329 	 * the one negotiated during the association. Configuring any greater
3330 	 * value can have adverse effects (frame loss, AP disassociating STA,
3331 	 * etc.).
3332 	 */
3333 	QCA_WLAN_VENDOR_ATTR_CONFIG_LISTEN_INTERVAL = 48,
3334 	/*
3335 	 * 8 bit unsigned value that is set on an AP/GO virtual interface to
3336 	 * disable operations that would cause the AP/GO to leave its operating
3337 	 * channel.
3338 	 *
3339 	 * This will restrict the scans to the AP/GO operating channel and the
3340 	 * channels of the other band, if DBS is supported.A STA/CLI interface
3341 	 * brought up after this setting is enabled, will be restricted to
3342 	 * connecting to devices only on the AP/GO interface's operating channel
3343 	 * or on the other band in DBS case. P2P supported channel list is
3344 	 * modified, to only include AP interface's operating-channel and the
3345 	 * channels of the other band if DBS is supported.
3346 	 *
3347 	 * These restrictions are only applicable as long as the AP/GO interface
3348 	 * is alive. If the AP/GO interface is brought down then this
3349 	 * setting/restriction is forgotten.
3350 	 *
3351 	 * If this variable is set on an AP/GO interface while a multi-channel
3352 	 * concurrent session is active, it has no effect on the operation of
3353 	 * the current interfaces, other than restricting the scan to the AP/GO
3354 	 * operating channel and the other band channels if DBS is supported.
3355 	 * However, if the STA is brought down and restarted then the new STA
3356 	 * connection will either be formed on the AP/GO channel or on the
3357 	 * other band in a DBS case. This is because of the scan being
3358 	 * restricted on these channels as mentioned above.
3359 	 *
3360 	 * 1-Disable offchannel operations, 0-Enable offchannel operations.
3361 	 */
3362 	QCA_WLAN_VENDOR_ATTR_CONFIG_RESTRICT_OFFCHANNEL = 49,
3363 
3364 	/*
3365 	 * 8 bit unsigned value to enable/disable LRO (Large Receive Offload)
3366 	 * on an interface.
3367 	 * 1 - Enable , 0 - Disable.
3368 	 */
3369 	QCA_WLAN_VENDOR_ATTR_CONFIG_LRO = 50,
3370 
3371 	/*
3372 	 * 8 bit unsigned value to globally enable/disable scan
3373 	 * 1 - Enable, 0 - Disable.
3374 	 */
3375 	QCA_WLAN_VENDOR_ATTR_CONFIG_SCAN_ENABLE = 51,
3376 
3377 	/* 8-bit unsigned value to set the total beacon miss count */
3378 	QCA_WLAN_VENDOR_ATTR_CONFIG_TOTAL_BEACON_MISS_COUNT = 52,
3379 
3380 	/*
3381 	 * Unsigned 32-bit value to configure the number of continuous
3382 	 * Beacon Miss which shall be used by the firmware to penalize
3383 	 * the RSSI for BTC.
3384 	 */
3385 	QCA_WLAN_VENDOR_ATTR_CONFIG_PENALIZE_AFTER_NCONS_BEACON_MISS_BTC = 53,
3386 
3387 	/*
3388 	 * 8-bit unsigned value to configure the driver and below layers to
3389 	 * enable/disable all fils features.
3390 	 * 0-enable, 1-disable
3391 	 */
3392 	QCA_WLAN_VENDOR_ATTR_CONFIG_DISABLE_FILS = 54,
3393 
3394 	/* 16-bit unsigned value to configure the level of WLAN latency
3395 	 * module. See enum qca_wlan_vendor_attr_config_latency_level.
3396 	 */
3397 	QCA_WLAN_VENDOR_ATTR_CONFIG_LATENCY_LEVEL = 55,
3398 
3399 	/*
3400 	 * 8-bit unsigned value indicating the driver to use the RSNE as-is from
3401 	 * the connect interface. Exclusively used for the scenarios where the
3402 	 * device is used as a test bed device with special functionality and
3403 	 * not recommended for production. This helps driver to not validate the
3404 	 * RSNE passed from user space and thus allow arbitrary IE data to be
3405 	 * used for testing purposes.
3406 	 * 1-enable, 0-disable.
3407 	 * Applications set/reset this configuration. If not reset, this
3408 	 * parameter remains in use until the driver is unloaded.
3409 	 */
3410 	QCA_WLAN_VENDOR_ATTR_CONFIG_RSN_IE = 56,
3411 
3412 	/* keep last */
3413 	QCA_WLAN_VENDOR_ATTR_CONFIG_AFTER_LAST,
3414 	QCA_WLAN_VENDOR_ATTR_CONFIG_MAX =
3415 	QCA_WLAN_VENDOR_ATTR_CONFIG_AFTER_LAST - 1,
3416 };
3417 
3418 /**
3419  * enum qca_wlan_vendor_attr_wifi_logger_start - Enum for wifi logger starting
3420  * @QCA_WLAN_VENDOR_ATTR_WIFI_LOGGER_START_INVALID: Invalid attribute
3421  * @QCA_WLAN_VENDOR_ATTR_WIFI_LOGGER_RING_ID: Ring ID
3422  * @QCA_WLAN_VENDOR_ATTR_WIFI_LOGGER_VERBOSE_LEVEL: Verbose level
3423  * @QCA_WLAN_VENDOR_ATTR_WIFI_LOGGER_FLAGS: Flag
3424  * @QCA_WLAN_VENDOR_ATTR_WIFI_LOGGER_START_AFTER_LAST: Last value
3425  * @QCA_WLAN_VENDOR_ATTR_WIFI_LOGGER_START_MAX: Max value
3426  */
3427 enum qca_wlan_vendor_attr_wifi_logger_start {
3428 	QCA_WLAN_VENDOR_ATTR_WIFI_LOGGER_START_INVALID = 0,
3429 	QCA_WLAN_VENDOR_ATTR_WIFI_LOGGER_RING_ID = 1,
3430 	QCA_WLAN_VENDOR_ATTR_WIFI_LOGGER_VERBOSE_LEVEL = 2,
3431 	QCA_WLAN_VENDOR_ATTR_WIFI_LOGGER_FLAGS = 3,
3432 	/* keep last */
3433 	QCA_WLAN_VENDOR_ATTR_WIFI_LOGGER_START_AFTER_LAST,
3434 	QCA_WLAN_VENDOR_ATTR_WIFI_LOGGER_START_MAX =
3435 		QCA_WLAN_VENDOR_ATTR_WIFI_LOGGER_START_AFTER_LAST - 1,
3436 };
3437 
3438 /*
3439  * enum qca_wlan_vendor_attr_wifi_logger_get_ring_data - Get ring data
3440  * @QCA_WLAN_VENDOR_ATTR_WIFI_LOGGER_GET_RING_DATA_INVALID: Invalid attribute
3441  * @QCA_WLAN_VENDOR_ATTR_WIFI_LOGGER_GET_RING_DATA_ID: Ring ID
3442  * @QCA_WLAN_VENDOR_ATTR_WIFI_LOGGER_GET_RING_DATA_AFTER_LAST: Last value
3443  * @QCA_WLAN_VENDOR_ATTR_WIFI_LOGGER_GET_RING_DATA_MAX: Max value
3444  */
3445 enum qca_wlan_vendor_attr_wifi_logger_get_ring_data {
3446 	QCA_WLAN_VENDOR_ATTR_WIFI_LOGGER_GET_RING_DATA_INVALID = 0,
3447 	QCA_WLAN_VENDOR_ATTR_WIFI_LOGGER_GET_RING_DATA_ID = 1,
3448 	/* keep last */
3449 	QCA_WLAN_VENDOR_ATTR_WIFI_LOGGER_GET_RING_DATA_AFTER_LAST,
3450 	QCA_WLAN_VENDOR_ATTR_WIFI_LOGGER_GET_RING_DATA_MAX =
3451 		QCA_WLAN_VENDOR_ATTR_WIFI_LOGGER_GET_RING_DATA_AFTER_LAST - 1,
3452 };
3453 
3454 #ifdef WLAN_FEATURE_OFFLOAD_PACKETS
3455 /**
3456  * enum wlan_offloaded_packets_control - control commands
3457  * @WLAN_START_OFFLOADED_PACKETS: start offloaded packets
3458  * @WLAN_STOP_OFFLOADED_PACKETS: stop offloaded packets
3459  *
3460  */
3461 enum wlan_offloaded_packets_control {
3462 	WLAN_START_OFFLOADED_PACKETS = 1,
3463 	WLAN_STOP_OFFLOADED_PACKETS  = 2
3464 };
3465 
3466 /**
3467  * enum qca_wlan_vendor_attr_data_offload_ind - Vendor Data Offload Indication
3468  *
3469  * @QCA_WLAN_VENDOR_ATTR_DATA_OFFLOAD_IND_SESSION: Session corresponding to
3470  *      the offloaded data.
3471  * @QCA_WLAN_VENDOR_ATTR_DATA_OFFLOAD_IND_PROTOCOL: Protocol of the offloaded
3472  *      data.
3473  * @QCA_WLAN_VENDOR_ATTR_DATA_OFFLOAD_IND_EVENT: Event type for the data offload
3474  *      indication.
3475  */
3476 enum qca_wlan_vendor_attr_data_offload_ind {
3477 	QCA_WLAN_VENDOR_ATTR_DATA_OFFLOAD_IND_INVALID = 0,
3478 	QCA_WLAN_VENDOR_ATTR_DATA_OFFLOAD_IND_SESSION,
3479 	QCA_WLAN_VENDOR_ATTR_DATA_OFFLOAD_IND_PROTOCOL,
3480 	QCA_WLAN_VENDOR_ATTR_DATA_OFFLOAD_IND_EVENT,
3481 
3482 	/* keep last */
3483 	QCA_WLAN_VENDOR_ATTR_DATA_OFFLOAD_IND_AFTER_LAST,
3484 	QCA_WLAN_VENDOR_ATTR_DATA_OFFLOAD_IND_MAX =
3485 	QCA_WLAN_VENDOR_ATTR_DATA_OFFLOAD_IND_AFTER_LAST - 1
3486 };
3487 
3488 /**
3489  * enum qca_wlan_vendor_attr_offloaded_packets - offloaded packets
3490  * @QCA_WLAN_VENDOR_ATTR_OFFLOADED_PACKETS_INVALID: invalid
3491  * @QCA_WLAN_VENDOR_ATTR_OFFLOADED_PACKETS_SENDING_CONTROL: control
3492  * @QCA_WLAN_VENDOR_ATTR_OFFLOADED_PACKETS_REQUEST_ID: request id
3493  * @QCA_WLAN_VENDOR_ATTR_OFFLOADED_PACKETS_IP_PACKET_DATA: ip packet data
3494  * @QCA_WLAN_VENDOR_ATTR_OFFLOADED_PACKETS_SRC_MAC_ADDR: src mac address
3495  * @QCA_WLAN_VENDOR_ATTR_OFFLOADED_PACKETS_DST_MAC_ADDR: destination mac address
3496  * @QCA_WLAN_VENDOR_ATTR_OFFLOADED_PACKETS_PERIOD: period in milli seconds
3497  * @QCA_WLAN_VENDOR_ATTR_OFFLOADED_PACKETS_AFTER_LAST: after last
3498  * @QCA_WLAN_VENDOR_ATTR_OFFLOADED_PACKETS_MAX: max
3499  */
3500 enum qca_wlan_vendor_attr_offloaded_packets {
3501 	QCA_WLAN_VENDOR_ATTR_OFFLOADED_PACKETS_INVALID = 0,
3502 	QCA_WLAN_VENDOR_ATTR_OFFLOADED_PACKETS_SENDING_CONTROL,
3503 	QCA_WLAN_VENDOR_ATTR_OFFLOADED_PACKETS_REQUEST_ID,
3504 
3505 	/* Packet in hex format */
3506 	QCA_WLAN_VENDOR_ATTR_OFFLOADED_PACKETS_IP_PACKET_DATA,
3507 	QCA_WLAN_VENDOR_ATTR_OFFLOADED_PACKETS_SRC_MAC_ADDR,
3508 	QCA_WLAN_VENDOR_ATTR_OFFLOADED_PACKETS_DST_MAC_ADDR,
3509 	QCA_WLAN_VENDOR_ATTR_OFFLOADED_PACKETS_PERIOD,
3510 
3511 	/* keep last */
3512 	QCA_WLAN_VENDOR_ATTR_OFFLOADED_PACKETS_AFTER_LAST,
3513 	QCA_WLAN_VENDOR_ATTR_OFFLOADED_PACKETS_MAX =
3514 		QCA_WLAN_VENDOR_ATTR_OFFLOADED_PACKETS_AFTER_LAST - 1,
3515 };
3516 #endif
3517 
3518 /**
3519  * enum qca_wlan_rssi_monitoring_control - rssi control commands
3520  * @QCA_WLAN_RSSI_MONITORING_CONTROL_INVALID: invalid
3521  * @QCA_WLAN_RSSI_MONITORING_START: rssi monitoring start
3522  * @QCA_WLAN_RSSI_MONITORING_STOP: rssi monitoring stop
3523  */
3524 enum qca_wlan_rssi_monitoring_control {
3525 	QCA_WLAN_RSSI_MONITORING_CONTROL_INVALID = 0,
3526 	QCA_WLAN_RSSI_MONITORING_START,
3527 	QCA_WLAN_RSSI_MONITORING_STOP,
3528 };
3529 
3530 /**
3531  * enum qca_wlan_vendor_attr_rssi_monitoring - rssi monitoring
3532  * @QCA_WLAN_VENDOR_ATTR_RSSI_MONITORING_INVALID: Invalid
3533  * @QCA_WLAN_VENDOR_ATTR_RSSI_MONITORING_CONTROL: control
3534  * @QCA_WLAN_VENDOR_ATTR_RSSI_MONITORING_MAX_RSSI: max rssi
3535  * @QCA_WLAN_VENDOR_ATTR_RSSI_MONITORING_MIN_RSSI: min rssi
3536  * @QCA_WLAN_VENDOR_ATTR_RSSI_MONITORING_CUR_BSSID: current bssid
3537  * @QCA_WLAN_VENDOR_ATTR_RSSI_MONITORING_CUR_RSSI: current rssi
3538  * @QCA_WLAN_VENDOR_ATTR_RSSI_MONITORING_AFTER_LAST: after last
3539  * @QCA_WLAN_VENDOR_ATTR_RSSI_MONITORING_MAX: max
3540  */
3541 enum qca_wlan_vendor_attr_rssi_monitoring {
3542 	QCA_WLAN_VENDOR_ATTR_RSSI_MONITORING_INVALID = 0,
3543 
3544 	QCA_WLAN_VENDOR_ATTR_RSSI_MONITORING_CONTROL,
3545 	QCA_WLAN_VENDOR_ATTR_RSSI_MONITORING_REQUEST_ID,
3546 
3547 	QCA_WLAN_VENDOR_ATTR_RSSI_MONITORING_MAX_RSSI,
3548 	QCA_WLAN_VENDOR_ATTR_RSSI_MONITORING_MIN_RSSI,
3549 
3550 	/* attributes to be used/received in callback */
3551 	QCA_WLAN_VENDOR_ATTR_RSSI_MONITORING_CUR_BSSID,
3552 	QCA_WLAN_VENDOR_ATTR_RSSI_MONITORING_CUR_RSSI,
3553 
3554 	/* keep last */
3555 	QCA_WLAN_VENDOR_ATTR_RSSI_MONITORING_AFTER_LAST,
3556 	QCA_WLAN_VENDOR_ATTR_RSSI_MONITORING_MAX =
3557 		QCA_WLAN_VENDOR_ATTR_RSSI_MONITORING_AFTER_LAST - 1,
3558 };
3559 
3560 /**
3561  * qca_wlan_vendor_external_acs_event_chan_info_attr: Represents per channel
3562  * information. These attributes are sent as part of
3563  * QCA_WLAN_VENDOR_ATTR_EXTERNAL_ACS_EVENT_CHAN_INFO. Each set of the following
3564  * attributes correspond to a single channel.
3565  * @QCA_WLAN_VENDOR_EXTERNAL_ACS_EVENT_CHAN_INFO_ATTR_FLAGS: A bitmask (u16)
3566  * with flags specified in qca_wlan_vendor_channel_prop_flags_ext.
3567  * @QCA_WLAN_VENDOR_EXTERNAL_ACS_EVENT_CHAN_INFO_ATTR_FLAG_EXT: A bitmask (u16)
3568  * with flags specified in qca_wlan_vendor_channel_prop_flags_ext.
3569  * @QCA_WLAN_VENDOR_EXTERNAL_ACS_EVENT_CHAN_INFO_ATTR_FREQ: frequency
3570  * @QCA_WLAN_VENDOR_EXTERNAL_ACS_EVENT_CHAN_INFO_ATTR_MAX_REG_POWER: maximum
3571  * regulatory transmission power
3572  * @QCA_WLAN_VENDOR_EXTERNAL_ACS_EVENT_CHAN_INFO_ATTR_MAX_POWER: maximum
3573  * transmission power
3574  * @QCA_WLAN_VENDOR_EXTERNAL_ACS_EVENT_CHAN_INFO_ATTR_MIN_POWER: minimum
3575  * transmission power
3576  * @QCA_WLAN_VENDOR_EXTERNAL_ACS_EVENT_CHAN_INFO_ATTR_REG_CLASS_ID: regulatory
3577  * class id
3578  * @QCA_WLAN_VENDOR_EXTERNAL_ACS_EVENT_CHAN_INFO_ATTR_ANTENNA_GAIN: maximum
3579  * antenna gain in dbm
3580  * @QCA_WLAN_VENDOR_EXTERNAL_ACS_EVENT_CHAN_INFO_ATTR_VHT_SEG_0: vht segment 0
3581  * @QCA_WLAN_VENDOR_EXTERNAL_ACS_EVENT_CHAN_INFO_ATTR_VHT_SEG_1: vht segment 1
3582  *
3583  */
3584 enum qca_wlan_vendor_external_acs_event_chan_info_attr {
3585 	QCA_WLAN_VENDOR_EXTERNAL_ACS_EVENT_CHAN_INFO_ATTR_INVALID = 0,
3586 
3587 	QCA_WLAN_VENDOR_EXTERNAL_ACS_EVENT_CHAN_INFO_ATTR_FLAGS = 1,
3588 	QCA_WLAN_VENDOR_EXTERNAL_ACS_EVENT_CHAN_INFO_ATTR_FLAG_EXT = 2,
3589 	QCA_WLAN_VENDOR_EXTERNAL_ACS_EVENT_CHAN_INFO_ATTR_FREQ = 3,
3590 	QCA_WLAN_VENDOR_EXTERNAL_ACS_EVENT_CHAN_INFO_ATTR_MAX_REG_POWER = 4,
3591 	QCA_WLAN_VENDOR_EXTERNAL_ACS_EVENT_CHAN_INFO_ATTR_MAX_POWER = 5,
3592 	QCA_WLAN_VENDOR_EXTERNAL_ACS_EVENT_CHAN_INFO_ATTR_MIN_POWER = 6,
3593 	QCA_WLAN_VENDOR_EXTERNAL_ACS_EVENT_CHAN_INFO_ATTR_REG_CLASS_ID = 7,
3594 	QCA_WLAN_VENDOR_EXTERNAL_ACS_EVENT_CHAN_INFO_ATTR_ANTENNA_GAIN = 8,
3595 	QCA_WLAN_VENDOR_EXTERNAL_ACS_EVENT_CHAN_INFO_ATTR_VHT_SEG_0 = 9,
3596 	QCA_WLAN_VENDOR_EXTERNAL_ACS_EVENT_CHAN_INFO_ATTR_VHT_SEG_1 = 10,
3597 	/*
3598 	 * A bitmask (u32) with flags specified in
3599 	 * enum qca_wlan_vendor_channel_prop_flags_2.
3600 	 */
3601 	QCA_WLAN_VENDOR_EXTERNAL_ACS_EVENT_CHAN_INFO_ATTR_FLAGS_2 = 11,
3602 
3603 	/* keep last */
3604 	QCA_WLAN_VENDOR_EXTERNAL_ACS_EVENT_CHAN_INFO_ATTR_LAST,
3605 	QCA_WLAN_VENDOR_EXTERNAL_ACS_EVENT_CHAN_INFO_ATTR_MAX =
3606 		QCA_WLAN_VENDOR_EXTERNAL_ACS_EVENT_CHAN_INFO_ATTR_LAST - 1,
3607 };
3608 
3609 /**
3610  * enum qca_wlan_vendor_attr_start_acs_config: attribute to vendor sub-command
3611  * QCA_NL80211_VENDOR_SUBCMD_START_ACS. This will be triggered by host
3612  * driver.
3613  * @QCA_WLAN_VENDOR_ATTR_EXTERNAL_ACS_EVENT_REASON: This reason refers to
3614  * qca_wlan_vendor_acs_select_reason. This helps acs module to understand why
3615  * ACS need to be started
3616  * @QCA_WLAN_VENDOR_ATTR_EXTERNAL_ACS_EVENT_IS_SPECTRAL_SUPPORTED: Does
3617  * driver supports spectral scanning or not
3618  * @QCA_WLAN_VENDOR_ATTR_EXTERNAL_ACS_EVENT_IS_OFFLOAD_ENABLED: Is 11ac is
3619  * offloaded to firmware.
3620  * @QCA_WLAN_VENDOR_ATTR_EXTERNAL_ACS_EVENT_ADD_CHAN_STATS_SUPPORT: Does driver
3621  * provides additional channel capability as part of scan operation.
3622  * @QCA_WLAN_VENDOR_ATTR_EXTERNAL_ACS_EVENT_AP_UP:Flag attribute to indicate
3623  * interface status is UP
3624  * @QCA_WLAN_VENDOR_ATTR_EXTERNAL_ACS_EVENT_SAP_MODE: Operating mode of
3625  * interface. It takes one of nl80211_iftype values.
3626  * @QCA_WLAN_VENDOR_ATTR_EXTERNAL_ACS_EVENT_CHAN_WIDTH: This is the upper bound
3627  * of chan width. ACS logic should try to get a channel with specified width
3628  * if not found then look for lower values.
3629  * @QCA_WLAN_VENDOR_ATTR_EXTERNAL_ACS_EVENT_BAND: nl80211_bands
3630  * @QCA_WLAN_VENDOR_ATTR_EXTERNAL_ACS_EVENT_PHY_MODE: PHY/HW mode such as
3631  * a/b/g/n/ac.
3632  * @QCA_WLAN_VENDOR_ATTR_EXTERNAL_ACS_EVENT_FREQ_LIST: Supported frequency list
3633  * among which ACS should choose best frequency.
3634  * @QCA_WLAN_VENDOR_ATTR_EXTERNAL_ACS_EVENT_PCL:Preferred Chan List by the
3635  * driver which will have <channel(u8), weight(u8)> format as array of
3636  * nested values.
3637  * @QCA_WLAN_VENDOR_ATTR_EXTERNAL_ACS_EVENT_CHAN_INFO: Array of nested attribute
3638  * for each channel. It takes attr as defined in
3639  * @QCA_WLAN_VENDOR_ATTR_EXTERNAL_ACS_EVENT_POLICY:External ACS policy such as
3640  * PCL mandatory, PCL preferred, etc.It uses values defined in enum
3641  * qca_wlan_vendor_attr_external_acs_policy.
3642  * @QCA_WLAN_VENDOR_ATTR_EXTERNAL_ACS_EVENT_RROPAVAIL_INFO: Reference RF
3643  * Operating Parameter (RROP) availability information (u16). It uses values
3644  * defined in enum qca_wlan_vendor_attr_rropavail_info.
3645  */
3646 enum qca_wlan_vendor_attr_external_acs_event {
3647 	QCA_WLAN_VENDOR_ATTR_EXTERNAL_ACS_EVENT_INVALID = 0,
3648 	QCA_WLAN_VENDOR_ATTR_EXTERNAL_ACS_EVENT_REASON = 1,
3649 	QCA_WLAN_VENDOR_ATTR_EXTERNAL_ACS_EVENT_IS_SPECTRAL_SUPPORTED = 2,
3650 	QCA_WLAN_VENDOR_ATTR_EXTERNAL_ACS_EVENT_IS_OFFLOAD_ENABLED = 3,
3651 	QCA_WLAN_VENDOR_ATTR_EXTERNAL_ACS_EVENT_ADD_CHAN_STATS_SUPPORT = 4,
3652 	QCA_WLAN_VENDOR_ATTR_EXTERNAL_ACS_EVENT_AP_UP = 5,
3653 	QCA_WLAN_VENDOR_ATTR_EXTERNAL_ACS_EVENT_SAP_MODE = 6,
3654 	QCA_WLAN_VENDOR_ATTR_EXTERNAL_ACS_EVENT_CHAN_WIDTH = 7,
3655 	QCA_WLAN_VENDOR_ATTR_EXTERNAL_ACS_EVENT_BAND = 8,
3656 	QCA_WLAN_VENDOR_ATTR_EXTERNAL_ACS_EVENT_PHY_MODE = 9,
3657 	QCA_WLAN_VENDOR_ATTR_EXTERNAL_ACS_EVENT_FREQ_LIST = 10,
3658 	QCA_WLAN_VENDOR_ATTR_EXTERNAL_ACS_EVENT_PCL = 11,
3659 	QCA_WLAN_VENDOR_ATTR_EXTERNAL_ACS_EVENT_CHAN_INFO = 12,
3660 	QCA_WLAN_VENDOR_ATTR_EXTERNAL_ACS_EVENT_POLICY = 13,
3661 	QCA_WLAN_VENDOR_ATTR_EXTERNAL_ACS_EVENT_RROPAVAIL_INFO = 14,
3662 
3663 	/* keep last */
3664 	QCA_WLAN_VENDOR_ATTR_EXTERNAL_ACS_EVENT_LAST,
3665 	QCA_WLAN_VENDOR_ATTR_EXTERNAL_ACS_EVENT_MAX =
3666 		QCA_WLAN_VENDOR_ATTR_EXTERNAL_ACS_EVENT_LAST - 1,
3667 };
3668 
3669 enum qca_iface_type {
3670 	QCA_IFACE_TYPE_STA,
3671 	QCA_IFACE_TYPE_AP,
3672 	QCA_IFACE_TYPE_P2P_CLIENT,
3673 	QCA_IFACE_TYPE_P2P_GO,
3674 	QCA_IFACE_TYPE_IBSS,
3675 	QCA_IFACE_TYPE_TDLS,
3676 };
3677 
3678 /**
3679  * enum qca_wlan_vendor_attr_pcl_config: attribute to vendor sub-command
3680  * QCA_WLAN_VENDOR_ATTR_EXTERNAL_ACS_EVENT_PCL.
3681  * @QCA_WLAN_VENDOR_ATTR_PCL_CONFIG_INVALID: invalid value
3682  * @QCA_WLAN_VENDOR_ATTR_PCL_CONFIG_CHANNEL: pcl channel number
3683  * @QCA_WLAN_VENDOR_ATTR_PCL_CONFIG_WEIGHT: pcl channel weight
3684  */
3685 enum qca_wlan_vendor_attr_pcl_config {
3686 	QCA_WLAN_VENDOR_ATTR_PCL_INVALID = 0,
3687 	QCA_WLAN_VENDOR_ATTR_PCL_CHANNEL = 1,
3688 	QCA_WLAN_VENDOR_ATTR_PCL_WEIGHT = 2,
3689 };
3690 
3691 enum qca_set_band {
3692 	QCA_SETBAND_AUTO,
3693 	QCA_SETBAND_5G,
3694 	QCA_SETBAND_2G,
3695 };
3696 
3697 /**
3698  * enum set_reset_packet_filter - set packet filter control commands
3699  * @QCA_WLAN_SET_PACKET_FILTER: Set Packet Filter
3700  * @QCA_WLAN_GET_PACKET_FILTER: Get Packet filter
3701  */
3702 enum set_reset_packet_filter {
3703 	QCA_WLAN_SET_PACKET_FILTER = 1,
3704 	QCA_WLAN_GET_PACKET_FILTER = 2,
3705 };
3706 
3707 /**
3708  * enum qca_wlan_vendor_attr_packet_filter - BPF control commands
3709  * @QCA_WLAN_VENDOR_ATTR_PACKET_FILTER_INVALID: Invalid
3710  * @QCA_WLAN_VENDOR_ATTR_SET_RESET_PACKET_FILTER: Filter ID
3711  * @QCA_WLAN_VENDOR_ATTR_PACKET_FILTER_VERSION: Filter Version
3712  * @QCA_WLAN_VENDOR_ATTR_PACKET_FILTER_SIZE: Total Length
3713  * @QCA_WLAN_VENDOR_ATTR_PACKET_FILTER_CURRENT_OFFSET: Current offset
3714  * @QCA_WLAN_VENDOR_ATTR_PACKET_FILTER_PROGRAM: length of BPF instructions
3715  */
3716 enum qca_wlan_vendor_attr_packet_filter {
3717 	QCA_WLAN_VENDOR_ATTR_PACKET_FILTER_INVALID = 0,
3718 	QCA_WLAN_VENDOR_ATTR_SET_RESET_PACKET_FILTER,
3719 	QCA_WLAN_VENDOR_ATTR_PACKET_FILTER_VERSION,
3720 	QCA_WLAN_VENDOR_ATTR_PACKET_FILTER_ID,
3721 	QCA_WLAN_VENDOR_ATTR_PACKET_FILTER_SIZE,
3722 	QCA_WLAN_VENDOR_ATTR_PACKET_FILTER_CURRENT_OFFSET,
3723 	QCA_WLAN_VENDOR_ATTR_PACKET_FILTER_PROGRAM,
3724 
3725 	/* keep last */
3726 	QCA_WLAN_VENDOR_ATTR_PACKET_FILTER_AFTER_LAST,
3727 	QCA_WLAN_VENDOR_ATTR_PACKET_FILTER_MAX =
3728 	QCA_WLAN_VENDOR_ATTR_PACKET_FILTER_AFTER_LAST - 1,
3729 };
3730 
3731 /**
3732  * enum qca_wlan_vendor_attr_wake_stats - wake lock stats
3733  * @QCA_WLAN_VENDOR_ATTR_GET_WAKE_STATS_INVALID: invalid
3734  * @QCA_WLAN_VENDOR_ATTR_TOTAL_CMD_EVENT_WAKE:
3735  * @QCA_WLAN_VENDOR_ATTR_CMD_EVENT_WAKE_CNT_PTR:
3736  * @QCA_WLAN_VENDOR_ATTR_CMD_EVENT_WAKE_CNT_SZ:
3737  * @QCA_WLAN_VENDOR_ATTR_TOTAL_DRIVER_FW_LOCAL_WAKE:
3738  * @QCA_WLAN_VENDOR_ATTR_DRIVER_FW_LOCAL_WAKE_CNT_PTR:
3739  * @QCA_WLAN_VENDOR_ATTR_DRIVER_FW_LOCAL_WAKE_CNT_SZ:
3740  * @QCA_WLAN_VENDOR_ATTR_TOTAL_RX_DATA_WAKE:
3741  * total rx wakeup count
3742  * @QCA_WLAN_VENDOR_ATTR_RX_UNICAST_CNT:
3743  * Total rx unicast packet which woke up host
3744  * @QCA_WLAN_VENDOR_ATTR_RX_MULTICAST_CNT:
3745  * Total rx multicast packet which woke up host
3746  * @QCA_WLAN_VENDOR_ATTR_RX_BROADCAST_CNT:
3747  * Total rx broadcast packet which woke up host
3748  * @QCA_WLAN_VENDOR_ATTR_ICMP_PKT:
3749  * wake icmp packet count
3750  * @QCA_WLAN_VENDOR_ATTR_ICMP6_PKT:
3751  * wake icmp6 packet count
3752  * @QCA_WLAN_VENDOR_ATTR_ICMP6_RA:
3753  * wake icmp6 RA packet count
3754  * @QCA_WLAN_VENDOR_ATTR_ICMP6_NA:
3755  * wake icmp6 NA packet count
3756  * @QCA_WLAN_VENDOR_ATTR_ICMP6_NS:
3757  * wake icmp6 NS packet count
3758  * @QCA_WLAN_VENDOR_ATTR_ICMP4_RX_MULTICAST_CNT:
3759  * Rx wake packet count due to ipv4 multicast
3760  * @QCA_WLAN_VENDOR_ATTR_ICMP6_RX_MULTICAST_CNT:
3761  * Rx wake packet count due to ipv6 multicast
3762  * @QCA_WLAN_VENDOR_ATTR_OTHER_RX_MULTICAST_CNT:
3763  * Rx wake packet count due to non-ipv4 and non-ipv6 packets
3764  * @QCA_WLAN_VENDOR_ATTR_RSSI_BREACH_CNT:
3765  * wake rssi breach packet count
3766  * @QCA_WLAN_VENDOR_ATTR_LOW_RSSI_CNT:
3767  * wake low rssi packet count
3768  * @QCA_WLAN_VENDOR_ATTR_GSCAN_CNT:
3769  * wake gscan packet count
3770  * @QCA_WLAN_VENDOR_ATTR_PNO_COMPLETE_CNT:
3771  * wake pno complete packet count
3772  * @QCA_WLAN_VENDOR_ATTR_PNO_MATCH_CNT:
3773  * wake pno match packet count
3774  */
3775 enum qca_wlan_vendor_attr_wake_stats {
3776 	QCA_WLAN_VENDOR_ATTR_GET_WAKE_STATS_INVALID = 0,
3777 	QCA_WLAN_VENDOR_ATTR_TOTAL_CMD_EVENT_WAKE,
3778 	QCA_WLAN_VENDOR_ATTR_CMD_EVENT_WAKE_CNT_PTR,
3779 	QCA_WLAN_VENDOR_ATTR_CMD_EVENT_WAKE_CNT_SZ,
3780 	QCA_WLAN_VENDOR_ATTR_TOTAL_DRIVER_FW_LOCAL_WAKE,
3781 	QCA_WLAN_VENDOR_ATTR_DRIVER_FW_LOCAL_WAKE_CNT_PTR,
3782 	QCA_WLAN_VENDOR_ATTR_DRIVER_FW_LOCAL_WAKE_CNT_SZ,
3783 	QCA_WLAN_VENDOR_ATTR_TOTAL_RX_DATA_WAKE,
3784 	QCA_WLAN_VENDOR_ATTR_RX_UNICAST_CNT,
3785 	QCA_WLAN_VENDOR_ATTR_RX_MULTICAST_CNT,
3786 	QCA_WLAN_VENDOR_ATTR_RX_BROADCAST_CNT,
3787 	QCA_WLAN_VENDOR_ATTR_ICMP_PKT,
3788 	QCA_WLAN_VENDOR_ATTR_ICMP6_PKT,
3789 	QCA_WLAN_VENDOR_ATTR_ICMP6_RA,
3790 	QCA_WLAN_VENDOR_ATTR_ICMP6_NA,
3791 	QCA_WLAN_VENDOR_ATTR_ICMP6_NS,
3792 	QCA_WLAN_VENDOR_ATTR_ICMP4_RX_MULTICAST_CNT,
3793 	QCA_WLAN_VENDOR_ATTR_ICMP6_RX_MULTICAST_CNT,
3794 	QCA_WLAN_VENDOR_ATTR_OTHER_RX_MULTICAST_CNT,
3795 	QCA_WLAN_VENDOR_ATTR_RSSI_BREACH_CNT,
3796 	QCA_WLAN_VENDOR_ATTR_LOW_RSSI_CNT,
3797 	QCA_WLAN_VENDOR_ATTR_GSCAN_CNT,
3798 	QCA_WLAN_VENDOR_ATTR_PNO_COMPLETE_CNT,
3799 	QCA_WLAN_VENDOR_ATTR_PNO_MATCH_CNT,
3800 	/* keep last */
3801 	QCA_WLAN_VENDOR_GET_WAKE_STATS_AFTER_LAST,
3802 	QCA_WLAN_VENDOR_GET_WAKE_STATS_MAX =
3803 		QCA_WLAN_VENDOR_GET_WAKE_STATS_AFTER_LAST - 1,
3804 };
3805 
3806 /**
3807  * enum qca_vendor_element_id - QCA Vendor Specific element types
3808  *
3809  * These values are used to identify QCA Vendor Specific elements. The
3810  * payload of the element starts with the three octet OUI (OUI_QCA) and
3811  * is followed by a single octet type which is defined by this enum.
3812  *
3813  * @QCA_VENDOR_ELEM_P2P_PREF_CHAN_LIST: P2P preferred channel list.
3814  *      This element can be used to specify preference order for supported
3815  *      channels. The channels in this list are in preference order (the first
3816  *      one has the highest preference) and are described as a pair of
3817  *      (global) Operating Class and Channel Number (each one octet) fields.
3818  *
3819  *      This extends the standard P2P functionality by providing option to have
3820  *      more than one preferred operating channel. When this element is present,
3821  *      it replaces the preference indicated in the Operating Channel attribute.
3822  *      For supporting other implementations, the Operating Channel attribute is
3823  *      expected to be used with the highest preference channel. Similarly, all
3824  *      the channels included in this Preferred channel list element are
3825  *      expected to be included in the Channel List attribute.
3826  *
3827  *      This vendor element may be included in GO Negotiation Request, P2P
3828  *      Invitation Request, and Provision Discovery Request frames.
3829  *
3830  * @QCA_VENDOR_ELEM_HE_CAPAB: HE Capabilities element.
3831  *      This element can be used for pre-standard publication testing of HE
3832  *      before P802.11ax draft assigns the element ID. The payload of this
3833  *      vendor specific element is defined by the latest P802.11ax draft.
3834  *      Please note that the draft is still work in progress and this element
3835  *      payload is subject to change.
3836  *
3837  * @QCA_VENDOR_ELEM_HE_OPER: HE Operation element.
3838  *      This element can be used for pre-standard publication testing of HE
3839  *      before P802.11ax draft assigns the element ID. The payload of this
3840  *      vendor specific element is defined by the latest P802.11ax draft.
3841  *      Please note that the draft is still work in progress and this element
3842  *      payload is subject to change.
3843  *
3844  * @QCA_VENDOR_ELEM_RAPS: RAPS element (OFDMA-based Random Access Parameter Set
3845  *      element).
3846  *      This element can be used for pre-standard publication testing of HE
3847  *      before P802.11ax draft assigns the element ID extension. The payload of
3848  *      this vendor specific element is defined by the latest P802.11ax draft
3849  *      (not including the Element ID Extension field). Please note that the
3850  *      draft is still work in progress and this element payload is subject to
3851  *      change.
3852  *
3853  * @QCA_VENDOR_ELEM_MU_EDCA_PARAMS: MU EDCA Parameter Set element.
3854  *      This element can be used for pre-standard publication testing of HE
3855  *      before P802.11ax draft assigns the element ID extension. The payload of
3856  *      this vendor specific element is defined by the latest P802.11ax draft
3857  *      (not including the Element ID Extension field). Please note that the
3858  *      draft is still work in progress and this element payload is subject to
3859  *      change.
3860  *
3861  * @QCA_VENDOR_ELEM_BSS_COLOR_CHANGE: BSS Color Change Announcement element.
3862  *      This element can be used for pre-standard publication testing of HE
3863  *      before P802.11ax draft assigns the element ID extension. The payload of
3864  *      this vendor specific element is defined by the latest P802.11ax draft
3865  *      (not including the Element ID Extension field). Please note that the
3866  *      draft is still work in progress and this element payload is subject to
3867  *      change.
3868  */
3869 enum qca_vendor_element_id {
3870 	QCA_VENDOR_ELEM_P2P_PREF_CHAN_LIST = 0,
3871 	QCA_VENDOR_ELEM_HE_CAPAB = 1,
3872 	QCA_VENDOR_ELEM_HE_OPER = 2,
3873 	QCA_VENDOR_ELEM_RAPS = 3,
3874 	QCA_VENDOR_ELEM_MU_EDCA_PARAMS = 4,
3875 	QCA_VENDOR_ELEM_BSS_COLOR_CHANGE = 5,
3876 };
3877 
3878 /**
3879  * enum qca_vendor_attr_get_tsf: Vendor attributes for TSF capture
3880  * @QCA_WLAN_VENDOR_ATTR_TSF_INVALID: Invalid attribute value
3881  * @QCA_WLAN_VENDOR_ATTR_TSF_CMD: enum qca_tsf_operation (u32)
3882  * @QCA_WLAN_VENDOR_ATTR_TSF_TIMER_VALUE: Unsigned 64 bit TSF timer value
3883  * @QCA_WLAN_VENDOR_ATTR_TSF_SOC_TIMER_VALUE: Unsigned 64 bit Synchronized
3884  *	SOC timer value at TSF capture
3885  * @QCA_WLAN_VENDOR_ATTR_TSF_AFTER_LAST: after last
3886  * @QCA_WLAN_VENDOR_ATTR_TSF_MAX: Max value
3887  */
3888 enum qca_vendor_attr_tsf_cmd {
3889 	QCA_WLAN_VENDOR_ATTR_TSF_INVALID = 0,
3890 	QCA_WLAN_VENDOR_ATTR_TSF_CMD,
3891 	QCA_WLAN_VENDOR_ATTR_TSF_TIMER_VALUE,
3892 	QCA_WLAN_VENDOR_ATTR_TSF_SOC_TIMER_VALUE,
3893 	QCA_WLAN_VENDOR_ATTR_TSF_AFTER_LAST,
3894 	QCA_WLAN_VENDOR_ATTR_TSF_MAX =
3895 		QCA_WLAN_VENDOR_ATTR_TSF_AFTER_LAST - 1
3896 };
3897 
3898 /**
3899  * enum qca_tsf_operation: TSF driver commands
3900  * @QCA_TSF_CAPTURE: Initiate TSF Capture
3901  * @QCA_TSF_GET: Get TSF capture value
3902  * @QCA_TSF_SYNC_GET: Initiate TSF capture and return with captured value
3903  */
3904 enum qca_tsf_cmd {
3905 	QCA_TSF_CAPTURE,
3906 	QCA_TSF_GET,
3907 	QCA_TSF_SYNC_GET,
3908 };
3909 
3910 /**
3911  * enum qca_vendor_attr_get_preferred_freq_list - get preferred channel list
3912  * @QCA_WLAN_VENDOR_ATTR_GET_PREFERRED_FREQ_LIST_INVALID: invalid value
3913  * @QCA_WLAN_VENDOR_ATTR_GET_PREFERRED_FREQ_LIST_IFACE_TYPE: interface type
3914  * @QCA_WLAN_VENDOR_ATTR_GET_PREFERRED_FREQ_LIST: preferred frequency list
3915  * @QCA_WLAN_VENDOR_ATTR_GET_PREFERRED_FREQ_LIST_AFTER_LAST: after last
3916  * @QCA_WLAN_VENDOR_ATTR_GET_PREFERRED_FREQ_LIST_MAX: max
3917  */
3918 enum qca_vendor_attr_get_preferred_freq_list {
3919 	QCA_WLAN_VENDOR_ATTR_GET_PREFERRED_FREQ_LIST_INVALID,
3920 	/* A 32-unsigned value; the interface type/mode for which the preferred
3921 	 * frequency list is requested (see enum qca_iface_type for possible
3922 	 * values); used in both south- and north-bound.
3923 	 */
3924 	QCA_WLAN_VENDOR_ATTR_GET_PREFERRED_FREQ_LIST_IFACE_TYPE,
3925 	/* An array of 32-unsigned values; values are frequency (MHz); used
3926 	 * in north-bound only.
3927 	 */
3928 	QCA_WLAN_VENDOR_ATTR_GET_PREFERRED_FREQ_LIST,
3929 	/* keep last */
3930 	QCA_WLAN_VENDOR_ATTR_GET_PREFERRED_FREQ_LIST_AFTER_LAST,
3931 	QCA_WLAN_VENDOR_ATTR_GET_PREFERRED_FREQ_LIST_MAX =
3932 		QCA_WLAN_VENDOR_ATTR_GET_PREFERRED_FREQ_LIST_AFTER_LAST - 1
3933 };
3934 
3935 /**
3936  * enum qca_vendor_attr_probable_oper_channel - channel hint
3937  * @QCA_WLAN_VENDOR_ATTR_PROBABLE_OPER_CHANNEL_INVALID: invalid value
3938  * @QCA_WLAN_VENDOR_ATTR_PROBABLE_OPER_CHANNEL_IFACE_TYPE: interface type
3939  * @QCA_WLAN_VENDOR_ATTR_PROBABLE_OPER_CHANNEL_FREQ: frequency hint value
3940  * @QCA_WLAN_VENDOR_ATTR_PROBABLE_OPER_CHANNEL_AFTER_LAST: last
3941  * @QCA_WLAN_VENDOR_ATTR_PROBABLE_OPER_CHANNEL_MAX: max
3942  */
3943 enum qca_vendor_attr_probable_oper_channel {
3944 	QCA_WLAN_VENDOR_ATTR_PROBABLE_OPER_CHANNEL_INVALID,
3945 	/* 32-bit unsigned value; indicates the connection/iface type likely to
3946 	 * come on this channel (see enum qca_iface_type).
3947 	 */
3948 	QCA_WLAN_VENDOR_ATTR_PROBABLE_OPER_CHANNEL_IFACE_TYPE,
3949 	/* 32-bit unsigned value; the frequency (MHz) of the probable channel */
3950 	QCA_WLAN_VENDOR_ATTR_PROBABLE_OPER_CHANNEL_FREQ,
3951 	/* keep last */
3952 	QCA_WLAN_VENDOR_ATTR_PROBABLE_OPER_CHANNEL_AFTER_LAST,
3953 	QCA_WLAN_VENDOR_ATTR_PROBABLE_OPER_CHANNEL_MAX =
3954 		QCA_WLAN_VENDOR_ATTR_PROBABLE_OPER_CHANNEL_AFTER_LAST - 1
3955 };
3956 
3957 /**
3958  * enum qca_wlan_vendor_attr_gw_param_config - gateway param config
3959  * @QCA_WLAN_VENDOR_ATTR_GW_PARAM_CONFIG_INVALID: Invalid
3960  * @QCA_WLAN_VENDOR_ATTR_GW_PARAM_CONFIG_GW_MAC_ADDR: gateway mac addr
3961  * @QCA_WLAN_VENDOR_ATTR_GW_PARAM_CONFIG_IPV4_ADDR: ipv4 addr
3962  * @QCA_WLAN_VENDOR_ATTR_GW_PARAM_CONFIG_IPV6_ADDR: ipv6 addr
3963  */
3964 enum qca_wlan_vendor_attr_gw_param_config {
3965 	QCA_WLAN_VENDOR_ATTR_GW_PARAM_CONFIG_INVALID = 0,
3966 	QCA_WLAN_VENDOR_ATTR_GW_PARAM_CONFIG_GW_MAC_ADDR,
3967 	QCA_WLAN_VENDOR_ATTR_GW_PARAM_CONFIG_IPV4_ADDR,
3968 	QCA_WLAN_VENDOR_ATTR_GW_PARAM_CONFIG_IPV6_ADDR,
3969 	QCA_WLAN_VENDOR_ATTR_GW_PARAM_CONFIG_AFTER_LAST,
3970 	QCA_WLAN_VENDOR_ATTR_GW_PARAM_CONFIG_MAX =
3971 		QCA_WLAN_VENDOR_ATTR_GW_PARAM_CONFIG_AFTER_LAST - 1,
3972 };
3973 
3974 /**
3975  * enum drv_dbs_capability - DBS capability
3976  * @DRV_DBS_CAPABILITY_DISABLED: DBS disabled
3977  * @DRV_DBS_CAPABILITY_1X1: 1x1
3978  * @DRV_DBS_CAPABILITY_2X2: 2x2
3979  */
3980 enum drv_dbs_capability {
3981 	DRV_DBS_CAPABILITY_DISABLED, /* not supported or disabled */
3982 	DRV_DBS_CAPABILITY_1X1,
3983 	DRV_DBS_CAPABILITY_2X2,
3984 };
3985 
3986 /**
3987  * enum qca_vendor_attr_txpower_decr_db - Attributes for TX power decrease
3988  *
3989  * These attributes are used with QCA_NL80211_VENDOR_SUBCMD_SET_TXPOWER_DECR_DB.
3990  */
3991 enum qca_vendor_attr_txpower_decr_db {
3992 	QCA_WLAN_VENDOR_ATTR_TXPOWER_DECR_DB_INVALID,
3993 	/*
3994 	 * 8-bit unsigned value to indicate the reduction of TX power in dB for
3995 	 * a virtual interface.
3996 	 */
3997 	QCA_WLAN_VENDOR_ATTR_TXPOWER_DECR_DB,
3998 	/* keep last */
3999 	QCA_WLAN_VENDOR_ATTR_TXPOWER_DECR_DB_AFTER_LAST,
4000 	QCA_WLAN_VENDOR_ATTR_TXPOWER_DECR_DB_MAX =
4001 	QCA_WLAN_VENDOR_ATTR_TXPOWER_DECR_DB_AFTER_LAST - 1
4002 };
4003 
4004 /**
4005  * enum qca_vendor_attr_ota_test - Enable OTA test
4006  * @QCA_WLAN_VENDOR_ATTR_OTA_TEST_INVALID: invalid value
4007  * @QCA_WLAN_VENDOR_ATTR_OTA_TEST_ENABLE: enable OTA test
4008  * @QCA_WLAN_VENDOR_ATTR_OTA_TEST_AFTER_LAST: after last
4009  * @QCA_WLAN_VENDOR_ATTR_OTA_TEST_MAX: max
4010  */
4011 enum qca_vendor_attr_ota_test {
4012 	QCA_WLAN_VENDOR_ATTR_OTA_TEST_INVALID,
4013 	/* 8-bit unsigned value to indicate if OTA test is enabled */
4014 	QCA_WLAN_VENDOR_ATTR_OTA_TEST_ENABLE,
4015 	/* keep last */
4016 	QCA_WLAN_VENDOR_ATTR_OTA_TEST_AFTER_LAST,
4017 	QCA_WLAN_VENDOR_ATTR_OTA_TEST_MAX =
4018 		QCA_WLAN_VENDOR_ATTR_OTA_TEST_AFTER_LAST - 1
4019 };
4020 
4021 /** enum qca_vendor_attr_txpower_scale - vendor sub commands index
4022  * @QCA_WLAN_VENDOR_ATTR_TXPOWER_SCALE_INVALID: invalid value
4023  * @QCA_WLAN_VENDOR_ATTR_TXPOWER_SCALE: scaling value
4024  * @QCA_WLAN_VENDOR_ATTR_TXPOWER_SCALE_AFTER_LAST: last value
4025  * @QCA_WLAN_VENDOR_ATTR_TXPOWER_SCALE_MAX: max value
4026  */
4027 enum qca_vendor_attr_txpower_scale {
4028 	QCA_WLAN_VENDOR_ATTR_TXPOWER_SCALE_INVALID,
4029 	/* 8-bit unsigned value to indicate the scaling of tx power */
4030 	QCA_WLAN_VENDOR_ATTR_TXPOWER_SCALE,
4031 	/* keep last */
4032 	QCA_WLAN_VENDOR_ATTR_TXPOWER_SCALE_AFTER_LAST,
4033 	QCA_WLAN_VENDOR_ATTR_TXPOWER_SCALE_MAX =
4034 		QCA_WLAN_VENDOR_ATTR_TXPOWER_SCALE_AFTER_LAST - 1
4035 };
4036 
4037 /**
4038  * enum qca_vendor_attr_txpower_scale_decr_db - vendor sub commands index
4039  * @QCA_WLAN_VENDOR_ATTR_TXPOWER_SCALE_DECR_DB_INVALID: invalid value
4040  * @QCA_WLAN_VENDOR_ATTR_TXPOWER_SCALE_DECR_DB: scaling value
4041  * @QCA_WLAN_VENDOR_ATTR_TXPOWER_SCALE_DECR_DB_AFTER_LAST: last value
4042  * @QCA_WLAN_VENDOR_ATTR_TXPOWER_SCALE_DECR_DB_MAX: max value
4043  */
4044 enum qca_vendor_attr_txpower_scale_decr_db {
4045 	QCA_WLAN_VENDOR_ATTR_TXPOWER_SCALE_DECR_DB_INVALID,
4046 	/* 8-bit unsigned value to indicate the scaling of tx power */
4047 	QCA_WLAN_VENDOR_ATTR_TXPOWER_SCALE_DECR_DB,
4048 	/* keep last */
4049 	QCA_WLAN_VENDOR_ATTR_TXPOWER_SCALE_DECR_DB_AFTER_LAST,
4050 	QCA_WLAN_VENDOR_ATTR_TXPOWER_SCALE_DECR_DB_MAX =
4051 		QCA_WLAN_VENDOR_ATTR_TXPOWER_SCALE_DECR_DB_AFTER_LAST - 1
4052 };
4053 
4054 /**
4055  * enum dfs_mode - state of DFS mode
4056  * @DFS_MODE_NONE: DFS mode attribute is none
4057  * @DFS_MODE_ENABLE:  DFS mode is enabled
4058  * @DFS_MODE_DISABLE: DFS mode is disabled
4059  * @DFS_MODE_DEPRIORITIZE: Deprioritize DFS channels in scanning
4060  */
4061 enum dfs_mode {
4062 	DFS_MODE_NONE,
4063 	DFS_MODE_ENABLE,
4064 	DFS_MODE_DISABLE,
4065 	DFS_MODE_DEPRIORITIZE
4066 };
4067 
4068 /**
4069  * enum qca_wlan_vendor_attr_acs_config - Config params for ACS
4070  * @QCA_WLAN_VENDOR_ATTR_ACS_MODE_INVALID: Invalid
4071  * @QCA_WLAN_VENDOR_ATTR_ACS_DFS_MODE: Dfs mode for ACS
4072  * QCA_WLAN_VENDOR_ATTR_ACS_CHANNEL_HINT: channel_hint for ACS
4073  * QCA_WLAN_VENDOR_ATTR_ACS_DFS_AFTER_LAST: after_last
4074  * QCA_WLAN_VENDOR_ATTR_ACS_DFS_MAX: max attribute
4075  */
4076 enum qca_wlan_vendor_attr_acs_config {
4077 	QCA_WLAN_VENDOR_ATTR_ACS_MODE_INVALID = 0,
4078 	QCA_WLAN_VENDOR_ATTR_ACS_DFS_MODE,
4079 	QCA_WLAN_VENDOR_ATTR_ACS_CHANNEL_HINT,
4080 
4081 	QCA_WLAN_VENDOR_ATTR_ACS_DFS_AFTER_LAST,
4082 	QCA_WLAN_VENDOR_ATTR_ACS_DFS_MAX =
4083 		QCA_WLAN_VENDOR_ATTR_ACS_DFS_AFTER_LAST - 1,
4084 
4085 };
4086 
4087 /**
4088  * enum qca_wlan_vendor_attr_get_hw_capability - Wi-Fi hardware capability
4089  */
4090 enum qca_wlan_vendor_attr_get_hw_capability {
4091 	QCA_WLAN_VENDOR_ATTR_HW_CAPABILITY_INVALID,
4092 	/*
4093 	 * Antenna isolation
4094 	 * An attribute used in the response.
4095 	 * The content of this attribute is encoded in a byte array. Each byte
4096 	 * value is an antenna isolation value. The array length is the number
4097 	 * of antennas.
4098 	 */
4099 	QCA_WLAN_VENDOR_ATTR_ANTENNA_ISOLATION,
4100 	/*
4101 	 * Request HW capability
4102 	 * An attribute used in the request.
4103 	 * The content of this attribute is a u32 array for one or more of
4104 	 * hardware capabilities (attribute IDs) that are being requested. Each
4105 	 * u32 value has a value from this
4106 	 * enum qca_wlan_vendor_attr_get_hw_capability
4107 	 * identifying which capabilities are requested.
4108 	 */
4109 	QCA_WLAN_VENDOR_ATTR_GET_HW_CAPABILITY,
4110 
4111 	/* keep last */
4112 	QCA_WLAN_VENDOR_ATTR_HW_CAPABILITY_AFTER_LAST,
4113 	QCA_WLAN_VENDOR_ATTR_HW_CAPABILITY_MAX =
4114 	QCA_WLAN_VENDOR_ATTR_HW_CAPABILITY_AFTER_LAST - 1,
4115 };
4116 
4117 /**
4118  * enum qca_wlan_vendor_attr_sta_connect_roam_policy_config -
4119  *                        config params for sta roam policy
4120  * @QCA_WLAN_VENDOR_ATTR_STA_CONNECT_ROAM_POLICY_INVALID: Invalid
4121  * @QCA_WLAN_VENDOR_ATTR_STA_DFS_MODE: If sta should skip Dfs channels
4122  * @QCA_WLAN_VENDOR_ATTR_STA_SKIP_UNSAFE_CHANNEL:
4123  * If sta should skip unsafe channels or not in scanning
4124  * @QCA_WLAN_VENDOR_ATTR_STA_CONNECT_ROAM_POLICY_LAST:
4125  * @QCA_WLAN_VENDOR_ATTR_STA_CONNECT_ROAM_POLICY_MAX: max attribute
4126  */
4127 enum qca_wlan_vendor_attr_sta_connect_roam_policy_config {
4128 	QCA_WLAN_VENDOR_ATTR_STA_CONNECT_ROAM_POLICY_INVALID = 0,
4129 	QCA_WLAN_VENDOR_ATTR_STA_DFS_MODE,
4130 	QCA_WLAN_VENDOR_ATTR_STA_SKIP_UNSAFE_CHANNEL,
4131 
4132 	QCA_WLAN_VENDOR_ATTR_STA_CONNECT_ROAM_POLICY_AFTER_LAST,
4133 	QCA_WLAN_VENDOR_ATTR_STA_CONNECT_ROAM_POLICY_MAX =
4134 	QCA_WLAN_VENDOR_ATTR_STA_CONNECT_ROAM_POLICY_AFTER_LAST - 1,
4135 };
4136 
4137 /* Attributes for FTM commands and events */
4138 
4139 /**
4140  * enum qca_wlan_vendor_attr_loc_capa - Indoor location capabilities
4141  *
4142  * @QCA_WLAN_VENDOR_ATTR_LOC_CAPA_FLAGS: Various flags. See
4143  *      enum qca_wlan_vendor_attr_loc_capa_flags.
4144  * @QCA_WLAN_VENDOR_ATTR_FTM_CAPA_MAX_NUM_SESSIONS: Maximum number
4145  *      of measurement sessions that can run concurrently.
4146  *      Default is one session (no session concurrency).
4147  * @QCA_WLAN_VENDOR_ATTR_FTM_CAPA_MAX_NUM_PEERS: The total number of unique
4148  *      peers that are supported in running sessions. For example,
4149  *      if the value is 8 and maximum number of sessions is 2, you can
4150  *      have one session with 8 unique peers, or 2 sessions with 4 unique
4151  *      peers each, and so on.
4152  * @QCA_WLAN_VENDOR_ATTR_FTM_CAPA_MAX_NUM_BURSTS_EXP: Maximum number
4153  *      of bursts per peer, as an exponent (2^value). Default is 0,
4154  *      meaning no multi-burst support.
4155  * @QCA_WLAN_VENDOR_ATTR_FTM_CAPA_MAX_MEAS_PER_BURST: Maximum number
4156  *      of measurement exchanges allowed in a single burst.
4157  * @QCA_WLAN_VENDOR_ATTR_AOA_CAPA_SUPPORTED_TYPES: Supported AOA measurement
4158  *      types. A bit mask (unsigned 32 bit value), each bit corresponds
4159  *      to an AOA type as defined by enum qca_vendor_attr_aoa_type.
4160  */
4161 enum qca_wlan_vendor_attr_loc_capa {
4162 	QCA_WLAN_VENDOR_ATTR_LOC_CAPA_INVALID,
4163 	QCA_WLAN_VENDOR_ATTR_LOC_CAPA_FLAGS,
4164 	QCA_WLAN_VENDOR_ATTR_FTM_CAPA_MAX_NUM_SESSIONS,
4165 	QCA_WLAN_VENDOR_ATTR_FTM_CAPA_MAX_NUM_PEERS,
4166 	QCA_WLAN_VENDOR_ATTR_FTM_CAPA_MAX_NUM_BURSTS_EXP,
4167 	QCA_WLAN_VENDOR_ATTR_FTM_CAPA_MAX_MEAS_PER_BURST,
4168 	QCA_WLAN_VENDOR_ATTR_AOA_CAPA_SUPPORTED_TYPES,
4169 	/* keep last */
4170 	QCA_WLAN_VENDOR_ATTR_LOC_CAPA_AFTER_LAST,
4171 	QCA_WLAN_VENDOR_ATTR_LOC_CAPA_MAX =
4172 	QCA_WLAN_VENDOR_ATTR_LOC_CAPA_AFTER_LAST - 1,
4173 };
4174 
4175 /**
4176  * enum qca_wlan_vendor_attr_loc_capa_flags: Indoor location capability flags
4177  *
4178  * @QCA_WLAN_VENDOR_ATTR_LOC_CAPA_FLAG_FTM_RESPONDER: Set if driver
4179  *      can be configured as an FTM responder (for example, an AP that
4180  *      services FTM requests). QCA_NL80211_VENDOR_SUBCMD_FTM_CFG_RESPONDER
4181  *      will be supported if set.
4182  * @QCA_WLAN_VENDOR_ATTR_LOC_CAPA_FLAG_FTM_INITIATOR: Set if driver
4183  *      can run FTM sessions. QCA_NL80211_VENDOR_SUBCMD_FTM_START_SESSION
4184  *      will be supported if set.
4185 * @QCA_WLAN_VENDOR_ATTR_LOC_CAPA_FLAG_ASAP: Set if FTM responder
4186  *      supports immediate (ASAP) response.
4187  * @QCA_WLAN_VENDOR_ATTR_LOC_CAPA_FLAG_AOA: Set if driver supports standalone
4188  *      AOA measurement using QCA_NL80211_VENDOR_SUBCMD_AOA_MEAS.
4189  * @QCA_WLAN_VENDOR_ATTR_LOC_CAPA_FLAG_AOA_IN_FTM: Set if driver supports
4190  *      requesting AOA measurements as part of an FTM session.
4191  */
4192 enum qca_wlan_vendor_attr_loc_capa_flags {
4193 	QCA_WLAN_VENDOR_ATTR_LOC_CAPA_FLAG_FTM_RESPONDER = 1 << 0,
4194 	QCA_WLAN_VENDOR_ATTR_LOC_CAPA_FLAG_FTM_INITIATOR = 1 << 1,
4195 	QCA_WLAN_VENDOR_ATTR_LOC_CAPA_FLAG_ASAP = 1 << 2,
4196 	QCA_WLAN_VENDOR_ATTR_LOC_CAPA_FLAG_AOA = 1 << 3,
4197 	QCA_WLAN_VENDOR_ATTR_LOC_CAPA_FLAG_AOA_IN_FTM = 1 << 4,
4198 };
4199 
4200 /**
4201  * enum qca_wlan_vendor_attr_sap_config - config params for sap configuration
4202  * @QCA_WLAN_VENDOR_ATTR_SAP_CONFIG_INVALID: invalid
4203  * @QCA_WLAN_VENDOR_ATTR_SAP_CONFIG_CHANNEL: Channel on which SAP should start
4204  * @QCA_WLAN_VENDOR_ATTR_SAP_MANDATORY_FREQUENCY_LIST: List of frequencies on
4205  *  which AP is expected to operate. This is irrespective of ACS configuration.
4206  *  This list is a priority based one and is looked for before the AP is created
4207  *  to ensure the best concurrency sessions (avoid MCC and use DBS/SCC) co-exist
4208  *  in the system.
4209  * @QCA_WLAN_VENDOR_ATTR_SAP_CONFIG_AFTER_LAST: after last
4210  * @QCA_WLAN_VENDOR_ATTR_SAP_CONFIG_MAX: max attribute
4211  */
4212 enum qca_wlan_vendor_attr_sap_config {
4213 	QCA_WLAN_VENDOR_ATTR_SAP_CONFIG_INVALID = 0,
4214 	QCA_WLAN_VENDOR_ATTR_SAP_CONFIG_CHANNEL,
4215 	QCA_WLAN_VENDOR_ATTR_SAP_MANDATORY_FREQUENCY_LIST = 2,
4216 	/* keep last */
4217 	QCA_WLAN_VENDOR_ATTR_SAP_CONFIG_AFTER_LAST,
4218 	QCA_WLAN_VENDOR_ATTR_SAP_CONFIG_MAX =
4219 	QCA_WLAN_VENDOR_ATTR_SAP_CONFIG_AFTER_LAST - 1,
4220 };
4221 
4222 /**
4223  * enum qca_wlan_vendor_attr_ftm_peer_info: Information about
4224  * a single peer in a measurement session.
4225  *
4226  * @QCA_WLAN_VENDOR_ATTR_FTM_PEER_MAC_ADDR: The MAC address of the peer.
4227  * @QCA_WLAN_VENDOR_ATTR_FTM_PEER_MEAS_FLAGS: Various flags related
4228  *      to measurement. See enum qca_wlan_vendor_attr_ftm_peer_meas_flags.
4229  * @QCA_WLAN_VENDOR_ATTR_FTM_PEER_MEAS_PARAMS: Nested attribute of
4230  *      FTM measurement parameters, as specified by IEEE P802.11-REVmc/D7.0
4231  *      9.4.2.167. See enum qca_wlan_vendor_attr_ftm_meas_param for
4232  *      list of supported attributes.
4233  * @QCA_WLAN_VENDOR_ATTR_FTM_PEER_SECURE_TOKEN_ID: Initial token ID for
4234  *      secure measurement.
4235  * @QCA_WLAN_VENDOR_ATTR_FTM_PEER_AOA_BURST_PERIOD: Request AOA
4236  *      measurement every <value> bursts. If 0 or not specified,
4237  *      AOA measurements will be disabled for this peer.
4238  * @QCA_WLAN_VENDOR_ATTR_FTM_PEER_FREQ: Frequency in MHz where
4239  *      the measurement frames are exchanged. Optional; if not
4240  *      specified, try to locate the peer in the kernel scan
4241  *      results cache and use frequency from there.
4242  */
4243 enum qca_wlan_vendor_attr_ftm_peer_info {
4244 	QCA_WLAN_VENDOR_ATTR_FTM_PEER_INVALID,
4245 	QCA_WLAN_VENDOR_ATTR_FTM_PEER_MAC_ADDR,
4246 	QCA_WLAN_VENDOR_ATTR_FTM_PEER_MEAS_FLAGS,
4247 	QCA_WLAN_VENDOR_ATTR_FTM_PEER_MEAS_PARAMS,
4248 	QCA_WLAN_VENDOR_ATTR_FTM_PEER_SECURE_TOKEN_ID,
4249 	QCA_WLAN_VENDOR_ATTR_FTM_PEER_AOA_BURST_PERIOD,
4250 	QCA_WLAN_VENDOR_ATTR_FTM_PEER_FREQ,
4251 	/* keep last */
4252 	QCA_WLAN_VENDOR_ATTR_FTM_PEER_AFTER_LAST,
4253 	QCA_WLAN_VENDOR_ATTR_FTM_PEER_MAX =
4254 	QCA_WLAN_VENDOR_ATTR_FTM_PEER_AFTER_LAST - 1,
4255 };
4256 
4257 /**
4258  * enum qca_wlan_vendor_attr_ftm_peer_meas_flags: Measurement request flags,
4259  *      per-peer
4260  *
4261  * @QCA_WLAN_VENDOR_ATTR_FTM_PEER_MEAS_FLAG_ASAP: If set, request
4262  *      immediate (ASAP) response from peer.
4263  * @QCA_WLAN_VENDOR_ATTR_FTM_PEER_MEAS_FLAG_LCI: If set, request
4264  *      LCI report from peer. The LCI report includes the absolute
4265  *      location of the peer in "official" coordinates (similar to GPS).
4266  *      See IEEE P802.11-REVmc/D7.0, 11.24.6.7 for more information.
4267  * @QCA_WLAN_VENDOR_ATTR_FTM_PEER_MEAS_FLAG_LCR: If set, request
4268  *      Location civic report from peer. The LCR includes the location
4269  *      of the peer in free-form format. See IEEE P802.11-REVmc/D7.0,
4270  *      11.24.6.7 for more information.
4271  * @QCA_WLAN_VENDOR_ATTR_FTM_PEER_MEAS_FLAG_SECURE: If set,
4272  *      request a secure measurement.
4273  *      QCA_WLAN_VENDOR_ATTR_FTM_PEER_SECURE_TOKEN_ID must also be provided.
4274  */
4275 enum qca_wlan_vendor_attr_ftm_peer_meas_flags {
4276 	QCA_WLAN_VENDOR_ATTR_FTM_PEER_MEAS_FLAG_ASAP    = 1 << 0,
4277 	QCA_WLAN_VENDOR_ATTR_FTM_PEER_MEAS_FLAG_LCI     = 1 << 1,
4278 	QCA_WLAN_VENDOR_ATTR_FTM_PEER_MEAS_FLAG_LCR     = 1 << 2,
4279 	QCA_WLAN_VENDOR_ATTR_FTM_PEER_MEAS_FLAG_SECURE  = 1 << 3,
4280 };
4281 
4282 /**
4283  * enum qca_wlan_vendor_attr_ftm_meas_param: Measurement parameters
4284  *
4285  * @QCA_WLAN_VENDOR_ATTR_FTM_PARAM_MEAS_PER_BURST: Number of measurements
4286  *      to perform in a single burst.
4287  * @QCA_WLAN_VENDOR_ATTR_FTM_PARAM_NUM_BURSTS_EXP: Number of bursts to
4288  *      perform, specified as an exponent (2^value).
4289  * @QCA_WLAN_VENDOR_ATTR_FTM_PARAM_BURST_DURATION: Duration of burst
4290  *      instance, as specified in IEEE P802.11-REVmc/D7.0, 9.4.2.167.
4291  * @QCA_WLAN_VENDOR_ATTR_FTM_PARAM_BURST_PERIOD: Time between bursts,
4292  *      as specified in IEEE P802.11-REVmc/D7.0, 9.4.2.167. Must
4293  *      be larger than QCA_WLAN_VENDOR_ATTR_FTM_PARAM_BURST_DURATION.
4294  */
4295 enum qca_wlan_vendor_attr_ftm_meas_param {
4296 	QCA_WLAN_VENDOR_ATTR_FTM_PARAM_INVALID,
4297 	QCA_WLAN_VENDOR_ATTR_FTM_PARAM_MEAS_PER_BURST,
4298 	QCA_WLAN_VENDOR_ATTR_FTM_PARAM_NUM_BURSTS_EXP,
4299 	QCA_WLAN_VENDOR_ATTR_FTM_PARAM_BURST_DURATION,
4300 	QCA_WLAN_VENDOR_ATTR_FTM_PARAM_BURST_PERIOD,
4301 	/* keep last */
4302 	QCA_WLAN_VENDOR_ATTR_FTM_PARAM_AFTER_LAST,
4303 	QCA_WLAN_VENDOR_ATTR_FTM_PARAM_MAX =
4304 	QCA_WLAN_VENDOR_ATTR_FTM_PARAM_AFTER_LAST - 1,
4305 };
4306 
4307 /**
4308  * enum qca_wlan_vendor_attr_ftm_peer_result: Per-peer results
4309  *
4310  * @QCA_WLAN_VENDOR_ATTR_FTM_PEER_RES_MAC_ADDR: MAC address of the reported
4311  *       peer.
4312  * @QCA_WLAN_VENDOR_ATTR_FTM_PEER_RES_STATUS: Status of measurement
4313  *      request for this peer.
4314  *      See enum qca_wlan_vendor_attr_ftm_peer_result_status.
4315  * @QCA_WLAN_VENDOR_ATTR_FTM_PEER_RES_FLAGS: Various flags related
4316  *      to measurement results for this peer.
4317  *      See enum qca_wlan_vendor_attr_ftm_peer_result_flags.
4318  * @QCA_WLAN_VENDOR_ATTR_FTM_PEER_RES_VALUE_SECONDS: Specified when
4319  *      request failed and peer requested not to send an additional request
4320  *      for this number of seconds.
4321  * @QCA_WLAN_VENDOR_ATTR_FTM_PEER_RES_LCI: LCI report when received
4322  *      from peer. In the format specified by IEEE P802.11-REVmc/D7.0,
4323  *      9.4.2.22.10.
4324  * @QCA_WLAN_VENDOR_ATTR_FTM_PEER_RES_LCR: Location civic report when
4325  *      received from peer. In the format specified by IEEE P802.11-REVmc/D7.0,
4326  *      9.4.2.22.13.
4327  * @QCA_WLAN_VENDOR_ATTR_FTM_PEER_RES_MEAS_PARAMS: Reported when peer
4328  *      overridden some measurement request parameters. See
4329  *      enum qca_wlan_vendor_attr_ftm_meas_param.
4330  * @QCA_WLAN_VENDOR_ATTR_FTM_PEER_RES_AOA_MEAS: AOA measurement
4331  *      for this peer. Same contents as @QCA_WLAN_VENDOR_ATTR_AOA_MEAS_RESULT.
4332  * @QCA_WLAN_VENDOR_ATTR_FTM_PEER_RES_MEAS: Array of measurement
4333  *      results. Each entry is a nested attribute defined
4334  *      by enum qca_wlan_vendor_attr_ftm_meas.
4335  */
4336 enum qca_wlan_vendor_attr_ftm_peer_result {
4337 	QCA_WLAN_VENDOR_ATTR_FTM_PEER_RES_INVALID,
4338 	QCA_WLAN_VENDOR_ATTR_FTM_PEER_RES_MAC_ADDR,
4339 	QCA_WLAN_VENDOR_ATTR_FTM_PEER_RES_STATUS,
4340 	QCA_WLAN_VENDOR_ATTR_FTM_PEER_RES_FLAGS,
4341 	QCA_WLAN_VENDOR_ATTR_FTM_PEER_RES_VALUE_SECONDS,
4342 	QCA_WLAN_VENDOR_ATTR_FTM_PEER_RES_LCI,
4343 	QCA_WLAN_VENDOR_ATTR_FTM_PEER_RES_LCR,
4344 	QCA_WLAN_VENDOR_ATTR_FTM_PEER_RES_MEAS_PARAMS,
4345 	QCA_WLAN_VENDOR_ATTR_FTM_PEER_RES_AOA_MEAS,
4346 	QCA_WLAN_VENDOR_ATTR_FTM_PEER_RES_MEAS,
4347 	/* keep last */
4348 	QCA_WLAN_VENDOR_ATTR_FTM_PEER_RES_AFTER_LAST,
4349 	QCA_WLAN_VENDOR_ATTR_FTM_PEER_RES_MAX =
4350 	QCA_WLAN_VENDOR_ATTR_FTM_PEER_RES_AFTER_LAST - 1,
4351 };
4352 
4353 /**
4354  * enum qca_wlan_vendor_attr_ftm_peer_result_status
4355  *
4356  * @QCA_WLAN_VENDOR_ATTR_FTM_PEER_RES_STATUS_OK: Request sent ok and results
4357  *      will be provided. Peer may have overridden some measurement parameters,
4358  *      in which case overridden parameters will be report by
4359  *      QCA_WLAN_VENDOR_ATTR_FTM_PEER_RES_MEAS_PARAM attribute.
4360  * @QCA_WLAN_VENDOR_ATTR_FTM_PEER_RES_STATUS_INCAPABLE: Peer is incapable
4361  *      of performing the measurement request. No more results will be sent
4362  *      for this peer in this session.
4363  * @QCA_WLAN_VENDOR_ATTR_FTM_PEER_RES_STATUS_FAILED: Peer reported request
4364  *      failed, and requested not to send an additional request for number
4365  *      of seconds specified by QCA_WLAN_VENDOR_ATTR_FTM_PEER_RES_VALUE_SECONDS
4366  *      attribute.
4367  * @QCA_WLAN_VENDOR_ATTR_FTM_PEER_RES_STATUS_INVALID: Request validation
4368  *      failed. Request was not sent over the air.
4369  */
4370 enum qca_wlan_vendor_attr_ftm_peer_result_status {
4371 	QCA_WLAN_VENDOR_ATTR_FTM_PEER_RES_STATUS_OK,
4372 	QCA_WLAN_VENDOR_ATTR_FTM_PEER_RES_STATUS_INCAPABLE,
4373 	QCA_WLAN_VENDOR_ATTR_FTM_PEER_RES_STATUS_FAILED,
4374 	QCA_WLAN_VENDOR_ATTR_FTM_PEER_RES_STATUS_INVALID,
4375 };
4376 
4377 /**
4378  * enum qca_wlan_vendor_attr_ftm_peer_result_flags: Various flags
4379  *  for measurement result, per-peer
4380  *
4381  * @QCA_WLAN_VENDOR_ATTR_FTM_PEER_RES_FLAG_DONE: If set,
4382  *      measurement completed for this peer. No more results will be reported
4383  *      for this peer in this session.
4384  */
4385 enum qca_wlan_vendor_attr_ftm_peer_result_flags {
4386 	QCA_WLAN_VENDOR_ATTR_FTM_PEER_RES_FLAG_DONE = 1 << 0,
4387 };
4388 
4389 /**
4390  * enum qca_vendor_attr_loc_session_status: Session completion status code
4391  *
4392  * @QCA_WLAN_VENDOR_ATTR_LOC_SESSION_STATUS_OK: Session completed
4393  *      successfully.
4394  * @QCA_WLAN_VENDOR_ATTR_LOC_SESSION_STATUS_ABORTED: Session aborted
4395  *      by request.
4396  * @QCA_WLAN_VENDOR_ATTR_LOC_SESSION_STATUS_INVALID: Session request
4397  *      was invalid and was not started.
4398  * @QCA_WLAN_VENDOR_ATTR_LOC_SESSION_STATUS_FAILED: Session had an error
4399  *      and did not complete normally (for example out of resources).
4400  */
4401 enum qca_vendor_attr_loc_session_status {
4402 	QCA_WLAN_VENDOR_ATTR_LOC_SESSION_STATUS_OK,
4403 	QCA_WLAN_VENDOR_ATTR_LOC_SESSION_STATUS_ABORTED,
4404 	QCA_WLAN_VENDOR_ATTR_LOC_SESSION_STATUS_INVALID,
4405 	QCA_WLAN_VENDOR_ATTR_LOC_SESSION_STATUS_FAILED,
4406 };
4407 
4408 /**
4409  * enum qca_wlan_vendor_attr_ftm_meas: Single measurement data
4410  *
4411  * @QCA_WLAN_VENDOR_ATTR_FTM_MEAS_T1: Time of departure (TOD) of FTM packet as
4412  *      recorded by responder, in picoseconds.
4413  *      See IEEE P802.11-REVmc/D7.0, 11.24.6.4 for more information.
4414  * @QCA_WLAN_VENDOR_ATTR_FTM_MEAS_T2: Time of arrival (TOA) of FTM packet at
4415  *      initiator, in picoseconds.
4416  *      See IEEE P802.11-REVmc/D7.0, 11.24.6.4 for more information.
4417  * @QCA_WLAN_VENDOR_ATTR_FTM_MEAS_T3: TOD of ACK packet as recorded by
4418  *      initiator, in picoseconds.
4419  *      See IEEE P802.11-REVmc/D7.0, 11.24.6.4 for more information.
4420  * @QCA_WLAN_VENDOR_ATTR_FTM_MEAS_T4: TOA of ACK packet at
4421  *      responder, in picoseconds.
4422  *      See IEEE P802.11-REVmc/D7.0, 11.24.6.4 for more information.
4423  * @QCA_WLAN_VENDOR_ATTR_FTM_MEAS_RSSI: RSSI (signal level) as recorded
4424  *      during this measurement exchange. Optional and will be provided if
4425  *      the hardware can measure it.
4426  * @QCA_WLAN_VENDOR_ATTR_FTM_MEAS_TOD_ERR: TOD error reported by
4427  *      responder. Not always provided.
4428  *      See IEEE P802.11-REVmc/D7.0, 9.6.8.33 for more information.
4429  * @QCA_WLAN_VENDOR_ATTR_FTM_MEAS_TOA_ERR: TOA error reported by
4430  *      responder. Not always provided.
4431  *      See IEEE P802.11-REVmc/D7.0, 9.6.8.33 for more information.
4432  * @QCA_WLAN_VENDOR_ATTR_FTM_MEAS_INITIATOR_TOD_ERR: TOD error measured by
4433  *      initiator. Not always provided.
4434  *      See IEEE P802.11-REVmc/D7.0, 9.6.8.33 for more information.
4435  * @QCA_WLAN_VENDOR_ATTR_FTM_MEAS_INITIATOR_TOA_ERR: TOA error measured by
4436  *      initiator. Not always provided.
4437  *      See IEEE P802.11-REVmc/D7.0, 9.6.8.33 for more information.
4438  * @QCA_WLAN_VENDOR_ATTR_FTM_MEAS_PAD: Dummy attribute for padding.
4439  */
4440 enum qca_wlan_vendor_attr_ftm_meas {
4441 	QCA_WLAN_VENDOR_ATTR_FTM_MEAS_INVALID,
4442 	QCA_WLAN_VENDOR_ATTR_FTM_MEAS_T1,
4443 	QCA_WLAN_VENDOR_ATTR_FTM_MEAS_T2,
4444 	QCA_WLAN_VENDOR_ATTR_FTM_MEAS_T3,
4445 	QCA_WLAN_VENDOR_ATTR_FTM_MEAS_T4,
4446 	QCA_WLAN_VENDOR_ATTR_FTM_MEAS_RSSI,
4447 	QCA_WLAN_VENDOR_ATTR_FTM_MEAS_TOD_ERR,
4448 	QCA_WLAN_VENDOR_ATTR_FTM_MEAS_TOA_ERR,
4449 	QCA_WLAN_VENDOR_ATTR_FTM_MEAS_INITIATOR_TOD_ERR,
4450 	QCA_WLAN_VENDOR_ATTR_FTM_MEAS_INITIATOR_TOA_ERR,
4451 	QCA_WLAN_VENDOR_ATTR_FTM_MEAS_PAD,
4452 	/* keep last */
4453 	QCA_WLAN_VENDOR_ATTR_FTM_MEAS_AFTER_LAST,
4454 	QCA_WLAN_VENDOR_ATTR_FTM_MEAS_MAX =
4455 	QCA_WLAN_VENDOR_ATTR_FTM_MEAS_AFTER_LAST - 1,
4456 };
4457 
4458 /**
4459  * enum qca_wlan_vendor_attr_p2p_listen_offload - vendor sub commands index
4460  * @QCA_WLAN_VENDOR_ATTR_P2P_LISTEN_OFFLOAD_INVALID: invalid value
4461  * @QCA_WLAN_VENDOR_ATTR_P2P_LISTEN_OFFLOAD_CHANNEL:
4462  *     A 32-bit unsigned value; the P2P listen frequency (MHz); must be one
4463  *     of the social channels.
4464  * @QCA_WLAN_VENDOR_ATTR_P2P_LISTEN_OFFLOAD_PERIOD: listen offload period
4465  *     A 32-bit unsigned value; the P2P listen offload period (ms).
4466  * @QCA_WLAN_VENDOR_ATTR_P2P_LISTEN_OFFLOAD_INTERVAL:
4467  *     A 32-bit unsigned value; the P2P listen interval duration (ms).
4468  * @QCA_WLAN_VENDOR_ATTR_P2P_LISTEN_OFFLOAD_COUNT:
4469  *     A 32-bit unsigned value; number of interval times the Firmware needs
4470  *     to run the offloaded P2P listen operation before it stops.
4471  * @QCA_WLAN_VENDOR_ATTR_P2P_LISTEN_OFFLOAD_DEVICE_TYPES: device types
4472  *     An array of unsigned 8-bit characters; vendor information elements.
4473  * @QCA_WLAN_VENDOR_ATTR_P2P_LISTEN_OFFLOAD_VENDOR_IE: vendor IEs
4474  * @QCA_WLAN_VENDOR_ATTR_P2P_LISTEN_OFFLOAD_CTRL_FLAG: control flag for FW
4475  *     A 32-bit unsigned value; a control flag to indicate whether listen
4476  *     results need to be flushed to wpa_supplicant.
4477  * @QCA_WLAN_VENDOR_ATTR_P2P_LISTEN_OFFLOAD_STOP_REASON: offload stop reason
4478  *     A 8-bit unsigned value; reason code for P2P listen offload stop
4479  *     event.
4480  * @QCA_WLAN_VENDOR_ATTR_P2P_LISTEN_OFFLOAD_AFTER_LAST: last value
4481  * @QCA_WLAN_VENDOR_ATTR_P2P_LISTEN_OFFLOAD_MAX: max value
4482  */
4483 enum qca_wlan_vendor_attr_p2p_listen_offload {
4484 	QCA_WLAN_VENDOR_ATTR_P2P_LISTEN_OFFLOAD_INVALID = 0,
4485 	QCA_WLAN_VENDOR_ATTR_P2P_LISTEN_OFFLOAD_CHANNEL,
4486 	QCA_WLAN_VENDOR_ATTR_P2P_LISTEN_OFFLOAD_PERIOD,
4487 	QCA_WLAN_VENDOR_ATTR_P2P_LISTEN_OFFLOAD_INTERVAL,
4488 	QCA_WLAN_VENDOR_ATTR_P2P_LISTEN_OFFLOAD_COUNT,
4489 	QCA_WLAN_VENDOR_ATTR_P2P_LISTEN_OFFLOAD_DEVICE_TYPES,
4490 	QCA_WLAN_VENDOR_ATTR_P2P_LISTEN_OFFLOAD_VENDOR_IE,
4491 	QCA_WLAN_VENDOR_ATTR_P2P_LISTEN_OFFLOAD_CTRL_FLAG,
4492 	QCA_WLAN_VENDOR_ATTR_P2P_LISTEN_OFFLOAD_STOP_REASON,
4493 	/* keep last */
4494 	QCA_WLAN_VENDOR_ATTR_P2P_LISTEN_OFFLOAD_AFTER_LAST,
4495 	QCA_WLAN_VENDOR_ATTR_P2P_LISTEN_OFFLOAD_MAX =
4496 	QCA_WLAN_VENDOR_ATTR_P2P_LISTEN_OFFLOAD_AFTER_LAST - 1
4497 };
4498 
4499 /**
4500  * enum qca_wlan_vendor_drv_info - WLAN driver info
4501  * @QCA_WLAN_VENDOR_ATTR_DRV_INFO_INVALID: Invalid
4502  * @QCA_WLAN_VENDOR_ATTR_DRV_INFO_BUS_SIZE: Maximum Message size info
4503  * between Firmware & Host.
4504  */
4505 enum qca_wlan_vendor_drv_info {
4506 	QCA_WLAN_VENDOR_ATTR_DRV_INFO_INVALID = 0,
4507 	QCA_WLAN_VENDOR_ATTR_DRV_INFO_BUS_SIZE,
4508 
4509 	/* keep last */
4510 	QCA_WLAN_VENDOR_ATTR_DRV_INFO_AFTER_LAST,
4511 	QCA_WLAN_VENDOR_ATTR_DRV_INFO_MAX =
4512 		QCA_WLAN_VENDOR_ATTR_DRV_INFO_AFTER_LAST - 1,
4513 };
4514 
4515 /**
4516  * enum qca_wlan_vendor_attr_aoa_type - AOA measurement type
4517  *
4518  * @QCA_WLAN_VENDOR_ATTR_AOA_TYPE_TOP_CIR_PHASE: Phase of the strongest
4519  *      CIR (channel impulse response) path for each antenna.
4520  * @QCA_WLAN_VENDOR_ATTR_AOA_TYPE_TOP_CIR_PHASE_AMP: Phase and amplitude
4521  *      of the strongest CIR path for each antenna.
4522  */
4523 enum qca_wlan_vendor_attr_aoa_type {
4524 	QCA_WLAN_VENDOR_ATTR_AOA_TYPE_TOP_CIR_PHASE,
4525 	QCA_WLAN_VENDOR_ATTR_AOA_TYPE_TOP_CIR_PHASE_AMP,
4526 	QCA_WLAN_VENDOR_ATTR_AOA_TYPE_MAX
4527 };
4528 
4529 /**
4530  * enum qca_wlan_vendor_attr_encryption_test - Attributes to
4531  * validate encryption engine
4532  *
4533  * @QCA_WLAN_VENDOR_ATTR_ENCRYPTION_TEST_NEEDS_DECRYPTION: Flag attribute.
4534  *    This will be included if the request is for decryption; if not included,
4535  *    the request is treated as a request for encryption by default.
4536  * @QCA_WLAN_VENDOR_ATTR_ENCRYPTION_TEST_CIPHER: Unsigned 32-bit value
4537  *    indicating the key cipher suite. Takes same values as
4538  *    NL80211_ATTR_KEY_CIPHER.
4539  * @QCA_WLAN_VENDOR_ATTR_ENCRYPTION_TEST_KEYID: Unsigned 8-bit value
4540  *    Key Id to be used for encryption
4541  * @QCA_WLAN_VENDOR_ATTR_ENCRYPTION_TEST_TK: Array of 8-bit values.
4542  *    Key (TK) to be used for encryption/decryption
4543  * @QCA_WLAN_VENDOR_ATTR_ENCRYPTION_TEST_PN: Array of 8-bit values.
4544  *    Packet number to be specified for encryption/decryption
4545  *    6 bytes for TKIP/CCMP/GCMP.
4546  * @QCA_WLAN_VENDOR_ATTR_ENCRYPTION_TEST_DATA: Array of 8-bit values
4547  *    representing the 802.11 packet (header + payload + FCS) that
4548  *    needs to be encrypted/decrypted.
4549  *    Encrypted/decrypted response from the driver will also be sent
4550  *    to userspace with the same attribute.
4551  */
4552 enum qca_wlan_vendor_attr_encryption_test {
4553 	QCA_WLAN_VENDOR_ATTR_ENCRYPTION_TEST_INVALID = 0,
4554 	QCA_WLAN_VENDOR_ATTR_ENCRYPTION_TEST_NEEDS_DECRYPTION,
4555 	QCA_WLAN_VENDOR_ATTR_ENCRYPTION_TEST_CIPHER,
4556 	QCA_WLAN_VENDOR_ATTR_ENCRYPTION_TEST_KEYID,
4557 	QCA_WLAN_VENDOR_ATTR_ENCRYPTION_TEST_TK,
4558 	QCA_WLAN_VENDOR_ATTR_ENCRYPTION_TEST_PN,
4559 	QCA_WLAN_VENDOR_ATTR_ENCRYPTION_TEST_DATA,
4560 
4561 	/* keep last */
4562 	QCA_WLAN_VENDOR_ATTR_ENCRYPTION_TEST_AFTER_LAST,
4563 	QCA_WLAN_VENDOR_ATTR_ENCRYPTION_TEST_MAX =
4564 		QCA_WLAN_VENDOR_ATTR_ENCRYPTION_TEST_AFTER_LAST - 1
4565 };
4566 
4567 /**
4568  * enum qca_wlan_vendor_attr_dmg_rf_sector_type - Type of
4569  * sector for DMG RF sector operations.
4570  *
4571  * @QCA_WLAN_VENDOR_ATTR_DMG_RF_SECTOR_TYPE_RX: RX sector
4572  * @QCA_WLAN_VENDOR_ATTR_DMG_RF_SECTOR_TYPE_TX: TX sector
4573  */
4574 enum qca_wlan_vendor_attr_dmg_rf_sector_type {
4575 	QCA_WLAN_VENDOR_ATTR_DMG_RF_SECTOR_TYPE_RX,
4576 	QCA_WLAN_VENDOR_ATTR_DMG_RF_SECTOR_TYPE_TX,
4577 	QCA_WLAN_VENDOR_ATTR_DMG_RF_SECTOR_TYPE_MAX
4578 };
4579 
4580 /**
4581  * BRP antenna limit mode
4582  *
4583  * @QCA_WLAN_VENDOR_ATTR_BRP_ANT_LIMIT_MODE_DISABLE: Disable BRP force
4584  *      antenna limit, BRP will be performed as usual.
4585  * @QCA_WLAN_VENDOR_ATTR_BRP_ANT_LIMIT_MODE_EFFECTIVE: Define maximal
4586  *      antennas limit. the hardware may use less antennas than the
4587  *      maximum limit.
4588  * @QCA_WLAN_VENDOR_ATTR_BRP_ANT_LIMIT_MODE_FORCE: The hardware will
4589  *      use exactly the specified number of antennas for BRP.
4590  */
4591 enum qca_wlan_vendor_attr_brp_ant_limit_mode {
4592 	QCA_WLAN_VENDOR_ATTR_BRP_ANT_LIMIT_MODE_DISABLE,
4593 	QCA_WLAN_VENDOR_ATTR_BRP_ANT_LIMIT_MODE_EFFECTIVE,
4594 	QCA_WLAN_VENDOR_ATTR_BRP_ANT_LIMIT_MODE_FORCE,
4595 	QCA_WLAN_VENDOR_ATTR_BRP_ANT_LIMIT_MODE_MAX
4596 };
4597 
4598 /**
4599  * enum qca_wlan_vendor_attr_dmg_rf_sector_cfg - Attributes for
4600  * DMG RF sector configuration for a single RF module.
4601  * The values are defined in a compact way which closely matches
4602  * the way it is stored in HW registers.
4603  * The configuration provides values for 32 antennas and 8 distribution
4604  * amplifiers, and together describes the characteristics of the RF
4605  * sector - such as a beam in some direction with some gain.
4606  *
4607  * @QCA_WLAN_VENDOR_ATTR_DMG_RF_SECTOR_CFG_MODULE_INDEX: Index
4608  *      of RF module for this configuration.
4609  * @QCA_WLAN_VENDOR_ATTR_DMG_RF_SECTOR_CFG_ETYPE0: Bit 0 of edge
4610  *      amplifier gain index. Unsigned 32 bit number containing
4611  *      bits for all 32 antennas.
4612  * @QCA_WLAN_VENDOR_ATTR_DMG_RF_SECTOR_CFG_ETYPE1: Bit 1 of edge
4613  *      amplifier gain index. Unsigned 32 bit number containing
4614  *      bits for all 32 antennas.
4615  * @QCA_WLAN_VENDOR_ATTR_DMG_RF_SECTOR_CFG_ETYPE2: Bit 2 of edge
4616  *      amplifier gain index. Unsigned 32 bit number containing
4617  *      bits for all 32 antennas.
4618  * @QCA_WLAN_VENDOR_ATTR_DMG_RF_SECTOR_CFG_PSH_HI: Phase values
4619  *      for first 16 antennas, 2 bits per antenna.
4620  * @QCA_WLAN_VENDOR_ATTR_DMG_RF_SECTOR_CFG_PSH_LO: Phase values
4621  *      for last 16 antennas, 2 bits per antenna.
4622  * @QCA_WLAN_VENDOR_ATTR_DMG_RF_SECTOR_CFG_DTYPE_X16: Contains
4623  *      DTYPE values (3 bits) for each distribution amplifier, followed
4624  *      by X16 switch bits for each distribution amplifier. There are
4625  *      total of 8 distribution amplifiers.
4626  */
4627 enum qca_wlan_vendor_attr_dmg_rf_sector_cfg {
4628 	QCA_WLAN_VENDOR_ATTR_DMG_RF_SECTOR_CFG_INVALID = 0,
4629 	QCA_WLAN_VENDOR_ATTR_DMG_RF_SECTOR_CFG_MODULE_INDEX = 1,
4630 	QCA_WLAN_VENDOR_ATTR_DMG_RF_SECTOR_CFG_ETYPE0 = 2,
4631 	QCA_WLAN_VENDOR_ATTR_DMG_RF_SECTOR_CFG_ETYPE1 = 3,
4632 	QCA_WLAN_VENDOR_ATTR_DMG_RF_SECTOR_CFG_ETYPE2 = 4,
4633 	QCA_WLAN_VENDOR_ATTR_DMG_RF_SECTOR_CFG_PSH_HI = 5,
4634 	QCA_WLAN_VENDOR_ATTR_DMG_RF_SECTOR_CFG_PSH_LO = 6,
4635 	QCA_WLAN_VENDOR_ATTR_DMG_RF_SECTOR_CFG_DTYPE_X16 = 7,
4636 
4637 	/* keep last */
4638 	QCA_WLAN_VENDOR_ATTR_DMG_RF_SECTOR_CFG_AFTER_LAST,
4639 	QCA_WLAN_VENDOR_ATTR_DMG_RF_SECTOR_CFG_MAX =
4640 	QCA_WLAN_VENDOR_ATTR_DMG_RF_SECTOR_CFG_AFTER_LAST - 1
4641 };
4642 
4643 /**
4644  * enum qca_wlan_vendor_attr_tdls_configuration - Attributes for
4645  * @QCA_NL80211_VENDOR_SUBCMD_CONFIGURE_TDLS configuration to the host driver.
4646  *
4647  * @QCA_WLAN_VENDOR_ATTR_TDLS_CONFIG_TRIGGER_MODE: Configure the TDLS trigger
4648  *	mode in the host driver. enum qca_wlan_vendor_tdls_trigger_mode
4649  *	represents the different TDLS trigger modes.
4650  * @QCA_WLAN_VENDOR_ATTR_TDLS_CONFIG_TX_STATS_PERIOD: Duration (u32) within
4651  *	which QCA_WLAN_VENDOR_ATTR_TDLS_CONFIG_TX_THRESHOLD number
4652  *	of packets shall meet the criteria for implicit TDLS setup.
4653  * @QCA_WLAN_VENDOR_ATTR_TDLS_CONFIG_TX_THRESHOLD: Number (u32) of Tx/Rx
4654  *	packets within a duration.
4655  *	QCA_WLAN_VENDOR_ATTR_TDLS_CONFIG_TX_STATS_PERIOD to initiate
4656  *	a TDLS setup.
4657  * @QCA_WLAN_VENDOR_ATTR_TDLS_CONFIG_DISCOVERY_PERIOD: Time (u32) to inititate
4658  *	a TDLS Discovery to the Peer.
4659  * @QCA_WLAN_VENDOR_ATTR_TDLS_CONFIG_MAX_DISCOVERY_ATTEMPT: Max number (u32) of
4660  *	discovery attempts to know the TDLS capability of the peer. A peer is
4661  *	marked as TDLS not capable if there is no response for all the attempts.
4662  * @QCA_WLAN_VENDOR_ATTR_TDLS_CONFIG_IDLE_TIMEOUT: Represents a duration (u32)
4663  *	within which QCA_WLAN_VENDOR_ATTR_TDLS_CONFIG_IDLE_PACKET_THRESHOLD
4664  *	number of TX / RX frames meet the criteria for TDLS teardown.
4665  * @QCA_WLAN_VENDOR_ATTR_TDLS_CONFIG_IDLE_PACKET_THRESHOLD: Minumum number
4666  *	(u32) of Tx/Rx packets within a duration
4667  *	CA_WLAN_VENDOR_ATTR_TDLS_CONFIG_IDLE_TIMEOUT to tear down a TDLS link
4668  * @QCA_WLAN_VENDOR_ATTR_TDLS_CONFIG_SETUP_RSSI_THRESHOLD: Threshold
4669  *	corresponding to the RSSI of the peer below which a TDLS
4670  *	setup is triggered.
4671  * @QCA_WLAN_VENDOR_ATTR_TDLS_CONFIG_TEARDOWN_RSSI_THRESHOLD: Threshold
4672  *	corresponding to the RSSI of the peer above which
4673  *	a TDLS teardown is triggered.
4674  */
4675 enum qca_wlan_vendor_attr_tdls_configuration {
4676 	QCA_WLAN_VENDOR_ATTR_TDLS_CONFIG_INVALID = 0,
4677 	QCA_WLAN_VENDOR_ATTR_TDLS_CONFIG_TRIGGER_MODE = 1,
4678 
4679 	/* Attributes configuring the TDLS Implicit Trigger */
4680 	QCA_WLAN_VENDOR_ATTR_TDLS_CONFIG_TX_STATS_PERIOD = 2,
4681 	QCA_WLAN_VENDOR_ATTR_TDLS_CONFIG_TX_THRESHOLD = 3,
4682 	QCA_WLAN_VENDOR_ATTR_TDLS_CONFIG_DISCOVERY_PERIOD = 4,
4683 	QCA_WLAN_VENDOR_ATTR_TDLS_CONFIG_MAX_DISCOVERY_ATTEMPT = 5,
4684 	QCA_WLAN_VENDOR_ATTR_TDLS_CONFIG_IDLE_TIMEOUT = 6,
4685 	QCA_WLAN_VENDOR_ATTR_TDLS_CONFIG_IDLE_PACKET_THRESHOLD = 7,
4686 	QCA_WLAN_VENDOR_ATTR_TDLS_CONFIG_SETUP_RSSI_THRESHOLD = 8,
4687 	QCA_WLAN_VENDOR_ATTR_TDLS_CONFIG_TEARDOWN_RSSI_THRESHOLD = 9,
4688 
4689 	/* keep last */
4690 	QCA_WLAN_VENDOR_ATTR_TDLS_CONFIG_AFTER_LAST,
4691 	QCA_WLAN_VENDOR_ATTR_TDLS_CONFIG_MAX =
4692 		QCA_WLAN_VENDOR_ATTR_TDLS_CONFIG_AFTER_LAST - 1
4693 };
4694 
4695 /**
4696  * enum qca_wlan_vendor_tdls_trigger_mode: Represents the TDLS trigger mode in
4697  *	the driver.
4698  *
4699  * The following are the different values for
4700  * QCA_WLAN_VENDOR_ATTR_TDLS_CONFIG_TRIGGER_MODE.
4701  *
4702  * @QCA_WLAN_VENDOR_TDLS_TRIGGER_MODE_EXPLICIT: The trigger to
4703  *	initiate/teardown the TDLS connection to a respective peer comes
4704  *	 from the user space. wpa_supplicant provides the commands
4705  *	TDLS_SETUP, TDLS_TEARDOWN, TDLS_DISCOVER to do this.
4706  * @QCA_WLAN_VENDOR_TDLS_TRIGGER_MODE_IMPLICIT: Host driver triggers this TDLS
4707  *	setup/teardown to the eligible peer once the configured criteria
4708  *	(such as TX/RX threshold, RSSI) is met. The attributes
4709  *	in QCA_WLAN_VENDOR_ATTR_TDLS_CONFIG_IMPLICIT_PARAMS correspond to
4710  *	the different configuration criteria for the TDLS trigger from the
4711  *	host driver.
4712  * @QCA_WLAN_VENDOR_TDLS_TRIGGER_MODE_EXTERNAL: Enables the driver to trigger
4713  *	the TDLS setup / teardown through the implicit mode, only to the
4714  *	configured MAC addresses(wpa_supplicant, with tdls_external_control = 1,
4715  *	configures the MAC address through TDLS_SETUP/TDLS_TEARDOWN commands).
4716  *	External mode works on top of the implicit mode, thus the host Driver
4717  *	is expected to be configured in TDLS Implicit mode too to operate in
4718  *	External mode. Configuring External mode alone without Implicit
4719  *	mode is invalid.
4720  *
4721  * All the above implementations work as expected only when the host driver
4722  * advertises the capability WPA_DRIVER_FLAGS_TDLS_EXTERNAL_SETUP -
4723  * representing that the TDLS message exchange is not internal to the host
4724  * driver, but depends on wpa_supplicant to do the message exchange.
4725  */
4726 enum qca_wlan_vendor_tdls_trigger_mode {
4727 	QCA_WLAN_VENDOR_TDLS_TRIGGER_MODE_EXPLICIT = 1 << 0,
4728 	QCA_WLAN_VENDOR_TDLS_TRIGGER_MODE_IMPLICIT = 1 << 1,
4729 	QCA_WLAN_VENDOR_TDLS_TRIGGER_MODE_EXTERNAL = 1 << 2,
4730 };
4731 
4732 /**
4733  * enum qca_vendor_attr_sar_limits_selections - Source of SAR power limits
4734  * @QCA_WLAN_VENDOR_ATTR_SAR_LIMITS_SELECT_BDF0: Select SAR profile #0
4735  *	that is hard-coded in the Board Data File (BDF).
4736  * @QCA_WLAN_VENDOR_ATTR_SAR_LIMITS_SELECT_BDF1: Select SAR profile #1
4737  *	that is hard-coded in the Board Data File (BDF).
4738  * @QCA_WLAN_VENDOR_ATTR_SAR_LIMITS_SELECT_BDF2: Select SAR profile #2
4739  *	that is hard-coded in the Board Data File (BDF).
4740  * @QCA_WLAN_VENDOR_ATTR_SAR_LIMITS_SELECT_BDF3: Select SAR profile #3
4741  *	that is hard-coded in the Board Data File (BDF).
4742  * @QCA_WLAN_VENDOR_ATTR_SAR_LIMITS_SELECT_BDF4: Select SAR profile #4
4743  *	that is hard-coded in the Board Data File (BDF).
4744  * @QCA_WLAN_VENDOR_ATTR_SAR_LIMITS_SELECT_NONE: Do not select any
4745  *	source of SAR power limits, thereby disabling the SAR power
4746  *	limit feature.
4747  * @QCA_WLAN_VENDOR_ATTR_SAR_LIMITS_SELECT_USER: Select the SAR power
4748  *	limits configured by %QCA_NL80211_VENDOR_SUBCMD_SET_SAR.
4749  *
4750  * This enumerates the valid set of values that may be supplied for
4751  * attribute %QCA_WLAN_VENDOR_ATTR_SAR_LIMITS_SELECT in an instance of
4752  * the %QCA_NL80211_VENDOR_SUBCMD_SET_SAR_LIMITS vendor command or in
4753  * the response to an instance of the
4754  * %QCA_NL80211_VENDOR_SUBCMD_GET_SAR_LIMITS vendor command.
4755  */
4756 enum qca_vendor_attr_sar_limits_selections {
4757 	QCA_WLAN_VENDOR_ATTR_SAR_LIMITS_SELECT_BDF0 = 0,
4758 	QCA_WLAN_VENDOR_ATTR_SAR_LIMITS_SELECT_BDF1 = 1,
4759 	QCA_WLAN_VENDOR_ATTR_SAR_LIMITS_SELECT_BDF2 = 2,
4760 	QCA_WLAN_VENDOR_ATTR_SAR_LIMITS_SELECT_BDF3 = 3,
4761 	QCA_WLAN_VENDOR_ATTR_SAR_LIMITS_SELECT_BDF4 = 4,
4762 	QCA_WLAN_VENDOR_ATTR_SAR_LIMITS_SELECT_NONE = 5,
4763 	QCA_WLAN_VENDOR_ATTR_SAR_LIMITS_SELECT_USER = 6,
4764 };
4765 
4766 /**
4767  * enum qca_vendor_attr_sar_limits_spec_modulations -
4768  *	SAR limits specification modulation
4769  * @QCA_WLAN_VENDOR_ATTR_SAR_LIMITS_SPEC_MODULATION_CCK -
4770  *	CCK modulation
4771  * @QCA_WLAN_VENDOR_ATTR_SAR_LIMITS_SPEC_MODULATION_OFDM -
4772  *	OFDM modulation
4773  *
4774  * This enumerates the valid set of values that may be supplied for
4775  * attribute %QCA_WLAN_VENDOR_ATTR_SAR_LIMITS_SPEC_MODULATION in an
4776  * instance of attribute %QCA_WLAN_VENDOR_ATTR_SAR_LIMITS_SPEC in an
4777  * instance of the %QCA_NL80211_VENDOR_SUBCMD_SET_SAR_LIMITS vendor
4778  * command or in the response to an instance of the
4779  * %QCA_NL80211_VENDOR_SUBCMD_GET_SAR_LIMITS vendor command.
4780  */
4781 enum qca_vendor_attr_sar_limits_spec_modulations {
4782 	QCA_WLAN_VENDOR_ATTR_SAR_LIMITS_SPEC_MODULATION_CCK = 0,
4783 	QCA_WLAN_VENDOR_ATTR_SAR_LIMITS_SPEC_MODULATION_OFDM = 1,
4784 };
4785 
4786 /**
4787  * enum qca_vendor_attr_sar_limits - Attributes for SAR power limits
4788  *
4789  * @QCA_WLAN_VENDOR_ATTR_SAR_LIMITS_SAR_ENABLE: Optional (u32) value to
4790  *	select which SAR power limit table should be used.  Valid
4791  *	values are enumerated in enum
4792  *	%qca_vendor_attr_sar_limits_selections.  The existing SAR
4793  *	power limit selection is unchanged if this attribute is not
4794  *	present.
4795  *
4796  * @QCA_WLAN_VENDOR_ATTR_SAR_LIMITS_NUM_SPECS: Optional (u32) value
4797  *	which specifies the number of SAR power limit specifications
4798  *	which will follow.
4799  *
4800  * @QCA_WLAN_VENDOR_ATTR_SAR_LIMITS_SPEC: Nested array of SAR power
4801  *	limit specifications. The number of specifications is
4802  *	specified by @QCA_WLAN_VENDOR_ATTR_SAR_LIMITS_NUM_SPECS. Each
4803  *	specification contains a set of
4804  *	QCA_WLAN_VENDOR_ATTR_SAR_LIMITS_SPEC_* attributes. A
4805  *	specification is uniquely identified by the attributes
4806  *	%QCA_WLAN_VENDOR_ATTR_SAR_LIMITS_SPEC_BAND,
4807  *	%QCA_WLAN_VENDOR_ATTR_SAR_LIMITS_SPEC_CHAIN, and
4808  *	%QCA_WLAN_VENDOR_ATTR_SAR_LIMITS_SPEC_MODULATION and always
4809  *	contains as a payload the attribute
4810  *	%QCA_WLAN_VENDOR_ATTR_SAR_LIMITS_SPEC_POWER_LIMIT.
4811  *
4812  * @QCA_WLAN_VENDOR_ATTR_SAR_LIMITS_SPEC_BAND: Optional (u32) value to
4813  *	indicate for which band this specification applies. Valid
4814  *	values are enumerated in enum %nl80211_band (although not all
4815  *	bands may be supported by a given device). If the attribute is
4816  *	not supplied then the specification will be applied to all
4817  *	supported bands.
4818  *
4819  * @QCA_WLAN_VENDOR_ATTR_SAR_LIMITS_SPEC_CHAIN: Optional (u32) value
4820  *	to indicate for which antenna chain this specification
4821  *	applies, i.e. 1 for chain 1, 2 for chain 2, etc. If the
4822  *	attribute is not supplied then the specification will be
4823  *	applied to all chains.
4824  *
4825  * @QCA_WLAN_VENDOR_ATTR_SAR_LIMITS_SPEC_MODULATION: Optional (u32)
4826  *	value to indicate for which modulation scheme this
4827  *	specification applies. Valid values are enumerated in enum
4828  *	%qca_vendor_attr_sar_limits_spec_modulations. If the attribute
4829  *	is not supplied then the specification will be applied to all
4830  *	modulation schemes.
4831  *
4832  * @QCA_WLAN_VENDOR_ATTR_SAR_LIMITS_SPEC_POWER_LIMIT: Required (u32)
4833  *	value to specify the actual power limit value in steps of 0.5
4834  *	dbm.
4835  *
4836  * These attributes are used with %QCA_NL80211_VENDOR_SUBCMD_SET_SAR_LIMITS
4837  * and %QCA_NL80211_VENDOR_SUBCMD_GET_SAR_LIMITS.
4838  */
4839 enum qca_vendor_attr_sar_limits {
4840 	QCA_WLAN_VENDOR_ATTR_SAR_LIMITS_INVALID = 0,
4841 	QCA_WLAN_VENDOR_ATTR_SAR_LIMITS_SAR_ENABLE = 1,
4842 	QCA_WLAN_VENDOR_ATTR_SAR_LIMITS_NUM_SPECS = 2,
4843 	QCA_WLAN_VENDOR_ATTR_SAR_LIMITS_SPEC = 3,
4844 	QCA_WLAN_VENDOR_ATTR_SAR_LIMITS_SPEC_BAND = 4,
4845 	QCA_WLAN_VENDOR_ATTR_SAR_LIMITS_SPEC_CHAIN = 5,
4846 	QCA_WLAN_VENDOR_ATTR_SAR_LIMITS_SPEC_MODULATION = 6,
4847 	QCA_WLAN_VENDOR_ATTR_SAR_LIMITS_SPEC_POWER_LIMIT = 7,
4848 
4849 	QCA_WLAN_VENDOR_ATTR_SAR_LIMITS_AFTER_LAST,
4850 	QCA_WLAN_VENDOR_ATTR_SAR_LIMITS_MAX =
4851 		QCA_WLAN_VENDOR_ATTR_SAR_LIMITS_AFTER_LAST - 1
4852 };
4853 
4854 /**
4855  * enum qca_wlan_vendor_attr_ll_stats_ext - Attributes for MAC layer monitoring
4856  *    offload which is an extension for LL_STATS.
4857  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_CFG_PERIOD: Monitoring period. Unit in ms.
4858  *    If MAC counters do not exceed the threshold, FW will report monitored
4859  *    link layer counters periodically as this setting. The first report is
4860  *    always triggered by this timer.
4861  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_CFG_THRESHOLD: It is a percentage (1-99).
4862  *    For each MAC layer counter, FW holds two copies. One is the current value.
4863  *    The other is the last report. Once a current counter's increment is larger
4864  *    than the threshold, FW will indicate that counter to host even if the
4865  *    monitoring timer does not expire.
4866  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_PEER_PS_CHG: Peer STA power state change
4867  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_TID: TID of MSDU
4868  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_NUM_MSDU: Count of MSDU with the same
4869  *    failure code.
4870  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_TX_STATUS: TX failure code
4871  *    1: TX packet discarded
4872  *    2: No ACK
4873  *    3: Postpone
4874  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_PEER_MAC_ADDRESS: peer MAC address
4875  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_PEER_PS_STATE: Peer STA current state
4876  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_GLOBAL: Global threshold.
4877  *    Threshold for all monitored parameters. If per counter dedicated threshold
4878  *    is not enabled, this threshold will take effect.
4879  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_EVENT_MODE: Indicate what triggers this
4880  *    event, PERORID_TIMEOUT == 1, THRESH_EXCEED == 0.
4881  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_IFACE_ID: interface ID
4882  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_PEER_ID: peer ID
4883  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_TX_BITMAP: bitmap for TX counters
4884  *    Bit0: TX counter unit in MSDU
4885  *    Bit1: TX counter unit in MPDU
4886  *    Bit2: TX counter unit in PPDU
4887  *    Bit3: TX counter unit in byte
4888  *    Bit4: Dropped MSDUs
4889  *    Bit5: Dropped Bytes
4890  *    Bit6: MPDU retry counter
4891  *    Bit7: MPDU failure counter
4892  *    Bit8: PPDU failure counter
4893  *    Bit9: MPDU aggregation counter
4894  *    Bit10: MCS counter for ACKed MPDUs
4895  *    Bit11: MCS counter for Failed MPDUs
4896  *    Bit12: TX Delay counter
4897  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_RX_BITMAP: bitmap for RX counters
4898  *    Bit0: MAC RX counter unit in MPDU
4899  *    Bit1: MAC RX counter unit in byte
4900  *    Bit2: PHY RX counter unit in PPDU
4901  *    Bit3: PHY RX counter unit in byte
4902  *    Bit4: Disorder counter
4903  *    Bit5: Retry counter
4904  *    Bit6: Duplication counter
4905  *    Bit7: Discard counter
4906  *    Bit8: MPDU aggregation size counter
4907  *    Bit9: MCS counter
4908  *    Bit10: Peer STA power state change (wake to sleep) counter
4909  *    Bit11: Peer STA power save counter, total time in PS mode
4910  *    Bit12: Probe request counter
4911  *    Bit13: Other management frames counter
4912  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_CCA_BSS_BITMAP: bitmap for CCA
4913  *    Bit0: Idle time
4914  *    Bit1: TX time
4915  *    Bit2: time RX in current bss
4916  *    Bit3: Out of current bss time
4917  *    Bit4: Wireless medium busy time
4918  *    Bit5: RX in bad condition time
4919  *    Bit6: TX in bad condition time
4920  *    Bit7: time wlan card not available
4921  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_SIGNAL_BITMAP: bitmap for signal
4922  *    Bit0: Per channel SNR counter
4923  *    Bit1: Per channel noise floor counter
4924  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_PEER_NUM: number of peers
4925  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_CHANNEL_NUM: number of channels
4926  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_PEER_AC_RX_NUM: number of RX stats
4927  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_CCA_BSS: per channel BSS CCA stats
4928  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_PEER: container for per PEER stats
4929  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_TX_MSDU: Number of total TX MSDUs
4930  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_TX_MPDU: Number of total TX MPDUs
4931  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_TX_PPDU: Number of total TX PPDUs
4932  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_TX_BYTES: bytes of TX data
4933  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_TX_DROP: Number of dropped TX packets
4934  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_TX_DROP_BYTES: Bytes dropped
4935  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_TX_RETRY: waiting time without an ACK
4936  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_TX_NO_ACK: number of MPDU not-ACKed
4937  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_TX_NO_BACK: number of PPDU not-ACKed
4938  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_TX_AGGR_NUM:
4939  *    aggregation stats buffer length
4940  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_TX_SUCC_MCS_NUM: length of mcs stats
4941  *    buffer for ACKed MPDUs.
4942  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_TX_FAIL_MCS_NUM: length of mcs stats
4943  *    buffer for failed MPDUs.
4944  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_DELAY_ARRAY_SIZE:
4945  *    length of delay stats array.
4946  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_TX_AGGR: TX aggregation stats
4947  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_TX_SUCC_MCS: MCS stats for ACKed MPDUs
4948  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_TX_FAIL_MCS: MCS stats for failed MPDUs
4949  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_TX_DELAY: tx delay stats
4950  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_RX_MPDU: MPDUs received
4951  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_RX_MPDU_BYTES: bytes received
4952  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_RX_PPDU: PPDU received
4953  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_RX_PPDU_BYTES: PPDU bytes received
4954  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_RX_MPDU_LOST: packets lost
4955  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_RX_MPDU_RETRY: number of RX packets
4956  *    flagged as retransmissions
4957  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_RX_MPDU_DUP: number of RX packets
4958  *    flagged as duplicated
4959  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_RX_MPDU_DISCARD: number of RX
4960  *    packets discarded
4961  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_RX_AGGR_NUM: length of RX aggregation
4962  *    stats buffer.
4963  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_RX_MCS_NUM: length of RX mcs
4964  *    stats buffer.
4965  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_RX_MCS: RX mcs stats buffer
4966  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_RX_AGGR: aggregation stats buffer
4967  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_PEER_PS_TIMES: times STAs go to sleep
4968  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_PEER_PS_DURATION: STAs' total sleep time
4969  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_RX_PROBE_REQ: number of probe
4970  *    requests received
4971  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_RX_MGMT: number of other mgmt
4972  *    frames received
4973  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_IDLE_TIME: Percentage of idle time
4974  *    there is no TX, nor RX, nor interference.
4975  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_TX_TIME: percentage of time
4976  *    transmitting packets.
4977  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_RX_TIME: percentage of time
4978  *    for receiving.
4979  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_RX_BUSY: percentage of time
4980  *    interference detected.
4981  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_RX_BAD: percentage of time
4982  *    receiving packets with errors.
4983  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_TX_BAD: percentage of time
4984  *    TX no-ACK.
4985  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_NO_AVAIL: percentage of time
4986  *    the chip is unable to work in normal conditions.
4987  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_IN_BSS_TIME: percentage of time
4988  *    receiving packets in current BSS.
4989  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_OUT_BSS_TIME: percentage of time
4990  *    receiving packets not in current BSS.
4991  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_PEER_ANT_NUM: number of antennas
4992  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_PEER_SIGNAL:
4993  *    This is a container for per antenna signal stats.
4994  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_ANT_SNR: per antenna SNR value
4995  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_ANT_NF: per antenna NF value
4996  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_IFACE_RSSI_BEACON: RSSI of beacon
4997  * @QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_IFACE_SNR_BEACON: SNR of beacon
4998  */
4999 enum qca_wlan_vendor_attr_ll_stats_ext {
5000 	QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_INVALID = 0,
5001 
5002 	/* Attributes for configurations */
5003 	QCA_WLAN_VENDOR_ATTR_LL_STATS_CFG_PERIOD,
5004 	QCA_WLAN_VENDOR_ATTR_LL_STATS_CFG_THRESHOLD,
5005 
5006 	/* Peer STA power state change */
5007 	QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_PEER_PS_CHG,
5008 
5009 	/* TX failure event */
5010 	QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_TID,
5011 	QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_NUM_MSDU,
5012 	QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_TX_STATUS,
5013 
5014 	QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_PEER_PS_STATE,
5015 	QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_PEER_MAC_ADDRESS,
5016 
5017 	/* MAC counters */
5018 	QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_GLOBAL,
5019 	QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_EVENT_MODE,
5020 	QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_IFACE_ID,
5021 	QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_PEER_ID,
5022 	QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_TX_BITMAP,
5023 	QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_RX_BITMAP,
5024 	QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_CCA_BSS_BITMAP,
5025 	QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_SIGNAL_BITMAP,
5026 	QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_PEER_NUM,
5027 	QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_CHANNEL_NUM,
5028 	QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_CCA_BSS,
5029 	QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_PEER,
5030 
5031 	/* Sub-attributes for PEER_AC_TX */
5032 	QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_TX_MSDU,
5033 	QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_TX_MPDU,
5034 	QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_TX_PPDU,
5035 	QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_TX_BYTES,
5036 	QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_TX_DROP,
5037 	QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_TX_DROP_BYTES,
5038 	QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_TX_RETRY,
5039 	QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_TX_NO_ACK,
5040 	QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_TX_NO_BACK,
5041 	QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_TX_AGGR_NUM,
5042 	QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_TX_SUCC_MCS_NUM,
5043 	QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_TX_FAIL_MCS_NUM,
5044 	QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_TX_AGGR,
5045 	QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_TX_SUCC_MCS,
5046 	QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_TX_FAIL_MCS,
5047 	QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_DELAY_ARRAY_SIZE,
5048 	QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_TX_DELAY,
5049 
5050 	/* Sub-attributes for PEER_AC_RX */
5051 	QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_RX_MPDU,
5052 	QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_RX_MPDU_BYTES,
5053 	QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_RX_PPDU,
5054 	QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_RX_PPDU_BYTES,
5055 	QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_RX_MPDU_LOST,
5056 	QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_RX_MPDU_RETRY,
5057 	QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_RX_MPDU_DUP,
5058 	QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_RX_MPDU_DISCARD,
5059 	QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_RX_AGGR_NUM,
5060 	QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_RX_MCS_NUM,
5061 	QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_RX_MCS,
5062 	QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_RX_AGGR,
5063 	QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_PEER_PS_TIMES,
5064 	QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_PEER_PS_DURATION,
5065 	QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_RX_PROBE_REQ,
5066 	QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_RX_MGMT,
5067 
5068 	/* Sub-attributes for CCA_BSS */
5069 	QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_IDLE_TIME,
5070 	QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_TX_TIME,
5071 	QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_RX_TIME,
5072 	QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_RX_BUSY,
5073 	QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_RX_BAD,
5074 	QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_TX_BAD,
5075 	QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_NO_AVAIL,
5076 
5077 	/* sub-attribute for BSS_RX_TIME */
5078 	QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_IN_BSS_TIME,
5079 	QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_OUT_BSS_TIME,
5080 
5081 	/* Sub-attributes for PEER_SIGNAL */
5082 	QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_PEER_ANT_NUM,
5083 	QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_PEER_SIGNAL,
5084 	QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_ANT_SNR,
5085 	QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_ANT_NF,
5086 
5087 	/* Sub-attributes for IFACE_BSS */
5088 	QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_IFACE_RSSI_BEACON,
5089 	QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_IFACE_SNR_BEACON,
5090 
5091 	QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_LAST,
5092 	QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_MAX =
5093 		QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_LAST - 1
5094 };
5095 
5096 /**
5097  * qca_wlan_vendor_attr_external_acs_channels: attribute to vendor subcmd
5098  * QCA_NL80211_VENDOR_SUBCMD_EXTERNAL_ACS. This carry a list of channels
5099  * in priority order as decided after acs operation in userspace.
5100  * @QCA_WLAN_VENDOR_ATTR_EXTERNAL_ACS_CHANNEL_REASON: One of reason code from
5101  * qca_wlan_vendor_acs_select_reason.
5102  * @QCA_WLAN_VENDOR_ATTR_EXTERNAL_ACS_CHANNEL_COUNT: Number of channels in
5103  * this list
5104  * @QCA_WLAN_VENDOR_ATTR_EXTERNAL_ACS_CHANNEL_LIST: Array of nested values
5105  * for each channel with following attributes:
5106  *     QCA_WLAN_VENDOR_ATTR_EXTERNAL_ACS_CHANNEL_PRIMARY,
5107  *     QCA_WLAN_VENDOR_ATTR_EXTERNAL_ACS_CHANNEL_SECONDARY,
5108  *     QCA_WLAN_VENDOR_ATTR_EXTERNAL_ACS_CHANNEL_CENTER_SEG0,
5109  *     QCA_WLAN_VENDOR_ATTR_EXTERNAL_ACS_CHANNEL_CENTER_SEG1,
5110  *     QCA_WLAN_VENDOR_ATTR_EXTERNAL_ACS_CHANNEL_WIDTH
5111  * @QCA_WLAN_VENDOR_ATTR_EXTERNAL_ACS_CHANNEL_PRIMARY: Primary channel (u8)
5112  * @QCA_WLAN_VENDOR_ATTR_EXTERNAL_ACS_CHANNEL_SECONDARY: Secondary channel (u8)
5113  * required only for 160 / 80 + 80
5114  * @QCA_WLAN_VENDOR_ATTR_EXTERNAL_ACS_CHANNEL_CENTER_SEG0: VHT seg0 channel (u8)
5115  * @QCA_WLAN_VENDOR_ATTR_EXTERNAL_ACS_CHANNEL_CENTER_SEG1: VHT seg1 channel (u8)
5116  * QCA_WLAN_VENDOR_ATTR_EXTERNAL_ACS_CHANNEL_WIDTH:channel width (u8)
5117  */
5118 enum qca_wlan_vendor_attr_external_acs_channels {
5119 	QCA_WLAN_VENDOR_ATTR_EXTERNAL_ACS_CHANNEL_INVALID = 0,
5120 
5121 	QCA_WLAN_VENDOR_ATTR_EXTERNAL_ACS_CHANNEL_REASON = 1,
5122 	QCA_WLAN_VENDOR_ATTR_EXTERNAL_ACS_CHANNEL_LIST = 2,
5123 	QCA_WLAN_VENDOR_ATTR_EXTERNAL_ACS_CHANNEL_BAND = 3,
5124 	QCA_WLAN_VENDOR_ATTR_EXTERNAL_ACS_CHANNEL_PRIMARY = 4,
5125 	QCA_WLAN_VENDOR_ATTR_EXTERNAL_ACS_CHANNEL_SECONDARY = 5,
5126 	QCA_WLAN_VENDOR_ATTR_EXTERNAL_ACS_CHANNEL_CENTER_SEG0 = 6,
5127 	QCA_WLAN_VENDOR_ATTR_EXTERNAL_ACS_CHANNEL_CENTER_SEG1 = 7,
5128 	QCA_WLAN_VENDOR_ATTR_EXTERNAL_ACS_CHANNEL_WIDTH = 8,
5129 
5130 	/* keep last */
5131 	QCA_WLAN_VENDOR_ATTR_EXTERNAL_ACS_CHANNEL_LAST,
5132 	QCA_WLAN_VENDOR_ATTR_EXTERNAL_ACS_CHANNEL_MAX =
5133 		QCA_WLAN_VENDOR_ATTR_EXTERNAL_ACS_CHANNEL_LAST - 1
5134 };
5135 
5136 /**
5137  * qca_wlan_vendor_acs_select_reason: This represents the different reasons why
5138  * the ACS has to be triggered. These parameters are used by
5139  * QCA_WLAN_VENDOR_ATTR_EXTERNAL_ACS_EVENT_REASON and
5140  * QCA_NL80211_VENDOR_SUBCMD_ACS_SET_CHANNELS
5141  * @QCA_WLAN_VENDOR_ACS_SELECT_REASON_INIT: Represents the reason that the
5142  * ACS triggered during the AP start
5143  * @QCA_WLAN_VENDOR_ACS_SELECT_REASON_DFS: Represents the reason that
5144  * DFS found with current channel
5145  * @QCA_WLAN_VENDOR_ACS_SELECT_REASON_LTE_COEX: Represents the reason that
5146  * LTE CO-Exist in current band
5147  */
5148 enum qca_wlan_vendor_acs_select_reason {
5149 	QCA_WLAN_VENDOR_ACS_SELECT_REASON_INIT,
5150 	QCA_WLAN_VENDOR_ACS_SELECT_REASON_DFS,
5151 	QCA_WLAN_VENDOR_ACS_SELECT_REASON_LTE_COEX,
5152 };
5153 
5154 /**
5155  * enum qca_wlan_gpio_attr - Parameters for GPIO configuration
5156  */
5157 enum qca_wlan_gpio_attr {
5158 	QCA_WLAN_VENDOR_ATTR_GPIO_PARAM_INVALID = 0,
5159 	/* Unsigned 32-bit attribute for GPIO command */
5160 	QCA_WLAN_VENDOR_ATTR_GPIO_PARAM_COMMAND,
5161 	/* Unsigned 32-bit attribute for GPIO PIN number to configure */
5162 	QCA_WLAN_VENDOR_ATTR_GPIO_PARAM_PINNUM,
5163 	/* Unsigned 32-bit attribute for GPIO value to configure */
5164 	QCA_WLAN_VENDOR_ATTR_GPIO_PARAM_VALUE,
5165 	/* Unsigned 32-bit attribute for GPIO pull type */
5166 	QCA_WLAN_VENDOR_ATTR_GPIO_PARAM_PULL_TYPE,
5167 	/* Unsigned 32-bit attribute for GPIO interrupt mode */
5168 	QCA_WLAN_VENDOR_ATTR_GPIO_PARAM_INTR_MODE,
5169 
5170 	/* keep last */
5171 	QCA_WLAN_VENDOR_ATTR_GPIO_PARAM_LAST,
5172 	QCA_WLAN_VENDOR_ATTR_GPIO_PARAM_MAX =
5173 		QCA_WLAN_VENDOR_ATTR_GPIO_PARAM_LAST - 1,
5174 };
5175 
5176 /**
5177  * qca_wlan_set_qdepth_thresh_attr - Parameters for setting
5178  * MSDUQ depth threshold per peer per tid in the target
5179  *
5180  * Associated Vendor Command:
5181  * QCA_NL80211_VENDOR_SUBCMD_SET_QDEPTH_THRESH
5182  */
5183 enum qca_wlan_set_qdepth_thresh_attr {
5184 	QCA_WLAN_VENDOR_ATTR_QDEPTH_THRESH_INVALID = 0,
5185 	/* 6-byte MAC address */
5186 	QCA_WLAN_VENDOR_ATTR_QDEPTH_THRESH_MAC_ADDR,
5187 	/* Unsigned 32-bit attribute for holding the TID */
5188 	QCA_WLAN_VENDOR_ATTR_QDEPTH_THRESH_TID,
5189 	/* Unsigned 32-bit attribute for holding the update mask
5190 	 * bit 0 - Update high priority msdu qdepth threshold
5191 	 * bit 1 - Update low priority msdu qdepth threshold
5192 	 * bit 2 - Update UDP msdu qdepth threshold
5193 	 * bit 3 - Update Non UDP msdu qdepth threshold
5194 	 * rest of bits are reserved
5195 	 */
5196 	QCA_WLAN_VENDOR_ATTR_QDEPTH_THRESH_UPDATE_MASK,
5197 	/* Unsigned 32-bit attribute for holding the threshold value */
5198 	QCA_WLAN_VENDOR_ATTR_QDEPTH_THRESH_VALUE,
5199 
5200 	/* keep last */
5201 	QCA_WLAN_VENDOR_ATTR_QDEPTH_THRESH_LAST,
5202 	QCA_WLAN_VENDOR_ATTR_QDEPTH_THRESH_MAX =
5203 		QCA_WLAN_VENDOR_ATTR_QDEPTH_THRESH_LAST - 1,
5204 };
5205 
5206 /**
5207  * qca_wlan_vendor_attr_external_acs_policy: Attribute values for
5208  * QCA_WLAN_VENDOR_ATTR_EXTERNAL_ACS_EVENT_POLICY to the vendor subcmd
5209  * QCA_NL80211_VENDOR_SUBCMD_EXTERNAL_ACS. This represents the
5210  * external ACS policies to select the channels w.r.t. the PCL weights.
5211  * (QCA_WLAN_VENDOR_ATTR_EXTERNAL_ACS_EVENT_PCL represents the channels and
5212  * their PCL weights.)
5213  * @QCA_WLAN_VENDOR_ATTR_EXTERNAL_ACS_POLICY_PCL_MANDATORY: Mandatory to
5214  * select a channel with non-zero PCL weight.
5215  * @QCA_WLAN_VENDOR_ATTR_EXTERNAL_ACS_POLICY_PCL_PREFERRED: Prefer a
5216  * channel with non-zero PCL weight.
5217  *
5218  */
5219 enum qca_wlan_vendor_attr_external_acs_policy {
5220 	QCA_WLAN_VENDOR_ATTR_EXTERNAL_ACS_POLICY_PCL_PREFERRED,
5221 	QCA_WLAN_VENDOR_ATTR_EXTERNAL_ACS_POLICY_PCL_MANDATORY,
5222 };
5223 
5224 /**
5225  * enum qca_wlan_vendor_attr_spectral_scan - Spectral scan config parameters
5226  */
5227 enum qca_wlan_vendor_attr_spectral_scan {
5228 	QCA_WLAN_VENDOR_ATTR_SPECTRAL_SCAN_CONFIG_INVALID = 0,
5229 	/*
5230 	 * Number of times the chip enters spectral scan mode before
5231 	 * deactivating spectral scans. When set to 0, chip will enter spectral
5232 	 * scan mode continuously. u32 attribute.
5233 	 */
5234 	QCA_WLAN_VENDOR_ATTR_SPECTRAL_SCAN_CONFIG_SCAN_COUNT = 1,
5235 	/*
5236 	 * Spectral scan period. Period increment resolution is 256*Tclk,
5237 	 * where Tclk = 1/44 MHz (Gmode), 1/40 MHz (Amode). u32 attribute.
5238 	 */
5239 	QCA_WLAN_VENDOR_ATTR_SPECTRAL_SCAN_CONFIG_SCAN_PERIOD = 2,
5240 	/* Spectral scan priority. u32 attribute. */
5241 	QCA_WLAN_VENDOR_ATTR_SPECTRAL_SCAN_CONFIG_PRIORITY = 3,
5242 	/* Number of FFT data points to compute. u32 attribute. */
5243 	QCA_WLAN_VENDOR_ATTR_SPECTRAL_SCAN_CONFIG_FFT_SIZE = 4,
5244 	/*
5245 	 * Enable targeted gain change before starting the spectral scan FFT.
5246 	 * u32 attribute.
5247 	 */
5248 	QCA_WLAN_VENDOR_ATTR_SPECTRAL_SCAN_CONFIG_GC_ENA = 5,
5249 	/* Restart a queued spectral scan. u32 attribute. */
5250 	QCA_WLAN_VENDOR_ATTR_SPECTRAL_SCAN_CONFIG_RESTART_ENA = 6,
5251 	/*
5252 	 * Noise floor reference number for the calculation of bin power.
5253 	 * u32 attribute.
5254 	 */
5255 	QCA_WLAN_VENDOR_ATTR_SPECTRAL_SCAN_CONFIG_NOISE_FLOOR_REF = 7,
5256 	/*
5257 	 * Disallow spectral scan triggers after TX/RX packets by setting
5258 	 * this delay value to roughly SIFS time period or greater.
5259 	 * u32 attribute.
5260 	 */
5261 	QCA_WLAN_VENDOR_ATTR_SPECTRAL_SCAN_CONFIG_INIT_DELAY = 8,
5262 	/*
5263 	 * Number of strong bins (inclusive) per sub-channel, below
5264 	 * which a signal is declared a narrow band tone. u32 attribute.
5265 	 */
5266 	QCA_WLAN_VENDOR_ATTR_SPECTRAL_SCAN_CONFIG_NB_TONE_THR = 9,
5267 	/*
5268 	 * Specify the threshold over which a bin is declared strong (for
5269 	 * scan bandwidth analysis). u32 attribute.
5270 	 */
5271 	QCA_WLAN_VENDOR_ATTR_SPECTRAL_SCAN_CONFIG_STR_BIN_THR = 10,
5272 	/* Spectral scan report mode. u32 attribute. */
5273 	QCA_WLAN_VENDOR_ATTR_SPECTRAL_SCAN_CONFIG_WB_RPT_MODE = 11,
5274 	/*
5275 	 * RSSI report mode, if the ADC RSSI is below
5276 	 * QCA_WLAN_VENDOR_ATTR_SPECTRAL_SCAN_CONFIG_RSSI_THR,
5277 	 * then FFTs will not trigger, but timestamps and summaries get
5278 	 * reported. u32 attribute.
5279 	 */
5280 	QCA_WLAN_VENDOR_ATTR_SPECTRAL_SCAN_CONFIG_RSSI_RPT_MODE = 12,
5281 	/*
5282 	 * ADC RSSI must be greater than or equal to this threshold (signed dB)
5283 	 * to ensure spectral scan reporting with normal error code.
5284 	 * u32 attribute.
5285 	 */
5286 	QCA_WLAN_VENDOR_ATTR_SPECTRAL_SCAN_CONFIG_RSSI_THR = 13,
5287 	/*
5288 	 * Format of frequency bin magnitude for spectral scan triggered FFTs:
5289 	 * 0: linear magnitude, 1: log magnitude (20*log10(lin_mag)).
5290 	 * u32 attribute.
5291 	 */
5292 	QCA_WLAN_VENDOR_ATTR_SPECTRAL_SCAN_CONFIG_PWR_FORMAT = 14,
5293 	/*
5294 	 * Format of FFT report to software for spectral scan triggered FFTs.
5295 	 * 0: No FFT report (only spectral scan summary report)
5296 	 * 1: 2-dword summary of metrics for each completed FFT + spectral scan
5297 	 * report
5298 	 * 2: 2-dword summary of metrics for each completed FFT + 1x-oversampled
5299 	 * bins (in-band) per FFT + spectral scan summary report
5300 	 * 3: 2-dword summary of metrics for each completed FFT + 2x-oversampled
5301 	 * bins (all) per FFT + spectral scan summary report
5302 	 * u32 attribute.
5303 	 */
5304 	QCA_WLAN_VENDOR_ATTR_SPECTRAL_SCAN_CONFIG_RPT_MODE = 15,
5305 	/*
5306 	 * Number of LSBs to shift out in order to scale the FFT bins.
5307 	 * u32 attribute.
5308 	 */
5309 	QCA_WLAN_VENDOR_ATTR_SPECTRAL_SCAN_CONFIG_BIN_SCALE = 16,
5310 	/*
5311 	 * Set to 1 (with spectral_scan_pwr_format=1), to report bin magnitudes
5312 	 * in dBm power. u32 attribute.
5313 	 */
5314 	QCA_WLAN_VENDOR_ATTR_SPECTRAL_SCAN_CONFIG_DBM_ADJ = 17,
5315 	/*
5316 	 * Per chain enable mask to select input ADC for search FFT.
5317 	 * u32 attribute.
5318 	 */
5319 	QCA_WLAN_VENDOR_ATTR_SPECTRAL_SCAN_CONFIG_CHN_MASK = 18,
5320 	/*
5321 	 * An unsigned 64-bit integer provided by host driver to identify the
5322 	 * spectral scan request. This attribute is included in the scan
5323 	 * response message for @QCA_NL80211_VENDOR_SUBCMD_SPECTRAL_SCAN_START
5324 	 * and used as an attribute in
5325 	 * @QCA_NL80211_VENDOR_SUBCMD_SPECTRAL_SCAN_STOP to identify the
5326 	 * specific scan to be stopped.
5327 	 */
5328 	QCA_WLAN_VENDOR_ATTR_SPECTRAL_SCAN_COOKIE = 19,
5329 	/* Skip interval for FFT reports. u32 attribute */
5330 	QCA_WLAN_VENDOR_ATTR_SPECTRAL_SCAN_CONFIG_FFT_PERIOD = 20,
5331 	/* Set to report only one set of FFT results.
5332 	 * u32 attribute.
5333 	 */
5334 	QCA_WLAN_VENDOR_ATTR_SPECTRAL_SCAN_CONFIG_SHORT_REPORT = 21,
5335 	/* Debug level for spectral module in driver.
5336 	 * 0 : Verbosity level 0
5337 	 * 1 : Verbosity level 1
5338 	 * 2 : Verbosity level 2
5339 	 * 3 : Matched filterID display
5340 	 * 4 : One time dump of FFT report
5341 	 * u32 attribute.
5342 	 */
5343 	QCA_WLAN_VENDOR_ATTR_SPECTRAL_SCAN_CONFIG_DEBUG_LEVEL = 22,
5344 	/* Type of spectral scan request. u32 attribute.
5345 	 * It uses values defined in enum
5346 	 * qca_wlan_vendor_attr_spectral_scan_request_type.
5347 	 */
5348 	QCA_WLAN_VENDOR_ATTR_SPECTRAL_SCAN_REQUEST_TYPE = 23,
5349 	QCA_WLAN_VENDOR_ATTR_SPECTRAL_SCAN_CONFIG_AFTER_LAST,
5350 	QCA_WLAN_VENDOR_ATTR_SPECTRAL_SCAN_CONFIG_MAX =
5351 		QCA_WLAN_VENDOR_ATTR_SPECTRAL_SCAN_CONFIG_AFTER_LAST - 1,
5352 };
5353 
5354 /**
5355  * enum qca_wlan_vendor_attr_spectral_diag_stats - Used by the vendor command
5356  * QCA_NL80211_VENDOR_SUBCMD_SPECTRAL_SCAN_GET_DIAG_STATS.
5357  */
5358 enum qca_wlan_vendor_attr_spectral_diag_stats {
5359 	QCA_WLAN_VENDOR_ATTR_SPECTRAL_SCAN_DIAG_INVALID = 0,
5360 	/* Number of spectral TLV signature mismatches.
5361 	 * u64 attribute.
5362 	 */
5363 	QCA_WLAN_VENDOR_ATTR_SPECTRAL_SCAN_DIAG_SIG_MISMATCH = 1,
5364 	/* Number of spectral phyerror events with insufficient length when
5365 	 * parsing for secondary 80 search FFT report. u64 attribute.
5366 	 */
5367 	QCA_WLAN_VENDOR_ATTR_SPECTRAL_SCAN_DIAG_SEC80_SFFT_INSUFFLEN = 2,
5368 	/* Number of spectral phyerror events without secondary 80
5369 	 * search FFT report. u64 attribute.
5370 	 */
5371 	QCA_WLAN_VENDOR_ATTR_SPECTRAL_SCAN_DIAG_NOSEC80_SFFT = 3,
5372 	/* Number of spectral phyerror events with vht operation segment 1 id
5373 	 * mismatches in search fft report. u64 attribute.
5374 	 */
5375 	QCA_WLAN_VENDOR_ATTR_SPECTRAL_SCAN_DIAG_VHTSEG1ID_MISMATCH = 4,
5376 	/* Number of spectral phyerror events with vht operation segment 2 id
5377 	 * mismatches in search fft report. u64 attribute.
5378 	 */
5379 	QCA_WLAN_VENDOR_ATTR_SPECTRAL_SCAN_DIAG_VHTSEG2ID_MISMATCH = 5,
5380 
5381 	QCA_WLAN_VENDOR_ATTR_SPECTRAL_SCAN_DIAG_AFTER_LAST,
5382 	QCA_WLAN_VENDOR_ATTR_SPECTRAL_SCAN_DIAG_MAX =
5383 	QCA_WLAN_VENDOR_ATTR_SPECTRAL_SCAN_DIAG_AFTER_LAST - 1,
5384 };
5385 
5386 /**
5387  * enum qca_wlan_vendor_attr_spectral_cap - Used by the vendor command
5388  * QCA_NL80211_VENDOR_SUBCMD_SPECTRAL_SCAN_GET_CAP_INFO.
5389  */
5390 enum qca_wlan_vendor_attr_spectral_cap {
5391 	QCA_WLAN_VENDOR_ATTR_SPECTRAL_SCAN_CAP_INVALID = 0,
5392 	/* Flag attribute to indicate phydiag capability */
5393 	QCA_WLAN_VENDOR_ATTR_SPECTRAL_SCAN_CAP_PHYDIAG = 1,
5394 	/* Flag attribute to indicate radar detection capability */
5395 	QCA_WLAN_VENDOR_ATTR_SPECTRAL_SCAN_CAP_RADAR = 2,
5396 	/* Flag attribute to indicate spectral capability */
5397 	QCA_WLAN_VENDOR_ATTR_SPECTRAL_SCAN_CAP_SPECTRAL = 3,
5398 	/* Flag attribute to indicate advanced spectral capability */
5399 	QCA_WLAN_VENDOR_ATTR_SPECTRAL_SCAN_CAP_ADVANCED_SPECTRAL = 4,
5400 
5401 	QCA_WLAN_VENDOR_ATTR_SPECTRAL_SCAN_CAP_AFTER_LAST,
5402 	QCA_WLAN_VENDOR_ATTR_SPECTRAL_SCAN_CAP_MAX =
5403 	QCA_WLAN_VENDOR_ATTR_SPECTRAL_SCAN_CAP_AFTER_LAST - 1,
5404 };
5405 
5406 /**
5407  * enum qca_wlan_vendor_attr_spectral_scan_status - used by the vendor command
5408  * QCA_NL80211_VENDOR_SUBCMD_SPECTRAL_SCAN_GET_STATUS.
5409  */
5410 enum qca_wlan_vendor_attr_spectral_scan_status {
5411 	QCA_WLAN_VENDOR_ATTR_SPECTRAL_SCAN_STATUS_INVALID = 0,
5412 	/* Flag attribute to indicate whether spectral scan is enabled */
5413 	QCA_WLAN_VENDOR_ATTR_SPECTRAL_SCAN_STATUS_IS_ENABLED = 1,
5414 	/* Flag attribute to indicate whether spectral scan is in progress*/
5415 	QCA_WLAN_VENDOR_ATTR_SPECTRAL_SCAN_STATUS_IS_ACTIVE = 2,
5416 
5417 	QCA_WLAN_VENDOR_ATTR_SPECTRAL_SCAN_STATUS_AFTER_LAST,
5418 	QCA_WLAN_VENDOR_ATTR_SPECTRAL_SCAN_STATUS_MAX =
5419 	QCA_WLAN_VENDOR_ATTR_SPECTRAL_SCAN_STATUS_AFTER_LAST - 1,
5420 };
5421 
5422 /**
5423  * enum qca_wlan_vendor_attr_config_latency_level - Level for
5424  * wlan latency module.
5425  *
5426  * There will be various of Wi-Fi functionality like scan/roaming/adaptive
5427  * power saving which would causing data exchange out of service, this
5428  * would be a big impact on latency. For latency sensitive applications over
5429  * Wi-Fi are intolerant to such operations and thus would configure them
5430  * to meet their respective needs. It is well understood by such applications
5431  * that altering the default behavior would degrade the Wi-Fi functionality
5432  * w.r.t the above pointed WLAN operations.
5433  *
5434  * @QCA_WLAN_VENDOR_ATTR_CONFIG_LATENCY_LEVEL_NORMAL:
5435  *      Default WLAN operation level which throughput orientated.
5436  * @QCA_WLAN_VENDOR_ATTR_CONFIG_LATENCY_LEVEL_MODERATE:
5437  *      Use moderate level to improve latency by limit scan duration.
5438  * @QCA_WLAN_VENDOR_ATTR_CONFIG_LATENCY_LEVEL_LOW:
5439  *      Use low latency level to benifit application like concurrent
5440  *      downloading or video streaming via constraint scan/adaptive PS.
5441  * @QCA_WLAN_VENDOR_ATTR_CONFIG_LATENCY_LEVEL_ULTRALOW:
5442  *      Use ultra low latency level to benefit for gaming/voice
5443  *      application via constraint scan/roaming/adaptive PS.
5444  */
5445 enum qca_wlan_vendor_attr_config_latency_level {
5446 	QCA_WLAN_VENDOR_ATTR_CONFIG_LATENCY_LEVEL_INVALID = 0,
5447 	QCA_WLAN_VENDOR_ATTR_CONFIG_LATENCY_LEVEL_NORMAL = 1,
5448 	QCA_WLAN_VENDOR_ATTR_CONFIG_LATENCY_LEVEL_MODERATE = 2,
5449 	QCA_WLAN_VENDOR_ATTR_CONFIG_LATENCY_LEVEL_LOW = 3,
5450 	QCA_WLAN_VENDOR_ATTR_CONFIG_LATENCY_LEVEL_ULTRALOW = 4,
5451 
5452 	/* keep last */
5453 	QCA_WLAN_VENDOR_ATTR_CONFIG_LATENCY_LEVEL_AFTER_LAST,
5454 	QCA_WLAN_VENDOR_ATTR_CONFIG_LATENCY_LEVEL_MAX =
5455 	QCA_WLAN_VENDOR_ATTR_CONFIG_LATENCY_LEVEL_AFTER_LAST - 1,
5456 };
5457 
5458 /**
5459  * qca_wlan_vendor_attr_spectral_scan_request_type: Attribute values for
5460  * QCA_WLAN_VENDOR_ATTR_SPECTRAL_SCAN_REQUEST_TYPE to the vendor subcmd
5461  * QCA_NL80211_VENDOR_SUBCMD_SPECTRAL_SCAN_START. This represents the
5462  * spectral scan request types.
5463  * @QCA_WLAN_VENDOR_ATTR_SPECTRAL_SCAN_REQUEST_TYPE_SCAN_AND_CONFIG: Request to
5464  * set the spectral parameters and start scan.
5465  * @QCA_WLAN_VENDOR_ATTR_SPECTRAL_SCAN_REQUEST_TYPE_SCAN: Request to
5466  * only set the spectral parameters.
5467  * @QCA_WLAN_VENDOR_ATTR_SPECTRAL_SCAN_REQUEST_TYPE_CONFIG: Request to
5468  * only start the spectral scan.
5469  */
5470 enum qca_wlan_vendor_attr_spectral_scan_request_type {
5471 	QCA_WLAN_VENDOR_ATTR_SPECTRAL_SCAN_REQUEST_TYPE_SCAN_AND_CONFIG,
5472 	QCA_WLAN_VENDOR_ATTR_SPECTRAL_SCAN_REQUEST_TYPE_SCAN,
5473 	QCA_WLAN_VENDOR_ATTR_SPECTRAL_SCAN_REQUEST_TYPE_CONFIG,
5474 };
5475 
5476 /**
5477  * enum qca_wlan_vendor_attr_rropavail_info - Specifies whether Representative
5478  * RF Operating Parameter (RROP) information is available, and if so, at which
5479  * point in the application-driver interaction sequence it can be retrieved by
5480  * the application from the driver. This point may vary by architecture and
5481  * other factors. This is a u16 value.
5482  */
5483 enum qca_wlan_vendor_attr_rropavail_info {
5484 	/* RROP information is unavailable. */
5485 	QCA_WLAN_VENDOR_ATTR_RROPAVAIL_INFO_UNAVAILABLE,
5486 	/* RROP information is available and the application can retrieve the
5487 	 * information after receiving an QCA_NL80211_VENDOR_SUBCMD_EXTERNAL_ACS
5488 	 * event from the driver.
5489 	 */
5490 	QCA_WLAN_VENDOR_ATTR_RROPAVAIL_INFO_EXTERNAL_ACS_START,
5491 	/* RROP information is available only after a vendor specific scan
5492 	 * (requested using QCA_NL80211_VENDOR_SUBCMD_TRIGGER_SCAN) has
5493 	 * successfully completed. The application can retrieve the information
5494 	 * after receiving the QCA_NL80211_VENDOR_SUBCMD_SCAN_DONE event from
5495 	 * the driver.
5496 	 */
5497 	QCA_WLAN_VENDOR_ATTR_RROPAVAIL_INFO_VSCAN_END,
5498 };
5499 
5500 /**
5501  * enum qca_wlan_vendor_attr_rrop_info - Specifies vendor specific
5502  * Representative RF Operating Parameter (RROP) information. It is sent for the
5503  * vendor command QCA_NL80211_VENDOR_SUBCMD_GET_RROP_INFO. This information is
5504  * intended for use by external Auto Channel Selection applications. It provides
5505  * guidance values for some RF parameters that are used by the system during
5506  * operation. These values could vary by channel, band, radio, and so on.
5507  */
5508 enum qca_wlan_vendor_attr_rrop_info {
5509 	QCA_WLAN_VENDOR_ATTR_RROP_INFO_INVALID = 0,
5510 
5511 	/* Representative Tx Power List (RTPL) which has an array of nested
5512 	 * values as per attributes in enum qca_wlan_vendor_attr_rtplinst.
5513 	 */
5514 	QCA_WLAN_VENDOR_ATTR_RROP_INFO_RTPL = 1,
5515 
5516 	QCA_WLAN_VENDOR_ATTR_RROP_INFO_AFTER_LAST,
5517 	QCA_WLAN_VENDOR_ATTR_RROP_INFO_MAX =
5518 	QCA_WLAN_VENDOR_ATTR_RROP_INFO_AFTER_LAST - 1
5519 };
5520 
5521 /**
5522  * enum qca_wlan_vendor_attr_rtplinst - Specifies attributes for individual list
5523  * entry instances in the Representative Tx Power List (RTPL). It provides
5524  * simplified power values intended for helping external Auto channel Selection
5525  * applications compare potential Tx power performance between channels, other
5526  * operating conditions remaining identical. These values are not necessarily
5527  * the actual Tx power values that will be used by the system. They are also not
5528  * necessarily the max or average values that will be used. Instead, they are
5529  * relative, summarized keys for algorithmic use computed by the driver or
5530  * underlying firmware considering a number of vendor specific factors.
5531  */
5532 enum qca_wlan_vendor_attr_rtplinst {
5533 	QCA_WLAN_VENDOR_ATTR_RTPLINST_INVALID = 0,
5534 
5535 	/* Primary channel number (u8) */
5536 	QCA_WLAN_VENDOR_ATTR_RTPLINST_PRIMARY = 1,
5537 	/* Representative Tx power in dBm (s32) with emphasis on throughput. */
5538 	QCA_WLAN_VENDOR_ATTR_RTPLINST_TXPOWER_THROUGHPUT = 2,
5539 	/* Representative Tx power in dBm (s32) with emphasis on range. */
5540 	QCA_WLAN_VENDOR_ATTR_RTPLINST_TXPOWER_RANGE = 3,
5541 
5542 	QCA_WLAN_VENDOR_ATTR_RTPLINST_AFTER_LAST,
5543 	QCA_WLAN_VENDOR_ATTR_RTPLINST_MAX =
5544 		QCA_WLAN_VENDOR_ATTR_RTPLINST_AFTER_LAST - 1,
5545 };
5546 
5547 /**
5548  * enum qca_wlan_vendor_attr_mac - Used by the vendor command
5549  * QCA_NL80211_VENDOR_SUBCMD_WLAN_MAC_INFO.
5550  *
5551  * @QCA_WLAN_VENDOR_ATTR_MAC_INFO: MAC mode info list which has an
5552  *  array of nested values as per attributes in
5553  *  enum qca_wlan_vendor_attr_mac_mode_info.
5554  */
5555 enum qca_wlan_vendor_attr_mac {
5556 	QCA_WLAN_VENDOR_ATTR_MAC_INVALID = 0,
5557 	QCA_WLAN_VENDOR_ATTR_MAC_INFO = 1,
5558 
5559 	/* keep last */
5560 	QCA_WLAN_VENDOR_ATTR_MAC_AFTER_LAST,
5561 	QCA_WLAN_VENDOR_ATTR_MAC_MAX =
5562 		QCA_WLAN_VENDOR_ATTR_MAC_AFTER_LAST - 1,
5563 };
5564 
5565 /**
5566  * enum qca_wlan_vendor_attr_mac_iface_info - Information of the connected
5567  * WiFi netdev interface on a respective MAC. Used by the attribute
5568  * QCA_WLAN_VENDOR_ATTR_MAC_IFACE_INFO.
5569  *
5570  * @QCA_WLAN_VENDOR_ATTR_MAC_IFACE_INFO_ID: Wi-Fi Netdev's interface id(u32).
5571  * @QCA_WLAN_VENDOR_ATTR_MAC_IFACE_INFO_FREQ: Associated frequency in MHz of
5572  *  the connected Wi-Fi interface(u32).
5573  */
5574 enum qca_wlan_vendor_attr_mac_iface_info {
5575 	QCA_WLAN_VENDOR_ATTR_MAC_IFACE_INFO_INVALID = 0,
5576 	QCA_WLAN_VENDOR_ATTR_MAC_IFACE_INFO_IFINDEX = 1,
5577 	QCA_WLAN_VENDOR_ATTR_MAC_IFACE_INFO_FREQ = 2,
5578 
5579 	/* keep last */
5580 	QCA_WLAN_VENDOR_ATTR_MAC_IFACE_INFO_AFTER_LAST,
5581 	QCA_WLAN_VENDOR_ATTR_MAC_IFACE_INFO_MAX =
5582 		QCA_WLAN_VENDOR_ATTR_MAC_IFACE_INFO_AFTER_LAST - 1,
5583 };
5584 
5585 /**
5586  * enum qca_wlan_vendor_attr_mac_info - Points to MAC the information.
5587  *  Used by the attribute QCA_WLAN_VENDOR_ATTR_MAC_INFO of the
5588  *  vendor command QCA_NL80211_VENDOR_SUBCMD_WLAN_MAC_INFO.
5589  *
5590  * @QCA_WLAN_VENDOR_ATTR_MAC_INFO_MAC_ID: Hardware MAC ID associated for the
5591  *  MAC (u32)
5592  * @QCA_WLAN_VENDOR_ATTR_MAC_INFO_BAND: Band supported by the respective MAC
5593  *  at a given point. This is a u32 bitmask of BIT(NL80211_BAND_*) as described
5594  *  in enum nl80211_band.
5595  * @QCA_WLAN_VENDOR_ATTR_MAC_IFACE_INFO: Refers to list of WLAN net dev
5596  * interfaces associated with this MAC. Represented by enum
5597  * qca_wlan_vendor_attr_mac_iface_info.
5598  */
5599 enum qca_wlan_vendor_attr_mac_info {
5600 	QCA_WLAN_VENDOR_ATTR_MAC_INFO_INVALID = 0,
5601 	QCA_WLAN_VENDOR_ATTR_MAC_INFO_MAC_ID = 1,
5602 	QCA_WLAN_VENDOR_ATTR_MAC_INFO_BAND = 2,
5603 	QCA_WLAN_VENDOR_ATTR_MAC_IFACE_INFO = 3,
5604 
5605 	/* keep last */
5606 	QCA_WLAN_VENDOR_ATTR_MAC_INFO_AFTER_LAST,
5607 	QCA_WLAN_VENDOR_ATTR_MAC_INFO_MAX =
5608 		QCA_WLAN_VENDOR_ATTR_MAC_INFO_AFTER_LAST - 1,
5609 
5610 };
5611 
5612 #if !(defined (SUPPORT_WDEV_CFG80211_VENDOR_EVENT_ALLOC)) &&	\
5613 	(LINUX_VERSION_CODE < KERNEL_VERSION(4, 1, 0)) && 	\
5614 	!(defined(WITH_BACKPORTS))
5615 
5616 static inline struct sk_buff *
5617 backported_cfg80211_vendor_event_alloc(struct wiphy *wiphy,
5618 					struct wireless_dev *wdev,
5619 					int approxlen,
5620 					int event_idx, gfp_t gfp)
5621 {
5622 	struct sk_buff *skb;
5623 
5624 	skb = cfg80211_vendor_event_alloc(wiphy, approxlen, event_idx, gfp);
5625 
5626 	if (skb && wdev) {
5627 		struct nlattr *attr;
5628 		u32 ifindex = wdev->netdev->ifindex;
5629 
5630 		nla_nest_cancel(skb, ((void **)skb->cb)[2]);
5631 		if (nla_put_u32(skb, NL80211_ATTR_IFINDEX, ifindex))
5632 			goto nla_fail;
5633 
5634 		attr = nla_nest_start(skb, NL80211_ATTR_VENDOR_DATA);
5635 		((void **)skb->cb)[2] = attr;
5636 	}
5637 
5638 	return skb;
5639 
5640 nla_fail:
5641 	kfree_skb(skb);
5642 
5643 	return NULL;
5644 }
5645 #define cfg80211_vendor_event_alloc backported_cfg80211_vendor_event_alloc
5646 #endif
5647 
5648 /**
5649  * enum he_fragmentation_val - HE fragmentation support values
5650  * Indicates level of dynamic fragmentation that is supported by
5651  * a STA as a recipient.
5652  * HE fragmentation values are defined as per 11ax spec and are used in
5653  * HE capability IE to advertise the support. These values are validated
5654  * in the driver to check the device capability and advertised in the HE
5655  * capability element.
5656  *
5657  * @HE_FRAG_DISABLE: no support for dynamic fragmentation
5658  * @HE_FRAG_LEVEL1: support for dynamic fragments that are
5659  *	contained within an MPDU or S-MPDU, no support for dynamic fragments
5660  *	within an A-MPDU that is not an S-MPDU.
5661  * @HE_FRAG_LEVEL2: support for dynamic fragments that are
5662  *	contained within an MPDU or S-MPDU and support for up to one dynamic
5663  *	fragment for each MSDU, each A-MSDU if supported by the recipient, and
5664  *	each MMPDU within an A-MPDU or multi-TID A-MPDU that is not an
5665  *	MPDU or S-MPDU.
5666  * @HE_FRAG_LEVEL3: support for dynamic fragments that are
5667  *	contained within an MPDU or S-MPDU and support for multiple dynamic
5668  *	fragments for each MSDU and for each A-MSDU if supported by the
5669  *	recipient within an A-MPDU or multi-TID AMPDU and up to one dynamic
5670  *	fragment for each MMPDU in a multi-TID A-MPDU that is not an S-MPDU.
5671  */
5672 enum he_fragmentation_val {
5673 	HE_FRAG_DISABLE,
5674 	HE_FRAG_LEVEL1,
5675 	HE_FRAG_LEVEL2,
5676 	HE_FRAG_LEVEL3,
5677 };
5678 
5679 /**
5680  * enum he_mcs_config - HE MCS support configuration
5681  *
5682  * Configures the HE Tx/Rx MCS map in HE capability IE for given bandwidth.
5683  * These values are used in driver to configure the HE MCS map to advertise
5684  * Tx/Rx MCS map in HE capability and these values are applied for all the
5685  * streams supported by the device. To configure MCS for different bandwidths,
5686  * vendor command needs to be sent using this attribute with appropriate value.
5687  * For example, to configure HE_80_MCS_0_7, send vendor command using HE MCS
5688  * attribute with QCA_WLAN_VENDOR_ATTR_HE_80_MCS0_7. And to configure HE MCS
5689  * for HE_160_MCS0_11 send this command using HE MCS config attribute with
5690  * value QCA_WLAN_VENDOR_ATTR_HE_160_MCS0_11;
5691  *
5692  * @HE_80_MCS0_7: support for HE 80/40/20MHz MCS 0 to 7
5693  * @HE_80_MCS0_9: support for HE 80/40/20MHz MCS 0 to 9
5694  * @HE_80_MCS0_11: support for HE 80/40/20MHz MCS 0 to 11
5695  * @HE_160_MCS0_7: support for HE 160MHz MCS 0 to 7
5696  * @HE_160_MCS0_9: support for HE 160MHz MCS 0 to 9
5697  * @HE_160_MCS0_11: support for HE 160MHz MCS 0 to 11
5698  * @HE_80p80_MCS0_7: support for HE 80p80MHz MCS 0 to 7
5699  * @HE_80p80_MCS0_9: support for HE 80p80MHz MCS 0 to 9
5700  * @HE_80p80_MCS0_11: support for HE 80p80MHz MCS 0 to 11
5701  */
5702 enum he_mcs_config {
5703 	HE_80_MCS0_7 = 0,
5704 	HE_80_MCS0_9 = 1,
5705 	HE_80_MCS0_11 = 2,
5706 	HE_160_MCS0_7 = 4,
5707 	HE_160_MCS0_9 = 5,
5708 	HE_160_MCS0_11 = 6,
5709 	HE_80p80_MCS0_7 = 8,
5710 	HE_80p80_MCS0_9 = 9,
5711 	HE_80p80_MCS0_11 = 10,
5712 };
5713 
5714 /**
5715  * enum qca_wlan_ba_session_config - BA session configuration
5716  *
5717  * Indicates the configuration values for BA session configuration attribute.
5718  *
5719  * @QCA_WLAN_ADD_BA: Establish a new BA session with given configuration.
5720  * @QCA_WLAN_DELETE_BA: Delete the existing BA session for given TID.
5721  */
5722 enum qca_wlan_ba_session_config {
5723 	QCA_WLAN_ADD_BA = 1,
5724 	QCA_WLAN_DELETE_BA = 2,
5725 };
5726 
5727 /**
5728  * enum qca_wlan_ac_type - access category type
5729  *
5730  * Indicates the access category type value.
5731  *
5732  * @QCA_WLAN_AC_BE: BE access category
5733  * @QCA_WLAN_AC_BK: BK access category
5734  * @QCA_WLAN_AC_VI: VI access category
5735  * @QCA_WLAN_AC_VO: VO access category
5736  * @QCA_WLAN_AC_ALL: All ACs
5737  */
5738 enum qca_wlan_ac_type {
5739 	QCA_WLAN_AC_BE = 0,
5740 	QCA_WLAN_AC_BK = 1,
5741 	QCA_WLAN_AC_VI = 2,
5742 	QCA_WLAN_AC_VO = 3,
5743 	QCA_WLAN_AC_ALL = 4,
5744 };
5745 
5746 /* Attributes for data used by
5747  * QCA_NL80211_VENDOR_SUBCMD_WIFI_TEST_CONFIGURATION
5748  */
5749 enum qca_wlan_vendor_attr_wifi_test_config {
5750 	QCA_WLAN_VENDOR_ATTR_WIFI_TEST_CONFIG_INVALID = 0,
5751 	/* 8-bit unsigned value to configure the driver to enable/disable
5752 	 * WMM feature. This attribute is used to configure testbed device.
5753 	 * 1-enable, 0-disable
5754 	 */
5755 	QCA_WLAN_VENDOR_ATTR_WIFI_TEST_CONFIG_WMM_ENABLE = 1,
5756 
5757 	/* 8-bit unsigned value to configure the driver to accept/reject
5758 	 * the addba request from peer. This attribute is used to configure
5759 	 * the testbed device.
5760 	 * 1-accept addba, 0-reject addba
5761 	 */
5762 	QCA_WLAN_VENDOR_ATTR_WIFI_TEST_CONFIG_ACCEPT_ADDBA_REQ = 2,
5763 
5764 	/* 8-bit unsigned value to configure the driver to send or not to
5765 	 * send the addba request to peer.
5766 	 * This attribute is used to configure the testbed device.
5767 	 * 1-send addba, 0-do not send addba
5768 	 */
5769 	QCA_WLAN_VENDOR_ATTR_WIFI_TEST_CONFIG_SEND_ADDBA_REQ = 3,
5770 
5771 	/* 8-bit unsigned value to indicate the HE fragmentation support.
5772 	 * Uses enum he_fragmentation_val values.
5773 	 * This attribute is used to configure the testbed device to
5774 	 * allow the advertised hardware capabilities to be downgraded
5775 	 * for testing purposes.
5776 	 */
5777 	QCA_WLAN_VENDOR_ATTR_WIFI_TEST_CONFIG_HE_FRAGMENTATION = 4,
5778 
5779 	/* 8-bit unsigned value to indicate the HE MCS support.
5780 	 * Uses enum he_mcs_config values.
5781 	 * This attribute is used to configure the testbed device to
5782 	 * allow the advertised hardware capabilities to be downgraded
5783 	 * for testing purposes.
5784 	 */
5785 	QCA_WLAN_VENDOR_ATTR_WIFI_TEST_CONFIG_HE_MCS = 5,
5786 
5787 	/* 8-bit unsigned value to configure the driver to allow or not to
5788 	 * allow the connection with WEP/TKIP in HT/VHT/HE modes.
5789 	 * This attribute is used to configure the testbed device.
5790 	 * 1-allow wep/tkip in HT/VHT/HE, 0-do not allow wep/tkip
5791 	 */
5792 	QCA_WLAN_VENDOR_ATTR_WIFI_TEST_CONFIG_WEP_TKIP_IN_HE = 6,
5793 
5794 	/* 8-bit unsigned value to configure the driver to add a
5795 	 * new BA session or delete the existing BA session for
5796 	 * given TID. ADDBA command uses the buffer size and tid
5797 	 * configuration if user specifies the values else default
5798 	 * value for buffer size is used for all tids if the tid
5799 	 * also not specified. For DEL_BA command TID value is
5800 	 * required to process the command.
5801 	 * Uses enum qca_wlan_ba_session_config values.
5802 	 * This attribute is used to configure the testbed device.
5803 	 */
5804 	QCA_WLAN_VENDOR_ATTR_WIFI_TEST_CONFIG_ADD_DEL_BA_SESSION = 7,
5805 
5806 	/* 8-bit unsigned value to configure the buffer size in addba
5807 	 * request and response frames.
5808 	 * This attribute is used to configure the testbed device.
5809 	 * The range of the value is 0 to 255
5810 	 */
5811 	QCA_WLAN_VENDOR_ATTR_WIFI_TEST_CONFIG_ADDBA_BUFF_SIZE = 8,
5812 
5813 	/* 8-bit unsigned value to configure the buffer size in addba
5814 	 * request and response frames.
5815 	 * This attribute is used to configure the testbed device.
5816 	 */
5817 	QCA_WLAN_VENDOR_ATTR_WIFI_TEST_CONFIG_BA_TID = 9,
5818 
5819 	/* 8-bit unsigned value to configure the no ack policy.
5820 	 * To configure no ack policy, access category value
5821 	 * is required to process the command.
5822 	 * This attribute is used to configure the testbed device.
5823 	 * 1 - enable no ack, 0 - disable no ack
5824 	 */
5825 	QCA_WLAN_VENDOR_ATTR_WIFI_TEST_CONFIG_ENABLE_NO_ACK = 10,
5826 
5827 	/* 8-bit unsigned value to configure the AC for no ack policy
5828 	 * This attribute is used to configure the testbed device.
5829 	 * uses the enum qca_wlan_ac_type values
5830 	 */
5831 	QCA_WLAN_VENDOR_ATTR_WIFI_TEST_CONFIG_NO_ACK_AC = 11,
5832 
5833 	/* keep last */
5834 	QCA_WLAN_VENDOR_ATTR_WIFI_TEST_CONFIG_AFTER_LAST,
5835 	QCA_WLAN_VENDOR_ATTR_WIFI_TEST_CONFIG_MAX =
5836 	QCA_WLAN_VENDOR_ATTR_WIFI_TEST_CONFIG_AFTER_LAST - 1,
5837 };
5838 
5839 #endif
5840