goldfish: R.I.P.
[openwrt.git] / target / linux / s3c24xx / files-2.6.30 / drivers / ar6000 / include / wmi.h
1 /*
2  * Copyright (c) 2004-2006 Atheros Communications Inc.
3  * All rights reserved.
4  *
5  *
6  * $ATH_LICENSE_HOSTSDK0_C$
7  *
8  * This file contains the definitions of the WMI protocol specified in the
9  * Wireless Module Interface (WMI).  It includes definitions of all the
10  * commands and events. Commands are messages from the host to the WM.
11  * Events and Replies are messages from the WM to the host.
12  *
13  * Ownership of correctness in regards to WMI commands
14  * belongs to the host driver and the WM is not required to validate
15  * parameters for value, proper range, or any other checking.
16  *
17  */
18
19 #ifndef _WMI_H_
20 #define _WMI_H_
21
22 #ifndef ATH_TARGET
23 #include "athstartpack.h"
24 #endif
25
26 #include "wmix.h"
27
28 #ifdef __cplusplus
29 extern "C" {
30 #endif
31
32 #define WMI_PROTOCOL_VERSION    0x0002
33 #define WMI_PROTOCOL_REVISION   0x0000
34
35 #define ATH_MAC_LEN             6               /* length of mac in bytes */
36 #define WMI_CMD_MAX_LEN         100
37 #define WMI_CONTROL_MSG_MAX_LEN     256
38 #define WMI_OPT_CONTROL_MSG_MAX_LEN 1536
39 #define IS_ETHERTYPE(_typeOrLen)        ((_typeOrLen) >= 0x0600)
40 #define RFC1042OUI      {0x00, 0x00, 0x00}
41
42 #define IP_ETHERTYPE 0x0800
43
44 #define WMI_IMPLICIT_PSTREAM 0xFF
45 #define WMI_MAX_THINSTREAM 15
46
47 struct host_app_area_s {
48     A_UINT32 wmi_protocol_ver;
49 };
50
51 /*
52  * Data Path
53  */
54 typedef PREPACK struct {
55     A_UINT8     dstMac[ATH_MAC_LEN];
56     A_UINT8     srcMac[ATH_MAC_LEN];
57     A_UINT16    typeOrLen;
58 } POSTPACK ATH_MAC_HDR;
59
60 typedef PREPACK struct {
61     A_UINT8     dsap;
62     A_UINT8     ssap;
63     A_UINT8     cntl;
64     A_UINT8     orgCode[3];
65     A_UINT16    etherType;
66 } POSTPACK ATH_LLC_SNAP_HDR;
67
68 typedef enum {
69     DATA_MSGTYPE = 0x0,
70     CNTL_MSGTYPE,
71     SYNC_MSGTYPE
72 } WMI_MSG_TYPE;
73
74
75 typedef PREPACK struct {
76     A_INT8      rssi;
77     A_UINT8     info;            /* WMI_MSG_TYPE in lower 2 bits - b1b0 */
78                                  /* UP in next 3 bits - b4b3b2 */
79 #define WMI_DATA_HDR_MSG_TYPE_MASK  0x03
80 #define WMI_DATA_HDR_MSG_TYPE_SHIFT 0
81 #define WMI_DATA_HDR_UP_MASK        0x07
82 #define WMI_DATA_HDR_UP_SHIFT       2
83 #define WMI_DATA_HDR_IS_MSG_TYPE(h, t)  (((h)->info & (WMI_DATA_HDR_MSG_TYPE_MASK)) == (t))
84 } POSTPACK WMI_DATA_HDR;
85
86
87 #define WMI_DATA_HDR_SET_MSG_TYPE(h, t) (h)->info = (((h)->info & ~(WMI_DATA_HDR_MSG_TYPE_MASK << WMI_DATA_HDR_MSG_TYPE_SHIFT)) | (t << WMI_DATA_HDR_MSG_TYPE_SHIFT))
88 #define WMI_DATA_HDR_SET_UP(h, p) (h)->info = (((h)->info & ~(WMI_DATA_HDR_UP_MASK << WMI_DATA_HDR_UP_SHIFT)) | (p << WMI_DATA_HDR_UP_SHIFT))
89
90 /*
91  * Control Path
92  */
93 typedef PREPACK struct {
94     A_UINT16    commandId;
95 } POSTPACK WMI_CMD_HDR;        /* used for commands and events */
96
97 /*
98  * List of Commnands
99  */
100 typedef enum {
101     WMI_CONNECT_CMDID           = 0x0001,
102     WMI_RECONNECT_CMDID,
103     WMI_DISCONNECT_CMDID,
104     WMI_SYNCHRONIZE_CMDID,
105     WMI_CREATE_PSTREAM_CMDID,
106     WMI_DELETE_PSTREAM_CMDID,
107     WMI_START_SCAN_CMDID,
108     WMI_SET_SCAN_PARAMS_CMDID,
109     WMI_SET_BSS_FILTER_CMDID,
110     WMI_SET_PROBED_SSID_CMDID,
111     WMI_SET_LISTEN_INT_CMDID,
112     WMI_SET_BMISS_TIME_CMDID,
113     WMI_SET_DISC_TIMEOUT_CMDID,
114     WMI_GET_CHANNEL_LIST_CMDID,
115     WMI_SET_BEACON_INT_CMDID,
116     WMI_GET_STATISTICS_CMDID,
117     WMI_SET_CHANNEL_PARAMS_CMDID,
118     WMI_SET_POWER_MODE_CMDID,
119     WMI_SET_IBSS_PM_CAPS_CMDID,
120     WMI_SET_POWER_PARAMS_CMDID,
121     WMI_SET_POWERSAVE_TIMERS_POLICY_CMDID,
122     WMI_ADD_CIPHER_KEY_CMDID,
123     WMI_DELETE_CIPHER_KEY_CMDID,
124     WMI_ADD_KRK_CMDID,
125     WMI_DELETE_KRK_CMDID,
126     WMI_SET_PMKID_CMDID,
127     WMI_SET_TX_PWR_CMDID,
128     WMI_GET_TX_PWR_CMDID,
129     WMI_SET_ASSOC_INFO_CMDID,
130     WMI_ADD_BAD_AP_CMDID,
131     WMI_DELETE_BAD_AP_CMDID,
132     WMI_SET_TKIP_COUNTERMEASURES_CMDID,
133     WMI_RSSI_THRESHOLD_PARAMS_CMDID,
134     WMI_TARGET_ERROR_REPORT_BITMASK_CMDID,
135     WMI_SET_ACCESS_PARAMS_CMDID,
136     WMI_SET_RETRY_LIMITS_CMDID,
137     WMI_SET_OPT_MODE_CMDID,
138     WMI_OPT_TX_FRAME_CMDID,
139     WMI_SET_VOICE_PKT_SIZE_CMDID,
140     WMI_SET_MAX_SP_LEN_CMDID,
141     WMI_SET_ROAM_CTRL_CMDID,
142     WMI_GET_ROAM_TBL_CMDID,
143     WMI_GET_ROAM_DATA_CMDID,
144     WMI_ENABLE_RM_CMDID,
145     WMI_SET_MAX_OFFHOME_DURATION_CMDID,
146     WMI_EXTENSION_CMDID,                        /* Non-wireless extensions */
147     WMI_SNR_THRESHOLD_PARAMS_CMDID,
148     WMI_LQ_THRESHOLD_PARAMS_CMDID,
149     WMI_SET_LPREAMBLE_CMDID,
150     WMI_SET_RTS_CMDID,
151     WMI_CLR_RSSI_SNR_CMDID,
152     WMI_SET_FIXRATES_CMDID,
153     WMI_GET_FIXRATES_CMDID,
154     WMI_SET_AUTH_MODE_CMDID,
155     WMI_SET_REASSOC_MODE_CMDID,
156     WMI_SET_WMM_CMDID,
157     WMI_SET_WMM_TXOP_CMDID,
158     WMI_TEST_CMDID,
159     WMI_SET_BT_STATUS_CMDID,
160     WMI_SET_BT_PARAMS_CMDID,
161
162     WMI_SET_KEEPALIVE_CMDID,
163     WMI_GET_KEEPALIVE_CMDID,
164     WMI_SET_APPIE_CMDID,
165     WMI_GET_APPIE_CMDID,
166     WMI_SET_WSC_STATUS_CMDID,
167
168     /* Wake on Wireless */
169     WMI_SET_HOST_SLEEP_MODE_CMDID,
170     WMI_SET_WOW_MODE_CMDID,
171     WMI_GET_WOW_LIST_CMDID,
172     WMI_ADD_WOW_PATTERN_CMDID,
173     WMI_DEL_WOW_PATTERN_CMDID,
174     WMI_SET_MAC_ADDRESS_CMDID,
175     WMI_SET_AKMP_PARAMS_CMDID,
176     WMI_SET_PMKID_LIST_CMDID,
177     WMI_GET_PMKID_LIST_CMDID,
178
179     /*
180      * Developer commands starts at 0xF000
181      */
182     WMI_SET_BITRATE_CMDID = 0xF000,
183     WMI_GET_BITRATE_CMDID,
184     WMI_SET_WHALPARAM_CMDID,
185
186 } WMI_COMMAND_ID;
187
188 /*
189  * Frame Types
190  */
191 typedef enum {
192     WMI_FRAME_BEACON        =   0,
193     WMI_FRAME_PROBE_REQ,
194     WMI_FRAME_PROBE_RESP,
195     WMI_FRAME_ASSOC_REQ,
196     WMI_FRAME_ASSOC_RESP,
197     WMI_NUM_MGMT_FRAME
198 } WMI_MGMT_FRAME_TYPE;
199
200 /*
201  * Connect Command
202  */
203 typedef enum {
204     INFRA_NETWORK       = 0x01,
205     ADHOC_NETWORK       = 0x02,
206     ADHOC_CREATOR       = 0x04,
207 } NETWORK_TYPE;
208
209 typedef enum {
210     OPEN_AUTH           = 0x01,
211     SHARED_AUTH         = 0x02,
212     LEAP_AUTH           = 0x04,  /* different from IEEE_AUTH_MODE definitions */
213 } DOT11_AUTH_MODE;
214
215 typedef enum {
216     NONE_AUTH           = 0x01,
217     WPA_AUTH            = 0x02,
218     WPA_PSK_AUTH        = 0x03,
219     WPA2_AUTH           = 0x04,
220     WPA2_PSK_AUTH       = 0x05,
221     WPA_AUTH_CCKM       = 0x06,
222     WPA2_AUTH_CCKM      = 0x07,
223 } AUTH_MODE;
224
225 typedef enum {
226     NONE_CRYPT          = 0x01,
227     WEP_CRYPT           = 0x02,
228     TKIP_CRYPT          = 0x03,
229     AES_CRYPT           = 0x04,
230 } CRYPTO_TYPE;
231
232 #define WMI_MIN_CRYPTO_TYPE NONE_CRYPT
233 #define WMI_MAX_CRYPTO_TYPE (AES_CRYPT + 1)
234
235 #define WMI_MIN_KEY_INDEX   0
236 #define WMI_MAX_KEY_INDEX   3
237
238 #define WMI_MAX_KEY_LEN     32
239
240 #define WMI_MAX_SSID_LEN    32
241
242 typedef enum {
243     CONNECT_ASSOC_POLICY_USER = 0x0001,
244     CONNECT_SEND_REASSOC = 0x0002,
245     CONNECT_IGNORE_WPAx_GROUP_CIPHER = 0x0004,
246     CONNECT_PROFILE_MATCH_DONE = 0x0008,
247     CONNECT_IGNORE_AAC_BEACON = 0x0010,
248     CONNECT_CSA_FOLLOW_BSS = 0x0020,
249 } WMI_CONNECT_CTRL_FLAGS_BITS;
250
251 #define DEFAULT_CONNECT_CTRL_FLAGS         (CONNECT_CSA_FOLLOW_BSS)
252
253 typedef PREPACK struct {
254     A_UINT8     networkType;
255     A_UINT8     dot11AuthMode;
256     A_UINT8     authMode;
257     A_UINT8     pairwiseCryptoType;
258     A_UINT8     pairwiseCryptoLen;
259     A_UINT8     groupCryptoType;
260     A_UINT8     groupCryptoLen;
261     A_UINT8     ssidLength;
262     A_UCHAR     ssid[WMI_MAX_SSID_LEN];
263     A_UINT16    channel;
264     A_UINT8     bssid[ATH_MAC_LEN];
265     A_UINT32    ctrl_flags;
266 } POSTPACK WMI_CONNECT_CMD;
267
268 /*
269  * WMI_RECONNECT_CMDID
270  */
271 typedef PREPACK struct {
272     A_UINT16    channel;                    /* hint */
273     A_UINT8     bssid[ATH_MAC_LEN];         /* mandatory if set */
274 } POSTPACK WMI_RECONNECT_CMD;
275
276 /*
277  * WMI_ADD_CIPHER_KEY_CMDID
278  */
279 typedef enum {
280     PAIRWISE_USAGE      = 0x00,
281     GROUP_USAGE         = 0x01,
282     TX_USAGE            = 0x02,     /* default Tx Key - Static WEP only */
283 } KEY_USAGE;
284
285 /*
286  * Bit Flag
287  * Bit 0 - Initialise TSC - default is Initialize
288  */
289 #define KEY_OP_INIT_TSC       0x01
290 #define KEY_OP_INIT_RSC       0x02
291
292 #define KEY_OP_INIT_VAL     0x03     /* Default Initialise the TSC & RSC */
293 #define KEY_OP_VALID_MASK   0x03
294
295 typedef PREPACK struct {
296     A_UINT8     keyIndex;
297     A_UINT8     keyType;
298     A_UINT8     keyUsage;           /* KEY_USAGE */
299     A_UINT8     keyLength;
300     A_UINT8     keyRSC[8];          /* key replay sequence counter */
301     A_UINT8     key[WMI_MAX_KEY_LEN];
302     A_UINT8     key_op_ctrl;       /* Additional Key Control information */
303 } POSTPACK WMI_ADD_CIPHER_KEY_CMD;
304
305 /*
306  * WMI_DELETE_CIPHER_KEY_CMDID
307  */
308 typedef PREPACK struct {
309     A_UINT8     keyIndex;
310 } POSTPACK WMI_DELETE_CIPHER_KEY_CMD;
311
312 #define WMI_KRK_LEN     16
313 /*
314  * WMI_ADD_KRK_CMDID
315  */
316 typedef PREPACK struct {
317     A_UINT8     krk[WMI_KRK_LEN];
318 } POSTPACK WMI_ADD_KRK_CMD;
319
320 /*
321  * WMI_SET_TKIP_COUNTERMEASURES_CMDID
322  */
323 typedef enum {
324     WMI_TKIP_CM_DISABLE = 0x0,
325     WMI_TKIP_CM_ENABLE  = 0x1,
326 } WMI_TKIP_CM_CONTROL;
327
328 typedef PREPACK struct {
329     A_UINT8  cm_en;                     /* WMI_TKIP_CM_CONTROL */
330 } POSTPACK WMI_SET_TKIP_COUNTERMEASURES_CMD;
331
332 /*
333  * WMI_SET_PMKID_CMDID
334  */
335
336 #define WMI_PMKID_LEN 16
337
338 typedef enum {
339    PMKID_DISABLE = 0,
340    PMKID_ENABLE  = 1,
341 } PMKID_ENABLE_FLG;
342
343 typedef PREPACK struct {
344     A_UINT8     bssid[ATH_MAC_LEN];
345     A_UINT8     enable;                 /* PMKID_ENABLE_FLG */
346     A_UINT8     pmkid[WMI_PMKID_LEN];
347 } POSTPACK WMI_SET_PMKID_CMD;
348
349 /*
350  * WMI_START_SCAN_CMD
351  */
352 typedef enum {
353     WMI_LONG_SCAN  = 0,
354     WMI_SHORT_SCAN = 1,
355 } WMI_SCAN_TYPE;
356
357 typedef PREPACK struct {
358     A_BOOL   forceFgScan;
359     A_BOOL   isLegacy;        /* For Legacy Cisco AP compatibility */
360     A_UINT32 homeDwellTime;   /* Maximum duration in the home channel(milliseconds) */
361     A_UINT32 forceScanInterval;    /* Time interval between scans (milliseconds)*/
362     A_UINT8  scanType;           /* WMI_SCAN_TYPE */
363 } POSTPACK WMI_START_SCAN_CMD;
364
365 /*
366  * WMI_SET_SCAN_PARAMS_CMDID
367  */
368 #define WMI_SHORTSCANRATIO_DEFAULT      3
369 typedef enum {
370     CONNECT_SCAN_CTRL_FLAGS = 0x01,    /* set if can scan in the Connect cmd */
371     SCAN_CONNECTED_CTRL_FLAGS = 0x02,  /* set if scan for the SSID it is */
372                                        /* already connected to */
373     ACTIVE_SCAN_CTRL_FLAGS = 0x04,     /* set if enable active scan */
374     ROAM_SCAN_CTRL_FLAGS = 0x08,       /* set if enable roam scan when bmiss and lowrssi */
375     REPORT_BSSINFO_CTRL_FLAGS = 0x10,   /* set if follows customer BSSINFO reporting rule */
376     ENABLE_AUTO_CTRL_FLAGS = 0x20,      /* if disabled, target doesn't
377                                           scan after a disconnect event  */
378     ENABLE_SCAN_ABORT_EVENT = 0x40      /* Scan complete event with canceled status will be generated when a scan is prempted before it gets completed */
379
380 } WMI_SCAN_CTRL_FLAGS_BITS;
381
382 #define CAN_SCAN_IN_CONNECT(flags)      (flags & CONNECT_SCAN_CTRL_FLAGS)
383 #define CAN_SCAN_CONNECTED(flags)       (flags & SCAN_CONNECTED_CTRL_FLAGS)
384 #define ENABLE_ACTIVE_SCAN(flags)       (flags & ACTIVE_SCAN_CTRL_FLAGS)
385 #define ENABLE_ROAM_SCAN(flags)         (flags & ROAM_SCAN_CTRL_FLAGS)
386 #define CONFIG_REPORT_BSSINFO(flags)     (flags & REPORT_BSSINFO_CTRL_FLAGS)
387 #define IS_AUTO_SCAN_ENABLED(flags)      (flags & ENABLE_AUTO_CTRL_FLAGS)
388 #define SCAN_ABORT_EVENT_ENABLED(flags) (flags & ENABLE_SCAN_ABORT_EVENT)
389
390 #define DEFAULT_SCAN_CTRL_FLAGS         (CONNECT_SCAN_CTRL_FLAGS| SCAN_CONNECTED_CTRL_FLAGS| ACTIVE_SCAN_CTRL_FLAGS| ROAM_SCAN_CTRL_FLAGS | ENABLE_AUTO_CTRL_FLAGS)
391
392
393 typedef PREPACK struct {
394     A_UINT16    fg_start_period;        /* seconds */
395     A_UINT16    fg_end_period;          /* seconds */
396     A_UINT16    bg_period;              /* seconds */
397     A_UINT16    maxact_chdwell_time;    /* msec */
398     A_UINT16    pas_chdwell_time;       /* msec */
399     A_UINT8     shortScanRatio;         /* how many shorts scan for one long */
400     A_UINT8     scanCtrlFlags;
401     A_UINT16    minact_chdwell_time;    /* msec */
402     A_UINT32    max_dfsch_act_time;  /* msecs */
403 } POSTPACK WMI_SCAN_PARAMS_CMD;
404
405 /*
406  * WMI_SET_BSS_FILTER_CMDID
407  */
408 typedef enum {
409     NONE_BSS_FILTER = 0x0,              /* no beacons forwarded */
410     ALL_BSS_FILTER,                     /* all beacons forwarded */
411     PROFILE_FILTER,                     /* only beacons matching profile */
412     ALL_BUT_PROFILE_FILTER,             /* all but beacons matching profile */
413     CURRENT_BSS_FILTER,                 /* only beacons matching current BSS */
414     ALL_BUT_BSS_FILTER,                 /* all but beacons matching BSS */
415     PROBED_SSID_FILTER,                 /* beacons matching probed ssid */
416     LAST_BSS_FILTER,                    /* marker only */
417 } WMI_BSS_FILTER;
418
419 typedef PREPACK struct {
420     A_UINT8    bssFilter;                      /* see WMI_BSS_FILTER */
421     A_UINT32   ieMask;
422 } POSTPACK WMI_BSS_FILTER_CMD;
423
424 /*
425  * WMI_SET_PROBED_SSID_CMDID
426  */
427 #define MAX_PROBED_SSID_INDEX   5
428
429 typedef enum {
430     DISABLE_SSID_FLAG  = 0,                  /* disables entry */
431     SPECIFIC_SSID_FLAG = 0x01,               /* probes specified ssid */
432     ANY_SSID_FLAG      = 0x02,               /* probes for any ssid */
433 } WMI_SSID_FLAG;
434
435 typedef PREPACK struct {
436     A_UINT8     entryIndex;                     /* 0 to MAX_PROBED_SSID_INDEX */
437     A_UINT8     flag;                           /* WMI_SSID_FLG */
438     A_UINT8     ssidLength;
439     A_UINT8     ssid[32];
440 } POSTPACK WMI_PROBED_SSID_CMD;
441
442 /*
443  * WMI_SET_LISTEN_INT_CMDID
444  * The Listen interval is between 15 and 3000 TUs
445  */
446 #define MIN_LISTEN_INTERVAL 15
447 #define MAX_LISTEN_INTERVAL 5000
448 #define MIN_LISTEN_BEACONS 1
449 #define MAX_LISTEN_BEACONS 50
450
451 typedef PREPACK struct {
452     A_UINT16     listenInterval;
453     A_UINT16     numBeacons;
454 } POSTPACK WMI_LISTEN_INT_CMD;
455
456 /*
457  * WMI_SET_BEACON_INT_CMDID
458  */
459 typedef PREPACK struct {
460     A_UINT16     beaconInterval;
461 } POSTPACK WMI_BEACON_INT_CMD;
462
463 /*
464  * WMI_SET_BMISS_TIME_CMDID
465  * valid values are between 1000 and 5000 TUs
466  */
467
468 #define MIN_BMISS_TIME     1000
469 #define MAX_BMISS_TIME     5000
470 #define MIN_BMISS_BEACONS  1
471 #define MAX_BMISS_BEACONS  50
472
473 typedef PREPACK struct {
474     A_UINT16     bmissTime;
475     A_UINT16     numBeacons;
476 } POSTPACK WMI_BMISS_TIME_CMD;
477
478 /*
479  * WMI_SET_POWER_MODE_CMDID
480  */
481 typedef enum {
482     REC_POWER = 0x01,
483     MAX_PERF_POWER,
484 } WMI_POWER_MODE;
485
486 typedef PREPACK struct {
487     A_UINT8     powerMode;      /* WMI_POWER_MODE */
488 } POSTPACK WMI_POWER_MODE_CMD;
489
490 /*
491  * WMI_SET_POWER_PARAMS_CMDID
492  */
493 typedef enum {
494     IGNORE_DTIM = 0x01,
495     NORMAL_DTIM = 0x02,
496     STICK_DTIM  = 0x03,
497 } WMI_DTIM_POLICY;
498
499 typedef PREPACK struct {
500     A_UINT16    idle_period;             /* msec */
501     A_UINT16    pspoll_number;
502     A_UINT16    dtim_policy;
503 } POSTPACK WMI_POWER_PARAMS_CMD;
504
505 typedef PREPACK struct {
506     A_UINT8    power_saving;
507     A_UINT8    ttl; /* number of beacon periods */
508     A_UINT16   atim_windows;          /* msec */
509     A_UINT16   timeout_value;         /* msec */
510 } POSTPACK WMI_IBSS_PM_CAPS_CMD;
511
512 /*
513  * WMI_SET_POWERSAVE_TIMERS_POLICY_CMDID
514  */
515 typedef enum {
516     IGNORE_TIM_ALL_QUEUES_APSD = 0,
517     PROCESS_TIM_ALL_QUEUES_APSD = 1,
518     IGNORE_TIM_SIMULATED_APSD = 2,
519     PROCESS_TIM_SIMULATED_APSD = 3,
520 } APSD_TIM_POLICY;
521
522 typedef PREPACK struct {
523     A_UINT16    psPollTimeout;          /* msec */
524     A_UINT16    triggerTimeout;         /* msec */
525     A_UINT32    apsdTimPolicy;      /* TIM behavior with  ques APSD enabled. Default is IGNORE_TIM_ALL_QUEUES_APSD */
526     A_UINT32    simulatedAPSDTimPolicy;      /* TIM behavior with  simulated APSD enabled. Default is PROCESS_TIM_SIMULATED_APSD */
527 } POSTPACK WMI_POWERSAVE_TIMERS_POLICY_CMD;
528
529 /*
530  * WMI_SET_VOICE_PKT_SIZE_CMDID
531  */
532 typedef PREPACK struct {
533     A_UINT16    voicePktSize;
534 } POSTPACK WMI_SET_VOICE_PKT_SIZE_CMD;
535
536 /*
537  * WMI_SET_MAX_SP_LEN_CMDID
538  */
539 typedef enum {
540     DELIVER_ALL_PKT = 0x0,
541     DELIVER_2_PKT = 0x1,
542     DELIVER_4_PKT = 0x2,
543     DELIVER_6_PKT = 0x3,
544 } APSD_SP_LEN_TYPE;
545
546 typedef PREPACK struct {
547     A_UINT8    maxSPLen;
548 } POSTPACK WMI_SET_MAX_SP_LEN_CMD;
549
550 /*
551  * WMI_SET_DISC_TIMEOUT_CMDID
552  */
553 typedef PREPACK struct {
554     A_UINT8     disconnectTimeout;          /* seconds */
555 } POSTPACK WMI_DISC_TIMEOUT_CMD;
556
557 typedef enum {
558     UPLINK_TRAFFIC = 0,
559     DNLINK_TRAFFIC = 1,
560     BIDIR_TRAFFIC = 2,
561 } DIR_TYPE;
562
563 typedef enum {
564     DISABLE_FOR_THIS_AC = 0,
565     ENABLE_FOR_THIS_AC  = 1,
566     ENABLE_FOR_ALL_AC   = 2,
567 } VOICEPS_CAP_TYPE;
568
569 typedef enum {
570     TRAFFIC_TYPE_APERIODIC = 0,
571     TRAFFIC_TYPE_PERIODIC = 1,
572 }TRAFFIC_TYPE;
573
574 /*
575  * WMI_CREATE_PSTREAM_CMDID
576  */
577 typedef PREPACK struct {
578     A_UINT32        minServiceInt;           /* in milli-sec */
579     A_UINT32        maxServiceInt;           /* in milli-sec */
580     A_UINT32        inactivityInt;           /* in milli-sec */
581     A_UINT32        suspensionInt;           /* in milli-sec */
582     A_UINT32        serviceStartTime;
583     A_UINT32        minDataRate;             /* in bps */
584     A_UINT32        meanDataRate;            /* in bps */
585     A_UINT32        peakDataRate;            /* in bps */
586     A_UINT32        maxBurstSize;
587     A_UINT32        delayBound;
588     A_UINT32        minPhyRate;              /* in bps */
589     A_UINT32        sba;
590     A_UINT32        mediumTime;
591     A_UINT16        nominalMSDU;             /* in octects */
592     A_UINT16        maxMSDU;                 /* in octects */
593     A_UINT8         trafficClass;
594     A_UINT8         trafficType;             /* TRAFFIC_TYPE */
595     A_UINT8         trafficDirection;        /* TRAFFIC_DIR */
596     A_UINT8         voicePSCapability;       /* VOICEPS_CAP_TYPE */
597     A_UINT8         tsid;
598     A_UINT8         userPriority;            /* 802.1D user priority */
599 } POSTPACK WMI_CREATE_PSTREAM_CMD;
600
601 /*
602  * WMI_DELETE_PSTREAM_CMDID
603  */
604 typedef PREPACK struct {
605     A_UINT8     trafficClass;
606     A_UINT8     tsid;
607 } POSTPACK WMI_DELETE_PSTREAM_CMD;
608
609 /*
610  * WMI_SET_CHANNEL_PARAMS_CMDID
611  */
612 typedef enum {
613     WMI_11A_MODE  = 0x1,
614     WMI_11G_MODE  = 0x2,
615     WMI_11AG_MODE = 0x3,
616     WMI_11B_MODE  = 0x4,
617     WMI_11GONLY_MODE = 0x5,
618 } WMI_PHY_MODE;
619
620 #define WMI_MAX_CHANNELS        32
621
622 typedef PREPACK struct {
623     A_UINT8     reserved1;
624     A_UINT8     scanParam;              /* set if enable scan */
625     A_UINT8     phyMode;                /* see WMI_PHY_MODE */
626     A_UINT8     numChannels;            /* how many channels follow */
627     A_UINT16    channelList[1];         /* channels in Mhz */
628 } POSTPACK WMI_CHANNEL_PARAMS_CMD;
629
630
631 /*
632  *  WMI_RSSI_THRESHOLD_PARAMS_CMDID
633  *  Setting the polltime to 0 would disable polling.
634  *  Threshold values are in the ascending order, and should agree to:
635  *  (lowThreshold_lowerVal < lowThreshold_upperVal < highThreshold_lowerVal
636  *      < highThreshold_upperVal)
637  */
638
639 typedef PREPACK struct WMI_RSSI_THRESHOLD_PARAMS{
640     A_UINT32    pollTime;               /* Polling time as a factor of LI */
641     A_INT16     thresholdAbove1_Val;          /* lowest of upper */
642     A_INT16     thresholdAbove2_Val;
643     A_INT16     thresholdAbove3_Val;
644     A_INT16     thresholdAbove4_Val;
645     A_INT16     thresholdAbove5_Val;
646     A_INT16     thresholdAbove6_Val;          /* highest of upper */
647     A_INT16     thresholdBelow1_Val;         /* lowest of bellow */
648     A_INT16     thresholdBelow2_Val;
649     A_INT16     thresholdBelow3_Val;
650     A_INT16     thresholdBelow4_Val;
651     A_INT16     thresholdBelow5_Val;
652     A_INT16     thresholdBelow6_Val;         /* highest of bellow */
653     A_UINT8     weight;                  /* "alpha" */
654     A_UINT8     reserved[3];
655 } POSTPACK  WMI_RSSI_THRESHOLD_PARAMS_CMD;
656
657 /*
658  *  WMI_SNR_THRESHOLD_PARAMS_CMDID
659  *  Setting the polltime to 0 would disable polling.
660  */
661
662 typedef PREPACK struct WMI_SNR_THRESHOLD_PARAMS{
663     A_UINT32    pollTime;               /* Polling time as a factor of LI */
664     A_UINT8     weight;                  /* "alpha" */
665     A_UINT8     thresholdAbove1_Val;      /* lowest of uppper*/
666     A_UINT8     thresholdAbove2_Val;
667     A_UINT8     thresholdAbove3_Val;
668     A_UINT8     thresholdAbove4_Val;      /* highest of upper */
669     A_UINT8     thresholdBelow1_Val;     /* lowest of bellow */
670     A_UINT8     thresholdBelow2_Val;
671     A_UINT8     thresholdBelow3_Val;
672     A_UINT8     thresholdBelow4_Val;     /* highest of bellow */
673     A_UINT8     reserved[3];
674 } POSTPACK WMI_SNR_THRESHOLD_PARAMS_CMD;
675
676 /*
677  *  WMI_LQ_THRESHOLD_PARAMS_CMDID
678  */
679 typedef PREPACK struct WMI_LQ_THRESHOLD_PARAMS {
680     A_UINT8     enable;
681     A_UINT8     thresholdAbove1_Val;
682     A_UINT8     thresholdAbove2_Val;
683     A_UINT8     thresholdAbove3_Val;
684     A_UINT8     thresholdAbove4_Val;
685     A_UINT8     thresholdBelow1_Val;
686     A_UINT8     thresholdBelow2_Val;
687     A_UINT8     thresholdBelow3_Val;
688     A_UINT8     thresholdBelow4_Val;
689     A_UINT8     reserved[3];
690 } POSTPACK  WMI_LQ_THRESHOLD_PARAMS_CMD;
691
692 typedef enum {
693     WMI_LPREAMBLE_DISABLED = 0,
694     WMI_LPREAMBLE_ENABLED
695 } WMI_LPREAMBLE_STATUS;
696
697 typedef PREPACK struct {
698     A_UINT8     status;
699 }POSTPACK WMI_SET_LPREAMBLE_CMD;
700
701 typedef PREPACK struct {
702     A_UINT16    threshold;
703 }POSTPACK WMI_SET_RTS_CMD;
704
705 /*
706  *  WMI_TARGET_ERROR_REPORT_BITMASK_CMDID
707  *  Sets the error reporting event bitmask in target. Target clears it
708  *  upon an error. Subsequent errors are counted, but not reported
709  *  via event, unless the bitmask is set again.
710  */
711 typedef PREPACK struct {
712     A_UINT32    bitmask;
713 } POSTPACK  WMI_TARGET_ERROR_REPORT_BITMASK;
714
715 /*
716  * WMI_SET_TX_PWR_CMDID
717  */
718 typedef PREPACK struct {
719     A_UINT8     dbM;                  /* in dbM units */
720 } POSTPACK WMI_SET_TX_PWR_CMD, WMI_TX_PWR_REPLY;
721
722 /*
723  * WMI_SET_ASSOC_INFO_CMDID
724  *
725  * A maximum of 2 private IEs can be sent in the [Re]Assoc request.
726  * A 3rd one, the CCX version IE can also be set from the host.
727  */
728 #define WMI_MAX_ASSOC_INFO_TYPE    2
729 #define WMI_CCX_VER_IE             2 /* ieType to set CCX Version IE */
730
731 #define WMI_MAX_ASSOC_INFO_LEN     240
732
733 typedef PREPACK struct {
734     A_UINT8     ieType;
735     A_UINT8     bufferSize;
736     A_UINT8     assocInfo[1];       /* up to WMI_MAX_ASSOC_INFO_LEN */
737 } POSTPACK WMI_SET_ASSOC_INFO_CMD;
738
739
740 /*
741  * WMI_GET_TX_PWR_CMDID does not take any parameters
742  */
743
744 /*
745  * WMI_ADD_BAD_AP_CMDID
746  */
747 #define WMI_MAX_BAD_AP_INDEX      1
748
749 typedef PREPACK struct {
750     A_UINT8     badApIndex;         /* 0 to WMI_MAX_BAD_AP_INDEX */
751     A_UINT8     bssid[ATH_MAC_LEN];
752 } POSTPACK WMI_ADD_BAD_AP_CMD;
753
754 /*
755  * WMI_DELETE_BAD_AP_CMDID
756  */
757 typedef PREPACK struct {
758     A_UINT8     badApIndex;         /* 0 to WMI_MAX_BAD_AP_INDEX */
759 } POSTPACK WMI_DELETE_BAD_AP_CMD;
760
761 /*
762  * WMI_SET_ACCESS_PARAMS_CMDID
763  */
764 #define WMI_DEFAULT_TXOP_ACPARAM    0       /* implies one MSDU */
765 #define WMI_DEFAULT_ECWMIN_ACPARAM  4       /* corresponds to CWmin of 15 */
766 #define WMI_DEFAULT_ECWMAX_ACPARAM  10      /* corresponds to CWmax of 1023 */
767 #define WMI_MAX_CW_ACPARAM          15      /* maximum eCWmin or eCWmax */
768 #define WMI_DEFAULT_AIFSN_ACPARAM   2
769 #define WMI_MAX_AIFSN_ACPARAM       15
770 typedef PREPACK struct {
771     A_UINT16 txop;                      /* in units of 32 usec */
772     A_UINT8  eCWmin;
773     A_UINT8  eCWmax;
774     A_UINT8  aifsn;
775 } POSTPACK WMI_SET_ACCESS_PARAMS_CMD;
776
777
778 /*
779  * WMI_SET_RETRY_LIMITS_CMDID
780  *
781  * This command is used to customize the number of retries the
782  * wlan device will perform on a given frame.
783  */
784 #define WMI_MIN_RETRIES 2
785 #define WMI_MAX_RETRIES 13
786 typedef enum {
787     MGMT_FRAMETYPE    = 0,
788     CONTROL_FRAMETYPE = 1,
789     DATA_FRAMETYPE    = 2
790 } WMI_FRAMETYPE;
791
792 typedef PREPACK struct {
793     A_UINT8 frameType;                      /* WMI_FRAMETYPE */
794     A_UINT8 trafficClass;                   /* applies only to DATA_FRAMETYPE */
795     A_UINT8 maxRetries;
796     A_UINT8 enableNotify;
797 } POSTPACK WMI_SET_RETRY_LIMITS_CMD;
798
799 /*
800  * WMI_SET_ROAM_CTRL_CMDID
801  *
802  * This command is used to influence the Roaming behaviour
803  * Set the host biases of the BSSs before setting the roam mode as bias
804  * based.
805  */
806
807 /*
808  * Different types of Roam Control
809  */
810
811 typedef enum {
812         WMI_FORCE_ROAM          = 1,      /* Roam to the specified BSSID */
813         WMI_SET_ROAM_MODE       = 2,      /* default ,progd bias, no roam */
814         WMI_SET_HOST_BIAS       = 3,     /* Set the Host Bias */
815         WMI_SET_LOWRSSI_SCAN_PARAMS = 4, /* Set lowrssi Scan parameters */
816 } WMI_ROAM_CTRL_TYPE;
817
818 #define WMI_MIN_ROAM_CTRL_TYPE WMI_FORCE_ROAM
819 #define WMI_MAX_ROAM_CTRL_TYPE WMI_SET_LOWRSSI_SCAN_PARAMS
820
821 /*
822  * ROAM MODES
823  */
824
825 typedef enum {
826         WMI_DEFAULT_ROAM_MODE   = 1,  /* RSSI based ROAM */
827         WMI_HOST_BIAS_ROAM_MODE = 2, /* HOST BIAS based ROAM */
828         WMI_LOCK_BSS_MODE  = 3  /* Lock to the Current BSS - no Roam */
829 } WMI_ROAM_MODE;
830
831 /*
832  * BSS HOST BIAS INFO
833  */
834
835 typedef PREPACK struct {
836         A_UINT8 bssid[ATH_MAC_LEN];
837         A_INT8  bias;
838 } POSTPACK WMI_BSS_BIAS;
839
840 typedef PREPACK struct {
841         A_UINT8 numBss;
842         WMI_BSS_BIAS bssBias[1];
843 } POSTPACK WMI_BSS_BIAS_INFO;
844
845 typedef PREPACK struct WMI_LOWRSSI_SCAN_PARAMS {
846         A_UINT16 lowrssi_scan_period;
847         A_INT16  lowrssi_scan_threshold;
848         A_INT16  lowrssi_roam_threshold;
849         A_UINT8  roam_rssi_floor;
850         A_UINT8  reserved[1];              /* For alignment */
851 } POSTPACK WMI_LOWRSSI_SCAN_PARAMS;
852
853 typedef PREPACK struct {
854     PREPACK union {
855         A_UINT8 bssid[ATH_MAC_LEN]; /* WMI_FORCE_ROAM */
856         A_UINT8 roamMode;           /* WMI_SET_ROAM_MODE  */
857         WMI_BSS_BIAS_INFO bssBiasInfo; /* WMI_SET_HOST_BIAS */
858         WMI_LOWRSSI_SCAN_PARAMS lrScanParams;
859     } POSTPACK info;
860     A_UINT8   roamCtrlType ;
861 } POSTPACK WMI_SET_ROAM_CTRL_CMD;
862
863 /*
864  * WMI_ENABLE_RM_CMDID
865  */
866 typedef PREPACK struct {
867         A_BOOL enable_radio_measurements;
868 } POSTPACK WMI_ENABLE_RM_CMD;
869
870 /*
871  * WMI_SET_MAX_OFFHOME_DURATION_CMDID
872  */
873 typedef PREPACK struct {
874         A_UINT8 max_offhome_duration;
875 } POSTPACK WMI_SET_MAX_OFFHOME_DURATION_CMD;
876
877 typedef PREPACK struct {
878     A_UINT32 frequency;
879     A_UINT8  threshold;
880 } POSTPACK WMI_SET_HB_CHALLENGE_RESP_PARAMS_CMD;
881
882 typedef enum {
883     BT_STREAM_UNDEF = 0,
884     BT_STREAM_SCO,             /* SCO stream */
885     BT_STREAM_A2DP,            /* A2DP stream */
886     BT_STREAM_MAX
887 } BT_STREAM_TYPE;
888
889 typedef enum {
890     BT_PARAM_SCO = 1,         /* SCO stream parameters */
891     BT_PARAM_A2DP,            /* A2DP stream parameters */
892     BT_PARAM_MISC,            /* miscellaneous parameters */
893     BT_PARAM_REGS,            /* co-existence register parameters */
894     BT_PARAM_MAX
895 } BT_PARAM_TYPE;
896
897 typedef enum {
898     BT_STATUS_UNDEF = 0,
899     BT_STATUS_START,
900     BT_STATUS_STOP,
901     BT_STATUS_RESUME,
902     BT_STATUS_SUSPEND,
903     BT_STATUS_MAX
904 } BT_STREAM_STATUS;
905
906 typedef PREPACK struct {
907     A_UINT8 streamType;
908     A_UINT8 status;
909 } POSTPACK WMI_SET_BT_STATUS_CMD;
910
911 typedef PREPACK struct {
912     A_UINT8 noSCOPkts;
913     A_UINT8 pspollTimeout;
914     A_UINT8 stompbt;
915 } POSTPACK BT_PARAMS_SCO;
916
917 typedef PREPACK struct {
918     A_UINT32 period;
919     A_UINT32 dutycycle;
920     A_UINT8  stompbt;
921 } POSTPACK BT_PARAMS_A2DP;
922
923 typedef PREPACK struct {
924     A_UINT32 mode;
925     A_UINT32 scoWghts;
926     A_UINT32 a2dpWghts;
927     A_UINT32 genWghts;
928     A_UINT32 mode2;
929     A_UINT8  setVal;
930 } POSTPACK BT_COEX_REGS;
931
932 typedef enum {
933     WLAN_PROTECT_POLICY = 1,
934     WLAN_COEX_CTRL_FLAGS
935 } BT_PARAMS_MISC_TYPE;
936
937 typedef enum {
938     WLAN_PROTECT_PER_STREAM = 0x01,   /* default */
939     WLAN_PROTECT_ANY_TX = 0x02
940 } WLAN_PROTECT_FLAGS;
941
942
943 #define WLAN_DISABLE_COEX_IN_DISCONNECT   0x01 /* default */
944 #define WLAN_KEEP_COEX_IN_DISCONNECT      0x02
945 #define WLAN_STOMPBT_IN_DISCONNECT        0x04
946
947 #define WLAN_DISABLE_COEX_IN_ROAM         0x10 /* default */
948 #define WLAN_KEEP_COEX_IN_ROAM            0x20
949 #define WLAN_STOMPBT_IN_ROAM              0x40
950
951 #define WLAN_DISABLE_COEX_IN_SCAN        0x100 /* default */
952 #define WLAN_KEEP_COEX_IN_SCAN           0x200
953 #define WLAN_STOMPBT_IN_SCAN             0x400
954
955 #define WLAN_DISABLE_COEX_BT_OFF        0x1000 /* default */
956 #define WLAN_KEEP_COEX_BT_OFF           0x2000
957 #define WLAN_STOMPBT_BT_OFF             0x4000
958
959 typedef PREPACK struct {
960     A_UINT32 period;
961     A_UINT32 dutycycle;
962     A_UINT8  stompbt;
963     A_UINT8  policy;
964 } POSTPACK WLAN_PROTECT_POLICY_TYPE;
965
966 typedef PREPACK struct {
967     PREPACK union {
968         WLAN_PROTECT_POLICY_TYPE protectParams;
969         A_UINT16 wlanCtrlFlags;
970     } POSTPACK info;
971     A_UINT8 paramType;
972 } POSTPACK BT_PARAMS_MISC;
973
974 typedef PREPACK struct {
975     PREPACK union {
976         BT_PARAMS_SCO scoParams;
977         BT_PARAMS_A2DP a2dpParams;
978         BT_PARAMS_MISC miscParams;
979         BT_COEX_REGS regs;
980     } POSTPACK info;
981     A_UINT8 paramType;
982 } POSTPACK WMI_SET_BT_PARAMS_CMD;
983
984 /*
985  * Command Replies
986  */
987
988 /*
989  * WMI_GET_CHANNEL_LIST_CMDID reply
990  */
991 typedef PREPACK struct {
992     A_UINT8     reserved1;
993     A_UINT8     numChannels;            /* number of channels in reply */
994     A_UINT16    channelList[1];         /* channel in Mhz */
995 } POSTPACK WMI_CHANNEL_LIST_REPLY;
996
997 typedef enum {
998     A_SUCCEEDED = A_OK,
999     A_FAILED_DELETE_STREAM_DOESNOT_EXIST=250,
1000     A_SUCCEEDED_MODIFY_STREAM=251,
1001     A_FAILED_INVALID_STREAM = 252,
1002     A_FAILED_MAX_THINSTREAMS = 253,
1003     A_FAILED_CREATE_REMOVE_PSTREAM_FIRST = 254,
1004 } PSTREAM_REPLY_STATUS;
1005
1006 /*
1007  * List of Events (target to host)
1008  */
1009 typedef enum {
1010     WMI_READY_EVENTID           = 0x1001,
1011     WMI_CONNECT_EVENTID,
1012     WMI_DISCONNECT_EVENTID,
1013     WMI_BSSINFO_EVENTID,
1014     WMI_CMDERROR_EVENTID,
1015     WMI_REGDOMAIN_EVENTID,
1016     WMI_PSTREAM_TIMEOUT_EVENTID,
1017     WMI_NEIGHBOR_REPORT_EVENTID,
1018     WMI_TKIP_MICERR_EVENTID,
1019     WMI_SCAN_COMPLETE_EVENTID,
1020     WMI_REPORT_STATISTICS_EVENTID,
1021     WMI_RSSI_THRESHOLD_EVENTID,
1022     WMI_ERROR_REPORT_EVENTID,
1023     WMI_OPT_RX_FRAME_EVENTID,
1024     WMI_REPORT_ROAM_TBL_EVENTID,
1025     WMI_EXTENSION_EVENTID,
1026     WMI_CAC_EVENTID,
1027     WMI_SNR_THRESHOLD_EVENTID,
1028     WMI_LQ_THRESHOLD_EVENTID,
1029     WMI_TX_RETRY_ERR_EVENTID,
1030     WMI_REPORT_ROAM_DATA_EVENTID,
1031     WMI_TEST_EVENTID,
1032     WMI_APLIST_EVENTID,
1033     WMI_GET_WOW_LIST_EVENTID,
1034     WMI_GET_PMKID_LIST_EVENTID
1035 } WMI_EVENT_ID;
1036
1037 typedef enum {
1038     WMI_11A_CAPABILITY   = 1,
1039     WMI_11G_CAPABILITY   = 2,
1040     WMI_11AG_CAPABILITY  = 3,
1041 } WMI_PHY_CAPABILITY;
1042
1043 typedef PREPACK struct {
1044     A_UINT8     macaddr[ATH_MAC_LEN];
1045     A_UINT8     phyCapability;              /* WMI_PHY_CAPABILITY */
1046 } POSTPACK WMI_READY_EVENT;
1047
1048 /*
1049  * Connect Event
1050  */
1051 typedef PREPACK struct {
1052     A_UINT16    channel;
1053     A_UINT8     bssid[ATH_MAC_LEN];
1054     A_UINT16    listenInterval;
1055     A_UINT16    beaconInterval;
1056     A_UINT32    networkType;
1057     A_UINT8     beaconIeLen;
1058     A_UINT8     assocReqLen;
1059     A_UINT8     assocRespLen;
1060     A_UINT8     assocInfo[1];
1061 } POSTPACK WMI_CONNECT_EVENT;
1062
1063 /*
1064  * Disconnect Event
1065  */
1066 typedef enum {
1067     NO_NETWORK_AVAIL   = 0x01,
1068     LOST_LINK          = 0x02,     /* bmiss */
1069     DISCONNECT_CMD     = 0x03,
1070     BSS_DISCONNECTED   = 0x04,
1071     AUTH_FAILED        = 0x05,
1072     ASSOC_FAILED       = 0x06,
1073     NO_RESOURCES_AVAIL = 0x07,
1074     CSERV_DISCONNECT   = 0x08,
1075     INVALID_PROFILE    = 0x0a,
1076     DOT11H_CHANNEL_SWITCH = 0x0b,
1077 } WMI_DISCONNECT_REASON;
1078
1079 typedef PREPACK struct {
1080     A_UINT16    protocolReasonStatus;  /* reason code, see 802.11 spec. */
1081     A_UINT8     bssid[ATH_MAC_LEN];    /* set if known */
1082     A_UINT8     disconnectReason ;      /* see WMI_DISCONNECT_REASON */
1083     A_UINT8     assocRespLen;
1084     A_UINT8     assocInfo[1];
1085 } POSTPACK WMI_DISCONNECT_EVENT;
1086
1087 /*
1088  * BSS Info Event.
1089  * Mechanism used to inform host of the presence and characteristic of
1090  * wireless networks present.  Consists of bss info header followed by
1091  * the beacon or probe-response frame body.  The 802.11 header is not included.
1092  */
1093 typedef enum {
1094     BEACON_FTYPE = 0x1,
1095     PROBERESP_FTYPE,
1096     ACTION_MGMT_FTYPE,
1097 } WMI_BI_FTYPE;
1098
1099 enum {
1100     BSS_ELEMID_CHANSWITCH = 0x01,
1101     BSS_ELEMID_ATHEROS = 0x02,
1102 };
1103
1104 typedef PREPACK struct {
1105     A_UINT16    channel;
1106     A_UINT8     frameType;          /* see WMI_BI_FTYPE */
1107     A_UINT8     snr;
1108     A_INT16     rssi;
1109     A_UINT8     bssid[ATH_MAC_LEN];
1110     A_UINT32    ieMask;
1111 } POSTPACK WMI_BSS_INFO_HDR;
1112
1113 /*
1114  * Command Error Event
1115  */
1116 typedef enum {
1117     INVALID_PARAM  = 0x01,
1118     ILLEGAL_STATE  = 0x02,
1119     INTERNAL_ERROR = 0x03,
1120 } WMI_ERROR_CODE;
1121
1122 typedef PREPACK struct {
1123     A_UINT16    commandId;
1124     A_UINT8     errorCode;
1125 } POSTPACK WMI_CMD_ERROR_EVENT;
1126
1127 /*
1128  * New Regulatory Domain Event
1129  */
1130 typedef PREPACK struct {
1131     A_UINT32    regDomain;
1132 } POSTPACK WMI_REG_DOMAIN_EVENT;
1133
1134 typedef PREPACK struct {
1135     A_UINT8     trafficClass;
1136 } POSTPACK WMI_PSTREAM_TIMEOUT_EVENT;
1137
1138 /*
1139  * The WMI_NEIGHBOR_REPORT Event is generated by the target to inform
1140  * the host of BSS's it has found that matches the current profile.
1141  * It can be used by the host to cache PMKs and/to initiate pre-authentication
1142  * if the BSS supports it.  The first bssid is always the current associated
1143  * BSS.
1144  * The bssid and bssFlags information repeats according to the number
1145  * or APs reported.
1146  */
1147 typedef enum {
1148     WMI_DEFAULT_BSS_FLAGS   = 0x00,
1149     WMI_PREAUTH_CAPABLE_BSS = 0x01,
1150     WMI_PMKID_VALID_BSS     = 0x02,
1151 } WMI_BSS_FLAGS;
1152
1153 typedef PREPACK struct {
1154     A_UINT8     bssid[ATH_MAC_LEN];
1155     A_UINT8     bssFlags;            /* see WMI_BSS_FLAGS */
1156 } POSTPACK WMI_NEIGHBOR_INFO;
1157
1158 typedef PREPACK struct {
1159     A_INT8      numberOfAps;
1160     WMI_NEIGHBOR_INFO neighbor[1];
1161 } POSTPACK WMI_NEIGHBOR_REPORT_EVENT;
1162
1163 /*
1164  * TKIP MIC Error Event
1165  */
1166 typedef PREPACK struct {
1167     A_UINT8 keyid;
1168     A_UINT8 ismcast;
1169 } POSTPACK WMI_TKIP_MICERR_EVENT;
1170
1171 /*
1172  * WMI_SCAN_COMPLETE_EVENTID - no parameters (old), staus parameter (new)
1173  */
1174 typedef PREPACK struct {
1175     A_STATUS status;
1176 } POSTPACK WMI_SCAN_COMPLETE_EVENT;
1177
1178 #define MAX_OPT_DATA_LEN 1400
1179
1180 /*
1181  * WMI_SET_ADHOC_BSSID_CMDID
1182  */
1183 typedef PREPACK struct {
1184     A_UINT8     bssid[ATH_MAC_LEN];
1185 } POSTPACK WMI_SET_ADHOC_BSSID_CMD;
1186
1187 /*
1188  * WMI_SET_OPT_MODE_CMDID
1189  */
1190 typedef enum {
1191     SPECIAL_OFF,
1192     SPECIAL_ON,
1193 } OPT_MODE_TYPE;
1194
1195 typedef PREPACK struct {
1196     A_UINT8     optMode;
1197 } POSTPACK WMI_SET_OPT_MODE_CMD;
1198
1199 /*
1200  * WMI_TX_OPT_FRAME_CMDID
1201  */
1202 typedef enum {
1203     OPT_PROBE_REQ   = 0x01,
1204     OPT_PROBE_RESP  = 0x02,
1205     OPT_CPPP_START  = 0x03,
1206     OPT_CPPP_STOP   = 0x04,
1207 } WMI_OPT_FTYPE;
1208
1209 typedef PREPACK struct {
1210     A_UINT16    optIEDataLen;
1211     A_UINT8     frmType;
1212     A_UINT8     dstAddr[ATH_MAC_LEN];
1213     A_UINT8     bssid[ATH_MAC_LEN];
1214     A_UINT8     reserved;               /* For alignment */
1215     A_UINT8     optIEData[1];
1216 } POSTPACK WMI_OPT_TX_FRAME_CMD;
1217
1218 /*
1219  * Special frame receive Event.
1220  * Mechanism used to inform host of the receiption of the special frames.
1221  * Consists of special frame info header followed by special frame body.
1222  * The 802.11 header is not included.
1223  */
1224 typedef PREPACK struct {
1225     A_UINT16    channel;
1226     A_UINT8     frameType;          /* see WMI_OPT_FTYPE */
1227     A_INT8      snr;
1228     A_UINT8     srcAddr[ATH_MAC_LEN];
1229     A_UINT8     bssid[ATH_MAC_LEN];
1230 } POSTPACK WMI_OPT_RX_INFO_HDR;
1231
1232 /*
1233  * Reporting statistics.
1234  */
1235 typedef PREPACK struct {
1236     A_UINT32   tx_packets;
1237     A_UINT32   tx_bytes;
1238     A_UINT32   tx_unicast_pkts;
1239     A_UINT32   tx_unicast_bytes;
1240     A_UINT32   tx_multicast_pkts;
1241     A_UINT32   tx_multicast_bytes;
1242     A_UINT32   tx_broadcast_pkts;
1243     A_UINT32   tx_broadcast_bytes;
1244     A_UINT32   tx_rts_success_cnt;
1245     A_UINT32   tx_packet_per_ac[4];
1246     A_UINT32   tx_errors_per_ac[4];
1247
1248     A_UINT32   tx_errors;
1249     A_UINT32   tx_failed_cnt;
1250     A_UINT32   tx_retry_cnt;
1251     A_UINT32   tx_rts_fail_cnt;
1252     A_INT32    tx_unicast_rate;
1253 }POSTPACK tx_stats_t;
1254
1255 typedef PREPACK struct {
1256     A_UINT32   rx_packets;
1257     A_UINT32   rx_bytes;
1258     A_UINT32   rx_unicast_pkts;
1259     A_UINT32   rx_unicast_bytes;
1260     A_UINT32   rx_multicast_pkts;
1261     A_UINT32   rx_multicast_bytes;
1262     A_UINT32   rx_broadcast_pkts;
1263     A_UINT32   rx_broadcast_bytes;
1264     A_UINT32   rx_fragment_pkt;
1265
1266     A_UINT32   rx_errors;
1267     A_UINT32   rx_crcerr;
1268     A_UINT32   rx_key_cache_miss;
1269     A_UINT32   rx_decrypt_err;
1270     A_UINT32   rx_duplicate_frames;
1271     A_INT32    rx_unicast_rate;
1272 }POSTPACK rx_stats_t;
1273
1274 typedef PREPACK struct {
1275     A_UINT32   tkip_local_mic_failure;
1276     A_UINT32   tkip_counter_measures_invoked;
1277     A_UINT32   tkip_replays;
1278     A_UINT32   tkip_format_errors;
1279     A_UINT32   ccmp_format_errors;
1280     A_UINT32   ccmp_replays;
1281 }POSTPACK tkip_ccmp_stats_t;
1282
1283 typedef PREPACK struct {
1284     A_UINT32   power_save_failure_cnt;
1285 }POSTPACK pm_stats_t;
1286
1287 typedef PREPACK struct {
1288     A_UINT32    cs_bmiss_cnt;
1289     A_UINT32    cs_lowRssi_cnt;
1290     A_UINT16    cs_connect_cnt;
1291     A_UINT16    cs_disconnect_cnt;
1292     A_INT16     cs_aveBeacon_rssi;
1293     A_UINT16    cs_roam_count;
1294     A_UINT16    cs_rssi;
1295     A_UINT8     cs_snr;
1296     A_UINT8     cs_aveBeacon_snr;
1297     A_UINT8     cs_lastRoam_msec;
1298 } POSTPACK cserv_stats_t;
1299
1300 typedef PREPACK struct {
1301     tx_stats_t          tx_stats;
1302     rx_stats_t          rx_stats;
1303     tkip_ccmp_stats_t   tkipCcmpStats;
1304 }POSTPACK wlan_net_stats_t;
1305
1306 typedef PREPACK struct {
1307     A_UINT32    wow_num_pkts_dropped;
1308     A_UINT16    wow_num_events_discarded;
1309     A_UINT8     wow_num_host_pkt_wakeups;
1310     A_UINT8     wow_num_host_event_wakeups;
1311 } POSTPACK wlan_wow_stats_t;
1312
1313 typedef PREPACK struct {
1314     A_UINT32            lqVal;
1315     A_INT32             noise_floor_calibation;
1316     pm_stats_t          pmStats;
1317     wlan_net_stats_t    txrxStats;
1318     wlan_wow_stats_t    wowStats;
1319     cserv_stats_t       cservStats;
1320 } POSTPACK WMI_TARGET_STATS;
1321
1322 /*
1323  * WMI_RSSI_THRESHOLD_EVENTID.
1324  * Indicate the RSSI events to host. Events are indicated when we breach a
1325  * thresold value.
1326  */
1327 typedef enum{
1328     WMI_RSSI_THRESHOLD1_ABOVE = 0,
1329     WMI_RSSI_THRESHOLD2_ABOVE,
1330     WMI_RSSI_THRESHOLD3_ABOVE,
1331     WMI_RSSI_THRESHOLD4_ABOVE,
1332     WMI_RSSI_THRESHOLD5_ABOVE,
1333     WMI_RSSI_THRESHOLD6_ABOVE,
1334     WMI_RSSI_THRESHOLD1_BELOW,
1335     WMI_RSSI_THRESHOLD2_BELOW,
1336     WMI_RSSI_THRESHOLD3_BELOW,
1337     WMI_RSSI_THRESHOLD4_BELOW,
1338     WMI_RSSI_THRESHOLD5_BELOW,
1339     WMI_RSSI_THRESHOLD6_BELOW
1340 }WMI_RSSI_THRESHOLD_VAL;
1341
1342 typedef PREPACK struct {
1343     A_INT16 rssi;
1344     A_UINT8 range;
1345 }POSTPACK WMI_RSSI_THRESHOLD_EVENT;
1346
1347 /*
1348  *  WMI_ERROR_REPORT_EVENTID
1349  */
1350 typedef enum{
1351     WMI_TARGET_PM_ERR_FAIL      = 0x00000001,
1352     WMI_TARGET_KEY_NOT_FOUND    = 0x00000002,
1353     WMI_TARGET_DECRYPTION_ERR   = 0x00000004,
1354     WMI_TARGET_BMISS            = 0x00000008,
1355     WMI_PSDISABLE_NODE_JOIN     = 0x00000010,
1356     WMI_TARGET_COM_ERR          = 0x00000020,
1357     WMI_TARGET_FATAL_ERR        = 0x00000040
1358 } WMI_TARGET_ERROR_VAL;
1359
1360 typedef PREPACK struct {
1361     A_UINT32 errorVal;
1362 }POSTPACK  WMI_TARGET_ERROR_REPORT_EVENT;
1363
1364 typedef PREPACK struct {
1365     A_UINT8 retrys;
1366 }POSTPACK  WMI_TX_RETRY_ERR_EVENT;
1367
1368 typedef enum{
1369     WMI_SNR_THRESHOLD1_ABOVE = 1,
1370     WMI_SNR_THRESHOLD1_BELOW,
1371     WMI_SNR_THRESHOLD2_ABOVE,
1372     WMI_SNR_THRESHOLD2_BELOW,
1373     WMI_SNR_THRESHOLD3_ABOVE,
1374     WMI_SNR_THRESHOLD3_BELOW,
1375     WMI_SNR_THRESHOLD4_ABOVE,
1376     WMI_SNR_THRESHOLD4_BELOW
1377 } WMI_SNR_THRESHOLD_VAL;
1378
1379 typedef PREPACK struct {
1380     A_UINT8 range;  /* WMI_SNR_THRESHOLD_VAL */
1381     A_UINT8 snr;
1382 }POSTPACK  WMI_SNR_THRESHOLD_EVENT;
1383
1384 typedef enum{
1385     WMI_LQ_THRESHOLD1_ABOVE = 1,
1386     WMI_LQ_THRESHOLD1_BELOW,
1387     WMI_LQ_THRESHOLD2_ABOVE,
1388     WMI_LQ_THRESHOLD2_BELOW,
1389     WMI_LQ_THRESHOLD3_ABOVE,
1390     WMI_LQ_THRESHOLD3_BELOW,
1391     WMI_LQ_THRESHOLD4_ABOVE,
1392     WMI_LQ_THRESHOLD4_BELOW
1393 } WMI_LQ_THRESHOLD_VAL;
1394
1395 typedef PREPACK struct {
1396     A_INT32 lq;
1397     A_UINT8 range;  /* WMI_LQ_THRESHOLD_VAL */
1398 }POSTPACK  WMI_LQ_THRESHOLD_EVENT;
1399 /*
1400  * WMI_REPORT_ROAM_TBL_EVENTID
1401  */
1402 #define MAX_ROAM_TBL_CAND   5
1403
1404 typedef PREPACK struct {
1405     A_INT32 roam_util;
1406     A_UINT8 bssid[ATH_MAC_LEN];
1407     A_INT8  rssi;
1408     A_INT8  rssidt;
1409     A_INT8  last_rssi;
1410     A_INT8  util;
1411     A_INT8  bias;
1412     A_UINT8 reserved; /* For alignment */
1413 } POSTPACK WMI_BSS_ROAM_INFO;
1414
1415
1416 typedef PREPACK struct {
1417     A_UINT16  roamMode;
1418     A_UINT16  numEntries;
1419     WMI_BSS_ROAM_INFO bssRoamInfo[1];
1420 } POSTPACK WMI_TARGET_ROAM_TBL;
1421
1422 /*
1423  *  WMI_CAC_EVENTID
1424  */
1425 typedef enum {
1426     CAC_INDICATION_ADMISSION = 0x00,
1427     CAC_INDICATION_ADMISSION_RESP = 0x01,
1428     CAC_INDICATION_DELETE = 0x02,
1429     CAC_INDICATION_NO_RESP = 0x03,
1430 }CAC_INDICATION;
1431
1432 #define WMM_TSPEC_IE_LEN   63
1433
1434 typedef PREPACK struct {
1435     A_UINT8 ac;
1436     A_UINT8 cac_indication;
1437     A_UINT8 statusCode;
1438     A_UINT8 tspecSuggestion[WMM_TSPEC_IE_LEN];
1439 }POSTPACK  WMI_CAC_EVENT;
1440
1441 /*
1442  * WMI_APLIST_EVENTID
1443  */
1444
1445 typedef enum {
1446     APLIST_VER1 = 1,
1447 } APLIST_VER;
1448
1449 typedef PREPACK struct {
1450     A_UINT8     bssid[ATH_MAC_LEN];
1451     A_UINT16    channel;
1452 } POSTPACK  WMI_AP_INFO_V1;
1453
1454 typedef PREPACK union {
1455     WMI_AP_INFO_V1  apInfoV1;
1456 } POSTPACK WMI_AP_INFO;
1457
1458 typedef PREPACK struct {
1459     A_UINT8     apListVer;
1460     A_UINT8     numAP;
1461     WMI_AP_INFO apList[1];
1462 } POSTPACK WMI_APLIST_EVENT;
1463
1464 /*
1465  * developer commands
1466  */
1467
1468 /*
1469  * WMI_SET_BITRATE_CMDID
1470  *
1471  * Get bit rate cmd uses same definition as set bit rate cmd
1472  */
1473 typedef enum {
1474     RATE_AUTO   = -1,
1475     RATE_1Mb    = 0,
1476     RATE_2Mb    = 1,
1477     RATE_5_5Mb  = 2,
1478     RATE_11Mb   = 3,
1479     RATE_6Mb    = 4,
1480     RATE_9Mb    = 5,
1481     RATE_12Mb   = 6,
1482     RATE_18Mb   = 7,
1483     RATE_24Mb   = 8,
1484     RATE_36Mb   = 9,
1485     RATE_48Mb   = 10,
1486     RATE_54Mb   = 11,
1487 } WMI_BIT_RATE;
1488
1489 typedef PREPACK struct {
1490     A_INT8      rateIndex;          /* see WMI_BIT_RATE */
1491 } POSTPACK WMI_BIT_RATE_CMD, WMI_BIT_RATE_REPLY;
1492
1493 /*
1494  * WMI_SET_FIXRATES_CMDID
1495  *
1496  * Get fix rates cmd uses same definition as set fix rates cmd
1497  */
1498 typedef enum {
1499     FIX_RATE_1Mb    = 0x1,
1500     FIX_RATE_2Mb    = 0x2,
1501     FIX_RATE_5_5Mb  = 0x4,
1502     FIX_RATE_11Mb   = 0x8,
1503     FIX_RATE_6Mb    = 0x10,
1504     FIX_RATE_9Mb    = 0x20,
1505     FIX_RATE_12Mb   = 0x40,
1506     FIX_RATE_18Mb   = 0x80,
1507     FIX_RATE_24Mb   = 0x100,
1508     FIX_RATE_36Mb   = 0x200,
1509     FIX_RATE_48Mb   = 0x400,
1510     FIX_RATE_54Mb   = 0x800,
1511 } WMI_FIX_RATES_MASK;
1512
1513 typedef PREPACK struct {
1514     A_UINT16      fixRateMask;          /* see WMI_BIT_RATE */
1515 } POSTPACK WMI_FIX_RATES_CMD, WMI_FIX_RATES_REPLY;
1516
1517 /*
1518  * WMI_SET_RECONNECT_AUTH_MODE_CMDID
1519  *
1520  * Set authentication mode
1521  */
1522 typedef enum {
1523     RECONN_DO_AUTH = 0x00,
1524     RECONN_NOT_AUTH = 0x01
1525 } WMI_AUTH_MODE;
1526
1527 typedef PREPACK struct {
1528     A_UINT8 mode;
1529 } POSTPACK WMI_SET_AUTH_MODE_CMD;
1530
1531 /*
1532  * WMI_SET_REASSOC_MODE_CMDID
1533  *
1534  * Set authentication mode
1535  */
1536 typedef enum {
1537     REASSOC_DO_DISASSOC = 0x00,
1538     REASSOC_DONOT_DISASSOC = 0x01
1539 } WMI_REASSOC_MODE;
1540
1541 typedef PREPACK struct {
1542     A_UINT8 mode;
1543 }POSTPACK WMI_SET_REASSOC_MODE_CMD;
1544
1545 typedef enum {
1546     ROAM_DATA_TIME = 1,            /* Get The Roam Time Data */
1547 } ROAM_DATA_TYPE;
1548
1549 typedef PREPACK struct {
1550     A_UINT32        disassoc_time;
1551     A_UINT32        no_txrx_time;
1552     A_UINT32        assoc_time;
1553     A_UINT32        allow_txrx_time;
1554     A_UINT32        last_data_txrx_time;
1555     A_UINT32        first_data_txrx_time;
1556     A_UINT8         disassoc_bssid[ATH_MAC_LEN];
1557     A_INT8          disassoc_bss_rssi;
1558     A_UINT8         assoc_bssid[ATH_MAC_LEN];
1559     A_INT8          assoc_bss_rssi;
1560 } POSTPACK WMI_TARGET_ROAM_TIME;
1561
1562 typedef PREPACK struct {
1563     PREPACK union {
1564         WMI_TARGET_ROAM_TIME roamTime;
1565     } POSTPACK u;
1566     A_UINT8 roamDataType ;
1567 } POSTPACK WMI_TARGET_ROAM_DATA;
1568
1569 typedef enum {
1570     WMI_WMM_DISABLED = 0,
1571     WMI_WMM_ENABLED
1572 } WMI_WMM_STATUS;
1573
1574 typedef PREPACK struct {
1575     A_UINT8    status;
1576 }POSTPACK WMI_SET_WMM_CMD;
1577
1578 typedef enum {
1579     WMI_TXOP_DISABLED = 0,
1580     WMI_TXOP_ENABLED
1581 } WMI_TXOP_CFG;
1582
1583 typedef PREPACK struct {
1584     A_UINT8    txopEnable;
1585 }POSTPACK WMI_SET_WMM_TXOP_CMD;
1586
1587 typedef PREPACK struct {
1588     A_UINT8 keepaliveInterval;
1589 } POSTPACK WMI_SET_KEEPALIVE_CMD;
1590
1591 typedef PREPACK struct {
1592     A_BOOL configured;
1593     A_UINT8 keepaliveInterval;
1594 } POSTPACK WMI_GET_KEEPALIVE_CMD;
1595
1596 /*
1597  * Add Application specified IE to a management frame
1598  */
1599 #define WMI_MAX_IE_LEN  78
1600
1601 typedef PREPACK struct {
1602     A_UINT8 mgmtFrmType;  /* one of WMI_MGMT_FRAME_TYPE */
1603     A_UINT8 ieLen;    /* Length  of the IE that should be added to the MGMT frame */
1604     A_UINT8 ieInfo[1];
1605 } POSTPACK WMI_SET_APPIE_CMD;
1606
1607 /*
1608  * Notify the WSC registration status to the target
1609  */
1610 #define WSC_REG_ACTIVE     1
1611 #define WSC_REG_INACTIVE   0
1612 /* Generic Hal Interface for setting hal paramters. */
1613 /* Add new Set HAL Param cmdIds here for newer params */
1614 typedef enum {
1615    WHAL_SETCABTO_CMDID = 1,
1616 }WHAL_CMDID;
1617
1618 typedef PREPACK struct {
1619     A_UINT8 cabTimeOut;
1620 } POSTPACK WHAL_SETCABTO_PARAM;
1621
1622 typedef PREPACK struct {
1623     A_UINT8  whalCmdId;
1624     A_UINT8 data[1];
1625 } POSTPACK WHAL_PARAMCMD;
1626
1627
1628 #define WOW_MAX_FILTER_LISTS 1 /*4*/
1629 #define WOW_MAX_FILTERS_PER_LIST 4
1630 #define WOW_PATTERN_SIZE 64
1631 #define WOW_MASK_SIZE 64
1632
1633 typedef PREPACK struct {
1634     A_UINT8 wow_valid_filter;
1635     A_UINT8 wow_filter_id;
1636     A_UINT8 wow_filter_size;
1637     A_UINT8 wow_filter_offset;
1638     A_UINT8 wow_filter_mask[WOW_MASK_SIZE];
1639     A_UINT8 wow_filter_pattern[WOW_PATTERN_SIZE];
1640 } POSTPACK WOW_FILTER;
1641
1642
1643 typedef PREPACK struct {
1644     A_UINT8 wow_valid_list;
1645     A_UINT8 wow_list_id;
1646     A_UINT8 wow_num_filters;
1647     A_UINT8 wow_total_list_size;
1648     WOW_FILTER list[WOW_MAX_FILTERS_PER_LIST];
1649 } POSTPACK WOW_FILTER_LIST;
1650
1651 typedef PREPACK struct {
1652     A_BOOL awake;
1653     A_BOOL asleep;
1654 } POSTPACK WMI_SET_HOST_SLEEP_MODE_CMD;
1655
1656 typedef PREPACK struct {
1657     A_BOOL enable_wow;
1658 } POSTPACK WMI_SET_WOW_MODE_CMD;
1659
1660 typedef PREPACK struct {
1661     A_UINT8 filter_list_id;
1662 } POSTPACK WMI_GET_WOW_LIST_CMD;
1663
1664 /*
1665  * WMI_GET_WOW_LIST_CMD reply
1666  */
1667 typedef PREPACK struct {
1668     A_UINT8     num_filters;     /* number of patterns in reply */
1669     A_UINT8     this_filter_num; /*  this is filter # x of total num_filters */
1670     A_UINT8     wow_mode;
1671     A_UINT8     host_mode;
1672     WOW_FILTER  wow_filters[1];
1673 } POSTPACK WMI_GET_WOW_LIST_REPLY;
1674
1675 typedef PREPACK struct {
1676     A_UINT8 filter_list_id;
1677     A_UINT8 filter_size;
1678     A_UINT8 filter_offset;
1679     A_UINT8 filter[1];
1680 } POSTPACK WMI_ADD_WOW_PATTERN_CMD;
1681
1682 typedef PREPACK struct {
1683     A_UINT16 filter_list_id;
1684     A_UINT16 filter_id;
1685 } POSTPACK WMI_DEL_WOW_PATTERN_CMD;
1686
1687 typedef PREPACK struct {
1688     A_UINT8 macaddr[ATH_MAC_LEN];
1689 } POSTPACK WMI_SET_MAC_ADDRESS_CMD;
1690
1691 /*
1692  * WMI_SET_AKMP_PARAMS_CMD
1693  */
1694
1695 #define WMI_AKMP_MULTI_PMKID_EN   0x000001
1696
1697 typedef PREPACK struct {
1698     A_UINT32    akmpInfo;
1699 } POSTPACK WMI_SET_AKMP_PARAMS_CMD;
1700
1701 typedef PREPACK struct {
1702     A_UINT8 pmkid[WMI_PMKID_LEN];
1703 } POSTPACK WMI_PMKID;
1704
1705 /*
1706  * WMI_SET_PMKID_LIST_CMD
1707  */
1708 #define WMI_MAX_PMKID_CACHE   8
1709
1710 typedef PREPACK struct {
1711     A_UINT32    numPMKID;
1712     WMI_PMKID   pmkidList[WMI_MAX_PMKID_CACHE];
1713 } POSTPACK WMI_SET_PMKID_LIST_CMD;
1714
1715 /*
1716  * WMI_GET_PMKID_LIST_CMD  Reply
1717  * Following the Number of PMKIDs is the list of PMKIDs
1718  */
1719 typedef PREPACK struct {
1720     A_UINT32    numPMKID;
1721     WMI_PMKID   pmkidList[1];
1722 } POSTPACK WMI_PMKID_LIST_REPLY;
1723
1724 /* index used for priority streams */
1725 typedef enum {
1726     WMI_NOT_MAPPED  = -1,
1727     WMI_CONTROL_PRI = 0,
1728     WMI_BEST_EFFORT_PRI = 1,
1729     WMI_LOW_PRI = 2,
1730     WMI_HIGH_PRI = 3,
1731     WMI_HIGHEST_PRI,
1732     WMI_PRI_MAX_COUNT
1733 } WMI_PRI_STREAM_ID;
1734
1735 #ifndef ATH_TARGET
1736 #include "athendpack.h"
1737 #endif
1738
1739 #ifdef __cplusplus
1740 }
1741 #endif
1742
1743 #endif /* _WMI_H_ */