📄 ar5xxx.h
字号:
#define AR5K_AR5111_GAIN_OPT { \ 4, \ 9, \ { \ { { 4, 1, 1, 1 }, 6 }, \ { { 4, 0, 1, 1 }, 4 }, \ { { 3, 1, 1, 1 }, 3 }, \ { { 4, 0, 0, 1 }, 1 }, \ { { 4, 1, 1, 0 }, 0 }, \ { { 4, 0, 1, 0 }, -2 }, \ { { 3, 1, 1, 0 }, -3 }, \ { { 4, 0, 0, 0 }, -4 }, \ { { 2, 1, 1, 0 }, -6 } \ } \}#define AR5K_AR5112_GAIN_OPT { \ 1, \ 8, \ { \ { { 3, 0, 0, 0, 0, 0, 0 }, 6 }, \ { { 2, 0, 0, 0, 0, 0, 0 }, 0 }, \ { { 1, 0, 0, 0, 0, 0, 0 }, -3 }, \ { { 0, 0, 0, 0, 0, 0, 0 }, -6 }, \ { { 0, 1, 1, 0, 0, 0, 0 }, -8 }, \ { { 0, 1, 1, 0, 1, 1, 0 }, -10 }, \ { { 0, 1, 0, 1, 1, 1, 0 }, -13 }, \ { { 0, 1, 0, 1, 1, 0, 1 }, -16 }, \ } \}/* * Common ar5xxx EEPROM data registers */#define AR5K_EEPROM_MAGIC 0x003d#define AR5K_EEPROM_MAGIC_VALUE 0x5aa5#define AR5K_EEPROM_PROTECT 0x003f#define AR5K_EEPROM_PROTECT_RD_0_31 0x0001#define AR5K_EEPROM_PROTECT_WR_0_31 0x0002#define AR5K_EEPROM_PROTECT_RD_32_63 0x0004#define AR5K_EEPROM_PROTECT_WR_32_63 0x0008#define AR5K_EEPROM_PROTECT_RD_64_127 0x0010#define AR5K_EEPROM_PROTECT_WR_64_127 0x0020#define AR5K_EEPROM_PROTECT_RD_128_191 0x0040#define AR5K_EEPROM_PROTECT_WR_128_191 0x0080#define AR5K_EEPROM_PROTECT_RD_192_207 0x0100#define AR5K_EEPROM_PROTECT_WR_192_207 0x0200#define AR5K_EEPROM_PROTECT_RD_208_223 0x0400#define AR5K_EEPROM_PROTECT_WR_208_223 0x0800#define AR5K_EEPROM_PROTECT_RD_224_239 0x1000#define AR5K_EEPROM_PROTECT_WR_224_239 0x2000#define AR5K_EEPROM_PROTECT_RD_240_255 0x4000#define AR5K_EEPROM_PROTECT_WR_240_255 0x8000#define AR5K_EEPROM_REG_DOMAIN 0x00bf#define AR5K_EEPROM_INFO_BASE 0x00c0#define AR5K_EEPROM_INFO_MAX (0x400 - AR5K_EEPROM_INFO_BASE)#define AR5K_EEPROM_INFO_CKSUM 0xffff#define AR5K_EEPROM_INFO(_n) (AR5K_EEPROM_INFO_BASE + (_n))#define AR5K_EEPROM_VERSION AR5K_EEPROM_INFO(1)#define AR5K_EEPROM_VERSION_3_0 0x3000#define AR5K_EEPROM_VERSION_3_1 0x3001#define AR5K_EEPROM_VERSION_3_2 0x3002#define AR5K_EEPROM_VERSION_3_3 0x3003#define AR5K_EEPROM_VERSION_3_4 0x3004#define AR5K_EEPROM_VERSION_4_0 0x4000#define AR5K_EEPROM_VERSION_4_1 0x4001#define AR5K_EEPROM_VERSION_4_2 0x4002#define AR5K_EEPROM_VERSION_4_3 0x4003#define AR5K_EEPROM_VERSION_4_6 0x4006#define AR5K_EEPROM_VERSION_4_7 0x3007#define AR5K_EEPROM_MODE_11A 0#define AR5K_EEPROM_MODE_11B 1#define AR5K_EEPROM_MODE_11G 2#define AR5K_EEPROM_HDR AR5K_EEPROM_INFO(2)#define AR5K_EEPROM_HDR_11A(_v) (((_v) >> AR5K_EEPROM_MODE_11A) & 0x1)#define AR5K_EEPROM_HDR_11B(_v) (((_v) >> AR5K_EEPROM_MODE_11B) & 0x1)#define AR5K_EEPROM_HDR_11G(_v) (((_v) >> AR5K_EEPROM_MODE_11G) & 0x1)#define AR5K_EEPROM_HDR_T_2GHZ_DIS(_v) (((_v) >> 3) & 0x1)#define AR5K_EEPROM_HDR_T_5GHZ_DBM(_v) (((_v) >> 4) & 0x7f)#define AR5K_EEPROM_HDR_DEVICE(_v) (((_v) >> 11) & 0x7)#define AR5K_EEPROM_HDR_T_5GHZ_DIS(_v) (((_v) >> 15) & 0x1)#define AR5K_EEPROM_HDR_RFKILL(_v) (((_v) >> 14) & 0x1)#define AR5K_EEPROM_RFKILL_GPIO_SEL 0x0000001c#define AR5K_EEPROM_RFKILL_GPIO_SEL_S 2#define AR5K_EEPROM_RFKILL_POLARITY 0x00000002#define AR5K_EEPROM_RFKILL_POLARITY_S 1/* Newer EEPROMs are using a different offset */#define AR5K_EEPROM_OFF(_v, _v3_0, _v3_3) \ (((_v) >= AR5K_EEPROM_VERSION_3_3) ? _v3_3 : _v3_0)#define AR5K_EEPROM_ANT_GAIN(_v) AR5K_EEPROM_OFF(_v, 0x00c4, 0x00c3)#define AR5K_EEPROM_ANT_GAIN_5GHZ(_v) ((int8_t)(((_v) >> 8) & 0xff))#define AR5K_EEPROM_ANT_GAIN_2GHZ(_v) ((int8_t)((_v) & 0xff))#define AR5K_EEPROM_MODES_11A(_v) AR5K_EEPROM_OFF(_v, 0x00c5, 0x00d4)#define AR5K_EEPROM_MODES_11B(_v) AR5K_EEPROM_OFF(_v, 0x00d0, 0x00f2)#define AR5K_EEPROM_MODES_11G(_v) AR5K_EEPROM_OFF(_v, 0x00da, 0x010d)#define AR5K_EEPROM_CTL(_v) AR5K_EEPROM_OFF(_v, 0x00e4, 0x0128)/* Since 3.1 */#define AR5K_EEPROM_OBDB0_2GHZ 0x00ec#define AR5K_EEPROM_OBDB1_2GHZ 0x00ed/* Misc values available since EEPROM 4.0 */#define AR5K_EEPROM_MISC0 0x00c4#define AR5K_EEPROM_EARSTART(_v) ((_v) & 0xfff)#define AR5K_EEPROM_EEMAP(_v) (((_v) >> 14) & 0x3)#define AR5K_EEPROM_MISC1 0x00c5#define AR5K_EEPROM_TARGET_PWRSTART(_v) ((_v) & 0xfff)#define AR5K_EEPROM_HAS32KHZCRYSTAL(_v) (((_v) >> 14) & 0x1)/* Some EEPROM defines */#define AR5K_EEPROM_EEP_SCALE 100#define AR5K_EEPROM_EEP_DELTA 10#define AR5K_EEPROM_N_MODES 3#define AR5K_EEPROM_N_5GHZ_CHAN 10#define AR5K_EEPROM_N_2GHZ_CHAN 3#define AR5K_EEPROM_MAX_CHAN 10#define AR5K_EEPROM_N_PCDAC 11#define AR5K_EEPROM_N_TEST_FREQ 8#define AR5K_EEPROM_N_EDGES 8#define AR5K_EEPROM_N_INTERCEPTS 11#define AR5K_EEPROM_FREQ_M(_v) AR5K_EEPROM_OFF(_v, 0x7f, 0xff)#define AR5K_EEPROM_PCDAC_M 0x3f#define AR5K_EEPROM_PCDAC_START 1#define AR5K_EEPROM_PCDAC_STOP 63#define AR5K_EEPROM_PCDAC_STEP 1#define AR5K_EEPROM_NON_EDGE_M 0x40#define AR5K_EEPROM_CHANNEL_POWER 8#define AR5K_EEPROM_N_OBDB 4#define AR5K_EEPROM_OBDB_DIS 0xffff#define AR5K_EEPROM_CHANNEL_DIS 0xff#define AR5K_EEPROM_SCALE_OC_DELTA(_x) (((_x) * 2) / 10)#define AR5K_EEPROM_N_CTLS(_v) AR5K_EEPROM_OFF(_v, 16, 32)#define AR5K_EEPROM_MAX_CTLS 32#define AR5K_EEPROM_N_XPD_PER_CHANNEL 4#define AR5K_EEPROM_N_XPD0_POINTS 4#define AR5K_EEPROM_N_XPD3_POINTS 3#define AR5K_EEPROM_N_INTERCEPT_10_2GHZ 35#define AR5K_EEPROM_N_INTERCEPT_10_5GHZ 55#define AR5K_EEPROM_POWER_M 0x3f#define AR5K_EEPROM_POWER_MIN 0#define AR5K_EEPROM_POWER_MAX 3150#define AR5K_EEPROM_POWER_STEP 50#define AR5K_EEPROM_POWER_TABLE_SIZE 64#define AR5K_EEPROM_N_POWER_LOC_11B 4#define AR5K_EEPROM_N_POWER_LOC_11G 6#define AR5K_EEPROM_I_GAIN 10#define AR5K_EEPROM_CCK_OFDM_DELTA 15#define AR5K_EEPROM_N_IQ_CAL 2struct ar5k_eeprom_info { u_int16_t ee_magic; u_int16_t ee_protect; u_int16_t ee_regdomain; u_int16_t ee_version; u_int16_t ee_header; u_int16_t ee_ant_gain; u_int16_t ee_misc0; u_int16_t ee_misc1; u_int16_t ee_cck_ofdm_gain_delta; u_int16_t ee_cck_ofdm_power_delta; u_int16_t ee_scaled_cck_delta; u_int16_t ee_tx_clip; u_int16_t ee_pwd_84; u_int16_t ee_pwd_90; u_int16_t ee_gain_select; u_int16_t ee_i_cal[AR5K_EEPROM_N_MODES]; u_int16_t ee_q_cal[AR5K_EEPROM_N_MODES]; u_int16_t ee_fixed_bias[AR5K_EEPROM_N_MODES]; u_int16_t ee_turbo_max_power[AR5K_EEPROM_N_MODES]; u_int16_t ee_xr_power[AR5K_EEPROM_N_MODES]; u_int16_t ee_switch_settling[AR5K_EEPROM_N_MODES]; u_int16_t ee_ant_tx_rx[AR5K_EEPROM_N_MODES]; u_int16_t ee_ant_control[AR5K_EEPROM_N_MODES][AR5K_EEPROM_N_PCDAC]; u_int16_t ee_ob[AR5K_EEPROM_N_MODES][AR5K_EEPROM_N_OBDB]; u_int16_t ee_db[AR5K_EEPROM_N_MODES][AR5K_EEPROM_N_OBDB]; u_int16_t ee_tx_end2xlna_enable[AR5K_EEPROM_N_MODES]; u_int16_t ee_tx_end2xpa_disable[AR5K_EEPROM_N_MODES]; u_int16_t ee_tx_frm2xpa_enable[AR5K_EEPROM_N_MODES]; u_int16_t ee_thr_62[AR5K_EEPROM_N_MODES]; u_int16_t ee_xlna_gain[AR5K_EEPROM_N_MODES]; u_int16_t ee_xpd[AR5K_EEPROM_N_MODES]; u_int16_t ee_x_gain[AR5K_EEPROM_N_MODES]; u_int16_t ee_i_gain[AR5K_EEPROM_N_MODES]; u_int16_t ee_margin_tx_rx[AR5K_EEPROM_N_MODES]; u_int16_t ee_false_detect[AR5K_EEPROM_N_MODES]; u_int16_t ee_cal_pier[AR5K_EEPROM_N_MODES][AR5K_EEPROM_N_2GHZ_CHAN]; u_int16_t ee_channel[AR5K_EEPROM_N_MODES][AR5K_EEPROM_MAX_CHAN]; u_int16_t ee_ctls; u_int16_t ee_ctl[AR5K_EEPROM_MAX_CTLS]; int16_t ee_noise_floor_thr[AR5K_EEPROM_N_MODES]; int8_t ee_adc_desired_size[AR5K_EEPROM_N_MODES]; int8_t ee_pga_desired_size[AR5K_EEPROM_N_MODES];};/* * Chipset capabilities */typedef enum { HAL_CAP_REG_DMN = 0, /* current regulatory domain */ HAL_CAP_CIPHER = 1, /* hardware supports cipher */ HAL_CAP_TKIP_MIC = 2, /* handle TKIP MIC in hardware */ HAL_CAP_TKIP_SPLIT = 3, /* hardware TKIP uses split keys */ HAL_CAP_PHYCOUNTERS = 4, /* hardware PHY error counters */ HAL_CAP_DIVERSITY = 5, /* hardware supports fast diversity */ HAL_CAP_KEYCACHE_SIZE = 6, /* number of entries in key cache */ HAL_CAP_NUM_TXQUEUES = 7, /* number of hardware xmit queues */ HAL_CAP_VEOL = 9, /* hardware supports virtual EOL */ HAL_CAP_PSPOLL = 10, /* hardware has working PS-Poll support */ HAL_CAP_DIAG = 11, /* hardware diagnostic support */ HAL_CAP_COMPRESSION = 12, /* hardware supports compression */ HAL_CAP_BURST = 13, /* hardware supports packet bursting */ HAL_CAP_FASTFRAME = 14, /* hardware supoprts fast frames */ HAL_CAP_TXPOW = 15, /* global tx power limit */ HAL_CAP_TPC = 16, /* per-packet tx power control */ HAL_CAP_PHYDIAG = 17, /* hardware phy error diagnostic */ HAL_CAP_BSSIDMASK = 18, /* hardware supports bssid mask */ HAL_CAP_MCAST_KEYSRCH = 19, /* hardware has multicast key search */ HAL_CAP_TSF_ADJUST = 20, /* hardware has beacon tsf adjust */ HAL_CAP_XR = 21, /* hardware has XR support */ HAL_CAP_WME_TKIPMIC = 22, /* hardware can support TKIP MIC when WMM is turned on */ HAL_CAP_CHAN_HALFRATE = 23, /* hardware can support half rate channels */ HAL_CAP_CHAN_QUARTERRATE = 24, /* hardware can support quarter rate channels */ HAL_CAP_RFSILENT = 25, /* hardware has rfsilent support */} HAL_CAPABILITY_TYPE;typedef struct { /* * Supported PHY modes * (ie. IEEE80211_CHAN_A, IEEE80211_CHAN_B, ...) */ u_int16_t cap_mode; /* * Frequency range (without regulation restrictions) */ struct { u_int16_t range_2ghz_min; u_int16_t range_2ghz_max; u_int16_t range_5ghz_min; u_int16_t range_5ghz_max; } cap_range; /* * Active regulation domain settings */ struct { ieee80211_regdomain_t reg_current; ieee80211_regdomain_t reg_hw; } cap_regdomain; /* * Values stored in the EEPROM (some of them...) */ struct ar5k_eeprom_info cap_eeprom; /* * Queue information */ struct { u_int8_t q_tx_num; } cap_queues;} ar5k_capabilities_t;/* * TX power and TPC settings */#define AR5K_TXPOWER_OFDM(_r, _v) ( \ ((0 & 1) << ((_v) + 6)) | \ (((hal->ah_txpower.txp_rates[(_r)]) & 0x3f) << (_v)) \)#define AR5K_TXPOWER_CCK(_r, _v) ( \ (hal->ah_txpower.txp_rates[(_r)] & 0x3f) << (_v) \)/* * Atheros descriptor definitions */struct ath_tx_status { u_int16_t ts_seqnum; u_int16_t ts_tstamp; u_int8_t ts_status; u_int8_t ts_rate; int8_t ts_rssi; u_int8_t ts_shortretry; u_int8_t ts_longretry; u_int8_t ts_virtcol; u_int8_t ts_antenna;};#define HAL_TXSTAT_ALTRATE 0x80#define HAL_TXERR_XRETRY 0x01#define HAL_TXERR_FILT 0x02#define HAL_TXERR_FIFO 0x04struct ath_rx_status { u_int16_t rs_datalen; u_int16_t rs_tstamp; u_int8_t rs_status; u_int8_t rs_phyerr; int8_t rs_rssi; u_int8_t rs_keyix; u_int8_t rs_rate; u_int8_t rs_antenna; u_int8_t rs_more;};#define HAL_RXERR_CRC 0x01#define HAL_RXERR_PHY 0x02#define HAL_RXERR_FIFO 0x04#define HAL_RXERR_DECRYPT 0x08#define HAL_RXERR_MIC 0x10#define HAL_RXKEYIX_INVALID ((u_int8_t) - 1)#define HAL_TXKEYIX_INVALID ((u_int32_t) - 1)#define HAL_PHYERR_UNDERRUN 0x00#define HAL_PHYERR_TIMING 0x01#define HAL_PHYERR_PARITY 0x02#define HAL_PHYERR_RATE 0x03#define HAL_PHYERR_LENGTH 0x04#define HAL_PHYERR_RADAR 0x05#define HAL_PHYERR_SERVICE 0x06#define HAL_PHYERR_TOR 0x07#define HAL_PHYERR_OFDM_TIMING 0x11#define HAL_PHYERR_OFDM_SIGNAL_PARITY 0x12#define HAL_PHYERR_OFDM_RATE_ILLEGAL 0x13#define HAL_PHYERR_OFDM_LENGTH_ILLEGAL 0x14#define HAL_PHYERR_OFDM_POWER_DROP 0x15#define HAL_PHYERR_OFDM_SERVICE 0x16#define HAL_PHYERR_OFDM_RESTART 0x17#define HAL_PHYERR_CCK_TIMING 0x19#define HAL_PHYERR_CCK_HEADER_CRC 0x1a#define HAL_PHYERR_CCK_RATE_ILLEGAL 0x1b#define HAL_PHYERR_CCK_SERVICE 0x1e#define HAL_PHYERR_CCK_RESTART 0x1fstruct ath_desc { u_int32_t ds_link; u_int32_t ds_data; u_int32_t ds_ctl0; u_int32_t ds_ctl1; u_int32_t ds_hw[4]; union { struct ath_rx_status rx; struct ath_tx_status tx; } ds_us;#define ds_rxstat ds_us.rx#define ds_txstat ds_us.tx} __packed;#define HAL_RXDESC_INTREQ 0x0020#define HAL_TXDESC_CLRDMASK 0x0001#define HAL_TXDESC_NOACK 0x0002#define HAL_TXDESC_RTSENA 0x0004#define HAL_TXDESC_CTSENA 0x0008#define HAL_TXDESC_INTREQ 0x0010#define HAL_TXDESC_VEOL 0x0020/* * Hardware abstraction layer structure */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -