1 /*
2  * Copyright (C) 2014 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *     http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 #ifndef __VENDOR_DEFINITIONS_H__
18 #define __VENDOR_DEFINITIONS_H__
19 
20 #define WIFI_SCANNING_MAC_OUI_LENGTH 3
21 #define WIFI_MAC_ADDR_LENGTH 6
22 
23 /*Internal to Android HAL component */
24 /* subcommands for link layer statistics start here */
25 #ifndef QCA_NL80211_VENDOR_SUBCMD_LL_STATS_SET
26 #define QCA_NL80211_VENDOR_SUBCMD_LL_STATS_SET 14
27 #define QCA_NL80211_VENDOR_SUBCMD_LL_STATS_GET 15
28 #define QCA_NL80211_VENDOR_SUBCMD_LL_STATS_CLR 16
29 /* subcommands for gscan start here */
30 #define QCA_NL80211_VENDOR_SUBCMD_GSCAN_START 20
31 #define QCA_NL80211_VENDOR_SUBCMD_GSCAN_STOP 21
32 #define QCA_NL80211_VENDOR_SUBCMD_GSCAN_GET_VALID_CHANNELS 22
33 #define QCA_NL80211_VENDOR_SUBCMD_GSCAN_GET_CAPABILITIES 23
34 #define QCA_NL80211_VENDOR_SUBCMD_GSCAN_GET_CACHED_RESULTS 24
35 /* Used when report_threshold is reached in scan cache. */
36 #define QCA_NL80211_VENDOR_SUBCMD_GSCAN_SCAN_RESULTS_AVAILABLE 25
37 /* Used to report scan results when each probe rsp. is received,
38  * if report_events enabled in wifi_scan_cmd_params.
39  */
40 #define QCA_NL80211_VENDOR_SUBCMD_GSCAN_FULL_SCAN_RESULT 26
41 /* Indicates progress of scanning state-machine. */
42 #define QCA_NL80211_VENDOR_SUBCMD_GSCAN_SCAN_EVENT 27
43 /* Indicates BSSID Hotlist. */
44 #define QCA_NL80211_VENDOR_SUBCMD_GSCAN_HOTLIST_AP_FOUND 28
45 #define QCA_NL80211_VENDOR_SUBCMD_GSCAN_SET_BSSID_HOTLIST 29
46 #define QCA_NL80211_VENDOR_SUBCMD_GSCAN_RESET_BSSID_HOTLIST 30
47 #define QCA_NL80211_VENDOR_SUBCMD_GSCAN_SIGNIFICANT_CHANGE 31
48 #define QCA_NL80211_VENDOR_SUBCMD_GSCAN_SET_SIGNIFICANT_CHANGE 32
49 #define QCA_NL80211_VENDOR_SUBCMD_GSCAN_RESET_SIGNIFICANT_CHANGE 33
50 /* TDLS Commands. */
51 #define QCA_NL80211_VENDOR_SUBCMD_TDLS_ENABLE 34
52 #define QCA_NL80211_VENDOR_SUBCMD_TDLS_DISABLE 35
53 #define QCA_NL80211_VENDOR_SUBCMD_TDLS_GET_STATUS 36
54 #define QCA_NL80211_VENDOR_SUBCMD_TDLS_STATE 37
55 /* Supported features. */
56 #define QCA_NL80211_VENDOR_SUBCMD_GET_SUPPORTED_FEATURES 38
57 /* set scanning_mac_oui */
58 #define QCA_NL80211_VENDOR_SUBCMD_SCANNING_MAC_OUI 39
59 /* Set nodfs_flag */
60 #define QCA_NL80211_VENDOR_SUBCMD_NO_DFS_FLAG 40
61 /* Indicates BSSID Hotlist AP lost. */
62 #define QCA_NL80211_VENDOR_SUBCMD_GSCAN_HOTLIST_AP_LOST 41
63 /* Get Concurrency Matrix */
64 #define QCA_NL80211_VENDOR_SUBCMD_GET_CONCURRENCY_MATRIX 42
65 /* Get Wifi Specific Info */
66 #define QCA_NL80211_VENDOR_SUBCMD_GET_WIFI_INFO 61
67 /* Start Wifi Logger */
68 #define QCA_NL80211_VENDOR_SUBCMD_WIFI_LOGGER_START 62
69 /* Start Wifi Memory Dump */
70 #define QCA_NL80211_VENDOR_SUBCMD_WIFI_LOGGER_MEMORY_DUMP 63
71 /* Roaming */
72 #define QCA_NL80211_VENDOR_SUBCMD_ROAM 64
73 
74 /* APIs corresponding to the sub commands 65-68 are deprecated.
75  * These sub commands are reserved and not supposed to be used
76  * for any other purpose
77  */
78 /* PNO */
79 #define QCA_NL80211_VENDOR_SUBCMD_PNO_SET_LIST 69
80 #define QCA_NL80211_VENDOR_SUBCMD_PNO_SET_PASSPOINT_LIST 70
81 #define QCA_NL80211_VENDOR_SUBCMD_PNO_RESET_PASSPOINT_LIST 71
82 #define QCA_NL80211_VENDOR_SUBCMD_PNO_NETWORK_FOUND 72
83 #define QCA_NL80211_VENDOR_SUBCMD_PNO_PASSPOINT_NETWORK_FOUND 73
84 /* Wi-Fi Configuration subcommands */
85 #define QCA_NL80211_VENDOR_SUBCMD_SET_WIFI_CONFIGURATION 74
86 #define QCA_NL80211_VENDOR_SUBCMD_GET_WIFI_CONFIGURATION 75
87 /* WiFiLogger Support feature set */
88 #define QCA_NL80211_VENDOR_SUBCMD_GET_LOGGER_FEATURE_SET 76
89 /* WiFiLogger Get Ring Data */
90 #define QCA_NL80211_VENDOR_SUBCMD_GET_RING_DATA 77
91 /* Get tdls capabilities */
92 #define QCA_NL80211_VENDOR_SUBCMD_TDLS_GET_CAPABILITIES 78
93 /* offloaded packets*/
94 #define QCA_NL80211_VENDOR_SUBCMD_OFFLOADED_PACKETS 79
95 /* RSSI monitoring*/
96 #define QCA_NL80211_VENDOR_SUBCMD_MONITOR_RSSI 80
97 /* Nan Data Path */
98 #define QCA_NL80211_VENDOR_SUBCMD_NDP 81
99 /* Neighbour Discovery offload */
100 #define QCA_NL80211_VENDOR_SUBCMD_ND_OFFLOAD 82
101 /* Set packet filter for BPF*/
102 #define QCA_NL80211_VENDOR_SUBCMD_PACKET_FILTER 83
103 /* Get Driver-firmware interface maximum supported size*/
104 #define QCA_NL80211_VENDOR_SUBCMD_GET_BUS_SIZE 84
105 /* Get wake reason stats */
106 #define QCA_NL80211_VENDOR_SUBCMD_GET_WAKE_REASON_STATS 85
107 #endif
108 
109 enum qca_wlan_vendor_attr_ll_stats_set
110 {
111     QCA_WLAN_VENDOR_ATTR_LL_STATS_SET_INVALID = 0,
112     /* Unsigned 32-bit value */
113     QCA_WLAN_VENDOR_ATTR_LL_STATS_SET_CONFIG_MPDU_SIZE_THRESHOLD = 1,
114     QCA_WLAN_VENDOR_ATTR_LL_STATS_SET_CONFIG_AGGRESSIVE_STATS_GATHERING,
115     /* keep last */
116     QCA_WLAN_VENDOR_ATTR_LL_STATS_SET_AFTER_LAST,
117     QCA_WLAN_VENDOR_ATTR_LL_STATS_SET_MAX =
118         QCA_WLAN_VENDOR_ATTR_LL_STATS_SET_AFTER_LAST - 1,
119 };
120 
121 enum qca_wlan_vendor_attr_ll_stats_clr
122 {
123     QCA_WLAN_VENDOR_ATTR_LL_STATS_CLR_INVALID = 0,
124     /* Unsigned 32bit bitmap  for clearing statistics
125      * All radio statistics                     0x00000001
126      * cca_busy_time (within radio statistics)  0x00000002
127      * All channel stats (within radio statistics) 0x00000004
128      * All scan statistics (within radio statistics) 0x00000008
129      * All interface statistics                     0x00000010
130      * All tx rate statistics (within interface statistics) 0x00000020
131      * All ac statistics (with in interface statistics) 0x00000040
132      * All contention (min, max, avg) statistics (within ac statisctics)
133      * 0x00000080.
134      */
135     QCA_WLAN_VENDOR_ATTR_LL_STATS_CLR_CONFIG_REQ_MASK,
136     /* Unsigned 8bit value : Request to stop statistics collection */
137     QCA_WLAN_VENDOR_ATTR_LL_STATS_CLR_CONFIG_STOP_REQ,
138 
139     /* Unsigned 32bit bitmap : Response from the driver
140      * for the cleared statistics
141      */
142     QCA_WLAN_VENDOR_ATTR_LL_STATS_CLR_CONFIG_RSP_MASK,
143     /* Unsigned 8bit value: Response from driver/firmware
144      * for the stop request
145      */
146     QCA_WLAN_VENDOR_ATTR_LL_STATS_CLR_CONFIG_STOP_RSP,
147     /* keep last */
148     QCA_WLAN_VENDOR_ATTR_LL_STATS_CLR_AFTER_LAST,
149     QCA_WLAN_VENDOR_ATTR_LL_STATS_CLR_MAX =
150         QCA_WLAN_VENDOR_ATTR_LL_STATS_CLR_AFTER_LAST - 1,
151 };
152 
153 enum qca_wlan_vendor_attr_ll_stats_get
154 {
155     QCA_WLAN_VENDOR_ATTR_LL_STATS_GET_INVALID = 0,
156     /* Unsigned 32bit value provided by the caller issuing the GET stats
157      * command. When reporting the stats results, the driver uses the same
158      * value to indicate which GET request the results correspond to.
159      */
160     QCA_WLAN_VENDOR_ATTR_LL_STATS_GET_CONFIG_REQ_ID,
161     /* Unsigned 32bit value - bit mask to identify what statistics are
162      * requested for retrieval.
163      * Radio Statistics 0x00000001
164      * Interface Statistics 0x00000020
165      * All Peer Statistics 0x00000040
166      * Peer Statistics     0x00000080
167      */
168     QCA_WLAN_VENDOR_ATTR_LL_STATS_GET_CONFIG_REQ_MASK,
169     /* keep last */
170     QCA_WLAN_VENDOR_ATTR_LL_STATS_GET_AFTER_LAST,
171     QCA_WLAN_VENDOR_ATTR_LL_STATS_GET_MAX =
172         QCA_WLAN_VENDOR_ATTR_LL_STATS_GET_AFTER_LAST - 1,
173 };
174 
175 enum qca_wlan_vendor_attr_ll_stats_results
176 {
177     QCA_WLAN_VENDOR_ATTR_LL_STATS_INVALID = 0,
178     /* Unsigned 32bit value. Used by the driver; must match the request id
179      * provided with the QCA_NL80211_VENDOR_SUBCMD_LL_STATS_GET command.
180      */
181     QCA_WLAN_VENDOR_ATTR_LL_STATS_RESULTS_REQ_ID,
182 
183     /* Unsigned 32bit value */
184     QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_BEACON_RX,
185     /* Unsigned 32bit value */
186     QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_MGMT_RX,
187     /* Unsigned 32bit value */
188     QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_MGMT_ACTION_RX,
189     /* Unsigned 32bit value */
190     QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_MGMT_ACTION_TX,
191     /* Signed 32bit value */
192     QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_RSSI_MGMT,
193     /* Signed 32bit value */
194     QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_RSSI_DATA,
195     /* Signed 32bit value */
196     QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_RSSI_ACK,
197 
198     /* Attributes of type QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_INFO_* are
199      * nested within the interface stats.
200      */
201 
202     /* Interface mode, e.g., STA, SOFTAP, IBSS, etc.
203      * Type = enum wifi_interface_mode.
204      */
205     QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_INFO_MODE,
206     /* Interface MAC address. An array of 6 Unsigned int8 */
207     QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_INFO_MAC_ADDR,
208     /* Type = enum wifi_connection_state, e.g., DISCONNECTED,
209      * AUTHENTICATING, etc. valid for STA, CLI only.
210      */
211     QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_INFO_STATE,
212     /* Type = enum wifi_roam_state. Roaming state, e.g., IDLE or ACTIVE
213      */
214     QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_INFO_ROAMING,
215     /* Unsigned 32bit value. WIFI_CAPABILITY_XXX */
216     QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_INFO_CAPABILITIES,
217     /* NULL terminated SSID. An array of 33 Unsigned 8bit values */
218     QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_INFO_SSID,
219     /* BSSID. An array of 6 Unsigned 8bit values */
220     QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_INFO_BSSID,
221     /* Country string advertised by AP. An array of 3 Unsigned 8bit
222      * values.
223      */
224     QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_INFO_AP_COUNTRY_STR,
225     /* Country string for this association. An array of 3 Unsigned 8bit
226      * values.
227      */
228     QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_INFO_COUNTRY_STR,
229 
230     /* Attributes of type QCA_WLAN_VENDOR_ATTR_LL_STATS_WMM_AC_* could
231      * be nested within the interface stats.
232      */
233 
234     /* Type = enum wifi_traffic_ac, e.g., V0, VI, BE and BK */
235     QCA_WLAN_VENDOR_ATTR_LL_STATS_WMM_AC_AC,
236     /* Unsigned int 32 value corresponding to respective AC */
237     QCA_WLAN_VENDOR_ATTR_LL_STATS_WMM_AC_TX_MPDU,
238     /* Unsigned int 32 value corresponding to respective AC */
239     QCA_WLAN_VENDOR_ATTR_LL_STATS_WMM_AC_RX_MPDU,
240     /* Unsigned int 32 value corresponding to respective AC */
241     QCA_WLAN_VENDOR_ATTR_LL_STATS_WMM_AC_TX_MCAST,
242     /* Unsigned int 32 value corresponding to respective AC */
243     QCA_WLAN_VENDOR_ATTR_LL_STATS_WMM_AC_RX_MCAST,
244     /* Unsigned int 32 value corresponding to respective AC */
245     QCA_WLAN_VENDOR_ATTR_LL_STATS_WMM_AC_RX_AMPDU,
246     /* Unsigned int 32 value corresponding to respective AC */
247     QCA_WLAN_VENDOR_ATTR_LL_STATS_WMM_AC_TX_AMPDU,
248     /* Unsigned int 32 value corresponding to respective AC */
249     QCA_WLAN_VENDOR_ATTR_LL_STATS_WMM_AC_MPDU_LOST,
250     /* Unsigned int 32 value corresponding to respective AC */
251     QCA_WLAN_VENDOR_ATTR_LL_STATS_WMM_AC_RETRIES,
252     /* Unsigned int 32 value corresponding to respective AC  */
253     QCA_WLAN_VENDOR_ATTR_LL_STATS_WMM_AC_RETRIES_SHORT,
254     /* Unsigned int 32 values corresponding to respective AC */
255     QCA_WLAN_VENDOR_ATTR_LL_STATS_WMM_AC_RETRIES_LONG,
256     /* Unsigned int 32 values corresponding to respective AC */
257     QCA_WLAN_VENDOR_ATTR_LL_STATS_WMM_AC_CONTENTION_TIME_MIN,
258     /* Unsigned int 32 values corresponding to respective AC */
259     QCA_WLAN_VENDOR_ATTR_LL_STATS_WMM_AC_CONTENTION_TIME_MAX,
260     /* Unsigned int 32 values corresponding to respective AC */
261     QCA_WLAN_VENDOR_ATTR_LL_STATS_WMM_AC_CONTENTION_TIME_AVG,
262     /* Unsigned int 32 values corresponding to respective AC */
263     QCA_WLAN_VENDOR_ATTR_LL_STATS_WMM_AC_CONTENTION_NUM_SAMPLES,
264     /* Unsigned 32bit value. Number of peers */
265     QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_NUM_PEERS,
266 
267     /* Attributes of type QCA_WLAN_VENDOR_ATTR_LL_STATS_PEER_INFO_* are
268      * nested within the interface stats.
269      */
270 
271     /* Type = enum wifi_peer_type. Peer type, e.g., STA, AP, P2P GO etc. */
272     QCA_WLAN_VENDOR_ATTR_LL_STATS_PEER_INFO_TYPE,
273     /* MAC addr corresponding to respective peer. An array of 6 Unsigned
274      * 8bit values.
275      */
276     QCA_WLAN_VENDOR_ATTR_LL_STATS_PEER_INFO_MAC_ADDRESS,
277     /* Unsigned int 32bit value representing capabilities corresponding
278      * to respective peer.
279      */
280     QCA_WLAN_VENDOR_ATTR_LL_STATS_PEER_INFO_CAPABILITIES,
281     /* Unsigned 32bit value. Number of rates */
282     QCA_WLAN_VENDOR_ATTR_LL_STATS_PEER_INFO_NUM_RATES,
283 
284     /* Attributes of type QCA_WLAN_VENDOR_ATTR_LL_STATS_RATE_*
285      * are nested within the rate stat.
286      */
287 
288     /* Wi-Fi Rate - separate attributes defined for individual fields */
289 
290     /* Unsigned int 8bit value; 0: OFDM, 1:CCK, 2:HT 3:VHT 4..7 reserved */
291     QCA_WLAN_VENDOR_ATTR_LL_STATS_RATE_PREAMBLE,
292     /* Unsigned int 8bit value; 0:1x1, 1:2x2, 3:3x3, 4:4x4 */
293     QCA_WLAN_VENDOR_ATTR_LL_STATS_RATE_NSS,
294     /* Unsigned int 8bit value; 0:20MHz, 1:40Mhz, 2:80Mhz, 3:160Mhz */
295     QCA_WLAN_VENDOR_ATTR_LL_STATS_RATE_BW,
296     /* Unsigned int 8bit value; OFDM/CCK rate code would be as per IEEE Std
297      * in the units of 0.5mbps HT/VHT it would be mcs index */
298     QCA_WLAN_VENDOR_ATTR_LL_STATS_RATE_MCS_INDEX,
299 
300     /* Unsigned 32bit value. Bit rate in units of 100Kbps */
301     QCA_WLAN_VENDOR_ATTR_LL_STATS_RATE_BIT_RATE,
302 
303 
304     /* Attributes of type QCA_WLAN_VENDOR_ATTR_LL_STATS_RATE_STAT_* could be
305      * nested within the peer info stats.
306      */
307 
308     /* Unsigned int 32bit value. Number of successfully transmitted data pkts,
309      * i.e., with ACK received corresponding to the respective rate.
310      */
311     QCA_WLAN_VENDOR_ATTR_LL_STATS_RATE_TX_MPDU,
312     /* Unsigned int 32bit value. Number of received data pkts corresponding
313      *  to the respective rate.
314      */
315     QCA_WLAN_VENDOR_ATTR_LL_STATS_RATE_RX_MPDU,
316     /* Unsigned int 32bit value. Number of data pkts losses, i.e., no ACK
317      * received corresponding to *the respective rate.
318      */
319     QCA_WLAN_VENDOR_ATTR_LL_STATS_RATE_MPDU_LOST,
320     /* Unsigned int 32bit value. Total number of data pkt retries for the
321      * respective rate.
322      */
323     QCA_WLAN_VENDOR_ATTR_LL_STATS_RATE_RETRIES,
324     /* Unsigned int 32bit value. Total number of short data pkt retries
325      * for the respective rate.
326      */
327     QCA_WLAN_VENDOR_ATTR_LL_STATS_RATE_RETRIES_SHORT,
328     /* Unsigned int 32bit value. Total number of long data pkt retries
329      * for the respective rate.
330      */
331     QCA_WLAN_VENDOR_ATTR_LL_STATS_RATE_RETRIES_LONG,
332 
333 
334     QCA_WLAN_VENDOR_ATTR_LL_STATS_RADIO_ID,
335     /* Unsigned 32bit value. Total number of msecs the radio is awake
336      * accruing over time.
337      */
338     QCA_WLAN_VENDOR_ATTR_LL_STATS_RADIO_ON_TIME,
339     /* Unsigned 32bit value. Total number of msecs the radio is transmitting
340      * accruing over time.
341      */
342     QCA_WLAN_VENDOR_ATTR_LL_STATS_RADIO_TX_TIME,
343     /* Unsigned 32bit value. Total number of msecs the radio is in active
344      * receive accruing over time.
345      */
346     QCA_WLAN_VENDOR_ATTR_LL_STATS_RADIO_RX_TIME,
347     /* Unsigned 32bit value. Total number of msecs the radio is awake due
348      * to all scan accruing over time.
349      */
350     QCA_WLAN_VENDOR_ATTR_LL_STATS_RADIO_ON_TIME_SCAN,
351     /* Unsigned 32bit value. Total number of msecs the radio is awake due
352      * to NAN accruing over time.
353      */
354     QCA_WLAN_VENDOR_ATTR_LL_STATS_RADIO_ON_TIME_NBD,
355     /* Unsigned 32bit value. Total number of msecs the radio is awake due
356      * to GSCAN accruing over time.
357      */
358     QCA_WLAN_VENDOR_ATTR_LL_STATS_RADIO_ON_TIME_GSCAN,
359     /* Unsigned 32bit value. Total number of msecs the radio is awake due
360      * to roam scan accruing over time.
361      */
362     QCA_WLAN_VENDOR_ATTR_LL_STATS_RADIO_ON_TIME_ROAM_SCAN,
363     /* Unsigned 32bit value. Total number of msecs the radio is awake due
364      * to PNO scan accruing over time.
365      */
366     QCA_WLAN_VENDOR_ATTR_LL_STATS_RADIO_ON_TIME_PNO_SCAN,
367     /* Unsigned 32bit value. Total number of msecs the radio is awake due
368      * to HS2.0 scans and GAS *exchange accruing over time.
369      */
370     QCA_WLAN_VENDOR_ATTR_LL_STATS_RADIO_ON_TIME_HS20,
371     /* Unsigned 32bit value. Number of channels. */
372     QCA_WLAN_VENDOR_ATTR_LL_STATS_RADIO_NUM_CHANNELS,
373 
374     /* Attributes of type QCA_WLAN_VENDOR_ATTR_LL_STATS_CHANNEL_INFO_* could
375      * be nested within the channel stats.
376      */
377 
378     /* Type = enum wifi_channel_width. Channel width, e.g., 20, 40, 80 */
379     QCA_WLAN_VENDOR_ATTR_LL_STATS_CHANNEL_INFO_WIDTH,
380     /* Unsigned 32bit value. Primary 20MHz channel. */
381     QCA_WLAN_VENDOR_ATTR_LL_STATS_CHANNEL_INFO_CENTER_FREQ,
382     /* Unsigned 32bit value. Center frequency (MHz) first segment. */
383     QCA_WLAN_VENDOR_ATTR_LL_STATS_CHANNEL_INFO_CENTER_FREQ0,
384     /* Unsigned 32bit value. Center frequency (MHz) second segment. */
385     QCA_WLAN_VENDOR_ATTR_LL_STATS_CHANNEL_INFO_CENTER_FREQ1,
386 
387     /* Attributes of type QCA_WLAN_VENDOR_ATTR_LL_STATS_CHANNEL_* could be
388      * nested within the radio stats.
389      */
390 
391     /* Unsigned int 32bit value representing total number of msecs the radio
392      * is awake on that *channel accruing over time, corresponding to the
393      * respective channel.
394      */
395     QCA_WLAN_VENDOR_ATTR_LL_STATS_CHANNEL_ON_TIME,
396     /* Unsigned int 32bit value representing total number of msecs the CCA
397      * register is busy accruing  *over time corresponding to the respective
398      * channel.
399      */
400     QCA_WLAN_VENDOR_ATTR_LL_STATS_CHANNEL_CCA_BUSY_TIME,
401 
402     QCA_WLAN_VENDOR_ATTR_LL_STATS_NUM_RADIOS,
403 
404     /* Signifies the nested list of channel attributes
405      * QCA_WLAN_VENDOR_ATTR_LL_STATS_CHANNEL_INFO_*
406      */
407     QCA_WLAN_VENDOR_ATTR_LL_STATS_CH_INFO,
408 
409     /* Signifies the nested list of peer info attributes
410      * QCA_WLAN_VENDOR_ATTR_LL_STATS_PEER_INFO_*
411      */
412     QCA_WLAN_VENDOR_ATTR_LL_STATS_PEER_INFO,
413 
414     /* Signifies the nested list of rate info attributes
415      * QCA_WLAN_VENDOR_ATTR_LL_STATS_RATE_*
416      */
417     QCA_WLAN_VENDOR_ATTR_LL_STATS_PEER_INFO_RATE_INFO,
418 
419     /* Signifies the nested list of wmm info attributes
420      * QCA_WLAN_VENDOR_ATTR_LL_STATS_WMM_AC_*
421      */
422     QCA_WLAN_VENDOR_ATTR_LL_STATS_WMM_INFO,
423 
424     /* Unsigned 8bit value. Used by the driver; if set to 1, it indicates that
425      * more stats, e.g., peers or radio, are to follow in the next
426      * QCA_NL80211_VENDOR_SUBCMD_LL_STATS_*_RESULTS event.
427      * Otherwise, it is set to 0.
428      */
429     QCA_WLAN_VENDOR_ATTR_LL_STATS_RESULTS_MORE_DATA,
430 
431     /* Unsigned 64bit value */
432     QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_AVERAGE_TSF_OFFSET,
433 
434     /* Unsigned 32bit value */
435     QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_LEAKY_AP_DETECTED,
436 
437     /* Unsigned 32bit value */
438     QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_LEAKY_AP_AVG_NUM_FRAMES_LEAKED,
439 
440     /* Unsigned 32bit value */
441     QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_LEAKY_AP_GUARD_TIME,
442 
443     /* Unsigned 32bit value */
444     QCA_WLAN_VENDOR_ATTR_LL_STATS_TYPE,
445 
446     /* Unsigned 32bit value */
447     QCA_WLAN_VENDOR_ATTR_LL_STATS_RADIO_NUM_TX_LEVELS,
448 
449     /* Number of msecs the radio spent in transmitting for each power level */
450     QCA_WLAN_VENDOR_ATTR_LL_STATS_RADIO_TX_TIME_PER_LEVEL,
451 
452     /* keep last */
453     QCA_WLAN_VENDOR_ATTR_LL_STATS_AFTER_LAST,
454     QCA_WLAN_VENDOR_ATTR_LL_STATS_MAX = QCA_WLAN_VENDOR_ATTR_LL_STATS_AFTER_LAST - 1,
455 };
456 
457 enum qca_wlan_vendor_attr_ll_stats_type
458 {
459     QCA_NL80211_VENDOR_SUBCMD_LL_STATS_TYPE_INVALID = 0,
460     QCA_NL80211_VENDOR_SUBCMD_LL_STATS_TYPE_RADIO,
461     QCA_NL80211_VENDOR_SUBCMD_LL_STATS_TYPE_IFACE,
462     QCA_NL80211_VENDOR_SUBCMD_LL_STATS_TYPE_PEERS
463 };
464 
465 enum qca_wlan_vendor_attr_gscan_config_params
466 {
467     QCA_WLAN_VENDOR_ATTR_GSCAN_SUBCMD_CONFIG_PARAM_INVALID = 0,
468 
469     /* Unsigned 32-bit value; Middleware provides it to the driver. Middle ware
470      * either gets it from caller, e.g., framework, or generates one if
471      * framework doesn't provide it.
472      */
473     QCA_WLAN_VENDOR_ATTR_GSCAN_SUBCMD_CONFIG_PARAM_REQUEST_ID,
474 
475     /* NL attributes for data used by
476      * QCA_NL80211_VENDOR_SUBCMD_GSCAN_GET_VALID_CHANNELS sub command.
477      */
478     /* Unsigned 32-bit value */
479     QCA_WLAN_VENDOR_ATTR_GSCAN_GET_VALID_CHANNELS_CONFIG_PARAM_WIFI_BAND,
480     /* Unsigned 32-bit value */
481     QCA_WLAN_VENDOR_ATTR_GSCAN_GET_VALID_CHANNELS_CONFIG_PARAM_MAX_CHANNELS,
482 
483     /* NL attributes for input params used by
484      * QCA_NL80211_VENDOR_SUBCMD_GSCAN_START sub command.
485      */
486 
487     /* Unsigned 32-bit value; channel frequency */
488     QCA_WLAN_VENDOR_ATTR_GSCAN_CHANNEL_SPEC_CHANNEL,
489     /* Unsigned 32-bit value; dwell time in ms. */
490     QCA_WLAN_VENDOR_ATTR_GSCAN_CHANNEL_SPEC_DWELL_TIME,
491     /* Unsigned 8-bit value; 0: active; 1: passive; N/A for DFS */
492     QCA_WLAN_VENDOR_ATTR_GSCAN_CHANNEL_SPEC_PASSIVE,
493     /* Unsigned 8-bit value; channel class */
494     QCA_WLAN_VENDOR_ATTR_GSCAN_CHANNEL_SPEC_CLASS,
495 
496     /* Unsigned 8-bit value; bucket index, 0 based */
497     QCA_WLAN_VENDOR_ATTR_GSCAN_BUCKET_SPEC_INDEX,
498     /* Unsigned 8-bit value; band. */
499     QCA_WLAN_VENDOR_ATTR_GSCAN_BUCKET_SPEC_BAND,
500     /* Unsigned 32-bit value; desired period, in ms. */
501     QCA_WLAN_VENDOR_ATTR_GSCAN_BUCKET_SPEC_PERIOD,
502     /* Unsigned 8-bit value; report events semantics. */
503     QCA_WLAN_VENDOR_ATTR_GSCAN_BUCKET_SPEC_REPORT_EVENTS,
504     /* Unsigned 32-bit value. Followed by a nested array of GSCAN_CHANNEL_SPEC_*
505      * attributes.
506      */
507     QCA_WLAN_VENDOR_ATTR_GSCAN_BUCKET_SPEC_NUM_CHANNEL_SPECS,
508 
509     /* Array of QCA_WLAN_VENDOR_ATTR_GSCAN_CHANNEL_SPEC_* attributes.
510      * Array size: QCA_WLAN_VENDOR_ATTR_GSCAN_BUCKET_SPEC_NUM_CHANNEL_SPECS
511      */
512     QCA_WLAN_VENDOR_ATTR_GSCAN_CHANNEL_SPEC,
513 
514     /* Unsigned 32-bit value; base timer period in ms. */
515     QCA_WLAN_VENDOR_ATTR_GSCAN_SCAN_CMD_PARAMS_BASE_PERIOD,
516     /* Unsigned 32-bit value; number of APs to store in each scan in the
517      * BSSID/RSSI history buffer (keep the highest RSSI APs).
518      */
519     QCA_WLAN_VENDOR_ATTR_GSCAN_SCAN_CMD_PARAMS_MAX_AP_PER_SCAN,
520     /* Unsigned 8-bit value; in %, when scan buffer is this much full, wake up
521      * AP.
522      */
523     QCA_WLAN_VENDOR_ATTR_GSCAN_SCAN_CMD_PARAMS_REPORT_THRESHOLD_PERCENT,
524 
525     /* Unsigned 8-bit value; number of scan bucket specs; followed by a nested
526      * array of_GSCAN_BUCKET_SPEC_* attributes and values. The size of the
527      * array is determined by NUM_BUCKETS.
528      */
529     QCA_WLAN_VENDOR_ATTR_GSCAN_SCAN_CMD_PARAMS_NUM_BUCKETS,
530 
531     /* Array of QCA_WLAN_VENDOR_ATTR_GSCAN_BUCKET_SPEC_* attributes.
532      * Array size: QCA_WLAN_VENDOR_ATTR_GSCAN_SCAN_CMD_PARAMS_NUM_BUCKETS
533      */
534     QCA_WLAN_VENDOR_ATTR_GSCAN_BUCKET_SPEC,
535 
536     /* Unsigned 8-bit value */
537     QCA_WLAN_VENDOR_ATTR_GSCAN_GET_CACHED_SCAN_RESULTS_CONFIG_PARAM_FLUSH,
538     /* Unsigned 32-bit value; maximum number of results to be returned. */
539     QCA_WLAN_VENDOR_ATTR_GSCAN_GET_CACHED_SCAN_RESULTS_CONFIG_PARAM_MAX,
540 
541     /* An array of 6 x Unsigned 8-bit value */
542     QCA_WLAN_VENDOR_ATTR_GSCAN_AP_THRESHOLD_PARAM_BSSID,
543     /* Signed 32-bit value */
544     QCA_WLAN_VENDOR_ATTR_GSCAN_AP_THRESHOLD_PARAM_RSSI_LOW,
545     /* Signed 32-bit value */
546     QCA_WLAN_VENDOR_ATTR_GSCAN_AP_THRESHOLD_PARAM_RSSI_HIGH,
547     /* Unsigned 32-bit value */
548     QCA_WLAN_VENDOR_ATTR_GSCAN_AP_THRESHOLD_PARAM_CHANNEL,
549 
550 
551     /* Number of hotlist APs as unsigned 32-bit value, followed by a nested array of
552      * AP_THRESHOLD_PARAM attributes and values. The size of the array is
553      * determined by NUM_AP.
554      */
555     QCA_WLAN_VENDOR_ATTR_GSCAN_BSSID_HOTLIST_PARAMS_NUM_AP,
556 
557     /* Array of QCA_WLAN_VENDOR_ATTR_GSCAN_AP_THRESHOLD_PARAM_* attributes.
558      * Array size: QCA_WLAN_VENDOR_ATTR_GSCAN_BUCKET_SPEC_NUM_CHANNEL_SPECS
559      */
560     QCA_WLAN_VENDOR_ATTR_GSCAN_AP_THRESHOLD_PARAM,
561 
562     /* Unsigned 32bit value; number of samples for averaging RSSI. */
563     QCA_WLAN_VENDOR_ATTR_GSCAN_SIGNIFICANT_CHANGE_PARAMS_RSSI_SAMPLE_SIZE,
564     /* Unsigned 32bit value; number of samples to confirm AP loss. */
565     QCA_WLAN_VENDOR_ATTR_GSCAN_SIGNIFICANT_CHANGE_PARAMS_LOST_AP_SAMPLE_SIZE,
566     /* Unsigned 32bit value; number of APs breaching threshold. */
567     QCA_WLAN_VENDOR_ATTR_GSCAN_SIGNIFICANT_CHANGE_PARAMS_MIN_BREACHING,
568     /* Unsigned 32bit value; number of APs. Followed by an array of
569      * AP_THRESHOLD_PARAM attributes. Size of the array is NUM_AP.
570      */
571     QCA_WLAN_VENDOR_ATTR_GSCAN_SIGNIFICANT_CHANGE_PARAMS_NUM_AP,
572     /* Unsigned 32bit value; number of samples to confirm AP loss. */
573     QCA_WLAN_VENDOR_ATTR_GSCAN_BSSID_HOTLIST_PARAMS_LOST_AP_SAMPLE_SIZE,
574     /* Unsigned 32-bit value. If max_period is non zero or different than
575      * period, then this bucket is an exponential backoff bucket.
576      */
577     QCA_WLAN_VENDOR_ATTR_GSCAN_BUCKET_SPEC_MAX_PERIOD,
578     /* Unsigned 32-bit value. */
579     QCA_WLAN_VENDOR_ATTR_GSCAN_BUCKET_SPEC_BASE,
580     /* Unsigned 32-bit value. For exponential back off bucket, number of scans
581      * to perform for a given period.
582      */
583     QCA_WLAN_VENDOR_ATTR_GSCAN_BUCKET_SPEC_STEP_COUNT,
584     /* Unsigned 8-bit value; in number of scans, wake up AP after these
585      * many scans.
586      */
587     QCA_WLAN_VENDOR_ATTR_GSCAN_SCAN_CMD_PARAMS_REPORT_THRESHOLD_NUM_SCANS,
588 
589     /* NL attributes for data used by
590      * QCA_NL80211_VENDOR_SUBCMD_GSCAN_SET_SSID_HOTLIST sub command.
591      */
592     /* Unsigned 32bit value; number of samples to confirm SSID loss. */
593     QCA_WLAN_VENDOR_ATTR_GSCAN_SSID_HOTLIST_PARAMS_LOST_SSID_SAMPLE_SIZE,
594     /* Number of hotlist SSIDs as unsigned 32-bit value, followed by a nested
595      * array of SSID_THRESHOLD_PARAM_* attributes and values. The size of the
596      * array is determined by NUM_SSID.
597      */
598     QCA_WLAN_VENDOR_ATTR_GSCAN_SSID_HOTLIST_PARAMS_NUM_SSID,
599     /* Array of QCA_WLAN_VENDOR_ATTR_GSCAN_SSID_THRESHOLD_PARAM_* attributes.
600      * Array size: QCA_WLAN_VENDOR_ATTR_GSCAN_SSID_HOTLIST_PARAMS_NUM_SSID
601      */
602     QCA_WLAN_VENDOR_ATTR_GSCAN_SSID_THRESHOLD_PARAM,
603 
604     /* An array of 33 x Unsigned 8-bit value; NULL terminated SSID */
605     QCA_WLAN_VENDOR_ATTR_GSCAN_SSID_THRESHOLD_PARAM_SSID,
606     /* Unsigned 8-bit value */
607     QCA_WLAN_VENDOR_ATTR_GSCAN_SSID_THRESHOLD_PARAM_BAND,
608     /* Signed 32-bit value */
609     QCA_WLAN_VENDOR_ATTR_GSCAN_SSID_THRESHOLD_PARAM_RSSI_LOW,
610     /* Signed 32-bit value */
611     QCA_WLAN_VENDOR_ATTR_GSCAN_SSID_THRESHOLD_PARAM_RSSI_HIGH,
612     /* Unsigned 32-bit value; a bitmask w/additional gscan config flag. */
613     QCA_WLAN_VENDOR_ATTR_GSCAN_CONFIGURATION_FLAGS,
614 
615     /* keep last */
616     QCA_WLAN_VENDOR_ATTR_GSCAN_SUBCMD_CONFIG_PARAM_AFTER_LAST,
617     QCA_WLAN_VENDOR_ATTR_GSCAN_SUBCMD_CONFIG_PARAM_MAX =
618         QCA_WLAN_VENDOR_ATTR_GSCAN_SUBCMD_CONFIG_PARAM_AFTER_LAST - 1,
619 };
620 
621 enum qca_wlan_vendor_attr_gscan_results
622 {
623     QCA_WLAN_VENDOR_ATTR_GSCAN_RESULTS_INVALID = 0,
624 
625     /* Unsigned 32-bit value; must match the request Id supplied by Wi-Fi HAL
626      * in the corresponding subcmd NL msg
627      */
628     QCA_WLAN_VENDOR_ATTR_GSCAN_RESULTS_REQUEST_ID,
629 
630     /* Unsigned 32-bit value; used to indicate the status response from
631      * firmware/driver for the vendor sub-command.
632      */
633     QCA_WLAN_VENDOR_ATTR_GSCAN_STATUS,
634 
635     /* GSCAN Valid Channels attributes */
636     /* Unsigned 32bit value; followed by a nested array of CHANNELS.
637      */
638     QCA_WLAN_VENDOR_ATTR_GSCAN_RESULTS_NUM_CHANNELS,
639     /* An array of NUM_CHANNELS x Unsigned 32bit value integers representing
640      * channel numbers
641      */
642     QCA_WLAN_VENDOR_ATTR_GSCAN_RESULTS_CHANNELS,
643 
644     /* GSCAN Capabilities attributes */
645     /* Unsigned 32bit value */
646     QCA_WLAN_VENDOR_ATTR_GSCAN_RESULTS_CAPABILITIES_MAX_SCAN_CACHE_SIZE,
647     /* Unsigned 32bit value */
648     QCA_WLAN_VENDOR_ATTR_GSCAN_RESULTS_CAPABILITIES_MAX_SCAN_BUCKETS,
649     /* Unsigned 32bit value */
650     QCA_WLAN_VENDOR_ATTR_GSCAN_RESULTS_CAPABILITIES_MAX_AP_CACHE_PER_SCAN,
651     /* Unsigned 32bit value */
652     QCA_WLAN_VENDOR_ATTR_GSCAN_RESULTS_CAPABILITIES_MAX_RSSI_SAMPLE_SIZE,
653     /* Signed 32bit value */
654     QCA_WLAN_VENDOR_ATTR_GSCAN_RESULTS_CAPABILITIES_MAX_SCAN_REPORTING_THRESHOLD,
655     /* Unsigned 32bit value */
656     QCA_WLAN_VENDOR_ATTR_GSCAN_RESULTS_CAPABILITIES_MAX_HOTLIST_BSSIDS,
657     /* Unsigned 32bit value */
658     QCA_WLAN_VENDOR_ATTR_GSCAN_RESULTS_CAPABILITIES_MAX_SIGNIFICANT_WIFI_CHANGE_APS,
659     /* Unsigned 32bit value */
660     QCA_WLAN_VENDOR_ATTR_GSCAN_RESULTS_CAPABILITIES_MAX_BSSID_HISTORY_ENTRIES,
661 
662     /* GSCAN Attributes used with
663      * QCA_NL80211_VENDOR_SUBCMD_GSCAN_SCAN_RESULTS_AVAILABLE sub-command.
664      */
665 
666     /* Unsigned 32-bit value */
667     QCA_WLAN_VENDOR_ATTR_GSCAN_RESULTS_NUM_RESULTS_AVAILABLE,
668 
669     /* GSCAN attributes used with
670      * QCA_NL80211_VENDOR_SUBCMD_GSCAN_FULL_SCAN_RESULT sub-command.
671      */
672 
673     /* An array of NUM_RESULTS_AVAILABLE x
674      * QCA_WLAN_VENDOR_ATTR_GSCAN_RESULTS_SCAN_RESULT_*
675      */
676     QCA_WLAN_VENDOR_ATTR_GSCAN_RESULTS_LIST,
677 
678     /* Unsigned 64-bit value; age of sample at the time of retrieval */
679     QCA_WLAN_VENDOR_ATTR_GSCAN_RESULTS_SCAN_RESULT_TIME_STAMP,
680     /* 33 x unsiged 8-bit value; NULL terminated SSID */
681     QCA_WLAN_VENDOR_ATTR_GSCAN_RESULTS_SCAN_RESULT_SSID,
682     /* An array of 6 x Unsigned 8-bit value */
683     QCA_WLAN_VENDOR_ATTR_GSCAN_RESULTS_SCAN_RESULT_BSSID,
684     /* Unsigned 32-bit value; channel frequency in MHz */
685     QCA_WLAN_VENDOR_ATTR_GSCAN_RESULTS_SCAN_RESULT_CHANNEL,
686     /* Signed 32-bit value */
687     QCA_WLAN_VENDOR_ATTR_GSCAN_RESULTS_SCAN_RESULT_RSSI,
688     /* Unsigned 32-bit value */
689     QCA_WLAN_VENDOR_ATTR_GSCAN_RESULTS_SCAN_RESULT_RTT,
690     /* Unsigned 32-bit value */
691     QCA_WLAN_VENDOR_ATTR_GSCAN_RESULTS_SCAN_RESULT_RTT_SD,
692     /* Unsigned 16-bit value */
693     QCA_WLAN_VENDOR_ATTR_GSCAN_RESULTS_SCAN_RESULT_BEACON_PERIOD,
694     /* Unsigned 16-bit value */
695     QCA_WLAN_VENDOR_ATTR_GSCAN_RESULTS_SCAN_RESULT_CAPABILITY,
696     /* Unsigned 32-bit value; size of the IE DATA blob */
697     QCA_WLAN_VENDOR_ATTR_GSCAN_RESULTS_SCAN_RESULT_IE_LENGTH,
698     /* An array of IE_LENGTH x Unsigned 8-bit value; blob of all the
699      * information elements found in the beacon; this data should be a
700      * packed list of wifi_information_element objects, one after the
701      * other.
702      */
703     QCA_WLAN_VENDOR_ATTR_GSCAN_RESULTS_SCAN_RESULT_IE_DATA,
704 
705     /* Unsigned 8-bit value; set by driver to indicate more scan results are
706      * available.
707      */
708     QCA_WLAN_VENDOR_ATTR_GSCAN_RESULTS_SCAN_RESULT_MORE_DATA,
709 
710     /* GSCAN attributes for
711      * QCA_NL80211_VENDOR_SUBCMD_GSCAN_SCAN_EVENT sub-command.
712      */
713     /* Unsigned 8-bit value */
714     QCA_WLAN_VENDOR_ATTR_GSCAN_RESULTS_SCAN_EVENT_TYPE,
715     /* Unsigned 32-bit value */
716     QCA_WLAN_VENDOR_ATTR_GSCAN_RESULTS_SCAN_EVENT_STATUS,
717 
718     /* GSCAN attributes for
719      * QCA_NL80211_VENDOR_SUBCMD_GSCAN_HOTLIST_AP_FOUND sub-command.
720      */
721     /* Use attr QCA_WLAN_VENDOR_ATTR_GSCAN_RESULTS_NUM_RESULTS_AVAILABLE
722      * to indicate number of results.
723      * Also, use QCA_WLAN_VENDOR_ATTR_GSCAN_RESULTS_LIST to indicate the list
724      * of results.
725      */
726 
727     /* GSCAN attributes for
728      * QCA_NL80211_VENDOR_SUBCMD_GSCAN_SIGNIFICANT_CHANGE sub-command.
729      */
730     /* An array of 6 x Unsigned 8-bit value */
731     QCA_WLAN_VENDOR_ATTR_GSCAN_RESULTS_SIGNIFICANT_CHANGE_RESULT_BSSID,
732     /* Unsigned 32-bit value */
733     QCA_WLAN_VENDOR_ATTR_GSCAN_RESULTS_SIGNIFICANT_CHANGE_RESULT_CHANNEL,
734     /* Unsigned 32-bit value.
735      */
736     QCA_WLAN_VENDOR_ATTR_GSCAN_RESULTS_SIGNIFICANT_CHANGE_RESULT_NUM_RSSI,
737     /* A nested array of signed 32-bit RSSI values. Size of the array is determined by
738      * (NUM_RSSI of SIGNIFICANT_CHANGE_RESULT_NUM_RSSI.
739      */
740     QCA_WLAN_VENDOR_ATTR_GSCAN_RESULTS_SIGNIFICANT_CHANGE_RESULT_RSSI_LIST,
741 
742     /* GSCAN attributes used with
743      * QCA_NL80211_VENDOR_SUBCMD_GSCAN_GET_CACHED_RESULTS sub-command.
744      */
745     /* Use attr QCA_WLAN_VENDOR_ATTR_GSCAN_RESULTS_NUM_RESULTS_AVAILABLE
746      * to indicate number of gscan cached results returned.
747      * Also, use QCA_WLAN_VENDOR_ATTR_GSCAN_CACHED_RESULTS_LIST to indicate
748      *  the list of gscan cached results.
749      */
750 
751     /* An array of NUM_RESULTS_AVAILABLE x
752      * QCA_NL80211_VENDOR_ATTR_GSCAN_CACHED_RESULTS_*
753      */
754     QCA_WLAN_VENDOR_ATTR_GSCAN_CACHED_RESULTS_LIST,
755     /* Unsigned 32-bit value; a unique identifier for the scan unit. */
756     QCA_WLAN_VENDOR_ATTR_GSCAN_CACHED_RESULTS_SCAN_ID,
757     /* Unsigned 32-bit value; a bitmask w/additional information about scan. */
758     QCA_WLAN_VENDOR_ATTR_GSCAN_CACHED_RESULTS_FLAGS,
759     /* Use attr QCA_WLAN_VENDOR_ATTR_GSCAN_RESULTS_NUM_RESULTS_AVAILABLE
760      * to indicate number of wifi scan results/bssids retrieved by the scan.
761      * Also, use QCA_WLAN_VENDOR_ATTR_GSCAN_RESULTS_LIST to indicate the list
762      * of wifi scan results returned for each cached result block.
763      */
764 
765     /* GSCAN attributes for
766      * QCA_NL80211_VENDOR_SUBCMD_PNO_NETWORK_FOUND sub-command.
767      */
768     /* Use QCA_WLAN_VENDOR_ATTR_GSCAN_RESULTS_NUM_RESULTS_AVAILABLE for number
769      * of results.
770      * Use QCA_WLAN_VENDOR_ATTR_GSCAN_RESULTS_LIST to indicate the nested
771      * list of wifi scan results returned for each wifi_passpoint_match_result block.
772      * Array size: QCA_WLAN_VENDOR_ATTR_GSCAN_RESULTS_NUM_RESULTS_AVAILABLE.
773      */
774 
775     /* GSCAN attributes for
776      * QCA_NL80211_VENDOR_SUBCMD_PNO_PASSPOINT_NETWORK_FOUND sub-command.
777      */
778     /* Unsigned 32-bit value */
779     QCA_WLAN_VENDOR_ATTR_GSCAN_PNO_RESULTS_PASSPOINT_NETWORK_FOUND_NUM_MATCHES,
780     /* A nested array of
781      * QCA_WLAN_VENDOR_ATTR_GSCAN_PNO_RESULTS_PASSPOINT_MATCH_*
782      * attributes. Array size =
783      * *_ATTR_GSCAN_PNO_RESULTS_PASSPOINT_NETWORK_FOUND_NUM_MATCHES.
784      */
785     QCA_WLAN_VENDOR_ATTR_GSCAN_PNO_RESULTS_PASSPOINT_MATCH_RESULT_LIST,
786 
787     /* Unsigned 32-bit value; network block id for the matched network */
788     QCA_WLAN_VENDOR_ATTR_GSCAN_PNO_RESULTS_PASSPOINT_MATCH_ID,
789     /* Use QCA_WLAN_VENDOR_ATTR_GSCAN_RESULTS_LIST to indicate the nested
790      * list of wifi scan results returned for each wifi_passpoint_match_result block.
791      */
792     /* Unsigned 32-bit value */
793     QCA_WLAN_VENDOR_ATTR_GSCAN_PNO_RESULTS_PASSPOINT_MATCH_ANQP_LEN,
794     /* An array size of PASSPOINT_MATCH_ANQP_LEN of unsigned 8-bit values;
795      * ANQP data in the information_element format.
796      */
797     QCA_WLAN_VENDOR_ATTR_GSCAN_PNO_RESULTS_PASSPOINT_MATCH_ANQP,
798 
799     /* Unsigned 32bit value; a GSCAN Capabilities attribute. */
800     QCA_WLAN_VENDOR_ATTR_GSCAN_RESULTS_CAPABILITIES_MAX_HOTLIST_SSIDS,
801     /* Unsigned 32bit value; a GSCAN Capabilities attribute. */
802     QCA_WLAN_VENDOR_ATTR_GSCAN_RESULTS_CAPABILITIES_MAX_NUM_EPNO_NETS,
803     /* Unsigned 32bit value; a GSCAN Capabilities attribute. */
804     QCA_WLAN_VENDOR_ATTR_GSCAN_RESULTS_CAPABILITIES_MAX_NUM_EPNO_NETS_BY_SSID,
805     /* Unsigned 32bit value; a GSCAN Capabilities attribute. */
806     QCA_WLAN_VENDOR_ATTR_GSCAN_RESULTS_CAPABILITIES_MAX_NUM_WHITELISTED_SSID,
807 
808     QCA_WLAN_VENDOR_ATTR_GSCAN_RESULTS_BUCKETS_SCANNED,
809     /* keep last */
810     QCA_WLAN_VENDOR_ATTR_GSCAN_RESULTS_AFTER_LAST,
811     QCA_WLAN_VENDOR_ATTR_GSCAN_RESULTS_MAX =
812         QCA_WLAN_VENDOR_ATTR_GSCAN_RESULTS_AFTER_LAST - 1,
813 };
814 
815 enum qca_wlan_vendor_attr_tdls_enable
816 {
817     QCA_WLAN_VENDOR_ATTR_TDLS_ENABLE_INVALID = 0,
818     /* An array of 6 x Unsigned 8-bit value */
819     QCA_WLAN_VENDOR_ATTR_TDLS_ENABLE_MAC_ADDR,
820     QCA_WLAN_VENDOR_ATTR_TDLS_ENABLE_CHANNEL,
821     QCA_WLAN_VENDOR_ATTR_TDLS_ENABLE_GLOBAL_OPERATING_CLASS,
822     QCA_WLAN_VENDOR_ATTR_TDLS_ENABLE_MAX_LATENCY_MS,
823     QCA_WLAN_VENDOR_ATTR_TDLS_ENABLE_MIN_BANDWIDTH_KBPS,
824     /* keep last */
825     QCA_WLAN_VENDOR_ATTR_TDLS_ENABLE_AFTER_LAST,
826     QCA_WLAN_VENDOR_ATTR_TDLS_ENABLE_MAX =
827         QCA_WLAN_VENDOR_ATTR_TDLS_ENABLE_AFTER_LAST - 1,
828 };
829 
830 enum qca_wlan_vendor_attr_tdls_disable
831 {
832     QCA_WLAN_VENDOR_ATTR_TDLS_DISABLE_INVALID = 0,
833     /* An array of 6 x Unsigned 8-bit value */
834     QCA_WLAN_VENDOR_ATTR_TDLS_DISABLE_MAC_ADDR,
835     /* keep last */
836     QCA_WLAN_VENDOR_ATTR_TDLS_DISABLE_AFTER_LAST,
837     QCA_WLAN_VENDOR_ATTR_TDLS_DISABLE_MAX =
838         QCA_WLAN_VENDOR_ATTR_TDLS_DISABLE_AFTER_LAST - 1,
839 };
840 
841 enum qca_wlan_vendor_attr_tdls_get_status
842 {
843     QCA_WLAN_VENDOR_ATTR_TDLS_GET_STATUS_INVALID = 0,
844     /* An array of 6 x Unsigned 8-bit value */
845     QCA_WLAN_VENDOR_ATTR_TDLS_GET_STATUS_MAC_ADDR,
846     QCA_WLAN_VENDOR_ATTR_TDLS_GET_STATUS_STATE,
847     QCA_WLAN_VENDOR_ATTR_TDLS_GET_STATUS_REASON,
848     QCA_WLAN_VENDOR_ATTR_TDLS_GET_STATUS_CHANNEL,
849     QCA_WLAN_VENDOR_ATTR_TDLS_GET_STATUS_GLOBAL_OPERATING_CLASS,
850     /* keep last */
851     QCA_WLAN_VENDOR_ATTR_TDLS_GET_STATUS_AFTER_LAST,
852     QCA_WLAN_VENDOR_ATTR_TDLS_GET_STATUS_MAX =
853         QCA_WLAN_VENDOR_ATTR_TDLS_GET_STATUS_AFTER_LAST - 1,
854 };
855 
856 enum qca_wlan_vendor_attr_tdls_state
857 {
858     QCA_WLAN_VENDOR_ATTR_TDLS_STATE_INVALID = 0,
859     /* An array of 6 x Unsigned 8-bit value */
860     QCA_WLAN_VENDOR_ATTR_TDLS_MAC_ADDR,
861     QCA_WLAN_VENDOR_ATTR_TDLS_STATE,
862     QCA_WLAN_VENDOR_ATTR_TDLS_REASON,
863     QCA_WLAN_VENDOR_ATTR_TDLS_CHANNEL,
864     QCA_WLAN_VENDOR_ATTR_TDLS_GLOBAL_OPERATING_CLASS,
865     /* keep last */
866     QCA_WLAN_VENDOR_ATTR_TDLS_STATE_AFTER_LAST,
867     QCA_WLAN_VENDOR_ATTR_TDLS_STATE_MAX =
868         QCA_WLAN_VENDOR_ATTR_TDLS_STATE_AFTER_LAST - 1,
869 };
870 
871 enum qca_wlan_vendor_attr_tdls_get_capabilities
872 {
873     QCA_WLAN_VENDOR_ATTR_TDLS_GET_CAPS_INVALID = 0,
874 
875     QCA_WLAN_VENDOR_ATTR_TDLS_GET_CAPS_MAX_CONC_SESSIONS,
876     QCA_WLAN_VENDOR_ATTR_TDLS_GET_CAPS_FEATURES_SUPPORTED,
877 
878     /* keep last */
879     QCA_WLAN_VENDOR_ATTR_TDLS_GET_CAPS_AFTER_LAST,
880     QCA_WLAN_VENDOR_ATTR_TDLS_GET_CAPS_MAX =
881         QCA_WLAN_VENDOR_ATTR_TDLS_GET_CAPS_AFTER_LAST - 1,
882 };
883 
884 enum qca_wlan_vendor_attr_get_supported_features
885 {
886     QCA_WLAN_VENDOR_ATTR_FEATURE_SET_INVALID = 0,
887     /* Unsigned 32-bit value */
888     QCA_WLAN_VENDOR_ATTR_FEATURE_SET = 1,
889     /* keep last */
890     QCA_WLAN_VENDOR_ATTR_FEATURE_SET_AFTER_LAST,
891     QCA_WLAN_VENDOR_ATTR_FEATURE_SET_MAX =
892         QCA_WLAN_VENDOR_ATTR_FEATURE_SET_AFTER_LAST - 1,
893 };
894 
895 enum qca_wlan_vendor_attr_set_scanning_mac_oui
896 {
897     QCA_WLAN_VENDOR_ATTR_SET_SCANNING_MAC_OUI_INVALID = 0,
898     /* An array of 3 x Unsigned 8-bit value */
899     QCA_WLAN_VENDOR_ATTR_SET_SCANNING_MAC_OUI = 1,
900     /* keep last */
901     QCA_WLAN_VENDOR_ATTR_SET_SCANNING_MAC_OUI_AFTER_LAST,
902     QCA_WLAN_VENDOR_ATTR_SET_SCANNING_MAC_OUI_MAX =
903         QCA_WLAN_VENDOR_ATTR_SET_SCANNING_MAC_OUI_AFTER_LAST - 1,
904 };
905 
906 enum qca_wlan_vendor_attr_set_no_dfs_flag
907 {
908     QCA_WLAN_VENDOR_ATTR_SET_NO_DFS_FLAG_INVALID = 0,
909     /* Unsigned 32-bit value */
910     QCA_WLAN_VENDOR_ATTR_SET_NO_DFS_FLAG = 1,
911     /* keep last */
912     QCA_WLAN_VENDOR_ATTR_SET_NO_DFS_FLAG_AFTER_LAST,
913     QCA_WLAN_VENDOR_ATTR_SET_NO_DFS_FLAG_MAX =
914         QCA_WLAN_VENDOR_ATTR_SET_NO_DFS_FLAG_AFTER_LAST - 1,
915 };
916 
917 /* NL attributes for data used by
918  * QCA_NL80211_VENDOR_SUBCMD_GET_CONCURRENCY_MATRIX sub command.
919  */
920 enum qca_wlan_vendor_attr_get_concurrency_matrix
921 {
922     QCA_WLAN_VENDOR_ATTR_GET_CONCURRENCY_MATRIX_INVALID = 0,
923     /* Unsigned 32-bit value */
924     QCA_WLAN_VENDOR_ATTR_GET_CONCURRENCY_MATRIX_CONFIG_PARAM_SET_SIZE_MAX = 1,
925     /* Unsigned 32-bit value */
926     QCA_WLAN_VENDOR_ATTR_GET_CONCURRENCY_MATRIX_RESULTS_SET_SIZE = 2,
927     /* An array of SET_SIZE x Unsigned 32bit values representing
928      * concurrency combinations.
929      */
930     QCA_WLAN_VENDOR_ATTR_GET_CONCURRENCY_MATRIX_RESULTS_SET = 3,
931     /* keep last */
932     QCA_WLAN_VENDOR_ATTR_GET_CONCURRENCY_MATRIX_AFTER_LAST,
933     QCA_WLAN_VENDOR_ATTR_GET_CONCURRENCY_MATRIX_MAX =
934         QCA_WLAN_VENDOR_ATTR_GET_CONCURRENCY_MATRIX_AFTER_LAST - 1,
935 };
936 
937 /* NL attributes for data used by
938  * QCA_NL80211_VENDOR_SUBCMD_SET|GET_WIFI_CONFIGURATION sub commands.
939  */
940 enum qca_wlan_vendor_attr_wifi_config {
941     QCA_WLAN_VENDOR_ATTR_WIFI_CONFIG_INVALID = 0,
942     /* Unsigned 32-bit value */
943     QCA_WLAN_VENDOR_ATTR_WIFI_CONFIG_DYNAMIC_DTIM = 1,
944     /* Unsigned 32-bit value */
945     QCA_WLAN_VENDOR_ATTR_WIFI_CONFIG_STATS_AVG_FACTOR = 2,
946     /* Unsigned 32-bit value */
947     QCA_WLAN_VENDOR_ATTR_WIFI_CONFIG_GUARD_TIME = 3,
948     /* Unsigned 32-bit value */
949     QCA_WLAN_VENDOR_ATTR_WIFI_CONFIG_FINE_TIME_MEASUREMENT = 4,
950     /* Unsigned 32-bit value */
951     QCA_WLAN_VENDOR_ATTR_WIFI_CONFIG_TX_RATE = 5,
952     /* Unsigned 32-bit value */
953     QCA_WLAN_VENDOR_ATTR_WIFI_CONFIG_PENALIZE_AFTER_NCONS_BEACON_MISS = 6,
954     /* keep last */
955     QCA_WLAN_VENDOR_ATTR_WIFI_CONFIG_AFTER_LAST,
956     QCA_WLAN_VENDOR_ATTR_WIFI_CONFIG_MAX =
957         QCA_WLAN_VENDOR_ATTR_WIFI_CONFIG_AFTER_LAST - 1,
958 };
959 
960 enum qca_wlan_epno_type
961 {
962     QCA_WLAN_EPNO,
963     QCA_WLAN_PNO
964 };
965 
966 #define EPNO_NO_NETWORKS 0
967 
968 enum qca_wlan_vendor_attr_pno_config_params {
969     QCA_WLAN_VENDOR_ATTR_PNO_INVALID = 0,
970     /* NL attributes for data used by
971      * QCA_NL80211_VENDOR_SUBCMD_PNO_SET_PASSPOINT_LIST sub command.
972      */
973     /* Unsigned 32-bit value */
974     QCA_WLAN_VENDOR_ATTR_PNO_PASSPOINT_LIST_PARAM_NUM = 1,
975     /* Array of nested QCA_WLAN_VENDOR_ATTR_PNO_PASSPOINT_NETWORK_PARAM_*
976      * attributes. Array size =
977      * QCA_WLAN_VENDOR_ATTR_PNO_PASSPOINT_LIST_PARAM_NUM.
978      */
979     QCA_WLAN_VENDOR_ATTR_PNO_PASSPOINT_LIST_PARAM_NETWORK_ARRAY = 2,
980 
981     /* Unsigned 32-bit value */
982     QCA_WLAN_VENDOR_ATTR_PNO_PASSPOINT_NETWORK_PARAM_ID = 3,
983     /* An array of 256 x Unsigned 8-bit value; NULL terminated UTF8 encoded
984      * realm, 0 if unspecified.
985      */
986     QCA_WLAN_VENDOR_ATTR_PNO_PASSPOINT_NETWORK_PARAM_REALM = 4,
987     /* An array of 16 x Unsigned 32-bit value; roaming consortium ids to match,
988      * 0 if unspecified.
989      */
990     QCA_WLAN_VENDOR_ATTR_PNO_PASSPOINT_NETWORK_PARAM_ROAM_CNSRTM_ID = 5,
991     /* An array of 6 x Unsigned 8-bit value; mcc/mnc combination, 0s if
992     *  unspecified.
993     */
994     QCA_WLAN_VENDOR_ATTR_PNO_PASSPOINT_NETWORK_PARAM_ROAM_PLMN = 6,
995 
996 
997     /* NL attributes for data used by
998      * QCA_NL80211_VENDOR_SUBCMD_PNO_SET_LIST sub command.
999      */
1000     /* Unsigned 32-bit value */
1001     QCA_WLAN_VENDOR_ATTR_PNO_SET_LIST_PARAM_NUM_NETWORKS = 7,
1002     /* Array of nested
1003      * QCA_WLAN_VENDOR_ATTR_PNO_SET_LIST_PARAM_EPNO_NETWORK_*
1004      * attributes. Array size =
1005      *            QCA_WLAN_VENDOR_ATTR_PNO_SET_LIST_PARAM_NUM_NETWORKS.
1006      */
1007     QCA_WLAN_VENDOR_ATTR_PNO_SET_LIST_PARAM_EPNO_NETWORKS_LIST = 8,
1008     /* An array of 33 x Unsigned 8-bit value; NULL terminated SSID */
1009     QCA_WLAN_VENDOR_ATTR_PNO_SET_LIST_PARAM_EPNO_NETWORK_SSID = 9,
1010     /* Signed 8-bit value; threshold for considering this SSID as found,
1011      * required granularity for this threshold is 4dBm to 8dBm
1012      */
1013     QCA_WLAN_VENDOR_ATTR_PNO_SET_LIST_PARAM_EPNO_NETWORK_RSSI_THRESHOLD = 10,
1014     /* Unsigned 8-bit value; WIFI_PNO_FLAG_XXX */
1015     QCA_WLAN_VENDOR_ATTR_PNO_SET_LIST_PARAM_EPNO_NETWORK_FLAGS = 11,
1016     /* Unsigned 8-bit value; auth bit field for matching WPA IE */
1017     QCA_WLAN_VENDOR_ATTR_PNO_SET_LIST_PARAM_EPNO_NETWORK_AUTH_BIT = 12,
1018     /* Unsigned 8-bit to indicate ePNO type;
1019      * It takes values from qca_wlan_epno_type
1020      */
1021     QCA_WLAN_VENDOR_ATTR_PNO_SET_LIST_PARAM_EPNO_TYPE = 13,
1022 
1023     /* Nested attribute to send the channel list */
1024     QCA_WLAN_VENDOR_ATTR_PNO_SET_LIST_PARAM_EPNO_CHANNEL_LIST = 14,
1025 
1026     /* Unsigned 32-bit value; indicates the Interval between PNO scan
1027      * cycles in msec
1028      */
1029     QCA_WLAN_VENDOR_ATTR_PNO_SET_LIST_PARAM_EPNO_SCAN_INTERVAL = 15,
1030     QCA_WLAN_VENDOR_ATTR_EPNO_MIN5GHZ_RSSI = 16,
1031     QCA_WLAN_VENDOR_ATTR_EPNO_MIN24GHZ_RSSI = 17,
1032     QCA_WLAN_VENDOR_ATTR_EPNO_INITIAL_SCORE_MAX = 18,
1033     QCA_WLAN_VENDOR_ATTR_EPNO_CURRENT_CONNECTION_BONUS = 19,
1034     QCA_WLAN_VENDOR_ATTR_EPNO_SAME_NETWORK_BONUS = 20,
1035     QCA_WLAN_VENDOR_ATTR_EPNO_SECURE_BONUS = 21,
1036     QCA_WLAN_VENDOR_ATTR_EPNO_BAND5GHZ_BONUS = 22,
1037 
1038     /* keep last */
1039     QCA_WLAN_VENDOR_ATTR_PNO_AFTER_LAST,
1040     QCA_WLAN_VENDOR_ATTR_PNO_MAX =
1041         QCA_WLAN_VENDOR_ATTR_PNO_AFTER_LAST - 1,
1042 };
1043 
1044 enum qca_wlan_vendor_attr_roaming_config_params {
1045     QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_INVALID = 0,
1046 
1047     QCA_WLAN_VENDOR_ATTR_ROAMING_SUBCMD = 1,
1048     QCA_WLAN_VENDOR_ATTR_ROAMING_REQ_ID = 2,
1049 
1050     /* Attributes for wifi_set_ssid_white_list */
1051     QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_WHITE_LIST_SSID_NUM_NETWORKS = 3,
1052     QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_WHITE_LIST_SSID_LIST = 4,
1053     QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_WHITE_LIST_SSID = 5,
1054 
1055     /* Attributes for set_roam_params */
1056     QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_A_BAND_BOOST_THRESHOLD = 6,
1057     QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_A_BAND_PENALTY_THRESHOLD = 7,
1058     QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_A_BAND_BOOST_FACTOR = 8,
1059     QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_A_BAND_PENALTY_FACTOR = 9,
1060     QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_A_BAND_MAX_BOOST = 10,
1061     QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_LAZY_ROAM_HISTERESYS = 11,
1062     QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_ALERT_ROAM_RSSI_TRIGGER = 12,
1063 
1064     /* Attribute for set_lazy_roam*/
1065     QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_SET_LAZY_ROAM_ENABLE = 13,
1066 
1067     /* Attribute for set_lazy_roam with preferences*/
1068     QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_SET_BSSID_PREFS = 14,
1069     QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_SET_LAZY_ROAM_NUM_BSSID = 15,
1070     QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_SET_LAZY_ROAM_BSSID = 16,
1071     QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_SET_LAZY_ROAM_RSSI_MODIFIER = 17,
1072 
1073     /* Attribute for set_ blacklist bssid params */
1074     QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_SET_BSSID_PARAMS = 18,
1075     QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_SET_BSSID_PARAMS_NUM_BSSID = 19,
1076     QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_SET_BSSID_PARAMS_BSSID = 20,
1077 
1078     /* keep last */
1079     QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_AFTER_LAST,
1080     QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_MAX =
1081         QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_AFTER_LAST - 1,
1082 };
1083 
1084 /*
1085  * QCA_NL80211_VENDOR_SUBCMD_ROAM sub commands.
1086  */
1087 enum qca_wlan_vendor_attr_roam_subcmd
1088 {
1089    QCA_WLAN_VENDOR_ATTR_ROAM_SUBCMD_INVALID = 0,
1090    QCA_WLAN_VENDOR_ATTR_ROAM_SUBCMD_SSID_WHITE_LIST = 1,
1091    QCA_WLAN_VENDOR_ATTR_ROAM_SUBCMD_SET_GSCAN_ROAM_PARAMS = 2,
1092    QCA_WLAN_VENDOR_ATTR_ROAM_SUBCMD_SET_LAZY_ROAM = 3,
1093    QCA_WLAN_VENDOR_ATTR_ROAM_SUBCMD_SET_BSSID_PREFS = 4,
1094    QCA_WLAN_VENDOR_ATTR_ROAM_SUBCMD_SET_BSSID_PARAMS = 5,
1095    QCA_WLAN_VENDOR_ATTR_ROAM_SUBCMD_SET_BLACKLIST_BSSID = 6,
1096 
1097    /* KEEP LAST */
1098    QCA_WLAN_VENDOR_ATTR_ROAM_SUBCMD_AFTER_LAST,
1099    QCA_WLAN_VENDOR_ATTR_ROAM_SUBCMD_MAX =
1100         QCA_WLAN_VENDOR_ATTR_ROAM_SUBCMD_AFTER_LAST - 1,
1101 };
1102 
1103 /* NL attributes for data used by
1104  * QCA_NL80211_VENDOR_SUBCMD_GET_WIFI_INFO sub command.
1105  */
1106 enum qca_wlan_vendor_attr_get_wifi_info {
1107     QCA_WLAN_VENDOR_ATTR_WIFI_INFO_GET_INVALID = 0,
1108     QCA_WLAN_VENDOR_ATTR_WIFI_INFO_DRIVER_VERSION     = 1,
1109     QCA_WLAN_VENDOR_ATTR_WIFI_INFO_FIRMWARE_VERSION   = 2,
1110     /* keep last */
1111     QCA_WLAN_VENDOR_ATTR_WIFI_INFO_GET_AFTER_LAST,
1112     QCA_WLAN_VENDOR_ATTR_WIFI_INFO_GET_MAX  =
1113            QCA_WLAN_VENDOR_ATTR_WIFI_INFO_GET_AFTER_LAST - 1,
1114 };
1115 /* NL attributes for data used by
1116  * QCA_NL80211_VENDOR_SUBCMD_WIFI_LOGGER_START sub command.
1117  */
1118 enum qca_wlan_vendor_attr_wifi_logger_start {
1119     QCA_WLAN_VENDOR_ATTR_WIFI_LOGGER_START_INVALID = 0,
1120     QCA_WLAN_VENDOR_ATTR_WIFI_LOGGER_RING_ID = 1,
1121     QCA_WLAN_VENDOR_ATTR_WIFI_LOGGER_VERBOSE_LEVEL = 2,
1122     QCA_WLAN_VENDOR_ATTR_WIFI_LOGGER_FLAGS = 3,
1123     /* keep last */
1124     QCA_WLAN_VENDOR_ATTR_WIFI_LOGGER_START_AFTER_LAST,
1125     QCA_WLAN_VENDOR_ATTR_WIFI_LOGGER_START_GET_MAX  =
1126         QCA_WLAN_VENDOR_ATTR_WIFI_LOGGER_START_AFTER_LAST - 1,
1127 };
1128 
1129 enum qca_wlan_vendor_attr_logger_results
1130 {
1131     QCA_WLAN_VENDOR_ATTR_LOGGER_RESULTS_INVALID = 0,
1132 
1133     /* Unsigned 32-bit value; must match the request Id supplied by Wi-Fi HAL
1134      * in the corresponding subcmd NL msg
1135      */
1136     QCA_WLAN_VENDOR_ATTR_LOGGER_RESULTS_REQUEST_ID,
1137 
1138     /* Unsigned 32-bit value; used to indicate the size of memory
1139        dump to be allocated.
1140      */
1141     QCA_WLAN_VENDOR_ATTR_LOGGER_RESULTS_MEMDUMP_SIZE,
1142 
1143     /* keep last */
1144     QCA_WLAN_VENDOR_ATTR_LOGGER_RESULTS_AFTER_LAST,
1145     QCA_WLAN_VENDOR_ATTR_LOGGER_RESULTS_MAX =
1146         QCA_WLAN_VENDOR_ATTR_LOGGER_RESULTS_AFTER_LAST - 1,
1147 
1148 };
1149 
1150 enum qca_wlan_offloaded_packets_sending_control
1151 {
1152     QCA_WLAN_OFFLOADED_PACKETS_SENDING_CONTROL_INVALID = 0,
1153     QCA_WLAN_OFFLOADED_PACKETS_SENDING_START,
1154     QCA_WLAN_OFFLOADED_PACKETS_SENDING_STOP
1155 };
1156 
1157 enum qca_wlan_vendor_attr_offloaded_packets
1158 {
1159     QCA_WLAN_VENDOR_ATTR_OFFLOADED_PACKETS_INVALID = 0,
1160 
1161     /* Takes valid value from the enum
1162      * qca_wlan_offloaded_packets_sending_control
1163      */
1164     QCA_WLAN_VENDOR_ATTR_OFFLOADED_PACKETS_SENDING_CONTROL,
1165 
1166     QCA_WLAN_VENDOR_ATTR_OFFLOADED_PACKETS_REQUEST_ID,
1167 
1168     /* Packet in hex format */
1169     QCA_WLAN_VENDOR_ATTR_OFFLOADED_PACKETS_IP_PACKET,
1170     QCA_WLAN_VENDOR_ATTR_OFFLOADED_PACKETS_SRC_MAC_ADDR,
1171     QCA_WLAN_VENDOR_ATTR_OFFLOADED_PACKETS_DST_MAC_ADDR,
1172     QCA_WLAN_VENDOR_ATTR_OFFLOADED_PACKETS_PERIOD,
1173 
1174     /* keep last */
1175     QCA_WLAN_VENDOR_ATTR_OFFLOADED_PACKETS_AFTER_LAST,
1176     QCA_WLAN_VENDOR_ATTR_OFFLOADED_PACKETS_MAX =
1177         QCA_WLAN_VENDOR_ATTR_OFFLOADED_PACKETS_AFTER_LAST - 1,
1178 
1179 };
1180 
1181 enum qca_wlan_rssi_monitoring_control
1182 {
1183     QCA_WLAN_RSSI_MONITORING_CONTROL_INVALID = 0,
1184     QCA_WLAN_RSSI_MONITORING_START,
1185     QCA_WLAN_RSSI_MONITORING_STOP,
1186 };
1187 
1188 enum qca_wlan_vendor_attr_rssi_monitoring
1189 {
1190     QCA_WLAN_VENDOR_ATTR_RSSI_MONITORING_INVALID = 0,
1191 
1192     /* Takes valid value from the enum
1193      * qca_wlan_rssi_monitoring_control
1194      */
1195     QCA_WLAN_VENDOR_ATTR_RSSI_MONITORING_CONTROL,
1196 
1197     QCA_WLAN_VENDOR_ATTR_RSSI_MONITORING_REQUEST_ID,
1198 
1199     QCA_WLAN_VENDOR_ATTR_RSSI_MONITORING_MAX_RSSI,
1200     QCA_WLAN_VENDOR_ATTR_RSSI_MONITORING_MIN_RSSI,
1201 
1202     /* attributes to be used/received in callback */
1203     QCA_WLAN_VENDOR_ATTR_RSSI_MONITORING_CUR_BSSID,
1204     QCA_WLAN_VENDOR_ATTR_RSSI_MONITORING_CUR_RSSI,
1205 
1206     /* keep last */
1207     QCA_WLAN_VENDOR_ATTR_RSSI_MONITORING_AFTER_LAST,
1208     QCA_WLAN_VENDOR_ATTR_RSSI_MONITORING_MAX =
1209         QCA_WLAN_VENDOR_ATTR_RSSI_MONITORING_AFTER_LAST - 1,
1210 
1211 };
1212 
1213 enum qca_wlan_vendor_attr_ndp_params
1214 {
1215     QCA_WLAN_VENDOR_ATTR_NDP_PARAM_INVALID = 0,
1216     /* enum of sub commands */
1217     QCA_WLAN_VENDOR_ATTR_NDP_SUBCMD,
1218     /* Unsigned 16-bit value */
1219     QCA_WLAN_VENDOR_ATTR_NDP_TRANSACTION_ID,
1220     /* NL attributes for data used NDP SUB cmds */
1221     /* Unsigned 16-bit value indicating a service info */
1222     QCA_WLAN_VENDOR_ATTR_NDP_SERVICE_INSTANCE_ID,
1223     /* Unsigned 32-bit value; channel frequency */
1224     QCA_WLAN_VENDOR_ATTR_NDP_CHANNEL_SPEC_CHANNEL,
1225     /* Interface Discovery MAC address. An array of 6 Unsigned int8 */
1226     QCA_WLAN_VENDOR_ATTR_NDP_PEER_DISCOVERY_MAC_ADDR,
1227     /* Interface name on which NDP is being created */
1228     QCA_WLAN_VENDOR_ATTR_NDP_IFACE_STR,
1229     /* Unsigned 32-bit value for security */
1230     QCA_WLAN_VENDOR_ATTR_NDP_CONFIG_SECURITY,
1231     /* Unsigned 32-bit value for Qos */
1232     QCA_WLAN_VENDOR_ATTR_NDP_CONFIG_QOS,
1233     /* Unsigned 16-bit value for app info length */
1234     QCA_WLAN_VENDOR_ATTR_NDP_APP_INFO_LEN,
1235     /* Array of u8: len = QCA_WLAN_VENDOR_ATTR_NAN_DP_APP_INFO_LEN */
1236     QCA_WLAN_VENDOR_ATTR_NDP_APP_INFO,
1237     /* Unsigned 32-bit value for NDP instance Id */
1238     QCA_WLAN_VENDOR_ATTR_NDP_INSTANCE_ID,
1239     /* Unsigned 32-bit value for schedule update response code accept/reject */
1240     QCA_WLAN_VENDOR_ATTR_NDP_SCHEDULE_RESPONSE_CODE,
1241     /* Unsigned 32-bit value for schedule status success/fail */
1242     QCA_WLAN_VENDOR_ATTR_NDP_SCHEDULE_STATUS_CODE,
1243     /* NDI MAC address. An array of 6 Unsigned int8 */
1244     QCA_WLAN_VENDOR_ATTR_NDP_NDI_MAC_ADDR,
1245 
1246    /* KEEP LAST */
1247    QCA_WLAN_VENDOR_ATTR_NDP_AFTER_LAST,
1248    QCA_WLAN_VENDOR_ATTR_NDP_MAX =
1249         QCA_WLAN_VENDOR_ATTR_NDP_AFTER_LAST - 1,
1250 };
1251 
1252 enum qca_wlan_vendor_attr_ndp_cfg_security
1253 {
1254    /* Security info will be added when proposed in the specification */
1255    QCA_WLAN_VENDOR_ATTR_NDP_SECURITY_TYPE = 1,
1256 
1257 };
1258 
1259 enum qca_wlan_vendor_attr_ndp_qos
1260 {
1261    /* Qos info will be added when proposed in the specification */
1262    QCA_WLAN_VENDOR_ATTR_NDP_QOS_CONFIG = 1,
1263 
1264 };
1265 
1266 /*
1267  * QCA_NL80211_VENDOR_SUBCMD_NDP sub commands.
1268  */
1269 enum qca_wlan_vendor_attr_ndp_sub_cmd_value
1270 {
1271    QCA_WLAN_VENDOR_ATTR_NDP_INTERFACE_CREATE = 1,
1272    QCA_WLAN_VENDOR_ATTR_NDP_INTERFACE_DELETE = 2,
1273    QCA_WLAN_VENDOR_ATTR_NDP_INITIATOR_REQUEST = 3,
1274    QCA_WLAN_VENDOR_ATTR_NDP_INITIATOR_RESPONSE = 4,
1275    QCA_WLAN_VENDOR_ATTR_NDP_RESPONDER_REQUEST = 5,
1276    QCA_WLAN_VENDOR_ATTR_NDP_RESPONDER_RESPONSE = 6,
1277    QCA_WLAN_VENDOR_ATTR_NDP_END_REQUEST = 7,
1278    QCA_WLAN_VENDOR_ATTR_NDP_END_RESPONSE = 8,
1279    QCA_WLAN_VENDOR_ATTR_NDP_SCHEDULE_UPDATE_REQUEST = 9,
1280    QCA_WLAN_VENDOR_ATTR_NDP_SCHEDULE_UPDATE_RESPONSE = 10,
1281    QCA_WLAN_VENDOR_ATTR_NDP_DATA_REQUEST_IND = 11,
1282    QCA_WLAN_VENDOR_ATTR_NDP_CONFIRM_IND = 12,
1283    QCA_WLAN_VENDOR_ATTR_NDP_SCHEDULE_UPDATE_IND = 13,
1284    QCA_WLAN_VENDOR_ATTR_NDP_END_IND = 14
1285 };
1286 
1287 #define PACKET_FILTER_ID 0
1288 
1289 enum packet_filter_sub_cmd
1290 {
1291     QCA_WLAN_SET_PACKET_FILTER = 1,
1292     QCA_WLAN_GET_PACKET_FILTER_SIZE = 2,
1293 };
1294 
1295 enum qca_wlan_vendor_attr_packet_filter
1296 {
1297     QCA_WLAN_VENDOR_ATTR_PACKET_FILTER_INVALID = 0,
1298 
1299     QCA_WLAN_VENDOR_ATTR_PACKET_FILTER_SUB_CMD,
1300     QCA_WLAN_VENDOR_ATTR_PACKET_FILTER_VERSION,
1301     QCA_WLAN_VENDOR_ATTR_PACKET_FILTER_ID,
1302     QCA_WLAN_VENDOR_ATTR_PACKET_FILTER_TOTAL_LENGTH,
1303     QCA_WLAN_VENDOR_ATTR_PACKET_FILTER_CURRENT_OFFSET,
1304     QCA_WLAN_VENDOR_ATTR_PACKET_FILTER_PROGRAM,
1305 
1306     /* keep last */
1307     QCA_WLAN_VENDOR_ATTR_PACKET_FILTER_AFTER_LAST,
1308     QCA_WLAN_VENDOR_ATTR_PACKET_FILTER_MAX =
1309         QCA_WLAN_VENDOR_ATTR_PACKET_FILTER_AFTER_LAST - 1,
1310 
1311 };
1312 
1313 enum qca_wlan_vendor_attr_nd_offload
1314 {
1315     QCA_WLAN_VENDOR_ATTR_ND_OFFLOAD_INVALID = 0,
1316 
1317     QCA_WLAN_VENDOR_ATTR_ND_OFFLOAD_FLAG,
1318 
1319     /* keep last */
1320     QCA_WLAN_VENDOR_ATTR_ND_OFFLOAD_AFTER_LAST,
1321     QCA_WLAN_VENDOR_ATTR_ND_OFFLOAD_MAX =
1322         QCA_WLAN_VENDOR_ATTR_ND_OFFLOAD_AFTER_LAST - 1,
1323 
1324 };
1325 
1326 enum qca_wlan_vendor_drv_info
1327 {
1328     QCA_WLAN_VENDOR_ATTR_DRV_INFO_INVALID = 0,
1329 
1330     QCA_WLAN_VENDOR_ATTR_DRV_INFO_BUS_SIZE,
1331 
1332     /* keep last */
1333     QCA_WLAN_VENDOR_ATTR_DRV_INFO_AFTER_LAST,
1334     QCA_WLAN_VENDOR_ATTR_DRV_INFO_MAX =
1335         QCA_WLAN_VENDOR_ATTR_DRV_INFO_AFTER_LAST - 1,
1336 
1337 };
1338 
1339 /* NL attributes for data used by
1340  * QCA_NL80211_VENDOR_SUBCMD_GET_WAKE_REASON_STATS  sub command.
1341  */
1342 enum qca_wlan_vendor_attr_wake_stats
1343 {
1344     QCA_WLAN_VENDOR_ATTR_WAKE_STATS_INVALID = 0,
1345     QCA_WLAN_VENDOR_ATTR_WAKE_STATS_TOTAL_CMD_EVENT_WAKE,
1346     QCA_WLAN_VENDOR_ATTR_WAKE_STATS_CMD_EVENT_WAKE_CNT_PTR,
1347     QCA_WLAN_VENDOR_ATTR_WAKE_STATS_CMD_EVENT_WAKE_CNT_SZ,
1348     QCA_WLAN_VENDOR_ATTR_WAKE_STATS_TOTAL_DRIVER_FW_LOCAL_WAKE,
1349     QCA_WLAN_VENDOR_ATTR_WAKE_STATS_DRIVER_FW_LOCAL_WAKE_CNT_PTR,
1350     QCA_WLAN_VENDOR_ATTR_WAKE_STATS_DRIVER_FW_LOCAL_WAKE_CNT_SZ,
1351     QCA_WLAN_VENDOR_ATTR_WAKE_STATS_TOTAL_RX_DATA_WAKE,
1352     QCA_WLAN_VENDOR_ATTR_WAKE_STATS_RX_UNICAST_CNT,
1353     QCA_WLAN_VENDOR_ATTR_WAKE_STATS_RX_MULTICAST_CNT,
1354     QCA_WLAN_VENDOR_ATTR_WAKE_STATS_RX_BROADCAST_CNT,
1355     QCA_WLAN_VENDOR_ATTR_WAKE_STATS_ICMP_PKT,
1356     QCA_WLAN_VENDOR_ATTR_WAKE_STATS_ICMP6_PKT,
1357     QCA_WLAN_VENDOR_ATTR_WAKE_STATS_ICMP6_RA,
1358     QCA_WLAN_VENDOR_ATTR_WAKE_STATS_ICMP6_NA,
1359     QCA_WLAN_VENDOR_ATTR_WAKE_STATS_ICMP6_NS,
1360     QCA_WLAN_VENDOR_ATTR_WAKE_STATS_ICMP4_RX_MULTICAST_CNT,
1361     QCA_WLAN_VENDOR_ATTR_WAKE_STATS_ICMP6_RX_MULTICAST_CNT,
1362     QCA_WLAN_VENDOR_ATTR_WAKE_STATS_OTHER_RX_MULTICAST_CNT,
1363     /* keep last */
1364     QCA_WLAN_VENDOR_ATTR_WAKE_STATS_AFTER_LAST,
1365     QCA_WLAN_VENDOR_ATTR_WAKE_STATS_MAX =
1366         QCA_WLAN_VENDOR_ATTR_WAKE_STATS_AFTER_LAST - 1,
1367 };
1368 #endif
1369