/*
* Copyright (c) 2012 Qualcomm Atheros, Inc..
* All Rights Reserved.
* Qualcomm Atheros Confidential and Proprietary.
*/

#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_DISABLE_HI_CHANNELS,
    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, /* 198 */
    AR6000_XIOCTL_WMI_P2P_GET_OWN_INFO,
} 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_DISABLE_HI_CHANNELS        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
