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

📄 rt2570sw.h

📁 台湾RALink公司的 rt2570无线 802.11g 网卡的 驱动的源代码 ,支持linux2.4以上的 内河
💻 H
📖 第 1 页 / 共 5 页
字号:

//
// P802.11 Frame control field, 16 bit
//
typedef	struct	_FRAME_CONTROL	{
	USHORT		Ver:2;				// Protocol version
	USHORT		Type:2;				// MSDU type
	USHORT		Subtype:4;			// MSDU subtype
	USHORT		ToDs:1;				// To DS indication
	USHORT		FrDs:1;				// From DS indication
	USHORT		MoreFrag:1;			// More fragment bit
	USHORT		Retry:1;			// Retry status bit
	USHORT		PwrMgt:1;			// Power management bit
	USHORT		MoreData:1;			// More data bit
	USHORT		Wep:1;				// Wep data
	USHORT		Order:1;			// Strict order expected
}	FRAME_CONTROL, *PFRAME_CONTROL;

//
// P802.11 intermediate header format
//
typedef	struct	_CONTROL_HEADER	{
	FRAME_CONTROL	Frame;				// Frame control structure
	USHORT			Duration;			// Duration value
	MACADDR			Addr1;				// Address 1 field
	MACADDR			Addr2;				// Address 2 field
}	CONTROL_HEADER, *PCONTROL_HEADER;

typedef	struct	_PS_POLL_BUFFER	{
    TXD_STRUC		TxDesc;
	PSPOLL_FRAME	PsPollPacket;
}	PS_POLL_BUFFER, *PPS_POLL_BUFFER;

//
// P802.11 header format
//
typedef	struct	_HEADER_802_11	{
	CONTROL_HEADER	Controlhead;
	MACADDR			Addr3;				// Address 3 field
	USHORT			Frag:4;				// Fragment number
	USHORT			Sequence:12;		// Sequence number
}	HEADER_802_11, *PHEADER_802_11;

typedef	struct	_NULL_FRAME_BUFFER	{
    TXD_STRUC		TxDesc;
	HEADER_802_11	NullFrame;
}	NULL_FRAME_BUFFER, *PNULL_FRAME_BUFFER;

typedef	struct	_WPAPSK_BUFFER	{
    TXD_STRUC		TxDesc;
	UCHAR	WpaPskFrame[512];
}	WPAPSK_BUFFER, *PWPAPSK_BUFFER;



typedef	struct	_STUFF_BUFFER	{
	NULL_FRAME_BUFFER	NullFrameBuffer;
    UCHAR	StuffBuffer[512];
}	STUFF_BUFFER, *PSTUFF_BUFFER;

//
// Receive Tuple Cache Format
//
typedef	struct	_TUPLE_CACHE	{
	BOOLEAN			Valid;
	MACADDR			MAC;
	USHORT			Sequence; 
	USHORT			Frag;
}	TUPLE_CACHE, *PTUPLE_CACHE;

//
// Fragment Frame structure
//
typedef	struct	_FRAGMENT_FRAME	{
	UCHAR		Header802_3[14];
	UCHAR		Header_LLC[8];
	UCHAR		Buffer[MAX_FRAME_SIZE];
	ULONG		RxSize;
	USHORT		Sequence;
	USHORT		LastFrag;
	ULONG		Flags;			// Some extra frame information. bit 0: LLC presented
}	FRAGMENT_FRAME, *PFRAGMENT_FRAME;

//
// Packet information for NdisQueryPacket
//
typedef	struct	_PACKET_INFO	{
	UINT			PhysicalBufferCount;	// Physical breaks of buffer descripor chained
	UINT			BufferCount ;			// Number of Buffer descriptor chained
	UINT			TotalPacketLength ;  	// Self explained
	//PNDIS_BUFFER	pFirstBuffer;			// Pointer to first buffer descriptor
}	PACKET_INFO, *PPACKET_INFO;

