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

📄 rtmp.h

📁 TP Link 321 Linux Driver
💻 H
📖 第 1 页 / 共 5 页
字号:
/* *************************************************************************** * Ralink Tech Inc. * 4F, No. 2 Technology	5th	Rd. * Science-based Industrial	Park * Hsin-chu, Taiwan, R.O.C. * * (c) Copyright 2002-2006, Ralink Technology, Inc. * * All rights reserved.	Ralink's source	code is	an unpublished work	and	the * use of a	copyright notice does not imply	otherwise. This	source code * contains	confidential trade secret material of Ralink Tech. Any attemp * or participation	in deciphering,	decoding, reverse engineering or in	any * way altering	the	source code	is stricitly prohibited, unless	the	prior * written consent of Ralink Technology, Inc. is obtained. *************************************************************************** 	Module Name:	rtmp.h	Abstract:	Revision History:	Who			When		What	--------	----------	----------------------------------------------*/#ifndef __RTMP_H__#define __RTMP_H__#include "link_list.h"#include "mlme.h"#include "oid.h"#include "wpa.h"//// Extern//extern UCHAR BROADCAST_ADDR[MAC_ADDR_LEN];extern UCHAR ZERO_MAC_ADDR[MAC_ADDR_LEN];extern ULONG BIT32[32];extern UCHAR BIT8[8];extern char* CipherName[];extern UCHAR SNAP_802_1H[6];extern UCHAR SNAP_BRIDGE_TUNNEL[6];extern UCHAR EAPOL_LLC_SNAP[8];extern UCHAR EAPOL[2];extern UCHAR IPX[2];extern UCHAR APPLE_TALK[2];extern UCHAR RateIdToPlcpSignal[12]; // see IEEE802.11a-1999 p.14extern UCHAR OfdmSignalToRateId[16] ;extern UCHAR default_cwmin[4];extern UCHAR default_cwmax[4];extern UCHAR default_sta_aifsn[4];extern UCHAR MapUserPriorityToAccessCategory[8];extern UCHAR  Phy11BNextRateDownward[];extern UCHAR  Phy11BNextRateUpward[];extern UCHAR  Phy11BGNextRateDownward[];extern UCHAR  Phy11BGNextRateUpward[];extern UCHAR  Phy11ANextRateDownward[];extern UCHAR  Phy11ANextRateUpward[];extern CHAR   RssiSafeLevelForTxRate[];extern UCHAR  RateIdToMbps[];extern USHORT RateIdTo500Kbps[];extern UCHAR  CipherSuiteWpaNoneTkip[];extern UCHAR  CipherSuiteWpaNoneTkipLen;extern UCHAR  CipherSuiteWpaNoneAes[];extern UCHAR  CipherSuiteWpaNoneAesLen;extern UCHAR  SsidIe;extern UCHAR  SupRateIe;extern UCHAR  ExtRateIe;extern UCHAR  ErpIe;extern UCHAR  DsIe;extern UCHAR  TimIe;extern UCHAR  WpaIe;extern UCHAR  Wpa2Ie;extern UCHAR  IbssIe;extern UCHAR  WPA_OUI[];extern UCHAR  RSN_OUI[];extern UCHAR  WME_INFO_ELEM[];extern UCHAR  WME_PARM_ELEM[];extern UCHAR  RALINK_OUI[];extern struct usb_device_id rtusb_usb_id[];extern INT const rtusb_usb_id_len;//// MACRO for linux usb//typedef struct urb *purbb_t;typedef struct usb_ctrlrequest devctrlrequest;// for vendor-specific control operations#define CONTROL_TIMEOUT_MS		(1000)	 /* msec */  // lengthen timeout for loading firmware#define CONTROL_TIMEOUT_JIFFIES ((CONTROL_TIMEOUT_MS * HZ)/1000)#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,7)#define RTUSB_UNLINK_URB(urb)	usb_kill_urb(urb)#else#define RTUSB_UNLINK_URB(urb)	usb_unlink_urb(urb)#endif/* map devrequest fields onto usb_ctrlrequest's */#define DEVREQ_REQUEST(x)		((x)->bRequest)#define DEVREQ_REQUESTTYPE(x)	((x)->bRequestType)#define DEVREQ_VALUE(x) 		((x)->wValue)#define DEVREQ_INDEX(x) 		((x)->wIndex)#define DEVREQ_LENGTH(x)		((x)->wLength)#define PURB		purbb_t#define PIRP		PVOID#define PMDL		PVOID#define NDIS_OID	UINT	#define STATUS_SUCCESS		0x00#define STATUS_UNSUCCESSFUL 0x01typedef LONG		NTSTATUS;typedef NTSTATUS	*PNTSTATUS;typedef struct net_device	* PNET_DEV;typedef struct sk_buff		* PNDIS_PACKET;typedef struct sk_buff		  NDIS_PACKET;typedef PNDIS_PACKET		* PPNDIS_PACKET;static inline void NdisGetSystemUpTime(ULONG *time){	*time = jiffies;}////	Queue structure and macros//typedef struct	_QUEUE_ENTRY	{	struct _QUEUE_ENTRY 	*Next;}	QUEUE_ENTRY, *PQUEUE_ENTRY;// Queue structuretypedef struct	_QUEUE_HEADER	{	PQUEUE_ENTRY	Head;	PQUEUE_ENTRY	Tail;	ULONG			Number;}	QUEUE_HEADER, *PQUEUE_HEADER;#define InitializeQueueHeader(QueueHeader)				\{														\	(QueueHeader)->Head = (QueueHeader)->Tail = NULL;	\	(QueueHeader)->Number = 0;							\}#define RemoveHeadQueue(QueueHeader)				\(QueueHeader)->Head;								\{													\	PQUEUE_ENTRY pNext; 							\	if ((QueueHeader)->Head != NULL)				\	{												\		pNext = (QueueHeader)->Head->Next;			\		(QueueHeader)->Head = pNext;				\		if (pNext == NULL)							\			(QueueHeader)->Tail = NULL; 			\		(QueueHeader)->Number--;					\	}												\}#define InsertHeadQueue(QueueHeader, QueueEntry)			\{															\	((PQUEUE_ENTRY)QueueEntry)->Next = (QueueHeader)->Head; \	(QueueHeader)->Head = (PQUEUE_ENTRY)(QueueEntry);		\	if ((QueueHeader)->Tail == NULL)						\		(QueueHeader)->Tail = (PQUEUE_ENTRY)(QueueEntry);	\	(QueueHeader)->Number++;								\}#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);			\	(QueueHeader)->Number++;									\}////	Macro for debugging information//#ifdef DBGextern ULONG	RTDebugLevel;#define DBGPRINT(Level, fmt, args...)		\{											\	if (Level <= RTDebugLevel)				\	{										\		printk(NIC_DBG_STRING); 			\		printk(KERN_DEBUG fmt, ## args);	\	}										\}#define DBGPRINT_ERR(fmt, args...)			\{											\	printk("ERROR!!! ");					\	printk(KERN_DEBUG fmt, ## args);		\}#define DBGPRINT_RAW(Level, fmt, args...)	\{											\	if (Level <= RTDebugLevel)				\	{										\		printk(" ");						\		printk(KERN_DEBUG fmt, ## args);	\	}										\}#else#define DBGPRINT(Level, fmt, args...)#define DBGPRINT_ERR(fmt, args...)#define DBGPRINT_RAW(Level, fmt, args...)#endif/*John said that this function will crash in some platforms.  So, I removed it.(//2007/12/21,by KH)#  define assert(expr)											\		if(unlikely(!(expr))) {									\		printk(KERN_ERR "Assertion failed! %s,%s,%s,line=%d\n",	\		#expr,__FILE__,__FUNCTION__,__LINE__);					\		}*/////	spin_lock enhanced for Nested spin lock//#define	NdisAllocateSpinLock(lock)	\{									\	spin_lock_init(lock);			\}#if 0#define NdisReleaseSpinLock(lock, flagg)    \{											\	if (in_interrupt())						\		spin_unlock_irqrestore(lock, flagg);\	else									\		spin_unlock(lock);					\}#define NdisAcquireSpinLock(lock, flagg)    \{											\	if (in_interrupt())						\		spin_lock_irqsave(lock, flagg);		\	else									\		spin_lock(lock);					\}#else#define NdisReleaseSpinLock(lock, flagg)	\{											\	spin_unlock_irqrestore(lock, flagg);	\}#define NdisAcquireSpinLock(lock, flagg)	\{											\	spin_lock_irqsave(lock, flagg);			\}#endif#define NdisFreeSpinLock(lock)			\{										\}#define RTUSBFreeSkbBuffer(skb)				\{											\	dev_kfree_skb_any(skb);					\}#define RTUSBMlmeUp(pAd)	        \{								    \	if(pAd->MLMEThr_pid>0)		    \        up(&(pAd->mlme_semaphore)); \}//2008/01/07:KH add to solve the racing condition of Mac Registers#define RTUSBMacRegDown(pAd) \{								    \        down_trylock(&pAd->MaCRegWrite_semaphore); \        pAd->MacRegWrite_Processing=1;\}#define RTUSBMacRegUp(pAd)	        \{								    \	pAd->MacRegWrite_Processing=0;\        up(&(pAd->MaCRegWrite_semaphore)); \}#define RTUSBCMDUp(pAd)	                \{									    \	if(pAd->RTUSBCmdThr_pid>0)		    \	    up(&(pAd->RTUSBCmd_semaphore)); \}//Setup Packet used in Ctrl urb's filler....#define FILL_REQUEST(a,aa,ab,ac,ad,ae)		\  do {										\	  (a)->devreq->request = aa;			\	  (a)->devreq->requesttype = ab;		\	  (a)->devreq->value = cpu_to_le16(ac); \	  (a)->devreq->index = cpu_to_le16(ad); \	  (a)->devreq->length = cpu_to_le16(ae);\  }while(0);// direction is specified in TransferFlags#define URB_FUNCTION_RESERVED0						0x0016//// These are for sending vendor and class commands// on the default pipe//// direction is specified in TransferFlags#define URB_FUNCTION_VENDOR_DEVICE					 0x0017#define URB_FUNCTION_VENDOR_INTERFACE				 0x0018#define URB_FUNCTION_VENDOR_ENDPOINT				 0x0019#define URB_FUNCTION_VENDOR_OTHER					 0x0020#define URB_FUNCTION_CLASS_DEVICE					 0x001A#define URB_FUNCTION_CLASS_INTERFACE				 0x001B#define URB_FUNCTION_CLASS_ENDPOINT 				 0x001C#define URB_FUNCTION_CLASS_OTHER					 0x001F//// Reserved function codes//																										  #define URB_FUNCTION_RESERVED						 0x001D#define URB_FUNCTION_GET_CONFIGURATION				 0x0026#define URB_FUNCTION_GET_INTERFACE					 0x0027					#define URB_FUNCTION_LAST							 0x0029////	Assert MACRO to make sure program running//#undef	ASSERT#define ASSERT(x)																\{																				\	if (!(x))																	\	{																			\		printk(KERN_WARNING __FILE__ ":%d assert " #x "failed\n", __LINE__);	\	}																			\}////	Macros for flag and ref count operations//#define RTMP_SET_FLAG(_M, _F)		((_M)->Flags |= (_F))#define RTMP_CLEAR_FLAG(_M, _F) 	((_M)->Flags &= ~(_F))#define RTMP_CLEAR_FLAGS(_M)		((_M)->Flags = 0)#define RTMP_TEST_FLAG(_M, _F)		(((_M)->Flags & (_F)) != 0)#define RTMP_TEST_FLAGS(_M, _F) 	(((_M)->Flags & (_F)) == (_F))// Flags control for RT2500 USB bulk out frame type#define RTUSB_SET_BULK_FLAG(_M, _F)				((_M)->BulkFlags |= (_F))#define RTUSB_CLEAR_BULK_FLAG(_M, _F)			((_M)->BulkFlags &= ~(_F))#define RTUSB_TEST_BULK_FLAG(_M, _F)			(((_M)->BulkFlags & (_F)) != 0)#define OPSTATUS_SET_FLAG(_pAd, _F) 	((_pAd)->PortCfg.OpStatusFlags |= (_F))#define OPSTATUS_CLEAR_FLAG(_pAd, _F)	((_pAd)->PortCfg.OpStatusFlags &= ~(_F))#define OPSTATUS_TEST_FLAG(_pAd, _F)	(((_pAd)->PortCfg.OpStatusFlags & (_F)) != 0)#define CLIENT_STATUS_SET_FLAG(_pEntry,_F)		((_pEntry)->ClientStatusFlags |= (_F))#define CLIENT_STATUS_CLEAR_FLAG(_pEntry,_F)	((_pEntry)->ClientStatusFlags &= ~(_F))#define CLIENT_STATUS_TEST_FLAG(_pEntry,_F) 	(((_pEntry)->ClientStatusFlags & (_F)) != 0)#define INC_RING_INDEX(_idx, _RingSize)    \{										   \	(_idx)++;							   \	if ((_idx) >= (_RingSize)) _idx=0;	   \}// Increase TxTsc value for next transmission// TODO: // When i==6, means TSC has done one full cycle, do re-keying stuff follow specs// Should send a special event microsoft defined to request re-key#define INC_TX_TSC(_tsc)								\{														\	int i=0;											\	while (++_tsc[i] == 0x0)							\	{													\		i++;											\		if (i == 6) 									\			break;										\	}													\}#undef	NdisMoveMemory#undef	NdisZeroMemory#undef	NdisFillMemory#undef	NdisEqualMemory#define NdisMoveMemory(Destination, Source, Length) RTMPMoveMemory(Destination, Source, Length)#define NdisZeroMemory(Destination, Length) 		RTMPZeroMemory(Destination, Length)#define NdisFillMemory(Destination, Length, Fill)	RTMPFillMemory(Destination, Length, Fill)#define NdisEqualMemory(Source1, Source2, Length)	RTMPEqualMemory(Source1, Source2, Length)#define MAC_ADDR_EQUAL(pAddr1,pAddr2)				RTMPEqualMemory((PVOID)(pAddr1), (PVOID)(pAddr2), MAC_ADDR_LEN)#define COPY_MAC_ADDR(Addr1, Addr2) 				memcpy((Addr1), (Addr2), MAC_ADDR_LEN)#define SSID_EQUAL(ssid1, len1, ssid2, len2)		((len1==len2) && (RTMPEqualMemory(ssid1, ssid2, len1)))#define NdisMSleep                                  mdelay#define 	MAP_CHANNEL_ID_TO_KHZ(ch, khz)	{				\				switch (ch) 								\

⌨️ 快捷键说明

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