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

📄 rtmp_mac.h

📁 ralink 2870 usb无线网卡 最新驱动
💻 H
📖 第 1 页 / 共 5 页
字号:
/* ************************************************************************* * Ralink Tech Inc. * 5F., No.36, Taiyuan St., Jhubei City, * Hsinchu County 302, * Taiwan, R.O.C. * * (c) Copyright 2002-2007, Ralink Technology, Inc. * * This program is free software; you can redistribute it and/or modify  *  * it under the terms of the GNU General Public License as published by  *  * the Free Software Foundation; either version 2 of the License, or     *  * (at your option) any later version.                                   *  *                                                                       *  * This program is distributed in the hope that it will be useful,       *  * but WITHOUT ANY WARRANTY; without even the implied warranty of        *  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *  * GNU General Public License for more details.                          *  *                                                                       *  * You should have received a copy of the GNU General Public License     *  * along with this program; if not, write to the                         *  * Free Software Foundation, Inc.,                                       *  * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *  *                                                                       *  *************************************************************************	Module Name:	rtmp_mac.h	Abstract:	Ralink Wireless Chip MAC related definition & structures	Revision History:	Who			When		  What	--------	----------	  ----------------------------------------------*/#ifndef __RTMP_MAC_H__#define __RTMP_MAC_H__// =================================================================================// TX / RX ring descriptor format// =================================================================================// the first 24-byte in TXD is called TXINFO and will be DMAed to MAC block through TXFIFO.// MAC block use this TXINFO to control the transmission behavior of this frame.#define FIFO_MGMT                 0#define FIFO_HCCA                 1#define FIFO_EDCA                 2//// TXD Wireless Information format for Tx ring and Mgmt Ring////txop : for txop mode// 0:txop for the MPDU frame will be handles by ASIC by register// 1/2/3:the MPDU frame is send after PIFS/backoff/SIFS#ifdef RT_BIG_ENDIANtypedef	struct	PACKED _TXWI_STRUC {	// Word 0	UINT32		PHYMODE:2;	UINT32		TxBF:1;	// 3*3	UINT32		rsv2:1;//	UINT32		rsv2:2;	UINT32		Ifs:1;	// 	UINT32		STBC:2;	//channel bandwidth 20MHz or 40 MHz	UINT32		ShortGI:1;	UINT32		BW:1;	//channel bandwidth 20MHz or 40 MHz	UINT32		MCS:7;		UINT32		rsv:6;	UINT32		txop:2;	//tx back off mode 0:HT TXOP rule , 1:PIFS TX ,2:Backoff, 3:sifs only when previous frame exchange is successful.	UINT32		MpduDensity:3;	UINT32		AMPDU:1;		UINT32		TS:1;	UINT32		CFACK:1;	UINT32		MIMOps:1;	// the remote peer is in dynamic MIMO-PS mode	UINT32		FRAG:1;		// 1 to inform TKIP engine this is a fragment.	// Word 1	UINT32		PacketId:4;	UINT32		MPDUtotalByteCount:12;	UINT32		WirelessCliID:8;	UINT32		BAWinSize:6;	UINT32		NSEQ:1;	UINT32		ACK:1;	// Word 2	UINT32		IV;	// Word 3	UINT32		EIV;}	TXWI_STRUC, *PTXWI_STRUC;#elsetypedef	struct	PACKED _TXWI_STRUC {	// Word	0	// ex: 00 03 00 40 means txop = 3, PHYMODE = 1	UINT32		FRAG:1;		// 1 to inform TKIP engine this is a fragment.	UINT32		MIMOps:1;	// the remote peer is in dynamic MIMO-PS mode	UINT32		CFACK:1;	UINT32		TS:1;			UINT32		AMPDU:1;	UINT32		MpduDensity:3;	UINT32		txop:2;	//FOR "THIS" frame. 0:HT TXOP rule , 1:PIFS TX ,2:Backoff, 3:sifs only when previous frame exchange is successful.	UINT32		rsv:6;		UINT32		MCS:7;	UINT32		BW:1;	//channel bandwidth 20MHz or 40 MHz	UINT32		ShortGI:1;	UINT32		STBC:2;	// 1: STBC support MCS =0-7,   2,3 : RESERVE	UINT32		Ifs:1;	// //	UINT32		rsv2:2;	//channel bandwidth 20MHz or 40 MHz	UINT32		rsv2:1;	UINT32		TxBF:1;	// 3*3	UINT32		PHYMODE:2;  	// Word1	// ex:  1c ff 38 00 means ACK=0, BAWinSize=7, MPDUtotalByteCount = 0x38	UINT32		ACK:1;	UINT32		NSEQ:1;	UINT32		BAWinSize:6;	UINT32		WirelessCliID:8;	UINT32		MPDUtotalByteCount:12;	UINT32		PacketId:4;	//Word2	UINT32		IV;	//Word3	UINT32		EIV;}	TXWI_STRUC, *PTXWI_STRUC;#endif//// RXWI wireless information format, in PBF. invisible in driver. //#ifdef RT_BIG_ENDIANtypedef	struct	PACKED _RXWI_STRUC {	// Word 0	UINT32		TID:4;	UINT32		MPDUtotalByteCount:12;	UINT32		UDF:3;	UINT32		BSSID:3;	UINT32		KeyIndex:2;	UINT32		WirelessCliID:8;	// Word 1	UINT32		PHYMODE:2;              // 1: this RX frame is unicast to me	UINT32		rsv:3;	UINT32		STBC:2;	UINT32		ShortGI:1;	UINT32		BW:1;	UINT32		MCS:7;	UINT32		SEQUENCE:12;	UINT32		FRAG:4;	// Word 2	UINT32		rsv1:8;	UINT32		RSSI2:8;	UINT32		RSSI1:8;	UINT32		RSSI0:8;	// Word 3	/*UINT32		rsv2:16;*/	UINT32		rsv2:8;		UINT32		FOFFSET:8;	// RT35xx		UINT32		SNR1:8;	UINT32		SNR0:8;}	RXWI_STRUC, *PRXWI_STRUC;#elsetypedef	struct	PACKED _RXWI_STRUC {	// Word	0	UINT32		WirelessCliID:8;	UINT32		KeyIndex:2;	UINT32		BSSID:3;	UINT32		UDF:3;	UINT32		MPDUtotalByteCount:12;	UINT32		TID:4;	// Word	1	UINT32		FRAG:4;	UINT32		SEQUENCE:12;	UINT32		MCS:7;	UINT32		BW:1;	UINT32		ShortGI:1;	UINT32		STBC:2;	UINT32		rsv:3;	UINT32		PHYMODE:2;              // 1: this RX frame is unicast to me	//Word2	UINT32		RSSI0:8;	UINT32		RSSI1:8;	UINT32		RSSI2:8;	UINT32		rsv1:8;	//Word3	UINT32		SNR0:8;	UINT32		SNR1:8;	UINT32		FOFFSET:8;	// RT35xx		UINT32		rsv2:8;	/*UINT32		rsv2:16;*/}	RXWI_STRUC, *PRXWI_STRUC;#endif// =================================================================================// Register format// =================================================================================//// SCH/DMA registers - base address 0x0200//// INT_SOURCE_CSR: Interrupt source register. Write one to clear corresponding bit//#define DMA_CSR0		0x200#define INT_SOURCE_CSR		0x200#ifdef RT_BIG_ENDIANtypedef	union	_INT_SOURCE_CSR_STRUC	{	struct	{		UINT32       	:14;		UINT32       	TxCoherent:1;		UINT32       	RxCoherent:1;		UINT32       	GPTimer:1;		UINT32       	AutoWakeup:1;//bit14		UINT32       	TXFifoStatusInt:1;//FIFO Statistics is full, sw should read 0x171c		UINT32       	PreTBTT:1;		UINT32       	TBTTInt:1;		UINT32       	RxTxCoherent:1;		UINT32       	MCUCommandINT:1;		UINT32       	MgmtDmaDone:1;		UINT32       	HccaDmaDone:1;		UINT32       	Ac3DmaDone:1;		UINT32       	Ac2DmaDone:1;		UINT32       	Ac1DmaDone:1;		UINT32		Ac0DmaDone:1;		UINT32		RxDone:1;		UINT32		TxDelayINT:1;	//delayed interrupt, not interrupt until several int or time limit hit		UINT32		RxDelayINT:1; //dealyed interrupt	}	field;	UINT32			word;}	INT_SOURCE_CSR_STRUC, *PINT_SOURCE_CSR_STRUC;#elsetypedef	union	_INT_SOURCE_CSR_STRUC	{	struct	{		UINT32		RxDelayINT:1;		UINT32		TxDelayINT:1;		UINT32		RxDone:1;		UINT32		Ac0DmaDone:1;//4      		UINT32       	Ac1DmaDone:1;		UINT32       	Ac2DmaDone:1;		UINT32       	Ac3DmaDone:1;		UINT32       	HccaDmaDone:1; // bit7		UINT32       	MgmtDmaDone:1;		UINT32       	MCUCommandINT:1;//bit 9		UINT32       	RxTxCoherent:1;		UINT32       	TBTTInt:1;		UINT32       	PreTBTT:1;		UINT32       	TXFifoStatusInt:1;//FIFO Statistics is full, sw should read 0x171c		UINT32       	AutoWakeup:1;//bit14		UINT32       	GPTimer:1;		UINT32       	RxCoherent:1;//bit16		UINT32       	TxCoherent:1;		UINT32       	:14;	}	field;	UINT32			word;} INT_SOURCE_CSR_STRUC, *PINT_SOURCE_CSR_STRUC;#endif//// INT_MASK_CSR:   Interrupt MASK register.   1: the interrupt is mask OFF//#define INT_MASK_CSR        0x204#ifdef RT_BIG_ENDIANtypedef	union	_INT_MASK_CSR_STRUC	{	struct	{		UINT32       	TxCoherent:1;		UINT32       	RxCoherent:1;		UINT32       	:20;		UINT32       	MCUCommandINT:1;		UINT32       	MgmtDmaDone:1;		UINT32       	HccaDmaDone:1;		UINT32       	Ac3DmaDone:1;		UINT32       	Ac2DmaDone:1;		UINT32       	Ac1DmaDone:1;		UINT32		Ac0DmaDone:1;		UINT32		RxDone:1;		UINT32		TxDelay:1;		UINT32		RXDelay_INT_MSK:1;	}	field;	UINT32			word;}INT_MASK_CSR_STRUC, *PINT_MASK_CSR_STRUC;#elsetypedef	union	_INT_MASK_CSR_STRUC	{	struct	{		UINT32		RXDelay_INT_MSK:1;		UINT32		TxDelay:1;		UINT32		RxDone:1;		UINT32		Ac0DmaDone:1;		UINT32       	Ac1DmaDone:1;		UINT32       	Ac2DmaDone:1;		UINT32       	Ac3DmaDone:1;		UINT32       	HccaDmaDone:1;		UINT32       	MgmtDmaDone:1;		UINT32       	MCUCommandINT:1;		UINT32       	:20;		UINT32       	RxCoherent:1;		UINT32       	TxCoherent:1;	}	field;	UINT32			word;} INT_MASK_CSR_STRUC, *PINT_MASK_CSR_STRUC;#endif#define WPDMA_GLO_CFG 	0x208#ifdef RT_BIG_ENDIANtypedef	union	_WPDMA_GLO_CFG_STRUC	{	struct	{		UINT32       	HDR_SEG_LEN:16;		UINT32       	RXHdrScater:8;		UINT32       	BigEndian:1;		UINT32       	EnTXWriteBackDDONE:1;		UINT32       	WPDMABurstSIZE:2;		UINT32		RxDMABusy:1;		UINT32		EnableRxDMA:1;		UINT32		TxDMABusy:1;		UINT32		EnableTxDMA:1;	}	field;	UINT32			word;}WPDMA_GLO_CFG_STRUC, *PWPDMA_GLO_CFG_STRUC;#elsetypedef	union	_WPDMA_GLO_CFG_STRUC	{	struct	{		UINT32		EnableTxDMA:1;		UINT32		TxDMABusy:1;		UINT32		EnableRxDMA:1;		UINT32		RxDMABusy:1;		UINT32       	WPDMABurstSIZE:2;		UINT32       	EnTXWriteBackDDONE:1;		UINT32       	BigEndian:1;		UINT32       	RXHdrScater:8;		UINT32       	HDR_SEG_LEN:16;	}	field;	UINT32			word;} WPDMA_GLO_CFG_STRUC, *PWPDMA_GLO_CFG_STRUC;#endif#define WPDMA_RST_IDX 	0x20c#ifdef RT_BIG_ENDIANtypedef	union	_WPDMA_RST_IDX_STRUC	{	struct	{		UINT32       	:15;		UINT32       	RST_DRX_IDX0:1;		UINT32       	rsv:10;		UINT32       	RST_DTX_IDX5:1;		UINT32       	RST_DTX_IDX4:1;		UINT32		RST_DTX_IDX3:1;		UINT32		RST_DTX_IDX2:1;		UINT32		RST_DTX_IDX1:1;		UINT32		RST_DTX_IDX0:1;	}	field;	UINT32			word;}WPDMA_RST_IDX_STRUC, *PWPDMA_RST_IDX_STRUC;#elsetypedef	union	_WPDMA_RST_IDX_STRUC	{	struct	{		UINT32		RST_DTX_IDX0:1;		UINT32		RST_DTX_IDX1:1;		UINT32		RST_DTX_IDX2:1;		UINT32		RST_DTX_IDX3:1;		UINT32       	RST_DTX_IDX4:1;		UINT32       	RST_DTX_IDX5:1;		UINT32       	rsv:10;		UINT32       	RST_DRX_IDX0:1;		UINT32       	:15;	}	field;	UINT32			word;} WPDMA_RST_IDX_STRUC, *PWPDMA_RST_IDX_STRUC;#endif#define DELAY_INT_CFG  0x0210#ifdef RT_BIG_ENDIANtypedef	union	_DELAY_INT_CFG_STRUC	{	struct	{		UINT32       	TXDLY_INT_EN:1;		UINT32       	TXMAX_PINT:7;		UINT32       	TXMAX_PTIME:8;		UINT32       	RXDLY_INT_EN:1;		UINT32       	RXMAX_PINT:7;		UINT32		RXMAX_PTIME:8;	}	field;	UINT32			word;}DELAY_INT_CFG_STRUC, *PDELAY_INT_CFG_STRUC;#elsetypedef	union	_DELAY_INT_CFG_STRUC	{	struct	{		UINT32		RXMAX_PTIME:8;		UINT32       	RXMAX_PINT:7;		UINT32       	RXDLY_INT_EN:1;		UINT32       	TXMAX_PTIME:8;		UINT32       	TXMAX_PINT:7;		UINT32       	TXDLY_INT_EN:1;	}	field;	UINT32			word;} DELAY_INT_CFG_STRUC, *PDELAY_INT_CFG_STRUC;#endif#define WMM_AIFSN_CFG   0x0214#ifdef RT_BIG_ENDIANtypedef	union	_AIFSN_CSR_STRUC	{	struct	{	    UINT32   Rsv:16;	    UINT32   Aifsn3:4;       // for AC_VO	    UINT32   Aifsn2:4;       // for AC_VI	    UINT32   Aifsn1:4;       // for AC_BK	    UINT32   Aifsn0:4;       // for AC_BE	}	field;	UINT32			word;}	AIFSN_CSR_STRUC, *PAIFSN_CSR_STRUC;#elsetypedef	union	_AIFSN_CSR_STRUC	{	struct	{	    UINT32   Aifsn0:4;       // for AC_BE	    UINT32   Aifsn1:4;       // for AC_BK	    UINT32   Aifsn2:4;       // for AC_VI	    UINT32   Aifsn3:4;       // for AC_VO	    UINT32   Rsv:16;	}	field;	UINT32			word;}	AIFSN_CSR_STRUC, *PAIFSN_CSR_STRUC;#endif//// CWMIN_CSR: CWmin for each EDCA AC//#define WMM_CWMIN_CFG   0x0218#ifdef RT_BIG_ENDIANtypedef	union	_CWMIN_CSR_STRUC	{	struct	{	    UINT32   Rsv:16;	    UINT32   Cwmin3:4;       // for AC_VO	    UINT32   Cwmin2:4;       // for AC_VI	    UINT32   Cwmin1:4;       // for AC_BK	    UINT32   Cwmin0:4;       // for AC_BE	}	field;	UINT32			word;}	CWMIN_CSR_STRUC, *PCWMIN_CSR_STRUC;#else

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -