www.pudn.com > sdio-2.6.18-full.rar > athdrv.h
/*
* Copyright (c) 2004-2006 Atheros Communications Inc.
*
* Wireless Network driver for Atheros AR6001
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation;
*
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
*
* This file contains the definitions for the AR6000 linux driver.
*
*/
#ifndef _ATHDRV_H_
#define _ATHDRV_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_GETPARAM (SIOCIWFIRSTPRIV+1)
#define IEEE80211_IOCTL_SETKEY (SIOCIWFIRSTPRIV+2)
#define IEEE80211_IOCTL_SETWMMPARAMS (SIOCIWFIRSTPRIV+3)
#define IEEE80211_IOCTL_DELKEY (SIOCIWFIRSTPRIV+4)
#define IEEE80211_IOCTL_GETWMMPARAMS (SIOCIWFIRSTPRIV+5)
#define IEEE80211_IOCTL_SETMLME (SIOCIWFIRSTPRIV+6)
#define IEEE80211_IOCTL_SETOPTIE (SIOCIWFIRSTPRIV+6)
#define IEEE80211_IOCTL_GETOPTIE (SIOCIWFIRSTPRIV+7)
#define IEEE80211_IOCTL_ADDPMKID (SIOCIWFIRSTPRIV+8)
//#define IEEE80211_IOCTL_SETAUTHALG (SIOCIWFIRSTPRIV+10)
#define IEEE80211_IOCTL_LASTONE (SIOCIWFIRSTPRIV+9)
/* ====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+10)
/*
* arguments:
* ar6000_version *revision
*/
#define AR6000_IOCTL_WMI_SETPWR (SIOCIWFIRSTPRIV+11)
/*
* arguments:
* WMI_POWER_MODE_CMD pwrModeCmd (see include/wmi.h)
* uses: WMI_SET_POWER_MODE_CMDID
*/
#define AR6000_IOCTL_WMI_SETSCAN (SIOCIWFIRSTPRIV+12)
/*
* arguments:
* WMI_SCAN_PARAMS_CMD scanParams (see include/wmi.h)
* uses: WMI_SET_SCAN_PARAMS_CMDID
*/
#define AR6000_IOCTL_WMI_SETLISTENINT (SIOCIWFIRSTPRIV+13)
/*
* arguments:
* UINT32 listenInterval
* uses: WMI_SET_LISTEN_INT_CMDID
*/
#define AR6000_IOCTL_WMI_SETBSSFILTER (SIOCIWFIRSTPRIV+14)
/*
* 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_LINKTHRESHOLD (SIOCIWFIRSTPRIV+23)
/*
* arguments:
* WMI_RSSI_THRESHOLD_PARAMS_CMD thresholdParams (see include/wmi.h)
* uses: WMI_RSSI_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)
/* ====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
*/
/* ====DataSet Extended Ioctls==== */
#define AR6000_XIOCTL_WMI_DSET_WAIT_REQ 9
/*
* arguments:
* UINT32 cmd (AR6000_XIOCTL_WMI_DSET_WAIT_REQ)
*/
#define AR6000_XIOCTL_WMI_DSET_OPEN_REPLY 10
/*
* arguments:
* UINT32 cmd (AR6000_XIOCTL_WMI_DSET_OPEN_REPLY)
* dset_open_reply_t (see host/include/app/dset.h)
* uses: WMIX_DSETOPEN_REPLY_CMDID
*/
#define AR6000_XIOCTL_WMI_DSET_DATA_REPLY 11
/*
* arguments:
* UINT32 cmd (AR6000_XIOCTL_WMI_DSET_DATA_REPLY)
* dset_data_reply_t (see host/include/app/dset.h)
* uses: WMIX_DSETDATA_REPLY_CMDID
*/
#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_ADHOC_BEACON_INTVAL 27
/*
* arguments:
* UINT32 cmd (AR6000_XIOCTL_SET_ADHOC_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
/* used by AR6000_IOCTL_WMI_GETREV */
struct ar6000_version {
A_UINT32 host_ver;
A_UINT32 target_ver;
};
/* used by AR6000_IOCTL_WMI_GET_QOS_QUEUE */
struct ar6000_queuereq{
A_UINT8 trafficDirection;
A_UINT8 trafficClass;
A_INT8 queueNumber;
};
/* 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_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_INT16 noise_floor_calibation;
A_UINT64 cs_bmiss_cnt;
A_UINT64 cs_lowRssi_cnt;
A_UINT64 cs_connect_cnt;
A_UINT64 cs_disconnect_cnt;
A_UINT8 cs_aveBeacon_rssi;
A_UINT8 cs_lastRoam_msec;
}TARGET_STATS;
/* 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;
};
#ifdef __cplusplus
}
#endif
#endif /* _ATHDRV_H_ */