//
// Tkip Key structure which RC4 key & MIC calculation
//
typedef	struct	_TKIP_KEY_INFO	{
	UINT		nBytesInM;	// # bytes in M for MICKEY
	ULONG		IV16;
	ULONG		IV32;	
	ULONG		K0;			// for MICKEY Low
	ULONG		K1;			// for MICKEY Hig
	ULONG		L;			// Current state for MICKEY
	ULONG		R;			// Current state for MICKEY
	ULONG		M;			// Message accumulator for MICKEY
	UCHAR		RC4KEY[16];
	UCHAR		MIC[8];
}	TKIP_KEY_INFO, *PTKIP_KEY_INFO;

//
// Private / Misc data, counters for driver internal use
//
typedef	struct	__PRIVATE_STRUC	{
	ULONG		SystemResetCnt;			// System reset counter
	ULONG		ResetCountDown;			// Count down before issue reset, patch for RT2430
//	ULONG		CCAErrCnt;				// CCA error count, for debug purpose, might move to global counter
	ULONG		PhyRxErrCnt;			// PHY Rx error count, for debug purpose, might move to global counter
	ULONG		PhyTxErrCnt;			// PHY Tx error count, for debug purpose, might move to global counter
	// Variables for WEP encryption / decryption in rtmp_wep.c
	ULONG			FCSCRC32;
	ULONG			RxSetCnt;
	ULONG			DecryptCnt;
	ARCFOURCONTEXT	WEPCONTEXT;
	// Tkip stuff
	TKIP_KEY_INFO	Tx;
	TKIP_KEY_INFO	Rx;
}	PRIVATE_STRUC, *PPRIVATE_STRUC;



/////////////////
//Vendor Commands
/////////////////
#define COMMAND_QUEUE_SIZE  11

typedef	struct _CmdQElmt	{
	UINT				command;
	PVOID				buffer;
	ULONG				bufferlength;
	BOOLEAN				CmdFromNdis;
	BOOLEAN				SetOperation;
	BOOLEAN				InUse;//blue
	struct _CmdQElmt	*next;
}	CmdQElmt, *PCmdQElmt;

typedef	struct	_CmdQ	{
	UINT		size;
	CmdQElmt	*head;
	CmdQElmt	*tail;
}	CmdQ, *PCmdQ;

typedef enum _BULK_OUT_TYPE {
    DATA,
    MLME,
	BEACON,
	PS_POLL,
    ALL
} BULK_OUT_TYPE;

#if 0
typedef	struct _BULK_OUT_QUEUE_ELEMENT	{
	BULK_OUT_TYPE			BulkOutType;
	PVOID				buffer;
	struct _BULK_OUT_QUEUE_ELEMENT	*next;
}	BULK_OUT_QUEUE_ELEMENT, *PBULK_OUT_QUEUE_ELEMENT;

typedef	struct	_BULK_OUT_QUEUE	{
	UINT		size;
	BULK_OUT_QUEUE_ELEMENT	*head;
	BULK_OUT_QUEUE_ELEMENT	*tail;
}	BULK_OUT_QUEUE, *PBULK_OUT_QUEUE;

typedef	struct _BULK_OUT_QUEUE_ELEMENT	{
	PVOID				buffer;
	struct _BULK_OUT_QUEUE_ELEMENT	*next;
}	BULK_OUT_QUEUE_ELEMENT, *PBULK_OUT_QUEUE_ELEMENT;

typedef	struct	_BULK_OUT_QUEUE	{
	UINT		size;
	BULK_OUT_QUEUE_ELEMENT	*head;
	BULK_OUT_QUEUE_ELEMENT	*tail;
}	BULK_OUT_QUEUE, *PBULK_OUT_QUEUE;
#endif

