⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ar5xxx.h

📁 无线网卡驱动 固件程序 There are currently 3 "programming generations" of Atheros 802.11 wireless devices (
💻 H
📖 第 1 页 / 共 5 页
字号:
#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 + -