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

📄 wt.h

📁 linux2.6.11内核无线网卡驱动程序。支持802.11 abg
💻 H
📖 第 1 页 / 共 3 页
字号:
#ifndef _WT_H#define _WT_Htypedef enum {	PRV_STATE_OFF = 0,	/* this means hw_unavailable is != 0 */	PRV_STATE_PREBOOT,	/* we are in a pre-boot state (empty RAM) */	PRV_STATE_BOOT,		/* boot state (fw upload, run fw) */	PRV_STATE_POSTBOOT,	/* after boot state, need reset now */	PRV_STATE_PREINIT,	/* pre-init state */	PRV_STATE_INIT,		/* init state (restore MIB backup to device) */	PRV_STATE_READY,	/* driver&device are in operational state */	PRV_STATE_SLEEP		/* device in sleep mode */} islpci_state_t;struct wt_acl {   enum { MAC_POLICY_OPEN=0, MAC_POLICY_ACCEPT=1, MAC_POLICY_REJECT=2 } policy;   struct list_head mac_list;  /* a list of mac_entry */   int size;   /* size of queue */   struct semaphore sem;   /* accessed in ioctls and trap_work */}; ///////////////////////////////////////////////////////////////////////////////////////#ifdef NDIS50_MINIPORT#define WT_NDIS_MAJOR_VERSION       5#define WT_NDIS_MINOR_VERSION       0#endif#ifdef NDIS51_MINIPORT#define WT_NDIS_MAJOR_VERSION       5#define WT_NDIS_MINOR_VERSION       1#endif#define ALIGN_16                   16#ifndef MIN#define MIN(a, b)   ((a) > (b) ? b: a)#endif//#define MASK_TXBUFF_AVAIABLE  0X4524   //check later#define MASK_TXBUFF_AVAIABLE  0X924   //check, no bank4#define WT_TXHW_RESOURCES_AVAIABLE(_M) ((_M)&MASK_TXBUFF_AVAIABLE)#define MASK_TX_NOT_BUSY  0X4924   //#define MASK_TX_NOT_EMPTY 0X36DB#define WT_TXHW_DONE(_M) (((_M)&MASK_TX_NOT_BUSY)&&(0!=((_M)&MASK_TX_NOT_EMPTY)))#define MAX_REQUEUE_COUNT 1//--------------------------------------// Queue structure and macros//--------------------------------------typedef struct _QUEUE_ENTRY{    struct _QUEUE_ENTRY *Next;} QUEUE_ENTRY, *PQUEUE_ENTRY;typedef struct _QUEUE_HEADER{    PQUEUE_ENTRY Head;    PQUEUE_ENTRY Tail;} QUEUE_HEADER, *PQUEUE_HEADER;#define InitializeQueueHeader(QueueHeader)                 \    {                                                      \        (QueueHeader)->Head = (QueueHeader)->Tail = NULL;  \    }#define IsQueueEmpty(QueueHeader) ((QueueHeader)->Head == NULL)#define RemoveHeadQueue(QueueHeader)                  \    (QueueHeader)->Head;                              \    {                                                 \        PQUEUE_ENTRY pNext;                           \        ASSERT((QueueHeader)->Head);                  \        pNext = (QueueHeader)->Head->Next;            \        (QueueHeader)->Head = pNext;                  \        if (pNext == NULL)                            \            (QueueHeader)->Tail = NULL;               \    }#define InsertHeadQueue(QueueHeader, QueueEntry)                \    {                                                           \        ((PQUEUE_ENTRY)QueueEntry)->Next = (QueueHeader)->Head; \        (QueueHeader)->Head = (PQUEUE_ENTRY)(QueueEntry);       \        if ((QueueHeader)->Tail == NULL)                        \            (QueueHeader)->Tail = (PQUEUE_ENTRY)(QueueEntry);   \    }#define InsertTailQueue(QueueHeader, QueueEntry)                     \    {                                                                \        ((PQUEUE_ENTRY)QueueEntry)->Next = NULL;                     \        if ((QueueHeader)->Tail)                                     \            (QueueHeader)->Tail->Next = (PQUEUE_ENTRY)(QueueEntry);  \        else                                                         \            (QueueHeader)->Head = (PQUEUE_ENTRY)(QueueEntry);        \        (QueueHeader)->Tail = (PQUEUE_ENTRY)(QueueEntry);            \    }//--------------------------------------// Some utility macros        //--------------------------------------#ifndef min#define min(_a, _b)     (((_a) < (_b)) ? (_a) : (_b))#endif#ifndef max#define max(_a, _b)     (((_a) > (_b)) ? (_a) : (_b))#endif#define wt_min(_a, _b)     (((_a) < (_b)) ? (_a) : (_b))#define wt_max(_a, _b)     (((_a) > (_b)) ? (_a) : (_b))#define GetListHeadEntry(ListHead)  ((ListHead)->Flink)#define GetListTailEntry(ListHead)  ((ListHead)->Blink)#define GetListFLink(ListEntry)     ((ListEntry)->Flink)//#define IsSListEmpty(ListHead)  (((PSINGLE_LIST_ENTRY)ListHead)->Next == NULL)#define IsSListEmpty(ListHead)  (!((PSINGLE_LIST_ENTRY)ListHead)->Next)//edited by hk 2004.11.24#define WT_EXIT goto exit#ifdef WIN_PLATFORM#define WT_MEMCOPY(Destn, Source, Length) NdisMoveMemory((Destn), (Source), (Length))#define WTMemCmp(Destn, Source, Length)   \#define WT_MEMSET(Pointer, Length, Value)   NdisFillMemory(Pointer, Length, Value)#else#define WT_MEMCOPY(Destn, Source, Length) memmove((Destn), (Source), (Length))#define WT_MEMSET(Pointer, Length, Value)   memset(Pointer, Value, Length)#define WTMemCmp(Destn, Source, Length)   \    memcmp((PUCHAR)(Destn), (PUCHAR)(Source), (ULONG)(Length))					#endif#if DBG#define WT_ALLOCMEM(pptr, size, flags, highest) \    WTAuditAllocMem(pptr, size, flags, highest, _FILENUMBER, __LINE__);#define WT_ALLOCMEMTAG(pptr, size) \    WTAuditAllocMemTag(pptr, size, _FILENUMBER, __LINE__);#define WT_FREEMEM(ptr, size, flags) WTAuditFreeMem(ptr, size, flags)#else // DBG#define WT_ALLOCMEM(pptr, size, flags, highest) \    NdisAllocateMemory(pptr, size, flags, highest)#ifdef WIN_PLATFORM#define WT_ALLOCMEMTAG(pptr, size) \    NdisAllocateMemoryWithTag(pptr, size, NIC_TAG)#define WT_FREEMEM(ptr, size, flags) NdisFreeMemory(ptr, size, flags)#endif //WIN_PLATFORM#endif #define WT_FREE_NDIS_STRING(str)                        \    WT_FREEMEM((str)->Buffer, (str)->MaximumLength, 0); \    (str)->Length = 0;                                  \    (str)->MaximumLength = 0;                           \    (str)->Buffer = NULL;//--------------------------------------// Macros for flag and ref count operations       //--------------------------------------#define WT_SET_FLAG(_M, _F)         ((_M)->Flags |= (_F))   #define WT_CLEAR_FLAG(_M, _F)       ((_M)->Flags &= ~(_F))#define WT_CLEAR_FLAGS(_M)          ((_M)->Flags = 0)#define WT_TEST_FLAG(_M, _F)        (((_M)->Flags & (_F)) != 0)#define WT_TEST_FLAGS(_M, _F)       (((_M)->Flags & (_F)) == (_F))#define WT_INC_REF(_A)              NdisInterlockedIncrement(&(_A)->RefCount)#define WT_DEC_REF(_A)              NdisInterlockedDecrement(&(_A)->RefCount); ASSERT(_A->RefCount >= 0)#define WT_GET_REF(_A)              ((_A)->RefCount)#define WT_INC_RCV_REF(_A)          ((_A)->RcvRefCount++)#define WT_DEC_RCV_REF(_A)          ((_A)->RcvRefCount--)#define WT_GET_RCV_REF(_A)          ((_A)->RcvRefCount)//--------------------------------------// TCB (Transmit Control Block)//--------------------------------------//Maybe useful late for dmatypedef struct _WTWLAN_TCB{    struct _WTWLAN_TCB    *Next;    ULONG             Flags;    ULONG             Count;    #ifdef WIN_PLATFORM    PNDIS_PACKET      Packet; //who define it???    #endif} WTWLAN_TCB, *PWTWLAN_TCB;// Structure for pended OID query request//--------------------------------------typedef struct _WT_QUERY_REQUEST{    IN ULONG Oid; //IN NDIS_OID Oid:edited by WL!!!    IN PVOID InformationBuffer;    IN ULONG InformationBufferLength;    OUT PULONG BytesWritten;    OUT PULONG BytesNeeded;} WT_QUERY_REQUEST, *PWT_QUERY_REQUEST;//--------------------------------------// Structure for pended OID set request//--------------------------------------typedef struct _WT_SET_REQUEST{    IN ULONG Oid;//IN NDIS_OID Oid:edited by WL!!!    IN PVOID InformationBuffer;    IN ULONG InformationBufferLength;    OUT PULONG BytesRead;    OUT PULONG BytesNeeded;} WT_SET_REQUEST, *PWT_SET_REQUEST;typedef struct _WT_POWER_MGMT{    UINT                    PowerState;} WT_POWER_MGMT, *PWT_POWER_MGMT;//--------------------------------------// Macros specific to miniport adapter structure //--------------------------------------#define WT_TCB_RESOURCES_AVAIABLE(_M) ((_M)->nBusySend < (_M)->NumTcb)#define WT_SHOULD_FAIL_SEND(_M)   ((_M)->Flags & fWT_ADAPTER_FAIL_SEND_MASK) #define WT_IS_NOT_READY(_M)       ((_M)->Flags & fWT_ADAPTER_NOT_READY_MASK)#define WT_IS_READY(_M)           !((_M)->Flags & fWT_ADAPTER_NOT_READY_MASK)#define WT_SET_READY(_M)       ((_M)->Flags &= (~fWT_ADAPTER_NOT_READY_MASK))#define WT_SET_NOT_READY(_M)       ((_M)->Flags |= fWT_ADAPTER_NOT_READY_MASK)#define WT_SET_PACKET_RFD(_p, _rfd)  *((PWTWLAN_RXBUF *)&(_p)->MiniportReserved[0]) = _rfd#define WT_GET_PACKET_RFD(_p)        *((PWTWLAN_RXBUF *)&(_p)->MiniportReserved[0])#define WT_GET_PACKET_MR(_p)         (&(_p)->MiniportReserved[0]) #define WT_GET_TX_BUFFER_SLIST(_p) 	 (&(_p)->List) //edited by wl 2005.6.22#define WT_GET_RX_BUFFER_LIST(_p) 	 	 (&(_p)->List)#define WT_SET_HARDWARE_ERROR(adapter)    WT_SET_FLAG(adapter, fWT_ADAPTER_HARDWARE_ERROR) #define WT_SET_NON_RECOVER_ERROR(adapter) WT_SET_FLAG(adapter, fWT_ADAPTER_NON_RECOVER_ERROR)#define WT_OFFSET(field)   ((UINT)FIELD_OFFSET(WT_ADAPTER,field))#define WT_SIZE(field)     sizeof(((PWT_ADAPTER)0)->field) typedef struct _MacCache{	MacAddr TA;  //MacAddr TA:edited by wl!!!	UCHAR PowerState;	ULONG Rate;                /*bit mask for station*/	int SeqNum;	int count;	char FragmentNum;	BOOL used;//BOOL used:edited by wl!!!	ULONGLONG RxTime;	WTWLAN_KEY nKey;	struct _MacCache *next;	struct _MacCache *prev;}MacCache, *PMacCache;typedef struct _HASHENTRY {	ULONG Length;	MacCache *HashTab[MAX_STA_HASH_ENTRY];}HASHENTRY, *PHASHENTRY;typedef struct _WTWLAN_TXBUF{    #ifdef WIN_PLATFORM    SINGLE_LIST_ENTRY			        SList;    PNDIS_BUFFER				NdisBuffer;    PNDIS_PACKET				NdisPacket;     NDIS_PHYSICAL_ADDRESS	                AllocPa;     NDIS_PHYSICAL_ADDRESS	                BufferPa;     PNDIS_BUFFER      			        FirstBuffer; #else	struct list_head             List;	UCHAR AuxHeadBuf[ sizeof(WTWLAN_TAUXB) + MAX_HW_HEAD_LEN + MAX_LLC_LEN ];	ULONG LlcHeadLen;	struct sk_buff   *skb;#endif    ULONG					AllocSize;    PVOID						AllocVa;    ULONG					BufferSize;    union    {		PUCHAR				pBuffer;		PWTWLAN_HWTXBUF		        pHwTxBuf;    }TXHwBuf;        UCHAR 					QosTag;        UCHAR 					PowerState;    ULONGLONG				TxTimer;    ULONG             				PhysBufCount;                                     ULONG             				BufferCount;                                       ULONG             				PacketLength;    ULONG                   				Flags;	 UINT16					 Frmtype;        p80211mgmt_fr_t		        ParseData;	int			SendStatus;//edited by wl:NDIS_STATUS SendStatus:for int has been typedeffed as BOOL!!!	PQUEUE_HEADER		        pQueue;	BOOL				bMgmtFrm;	BOOL				bUrgency;    // immediate send 	struct _WTWLAN_TXBUF		*pAtimPsBuf;	UCHAR				TxStatus;	UCHAR				TxBank;	UCHAR				ReQueueCount;		      PsState		PsMode;    //enum  	MacAddr				DA;	BOOL			bPowerMgtPend;			// request send not frame exchange	BOOL			bPsFrm;					ULONG				AnRetryCount;		// retry count during one atim window	ULONG				AtimWinCount;		// re-queue  atim window count	//added by hk 2006.6.1	ULONG                 PairwiseKeyAddress;		}WTWLAN_TXBUF, *PWTWLAN_TXBUF;//--------------------------------------//--------------------------------------typedef struct _WTWLAN_FRAG_ENTRY{    BOOL					bFrag;    BOOL					bRetry;    UCHAR				FragNum;    UCHAR				FragIndex;    ULONGLONG			RxMask;        //bit 0 --1 fragment; bit 1 --2 fragment; ...    ULONGLONG			TFirstRxStart;    ULONGLONG			TFirstRxEnd;    ULONGLONG			TRxStart;    ULONGLONG			TRxEnd;} WTWLAN_FRAG_ENTRY, *PWTWLAN_FRAG_ENTRY;//--------------------------------------//--------------------------------------typedef struct _WTWLAN_RXBUF{#ifdef WIN_PLATFORM    LIST_ENTRY			List;    PNDIS_PACKET            NdisPacket;    PNDIS_BUFFER            NdisBuffer;         // Pointer to Buffer    NDIS_PHYSICAL_ADDRESS	AllocPa;    NDIS_PHYSICAL_ADDRESS   		HwRxBufPa;            // physical address of RFD    LIST_ENTRY				*pQueue;#else	struct list_head        List;	struct list_head      *pQueue;	struct sk_buff   *skb;#endif    ULONG					PacketSize;    ULONG					AllocSize;    PVOID						AllocVa;    ULONG					BufferSize;    union    {		PUCHAR					pRxBuffer;		PWTWLAN_HWRXBUF		pHwRxBuf;    }RXHwBuf;	ULONG                   				HwRfdPhys;          // lower part of HwRfdPa 	ULONG                   				Flags;	UINT16				Frmtype;	p80211mgmt_fr_t		        ParseData;	UCHAR 					QosTag;  	BOOL			                 bMgmtFrm;	WTWLAN_FRAG_ENTRY			FragStatus;	int 					NDISPacketOffset;	USHORT 					CopyLen;	UINT16 				ftype;	UINT 				fstype;	UINT16				FrmCtl;//	USHORT				TypeLength;  } WTWLAN_RXBUF, *PWTWLAN_RXBUF;//Transmit Buffer Descriptortypedef struct _WTWLAN_TBD {	TXSTATUS       TxFrmStatus;						// 	PWTWLAN_TXBUF pTxbuf[TX_BUF_NUM];//define lock& counter  here later} WTWLAN_TBD, *PWTWLAN_TBD;//Receive Frame Descriptortypedef struct _WTWLAN_RFD {	RXSTATUS       RxFrmStatus;						// 	PWTWLAN_RXBUF pRxBuf[RX_BUF_NUM];//define lock& counter  here later} WTWLAN_RFD, *PWTWLAN_RFD;typedef struct{	BssType BssType;	MacAddr BSSID;	Essid SSID;	ScanType ScanType;	int ProbeDelay;	Intstring ChannelList;	int MinChannelTime;	int MaxChannelTime;	PWTWLAN_TXBUF PTxScanFrame;}MlmeScanRequest;typedef struct _WTWLAN_MAC_DOT11MIB{	int	dot11FragmentThreshold;	ULONGLONG dot11BeaconPeriod;	int dot11DtimPeriod;	Ratestring dot11OperationalRateSet;	ULONGLONG dot11AssociationResponseTimeout;	PwrSave dot11PowerMangementMode;  //-new add        MacAddr dot11DesiredSSID;        BssType dot11DesiredBssType;}WTWLAN_MAC_DOT11MIB, *PWTWLAN_MAC_DOT11MIB;/*-- MAC modes --*/typedef enum { WLAN_MACMODE_NONE = 0, WLAN_MACMODE_IBSS_STA = 1, WLAN_MACMODE_ESS_STA = 2, WLAN_MACMODE_ESS_AP = 3, WLAN_MACMODE_REPEAT = 4, WLAN_MACMODE_SECOND = 5, WLAN_MACMODE_MONITOR = 6}WTWLAN_MACMODE;///////////////////////////////////////////////////////////////////////////////////////////////#ifdef WIN_PLATFORMtypedef struct _WTWLAN_MAC_TIMER{	NDIS_TIMER TBeacon;	NDIS_TIMER TAsoc;	NDIS_TIMER TReasoc;	NDIS_TIMER TAuth;	NDIS_TIMER TScan;	NDIS_TIMER TJoin;	NDIS_TIMER TATIM;  //-new add	}WTWLAN_MAC_TIMER, *PWTWLAN_MAC_TIMER;#elsetypedef struct _WTWLAN_MAC_TIMER{	struct timer_list BeaconProcTimer;	struct timer_list ATIMProcTimer;	struct timer_list ScanProcTimer;

⌨️ 快捷键说明

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