//blue
typedef	struct	_DATA_BULKOUT_QUEUE	{
	UINT		size;
	struct sk_buff 	*head;
	struct sk_buff	*tail;
}	DATA_BULKOUT_QUEUE, *PDATA_BULKOUT_QUEUE;

typedef	struct	_MLME_BULKOUT_QUEUE	{
	UINT		size;
	PMGMT_STRUC	head;
	PMGMT_STRUC	tail;
}	MLME_BULKOUT_QUEUE, *PMLME_BULKOUT_QUEUE;

#if 0
typedef enum bufferStates {
    FREE,
    USED,
	COMPLETED,
    PENDING
} BufferState;
#endif

// used to track driver-generated write irps 
typedef struct _TX_CONTEXT
{

	PVOID				pAdapter;//Initialized in MiniportInitialize
	//    struct sk_buff *skb;
	PURB				pUrb;//Initialized in MiniportInitialize
	PIRP	            pIrp;//used to cancel pending bulk out.//Initialized in MiniportInitialize
	PTX_BUFFER          TransferBuffer;//Initialized in MiniportInitialize
	ULONG			BulkOutSize;
	BOOLEAN				InUse;
	BOOLEAN				IRPPending;
	BOOLEAN				LastOne;
}
TX_CONTEXT, *PTX_CONTEXT, **PPTX_CONTEXT;

// used to track driver-generated write irps 
typedef struct _MLME_CONTEXT
{
    PVOID				pAdapter;//Initialized in MiniportInitialize
    PMGMT_STRUC			pMgmt;
    PURB				pUrb;//Initialized in MiniportInitialize
    PIRP	            pIrp;//used to cancel pending bulk out.//Initialized in MiniportInitialize
    PTX_BUFFER          TransferBuffer;//Initialized in MiniportInitialize
//    UINT	            TransferBufferLength;//TransferBufferLength
//    CONTEXT_TYPE    Type;
//    BufferState	            fInUse; // Declared as ULONG so can use with InterlockedExchange()
	BOOLEAN				InUse;
	BOOLEAN				IRPPending;
	BOOLEAN				LastOne;
	UCHAR				Index;
}
MLME_CONTEXT, *PMLME_CONTEXT, **PPMLME_CONTEXT;


typedef struct _NULL_CONTEXT
{
    PVOID				pAdapter;//Initialized in MiniportInitialize
    PURB				pUrb;//Initialized in MiniportInitialize
    PIRP	            pIrp;//used to cancel pending bulk out.
    PNULL_FRAME_BUFFER          TransferBuffer;//Initialized in MiniportInitialize
//    UINT	            TransferBufferLength;//TransferBufferLength
//    BufferState	            fInUse; // Declared as ULONG so can use with InterlockedExchange()
	BOOLEAN				InUse;
	BOOLEAN				IRPPending;
}
NULL_CONTEXT, *PNULL_CONTEXT;


typedef struct _WPAPSK_CONTEXT
{
    PVOID				pAdapter;//Initialized in MiniportInitialize
    PURB				pUrb;//Initialized in MiniportInitialize
    PIRP	            pIrp;//used to cancel pending bulk out.
    PWPAPSK_BUFFER          TransferBuffer;//Initialized in MiniportInitialize
//    UINT	            TransferBufferLength;//TransferBufferLength
//    BufferState	            fInUse; // Declared as ULONG so can use with InterlockedExchange()
	BOOLEAN				InUse;
	BOOLEAN				Ready;
	BOOLEAN				IRPPending;
}
WPAPSK_CONTEXT, *PWPAPSK_CONTEXT;

typedef struct _PS_POLL_CONTEXT
{
    PVOID				pAdapter;//Initialized in MiniportInitialize
    PURB				pUrb;//Initialized in MiniportInitialize
    PIRP	            pIrp;//used to cancel pending bulk out.
    PPS_POLL_BUFFER          TransferBuffer;//Initialized in MiniportInitialize
//    UINT	            TransferBufferLength;//TransferBufferLength
//    BufferState	            fInUse; // Declared as ULONG so can use with InterlockedExchange()
	BOOLEAN				InUse;
	BOOLEAN				Ready;
	BOOLEAN				IRPPending;
}
PS_POLL_CONTEXT, *PPS_POLL_CONTEXT;

