Add ar6000 wireless driver.
[kernel.git] / drivers / ar6000 / ar6000 / athdrv_linux.h
1 /*
2  * Copyright (c) 2004-2006 Atheros Communications Inc.
3  * All rights reserved.
4  *
5  *
6  *
7  *  This program is free software; you can redistribute it and/or modify
8  *  it under the terms of the GNU General Public License version 2 as
9  *  published by the Free Software Foundation;
10  *
11  *  Software distributed under the License is distributed on an "AS
12  *  IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
13  *  implied. See the License for the specific language governing
14  *  rights and limitations under the License.
15  *
16  *
17  *
18  */
19
20 #ifndef _ATHDRV_LINUX_H
21 #define _ATHDRV_LINUX_H
22
23 #ifdef __cplusplus
24 extern "C" {
25 #endif
26
27
28 /*
29  * There are two types of ioctl's here: Standard ioctls and
30  * eXtended ioctls.  All extended ioctls (XIOCTL) are multiplexed
31  * off of the single ioctl command, AR6000_IOCTL_EXTENDED.  The
32  * arguments for every XIOCTL starts with a 32-bit command word
33  * that is used to select which extended ioctl is in use.  After
34  * the command word are command-specific arguments.
35  */
36
37 /* Linux standard Wireless Extensions, private ioctl interfaces */
38 #define IEEE80211_IOCTL_SETPARAM             (SIOCIWFIRSTPRIV+0)
39 #define IEEE80211_IOCTL_GETPARAM             (SIOCIWFIRSTPRIV+1)
40 #define IEEE80211_IOCTL_SETKEY               (SIOCIWFIRSTPRIV+2)
41 #define IEEE80211_IOCTL_SETWMMPARAMS         (SIOCIWFIRSTPRIV+3)
42 #define IEEE80211_IOCTL_DELKEY               (SIOCIWFIRSTPRIV+4)
43 #define IEEE80211_IOCTL_GETWMMPARAMS         (SIOCIWFIRSTPRIV+5)
44 #define IEEE80211_IOCTL_SETOPTIE             (SIOCIWFIRSTPRIV+6)
45 #define IEEE80211_IOCTL_SETMLME              (SIOCIWFIRSTPRIV+7)
46 //#define IEEE80211_IOCTL_GETOPTIE             (SIOCIWFIRSTPRIV+7)
47 #define IEEE80211_IOCTL_ADDPMKID             (SIOCIWFIRSTPRIV+8)
48 //#define IEEE80211_IOCTL_SETAUTHALG           (SIOCIWFIRSTPRIV+10)
49 #define IEEE80211_IOCTL_LASTONE              (SIOCIWFIRSTPRIV+9)
50
51
52
53 /*                      ====WMI Ioctls====                                    */
54 /*
55  *
56  * Many ioctls simply provide WMI services to application code:
57  * an application makes such an ioctl call with a set of arguments
58  * that are packaged into the corresponding WMI message, and sent
59  * to the Target.
60  */
61
62 #define AR6000_IOCTL_WMI_GETREV              (SIOCIWFIRSTPRIV+10)
63 /*
64  * arguments:
65  *   ar6000_version *revision
66  */
67
68 #define AR6000_IOCTL_WMI_SETPWR              (SIOCIWFIRSTPRIV+11)
69 /*
70  * arguments:
71  *   WMI_POWER_MODE_CMD pwrModeCmd (see include/wmi.h)
72  * uses: WMI_SET_POWER_MODE_CMDID
73  */
74
75 #define AR6000_IOCTL_WMI_SETSCAN             (SIOCIWFIRSTPRIV+12)
76 /*
77  * arguments:
78  *   WMI_SCAN_PARAMS_CMD scanParams (see include/wmi.h)
79  * uses: WMI_SET_SCAN_PARAMS_CMDID
80  */
81
82 #define AR6000_IOCTL_WMI_SETLISTENINT        (SIOCIWFIRSTPRIV+13)
83 /*
84  * arguments:
85  *   UINT32 listenInterval
86  * uses: WMI_SET_LISTEN_INT_CMDID
87  */
88
89 #define AR6000_IOCTL_WMI_SETBSSFILTER        (SIOCIWFIRSTPRIV+14)
90 /*
91  * arguments:
92  *   WMI_BSS_FILTER filter (see include/wmi.h)
93  * uses: WMI_SET_BSS_FILTER_CMDID
94  */
95
96 #define AR6000_IOCTL_WMI_SET_CHANNELPARAMS   (SIOCIWFIRSTPRIV+16)
97 /*
98  * arguments:
99  *   WMI_CHANNEL_PARAMS_CMD chParams
100  * uses: WMI_SET_CHANNEL_PARAMS_CMDID
101  */
102
103 #define AR6000_IOCTL_WMI_SET_PROBEDSSID      (SIOCIWFIRSTPRIV+17)
104 /*
105  * arguments:
106  *   WMI_PROBED_SSID_CMD probedSsids (see include/wmi.h)
107  * uses: WMI_SETPROBED_SSID_CMDID
108  */
109
110 #define AR6000_IOCTL_WMI_SET_PMPARAMS        (SIOCIWFIRSTPRIV+18)
111 /*
112  * arguments:
113  *   WMI_POWER_PARAMS_CMD powerParams (see include/wmi.h)
114  * uses: WMI_SET_POWER_PARAMS_CMDID
115  */
116
117 #define AR6000_IOCTL_WMI_SET_BADAP           (SIOCIWFIRSTPRIV+19)
118 /*
119  * arguments:
120  *   WMI_ADD_BAD_AP_CMD badAPs (see include/wmi.h)
121  * uses: WMI_ADD_BAD_AP_CMDID
122  */
123
124 #define AR6000_IOCTL_WMI_GET_QOS_QUEUE       (SIOCIWFIRSTPRIV+20)
125 /*
126  * arguments:
127  *   ar6000_queuereq queueRequest (see below)
128  */
129
130 #define AR6000_IOCTL_WMI_CREATE_QOS          (SIOCIWFIRSTPRIV+21)
131 /*
132  * arguments:
133  *   WMI_CREATE_PSTREAM createPstreamCmd (see include/wmi.h)
134  * uses: WMI_CREATE_PSTREAM_CMDID
135  */
136
137 #define AR6000_IOCTL_WMI_DELETE_QOS          (SIOCIWFIRSTPRIV+22)
138 /*
139  * arguments:
140  *   WMI_DELETE_PSTREAM_CMD deletePstreamCmd (see include/wmi.h)
141  * uses: WMI_DELETE_PSTREAM_CMDID
142  */
143
144 #define AR6000_IOCTL_WMI_SET_SNRTHRESHOLD   (SIOCIWFIRSTPRIV+23)
145 /*
146  * arguments:
147  *   WMI_SNR_THRESHOLD_PARAMS_CMD thresholdParams (see include/wmi.h)
148  * uses: WMI_SNR_THRESHOLD_PARAMS_CMDID
149  */
150
151 #define AR6000_IOCTL_WMI_SET_ERROR_REPORT_BITMASK (SIOCIWFIRSTPRIV+24)
152 /*
153  * arguments:
154  *   WMI_TARGET_ERROR_REPORT_BITMASK errorReportBitMask (see include/wmi.h)
155  * uses: WMI_TARGET_ERROR_REPORT_BITMASK_CMDID
156  */
157
158 #define AR6000_IOCTL_WMI_GET_TARGET_STATS    (SIOCIWFIRSTPRIV+25)
159 /*
160  * arguments:
161  *   TARGET_STATS *targetStats (see below)
162  * uses: WMI_GET_STATISTICS_CMDID
163  */
164
165 #define AR6000_IOCTL_WMI_SET_ASSOC_INFO      (SIOCIWFIRSTPRIV+26)
166 /*
167  * arguments:
168  *   WMI_SET_ASSOC_INFO_CMD setAssocInfoCmd
169  * uses: WMI_SET_ASSOC_INFO_CMDID
170  */
171
172 #define AR6000_IOCTL_WMI_SET_ACCESS_PARAMS   (SIOCIWFIRSTPRIV+27)
173 /*
174  * arguments:
175  *   WMI_SET_ACCESS_PARAMS_CMD setAccessParams (see include/wmi.h)
176  * uses: WMI_SET_ACCESS_PARAMS_CMDID
177  */
178
179 #define AR6000_IOCTL_WMI_SET_BMISS_TIME      (SIOCIWFIRSTPRIV+28)
180 /*
181  * arguments:
182  *   UINT32 beaconMissTime
183  * uses: WMI_SET_BMISS_TIME_CMDID
184  */
185
186 #define AR6000_IOCTL_WMI_SET_DISC_TIMEOUT    (SIOCIWFIRSTPRIV+29)
187 /*
188  * arguments:
189  *   WMI_DISC_TIMEOUT_CMD disconnectTimeoutCmd (see include/wmi.h)
190  * uses: WMI_SET_DISC_TIMEOUT_CMDID
191  */
192
193 #define AR6000_IOCTL_WMI_SET_IBSS_PM_CAPS    (SIOCIWFIRSTPRIV+30)
194 /*
195  * arguments:
196  *   WMI_IBSS_PM_CAPS_CMD ibssPowerMgmtCapsCmd
197  * uses: WMI_SET_IBSS_PM_CAPS_CMDID
198  */
199
200 /*
201  * There is a very small space available for driver-private
202  * wireless ioctls.  In order to circumvent this limitation,
203  * we multiplex a bunch of ioctls (XIOCTLs) on top of a
204  * single AR6000_IOCTL_EXTENDED ioctl.
205  */
206 #define AR6000_IOCTL_EXTENDED                (SIOCIWFIRSTPRIV+31)
207
208
209 /*                         ====BMI Extended Ioctls====                        */
210
211 #define AR6000_XIOCTL_BMI_DONE                                  1
212 /*
213  * arguments:
214  *   UINT32 cmd (AR6000_XIOCTL_BMI_DONE)
215  * uses: BMI_DONE
216  */
217
218 #define AR6000_XIOCTL_BMI_READ_MEMORY                           2
219 /*
220  * arguments:
221  *   union {
222  *     struct {
223  *       UINT32 cmd (AR6000_XIOCTL_BMI_READ_MEMORY)
224  *       UINT32 address
225  *       UINT32 length
226  *     }
227  *     char results[length]
228  *   }
229  * uses: BMI_READ_MEMORY
230  */
231
232 #define AR6000_XIOCTL_BMI_WRITE_MEMORY                          3
233 /*
234  * arguments:
235  *   UINT32 cmd (AR6000_XIOCTL_BMI_WRITE_MEMORY)
236  *   UINT32 address
237  *   UINT32 length
238  *   char data[length]
239  * uses: BMI_WRITE_MEMORY
240  */
241
242 #define AR6000_XIOCTL_BMI_EXECUTE                               4
243 /*
244  * arguments:
245  *   UINT32 cmd (AR6000_XIOCTL_BMI_EXECUTE)
246  *   UINT32 TargetAddress
247  *   UINT32 parameter
248  * uses: BMI_EXECUTE
249  */
250
251 #define AR6000_XIOCTL_BMI_SET_APP_START                         5
252 /*
253  * arguments:
254  *   UINT32 cmd (AR6000_XIOCTL_BMI_SET_APP_START)
255  *   UINT32 TargetAddress
256  * uses: BMI_SET_APP_START
257  */
258
259 #define AR6000_XIOCTL_BMI_READ_SOC_REGISTER                     6
260 /*
261  * arguments:
262  *   union {
263  *     struct {
264  *       UINT32 cmd (AR6000_XIOCTL_BMI_READ_SOC_REGISTER)
265  *       UINT32 TargetAddress, 32-bit aligned
266  *     }
267  *     UINT32 result
268  *   }
269  * uses: BMI_READ_SOC_REGISTER
270  */
271
272 #define AR6000_XIOCTL_BMI_WRITE_SOC_REGISTER                    7
273 /*
274  * arguments:
275  *     struct {
276  *       UINT32 cmd (AR6000_XIOCTL_BMI_WRITE_SOC_REGISTER)
277  *       UINT32 TargetAddress, 32-bit aligned
278  *       UINT32 newValue
279  *     }
280  * uses: BMI_WRITE_SOC_REGISTER
281  */
282
283 #define AR6000_XIOCTL_BMI_TEST                                  8
284 /*
285  * arguments:
286  *   UINT32 cmd (AR6000_XIOCTL_BMI_TEST)
287  *   UINT32 address
288  *   UINT32 length
289  *   UINT32 count
290  */
291
292
293
294 /* Historical Host-side DataSet support */
295 #define AR6000_XIOCTL_UNUSED9                                   9
296 #define AR6000_XIOCTL_UNUSED10                                  10
297 #define AR6000_XIOCTL_UNUSED11                                  11
298
299 /*                      ====Misc Extended Ioctls====                          */
300
301 #define AR6000_XIOCTL_FORCE_TARGET_RESET                        12
302 /*
303  * arguments:
304  *   UINT32 cmd (AR6000_XIOCTL_FORCE_TARGET_RESET)
305  */
306
307
308 #ifdef HTC_RAW_INTERFACE
309 /* HTC Raw Interface Ioctls */
310 #define AR6000_XIOCTL_HTC_RAW_OPEN                              13
311 /*
312  * arguments:
313  *   UINT32 cmd (AR6000_XIOCTL_HTC_RAW_OPEN)
314  */
315
316 #define AR6000_XIOCTL_HTC_RAW_CLOSE                             14
317 /*
318  * arguments:
319  *   UINT32 cmd (AR6000_XIOCTL_HTC_RAW_CLOSE)
320  */
321
322 #define AR6000_XIOCTL_HTC_RAW_READ                              15
323 /*
324  * arguments:
325  *   union {
326  *     struct {
327  *       UINT32 cmd (AR6000_XIOCTL_HTC_RAW_READ)
328  *       UINT32 mailboxID
329  *       UINT32 length
330  *     }
331  *     results[length]
332  *   }
333  */
334
335 #define AR6000_XIOCTL_HTC_RAW_WRITE                             16
336 /*
337  * arguments:
338  *   UINT32 cmd (AR6000_XIOCTL_HTC_RAW_WRITE)
339  *   UINT32 mailboxID
340  *   UINT32 length
341  *   char buffer[length]
342  */
343 #endif /* HTC_RAW_INTERFACE */
344
345 #define AR6000_XIOCTL_CHECK_TARGET_READY                        17
346 /*
347  * arguments:
348  *   UINT32 cmd (AR6000_XIOCTL_CHECK_TARGET_READY)
349  */
350
351
352
353 /*                ====GPIO (General Purpose I/O) Extended Ioctls====          */
354
355 #define AR6000_XIOCTL_GPIO_OUTPUT_SET                           18
356 /*
357  * arguments:
358  *   UINT32 cmd (AR6000_XIOCTL_GPIO_OUTPUT_SET)
359  *   ar6000_gpio_output_set_cmd_s (see below)
360  * uses: WMIX_GPIO_OUTPUT_SET_CMDID
361  */
362
363 #define AR6000_XIOCTL_GPIO_INPUT_GET                            19
364 /*
365  * arguments:
366  *   UINT32 cmd (AR6000_XIOCTL_GPIO_INPUT_GET)
367  * uses: WMIX_GPIO_INPUT_GET_CMDID
368  */
369
370 #define AR6000_XIOCTL_GPIO_REGISTER_SET                         20
371 /*
372  * arguments:
373  *   UINT32 cmd (AR6000_XIOCTL_GPIO_REGISTER_SET)
374  *   ar6000_gpio_register_cmd_s (see below)
375  * uses: WMIX_GPIO_REGISTER_SET_CMDID
376  */
377
378 #define AR6000_XIOCTL_GPIO_REGISTER_GET                         21
379 /*
380  * arguments:
381  *   UINT32 cmd (AR6000_XIOCTL_GPIO_REGISTER_GET)
382  *   ar6000_gpio_register_cmd_s (see below)
383  * uses: WMIX_GPIO_REGISTER_GET_CMDID
384  */
385
386 #define AR6000_XIOCTL_GPIO_INTR_ACK                             22
387 /*
388  * arguments:
389  *   UINT32 cmd (AR6000_XIOCTL_GPIO_INTR_ACK)
390  *   ar6000_cpio_intr_ack_cmd_s (see below)
391  * uses: WMIX_GPIO_INTR_ACK_CMDID
392  */
393
394 #define AR6000_XIOCTL_GPIO_INTR_WAIT                            23
395 /*
396  * arguments:
397  *   UINT32 cmd (AR6000_XIOCTL_GPIO_INTR_WAIT)
398  */
399
400
401
402 /*                    ====more wireless commands====                          */
403
404 #define AR6000_XIOCTL_SET_ADHOC_BSSID                           24
405 /*
406  * arguments:
407  *   UINT32 cmd (AR6000_XIOCTL_SET_ADHOC_BSSID)
408  *   WMI_SET_ADHOC_BSSID_CMD setAdHocBssidCmd (see include/wmi.h)
409  */
410
411 #define AR6000_XIOCTL_SET_OPT_MODE                              25
412 /*
413  * arguments:
414  *   UINT32 cmd (AR6000_XIOCTL_SET_OPT_MODE)
415  *   WMI_SET_OPT_MODE_CMD setOptModeCmd (see include/wmi.h)
416  * uses: WMI_SET_OPT_MODE_CMDID
417  */
418
419 #define AR6000_XIOCTL_OPT_SEND_FRAME                            26
420 /*
421  * arguments:
422  *   UINT32 cmd (AR6000_XIOCTL_OPT_SEND_FRAME)
423  *   WMI_OPT_TX_FRAME_CMD optTxFrameCmd (see include/wmi.h)
424  * uses: WMI_OPT_TX_FRAME_CMDID
425  */
426
427 #define AR6000_XIOCTL_SET_ADHOC_BEACON_INTVAL                   27
428 /*
429  * arguments:
430  *   UINT32 cmd (AR6000_XIOCTL_SET_ADHOC_BEACON_INTVAL)
431  *   WMI_BEACON_INT_CMD beaconIntCmd (see include/wmi.h)
432  * uses: WMI_SET_BEACON_INT_CMDID
433  */
434
435
436 #define IEEE80211_IOCTL_SETAUTHALG                              28
437
438
439 #define AR6000_XIOCTL_SET_VOICE_PKT_SIZE                        29
440 /*
441  * arguments:
442  *   UINT32 cmd (AR6000_XIOCTL_SET_VOICE_PKT_SIZE)
443  *   WMI_SET_VOICE_PKT_SIZE_CMD setVoicePktSizeCmd (see include/wmi.h)
444  * uses: WMI_SET_VOICE_PKT_SIZE_CMDID
445  */
446
447
448 #define AR6000_XIOCTL_SET_MAX_SP                                30
449 /*
450  * arguments:
451  *   UINT32 cmd (AR6000_XIOCTL_SET_MAX_SP)
452  *   WMI_SET_MAX_SP_LEN_CMD maxSPLen(see include/wmi.h)
453  * uses: WMI_SET_MAX_SP_LEN_CMDID
454  */
455
456 #define AR6000_XIOCTL_WMI_GET_ROAM_TBL                          31
457
458 #define AR6000_XIOCTL_WMI_SET_ROAM_CTRL                         32
459
460 #define AR6000_XIOCTRL_WMI_SET_POWERSAVE_TIMERS                 33
461
462
463 /*
464  * arguments:
465  *   UINT32 cmd (AR6000_XIOCTRL_WMI_SET_POWERSAVE_TIMERS)
466  *   WMI_SET_POWERSAVE_TIMERS_CMD powerSaveTimers(see include/wmi.h)
467  *   WMI_SET_POWERSAVE_TIMERS_CMDID
468  */
469
470 #define AR6000_XIOCTRL_WMI_GET_POWER_MODE                        34
471 /*
472  * arguments:
473  *   UINT32 cmd (AR6000_XIOCTRL_WMI_GET_POWER_MODE)
474  */
475
476 #define AR6000_XIOCTRL_WMI_SET_WLAN_STATE                       35
477 typedef enum {
478     WLAN_DISABLED,
479     WLAN_ENABLED
480 } AR6000_WLAN_STATE;
481 /*
482  * arguments:
483  * enable/disable
484  */
485
486 #define AR6000_XIOCTL_WMI_GET_ROAM_DATA                         36
487
488 #define AR6000_XIOCTL_WMI_SETRETRYLIMITS                37
489 /*
490  * arguments:
491  *   WMI_SET_RETRY_LIMITS_CMD ibssSetRetryLimitsCmd
492  * uses: WMI_SET_RETRY_LIMITS_CMDID
493  */
494
495 #ifdef CONFIG_HOST_TCMD_SUPPORT
496 /*       ====extended commands for radio test ====                          */
497
498 #define AR6000_XIOCTL_TCMD_CONT_TX                      38
499 /*
500  * arguments:
501  *   UINT32 cmd (AR6000_XIOCTL_TCMD_CONT_TX)
502  *   WMI_TCMD_CONT_TX_CMD contTxCmd (see include/wmi.h)
503  * uses: WMI_TCMD_CONT_TX_CMDID
504  */
505
506 #define AR6000_XIOCTL_TCMD_CONT_RX                      39
507 /*
508  * arguments:
509  *   UINT32 cmd (AR6000_XIOCTL_TCMD_CONT_RX)
510  *   WMI_TCMD_CONT_RX_CMD rxCmd (see include/wmi.h)
511  * uses: WMI_TCMD_CONT_RX_CMDID
512  */
513
514 #define AR6000_XIOCTL_TCMD_PM                           40
515 /*
516  * arguments:
517  *   UINT32 cmd (AR6000_XIOCTL_TCMD_PM)
518  *   WMI_TCMD_PM_CMD pmCmd (see include/wmi.h)
519  * uses: WMI_TCMD_PM_CMDID
520  */
521
522 #endif /* CONFIG_HOST_TCMD_SUPPORT */
523
524 #define AR6000_XIOCTL_WMI_STARTSCAN                     41
525 /*
526  * arguments:
527  *   UINT32 cmd (AR6000_XIOCTL_WMI_STARTSCAN)
528  *   UINT8  scanType
529  *   UINT8  scanConnected
530  *   A_BOOL forceFgScan
531  * uses: WMI_START_SCAN_CMDID
532  */
533
534 #define AR6000_XIOCTL_WMI_SETFIXRATES                   42
535
536 #define AR6000_XIOCTL_WMI_GETFIXRATES                   43
537
538
539 #define AR6000_XIOCTL_WMI_SET_RSSITHRESHOLD             44
540 /*
541  * arguments:
542  *   WMI_RSSI_THRESHOLD_PARAMS_CMD thresholdParams (see include/wmi.h)
543  * uses: WMI_RSSI_THRESHOLD_PARAMS_CMDID
544  */
545
546 #define AR6000_XIOCTL_WMI_CLR_RSSISNR                   45
547 /*
548  * arguments:
549  *   WMI_CLR_RSSISNR_CMD thresholdParams (see include/wmi.h)
550  * uses: WMI_CLR_RSSISNR_CMDID
551  */
552
553 #define AR6000_XIOCTL_WMI_SET_LQTHRESHOLD               46
554 /*
555  * arguments:
556  *   WMI_LQ_THRESHOLD_PARAMS_CMD thresholdParams (see include/wmi.h)
557  * uses: WMI_LQ_THRESHOLD_PARAMS_CMDID
558  */
559
560 #define AR6000_XIOCTL_WMI_SET_RTS                        47
561 /*
562  * arguments:
563  *   WMI_SET_RTS_MODE_CMD (see include/wmi.h)
564  * uses: WMI_SET_RTS_MODE_CMDID
565  */
566
567 #define AR6000_XIOCTL_WMI_SET_LPREAMBLE                 48
568
569 #define AR6000_XIOCTL_WMI_SET_AUTHMODE                  49
570 /*
571  * arguments:
572  *   UINT32 cmd (AR6000_XIOCTL_WMI_SET_AUTHMODE)
573  *   UINT8  mode
574  * uses: WMI_SET_RECONNECT_AUTH_MODE_CMDID
575  */
576
577 #define AR6000_XIOCTL_WMI_SET_REASSOCMODE               50
578
579 /*
580  * arguments:
581  *   UINT32 cmd (AR6000_XIOCTL_WMI_SET_WMM)
582  *   UINT8  mode
583  * uses: WMI_SET_WMM_CMDID
584  */
585 #define AR6000_XIOCTL_WMI_SET_WMM                       51
586
587 /*
588  * arguments:
589  * UINT32 cmd (AR6000_XIOCTL_WMI_SET_HB_CHALLENGE_RESP_PARAMS)
590  * UINT32 frequency
591  * UINT8  threshold
592  */
593 #define AR6000_XIOCTL_WMI_SET_HB_CHALLENGE_RESP_PARAMS  52
594
595 /*
596  * arguments:
597  * UINT32 cmd (AR6000_XIOCTL_WMI_GET_HB_CHALLENGE_RESP)
598  * UINT32 cookie
599  */
600 #define AR6000_XIOCTL_WMI_GET_HB_CHALLENGE_RESP         53
601
602 /*
603  * arguments:
604  *   UINT32 cmd (AR6000_XIOCTL_WMI_GET_RD)
605  *   UINT32 regDomain
606  */
607 #define AR6000_XIOCTL_WMI_GET_RD                        54
608
609 #define AR6000_XIOCTL_DIAG_READ                         55
610
611 #define AR6000_XIOCTL_DIAG_WRITE                        56
612
613 /*
614  * arguments cmd (AR6000_XIOCTL_SET_TXOP)
615  * WMI_TXOP_CFG  txopEnable
616  */
617 #define AR6000_XIOCTL_WMI_SET_TXOP                      57
618
619 #ifdef USER_KEYS
620 /*
621  * arguments:
622  * UINT32 cmd (AR6000_XIOCTL_USER_SETKEYS)
623  * UINT32 keyOpCtrl
624  * uses AR6000_USER_SETKEYS_INFO
625  */
626 #define AR6000_XIOCTL_USER_SETKEYS                      58
627 #endif /* USER_KEYS */
628
629 #define AR6000_XIOCTL_WMI_SET_KEEPALIVE                 59
630 /*
631  * arguments:
632  *   UINT8 cmd (AR6000_XIOCTL_WMI_SET_KEEPALIVE)
633  *   UINT8 keepaliveInterval
634  * uses: WMI_SET_KEEPALIVE_CMDID
635  */
636
637 #define AR6000_XIOCTL_WMI_GET_KEEPALIVE                 60
638 /*
639  * arguments:
640  *   UINT8 cmd (AR6000_XIOCTL_WMI_GET_KEEPALIVE)
641  *   UINT8 keepaliveInterval
642  *   A_BOOL configured
643  * uses: WMI_GET_KEEPALIVE_CMDID
644  */
645
646 /*               ====ROM Patching Extended Ioctls====                       */
647
648 #define AR6000_XIOCTL_BMI_ROMPATCH_INSTALL              61
649 /*
650  * arguments:
651  *     union {
652  *       struct {
653  *         UINT32 cmd (AR6000_XIOCTL_BMI_ROMPATCH_INSTALL)
654  *         UINT32 ROM Address
655  *         UINT32 RAM Address
656  *         UINT32 number of bytes
657  *         UINT32 activate? (0 or 1)
658  *       }
659  *       A_UINT32 resulting rompatch ID
660  *     }
661  * uses: BMI_ROMPATCH_INSTALL
662  */
663
664 #define AR6000_XIOCTL_BMI_ROMPATCH_UNINSTALL            62
665 /*
666  * arguments:
667  *     struct {
668  *       UINT32 cmd (AR6000_XIOCTL_BMI_ROMPATCH_UNINSTALL)
669  *       UINT32 rompatch ID
670  *     }
671  * uses: BMI_ROMPATCH_UNINSTALL
672  */
673
674 #define AR6000_XIOCTL_BMI_ROMPATCH_ACTIVATE             63
675 /*
676  * arguments:
677  *     struct {
678  *       UINT32 cmd (AR6000_XIOCTL_BMI_ROMPATCH_ACTIVATE)
679  *       UINT32 rompatch count
680  *       UINT32 rompatch IDs[rompatch count]
681  *     }
682  * uses: BMI_ROMPATCH_ACTIVATE
683  */
684
685 #define AR6000_XIOCTL_BMI_ROMPATCH_DEACTIVATE           64
686 /*
687  * arguments:
688  *     struct {
689  *       UINT32 cmd (AR6000_XIOCTL_BMI_ROMPATCH_DEACTIVATE)
690  *       UINT32 rompatch count
691  *       UINT32 rompatch IDs[rompatch count]
692  *     }
693  * uses: BMI_ROMPATCH_DEACTIVATE
694  */
695
696 #define AR6000_XIOCTL_WMI_SET_APPIE             65
697 /*
698  * arguments:
699  *      struct {
700  *          UINT32 cmd (AR6000_XIOCTL_WMI_SET_APPIE)
701  *          UINT32  app_frmtype;
702  *          UINT32  app_buflen;
703  *          UINT8   app_buf[];
704  *      }
705  */
706 #define AR6000_XIOCTL_WMI_SET_MGMT_FRM_RX_FILTER    66
707 /*
708  * arguments:
709  *      A_UINT32 filter_type;
710  */
711
712 #define AR6000_XIOCTL_DBGLOG_CFG_MODULE             67
713
714 #define AR6000_XIOCTL_DBGLOG_GET_DEBUG_LOGS         68
715
716 #define AR6000_XIOCTL_WMI_SET_WSC_STATUS                70
717 /*
718  * arguments:
719  *      A_UINT32 wsc_status;
720  *            (WSC_REG_INACTIVE or WSC_REG_ACTIVE)
721  */
722
723 /*
724  * arguments:
725  *      struct {
726  *          A_UINT8 streamType;
727  *          A_UINT8 status;
728  *      }
729  * uses: WMI_SET_BT_STATUS_CMDID
730  */
731 #define AR6000_XIOCTL_WMI_SET_BT_STATUS             71
732
733 /*
734  * arguments:
735  *      struct {
736  *           A_UINT8 paramType;
737  *           union {
738  *               A_UINT8 noSCOPkts;
739  *               BT_PARAMS_A2DP a2dpParams;
740  *               BT_COEX_REGS regs;
741  *           };
742  *      }
743  * uses: WMI_SET_BT_PARAM_CMDID
744  */
745 #define AR6000_XIOCTL_WMI_SET_BT_PARAMS             72
746
747 #define AR6000_XIOCTL_WMI_SET_HOST_SLEEP_MODE       73
748 #define AR6000_XIOCTL_WMI_SET_WOW_MODE              74
749 #define AR6000_XIOCTL_WMI_GET_WOW_LIST              75
750 #define AR6000_XIOCTL_WMI_ADD_WOW_PATTERN           76
751 #define AR6000_XIOCTL_WMI_DEL_WOW_PATTERN           77
752
753
754
755 #define AR6000_XIOCTL_TARGET_INFO                   78
756 /*
757  * arguments:
758  *   UINT32 cmd (AR6000_XIOCTL_TARGET_INFO)
759  *   A_UINT32 TargetVersion (returned)
760  *   A_UINT32 TargetType    (returned)
761  * (See also bmi_msg.h target_ver and target_type)
762  */
763
764 #define AR6000_XIOCTL_DUMP_HTC_CREDIT_STATE         79
765 /*
766  * arguments:
767  *      none
768  */
769
770 #define AR6000_XIOCTL_TRAFFIC_ACTIVITY_CHANGE       80
771 /*
772  * This ioctl is used to emulate traffic activity
773  * timeouts.  Activity/inactivity will trigger the driver
774  * to re-balance credits.
775  *
776  * arguments:
777  *      ar6000_traffic_activity_change
778  */
779
780 #define AR6000_XIOCTL_WMI_SET_CONNECT_CTRL_FLAGS    81
781 /*
782  * This ioctl is used to set the connect control flags
783  *
784  * arguments:
785  *      A_UINT32 connectCtrlFlags
786  */
787
788 #define AR6000_XIOCTL_WMI_SET_AKMP_PARAMS              82
789 /*
790  * This IOCTL sets any Authentication,Key Management and Protection
791  * related parameters. This is used along with the information set in
792  * Connect Command.
793  * Currently this enables Multiple PMKIDs to an AP.
794  *
795  * arguments:
796  *      struct {
797  *          A_UINT32    akmpInfo;
798  *      }
799  * uses: WMI_SET_AKMP_PARAMS_CMD
800  */
801
802 #define AR6000_XIOCTL_WMI_GET_PMKID_LIST            83
803
804 #define AR6000_XIOCTL_WMI_SET_PMKID_LIST            84
805 /*
806  * This IOCTL is used to set a list of PMKIDs. This list of
807  * PMKIDs is used in the [Re]AssocReq Frame. This list is used
808  * only if the MultiPMKID option is enabled via the
809  * AR6000_XIOCTL_WMI_SET_AKMP_PARAMS  IOCTL.
810  *
811  * arguments:
812  *      struct {
813  *          A_UINT32    numPMKID;
814  *          WMI_PMKID   pmkidList[WMI_MAX_PMKID_CACHE];
815  *      }
816  * uses: WMI_SET_PMKIDLIST_CMD
817  */
818
819 /* Historical DSETPATCH support for INI patches */
820 #define AR6000_XIOCTL_UNUSED90                      90
821
822
823
824 /* used by AR6000_IOCTL_WMI_GETREV */
825 struct ar6000_version {
826     A_UINT32        host_ver;
827     A_UINT32        target_ver;
828 };
829
830 /* used by AR6000_IOCTL_WMI_GET_QOS_QUEUE */
831 struct ar6000_queuereq {
832     A_UINT8         trafficClass;
833     A_UINT16        activeTsids;
834 };
835
836 /* used by AR6000_IOCTL_WMI_GET_TARGET_STATS */
837 typedef struct targetStats_t {
838     A_UINT64    tx_packets;
839     A_UINT64    tx_bytes;
840     A_UINT64    tx_unicast_pkts;
841     A_UINT64    tx_unicast_bytes;
842     A_UINT64    tx_multicast_pkts;
843     A_UINT64    tx_multicast_bytes;
844     A_UINT64    tx_broadcast_pkts;
845     A_UINT64    tx_broadcast_bytes;
846     A_UINT64    tx_rts_success_cnt;
847     A_UINT64    tx_packet_per_ac[4];
848
849     A_UINT64    tx_errors;
850     A_UINT64    tx_failed_cnt;
851     A_UINT64    tx_retry_cnt;
852     A_UINT64    tx_rts_fail_cnt;
853     A_INT32     tx_unicast_rate;
854     A_UINT64    rx_packets;
855     A_UINT64    rx_bytes;
856     A_UINT64    rx_unicast_pkts;
857     A_UINT64    rx_unicast_bytes;
858     A_UINT64    rx_multicast_pkts;
859     A_UINT64    rx_multicast_bytes;
860     A_UINT64    rx_broadcast_pkts;
861     A_UINT64    rx_broadcast_bytes;
862     A_UINT64    rx_fragment_pkt;
863
864     A_UINT64    rx_errors;
865     A_UINT64    rx_crcerr;
866     A_UINT64    rx_key_cache_miss;
867     A_UINT64    rx_decrypt_err;
868     A_UINT64    rx_duplicate_frames;
869     A_INT32     rx_unicast_rate;
870
871     A_UINT64    tkip_local_mic_failure;
872     A_UINT64    tkip_counter_measures_invoked;
873     A_UINT64    tkip_replays;
874     A_UINT64    tkip_format_errors;
875     A_UINT64    ccmp_format_errors;
876     A_UINT64    ccmp_replays;
877
878     A_UINT64    power_save_failure_cnt;
879     A_INT16     noise_floor_calibation;
880
881     A_UINT64    cs_bmiss_cnt;
882     A_UINT64    cs_lowRssi_cnt;
883     A_UINT64    cs_connect_cnt;
884     A_UINT64    cs_disconnect_cnt;
885     A_UINT8     cs_aveBeacon_snr;
886     A_INT16     cs_aveBeacon_rssi;
887     A_UINT8     cs_lastRoam_msec;
888     A_UINT8     cs_snr;
889     A_INT16     cs_rssi;
890
891     A_UINT32    lq_val;
892
893     A_UINT32    wow_num_pkts_dropped;
894     A_UINT8     wow_num_host_pkt_wakeups;
895     A_UINT8     wow_num_host_event_wakeups;
896     A_UINT16    wow_num_events_discarded;
897
898 }TARGET_STATS;
899
900 typedef struct targetStats_cmd_t {
901     TARGET_STATS targetStats;
902     int clearStats;
903 } TARGET_STATS_CMD;
904
905 /* used by AR6000_XIOCTL_USER_SETKEYS */
906
907 /*
908  * Setting this bit to 1 doesnot initialize the RSC on the firmware
909  */
910 #define AR6000_XIOCTL_USER_SETKEYS_RSC_CTRL    1
911 #define AR6000_USER_SETKEYS_RSC_UNCHANGED     0x00000002
912
913 typedef struct {
914     A_UINT32  keyOpCtrl;  /* Bit Map of Key Mgmt Ctrl Flags */
915 } AR6000_USER_SETKEYS_INFO;
916
917
918 /* used by AR6000_XIOCTL_GPIO_OUTPUT_SET */
919 struct ar6000_gpio_output_set_cmd_s {
920     A_UINT32 set_mask;
921     A_UINT32 clear_mask;
922     A_UINT32 enable_mask;
923     A_UINT32 disable_mask;
924 };
925
926 /*
927  * used by AR6000_XIOCTL_GPIO_REGISTER_GET and AR6000_XIOCTL_GPIO_REGISTER_SET
928  */
929 struct ar6000_gpio_register_cmd_s {
930     A_UINT32 gpioreg_id;
931     A_UINT32 value;
932 };
933
934 /* used by AR6000_XIOCTL_GPIO_INTR_ACK */
935 struct ar6000_gpio_intr_ack_cmd_s {
936     A_UINT32 ack_mask;
937 };
938
939 /* used by AR6000_XIOCTL_GPIO_INTR_WAIT */
940 struct ar6000_gpio_intr_wait_cmd_s {
941     A_UINT32 intr_mask;
942     A_UINT32 input_values;
943 };
944
945 /* used by the AR6000_XIOCTL_DBGLOG_CFG_MODULE */
946 typedef struct ar6000_dbglog_module_config_s {
947     A_UINT32 valid;
948     A_UINT16 mmask;
949     A_UINT16 tsr;
950     A_BOOL   rep;
951     A_UINT16 size;
952 } DBGLOG_MODULE_CONFIG;
953
954 typedef struct user_rssi_thold_t {
955     A_INT16     tag;
956     A_INT16     rssi;
957 } USER_RSSI_THOLD;
958
959 typedef struct user_rssi_params_t {
960     A_UINT8            weight;
961     A_UINT32           pollTime;
962     USER_RSSI_THOLD    tholds[12];
963 } USER_RSSI_PARAMS;
964
965 /*
966  * Host driver may have some config parameters. Typically, these
967  * config params are one time config parameters. These could
968  * correspond to any of the underlying modules. Host driver exposes
969  * an api for the underlying modules to get this config.
970  */
971 #define AR6000_DRIVER_CFG_BASE                  0x8000
972
973 /* Should driver perform wlan node caching? */
974 #define AR6000_DRIVER_CFG_GET_WLANNODECACHING   0x8001
975 /*Should we log raw WMI msgs */
976 #define AR6000_DRIVER_CFG_LOG_RAW_WMI_MSGS      0x8002
977
978 /* used by AR6000_XIOCTL_DIAG_READ & AR6000_XIOCTL_DIAG_WRITE */
979 struct ar6000_diag_window_cmd_s {
980     unsigned int addr;
981     unsigned int value;
982 };
983
984
985 struct ar6000_traffic_activity_change {
986     A_UINT32    StreamID;   /* stream ID to indicate activity change */
987     A_UINT32    Active;     /* active (1) or inactive (0) */
988 };
989
990 #ifdef __cplusplus
991 }
992 #endif
993 #endif