#ifndef _ATH_AH_H_
#define _ATH_AH_H_
#include "ah_osdep.h"
#define AH_BIG_ENDIAN 4321
#define AH_LITTLE_ENDIAN 1234
#if _BYTE_ORDER == _BIG_ENDIAN
#define AH_BYTE_ORDER AH_BIG_ENDIAN
#else
#define AH_BYTE_ORDER AH_LITTLE_ENDIAN
#endif
#define AH_MAX_CHAINS 3
#define AH_MIMO_MAX_EVM_PILOTS 6
#ifndef __ahdecl
#define __ahdecl
#endif
typedef enum {
HAL_OK = 0,
HAL_ENXIO = 1,
HAL_ENOMEM = 2,
HAL_EIO = 3,
HAL_EEMAGIC = 4,
HAL_EEVERSION = 5,
HAL_EELOCKED = 6,
HAL_EEBADSUM = 7,
HAL_EEREAD = 8,
HAL_EEBADMAC = 9,
HAL_EESIZE = 10,
HAL_EEWRITE = 11,
HAL_EINVAL = 12,
HAL_ENOTSUPP = 13,
HAL_ESELFTEST = 14,
HAL_EINPROGRESS = 15,
HAL_EEBADREG = 16,
HAL_EEBADCC = 17,
HAL_INV_PMODE = 18,
} HAL_STATUS;
typedef enum {
AH_FALSE = 0,
AH_TRUE = 1,
} HAL_BOOL;
typedef enum {
HAL_CAP_REG_DMN = 0,
HAL_CAP_CIPHER = 1,
HAL_CAP_TKIP_MIC = 2,
HAL_CAP_TKIP_SPLIT = 3,
HAL_CAP_PHYCOUNTERS = 4,
HAL_CAP_DIVERSITY = 5,
HAL_CAP_KEYCACHE_SIZE = 6,
HAL_CAP_NUM_TXQUEUES = 7,
HAL_CAP_VEOL = 9,
HAL_CAP_PSPOLL = 10,
HAL_CAP_DIAG = 11,
HAL_CAP_COMPRESSION = 12,
HAL_CAP_BURST = 13,
HAL_CAP_FASTFRAME = 14,
HAL_CAP_TXPOW = 15,
HAL_CAP_TPC = 16,
HAL_CAP_PHYDIAG = 17,
HAL_CAP_BSSIDMASK = 18,
HAL_CAP_MCAST_KEYSRCH = 19,
HAL_CAP_TSF_ADJUST = 20,
HAL_CAP_WME_TKIPMIC = 22,
HAL_CAP_RFSILENT = 25,
HAL_CAP_TPC_ACK = 26,
HAL_CAP_TPC_CTS = 27,
HAL_CAP_11D = 28,
HAL_CAP_PCIE_PS = 29,
HAL_CAP_HT = 30,
HAL_CAP_GTXTO = 31,
HAL_CAP_FAST_CC = 32,
HAL_CAP_TX_CHAINMASK = 33,
HAL_CAP_RX_CHAINMASK = 34,
HAL_CAP_NUM_GPIO_PINS = 36,
HAL_CAP_CST = 38,
HAL_CAP_RIFS_RX = 39,
HAL_CAP_RIFS_TX = 40,
HAL_CAP_FORCE_PPM = 41,
HAL_CAP_RTS_AGGR_LIMIT = 42,
HAL_CAP_4ADDR_AGGR = 43,
HAL_CAP_DFS_DMN = 44,
HAL_CAP_EXT_CHAN_DFS = 45,
HAL_CAP_COMBINED_RADAR_RSSI = 46,
HAL_CAP_AUTO_SLEEP = 48,
HAL_CAP_MBSSID_AGGR_SUPPORT = 49,
HAL_CAP_SPLIT_4KB_TRANS = 50,
HAL_CAP_REG_FLAG = 51,
HAL_CAP_BB_RIFS_HANG = 52,
HAL_CAP_RIFS_RX_ENABLED = 53,
HAL_CAP_BB_DFS_HANG = 54,
HAL_CAP_RX_STBC = 58,
HAL_CAP_TX_STBC = 59,
HAL_CAP_BT_COEX = 60,
HAL_CAP_DYNAMIC_SMPS = 61,
HAL_CAP_DS = 67,
HAL_CAP_BB_RX_CLEAR_STUCK_HANG = 68,
HAL_CAP_MAC_HANG = 69,
HAL_CAP_MFP = 70,
HAL_CAP_TS = 72,
HAL_CAP_ENHANCED_DMA_SUPPORT = 75,
HAL_CAP_NUM_TXMAPS = 76,
HAL_CAP_TXDESCLEN = 77,
HAL_CAP_TXSTATUSLEN = 78,
HAL_CAP_RXSTATUSLEN = 79,
HAL_CAP_RXFIFODEPTH = 80,
HAL_CAP_RXBUFSIZE = 81,
HAL_CAP_NUM_MR_RETRIES = 82,
HAL_CAP_OL_PWRCTRL = 84,
HAL_CAP_SPECTRAL_SCAN = 90,
HAL_CAP_BB_PANIC_WATCHDOG = 92,
HAL_CAP_HT20_SGI = 96,
HAL_CAP_LDPC = 99,
HAL_CAP_RXTSTAMP_PREC = 100,
HAL_CAP_ANT_DIV_COMB = 105,
HAL_CAP_PHYRESTART_CLR_WAR = 106,
HAL_CAP_ENTERPRISE_MODE = 107,
HAL_CAP_LDPCWAR = 108,
HAL_CAP_CHANNEL_SWITCH_TIME_USEC = 109,
HAL_CAP_ENABLE_APM = 110,
HAL_CAP_PCIE_LCR_EXTSYNC_EN = 111,
HAL_CAP_PCIE_LCR_OFFSET = 112,
HAL_CAP_ENHANCED_DFS_SUPPORT = 117,
HAL_CAP_MCI = 118,
HAL_CAP_SMARTANTENNA = 119,
HAL_CAP_TRAFFIC_FAST_RECOVER = 120,
HAL_CAP_TX_DIVERSITY = 121,
HAL_CAP_CRDC = 122,
HAL_CAP_INTMIT = 229,
HAL_CAP_RXORN_FATAL = 230,
HAL_CAP_BB_HANG = 235,
HAL_CAP_INTRMASK = 237,
HAL_CAP_BSSIDMATCH = 238,
HAL_CAP_STREAMS = 239,
HAL_CAP_RXDESC_SELFLINK = 242,
HAL_CAP_BB_READ_WAR = 244,
HAL_CAP_SERIALISE_WAR = 245,
HAL_CAP_ENFORCE_TXOP = 246,
HAL_CAP_RX_LNA_MIXING = 247,
HAL_CAP_DO_MYBEACON = 248,
HAL_CAP_TOA_LOCATIONING = 249,
HAL_CAP_TXTSTAMP_PREC = 250,
} HAL_CAPABILITY_TYPE;
typedef enum {
HAL_LED_INIT = 0,
HAL_LED_SCAN = 1,
HAL_LED_AUTH = 2,
HAL_LED_ASSOC = 3,
HAL_LED_RUN = 4
} HAL_LED_STATE;
typedef enum {
HAL_TX_QUEUE_INACTIVE = 0,
HAL_TX_QUEUE_DATA = 1,
HAL_TX_QUEUE_BEACON = 2,
HAL_TX_QUEUE_CAB = 3,
HAL_TX_QUEUE_UAPSD = 4,
HAL_TX_QUEUE_PSPOLL = 5,
HAL_TX_QUEUE_CFEND = 6,
HAL_TX_QUEUE_PAPRD = 7,
} HAL_TX_QUEUE;
#define HAL_NUM_TX_QUEUES 10
typedef enum {
HAL_RX_QUEUE_HP = 0,
HAL_RX_QUEUE_LP = 1,
} HAL_RX_QUEUE;
#define HAL_NUM_RX_QUEUES 2
#define HAL_TXFIFO_DEPTH 8
typedef enum {
HAL_WME_AC_BK = 0,
HAL_WME_AC_BE = 1,
HAL_WME_AC_VI = 2,
HAL_WME_AC_VO = 3,
HAL_WME_UPSD = 4,
} HAL_TX_QUEUE_SUBTYPE;
typedef enum {
HAL_TXQ_TXOKINT_ENABLE = 0x0001,
HAL_TXQ_TXERRINT_ENABLE = 0x0001,
HAL_TXQ_TXDESCINT_ENABLE = 0x0002,
HAL_TXQ_TXEOLINT_ENABLE = 0x0004,
HAL_TXQ_TXURNINT_ENABLE = 0x0008,
HAL_TXQ_COMPRESSION_ENABLE = 0x0010,
HAL_TXQ_RDYTIME_EXP_POLICY_ENABLE = 0x0020,
HAL_TXQ_DBA_GATED = 0x0040,
HAL_TXQ_CBR_DIS_QEMPTY = 0x0080,
HAL_TXQ_CBR_DIS_BEMPTY = 0x0100,
HAL_TXQ_FRAG_BURST_BACKOFF_ENABLE = 0x00800000,
HAL_TXQ_BACKOFF_DISABLE = 0x00010000,
HAL_TXQ_ARB_LOCKOUT_INTRA = 0x00020000,
HAL_TXQ_ARB_LOCKOUT_GLOBAL = 0x00040000,
HAL_TXQ_IGNORE_VIRTCOL = 0x00080000,
HAL_TXQ_SEQNUM_INC_DIS = 0x00100000,
} HAL_TX_QUEUE_FLAGS;
typedef struct {
uint32_t tqi_ver;
HAL_TX_QUEUE_SUBTYPE tqi_subtype;
HAL_TX_QUEUE_FLAGS tqi_qflags;
uint32_t tqi_priority;
uint32_t tqi_aifs;
uint32_t tqi_cwmin;
uint32_t tqi_cwmax;
uint16_t tqi_shretry;
uint16_t tqi_lgretry;
uint32_t tqi_cbrPeriod;
uint32_t tqi_cbrOverflowLimit;
uint32_t tqi_burstTime;
uint32_t tqi_readyTime;
uint32_t tqi_compBuf;
} HAL_TXQ_INFO;
#define HAL_TQI_NONVAL 0xffff
#define HAL_TXQ_USEDEFAULT ((uint32_t) -1)
#define HAL_COMP_BUF_MAX_SIZE 9216
#define HAL_COMP_BUF_ALIGN_SIZE 512
typedef enum {
HAL_PKT_TYPE_NORMAL = 0,
HAL_PKT_TYPE_ATIM = 1,
HAL_PKT_TYPE_PSPOLL = 2,
HAL_PKT_TYPE_BEACON = 3,
HAL_PKT_TYPE_PROBE_RESP = 4,
HAL_PKT_TYPE_CHIRP = 5,
HAL_PKT_TYPE_GRP_POLL = 6,
HAL_PKT_TYPE_AMPDU = 7,
} HAL_PKT_TYPE;
typedef enum {
HAL_RX_FILTER_UCAST = 0x00000001,
HAL_RX_FILTER_MCAST = 0x00000002,
HAL_RX_FILTER_BCAST = 0x00000004,
HAL_RX_FILTER_CONTROL = 0x00000008,
HAL_RX_FILTER_BEACON = 0x00000010,
HAL_RX_FILTER_PROM = 0x00000020,
HAL_RX_FILTER_PROBEREQ = 0x00000080,
HAL_RX_FILTER_PHYERR = 0x00000100,
HAL_RX_FILTER_MYBEACON = 0x00000200,
HAL_RX_FILTER_COMPBAR = 0x00000400,
HAL_RX_FILTER_COMP_BA = 0x00000800,
HAL_RX_FILTER_PHYRADAR = 0x00002000,
HAL_RX_FILTER_PSPOLL = 0x00004000,
HAL_RX_FILTER_MCAST_BCAST_ALL = 0x00008000,
HAL_RX_FILTER_BSSID = 0x40000000,
} HAL_RX_FILTER;
typedef enum {
HAL_PM_AWAKE = 0,
HAL_PM_FULL_SLEEP = 1,
HAL_PM_NETWORK_SLEEP = 2,
HAL_PM_UNDEFINED = 3
} HAL_POWER_MODE;
#define AH_ENT_DUAL_BAND_DISABLE 0x00000001
#define AH_ENT_CHAIN2_DISABLE 0x00000002
#define AH_ENT_5MHZ_DISABLE 0x00000004
#define AH_ENT_10MHZ_DISABLE 0x00000008
#define AH_ENT_49GHZ_DISABLE 0x00000010
#define AH_ENT_LOOPBACK_DISABLE 0x00000020
#define AH_ENT_TPC_PERF_DISABLE 0x00000040
#define AH_ENT_MIN_PKT_SIZE_DISABLE 0x00000080
#define AH_ENT_SPECTRAL_PRECISION 0x00000300
#define AH_ENT_SPECTRAL_PRECISION_S 8
#define AH_ENT_RTSCTS_DELIM_WAR 0x00010000
#define AH_FIRST_DESC_NDELIMS 60
typedef enum {
HAL_INT_RX = 0x00000001,
HAL_INT_RXDESC = 0x00000002,
HAL_INT_RXERR = 0x00000004,
HAL_INT_RXHP = 0x00000001,
HAL_INT_RXLP = 0x00000002,
HAL_INT_RXNOFRM = 0x00000008,
HAL_INT_RXEOL = 0x00000010,
HAL_INT_RXORN = 0x00000020,
HAL_INT_TX = 0x00000040,
HAL_INT_TXDESC = 0x00000080,
HAL_INT_TIM_TIMER= 0x00000100,
HAL_INT_MCI = 0x00000200,
HAL_INT_BBPANIC = 0x00000400,
HAL_INT_TXURN = 0x00000800,
HAL_INT_MIB = 0x00001000,
HAL_INT_RXPHY = 0x00004000,
HAL_INT_RXKCM = 0x00008000,
HAL_INT_SWBA = 0x00010000,
HAL_INT_BRSSI = 0x00020000,
HAL_INT_BMISS = 0x00040000,
HAL_INT_BNR = 0x00100000,
HAL_INT_TIM = 0x00200000,
HAL_INT_DTIM = 0x00400000,
HAL_INT_DTIMSYNC= 0x00800000,
HAL_INT_GPIO = 0x01000000,
HAL_INT_CABEND = 0x02000000,
HAL_INT_TSFOOR = 0x04000000,
HAL_INT_TBTT = 0x08000000,
HAL_INT_GENTIMER = 0x08000000,
HAL_INT_CST = 0x10000000,
HAL_INT_GTT = 0x20000000,
HAL_INT_FATAL = 0x40000000,
#define HAL_INT_GLOBAL 0x80000000
HAL_INT_BMISC = HAL_INT_TIM
| HAL_INT_DTIM
| HAL_INT_DTIMSYNC
| HAL_INT_CABEND
| HAL_INT_TBTT,
HAL_INT_COMMON = HAL_INT_RXNOFRM
| HAL_INT_RXDESC
| HAL_INT_RXEOL
| HAL_INT_RXORN
| HAL_INT_TXDESC
| HAL_INT_TXURN
| HAL_INT_MIB
| HAL_INT_RXPHY
| HAL_INT_RXKCM
| HAL_INT_SWBA
| HAL_INT_BMISS
| HAL_INT_BRSSI
| HAL_INT_BNR
| HAL_INT_GPIO,
} HAL_INT;
typedef enum {
HAL_MSIVEC_MISC = 0,
HAL_MSIVEC_TX = 1,
HAL_MSIVEC_RXLP = 2,
HAL_MSIVEC_RXHP = 3,
} HAL_MSIVEC;
typedef enum {
HAL_INT_LINE = 0,
HAL_INT_MSI = 1,
} HAL_INT_TYPE;
typedef enum {
HAL_INT_RX_FIRSTPKT=0,
HAL_INT_RX_LASTPKT,
HAL_INT_TX_FIRSTPKT,
HAL_INT_TX_LASTPKT,
HAL_INT_THRESHOLD
} HAL_INT_MITIGATION;
typedef struct {
u_int32_t cyclecnt_diff;
u_int32_t rxclr_cnt;
u_int32_t extrxclr_cnt;
u_int32_t txframecnt_diff;
u_int32_t rxframecnt_diff;
u_int32_t listen_time;
u_int32_t ofdmphyerr_cnt;
u_int32_t cckphyerr_cnt;
u_int32_t ofdmphyerrcnt_diff;
HAL_BOOL valid;
} HAL_ANISTATS;
typedef struct {
u_int8_t txctl_offset;
u_int8_t txctl_numwords;
u_int8_t txstatus_offset;
u_int8_t txstatus_numwords;
u_int8_t rxctl_offset;
u_int8_t rxctl_numwords;
u_int8_t rxstatus_offset;
u_int8_t rxstatus_numwords;
u_int8_t macRevision;
} HAL_DESC_INFO;
typedef enum {
HAL_GPIO_OUTPUT_MUX_AS_OUTPUT = 0,
HAL_GPIO_OUTPUT_MUX_PCIE_ATTENTION_LED = 1,
HAL_GPIO_OUTPUT_MUX_PCIE_POWER_LED = 2,
HAL_GPIO_OUTPUT_MUX_MAC_NETWORK_LED = 3,
HAL_GPIO_OUTPUT_MUX_MAC_POWER_LED = 4,
HAL_GPIO_OUTPUT_MUX_AS_WLAN_ACTIVE = 5,
HAL_GPIO_OUTPUT_MUX_AS_TX_FRAME = 6,
HAL_GPIO_OUTPUT_MUX_AS_MCI_WLAN_DATA,
HAL_GPIO_OUTPUT_MUX_AS_MCI_WLAN_CLK,
HAL_GPIO_OUTPUT_MUX_AS_MCI_BT_DATA,
HAL_GPIO_OUTPUT_MUX_AS_MCI_BT_CLK,
HAL_GPIO_OUTPUT_MUX_AS_WL_IN_TX,
HAL_GPIO_OUTPUT_MUX_AS_WL_IN_RX,
HAL_GPIO_OUTPUT_MUX_AS_BT_IN_TX,
HAL_GPIO_OUTPUT_MUX_AS_BT_IN_RX,
HAL_GPIO_OUTPUT_MUX_AS_RUCKUS_STROBE,
HAL_GPIO_OUTPUT_MUX_AS_RUCKUS_DATA,
HAL_GPIO_OUTPUT_MUX_AS_SMARTANT_CTRL0,
HAL_GPIO_OUTPUT_MUX_AS_SMARTANT_CTRL1,
HAL_GPIO_OUTPUT_MUX_AS_SMARTANT_CTRL2,
HAL_GPIO_OUTPUT_MUX_NUM_ENTRIES
} HAL_GPIO_MUX_TYPE;
typedef enum {
HAL_GPIO_INTR_LOW = 0,
HAL_GPIO_INTR_HIGH = 1,
HAL_GPIO_INTR_DISABLE = 2
} HAL_GPIO_INTR_TYPE;
typedef struct halCounters {
u_int32_t tx_frame_count;
u_int32_t rx_frame_count;
u_int32_t rx_clear_count;
u_int32_t cycle_count;
u_int8_t is_rx_active;
u_int8_t is_tx_active;
} HAL_COUNTERS;
typedef enum {
HAL_RFGAIN_INACTIVE = 0,
HAL_RFGAIN_READ_REQUESTED = 1,
HAL_RFGAIN_NEED_CHANGE = 2
} HAL_RFGAIN;
typedef uint16_t HAL_CTRY_CODE;
typedef uint16_t HAL_REG_DOMAIN;
#define HAL_ANTENNA_MIN_MODE 0
#define HAL_ANTENNA_FIXED_A 1
#define HAL_ANTENNA_FIXED_B 2
#define HAL_ANTENNA_MAX_MODE 3
typedef struct {
uint32_t ackrcv_bad;
uint32_t rts_bad;
uint32_t rts_good;
uint32_t fcs_bad;
uint32_t beacons;
} HAL_MIB_STATS;
typedef enum {
REG_EXT_FCC_MIDBAND = 0,
REG_EXT_JAPAN_MIDBAND = 1,
REG_EXT_FCC_DFS_HT40 = 2,
REG_EXT_JAPAN_NONDFS_HT40 = 3,
REG_EXT_JAPAN_DFS_HT40 = 4,
REG_EXT_FCC_CH_144 = 5,
} REG_EXT_BITMAP;
enum {
HAL_MODE_11A = 0x001,
HAL_MODE_TURBO = 0x002,
HAL_MODE_11B = 0x004,
HAL_MODE_PUREG = 0x008,
#ifdef notdef
HAL_MODE_11G = 0x010,
#else
HAL_MODE_11G = 0x008,
#endif
HAL_MODE_108G = 0x020,
HAL_MODE_108A = 0x040,
HAL_MODE_11A_HALF_RATE = 0x200,
HAL_MODE_11A_QUARTER_RATE = 0x400,
HAL_MODE_11G_HALF_RATE = 0x800,
HAL_MODE_11G_QUARTER_RATE = 0x1000,
HAL_MODE_11NG_HT20 = 0x008000,
HAL_MODE_11NA_HT20 = 0x010000,
HAL_MODE_11NG_HT40PLUS = 0x020000,
HAL_MODE_11NG_HT40MINUS = 0x040000,
HAL_MODE_11NA_HT40PLUS = 0x080000,
HAL_MODE_11NA_HT40MINUS = 0x100000,
HAL_MODE_ALL = 0xffffff
};
typedef struct {
int rateCount;
uint8_t rateCodeToIndex[256];
struct {
uint8_t valid;
uint8_t phy;
uint32_t rateKbps;
uint8_t rateCode;
uint8_t shortPreamble;
uint8_t dot11Rate;
uint8_t controlRate;
uint16_t lpAckDuration;
uint16_t spAckDuration;
} info[64];
} HAL_RATE_TABLE;
typedef struct {
u_int rs_count;
uint8_t rs_rates[64];
} HAL_RATE_SET;
typedef enum {
HAL_CHAINTYPE_TX = 1,
HAL_CHAINTYPE_RX = 2,
} HAL_CHAIN_TYPE;
typedef struct {
u_int Tries;
u_int Rate;
u_int RateIndex;
u_int PktDuration;
u_int ChSel;
u_int RateFlags;
#define HAL_RATESERIES_RTS_CTS 0x0001
#define HAL_RATESERIES_2040 0x0002
#define HAL_RATESERIES_HALFGI 0x0004
#define HAL_RATESERIES_STBC 0x0008
u_int tx_power_cap;
} HAL_11N_RATE_SERIES;
typedef enum {
HAL_HT_MACMODE_20 = 0,
HAL_HT_MACMODE_2040 = 1,
} HAL_HT_MACMODE;
typedef enum {
HAL_HT_PHYMODE_20 = 0,
HAL_HT_PHYMODE_2040 = 1,
} HAL_HT_PHYMODE;
typedef enum {
HAL_HT_EXTPROTSPACING_20 = 0,
HAL_HT_EXTPROTSPACING_25 = 1,
} HAL_HT_EXTPROTSPACING;
typedef enum {
HAL_RX_CLEAR_CTL_LOW = 0x1,
HAL_RX_CLEAR_EXT_LOW = 0x2,
} HAL_HT_RXCLEAR;
typedef enum {
HAL_FREQ_BAND_5GHZ = 0,
HAL_FREQ_BAND_2GHZ = 1,
} HAL_FREQ_BAND;
typedef enum {
HAL_ANT_VARIABLE = 0,
HAL_ANT_FIXED_A = 1,
HAL_ANT_FIXED_B = 2,
} HAL_ANT_SETTING;
typedef enum {
HAL_M_STA = 1,
HAL_M_IBSS = 0,
HAL_M_HOSTAP = 6,
HAL_M_MONITOR = 8
} HAL_OPMODE;
typedef enum {
HAL_RESET_NORMAL = 0,
HAL_RESET_BBPANIC = 1,
HAL_RESET_FORCE_COLD = 2,
} HAL_RESET_TYPE;
enum {
HAL_RESET_POWER_ON,
HAL_RESET_WARM,
HAL_RESET_COLD
};
typedef struct {
uint8_t kv_type;
uint8_t kv_apsd;
uint16_t kv_len;
uint8_t kv_val[16];
uint8_t kv_mic[8];
uint8_t kv_txmic[8];
} HAL_KEYVAL;
#define AH_KEYTYPE_MASK 0x0F
typedef enum {
HAL_KEY_TYPE_CLEAR,
HAL_KEY_TYPE_WEP,
HAL_KEY_TYPE_AES,
HAL_KEY_TYPE_TKIP,
} HAL_KEY_TYPE;
typedef enum {
HAL_CIPHER_WEP = 0,
HAL_CIPHER_AES_OCB = 1,
HAL_CIPHER_AES_CCM = 2,
HAL_CIPHER_CKIP = 3,
HAL_CIPHER_TKIP = 4,
HAL_CIPHER_CLR = 5,
HAL_CIPHER_MIC = 127
} HAL_CIPHER;
enum {
HAL_SLOT_TIME_6 = 6,
HAL_SLOT_TIME_9 = 9,
HAL_SLOT_TIME_20 = 20,
};
typedef struct {
uint32_t bs_nexttbtt;
uint32_t bs_nextdtim;
uint32_t bs_intval;
#define HAL_BEACON_PERIOD 0x0000ffff
#define HAL_BEACON_PERIOD_TU8 0x0007ffff
#define HAL_BEACON_ENA 0x00800000
#define HAL_BEACON_RESET_TSF 0x01000000
#define HAL_TSFOOR_THRESHOLD 0x00004240
uint32_t bs_dtimperiod;
uint16_t bs_cfpperiod;
uint16_t bs_cfpmaxduration;
uint32_t bs_cfpnext;
uint16_t bs_timoffset;
uint16_t bs_bmissthreshold;
uint32_t bs_sleepduration;
uint32_t bs_tsfoor_threshold;
} HAL_BEACON_STATE;
typedef struct {
uint32_t bt_intval;
uint32_t bt_nexttbtt;
uint32_t bt_nextatim;
uint32_t bt_nextdba;
uint32_t bt_nextswba;
uint32_t bt_flags;
#define HAL_BEACON_TBTT_EN 0x00000001
#define HAL_BEACON_DBA_EN 0x00000002
#define HAL_BEACON_SWBA_EN 0x00000004
} HAL_BEACON_TIMERS;
typedef struct {
uint32_t ns_avgbrssi;
uint32_t ns_avgrssi;
uint32_t ns_avgtxrssi;
} HAL_NODE_STATS;
#define HAL_RSSI_EP_MULTIPLIER (1<<7)
typedef struct {
uint32_t ast_ani_niup;
uint32_t ast_ani_nidown;
uint32_t ast_ani_spurup;
uint32_t ast_ani_spurdown;
uint32_t ast_ani_ofdmon;
uint32_t ast_ani_ofdmoff;
uint32_t ast_ani_cckhigh;
uint32_t ast_ani_ccklow;
uint32_t ast_ani_stepup;
uint32_t ast_ani_stepdown;
uint32_t ast_ani_ofdmerrs;
uint32_t ast_ani_cckerrs;
uint32_t ast_ani_reset;
uint32_t ast_ani_lzero;
uint32_t ast_ani_lneg;
HAL_MIB_STATS ast_mibstats;
HAL_NODE_STATS ast_nodestats;
} HAL_ANI_STATS;
typedef struct {
uint8_t noiseImmunityLevel;
uint8_t cckNoiseImmunityLevel;
uint8_t spurImmunityLevel;
uint8_t firstepLevel;
uint8_t ofdmWeakSigDetectOff;
uint8_t cckWeakSigThreshold;
uint8_t mrcCck;
uint32_t listenTime;
uint32_t txFrameCount;
uint32_t rxFrameCount;
uint32_t cycleCount;
uint32_t ofdmPhyErrCount;
uint32_t cckPhyErrCount;
} HAL_ANI_STATE;
struct ath_desc;
struct ath_tx_status;
struct ath_rx_status;
struct ieee80211_channel;
typedef struct {
uint32_t seq_num;
uint32_t tx_busy;
uint32_t rx_busy;
uint32_t chan_busy;
uint32_t ext_chan_busy;
uint32_t cycle_count;
uint32_t ofdm_phyerr_count;
uint32_t cck_phyerr_count;
} HAL_SURVEY_SAMPLE;
#define CHANNEL_SURVEY_SAMPLE_COUNT 32
typedef struct {
HAL_SURVEY_SAMPLE samples[CHANNEL_SURVEY_SAMPLE_COUNT];
uint32_t cur_sample;
uint32_t cur_seq;
} HAL_CHANNEL_SURVEY;
typedef enum {
HAL_ANI_PRESENT = 0,
HAL_ANI_NOISE_IMMUNITY_LEVEL = 1,
HAL_ANI_OFDM_WEAK_SIGNAL_DETECTION = 2,
HAL_ANI_CCK_WEAK_SIGNAL_THR = 3,
HAL_ANI_FIRSTEP_LEVEL = 4,
HAL_ANI_SPUR_IMMUNITY_LEVEL = 5,
HAL_ANI_MODE = 6,
HAL_ANI_PHYERR_RESET = 7,
HAL_ANI_MRC_CCK = 8,
HAL_ANI_CCK_NOISE_IMMUNITY_LEVEL = 9,
} HAL_ANI_CMD;
#define HAL_ANI_ALL 0xffffffff
typedef enum {
HAL_CAP_INTMIT_PRESENT = 0,
HAL_CAP_INTMIT_ENABLE = 1,
HAL_CAP_INTMIT_NOISE_IMMUNITY_LEVEL = 2,
HAL_CAP_INTMIT_OFDM_WEAK_SIGNAL_LEVEL = 3,
HAL_CAP_INTMIT_CCK_WEAK_SIGNAL_THR = 4,
HAL_CAP_INTMIT_FIRSTEP_LEVEL = 5,
HAL_CAP_INTMIT_SPUR_IMMUNITY_LEVEL = 6
} HAL_CAP_INTMIT_CMD;
typedef struct {
int32_t pe_firpwr;
int32_t pe_rrssi;
int32_t pe_height;
int32_t pe_prssi;
int32_t pe_inband;
u_int32_t pe_relpwr;
u_int32_t pe_relstep;
u_int32_t pe_maxlen;
int32_t pe_usefir128;
int32_t pe_blockradar;
int32_t pe_enmaxrssi;
int32_t pe_extchannel;
int32_t pe_enabled;
int32_t pe_enrelpwr;
int32_t pe_en_relstep_check;
} HAL_PHYERR_PARAM;
#define HAL_PHYERR_PARAM_NOVAL 65535
typedef struct {
u_int16_t ss_fft_period;
u_int16_t ss_period;
u_int16_t ss_count;
u_int16_t ss_short_report;
u_int8_t radar_bin_thresh_sel;
u_int16_t ss_spectral_pri;
int8_t ss_nf_cal[AH_MAX_CHAINS*2];
int8_t ss_nf_pwr[AH_MAX_CHAINS*2];
int32_t ss_nf_temp_data;
int ss_enabled;
int ss_active;
} HAL_SPECTRAL_PARAM;
#define HAL_SPECTRAL_PARAM_NOVAL 0xFFFF
#define HAL_SPECTRAL_PARAM_ENABLE 0x8000
typedef enum {
HAL_DFS_UNINIT_DOMAIN = 0,
HAL_DFS_FCC_DOMAIN = 1,
HAL_DFS_ETSI_DOMAIN = 2,
HAL_DFS_MKK4_DOMAIN = 3,
} HAL_DFS_DOMAIN;
typedef enum {
HAL_MFP_QOSDATA = 0,
HAL_MFP_PASSTHRU,
HAL_MFP_HW_CRYPTO
} HAL_MFP_OPT_T;
typedef enum {
HAL_ANT_DIV_COMB_LNA1_MINUS_LNA2 = 0,
HAL_ANT_DIV_COMB_LNA2 = 1,
HAL_ANT_DIV_COMB_LNA1 = 2,
HAL_ANT_DIV_COMB_LNA1_PLUS_LNA2 = 3,
} HAL_ANT_DIV_COMB_LNA_CONF;
typedef struct {
u_int8_t main_lna_conf;
u_int8_t alt_lna_conf;
u_int8_t fast_div_bias;
u_int8_t main_gaintb;
u_int8_t alt_gaintb;
u_int8_t antdiv_configgroup;
int8_t lna1_lna2_delta;
} HAL_ANT_COMB_CONFIG;
#define DEFAULT_ANTDIV_CONFIG_GROUP 0x00
#define HAL_ANTDIV_CONFIG_GROUP_1 0x01
#define HAL_ANTDIV_CONFIG_GROUP_2 0x02
#define HAL_ANTDIV_CONFIG_GROUP_3 0x03
typedef enum {
HAL_QUIET_DISABLE = 0x0,
HAL_QUIET_ENABLE = 0x1,
HAL_QUIET_ADD_CURRENT_TSF = 0x2,
HAL_QUIET_ADD_SWBA_RESP_TIME = 0x4,
} HAL_QUIET_FLAG;
#define HAL_DFS_EVENT_PRICH 0x0000001
#define HAL_DFS_EVENT_EXTCH 0x0000002
#define HAL_DFS_EVENT_EXTEARLY 0x0000004
#define HAL_DFS_EVENT_ISDC 0x0000008
struct hal_dfs_event {
uint64_t re_full_ts;
uint32_t re_ts;
uint8_t re_rssi;
uint8_t re_dur;
uint32_t re_flags;
};
typedef struct hal_dfs_event HAL_DFS_EVENT;
typedef enum {
HAL_GEN_TIMER_TSF = 0,
HAL_GEN_TIMER_TSF2,
HAL_GEN_TIMER_TSF_ANY
} HAL_GEN_TIMER_DOMAIN;
#include "ath_hal/ah_btcoex.h"
struct hal_bb_panic_info {
u_int32_t status;
u_int32_t tsf;
u_int32_t phy_panic_wd_ctl1;
u_int32_t phy_panic_wd_ctl2;
u_int32_t phy_gen_ctrl;
u_int32_t rxc_pcnt;
u_int32_t rxf_pcnt;
u_int32_t txf_pcnt;
u_int32_t cycles;
u_int32_t wd;
u_int32_t det;
u_int32_t rdar;
u_int32_t r_odfm;
u_int32_t r_cck;
u_int32_t t_odfm;
u_int32_t t_cck;
u_int32_t agc;
u_int32_t src;
};
typedef enum {
SER_REG_MODE_OFF = 0,
SER_REG_MODE_ON = 1,
SER_REG_MODE_AUTO = 2,
} SER_REG_MODE;
typedef struct
{
int ah_debug;
int ah_ar5416_biasadj;
int ah_dma_beacon_response_time;
int ah_sw_beacon_response_time;
int ah_additional_swba_backoff;
int ah_force_full_reset;
int ah_serialise_reg_war;
int ath_hal_desc_tpc;
int ath_hal_sta_update_tx_pwr_enable;
int ath_hal_sta_update_tx_pwr_enable_S1;
int ath_hal_sta_update_tx_pwr_enable_S2;
int ath_hal_sta_update_tx_pwr_enable_S3;
int ath_hal_pll_pwr_save;
int ath_hal_pcie_power_save_enable;
int ath_hal_intr_mitigation_rx;
int ath_hal_intr_mitigation_tx;
int ath_hal_pcie_clock_req;
#define AR_PCIE_PLL_PWRSAVE_CONTROL (1<<0)
#define AR_PCIE_PLL_PWRSAVE_ON_D3 (1<<1)
#define AR_PCIE_PLL_PWRSAVE_ON_D0 (1<<2)
int ath_hal_pcie_waen;
int ath_hal_pcie_ser_des_write;
int ath_hal_ht_enable;
int ath_hal_diversity_control;
int ath_hal_antenna_switch_swap;
int ath_hal_ext_lna_ctl_gpio;
int ath_hal_spur_mode;
int ath_hal_6mb_ack;
int ath_hal_enable_msi;
int ath_hal_beacon_filter_interval;
int ath_hal_mfp_support;
int ath_hal_enable_ani;
int ath_hal_cwm_ignore_ext_cca;
int ath_hal_show_bb_panic;
int ath_hal_ant_ctrl_comm2g_switch_enable;
int ath_hal_ext_atten_margin_cfg;
int ath_hal_min_gainidx;
int ath_hal_war70c;
uint32_t ath_hal_mci_config;
} HAL_OPS_CONFIG;
struct ath_hal {
uint32_t ah_magic;
uint16_t ah_devid;
uint16_t ah_subvendorid;
HAL_SOFTC ah_sc;
HAL_BUS_TAG ah_st;
HAL_BUS_HANDLE ah_sh;
HAL_CTRY_CODE ah_countryCode;
uint32_t ah_macVersion;
uint16_t ah_macRev;
uint16_t ah_phyRev;
uint16_t ah_analog5GhzRev;
uint16_t ah_analog2GhzRev;
uint16_t *ah_eepromdata;
uint32_t ah_intrstate[8];
uint32_t ah_syncstate;
HAL_POWER_MODE ah_powerMode;
HAL_OPS_CONFIG ah_config;
const HAL_RATE_TABLE *__ahdecl(*ah_getRateTable)(struct ath_hal *,
u_int mode);
void __ahdecl(*ah_detach)(struct ath_hal*);
HAL_BOOL __ahdecl(*ah_reset)(struct ath_hal *, HAL_OPMODE,
struct ieee80211_channel *,
HAL_BOOL bChannelChange,
HAL_RESET_TYPE resetType,
HAL_STATUS *status);
HAL_BOOL __ahdecl(*ah_phyDisable)(struct ath_hal *);
HAL_BOOL __ahdecl(*ah_disable)(struct ath_hal *);
void __ahdecl(*ah_configPCIE)(struct ath_hal *, HAL_BOOL restore,
HAL_BOOL power_off);
void __ahdecl(*ah_disablePCIE)(struct ath_hal *);
void __ahdecl(*ah_setPCUConfig)(struct ath_hal *);
HAL_BOOL __ahdecl(*ah_perCalibration)(struct ath_hal*,
struct ieee80211_channel *, HAL_BOOL *);
HAL_BOOL __ahdecl(*ah_perCalibrationN)(struct ath_hal *,
struct ieee80211_channel *, u_int chainMask,
HAL_BOOL longCal, HAL_BOOL *isCalDone);
HAL_BOOL __ahdecl(*ah_resetCalValid)(struct ath_hal *,
const struct ieee80211_channel *);
HAL_BOOL __ahdecl(*ah_setTxPower)(struct ath_hal *,
const struct ieee80211_channel *, uint16_t *);
HAL_BOOL __ahdecl(*ah_setTxPowerLimit)(struct ath_hal *, uint32_t);
HAL_BOOL __ahdecl(*ah_setBoardValues)(struct ath_hal *,
const struct ieee80211_channel *);
HAL_BOOL __ahdecl(*ah_updateTxTrigLevel)(struct ath_hal*,
HAL_BOOL incTrigLevel);
int __ahdecl(*ah_setupTxQueue)(struct ath_hal *, HAL_TX_QUEUE,
const HAL_TXQ_INFO *qInfo);
HAL_BOOL __ahdecl(*ah_setTxQueueProps)(struct ath_hal *, int q,
const HAL_TXQ_INFO *qInfo);
HAL_BOOL __ahdecl(*ah_getTxQueueProps)(struct ath_hal *, int q,
HAL_TXQ_INFO *qInfo);
HAL_BOOL __ahdecl(*ah_releaseTxQueue)(struct ath_hal *ah, u_int q);
HAL_BOOL __ahdecl(*ah_resetTxQueue)(struct ath_hal *ah, u_int q);
uint32_t __ahdecl(*ah_getTxDP)(struct ath_hal*, u_int);
HAL_BOOL __ahdecl(*ah_setTxDP)(struct ath_hal*, u_int, uint32_t txdp);
uint32_t __ahdecl(*ah_numTxPending)(struct ath_hal *, u_int q);
HAL_BOOL __ahdecl(*ah_startTxDma)(struct ath_hal*, u_int);
HAL_BOOL __ahdecl(*ah_stopTxDma)(struct ath_hal*, u_int);
HAL_BOOL __ahdecl(*ah_setupTxDesc)(struct ath_hal *, struct ath_desc *,
u_int pktLen, u_int hdrLen,
HAL_PKT_TYPE type, u_int txPower,
u_int txRate0, u_int txTries0,
u_int keyIx, u_int antMode, u_int flags,
u_int rtsctsRate, u_int rtsctsDuration,
u_int compicvLen, u_int compivLen,
u_int comp);
HAL_BOOL __ahdecl(*ah_setupXTxDesc)(struct ath_hal *, struct ath_desc*,
u_int txRate1, u_int txTries1,
u_int txRate2, u_int txTries2,
u_int txRate3, u_int txTries3);
HAL_BOOL __ahdecl(*ah_fillTxDesc)(struct ath_hal *, struct ath_desc *,
HAL_DMA_ADDR *bufAddrList, uint32_t *segLenList,
u_int descId, u_int qcuId, HAL_BOOL firstSeg,
HAL_BOOL lastSeg, const struct ath_desc *);
HAL_STATUS __ahdecl(*ah_procTxDesc)(struct ath_hal *,
struct ath_desc *, struct ath_tx_status *);
void __ahdecl(*ah_getTxIntrQueue)(struct ath_hal *, uint32_t *);
void __ahdecl(*ah_reqTxIntrDesc)(struct ath_hal *, struct ath_desc*);
HAL_BOOL __ahdecl(*ah_getTxCompletionRates)(struct ath_hal *,
const struct ath_desc *ds, int *rates, int *tries);
void __ahdecl(*ah_setTxDescLink)(struct ath_hal *ah, void *ds,
uint32_t link);
void __ahdecl(*ah_getTxDescLink)(struct ath_hal *ah, void *ds,
uint32_t *link);
void __ahdecl(*ah_getTxDescLinkPtr)(struct ath_hal *ah, void *ds,
uint32_t **linkptr);
void __ahdecl(*ah_setupTxStatusRing)(struct ath_hal *,
void *ts_start, uint32_t ts_paddr_start,
uint16_t size);
void __ahdecl(*ah_getTxRawTxDesc)(struct ath_hal *, u_int32_t *);
uint32_t __ahdecl(*ah_getRxDP)(struct ath_hal*, HAL_RX_QUEUE);
void __ahdecl(*ah_setRxDP)(struct ath_hal*, uint32_t rxdp, HAL_RX_QUEUE);
void __ahdecl(*ah_enableReceive)(struct ath_hal*);
HAL_BOOL __ahdecl(*ah_stopDmaReceive)(struct ath_hal*);
void __ahdecl(*ah_startPcuReceive)(struct ath_hal*, HAL_BOOL);
void __ahdecl(*ah_stopPcuReceive)(struct ath_hal*);
void __ahdecl(*ah_setMulticastFilter)(struct ath_hal*,
uint32_t filter0, uint32_t filter1);
HAL_BOOL __ahdecl(*ah_setMulticastFilterIndex)(struct ath_hal*,
uint32_t index);
HAL_BOOL __ahdecl(*ah_clrMulticastFilterIndex)(struct ath_hal*,
uint32_t index);
uint32_t __ahdecl(*ah_getRxFilter)(struct ath_hal*);
void __ahdecl(*ah_setRxFilter)(struct ath_hal*, uint32_t);
HAL_BOOL __ahdecl(*ah_setupRxDesc)(struct ath_hal *, struct ath_desc *,
uint32_t size, u_int flags);
HAL_STATUS __ahdecl(*ah_procRxDesc)(struct ath_hal *,
struct ath_desc *, uint32_t phyAddr,
struct ath_desc *next, uint64_t tsf,
struct ath_rx_status *);
void __ahdecl(*ah_rxMonitor)(struct ath_hal *,
const HAL_NODE_STATS *,
const struct ieee80211_channel *);
void __ahdecl(*ah_aniPoll)(struct ath_hal *,
const struct ieee80211_channel *);
void __ahdecl(*ah_procMibEvent)(struct ath_hal *,
const HAL_NODE_STATS *);
HAL_STATUS __ahdecl(*ah_getCapability)(struct ath_hal *,
HAL_CAPABILITY_TYPE, uint32_t capability,
uint32_t *result);
HAL_BOOL __ahdecl(*ah_setCapability)(struct ath_hal *,
HAL_CAPABILITY_TYPE, uint32_t capability,
uint32_t setting, HAL_STATUS *);
HAL_BOOL __ahdecl(*ah_getDiagState)(struct ath_hal *, int request,
const void *args, uint32_t argsize,
void **result, uint32_t *resultsize);
void __ahdecl(*ah_getMacAddress)(struct ath_hal *, uint8_t *);
HAL_BOOL __ahdecl(*ah_setMacAddress)(struct ath_hal *, const uint8_t*);
void __ahdecl(*ah_getBssIdMask)(struct ath_hal *, uint8_t *);
HAL_BOOL __ahdecl(*ah_setBssIdMask)(struct ath_hal *, const uint8_t*);
HAL_BOOL __ahdecl(*ah_setRegulatoryDomain)(struct ath_hal*,
uint16_t, HAL_STATUS *);
void __ahdecl(*ah_setLedState)(struct ath_hal*, HAL_LED_STATE);
void __ahdecl(*ah_writeAssocid)(struct ath_hal*,
const uint8_t *bssid, uint16_t assocId);
HAL_BOOL __ahdecl(*ah_gpioCfgOutput)(struct ath_hal *,
uint32_t gpio, HAL_GPIO_MUX_TYPE);
HAL_BOOL __ahdecl(*ah_gpioCfgInput)(struct ath_hal *, uint32_t gpio);
uint32_t __ahdecl(*ah_gpioGet)(struct ath_hal *, uint32_t gpio);
HAL_BOOL __ahdecl(*ah_gpioSet)(struct ath_hal *,
uint32_t gpio, uint32_t val);
void __ahdecl(*ah_gpioSetIntr)(struct ath_hal*, u_int, uint32_t);
uint32_t __ahdecl(*ah_getTsf32)(struct ath_hal*);
uint64_t __ahdecl(*ah_getTsf64)(struct ath_hal*);
void __ahdecl(*ah_setTsf64)(struct ath_hal *, uint64_t);
void __ahdecl(*ah_resetTsf)(struct ath_hal*);
HAL_BOOL __ahdecl(*ah_detectCardPresent)(struct ath_hal*);
void __ahdecl(*ah_updateMibCounters)(struct ath_hal*,
HAL_MIB_STATS*);
HAL_RFGAIN __ahdecl(*ah_getRfGain)(struct ath_hal*);
u_int __ahdecl(*ah_getDefAntenna)(struct ath_hal*);
void __ahdecl(*ah_setDefAntenna)(struct ath_hal*, u_int);
HAL_ANT_SETTING __ahdecl(*ah_getAntennaSwitch)(struct ath_hal*);
HAL_BOOL __ahdecl(*ah_setAntennaSwitch)(struct ath_hal*,
HAL_ANT_SETTING);
HAL_BOOL __ahdecl(*ah_setSifsTime)(struct ath_hal*, u_int);
u_int __ahdecl(*ah_getSifsTime)(struct ath_hal*);
HAL_BOOL __ahdecl(*ah_setSlotTime)(struct ath_hal*, u_int);
u_int __ahdecl(*ah_getSlotTime)(struct ath_hal*);
HAL_BOOL __ahdecl(*ah_setAckTimeout)(struct ath_hal*, u_int);
u_int __ahdecl(*ah_getAckTimeout)(struct ath_hal*);
HAL_BOOL __ahdecl(*ah_setAckCTSRate)(struct ath_hal*, u_int);
u_int __ahdecl(*ah_getAckCTSRate)(struct ath_hal*);
HAL_BOOL __ahdecl(*ah_setCTSTimeout)(struct ath_hal*, u_int);
u_int __ahdecl(*ah_getCTSTimeout)(struct ath_hal*);
HAL_BOOL __ahdecl(*ah_setDecompMask)(struct ath_hal*, uint16_t, int);
void __ahdecl(*ah_setCoverageClass)(struct ath_hal*, uint8_t, int);
HAL_STATUS __ahdecl(*ah_setQuiet)(struct ath_hal *ah, uint32_t period,
uint32_t duration, uint32_t nextStart,
HAL_QUIET_FLAG flag);
void __ahdecl(*ah_setChainMasks)(struct ath_hal *,
uint32_t, uint32_t);
u_int __ahdecl(*ah_getNav)(struct ath_hal*);
void __ahdecl(*ah_setNav)(struct ath_hal*, u_int);
void __ahdecl(*ah_enableDfs)(struct ath_hal *ah,
HAL_PHYERR_PARAM *pe);
void __ahdecl(*ah_getDfsThresh)(struct ath_hal *ah,
HAL_PHYERR_PARAM *pe);
HAL_BOOL __ahdecl(*ah_getDfsDefaultThresh)(struct ath_hal *ah,
HAL_PHYERR_PARAM *pe);
HAL_BOOL __ahdecl(*ah_procRadarEvent)(struct ath_hal *ah,
struct ath_rx_status *rxs, uint64_t fulltsf,
const char *buf, HAL_DFS_EVENT *event);
HAL_BOOL __ahdecl(*ah_isFastClockEnabled)(struct ath_hal *ah);
void __ahdecl(*ah_setDfsCacTxQuiet)(struct ath_hal *, HAL_BOOL);
void __ahdecl(*ah_spectralConfigure)(struct ath_hal *ah,
HAL_SPECTRAL_PARAM *sp);
void __ahdecl(*ah_spectralGetConfig)(struct ath_hal *ah,
HAL_SPECTRAL_PARAM *sp);
void __ahdecl(*ah_spectralStart)(struct ath_hal *);
void __ahdecl(*ah_spectralStop)(struct ath_hal *);
HAL_BOOL __ahdecl(*ah_spectralIsEnabled)(struct ath_hal *);
HAL_BOOL __ahdecl(*ah_spectralIsActive)(struct ath_hal *);
uint32_t __ahdecl(*ah_getKeyCacheSize)(struct ath_hal*);
HAL_BOOL __ahdecl(*ah_resetKeyCacheEntry)(struct ath_hal*, uint16_t);
HAL_BOOL __ahdecl(*ah_isKeyCacheEntryValid)(struct ath_hal *,
uint16_t);
HAL_BOOL __ahdecl(*ah_setKeyCacheEntry)(struct ath_hal*,
uint16_t, const HAL_KEYVAL *,
const uint8_t *, int);
HAL_BOOL __ahdecl(*ah_setKeyCacheEntryMac)(struct ath_hal*,
uint16_t, const uint8_t *);
HAL_BOOL __ahdecl(*ah_setPowerMode)(struct ath_hal*,
HAL_POWER_MODE mode, int setChip);
HAL_POWER_MODE __ahdecl(*ah_getPowerMode)(struct ath_hal*);
int16_t __ahdecl(*ah_getChanNoise)(struct ath_hal *,
const struct ieee80211_channel *);
void __ahdecl(*ah_setBeaconTimers)(struct ath_hal*,
const HAL_BEACON_TIMERS *);
void __ahdecl(*ah_beaconInit)(struct ath_hal *,
uint32_t nexttbtt, uint32_t intval);
void __ahdecl(*ah_setStationBeaconTimers)(struct ath_hal*,
const HAL_BEACON_STATE *);
void __ahdecl(*ah_resetStationBeaconTimers)(struct ath_hal*);
uint64_t __ahdecl(*ah_getNextTBTT)(struct ath_hal *);
HAL_BOOL __ahdecl(*ah_chainTxDesc)(struct ath_hal *,
struct ath_desc *,
HAL_DMA_ADDR *bufAddrList,
uint32_t *segLenList,
u_int, u_int, HAL_PKT_TYPE,
u_int, HAL_CIPHER, uint8_t, HAL_BOOL,
HAL_BOOL, HAL_BOOL);
HAL_BOOL __ahdecl(*ah_setupFirstTxDesc)(struct ath_hal *,
struct ath_desc *, u_int, u_int, u_int,
u_int, u_int, u_int, u_int, u_int);
HAL_BOOL __ahdecl(*ah_setupLastTxDesc)(struct ath_hal *,
struct ath_desc *, const struct ath_desc *);
void __ahdecl(*ah_set11nRateScenario)(struct ath_hal *,
struct ath_desc *, u_int, u_int,
HAL_11N_RATE_SERIES [], u_int, u_int);
void __ahdecl(*ah_set11nTxDesc)(struct ath_hal *,
void *, u_int, HAL_PKT_TYPE, u_int, u_int,
u_int);
void __ahdecl(*ah_set11nAggrFirst)(struct ath_hal *,
struct ath_desc *, u_int, u_int);
void __ahdecl(*ah_set11nAggrMiddle)(struct ath_hal *,
struct ath_desc *, u_int);
void __ahdecl(*ah_set11nAggrLast)(struct ath_hal *,
struct ath_desc *);
void __ahdecl(*ah_clr11nAggr)(struct ath_hal *,
struct ath_desc *);
void __ahdecl(*ah_set11nBurstDuration)(struct ath_hal *,
struct ath_desc *, u_int);
void __ahdecl(*ah_set11nVirtMoreFrag)(struct ath_hal *,
struct ath_desc *, u_int);
HAL_BOOL __ahdecl(*ah_getMibCycleCounts) (struct ath_hal *,
HAL_SURVEY_SAMPLE *);
uint32_t __ahdecl(*ah_get11nExtBusy)(struct ath_hal *);
void __ahdecl(*ah_set11nMac2040)(struct ath_hal *,
HAL_HT_MACMODE);
HAL_HT_RXCLEAR __ahdecl(*ah_get11nRxClear)(struct ath_hal *ah);
void __ahdecl(*ah_set11nRxClear)(struct ath_hal *,
HAL_HT_RXCLEAR);
HAL_BOOL __ahdecl(*ah_isInterruptPending)(struct ath_hal*);
HAL_BOOL __ahdecl(*ah_getPendingInterrupts)(struct ath_hal*, HAL_INT*);
HAL_INT __ahdecl(*ah_getInterrupts)(struct ath_hal*);
HAL_INT __ahdecl(*ah_setInterrupts)(struct ath_hal*, HAL_INT);
void __ahdecl(*ah_btCoexSetInfo)(struct ath_hal *,
HAL_BT_COEX_INFO *);
void __ahdecl(*ah_btCoexSetConfig)(struct ath_hal *,
HAL_BT_COEX_CONFIG *);
void __ahdecl(*ah_btCoexSetQcuThresh)(struct ath_hal *,
int);
void __ahdecl(*ah_btCoexSetWeights)(struct ath_hal *,
uint32_t);
void __ahdecl(*ah_btCoexSetBmissThresh)(struct ath_hal *,
uint32_t);
void __ahdecl(*ah_btCoexSetParameter)(struct ath_hal *,
uint32_t, uint32_t);
void __ahdecl(*ah_btCoexDisable)(struct ath_hal *);
int __ahdecl(*ah_btCoexEnable)(struct ath_hal *);
void __ahdecl(*ah_btMciSetup)(struct ath_hal *,
uint32_t, void *, uint16_t, uint32_t);
HAL_BOOL __ahdecl(*ah_btMciSendMessage)(struct ath_hal *,
uint8_t, uint32_t, uint32_t *, uint8_t,
HAL_BOOL, HAL_BOOL);
uint32_t __ahdecl(*ah_btMciGetInterrupt)(struct ath_hal *,
uint32_t *, uint32_t *);
uint32_t __ahdecl(*ah_btMciState)(struct ath_hal *,
uint32_t, uint32_t *);
void __ahdecl(*ah_btMciDetach)(struct ath_hal *);
void __ahdecl(*ah_divLnaConfGet)(struct ath_hal *,
HAL_ANT_COMB_CONFIG *);
void __ahdecl(*ah_divLnaConfSet)(struct ath_hal *,
HAL_ANT_COMB_CONFIG *);
};
extern const char *__ahdecl ath_hal_probe(uint16_t vendorid, uint16_t devid);
extern struct ath_hal * __ahdecl ath_hal_attach(uint16_t devid, HAL_SOFTC,
HAL_BUS_TAG, HAL_BUS_HANDLE, uint16_t *eepromdata,
HAL_OPS_CONFIG *ah_config, HAL_STATUS* status);
extern const char *ath_hal_mac_name(struct ath_hal *);
extern const char *ath_hal_rf_name(struct ath_hal *);
struct ieee80211_channel;
extern HAL_STATUS __ahdecl ath_hal_getchannels(struct ath_hal *,
struct ieee80211_channel *chans, u_int maxchans, int *nchans,
u_int modeSelect, HAL_CTRY_CODE cc, HAL_REG_DOMAIN regDmn,
HAL_BOOL enableExtendedChannels);
extern HAL_STATUS __ahdecl ath_hal_init_channels(struct ath_hal *,
struct ieee80211_channel *chans, u_int maxchans, int *nchans,
u_int modeSelect, HAL_CTRY_CODE cc, HAL_REG_DOMAIN rd,
HAL_BOOL enableExtendedChannels);
extern HAL_STATUS __ahdecl ath_hal_set_channels(struct ath_hal *,
struct ieee80211_channel *chans, int nchans,
HAL_CTRY_CODE cc, HAL_REG_DOMAIN regDmn);
extern int __ahdecl ath_hal_get_mimo_chan_noise(struct ath_hal *ah,
const struct ieee80211_channel *chan, int16_t *nf_ctl,
int16_t *nf_ext);
extern void __ahdecl ath_hal_process_noisefloor(struct ath_hal *ah);
extern u_int __ahdecl ath_hal_getwirelessmodes(struct ath_hal*);
extern int ath_hal_get_curmode(struct ath_hal *ah,
const struct ieee80211_channel *chan);
extern uint32_t __ahdecl ath_hal_pkt_txtime(struct ath_hal *ah,
const HAL_RATE_TABLE *rates, uint32_t frameLen,
uint16_t rateix, HAL_BOOL isht40, HAL_BOOL shortPreamble,
HAL_BOOL includeSifs);
extern uint32_t __ahdecl ath_computedur_ht(uint32_t frameLen, uint16_t rate,
int streams, HAL_BOOL isht40, HAL_BOOL isShortGI);
extern uint16_t __ahdecl ath_hal_computetxtime(struct ath_hal *,
const HAL_RATE_TABLE *rates, uint32_t frameLen,
uint16_t rateix, HAL_BOOL shortPreamble,
HAL_BOOL includeSifs);
extern void __ahdecl ath_hal_adjusttsf(struct ath_hal *ah, int32_t tsfdelta);
void __ahdecl ath_hal_setcca(struct ath_hal *ah, int ena);
int __ahdecl ath_hal_getcca(struct ath_hal *ah);
void __ahdecl ath_hal_set_dfs_cac_tx_quiet(struct ath_hal *ah, HAL_BOOL ena);
HAL_BOOL __ahdecl ath_hal_EepromDataRead(struct ath_hal *ah,
u_int off, uint16_t *data);
static inline u_int32_t
ath_hal_get_mfp_qos(struct ath_hal *ah)
{
return HAL_MFP_QOSDATA;
}
extern u_int ath_hal_mac_clks(struct ath_hal *ah, u_int usecs);
extern u_int ath_hal_mac_usec(struct ath_hal *ah, u_int clks);
extern uint64_t ath_hal_mac_psec(struct ath_hal *ah, u_int clks);
#endif