typedef struct _STUFF_CONTEXT
{
    PVOID				pAdapter;//Initialized in MiniportInitialize
    PURB				pUrb;//Initialized in MiniportInitialize
    PIRP	            pIrp;//used to cancel pending bulk out.
    PSTUFF_BUFFER          TransferBuffer;//Initialized in MiniportInitialize
//    UINT	            TransferBufferLength;//TransferBufferLength
//    BufferState	            fInUse; // Declared as ULONG so can use with InterlockedExchange()
	BOOLEAN				InUse;
	BOOLEAN				Ready;
	BOOLEAN				IRPPending;
}
STUFF_CONTEXT, *PSTUFF_CONTEXT;

//
// Structure to keep track of receive packets and buffers to indicate
// receive data to the protocol.
//
#define   IRPLOCK_COMPLETED     0
#define   IRPLOCK_CANCELABLE    1
#define   IRPLOCK_CANCE_START   2
#define   IRPLOCK_CANCE_COMPLETE    3

typedef struct _RX_CONTEXT
{
	PVOID				pAdapter;
	PIRP					pIrp; //used to cancel pending bulk in.
	PURB				pUrb;
	BOOLEAN				InUse;
	atomic_t				IrpLock;
	PUCHAR				TransferBuffer; 
}
RX_CONTEXT, *PRX_CONTEXT;
#if 0
// NDIS
typedef struct _RX_CONTEXT
{
    PUCHAR				TransferBuffer; 
    PVOID				pAdapter;
    PIRP				pIrp;//used to cancel pending bulk in.
    PURB				pUrb;
	BOOLEAN				InUse;
	IRPLOCK				IrpLock;
}	RX_CONTEXT, *PRX_CONTEXT;
#endif
typedef struct _VENDOR_REQUEST_URB
{
    PURB				pUrb;
//    BOOLEAN	            InUse;
    PIRP				pIrp;//used to cancel pending IRP
	BOOLEAN				IRPPending;
}
VENDOR_REQUEST_URB;


typedef struct _TX_RATE_SWITCHING_STRUC
{
	ULONG			LastStableTime;
	UCHAR			DownRate1Ratio;
	UCHAR			DownRate2Ratio;
	UCHAR			UpRateRatio;
	UCHAR			StableTimeRequired;
	UCHAR			PenaltyPeriod;
	UCHAR			DownWaitingTime;
}
TX_RATE_SWITCHING_STRUC, *PTX_RATE_SWITCHING_STRUC;

typedef struct _TX_RATE_SWITCHING_COUNTERS
{
	USHORT			NoRetryOKCnt;
	USHORT			OneRetryOKCnt;
	USHORT			MRetryOKCnt;
	USHORT			FailCnt;
}
TX_RATE_SWITCHING_COUNTERS, *PTX_RATE_SWITCHING_COUNTERS;

typedef struct _BBP_TUNING_PARAMETERS_STRUC
{
	UCHAR			BBPTuningThreshold;
	UCHAR			R24LowerValue;
	UCHAR			R24HigherValue;
	UCHAR			R25LowerValue;
	UCHAR			R25HigherValue;
	UCHAR			R61LowerValue;
	UCHAR			R61HigherValue;
	UCHAR			BBPR17LowSensitivity;
	UCHAR			BBPR17MidSensitivity;
	UCHAR			RSSIToDbmOffset;
	BOOLEAN			LargeCurrentRSSI;
}
BBP_TUNING_PARAMETERS_STRUC, *PBBP_TUNING_PARAMETERS_STRUC;

⌨️ 快捷键说明

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