//------------------------------------------------------------------------------
// Copyright (c) 2004-2010 Atheros Communications Inc.
// All rights reserved.
//
// 
//
// Permission to use, copy, modify, and/or distribute this software for any
// purpose with or without fee is hereby granted, provided that the above
// copyright notice and this permission notice appear in all copies.
//
// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
//
//
//
// Author(s): ="Atheros"
//------------------------------------------------------------------------------

#ifndef _ATHDRV_LINUX_H
#define _ATHDRV_LINUX_H

#ifdef __cplusplus
extern "C" {
#endif


/*
 * There are two types of ioctl's here: Standard ioctls and
 * eXtended ioctls.  All extended ioctls (XIOCTL) are multiplexed
 * off of the single ioctl command, AR6000_IOCTL_EXTENDED.  The
 * arguments for every XIOCTL starts with a 32-bit command word
 * that is used to select which extended ioctl is in use.  After
 * the command word are command-specific arguments.
 */

/* Linux standard Wireless Extensions, private ioctl interfaces */
#define IEEE80211_IOCTL_SETPARAM             (SIOCIWFIRSTPRIV+0)
#define IEEE80211_IOCTL_SETKEY               (SIOCIWFIRSTPRIV+1)
#define IEEE80211_IOCTL_DELKEY               (SIOCIWFIRSTPRIV+2)
#define IEEE80211_IOCTL_SETMLME              (SIOCIWFIRSTPRIV+3)
#define IEEE80211_IOCTL_ADDPMKID             (SIOCIWFIRSTPRIV+4)
#define IEEE80211_IOCTL_SETOPTIE             (SIOCIWFIRSTPRIV+5)
//#define IEEE80211_IOCTL_GETPARAM             (SIOCIWFIRSTPRIV+6)
//#define IEEE80211_IOCTL_SETWMMPARAMS         (SIOCIWFIRSTPRIV+7)
//#define IEEE80211_IOCTL_GETWMMPARAMS         (SIOCIWFIRSTPRIV+8)
//#define IEEE80211_IOCTL_GETOPTIE             (SIOCIWFIRSTPRIV+9)
//#define IEEE80211_IOCTL_SETAUTHALG           (SIOCIWFIRSTPRIV+10)
#define IEEE80211_IOCTL_LASTONE              (SIOCIWFIRSTPRIV+10)



/*                      ====WMI Ioctls====                                    */
/*
 *
 * Many ioctls simply provide WMI services to application code:
 * an application makes such an ioctl call with a set of arguments
 * that are packaged into the corresponding WMI message, and sent
 * to the Target.
 */

#define AR6000_IOCTL_WMI_GETREV              (SIOCIWFIRSTPRIV+11)
/*
 * arguments:
 *   ar6000_version *revision
 */

#define AR6000_IOCTL_WMI_SETPWR              (SIOCIWFIRSTPRIV+12)
/*
 * arguments:
 *   WMI_POWER_MODE_CMD pwrModeCmd (see include/wmi.h)
 * uses: WMI_SET_POWER_MODE_CMDID
 */

#define AR6000_IOCTL_WMI_SETSCAN             (SIOCIWFIRSTPRIV+13)
/*
 * arguments:
 *   WMI_SCAN_PARAMS_CMD scanParams (see include/wmi.h)
 * uses: WMI_SET_SCAN_PARAMS_CMDID
 */

#define AR6000_IOCTL_WMI_SETLISTENINT        (SIOCIWFIRSTPRIV+14)
/*
 * arguments:
 *   UINT32 listenInterval
 * uses: WMI_SET_LISTEN_INT_CMDID
 */

#define AR6000_IOCTL_WMI_SETBSSFILTER        (SIOCIWFIRSTPRIV+15)
/*
 * arguments:
 *   WMI_BSS_FILTER filter (see include/wmi.h)
 * uses: WMI_SET_BSS_FILTER_CMDID
 */

#define AR6000_IOCTL_WMI_SET_CHANNELPARAMS   (SIOCIWFIRSTPRIV+16)
/*
 * arguments:
 *   WMI_CHANNEL_PARAMS_CMD chParams
 * uses: WMI_SET_CHANNEL_PARAMS_CMDID
 */

#define AR6000_IOCTL_WMI_SET_PROBEDSSID      (SIOCIWFIRSTPRIV+17)
/*
 * arguments:
 *   WMI_PROBED_SSID_CMD probedSsids (see include/wmi.h)
 * uses: WMI_SETPROBED_SSID_CMDID
 */

#define AR6000_IOCTL_WMI_SET_PMPARAMS        (SIOCIWFIRSTPRIV+18)
/*
 * arguments:
 *   WMI_POWER_PARAMS_CMD powerParams (see include/wmi.h)
 * uses: WMI_SET_POWER_PARAMS_CMDID
 */

#define AR6000_IOCTL_WMI_SET_BADAP           (SIOCIWFIRSTPRIV+19)
/*
 * arguments:
 *   WMI_ADD_BAD_AP_CMD badAPs (see include/wmi.h)
 * uses: WMI_ADD_BAD_AP_CMDID
 */

#define AR6000_IOCTL_WMI_GET_QOS_QUEUE       (SIOCIWFIRSTPRIV+20)
/*
 * arguments:
 *   ar6000_queuereq queueRequest (see below)
 */

#define AR6000_IOCTL_WMI_CREATE_QOS          (SIOCIWFIRSTPRIV+21)
/*
 * arguments:
 *   WMI_CREATE_PSTREAM createPstreamCmd (see include/wmi.h)
 * uses: WMI_CREATE_PSTREAM_CMDID
 */

#define AR6000_IOCTL_WMI_DELETE_QOS          (SIOCIWFIRSTPRIV+22)
/*
 * arguments:
 *   WMI_DELETE_PSTREAM_CMD deletePstreamCmd (see include/wmi.h)
 * uses: WMI_DELETE_PSTREAM_CMDID
 */

#define AR6000_IOCTL_WMI_SET_SNRTHRESHOLD   (SIOCIWFIRSTPRIV+23)
/*
 * arguments:
 *   WMI_SNR_THRESHOLD_PARAMS_CMD thresholdParams (see include/wmi.h)
 * uses: WMI_SNR_THRESHOLD_PARAMS_CMDID
 */

#define AR6000_IOCTL_WMI_SET_ERROR_REPORT_BITMASK (SIOCIWFIRSTPRIV+24)
/*
 * arguments:
 *   WMI_TARGET_ERROR_REPORT_BITMASK errorReportBitMask (see include/wmi.h)
 * uses: WMI_TARGET_ERROR_REPORT_BITMASK_CMDID
 */

#define AR6000_IOCTL_WMI_GET_TARGET_STATS    (SIOCIWFIRSTPRIV+25)
/*
 * arguments:
 *   TARGET_STATS *targetStats (see below)
 * uses: WMI_GET_STATISTICS_CMDID
 */

#define AR6000_IOCTL_WMI_SET_ASSOC_INFO      (SIOCIWFIRSTPRIV+26)
/*
 * arguments:
 *   WMI_SET_ASSOC_INFO_CMD setAssocInfoCmd
 * uses: WMI_SET_ASSOC_INFO_CMDID
 */

#define AR6000_IOCTL_WMI_SET_ACCESS_PARAMS   (SIOCIWFIRSTPRIV+27)
/*
 * arguments:
 *   WMI_SET_ACCESS_PARAMS_CMD setAccessParams (see include/wmi.h)
 * uses: WMI_SET_ACCESS_PARAMS_CMDID
 */

#define AR6000_IOCTL_WMI_SET_BMISS_TIME      (SIOCIWFIRSTPRIV+28)
/*
 * arguments:
 *   UINT32 beaconMissTime
 * uses: WMI_SET_BMISS_TIME_CMDID
 */

#define AR6000_IOCTL_WMI_SET_DISC_TIMEOUT    (SIOCIWFIRSTPRIV+29)
/*
 * arguments:
 *   WMI_DISC_TIMEOUT_CMD disconnectTimeoutCmd (see include/wmi.h)
 * uses: WMI_SET_DISC_TIMEOUT_CMDID
 */

#define AR6000_IOCTL_WMI_SET_IBSS_PM_CAPS    (SIOCIWFIRSTPRIV+30)
/*
 * arguments:
 *   WMI_IBSS_PM_CAPS_CMD ibssPowerMgmtCapsCmd
 * uses: WMI_SET_IBSS_PM_CAPS_CMDID
 */

/*
 * There is a very small space available for driver-private
 * wireless ioctls.  In order to circumvent this limitation,
 * we multiplex a bunch of ioctls (XIOCTLs) on top of a
 * single AR6000_IOCTL_EXTENDED ioctl.
 */
#define AR6000_IOCTL_EXTENDED                (SIOCIWFIRSTPRIV+31)

typedef enum {
    AR6000_XIOCTL_BMI_DONE = 1,
    AR6000_XIOCTL_BMI_READ_MEMORY,
    AR6000_XIOCTL_BMI_WRITE_MEMORY,
    AR6000_XIOCTL_BMI_EXECUTE,
    AR6000_XIOCTL_BMI_SET_APP_START,
    AR6000_XIOCTL_BMI_READ_SOC_REGISTER,
    AR6000_XIOCTL_BMI_WRITE_SOC_REGISTER,
    AR6000_XIOCTL_BMI_TEST,
    AR6000_XIOCTL_UNUSED9,
    AR6000_XIOCTL_UNUSED10, /* 10 */
    AR6000_XIOCTL_UNUSED11,
    AR6000_XIOCTL_FORCE_TARGET_RESET,
    AR6000_XIOCTL_HTC_RAW_OPEN,
    AR6000_XIOCTL_HTC_RAW_CLOSE,
    AR6000_XIOCTL_HTC_RAW_READ,
    AR6000_XIOCTL_HTC_RAW_WRITE,
    AR6000_XIOCTL_CHECK_TARGET_READY,
    AR6000_XIOCTL_GPIO_OUTPUT_SET,
    AR6000_XIOCTL_GPIO_INPUT_GET,
    AR6000_XIOCTL_GPIO_REGISTER_SET,  /* 20 */
    AR6000_XIOCTL_GPIO_REGISTER_GET,
    AR6000_XIOCTL_GPIO_INTR_ACK,
    AR6000_XIOCTL_GPIO_INTR_WAIT,
    AR6000_XIOCTL_SET_ADHOC_BSSID,
    AR6000_XIOCTL_UNUSED25,
    AR6000_XIOCTL_UNUSED26,
    AR6000_XIOCTL_SET_BEACON_INTVAL,
    IEEE80211_IOCTL_SETAUTHALG,
    AR6000_XIOCTL_SET_VOICE_PKT_SIZE,
    AR6000_XIOCTL_SET_MAX_SP,   /* 30 */
    AR6000_XIOCTL_WMI_GET_ROAM_TBL,
    AR6000_XIOCTL_WMI_SET_ROAM_CTRL,
    AR6000_XIOCTRL_WMI_SET_POWERSAVE_TIMERS,
    AR6000_XIOCTRL_WMI_GET_POWER_MODE,
    AR6000_XIOCTRL_WMI_SET_WLAN_STATE,
    AR6000_XIOCTL_WMI_GET_ROAM_DATA,
    AR6000_XIOCTL_WMI_SETRETRYLIMITS,
    AR6000_XIOCTL_TCMD_CONT_TX,
    AR6000_XIOCTL_TCMD_CONT_RX,
    AR6000_XIOCTL_TCMD_PM,  /* 40 */
    AR6000_XIOCTL_WMI_STARTSCAN,
    AR6000_XIOCTL_WMI_SETFIXRATES,
    AR6000_XIOCTL_WMI_GETFIXRATES,
    AR6000_XIOCTL_WMI_SET_RSSITHRESHOLD,
    AR6000_XIOCTL_WMI_CLR_RSSISNR,                   
    AR6000_XIOCTL_WMI_SET_LQTHRESHOLD,               
    AR6000_XIOCTL_WMI_SET_RTS,
    AR6000_XIOCTL_WMI_SET_LPREAMBLE,
    AR6000_XIOCTL_WMI_SET_AUTHMODE,
    AR6000_XIOCTL_WMI_SET_REASSOCMODE, /* 50 */
    AR6000_XIOCTL_WMI_SET_WMM,
    AR6000_XIOCTL_WMI_SET_HB_CHALLENGE_RESP_PARAMS,
    AR6000_XIOCTL_WMI_GET_HB_CHALLENGE_RESP,
    AR6000_XIOCTL_WMI_GET_RD,
    AR6000_XIOCTL_DIAG_READ,
    AR6000_XIOCTL_DIAG_WRITE,
    AR6000_XIOCTL_WMI_SET_TXOP,
    AR6000_XIOCTL_USER_SETKEYS,
    AR6000_XIOCTL_WMI_SET_KEEPALIVE,
    AR6000_XIOCTL_WMI_GET_KEEPALIVE, /* 60 */
    AR6000_XIOCTL_BMI_ROMPATCH_INSTALL,
    AR6000_XIOCTL_BMI_ROMPATCH_UNINSTALL,
    AR6000_XIOCTL_BMI_ROMPATCH_ACTIVATE,
    AR6000_XIOCTL_BMI_ROMPATCH_DEACTIVATE,
    AR6000_XIOCTL_WMI_SET_APPIE,
    AR6000_XIOCTL_WMI_SET_MGMT_FRM_RX_FILTER,
    AR6000_XIOCTL_DBGLOG_CFG_MODULE,
    AR6000_XIOCTL_DBGLOG_GET_DEBUG_LOGS,
    AR6000_XIOCTL_WMI_SET_WSC_STATUS = 70,  /* 70 */
    AR6000_XIOCTL_WMI_SET_BT_STATUS,
    AR6000_XIOCTL_WMI_SET_BT_PARAMS,
    AR6000_XIOCTL_WMI_SET_HOST_SLEEP_MODE,
    AR6000_XIOCTL_WMI_SET_WOW_MODE,
    AR6000_XIOCTL_WMI_GET_WOW_LIST,
    AR6000_XIOCTL_WMI_ADD_WOW_PATTERN,
    AR6000_XIOCTL_WMI_DEL_WOW_PATTERN,
    AR6000_XIOCTL_TARGET_INFO,
    AR6000_XIOCTL_DUMP_HTC_CREDIT_STATE,
    AR6000_XIOCTL_TRAFFIC_ACTIVITY_CHANGE,  /* 80 */
    AR6000_XIOCTL_WMI_SET_CONNECT_CTRL_FLAGS,
    AR6000_XIOCTL_WMI_SET_AKMP_PARAMS,
    AR6000_XIOCTL_WMI_GET_PMKID_LIST,
    AR6000_XIOCTL_WMI_SET_PMKID_LIST,
    AR6000_XIOCTL_WMI_SET_PARAMS,
    AR6000_XIOCTL_WMI_SET_MCAST_FILTER,
    AR6000_XIOCTL_WMI_DEL_MCAST_FILTER,
    AR6000_XIOCTL_UNUSED90 = 90,  /* 90 */
    AR6000_XIOCTL_BMI_LZ_STREAM_START,
    AR6000_XIOCTL_BMI_LZ_DATA,
    AR6000_XIOCTL_PROF_CFG,
    AR6000_XIOCTL_PROF_ADDR_SET,
    AR6000_XIOCTL_PROF_START,
    AR6000_XIOCTL_PROF_STOP,
    AR6000_XIOCTL_PROF_COUNT_GET,
    AR6000_XIOCTL_WMI_ABORT_SCAN,
    AR6000_XIOCTL_AP_GET_STA_LIST,
    AR6000_XIOCTL_AP_HIDDEN_SSID, /* 100 */
    AR6000_XIOCTL_AP_SET_NUM_STA,
    AR6000_XIOCTL_AP_SET_ACL_MAC,
    AR6000_XIOCTL_AP_GET_ACL_LIST,
    AR6000_XIOCTL_AP_COMMIT_CONFIG,
    IEEE80211_IOCTL_GETWPAIE,
    AR6000_XIOCTL_AP_CONN_INACT_TIME,
    AR6000_XIOCTL_AP_PROT_SCAN_TIME,
    AR6000_XIOCTL_AP_SET_COUNTRY,
    AR6000_XIOCTL_AP_SET_DTIM,
    AR6000_XIOCTL_WMI_TARGET_EVENT_REPORT, /* 110 */
    AR6000_XIOCTL_SET_IP,
    AR6000_XIOCTL_AP_SET_ACL_POLICY,
    AR6000_XIOCTL_AP_CTRL_BSS_COMM,
    AR6000_XIOCTL_DUMP_MODULE_DEBUG_INFO,
    AR6000_XIOCTL_MODULE_DEBUG_SET_MASK,
    AR6000_XIOCTL_MODULE_DEBUG_GET_MASK,
    AR6000_XIOCTL_DUMP_RCV_AGGR_STATS,
    AR6000_XIOCTL_SET_HT_CAP,
    AR6000_XIOCTL_SET_HT_OP,
    AR6000_XIOCTL_AP_GET_STAT, /* 120 */
    AR6000_XIOCTL_SET_TX_SELECT_RATES,
    AR6000_XIOCTL_SETUP_AGGR,
    AR6000_XIOCTL_ALLOW_AGGR,
    AR6000_XIOCTL_AP_GET_HIDDEN_SSID,
    AR6000_XIOCTL_AP_GET_COUNTRY,
    AR6000_XIOCTL_AP_GET_WMODE,
    AR6000_XIOCTL_AP_GET_DTIM,
    AR6000_XIOCTL_AP_GET_BINTVL,
    AR6000_XIOCTL_AP_GET_RTS,
    AR6000_XIOCTL_DELE_AGGR, /* 130 */
    AR6000_XIOCTL_FETCH_TARGET_REGS,
    AR6000_XIOCTL_HCI_CMD,
    AR6000_XIOCTL_ACL_DATA,
    AR6000_XIOCTL_WLAN_CONN_PRECEDENCE,
    AR6000_XIOCTL_AP_SET_11BG_RATESET,
    AR6000_XIOCTL_WMI_SET_AP_PS,
    AR6000_XIOCTL_WMI_MCAST_FILTER,
    AR6000_XIOCTL_WMI_SET_BTCOEX_FE_ANT,
    AR6000_XIOCTL_WMI_SET_BTCOEX_COLOCATED_BT_DEV,
    AR6000_XIOCTL_WMI_SET_BTCOEX_BTINQUIRY_PAGE_CONFIG, /* 140 */
    AR6000_XIOCTL_WMI_SET_BTCOEX_SCO_CONFIG,
    AR6000_XIOCTL_WMI_SET_BTCOEX_A2DP_CONFIG,
    AR6000_XIOCTL_WMI_SET_BTCOEX_ACLCOEX_CONFIG,
    AR6000_XIOCTL_WMI_SET_BTCOEX_DEBUG,
    AR6000_XIOCTL_WMI_SET_BT_OPERATING_STATUS,
    AR6000_XIOCTL_WMI_GET_BTCOEX_CONFIG,
    AR6000_XIOCTL_WMI_GET_BTCOEX_STATS,
    AR6000_XIOCTL_WMI_SET_QOS_SUPP,
    AR6000_XIOCTL_AP_SET_DFS,
    AR6000_XIOCTL_WMI_P2P_DISCOVER, /* 150 */
    AR6000_XIOCTL_WMI_P2P_STOP_FIND,
    AR6000_XIOCTL_WMI_P2P_CANCEL,
    AR6000_XIOCTL_WMI_P2P_LISTEN,
    AR6000_XIOCTL_WMI_P2P_GO_NEG,
    AR6000_XIOCTL_WMI_P2P_AUTH_GO_NEG,
    AR6000_XIOCTL_WMI_P2P_REJECT,
    AR6000_XIOCTL_WMI_P2P_CONFIG,
    AR6000_XIOCTL_WMI_WPS_CONFIG,
    AR6000_XIOCTL_WMI_P2P_FINDNODE,
    AR6000_XIOCTL_WMI_P2P_GRP_INIT, /* 160 */
    AR6000_XIOCTL_WMI_P2P_GRP_FORMATION_DONE,
    AR6000_XIOCTL_WMI_P2P_INVITE,
    AR6000_XIOCTL_WMI_P2P_PROV_DISC,
    AR6000_XIOCTL_WMI_P2P_SET,
    AR6000_XIOCTL_WMI_P2P_PEER,
    AR6000_XIOCTL_WMI_P2P_FLUSH,
    AR6000_XIOCTL_WMI_GET_GO_PARAMS,
    AR6000_XIOCTL_P2P_AUTH_INVITE,
    AR6000_XIOCTL_WMI_P2P_GET_IF_ADDR,
    AR6000_XIOCTL_WMI_P2P_GET_DEV_ADDR, /* 170 */
    AR6000_XIOCTL_WMI_P2P_SDPD_TX_CMD,
    AR6000_XIOTCL_WMI_P2P_SD_CANCEL_REQUEST,
    AR6000_XIOCTL_SET_BT_HW_POWER_STATE,
    AR6000_XIOCTL_GET_BT_HW_POWER_STATE,
    AR6000_XIOCTL_GET_WLAN_SLEEP_STATE,
    AR6000_XIOCTL_WMI_SET_TX_SGI_PARAM,
    AR6000_XIOCTL_WMI_ENABLE_WAC_PARAM,
    AR6000_XIOCTL_WAC_SCAN_REPLY,
    AR6000_XIOCTL_WMI_WAC_CTRL_REQ,
    AR6000_XIOCTL_WMI_SET_WPA_OFFLOAD_STATE, /* 180 */
    AR6000_XIOCTL_WMI_SET_PASSPHRASE,
    AR6000_XIOCTL_BMI_NVRAM_PROCESS,
    AR6000_XIOCTL_WMI_SET_DIVERSITY_PARAM,
    AR6000_XIOCTL_WMI_FORCE_ASSERT,
    AR6000_XIOCTL_WMI_ENABLE_PKTLOG,
    AR6000_XIOCTL_WMI_DISABLE_PKTLOG,
    AR6000_XIOCTL_WMI_GET_PKTLOG,
    AR6000_XIOCTL_AP_ACS_POLICY,
    AR6000_XIOCTL_TCMD_CMDS,
    AR6000_XIOCTL_WMI_SET_EXCESS_TX_RETRY_THRES, /* 190 */
    AR6000_XIOCTL_AP_GET_NUM_STA,
    AR6000_XIOCTL_SUSPEND_DRIVER,
    AR6000_XIOCTL_RESUME_DRIVER,
    AR6000_XIOCTL_GET_SUBMODE,
    AR6000_XIOCTL_WMI_AP_SET_APSD,
    AR6000_XIOCTL_TCMD_SETREG, 
    AR6000_XIOCTL_GET_HT_CAP,
    AR6000_XIOCTL_WMI_GET_P2P_IE, 
    AR6000_XIOCTL_WMI_P2P_GET_OWN_INFO,
    AR6000_XIOCTL_WMI_LTE_FREQ,   /* 200 */
    AR6000_XIOCTL_WMI_AP_IDLE_CLOSE_TIME,
    AR6000_XIOCTL_WMI_SEND_FRAME,
    AR6000_XIOCTL_WMI_GET_WMM,
} XTND_IOCLTS; 



///*                         ====BMI Extended Ioctls====                        */
//
//#define AR6000_XIOCTL_BMI_DONE                                  1
///*
// * arguments:
// *   UINT32 cmd (AR6000_XIOCTL_BMI_DONE)
// * uses: BMI_DONE
// */
//
//#define AR6000_XIOCTL_BMI_READ_MEMORY                           2
///*
// * arguments:
// *   union {
// *     struct {
// *       UINT32 cmd (AR6000_XIOCTL_BMI_READ_MEMORY)
// *       UINT32 address
// *       UINT32 length
// *     }
// *     char results[length]
// *   }
// * uses: BMI_READ_MEMORY
// */
//
//#define AR6000_XIOCTL_BMI_WRITE_MEMORY                          3
///*
// * arguments:
// *   UINT32 cmd (AR6000_XIOCTL_BMI_WRITE_MEMORY)
// *   UINT32 address
// *   UINT32 length
// *   char data[length]
// * uses: BMI_WRITE_MEMORY
// */
//
//#define AR6000_XIOCTL_BMI_EXECUTE                               4
///*
// * arguments:
// *   UINT32 cmd (AR6000_XIOCTL_BMI_EXECUTE)
// *   UINT32 TargetAddress
// *   UINT32 parameter
// * uses: BMI_EXECUTE
// */
//
//#define AR6000_XIOCTL_BMI_SET_APP_START                         5
///*
// * arguments:
// *   UINT32 cmd (AR6000_XIOCTL_BMI_SET_APP_START)
// *   UINT32 TargetAddress
// * uses: BMI_SET_APP_START
// */
//
//#define AR6000_XIOCTL_BMI_READ_SOC_REGISTER                     6
///*
// * arguments:
// *   union {
// *     struct {
// *       UINT32 cmd (AR6000_XIOCTL_BMI_READ_SOC_REGISTER)
// *       UINT32 TargetAddress, 32-bit aligned
// *     }
// *     UINT32 result
// *   }
// * uses: BMI_READ_SOC_REGISTER
// */
//
//#define AR6000_XIOCTL_BMI_WRITE_SOC_REGISTER                    7
///*
// * arguments:
// *     struct {
// *       UINT32 cmd (AR6000_XIOCTL_BMI_WRITE_SOC_REGISTER)
// *       UINT32 TargetAddress, 32-bit aligned
// *       UINT32 newValue
// *     }
// * uses: BMI_WRITE_SOC_REGISTER
// */
//
//#define AR6000_XIOCTL_BMI_TEST                                  8
///*
// * arguments:
// *   UINT32 cmd (AR6000_XIOCTL_BMI_TEST)
// *   UINT32 address
// *   UINT32 length
// *   UINT32 count
// */
//
//
//
///* Historical Host-side DataSet support */
//#define AR6000_XIOCTL_UNUSED9                                   9
//#define AR6000_XIOCTL_UNUSED10                                  10
//#define AR6000_XIOCTL_UNUSED11                                  11
//
///*                      ====Misc Extended Ioctls====                          */
//
//#define AR6000_XIOCTL_FORCE_TARGET_RESET                        12
///*
// * arguments:
// *   UINT32 cmd (AR6000_XIOCTL_FORCE_TARGET_RESET)
// */
//
//
//#ifdef HTC_RAW_INTERFACE
///* HTC Raw Interface Ioctls */
//#define AR6000_XIOCTL_HTC_RAW_OPEN                              13
///*
// * arguments:
// *   UINT32 cmd (AR6000_XIOCTL_HTC_RAW_OPEN)
// */
//
//#define AR6000_XIOCTL_HTC_RAW_CLOSE                             14
///*
// * arguments:
// *   UINT32 cmd (AR6000_XIOCTL_HTC_RAW_CLOSE)
// */
//
//#define AR6000_XIOCTL_HTC_RAW_READ                              15
///*
// * arguments:
// *   union {
// *     struct {
// *       UINT32 cmd (AR6000_XIOCTL_HTC_RAW_READ)
// *       UINT32 mailboxID
// *       UINT32 length
// *     }
// *     results[length]
// *   }
// */
//
//#define AR6000_XIOCTL_HTC_RAW_WRITE                             16
///*
// * arguments:
// *   UINT32 cmd (AR6000_XIOCTL_HTC_RAW_WRITE)
// *   UINT32 mailboxID
// *   UINT32 length
// *   char buffer[length]
// */
//#endif /* HTC_RAW_INTERFACE */
//
//#define AR6000_XIOCTL_CHECK_TARGET_READY                        17
///*
// * arguments:
// *   UINT32 cmd (AR6000_XIOCTL_CHECK_TARGET_READY)
// */
//
//
//
///*                ====GPIO (General Purpose I/O) Extended Ioctls====          */
//
//#define AR6000_XIOCTL_GPIO_OUTPUT_SET                           18
///*
// * arguments:
// *   UINT32 cmd (AR6000_XIOCTL_GPIO_OUTPUT_SET)
// *   ar6000_gpio_output_set_cmd_s (see below)
// * uses: WMIX_GPIO_OUTPUT_SET_CMDID
// */
//
//#define AR6000_XIOCTL_GPIO_INPUT_GET                            19
///*
// * arguments:
// *   UINT32 cmd (AR6000_XIOCTL_GPIO_INPUT_GET)
// * uses: WMIX_GPIO_INPUT_GET_CMDID
// */
//
//#define AR6000_XIOCTL_GPIO_REGISTER_SET                         20
///*
// * arguments:
// *   UINT32 cmd (AR6000_XIOCTL_GPIO_REGISTER_SET)
// *   ar6000_gpio_register_cmd_s (see below)
// * uses: WMIX_GPIO_REGISTER_SET_CMDID
// */
//
//#define AR6000_XIOCTL_GPIO_REGISTER_GET                         21
///*
// * arguments:
// *   UINT32 cmd (AR6000_XIOCTL_GPIO_REGISTER_GET)
// *   ar6000_gpio_register_cmd_s (see below)
// * uses: WMIX_GPIO_REGISTER_GET_CMDID
// */
//
//#define AR6000_XIOCTL_GPIO_INTR_ACK                             22
///*
// * arguments:
// *   UINT32 cmd (AR6000_XIOCTL_GPIO_INTR_ACK)
// *   ar6000_cpio_intr_ack_cmd_s (see below)
// * uses: WMIX_GPIO_INTR_ACK_CMDID
// */
//
//#define AR6000_XIOCTL_GPIO_INTR_WAIT                            23
///*
// * arguments:
// *   UINT32 cmd (AR6000_XIOCTL_GPIO_INTR_WAIT)
// */
//
//
//
///*                    ====more wireless commands====                          */
//
//#define AR6000_XIOCTL_SET_ADHOC_BSSID                           24
///*
// * arguments:
// *   UINT32 cmd (AR6000_XIOCTL_SET_ADHOC_BSSID)
// *   WMI_SET_ADHOC_BSSID_CMD setAdHocBssidCmd (see include/wmi.h)
// */
//
//#define AR6000_XIOCTL_SET_OPT_MODE                              25
///*
// * arguments:
// *   UINT32 cmd (AR6000_XIOCTL_SET_OPT_MODE)
// *   WMI_SET_OPT_MODE_CMD setOptModeCmd (see include/wmi.h)
// * uses: WMI_SET_OPT_MODE_CMDID
// */
//
//#define AR6000_XIOCTL_OPT_SEND_FRAME                            26
///*
// * arguments:
// *   UINT32 cmd (AR6000_XIOCTL_OPT_SEND_FRAME)
// *   WMI_OPT_TX_FRAME_CMD optTxFrameCmd (see include/wmi.h)
// * uses: WMI_OPT_TX_FRAME_CMDID
// */
//
//#define AR6000_XIOCTL_SET_BEACON_INTVAL                         27
///*
// * arguments:
// *   UINT32 cmd (AR6000_XIOCTL_SET_BEACON_INTVAL)
// *   WMI_BEACON_INT_CMD beaconIntCmd (see include/wmi.h)
// * uses: WMI_SET_BEACON_INT_CMDID
// */
//
//
//#define IEEE80211_IOCTL_SETAUTHALG                              28
//
//
//#define AR6000_XIOCTL_SET_VOICE_PKT_SIZE                        29
///*
// * arguments:
// *   UINT32 cmd (AR6000_XIOCTL_SET_VOICE_PKT_SIZE)
// *   WMI_SET_VOICE_PKT_SIZE_CMD setVoicePktSizeCmd (see include/wmi.h)
// * uses: WMI_SET_VOICE_PKT_SIZE_CMDID
// */
//
//
//#define AR6000_XIOCTL_SET_MAX_SP                                30
///*
// * arguments:
// *   UINT32 cmd (AR6000_XIOCTL_SET_MAX_SP)
// *   WMI_SET_MAX_SP_LEN_CMD maxSPLen(see include/wmi.h)
// * uses: WMI_SET_MAX_SP_LEN_CMDID
// */
//
//#define AR6000_XIOCTL_WMI_GET_ROAM_TBL                          31
//
//#define AR6000_XIOCTL_WMI_SET_ROAM_CTRL                         32
//
//#define AR6000_XIOCTRL_WMI_SET_POWERSAVE_TIMERS                 33
//
//
///*
// * arguments:
// *   UINT32 cmd (AR6000_XIOCTRL_WMI_SET_POWERSAVE_TIMERS)
// *   WMI_SET_POWERSAVE_TIMERS_CMD powerSaveTimers(see include/wmi.h)
// *   WMI_SET_POWERSAVE_TIMERS_CMDID
// */
//
//#define AR6000_XIOCTRL_WMI_GET_POWER_MODE                        34
///*
// * arguments:
// *   UINT32 cmd (AR6000_XIOCTRL_WMI_GET_POWER_MODE)
// */
//
//#define AR6000_XIOCTRL_WMI_SET_WLAN_STATE                       35

typedef enum {
    WLAN_DISABLED,
    WLAN_ENABLED
} AR6000_WLAN_STATE;

///*
// * arguments:
// * enable/disable
// */
//
//#define AR6000_XIOCTL_WMI_GET_ROAM_DATA                         36
//
//#define AR6000_XIOCTL_WMI_SETRETRYLIMITS                37
///*
// * arguments:
// *   WMI_SET_RETRY_LIMITS_CMD ibssSetRetryLimitsCmd
// * uses: WMI_SET_RETRY_LIMITS_CMDID
// */
//
//#ifdef CONFIG_HOST_TCMD_SUPPORT
///*       ====extended commands for radio test ====                          */
//
//#define AR6000_XIOCTL_TCMD_CONT_TX                      38
///*
// * arguments:
// *   UINT32 cmd (AR6000_XIOCTL_TCMD_CONT_TX)
// *   WMI_TCMD_CONT_TX_CMD contTxCmd (see include/wmi.h)
// * uses: WMI_TCMD_CONT_TX_CMDID
// */
//
//#define AR6000_XIOCTL_TCMD_CONT_RX                      39
///*
// * arguments:
// *   UINT32 cmd (AR6000_XIOCTL_TCMD_CONT_RX)
// *   WMI_TCMD_CONT_RX_CMD rxCmd (see include/wmi.h)
// * uses: WMI_TCMD_CONT_RX_CMDID
// */
//
//#define AR6000_XIOCTL_TCMD_PM                           40
///*
// * arguments:
// *   UINT32 cmd (AR6000_XIOCTL_TCMD_PM)
// *   WMI_TCMD_PM_CMD pmCmd (see include/wmi.h)
// * uses: WMI_TCMD_PM_CMDID
// */
//
//#endif /* CONFIG_HOST_TCMD_SUPPORT */
//
//#define AR6000_XIOCTL_WMI_STARTSCAN                     41
///*
// * arguments:
// *   UINT32 cmd (AR6000_XIOCTL_WMI_STARTSCAN)
// *   UINT8  scanType
// *   UINT8  scanConnected
// *   A_BOOL forceFgScan
// * uses: WMI_START_SCAN_CMDID
// */
//
//#define AR6000_XIOCTL_WMI_SETFIXRATES                   42
//
//#define AR6000_XIOCTL_WMI_GETFIXRATES                   43
//
//
//#define AR6000_XIOCTL_WMI_SET_RSSITHRESHOLD             44
///*
// * arguments:
// *   WMI_RSSI_THRESHOLD_PARAMS_CMD thresholdParams (see include/wmi.h)
// * uses: WMI_RSSI_THRESHOLD_PARAMS_CMDID
// */
//
//#define AR6000_XIOCTL_WMI_CLR_RSSISNR                   45
///*
// * arguments:
// *   WMI_CLR_RSSISNR_CMD thresholdParams (see include/wmi.h)
// * uses: WMI_CLR_RSSISNR_CMDID
// */
//
//#define AR6000_XIOCTL_WMI_SET_LQTHRESHOLD               46
///*
// * arguments:
// *   WMI_LQ_THRESHOLD_PARAMS_CMD thresholdParams (see include/wmi.h)
// * uses: WMI_LQ_THRESHOLD_PARAMS_CMDID
// */
//
//#define AR6000_XIOCTL_WMI_SET_RTS                        47
///*
// * arguments:
// *   WMI_SET_RTS_MODE_CMD (see include/wmi.h)
// * uses: WMI_SET_RTS_MODE_CMDID
// */
//
//#define AR6000_XIOCTL_WMI_SET_LPREAMBLE                 48
//
//#define AR6000_XIOCTL_WMI_SET_AUTHMODE                  49
///*
// * arguments:
// *   UINT32 cmd (AR6000_XIOCTL_WMI_SET_AUTHMODE)
// *   UINT8  mode
// * uses: WMI_SET_RECONNECT_AUTH_MODE_CMDID
// */
//
//#define AR6000_XIOCTL_WMI_SET_REASSOCMODE               50
//
///*
// * arguments:
// *   UINT32 cmd (AR6000_XIOCTL_WMI_SET_WMM)
// *   UINT8  mode
// * uses: WMI_SET_WMM_CMDID
// */
//#define AR6000_XIOCTL_WMI_SET_WMM                       51
//
///*
// * arguments:
// * UINT32 cmd (AR6000_XIOCTL_WMI_SET_HB_CHALLENGE_RESP_PARAMS)
// * UINT32 frequency
// * UINT8  threshold
// */
//#define AR6000_XIOCTL_WMI_SET_HB_CHALLENGE_RESP_PARAMS  52
//
///*
// * arguments:
// * UINT32 cmd (AR6000_XIOCTL_WMI_GET_HB_CHALLENGE_RESP)
// * UINT32 cookie
// */
//#define AR6000_XIOCTL_WMI_GET_HB_CHALLENGE_RESP         53
//
///*
// * arguments:
// *   UINT32 cmd (AR6000_XIOCTL_WMI_GET_RD)
// *   UINT32 regDomain
// */
//#define AR6000_XIOCTL_WMI_GET_RD                        54
//
//#define AR6000_XIOCTL_DIAG_READ                         55
//
//#define AR6000_XIOCTL_DIAG_WRITE                        56
//
///*
// * arguments cmd (AR6000_XIOCTL_SET_TXOP)
// * WMI_TXOP_CFG  txopEnable
// */
//#define AR6000_XIOCTL_WMI_SET_TXOP                      57
//
//#ifdef USER_KEYS
///*
// * arguments:
// * UINT32 cmd (AR6000_XIOCTL_USER_SETKEYS)
// * UINT32 keyOpCtrl
// * uses AR6000_USER_SETKEYS_INFO
// */
//#define AR6000_XIOCTL_USER_SETKEYS                      58
//#endif /* USER_KEYS */
//
//#define AR6000_XIOCTL_WMI_SET_KEEPALIVE                 59
///*
// * arguments:
// *   UINT8 cmd (AR6000_XIOCTL_WMI_SET_KEEPALIVE)
// *   UINT8 keepaliveInterval
// * uses: WMI_SET_KEEPALIVE_CMDID
// */
//
//#define AR6000_XIOCTL_WMI_GET_KEEPALIVE                 60
///*
// * arguments:
// *   UINT8 cmd (AR6000_XIOCTL_WMI_GET_KEEPALIVE)
// *   UINT8 keepaliveInterval
// *   A_BOOL configured
// * uses: WMI_GET_KEEPALIVE_CMDID
// */
//
///*               ====ROM Patching Extended Ioctls====                       */
//
//#define AR6000_XIOCTL_BMI_ROMPATCH_INSTALL              61
///*
// * arguments:
// *     union {
// *       struct {
// *         UINT32 cmd (AR6000_XIOCTL_BMI_ROMPATCH_INSTALL)
// *         UINT32 ROM Address
// *         UINT32 RAM Address
// *         UINT32 number of bytes
// *         UINT32 activate? (0 or 1)
// *       }
// *       A_UINT32 resulting rompatch ID
// *     }
// * uses: BMI_ROMPATCH_INSTALL
// */
//
//#define AR6000_XIOCTL_BMI_ROMPATCH_UNINSTALL            62
///*
// * arguments:
// *     struct {
// *       UINT32 cmd (AR6000_XIOCTL_BMI_ROMPATCH_UNINSTALL)
// *       UINT32 rompatch ID
// *     }
// * uses: BMI_ROMPATCH_UNINSTALL
// */
//
//#define AR6000_XIOCTL_BMI_ROMPATCH_ACTIVATE             63
///*
// * arguments:
// *     struct {
// *       UINT32 cmd (AR6000_XIOCTL_BMI_ROMPATCH_ACTIVATE)
// *       UINT32 rompatch count
// *       UINT32 rompatch IDs[rompatch count]
// *     }
// * uses: BMI_ROMPATCH_ACTIVATE
// */
//
//#define AR6000_XIOCTL_BMI_ROMPATCH_DEACTIVATE           64
///*
// * arguments:
// *     struct {
// *       UINT32 cmd (AR6000_XIOCTL_BMI_ROMPATCH_DEACTIVATE)
// *       UINT32 rompatch count
// *       UINT32 rompatch IDs[rompatch count]
// *     }
// * uses: BMI_ROMPATCH_DEACTIVATE
// */
//
//#define AR6000_XIOCTL_WMI_SET_APPIE             65
///*
// * arguments:
// *      struct {
// *          UINT32 cmd (AR6000_XIOCTL_WMI_SET_APPIE)
// *          UINT32  app_frmtype;
// *          UINT32  app_buflen;
// *          UINT8   app_buf[];
// *      }
// */
//#define AR6000_XIOCTL_WMI_SET_MGMT_FRM_RX_FILTER    66
///*
// * arguments:
// *      A_UINT32 filter_type;
// */
//
//#define AR6000_XIOCTL_DBGLOG_CFG_MODULE             67
//
//#define AR6000_XIOCTL_DBGLOG_GET_DEBUG_LOGS         68
//
//#define AR6000_XIOCTL_WMI_SET_WSC_STATUS            70
///*
// * arguments:
// *      A_UINT32 wsc_status;
// *            (WSC_REG_INACTIVE or WSC_REG_ACTIVE)
// */
//
///*
// * arguments:
// *      struct {
// *          A_UINT8 streamType;
// *          A_UINT8 status;
// *      }
// * uses: WMI_SET_BT_STATUS_CMDID
// */
//#define AR6000_XIOCTL_WMI_SET_BT_STATUS             71
//
///*
// * arguments:
// *      struct {
// *           A_UINT8 paramType;
// *           union {
// *               A_UINT8 noSCOPkts;
// *               BT_PARAMS_A2DP a2dpParams;
// *               BT_COEX_REGS regs;
// *           };
// *      }
// * uses: WMI_SET_BT_PARAM_CMDID
// */
//#define AR6000_XIOCTL_WMI_SET_BT_PARAMS             72
//
//#define AR6000_XIOCTL_WMI_SET_HOST_SLEEP_MODE       73
//#define AR6000_XIOCTL_WMI_SET_WOW_MODE              74
//#define AR6000_XIOCTL_WMI_GET_WOW_LIST              75
//#define AR6000_XIOCTL_WMI_ADD_WOW_PATTERN           76
//#define AR6000_XIOCTL_WMI_DEL_WOW_PATTERN           77
//
//
//
//#define AR6000_XIOCTL_TARGET_INFO                   78
///*
// * arguments:
// *   UINT32 cmd (AR6000_XIOCTL_TARGET_INFO)
// *   A_UINT32 TargetVersion (returned)
// *   A_UINT32 TargetType    (returned)
// * (See also bmi_msg.h target_ver and target_type)
// */
//
//#define AR6000_XIOCTL_DUMP_HTC_CREDIT_STATE         79
///*
// * arguments:
// *      none
// */
//
//#define AR6000_XIOCTL_TRAFFIC_ACTIVITY_CHANGE       80
///*
// * This ioctl is used to emulate traffic activity
// * timeouts.  Activity/inactivity will trigger the driver
// * to re-balance credits.
// *
// * arguments:
// *      ar6000_traffic_activity_change
// */
//
//#define AR6000_XIOCTL_WMI_SET_CONNECT_CTRL_FLAGS    81
///*
// * This ioctl is used to set the connect control flags
// *
// * arguments:
// *      A_UINT32 connectCtrlFlags
// */
//
//#define AR6000_XIOCTL_WMI_SET_AKMP_PARAMS              82
///*
// * This IOCTL sets any Authentication,Key Management and Protection
// * related parameters. This is used along with the information set in
// * Connect Command.
// * Currently this enables Multiple PMKIDs to an AP.
// *
// * arguments:
// *      struct {
// *          A_UINT32    akmpInfo;
// *      }
// * uses: WMI_SET_AKMP_PARAMS_CMD
// */
//
//#define AR6000_XIOCTL_WMI_GET_PMKID_LIST            83
//
//#define AR6000_XIOCTL_WMI_SET_PMKID_LIST            84
///*
// * This IOCTL is used to set a list of PMKIDs. This list of
// * PMKIDs is used in the [Re]AssocReq Frame. This list is used
// * only if the MultiPMKID option is enabled via the
// * AR6000_XIOCTL_WMI_SET_AKMP_PARAMS  IOCTL.
// *
// * arguments:
// *      struct {
// *          A_UINT32    numPMKID;
// *          WMI_PMKID   pmkidList[WMI_MAX_PMKID_CACHE];
// *      }
// * uses: WMI_SET_PMKIDLIST_CMD
// */
//
//#define AR6000_XIOCTL_WMI_SET_PARAMS                85
//#define AR6000_XIOCTL_WMI_SET_MCAST_FILTER     86
//#define AR6000_XIOCTL_WMI_DEL_MCAST_FILTER     87
//
//
///* Historical DSETPATCH support for INI patches */
//#define AR6000_XIOCTL_UNUSED90                      90
//
//
///* Support LZ-compressed firmware download */
//#define AR6000_XIOCTL_BMI_LZ_STREAM_START           91
///*
// * arguments:
// *   UINT32 cmd (AR6000_XIOCTL_BMI_LZ_STREAM_START)
// *   UINT32 address
// * uses: BMI_LZ_STREAM_START
// */
//
//#define AR6000_XIOCTL_BMI_LZ_DATA                   92
///*
// * arguments:
// *   UINT32 cmd (AR6000_XIOCTL_BMI_LZ_DATA)
// *   UINT32 length
// *   char data[length]
// * uses: BMI_LZ_DATA
// */
//
//#define AR6000_XIOCTL_PROF_CFG                      93
///*
// * arguments:
// *   A_UINT32 period
// *   A_UINT32 nbins
// */
//
//#define AR6000_XIOCTL_PROF_ADDR_SET                 94
///*
// * arguments:
// *   A_UINT32 Target address
// */
//
//#define AR6000_XIOCTL_PROF_START                    95
//
//#define AR6000_XIOCTL_PROF_STOP                     96
//
//#define AR6000_XIOCTL_PROF_COUNT_GET                97
//
//#define AR6000_XIOCTL_WMI_ABORT_SCAN                98
//
///*
// * AP mode
// */
//#define AR6000_XIOCTL_AP_GET_STA_LIST               99
//
//#define AR6000_XIOCTL_AP_HIDDEN_SSID                100
//
//#define AR6000_XIOCTL_AP_SET_NUM_STA                101
//
//#define AR6000_XIOCTL_AP_SET_ACL_MAC                102
//
//#define AR6000_XIOCTL_AP_GET_ACL_LIST               103
//
//#define AR6000_XIOCTL_AP_COMMIT_CONFIG              104
//
//#define IEEE80211_IOCTL_GETWPAIE                    105
//
//#define AR6000_XIOCTL_AP_CONN_INACT_TIME            106
//
//#define AR6000_XIOCTL_AP_PROT_SCAN_TIME             107
//
//#define AR6000_XIOCTL_AP_SET_COUNTRY                108
//
//#define AR6000_XIOCTL_AP_SET_DTIM                   109
//
//
//
//
//#define AR6000_XIOCTL_WMI_TARGET_EVENT_REPORT       110
//
//#define AR6000_XIOCTL_SET_IP                        111
//
//#define AR6000_XIOCTL_AP_SET_ACL_POLICY             112
//
//#define AR6000_XIOCTL_AP_CTRL_BSS_COMM              113
//
//#define AR6000_XIOCTL_DUMP_MODULE_DEBUG_INFO        114
//
//#define AR6000_XIOCTL_MODULE_DEBUG_SET_MASK         115
//
//#define AR6000_XIOCTL_MODULE_DEBUG_GET_MASK         116
//
//#define AR6000_XIOCTL_DUMP_RCV_AGGR_STATS           117
//
//#define AR6000_XIOCTL_SET_HT_CAP                    118
//
//#define AR6000_XIOCTL_SET_HT_OP                     119
//
//#define AR6000_XIOCTL_AP_GET_STAT                   120
//
//#define AR6000_XIOCTL_SET_TX_SELECT_RATES           121
//
//#define AR6000_XIOCTL_SETUP_AGGR                    122
//
//#define AR6000_XIOCTL_ALLOW_AGGR                    123
//
//#define AR6000_XIOCTL_AP_GET_HIDDEN_SSID            124
//
//#define AR6000_XIOCTL_AP_GET_COUNTRY                125
//
//#define AR6000_XIOCTL_AP_GET_WMODE                  126
//
//#define AR6000_XIOCTL_AP_GET_DTIM                   127
//
//#define AR6000_XIOCTL_AP_GET_BINTVL                 128
//
//#define AR6000_XIOCTL_AP_GET_RTS                    129
//
//#define AR6000_XIOCTL_DELE_AGGR                     130
//
//#define AR6000_XIOCTL_FETCH_TARGET_REGS             131
//
//#define AR6000_XIOCTL_HCI_CMD                       132
//
//#define AR6000_XIOCTL_ACL_DATA                      133
//
//#define AR6000_XIOCTL_WLAN_CONN_PRECEDENCE          134
//
//#define AR6000_XIOCTL_AP_SET_11BG_RATESET           135
//
//#define AR6000_XIOCTL_WMI_SET_AP_PS                 136
//
//#define AR6000_XIOCTL_WMI_MCAST_FILTER              137
//
//#define AR6000_XIOCTL_WMI_SET_BTCOEX_FE_ANT                 138
//
//#define AR6000_XIOCTL_WMI_SET_BTCOEX_COLOCATED_BT_DEV           139
//
//#define AR6000_XIOCTL_WMI_SET_BTCOEX_BTINQUIRY_PAGE_CONFIG  140
//
//#define AR6000_XIOCTL_WMI_SET_BTCOEX_SCO_CONFIG             141
//
//#define AR6000_XIOCTL_WMI_SET_BTCOEX_A2DP_CONFIG                142
//
//#define AR6000_XIOCTL_WMI_SET_BTCOEX_ACLCOEX_CONFIG         143
//
//#define AR6000_XIOCTL_WMI_SET_BTCOEX_DEBUG                      144
//
//#define AR6000_XIOCTL_WMI_SET_BT_OPERATING_STATUS               145
//
//#define AR6000_XIOCTL_WMI_GET_BTCOEX_CONFIG                 146
//
//#define AR6000_XIOCTL_WMI_GET_BTCOEX_STATS                      147
///*
// * arguments:
// *   UINT32 cmd (AR6000_XIOCTL_WMI_SET_QOS_SUPP)
// *   UINT8  mode
// * uses: WMI_SET_QOS_SUPP_CMDID
// */
//#define AR6000_XIOCTL_WMI_SET_QOS_SUPP                  148 
//
//#define AR6000_XIOCTL_AP_SET_DFS                        149
//
//#ifdef P2P
//#define AR6000_XIOCTL_WMI_P2P_DISCOVER            150
//#define AR6000_XIOCTL_WMI_P2P_LISTEN              151
//#define AR6000_XIOCTL_WMI_P2P_GO_NEG              152
//#define AR6000_XIOCTL_WMI_P2P_CONFIG              153
//#define AR6000_XIOCTL_WMI_WPS_CONFIG              154
//#define AR6000_XIOCTL_WMI_P2P_FINDNODE            155
//#endif
//#define AR6000_XIOCTL_SET_BT_HW_POWER_STATE             156 
//#define AR6000_XIOCTL_GET_BT_HW_POWER_STATE             157 
//#define AR6000_XIOCTL_GET_WLAN_SLEEP_STATE              158
//#define AR6000_XIOCTL_WMI_SET_TX_SGI_PARAM              159
///*
// * arguments:
// *   WMI_AP_PS_CMD apPsCmd
// * uses: WMI_AP_PS_CMDID
// */
//
//
//// WAC
//#define AR6000_XIOCTL_WMI_ENABLE_WAC_PARAM              160
//
//#define AR6000_XIOCTL_WAC_SCAN_REPLY                    161
//
//#define AR6000_XIOCTL_WMI_WAC_CTRL_REQ                  162
//
//#define AR6000_XIOCTL_WMI_SET_WPA_OFFLOAD_STATE         163
//
//#define AR6000_XIOCTL_WMI_SET_PASSPHRASE                164
//
//#define AR6000_XIOCTL_BMI_NVRAM_PROCESS                 165
//
//#define AR6000_XIOCTL_AP_ACS_POLICY                     166
//
///*
// * arguments:
// *   UINT32 cmd (AR6000_XIOCTL_BMI_NVRAM_PROCESS)
// *   UINT8  name[BMI_NVRAM_SEG_NAME_SZ]
// * uses: BMI_NVRAM_PROCESS
// */
//
//
//#ifdef CONFIG_HOST_TCMD_SUPPORT
///*       ====additional extended commands for radio test ====                          */
//
//#define AR6000_XIOCTL_TCMD_CMDS                          167
///*
// * arguments:
// *   UINT32 cmd (AR6000_XIOCTL_TCMD_CMDS)
// *   WMI_TCMD_CMDS_CMD cmdsCmd (see include/wmi.h)
// * uses: WMI_TCMD_CMDS_CMDID
// */
//
//#endif //ifdef CONFIG_HOST_TCMD_SUPPORT
//
//#define AR6000_XIOCTL_WMI_SET_DIVERSITY_PARAM           168
//
//#define AR6000_XIOCTL_WMI_FORCE_ASSERT                  169
//
//#define AR6000_XIOCTL_WMI_SET_EXCESS_TX_RETRY_THRES     170
//
//#define AR6000_XIOCTL_AP_GET_NUM_STA                    171
//
//#define AR6000_XIOCTL_SUSPEND_DRIVER                    172
//
//#define AR6000_XIOCTL_RESUME_DRIVER                     173

/* used by AR6000_IOCTL_WMI_GETREV */
struct ar6000_version {
    A_UINT32        host_ver;
    A_UINT32        target_ver;
    A_UINT32        wlan_ver;
    A_UINT32        abi_ver;
    A_UINT32        targetconf_ver;
};

/* used by AR6000_IOCTL_WMI_GET_QOS_QUEUE */
struct ar6000_queuereq {
    A_UINT8         trafficClass;
    A_UINT16        activeTsids;
};

/* used by AR6000_IOCTL_WMI_GET_TARGET_STATS */
typedef struct targetStats_t {
    A_UINT64    tx_packets;
    A_UINT64    tx_bytes;
    A_UINT64    tx_unicast_pkts;
    A_UINT64    tx_unicast_bytes;
    A_UINT64    tx_multicast_pkts;
    A_UINT64    tx_multicast_bytes;
    A_UINT64    tx_broadcast_pkts;
    A_UINT64    tx_broadcast_bytes;
    A_UINT64    tx_rts_success_cnt;
    A_UINT64    tx_packet_per_ac[4];

    A_UINT64    tx_errors;
    A_UINT64    tx_failed_cnt;
    A_UINT64    tx_retry_cnt;
    A_UINT64    tx_mult_retry_cnt;
    A_UINT64    tx_rts_fail_cnt;

    A_UINT64    rx_packets;
    A_UINT64    rx_bytes;
    A_UINT64    rx_unicast_pkts;
    A_UINT64    rx_unicast_bytes;
    A_UINT64    rx_multicast_pkts;
    A_UINT64    rx_multicast_bytes;
    A_UINT64    rx_broadcast_pkts;
    A_UINT64    rx_broadcast_bytes;
    A_UINT64    rx_fragment_pkt;

    A_UINT64    rx_errors;
    A_UINT64    rx_crcerr;
    A_UINT64    rx_key_cache_miss;
    A_UINT64    rx_decrypt_err;
    A_UINT64    rx_duplicate_frames;

    A_UINT64    tkip_local_mic_failure;
    A_UINT64    tkip_counter_measures_invoked;
    A_UINT64    tkip_replays;
    A_UINT64    tkip_format_errors;
    A_UINT64    ccmp_format_errors;
    A_UINT64    ccmp_replays;

    A_UINT64    power_save_failure_cnt;

    A_UINT64    cs_bmiss_cnt;
    A_UINT64    cs_lowRssi_cnt;
    A_UINT64    cs_connect_cnt;
    A_UINT64    cs_disconnect_cnt;

    A_INT32     tx_unicast_rate;
    A_INT32     rx_unicast_rate;

    A_UINT32    lq_val;

    A_UINT32    wow_num_pkts_dropped;
    A_UINT16    wow_num_events_discarded;

    A_INT16     noise_floor_calibation;
    A_INT16     cs_rssi;
    A_INT16     cs_aveBeacon_rssi;
    A_UINT8     cs_aveBeacon_snr;
    A_UINT8     cs_lastRoam_msec;
    A_UINT8     cs_snr;

    A_UINT8     wow_num_host_pkt_wakeups;
    A_UINT8     wow_num_host_event_wakeups;

    A_UINT32   arp_received;
    A_UINT32   arp_matched;
    A_UINT32   arp_replied;
}TARGET_STATS;

typedef struct targetStats_cmd_t {
    TARGET_STATS targetStats;
    int clearStats;
} TARGET_STATS_CMD;

/* used by AR6000_XIOCTL_USER_SETKEYS */

/*
 * Setting this bit to 1 doesnot initialize the RSC on the firmware
 */
#define AR6000_XIOCTL_USER_SETKEYS_RSC_CTRL    1
#define AR6000_USER_SETKEYS_RSC_UNCHANGED     0x00000002

typedef struct {
    A_UINT32  keyOpCtrl;  /* Bit Map of Key Mgmt Ctrl Flags */
} AR6000_USER_SETKEYS_INFO;


/* used by AR6000_XIOCTL_GPIO_OUTPUT_SET */
struct ar6000_gpio_output_set_cmd_s {
    A_UINT32 set_mask;
    A_UINT32 clear_mask;
    A_UINT32 enable_mask;
    A_UINT32 disable_mask;
};

/*
 * used by AR6000_XIOCTL_GPIO_REGISTER_GET and AR6000_XIOCTL_GPIO_REGISTER_SET
 */
struct ar6000_gpio_register_cmd_s {
    A_UINT32 gpioreg_id;
    A_UINT32 value;
};

/* used by AR6000_XIOCTL_GPIO_INTR_ACK */
struct ar6000_gpio_intr_ack_cmd_s {
    A_UINT32 ack_mask;
};

/* used by AR6000_XIOCTL_GPIO_INTR_WAIT */
struct ar6000_gpio_intr_wait_cmd_s {
    A_UINT32 intr_mask;
    A_UINT32 input_values;
};

/* used by the AR6000_XIOCTL_DBGLOG_CFG_MODULE */
typedef struct ar6000_dbglog_module_config_s {
    A_UINT32 valid;
    A_UINT16 mmask;
    A_UINT16 tsr;
    A_BOOL   rep;
    A_UINT16 size;
} DBGLOG_MODULE_CONFIG;

typedef struct user_rssi_thold_t {
    A_INT16     tag;
    A_INT16     rssi;
} USER_RSSI_THOLD;

typedef struct user_rssi_params_t {
    A_UINT8            weight;
    A_UINT32           pollTime;
    USER_RSSI_THOLD    tholds[12];
} USER_RSSI_PARAMS;

typedef struct ar6000_get_btcoex_config_cmd_t{
    A_UINT32 btProfileType;
    A_UINT32 linkId;
 }AR6000_GET_BTCOEX_CONFIG_CMD;

typedef struct ar6000_btcoex_config_t {
    AR6000_GET_BTCOEX_CONFIG_CMD  configCmd;
    A_UINT32 * configEvent;
} AR6000_BTCOEX_CONFIG;

typedef struct ar6000_btcoex_stats_t {
    A_UINT32 * statsEvent;
 }AR6000_BTCOEX_STATS;
/*
 * Host driver may have some config parameters. Typically, these
 * config params are one time config parameters. These could
 * correspond to any of the underlying modules. Host driver exposes
 * an api for the underlying modules to get this config.
 */
#define AR6000_DRIVER_CFG_BASE                  0x8000

/* Should driver perform wlan node caching? */
#define AR6000_DRIVER_CFG_GET_WLANNODECACHING   0x8001
/*Should we log raw WMI msgs */
#define AR6000_DRIVER_CFG_LOG_RAW_WMI_MSGS      0x8002

/* used by AR6000_XIOCTL_DIAG_READ & AR6000_XIOCTL_DIAG_WRITE */
struct ar6000_diag_window_cmd_s {
    unsigned int addr;
    unsigned int value;
};


struct ar6000_traffic_activity_change {
    A_UINT32    StreamID;   /* stream ID to indicate activity change */
    A_UINT32    Active;     /* active (1) or inactive (0) */
};

/* Used with AR6000_XIOCTL_PROF_COUNT_GET */
struct prof_count_s {
    A_UINT32    addr;       /* bin start address */
    A_UINT32    count;      /* hit count */
};


/* used by AR6000_XIOCTL_MODULE_DEBUG_SET_MASK */
/*         AR6000_XIOCTL_MODULE_DEBUG_GET_MASK */
/*         AR6000_XIOCTL_DUMP_MODULE_DEBUG_INFO */
struct drv_debug_module_s {
    A_CHAR      modulename[128];   /* name of module */
    A_UINT32    mask;              /* new mask to set .. or .. current mask */
};

/* used by AR6000_XIOCTL_P2P_AUTH_INVITE */
#define ATH_MAC_LEN 6
typedef PREPACK struct {
    A_UINT32 auth;
    A_UINT8 peer_addr[ATH_MAC_LEN];
}POSTPACK P2P_AUTH_INVITE_CMD;

/* All HCI related rx events are sent up to the host app
 * via a wmi event id. It can contain ACL data or HCI event, 
 * based on which it will be de-multiplexed.
 */
typedef enum {
    PAL_HCI_EVENT = 0,
    PAL_HCI_RX_DATA,
} WMI_PAL_EVENT_INFO;


#ifdef __cplusplus
}
#endif
#endif
