1 //------------------------------------------------------------------------------
2 // Copyright (c) 2004-2010 Atheros Communications Inc.
3 // All rights reserved.
7 // Permission to use, copy, modify, and/or distribute this software for any
8 // purpose with or without fee is hereby granted, provided that the above
9 // copyright notice and this permission notice appear in all copies.
11 // THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
12 // WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
13 // MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
14 // ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
15 // WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
16 // ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
17 // OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
21 // Author(s): ="Atheros"
22 //------------------------------------------------------------------------------
24 #ifndef _ATHDRV_LINUX_H
25 #define _ATHDRV_LINUX_H
33 * There are two types of ioctl's here: Standard ioctls and
34 * eXtended ioctls. All extended ioctls (XIOCTL) are multiplexed
35 * off of the single ioctl command, AR6000_IOCTL_EXTENDED. The
36 * arguments for every XIOCTL starts with a 32-bit command word
37 * that is used to select which extended ioctl is in use. After
38 * the command word are command-specific arguments.
41 /* Linux standard Wireless Extensions, private ioctl interfaces */
42 #define IEEE80211_IOCTL_SETPARAM (SIOCIWFIRSTPRIV+0)
43 #define IEEE80211_IOCTL_SETKEY (SIOCIWFIRSTPRIV+1)
44 #define IEEE80211_IOCTL_DELKEY (SIOCIWFIRSTPRIV+2)
45 #define IEEE80211_IOCTL_SETMLME (SIOCIWFIRSTPRIV+3)
46 #define IEEE80211_IOCTL_ADDPMKID (SIOCIWFIRSTPRIV+4)
47 #define IEEE80211_IOCTL_SETOPTIE (SIOCIWFIRSTPRIV+5)
48 //#define IEEE80211_IOCTL_GETPARAM (SIOCIWFIRSTPRIV+6)
49 //#define IEEE80211_IOCTL_SETWMMPARAMS (SIOCIWFIRSTPRIV+7)
50 //#define IEEE80211_IOCTL_GETWMMPARAMS (SIOCIWFIRSTPRIV+8)
51 //#define IEEE80211_IOCTL_GETOPTIE (SIOCIWFIRSTPRIV+9)
52 //#define IEEE80211_IOCTL_SETAUTHALG (SIOCIWFIRSTPRIV+10)
53 #define IEEE80211_IOCTL_LASTONE (SIOCIWFIRSTPRIV+10)
57 /* ====WMI Ioctls==== */
60 * Many ioctls simply provide WMI services to application code:
61 * an application makes such an ioctl call with a set of arguments
62 * that are packaged into the corresponding WMI message, and sent
66 #define AR6000_IOCTL_WMI_GETREV (SIOCIWFIRSTPRIV+11)
69 * ar6000_version *revision
72 #define AR6000_IOCTL_WMI_SETPWR (SIOCIWFIRSTPRIV+12)
75 * WMI_POWER_MODE_CMD pwrModeCmd (see include/wmi.h)
76 * uses: WMI_SET_POWER_MODE_CMDID
79 #define AR6000_IOCTL_WMI_SETSCAN (SIOCIWFIRSTPRIV+13)
82 * WMI_SCAN_PARAMS_CMD scanParams (see include/wmi.h)
83 * uses: WMI_SET_SCAN_PARAMS_CMDID
86 #define AR6000_IOCTL_WMI_SETLISTENINT (SIOCIWFIRSTPRIV+14)
89 * UINT32 listenInterval
90 * uses: WMI_SET_LISTEN_INT_CMDID
93 #define AR6000_IOCTL_WMI_SETBSSFILTER (SIOCIWFIRSTPRIV+15)
96 * WMI_BSS_FILTER filter (see include/wmi.h)
97 * uses: WMI_SET_BSS_FILTER_CMDID
100 #define AR6000_IOCTL_WMI_SET_CHANNELPARAMS (SIOCIWFIRSTPRIV+16)
103 * WMI_CHANNEL_PARAMS_CMD chParams
104 * uses: WMI_SET_CHANNEL_PARAMS_CMDID
107 #define AR6000_IOCTL_WMI_SET_PROBEDSSID (SIOCIWFIRSTPRIV+17)
110 * WMI_PROBED_SSID_CMD probedSsids (see include/wmi.h)
111 * uses: WMI_SETPROBED_SSID_CMDID
114 #define AR6000_IOCTL_WMI_SET_PMPARAMS (SIOCIWFIRSTPRIV+18)
117 * WMI_POWER_PARAMS_CMD powerParams (see include/wmi.h)
118 * uses: WMI_SET_POWER_PARAMS_CMDID
121 #define AR6000_IOCTL_WMI_SET_BADAP (SIOCIWFIRSTPRIV+19)
124 * WMI_ADD_BAD_AP_CMD badAPs (see include/wmi.h)
125 * uses: WMI_ADD_BAD_AP_CMDID
128 #define AR6000_IOCTL_WMI_GET_QOS_QUEUE (SIOCIWFIRSTPRIV+20)
131 * ar6000_queuereq queueRequest (see below)
134 #define AR6000_IOCTL_WMI_CREATE_QOS (SIOCIWFIRSTPRIV+21)
137 * WMI_CREATE_PSTREAM createPstreamCmd (see include/wmi.h)
138 * uses: WMI_CREATE_PSTREAM_CMDID
141 #define AR6000_IOCTL_WMI_DELETE_QOS (SIOCIWFIRSTPRIV+22)
144 * WMI_DELETE_PSTREAM_CMD deletePstreamCmd (see include/wmi.h)
145 * uses: WMI_DELETE_PSTREAM_CMDID
148 #define AR6000_IOCTL_WMI_SET_SNRTHRESHOLD (SIOCIWFIRSTPRIV+23)
151 * WMI_SNR_THRESHOLD_PARAMS_CMD thresholdParams (see include/wmi.h)
152 * uses: WMI_SNR_THRESHOLD_PARAMS_CMDID
155 #define AR6000_IOCTL_WMI_SET_ERROR_REPORT_BITMASK (SIOCIWFIRSTPRIV+24)
158 * WMI_TARGET_ERROR_REPORT_BITMASK errorReportBitMask (see include/wmi.h)
159 * uses: WMI_TARGET_ERROR_REPORT_BITMASK_CMDID
162 #define AR6000_IOCTL_WMI_GET_TARGET_STATS (SIOCIWFIRSTPRIV+25)
165 * TARGET_STATS *targetStats (see below)
166 * uses: WMI_GET_STATISTICS_CMDID
169 #define AR6000_IOCTL_WMI_SET_ASSOC_INFO (SIOCIWFIRSTPRIV+26)
172 * WMI_SET_ASSOC_INFO_CMD setAssocInfoCmd
173 * uses: WMI_SET_ASSOC_INFO_CMDID
176 #define AR6000_IOCTL_WMI_SET_ACCESS_PARAMS (SIOCIWFIRSTPRIV+27)
179 * WMI_SET_ACCESS_PARAMS_CMD setAccessParams (see include/wmi.h)
180 * uses: WMI_SET_ACCESS_PARAMS_CMDID
183 #define AR6000_IOCTL_WMI_SET_BMISS_TIME (SIOCIWFIRSTPRIV+28)
186 * UINT32 beaconMissTime
187 * uses: WMI_SET_BMISS_TIME_CMDID
190 #define AR6000_IOCTL_WMI_SET_DISC_TIMEOUT (SIOCIWFIRSTPRIV+29)
193 * WMI_DISC_TIMEOUT_CMD disconnectTimeoutCmd (see include/wmi.h)
194 * uses: WMI_SET_DISC_TIMEOUT_CMDID
197 #define AR6000_IOCTL_WMI_SET_IBSS_PM_CAPS (SIOCIWFIRSTPRIV+30)
200 * WMI_IBSS_PM_CAPS_CMD ibssPowerMgmtCapsCmd
201 * uses: WMI_SET_IBSS_PM_CAPS_CMDID
205 * There is a very small space available for driver-private
206 * wireless ioctls. In order to circumvent this limitation,
207 * we multiplex a bunch of ioctls (XIOCTLs) on top of a
208 * single AR6000_IOCTL_EXTENDED ioctl.
210 #define AR6000_IOCTL_EXTENDED (SIOCIWFIRSTPRIV+31)
213 /* ====BMI Extended Ioctls==== */
215 #define AR6000_XIOCTL_BMI_DONE 1
218 * UINT32 cmd (AR6000_XIOCTL_BMI_DONE)
222 #define AR6000_XIOCTL_BMI_READ_MEMORY 2
227 * UINT32 cmd (AR6000_XIOCTL_BMI_READ_MEMORY)
231 * char results[length]
233 * uses: BMI_READ_MEMORY
236 #define AR6000_XIOCTL_BMI_WRITE_MEMORY 3
239 * UINT32 cmd (AR6000_XIOCTL_BMI_WRITE_MEMORY)
243 * uses: BMI_WRITE_MEMORY
246 #define AR6000_XIOCTL_BMI_EXECUTE 4
249 * UINT32 cmd (AR6000_XIOCTL_BMI_EXECUTE)
250 * UINT32 TargetAddress
255 #define AR6000_XIOCTL_BMI_SET_APP_START 5
258 * UINT32 cmd (AR6000_XIOCTL_BMI_SET_APP_START)
259 * UINT32 TargetAddress
260 * uses: BMI_SET_APP_START
263 #define AR6000_XIOCTL_BMI_READ_SOC_REGISTER 6
268 * UINT32 cmd (AR6000_XIOCTL_BMI_READ_SOC_REGISTER)
269 * UINT32 TargetAddress, 32-bit aligned
273 * uses: BMI_READ_SOC_REGISTER
276 #define AR6000_XIOCTL_BMI_WRITE_SOC_REGISTER 7
280 * UINT32 cmd (AR6000_XIOCTL_BMI_WRITE_SOC_REGISTER)
281 * UINT32 TargetAddress, 32-bit aligned
284 * uses: BMI_WRITE_SOC_REGISTER
287 #define AR6000_XIOCTL_BMI_TEST 8
290 * UINT32 cmd (AR6000_XIOCTL_BMI_TEST)
298 /* Historical Host-side DataSet support */
299 #define AR6000_XIOCTL_UNUSED9 9
300 #define AR6000_XIOCTL_UNUSED10 10
301 #define AR6000_XIOCTL_UNUSED11 11
303 /* ====Misc Extended Ioctls==== */
305 #define AR6000_XIOCTL_FORCE_TARGET_RESET 12
308 * UINT32 cmd (AR6000_XIOCTL_FORCE_TARGET_RESET)
312 #ifdef HTC_RAW_INTERFACE
313 /* HTC Raw Interface Ioctls */
314 #define AR6000_XIOCTL_HTC_RAW_OPEN 13
317 * UINT32 cmd (AR6000_XIOCTL_HTC_RAW_OPEN)
320 #define AR6000_XIOCTL_HTC_RAW_CLOSE 14
323 * UINT32 cmd (AR6000_XIOCTL_HTC_RAW_CLOSE)
326 #define AR6000_XIOCTL_HTC_RAW_READ 15
331 * UINT32 cmd (AR6000_XIOCTL_HTC_RAW_READ)
339 #define AR6000_XIOCTL_HTC_RAW_WRITE 16
342 * UINT32 cmd (AR6000_XIOCTL_HTC_RAW_WRITE)
345 * char buffer[length]
347 #endif /* HTC_RAW_INTERFACE */
349 #define AR6000_XIOCTL_CHECK_TARGET_READY 17
352 * UINT32 cmd (AR6000_XIOCTL_CHECK_TARGET_READY)
357 /* ====GPIO (General Purpose I/O) Extended Ioctls==== */
359 #define AR6000_XIOCTL_GPIO_OUTPUT_SET 18
362 * UINT32 cmd (AR6000_XIOCTL_GPIO_OUTPUT_SET)
363 * ar6000_gpio_output_set_cmd_s (see below)
364 * uses: WMIX_GPIO_OUTPUT_SET_CMDID
367 #define AR6000_XIOCTL_GPIO_INPUT_GET 19
370 * UINT32 cmd (AR6000_XIOCTL_GPIO_INPUT_GET)
371 * uses: WMIX_GPIO_INPUT_GET_CMDID
374 #define AR6000_XIOCTL_GPIO_REGISTER_SET 20
377 * UINT32 cmd (AR6000_XIOCTL_GPIO_REGISTER_SET)
378 * ar6000_gpio_register_cmd_s (see below)
379 * uses: WMIX_GPIO_REGISTER_SET_CMDID
382 #define AR6000_XIOCTL_GPIO_REGISTER_GET 21
385 * UINT32 cmd (AR6000_XIOCTL_GPIO_REGISTER_GET)
386 * ar6000_gpio_register_cmd_s (see below)
387 * uses: WMIX_GPIO_REGISTER_GET_CMDID
390 #define AR6000_XIOCTL_GPIO_INTR_ACK 22
393 * UINT32 cmd (AR6000_XIOCTL_GPIO_INTR_ACK)
394 * ar6000_cpio_intr_ack_cmd_s (see below)
395 * uses: WMIX_GPIO_INTR_ACK_CMDID
398 #define AR6000_XIOCTL_GPIO_INTR_WAIT 23
401 * UINT32 cmd (AR6000_XIOCTL_GPIO_INTR_WAIT)
406 /* ====more wireless commands==== */
408 #define AR6000_XIOCTL_SET_ADHOC_BSSID 24
411 * UINT32 cmd (AR6000_XIOCTL_SET_ADHOC_BSSID)
412 * WMI_SET_ADHOC_BSSID_CMD setAdHocBssidCmd (see include/wmi.h)
415 #define AR6000_XIOCTL_SET_OPT_MODE 25
418 * UINT32 cmd (AR6000_XIOCTL_SET_OPT_MODE)
419 * WMI_SET_OPT_MODE_CMD setOptModeCmd (see include/wmi.h)
420 * uses: WMI_SET_OPT_MODE_CMDID
423 #define AR6000_XIOCTL_OPT_SEND_FRAME 26
426 * UINT32 cmd (AR6000_XIOCTL_OPT_SEND_FRAME)
427 * WMI_OPT_TX_FRAME_CMD optTxFrameCmd (see include/wmi.h)
428 * uses: WMI_OPT_TX_FRAME_CMDID
431 #define AR6000_XIOCTL_SET_BEACON_INTVAL 27
434 * UINT32 cmd (AR6000_XIOCTL_SET_BEACON_INTVAL)
435 * WMI_BEACON_INT_CMD beaconIntCmd (see include/wmi.h)
436 * uses: WMI_SET_BEACON_INT_CMDID
440 #define IEEE80211_IOCTL_SETAUTHALG 28
443 #define AR6000_XIOCTL_SET_VOICE_PKT_SIZE 29
446 * UINT32 cmd (AR6000_XIOCTL_SET_VOICE_PKT_SIZE)
447 * WMI_SET_VOICE_PKT_SIZE_CMD setVoicePktSizeCmd (see include/wmi.h)
448 * uses: WMI_SET_VOICE_PKT_SIZE_CMDID
452 #define AR6000_XIOCTL_SET_MAX_SP 30
455 * UINT32 cmd (AR6000_XIOCTL_SET_MAX_SP)
456 * WMI_SET_MAX_SP_LEN_CMD maxSPLen(see include/wmi.h)
457 * uses: WMI_SET_MAX_SP_LEN_CMDID
460 #define AR6000_XIOCTL_WMI_GET_ROAM_TBL 31
462 #define AR6000_XIOCTL_WMI_SET_ROAM_CTRL 32
464 #define AR6000_XIOCTRL_WMI_SET_POWERSAVE_TIMERS 33
469 * UINT32 cmd (AR6000_XIOCTRL_WMI_SET_POWERSAVE_TIMERS)
470 * WMI_SET_POWERSAVE_TIMERS_CMD powerSaveTimers(see include/wmi.h)
471 * WMI_SET_POWERSAVE_TIMERS_CMDID
474 #define AR6000_XIOCTRL_WMI_GET_POWER_MODE 34
477 * UINT32 cmd (AR6000_XIOCTRL_WMI_GET_POWER_MODE)
480 #define AR6000_XIOCTRL_WMI_SET_WLAN_STATE 35
490 #define AR6000_XIOCTL_WMI_GET_ROAM_DATA 36
492 #define AR6000_XIOCTL_WMI_SETRETRYLIMITS 37
495 * WMI_SET_RETRY_LIMITS_CMD ibssSetRetryLimitsCmd
496 * uses: WMI_SET_RETRY_LIMITS_CMDID
499 #ifdef CONFIG_HOST_TCMD_SUPPORT
500 /* ====extended commands for radio test ==== */
502 #define AR6000_XIOCTL_TCMD_CONT_TX 38
505 * UINT32 cmd (AR6000_XIOCTL_TCMD_CONT_TX)
506 * WMI_TCMD_CONT_TX_CMD contTxCmd (see include/wmi.h)
507 * uses: WMI_TCMD_CONT_TX_CMDID
510 #define AR6000_XIOCTL_TCMD_CONT_RX 39
513 * UINT32 cmd (AR6000_XIOCTL_TCMD_CONT_RX)
514 * WMI_TCMD_CONT_RX_CMD rxCmd (see include/wmi.h)
515 * uses: WMI_TCMD_CONT_RX_CMDID
518 #define AR6000_XIOCTL_TCMD_PM 40
521 * UINT32 cmd (AR6000_XIOCTL_TCMD_PM)
522 * WMI_TCMD_PM_CMD pmCmd (see include/wmi.h)
523 * uses: WMI_TCMD_PM_CMDID
526 #endif /* CONFIG_HOST_TCMD_SUPPORT */
528 #define AR6000_XIOCTL_WMI_STARTSCAN 41
531 * UINT32 cmd (AR6000_XIOCTL_WMI_STARTSCAN)
533 * UINT8 scanConnected
535 * uses: WMI_START_SCAN_CMDID
538 #define AR6000_XIOCTL_WMI_SETFIXRATES 42
540 #define AR6000_XIOCTL_WMI_GETFIXRATES 43
543 #define AR6000_XIOCTL_WMI_SET_RSSITHRESHOLD 44
546 * WMI_RSSI_THRESHOLD_PARAMS_CMD thresholdParams (see include/wmi.h)
547 * uses: WMI_RSSI_THRESHOLD_PARAMS_CMDID
550 #define AR6000_XIOCTL_WMI_CLR_RSSISNR 45
553 * WMI_CLR_RSSISNR_CMD thresholdParams (see include/wmi.h)
554 * uses: WMI_CLR_RSSISNR_CMDID
557 #define AR6000_XIOCTL_WMI_SET_LQTHRESHOLD 46
560 * WMI_LQ_THRESHOLD_PARAMS_CMD thresholdParams (see include/wmi.h)
561 * uses: WMI_LQ_THRESHOLD_PARAMS_CMDID
564 #define AR6000_XIOCTL_WMI_SET_RTS 47
567 * WMI_SET_RTS_MODE_CMD (see include/wmi.h)
568 * uses: WMI_SET_RTS_MODE_CMDID
571 #define AR6000_XIOCTL_WMI_SET_LPREAMBLE 48
573 #define AR6000_XIOCTL_WMI_SET_AUTHMODE 49
576 * UINT32 cmd (AR6000_XIOCTL_WMI_SET_AUTHMODE)
578 * uses: WMI_SET_RECONNECT_AUTH_MODE_CMDID
581 #define AR6000_XIOCTL_WMI_SET_REASSOCMODE 50
585 * UINT32 cmd (AR6000_XIOCTL_WMI_SET_WMM)
587 * uses: WMI_SET_WMM_CMDID
589 #define AR6000_XIOCTL_WMI_SET_WMM 51
593 * UINT32 cmd (AR6000_XIOCTL_WMI_SET_HB_CHALLENGE_RESP_PARAMS)
597 #define AR6000_XIOCTL_WMI_SET_HB_CHALLENGE_RESP_PARAMS 52
601 * UINT32 cmd (AR6000_XIOCTL_WMI_GET_HB_CHALLENGE_RESP)
604 #define AR6000_XIOCTL_WMI_GET_HB_CHALLENGE_RESP 53
608 * UINT32 cmd (AR6000_XIOCTL_WMI_GET_RD)
611 #define AR6000_XIOCTL_WMI_GET_RD 54
613 #define AR6000_XIOCTL_DIAG_READ 55
615 #define AR6000_XIOCTL_DIAG_WRITE 56
618 * arguments cmd (AR6000_XIOCTL_SET_TXOP)
619 * WMI_TXOP_CFG txopEnable
621 #define AR6000_XIOCTL_WMI_SET_TXOP 57
626 * UINT32 cmd (AR6000_XIOCTL_USER_SETKEYS)
628 * uses struct ar6000_user_setkeys_info
630 #define AR6000_XIOCTL_USER_SETKEYS 58
631 #endif /* USER_KEYS */
633 #define AR6000_XIOCTL_WMI_SET_KEEPALIVE 59
636 * UINT8 cmd (AR6000_XIOCTL_WMI_SET_KEEPALIVE)
637 * UINT8 keepaliveInterval
638 * uses: WMI_SET_KEEPALIVE_CMDID
641 #define AR6000_XIOCTL_WMI_GET_KEEPALIVE 60
644 * UINT8 cmd (AR6000_XIOCTL_WMI_GET_KEEPALIVE)
645 * UINT8 keepaliveInterval
647 * uses: WMI_GET_KEEPALIVE_CMDID
650 /* ====ROM Patching Extended Ioctls==== */
652 #define AR6000_XIOCTL_BMI_ROMPATCH_INSTALL 61
657 * UINT32 cmd (AR6000_XIOCTL_BMI_ROMPATCH_INSTALL)
660 * UINT32 number of bytes
661 * UINT32 activate? (0 or 1)
663 * u32 resulting rompatch ID
665 * uses: BMI_ROMPATCH_INSTALL
668 #define AR6000_XIOCTL_BMI_ROMPATCH_UNINSTALL 62
672 * UINT32 cmd (AR6000_XIOCTL_BMI_ROMPATCH_UNINSTALL)
675 * uses: BMI_ROMPATCH_UNINSTALL
678 #define AR6000_XIOCTL_BMI_ROMPATCH_ACTIVATE 63
682 * UINT32 cmd (AR6000_XIOCTL_BMI_ROMPATCH_ACTIVATE)
683 * UINT32 rompatch count
684 * UINT32 rompatch IDs[rompatch count]
686 * uses: BMI_ROMPATCH_ACTIVATE
689 #define AR6000_XIOCTL_BMI_ROMPATCH_DEACTIVATE 64
693 * UINT32 cmd (AR6000_XIOCTL_BMI_ROMPATCH_DEACTIVATE)
694 * UINT32 rompatch count
695 * UINT32 rompatch IDs[rompatch count]
697 * uses: BMI_ROMPATCH_DEACTIVATE
700 #define AR6000_XIOCTL_WMI_SET_APPIE 65
704 * UINT32 cmd (AR6000_XIOCTL_WMI_SET_APPIE)
705 * UINT32 app_frmtype;
710 #define AR6000_XIOCTL_WMI_SET_MGMT_FRM_RX_FILTER 66
716 #define AR6000_XIOCTL_DBGLOG_CFG_MODULE 67
718 #define AR6000_XIOCTL_DBGLOG_GET_DEBUG_LOGS 68
720 #define AR6000_XIOCTL_WMI_SET_WSC_STATUS 70
724 * (WSC_REG_INACTIVE or WSC_REG_ACTIVE)
733 * uses: WMI_SET_BT_STATUS_CMDID
735 #define AR6000_XIOCTL_WMI_SET_BT_STATUS 71
743 * BT_PARAMS_A2DP a2dpParams;
747 * uses: WMI_SET_BT_PARAM_CMDID
749 #define AR6000_XIOCTL_WMI_SET_BT_PARAMS 72
751 #define AR6000_XIOCTL_WMI_SET_HOST_SLEEP_MODE 73
752 #define AR6000_XIOCTL_WMI_SET_WOW_MODE 74
753 #define AR6000_XIOCTL_WMI_GET_WOW_LIST 75
754 #define AR6000_XIOCTL_WMI_ADD_WOW_PATTERN 76
755 #define AR6000_XIOCTL_WMI_DEL_WOW_PATTERN 77
759 #define AR6000_XIOCTL_TARGET_INFO 78
762 * UINT32 cmd (AR6000_XIOCTL_TARGET_INFO)
763 * u32 TargetVersion (returned)
764 * u32 TargetType (returned)
765 * (See also bmi_msg.h target_ver and target_type)
768 #define AR6000_XIOCTL_DUMP_HTC_CREDIT_STATE 79
774 #define AR6000_XIOCTL_TRAFFIC_ACTIVITY_CHANGE 80
776 * This ioctl is used to emulate traffic activity
777 * timeouts. Activity/inactivity will trigger the driver
778 * to re-balance credits.
781 * ar6000_traffic_activity_change
784 #define AR6000_XIOCTL_WMI_SET_CONNECT_CTRL_FLAGS 81
786 * This ioctl is used to set the connect control flags
789 * u32 connectCtrlFlags
792 #define AR6000_XIOCTL_WMI_SET_AKMP_PARAMS 82
794 * This IOCTL sets any Authentication,Key Management and Protection
795 * related parameters. This is used along with the information set in
797 * Currently this enables Multiple PMKIDs to an AP.
803 * uses: WMI_SET_AKMP_PARAMS_CMD
806 #define AR6000_XIOCTL_WMI_GET_PMKID_LIST 83
808 #define AR6000_XIOCTL_WMI_SET_PMKID_LIST 84
810 * This IOCTL is used to set a list of PMKIDs. This list of
811 * PMKIDs is used in the [Re]AssocReq Frame. This list is used
812 * only if the MultiPMKID option is enabled via the
813 * AR6000_XIOCTL_WMI_SET_AKMP_PARAMS IOCTL.
818 * WMI_PMKID pmkidList[WMI_MAX_PMKID_CACHE];
820 * uses: WMI_SET_PMKIDLIST_CMD
823 #define AR6000_XIOCTL_WMI_SET_PARAMS 85
824 #define AR6000_XIOCTL_WMI_SET_MCAST_FILTER 86
825 #define AR6000_XIOCTL_WMI_DEL_MCAST_FILTER 87
828 /* Historical DSETPATCH support for INI patches */
829 #define AR6000_XIOCTL_UNUSED90 90
832 /* Support LZ-compressed firmware download */
833 #define AR6000_XIOCTL_BMI_LZ_STREAM_START 91
836 * UINT32 cmd (AR6000_XIOCTL_BMI_LZ_STREAM_START)
838 * uses: BMI_LZ_STREAM_START
841 #define AR6000_XIOCTL_BMI_LZ_DATA 92
844 * UINT32 cmd (AR6000_XIOCTL_BMI_LZ_DATA)
850 #define AR6000_XIOCTL_PROF_CFG 93
857 #define AR6000_XIOCTL_PROF_ADDR_SET 94
863 #define AR6000_XIOCTL_PROF_START 95
865 #define AR6000_XIOCTL_PROF_STOP 96
867 #define AR6000_XIOCTL_PROF_COUNT_GET 97
869 #define AR6000_XIOCTL_WMI_ABORT_SCAN 98
874 #define AR6000_XIOCTL_AP_GET_STA_LIST 99
876 #define AR6000_XIOCTL_AP_HIDDEN_SSID 100
878 #define AR6000_XIOCTL_AP_SET_NUM_STA 101
880 #define AR6000_XIOCTL_AP_SET_ACL_MAC 102
882 #define AR6000_XIOCTL_AP_GET_ACL_LIST 103
884 #define AR6000_XIOCTL_AP_COMMIT_CONFIG 104
886 #define IEEE80211_IOCTL_GETWPAIE 105
888 #define AR6000_XIOCTL_AP_CONN_INACT_TIME 106
890 #define AR6000_XIOCTL_AP_PROT_SCAN_TIME 107
892 #define AR6000_XIOCTL_AP_SET_COUNTRY 108
894 #define AR6000_XIOCTL_AP_SET_DTIM 109
899 #define AR6000_XIOCTL_WMI_TARGET_EVENT_REPORT 110
901 #define AR6000_XIOCTL_SET_IP 111
903 #define AR6000_XIOCTL_AP_SET_ACL_POLICY 112
905 #define AR6000_XIOCTL_AP_INTRA_BSS_COMM 113
907 #define AR6000_XIOCTL_DUMP_MODULE_DEBUG_INFO 114
909 #define AR6000_XIOCTL_MODULE_DEBUG_SET_MASK 115
911 #define AR6000_XIOCTL_MODULE_DEBUG_GET_MASK 116
913 #define AR6000_XIOCTL_DUMP_RCV_AGGR_STATS 117
915 #define AR6000_XIOCTL_SET_HT_CAP 118
917 #define AR6000_XIOCTL_SET_HT_OP 119
919 #define AR6000_XIOCTL_AP_GET_STAT 120
921 #define AR6000_XIOCTL_SET_TX_SELECT_RATES 121
923 #define AR6000_XIOCTL_SETUP_AGGR 122
925 #define AR6000_XIOCTL_ALLOW_AGGR 123
927 #define AR6000_XIOCTL_AP_GET_HIDDEN_SSID 124
929 #define AR6000_XIOCTL_AP_GET_COUNTRY 125
931 #define AR6000_XIOCTL_AP_GET_WMODE 126
933 #define AR6000_XIOCTL_AP_GET_DTIM 127
935 #define AR6000_XIOCTL_AP_GET_BINTVL 128
937 #define AR6000_XIOCTL_AP_GET_RTS 129
939 #define AR6000_XIOCTL_DELE_AGGR 130
941 #define AR6000_XIOCTL_FETCH_TARGET_REGS 131
943 #define AR6000_XIOCTL_HCI_CMD 132
945 #define AR6000_XIOCTL_ACL_DATA 133 /* used to be used for PAL */
947 #define AR6000_XIOCTL_WLAN_CONN_PRECEDENCE 134
949 #define AR6000_XIOCTL_AP_SET_11BG_RATESET 135
953 * WMI_AP_PS_CMD apPsCmd
954 * uses: WMI_AP_PS_CMDID
957 #define AR6000_XIOCTL_WMI_SET_AP_PS 136
959 #define AR6000_XIOCTL_WMI_MCAST_FILTER 137
961 #define AR6000_XIOCTL_WMI_SET_BTCOEX_FE_ANT 138
963 #define AR6000_XIOCTL_WMI_SET_BTCOEX_COLOCATED_BT_DEV 139
965 #define AR6000_XIOCTL_WMI_SET_BTCOEX_BTINQUIRY_PAGE_CONFIG 140
967 #define AR6000_XIOCTL_WMI_SET_BTCOEX_SCO_CONFIG 141
969 #define AR6000_XIOCTL_WMI_SET_BTCOEX_A2DP_CONFIG 142
971 #define AR6000_XIOCTL_WMI_SET_BTCOEX_ACLCOEX_CONFIG 143
973 #define AR6000_XIOCTL_WMI_SET_BTCOEX_DEBUG 144
975 #define AR6000_XIOCTL_WMI_SET_BT_OPERATING_STATUS 145
977 #define AR6000_XIOCTL_WMI_GET_BTCOEX_CONFIG 146
979 #define AR6000_XIOCTL_WMI_GET_BTCOEX_STATS 147
982 * UINT32 cmd (AR6000_XIOCTL_WMI_SET_QOS_SUPP)
984 * uses: WMI_SET_QOS_SUPP_CMDID
986 #define AR6000_XIOCTL_WMI_SET_QOS_SUPP 148
988 #define AR6000_XIOCTL_GET_WLAN_SLEEP_STATE 149
990 #define AR6000_XIOCTL_SET_BT_HW_POWER_STATE 150
992 #define AR6000_XIOCTL_GET_BT_HW_POWER_STATE 151
994 #define AR6000_XIOCTL_ADD_AP_INTERFACE 152
996 #define AR6000_XIOCTL_REMOVE_AP_INTERFACE 153
998 #define AR6000_XIOCTL_WMI_SET_TX_SGI_PARAM 154
1000 #define AR6000_XIOCTL_WMI_SET_EXCESS_TX_RETRY_THRES 161
1002 /* used by AR6000_IOCTL_WMI_GETREV */
1003 struct ar6000_version {
1010 /* used by AR6000_IOCTL_WMI_GET_QOS_QUEUE */
1011 struct ar6000_queuereq {
1016 /* used by AR6000_IOCTL_WMI_GET_TARGET_STATS */
1017 typedef struct targetStats_t {
1020 u64 tx_unicast_pkts;
1021 u64 tx_unicast_bytes;
1022 u64 tx_multicast_pkts;
1023 u64 tx_multicast_bytes;
1024 u64 tx_broadcast_pkts;
1025 u64 tx_broadcast_bytes;
1026 u64 tx_rts_success_cnt;
1027 u64 tx_packet_per_ac[4];
1032 u64 tx_mult_retry_cnt;
1033 u64 tx_rts_fail_cnt;
1037 u64 rx_unicast_pkts;
1038 u64 rx_unicast_bytes;
1039 u64 rx_multicast_pkts;
1040 u64 rx_multicast_bytes;
1041 u64 rx_broadcast_pkts;
1042 u64 rx_broadcast_bytes;
1043 u64 rx_fragment_pkt;
1047 u64 rx_key_cache_miss;
1049 u64 rx_duplicate_frames;
1051 u64 tkip_local_mic_failure;
1052 u64 tkip_counter_measures_invoked;
1054 u64 tkip_format_errors;
1055 u64 ccmp_format_errors;
1058 u64 power_save_failure_cnt;
1063 u64 cs_disconnect_cnt;
1065 s32 tx_unicast_rate;
1066 s32 rx_unicast_rate;
1070 u32 wow_num_pkts_dropped;
1071 u16 wow_num_events_discarded;
1073 s16 noise_floor_calibation;
1075 s16 cs_aveBeacon_rssi;
1076 u8 cs_aveBeacon_snr;
1077 u8 cs_lastRoam_msec;
1080 u8 wow_num_host_pkt_wakeups;
1081 u8 wow_num_host_event_wakeups;
1088 typedef struct targetStats_cmd_t {
1089 TARGET_STATS targetStats;
1093 /* used by AR6000_XIOCTL_USER_SETKEYS */
1096 * Setting this bit to 1 doesnot initialize the RSC on the firmware
1098 #define AR6000_XIOCTL_USER_SETKEYS_RSC_CTRL 1
1099 #define AR6000_USER_SETKEYS_RSC_UNCHANGED 0x00000002
1101 struct ar6000_user_setkeys_info {
1102 u32 keyOpCtrl; /* Bit Map of Key Mgmt Ctrl Flags */
1103 }; /* XXX: unused !? */
1105 /* used by AR6000_XIOCTL_GPIO_OUTPUT_SET */
1106 struct ar6000_gpio_output_set_cmd_s {
1114 * used by AR6000_XIOCTL_GPIO_REGISTER_GET and AR6000_XIOCTL_GPIO_REGISTER_SET
1116 struct ar6000_gpio_register_cmd_s {
1121 /* used by AR6000_XIOCTL_GPIO_INTR_ACK */
1122 struct ar6000_gpio_intr_ack_cmd_s {
1126 /* used by AR6000_XIOCTL_GPIO_INTR_WAIT */
1127 struct ar6000_gpio_intr_wait_cmd_s {
1132 /* used by the AR6000_XIOCTL_DBGLOG_CFG_MODULE */
1133 typedef struct ar6000_dbglog_module_config_s {
1139 } DBGLOG_MODULE_CONFIG;
1141 typedef struct user_rssi_thold_t {
1146 typedef struct user_rssi_params_t {
1149 USER_RSSI_THOLD tholds[12];
1152 typedef struct ar6000_get_btcoex_config_cmd_t{
1155 }AR6000_GET_BTCOEX_CONFIG_CMD;
1157 typedef struct ar6000_btcoex_config_t {
1158 AR6000_GET_BTCOEX_CONFIG_CMD configCmd;
1160 } AR6000_BTCOEX_CONFIG;
1162 typedef struct ar6000_btcoex_stats_t {
1164 }AR6000_BTCOEX_STATS;
1166 * Host driver may have some config parameters. Typically, these
1167 * config params are one time config parameters. These could
1168 * correspond to any of the underlying modules. Host driver exposes
1169 * an api for the underlying modules to get this config.
1171 #define AR6000_DRIVER_CFG_BASE 0x8000
1173 /* Should driver perform wlan node caching? */
1174 #define AR6000_DRIVER_CFG_GET_WLANNODECACHING 0x8001
1175 /*Should we log raw WMI msgs */
1176 #define AR6000_DRIVER_CFG_LOG_RAW_WMI_MSGS 0x8002
1178 /* used by AR6000_XIOCTL_DIAG_READ & AR6000_XIOCTL_DIAG_WRITE */
1179 struct ar6000_diag_window_cmd_s {
1185 struct ar6000_traffic_activity_change {
1186 u32 StreamID; /* stream ID to indicate activity change */
1187 u32 Active; /* active (1) or inactive (0) */
1190 /* Used with AR6000_XIOCTL_PROF_COUNT_GET */
1191 struct prof_count_s {
1192 u32 addr; /* bin start address */
1193 u32 count; /* hit count */
1197 /* used by AR6000_XIOCTL_MODULE_DEBUG_SET_MASK */
1198 /* AR6000_XIOCTL_MODULE_DEBUG_GET_MASK */
1199 /* AR6000_XIOCTL_DUMP_MODULE_DEBUG_INFO */
1200 struct drv_debug_module_s {
1201 char modulename[128]; /* name of module */
1202 u32 mask; /* new mask to set .. or .. current mask */
1206 /* All HCI related rx events are sent up to the host app
1207 * via a wmi event id. It can contain ACL data or HCI event,
1208 * based on which it will be de-multiplexed.
1213 } WMI_PAL_EVENT_INFO;