亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? rtmp.h

?? RT73_Linux_STA_Drv1.0.3.6 linux系統下
?? 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.
 *
 * 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.h

	Abstract:

	Revision History:
	Who			When		What
	--------	----------	----------------------------------------------
*/

#ifndef __RTMP_H__
#define __RTMP_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.14
extern 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  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 0x01

typedef LONG		NTSTATUS;
typedef NTSTATUS	*PNTSTATUS;


//
//	Queue structure and macros
//
typedef struct	_QUEUE_ENTRY	{
	struct _QUEUE_ENTRY 	*Next;
}	QUEUE_ENTRY, *PQUEUE_ENTRY;

// Queue structure
typedef 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 DBG
extern 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

#  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)); \
}

#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) 								\
				{											\
					case 1: 	khz = 2412000;	 break; 	\
					case 2: 	khz = 2417000;	 break; 	\
					case 3: 	khz = 2422000;	 break; 	\
					case 4: 	khz = 2427000;	 break; 	\
					case 5: 	khz = 2432000;	 break; 	\
					case 6: 	khz = 2437000;	 break; 	\
					case 7: 	khz = 2442000;	 break; 	\
					case 8: 	khz = 2447000;	 break; 	\
					case 9: 	khz = 2452000;	 break; 	\
					case 10:	khz = 2457000;	 break; 	\
					case 11:	khz = 2462000;	 break; 	\

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩电影一区二区三区四区| 99麻豆久久久国产精品免费 | 亚洲欧洲99久久| 亚洲一区二区三区美女| 国产乱国产乱300精品| 欧美日韩专区在线| 中文字幕永久在线不卡| 久久99精品国产.久久久久久| 色94色欧美sute亚洲13| 国产精品免费aⅴ片在线观看| 免费的国产精品| 欧美久久一区二区| 国产精品三级久久久久三级| 蓝色福利精品导航| 欧美日韩视频在线观看一区二区三区 | 精品国产自在久精品国产| 亚洲gay无套男同| 在线观看亚洲a| 一区二区三区中文在线| 99国产精品久| 精品欧美乱码久久久久久1区2区| 亚洲第一av色| 欧美亚洲一区二区三区四区| 中文字幕日本不卡| 99久久久久免费精品国产| 中文字幕乱码久久午夜不卡| 国产成人午夜片在线观看高清观看| 欧美一区二区黄色| 美女网站色91| 欧美变态tickling挠脚心| 蜜臀av一区二区三区| 91精品国产入口在线| 免费一级片91| 久久久久久电影| 成人性生交大片免费看视频在线 | 91精品在线免费| 日韩精品电影在线观看| 欧美日韩高清一区二区| 亚洲成a人v欧美综合天堂下载| 欧美日韩一区二区在线观看 | 一区二区三区电影在线播| 99精品视频一区| 一区二区三区成人在线视频| 在线观看日韩国产| 午夜欧美2019年伦理| 日韩一级片网站| 国产成人av电影在线| 亚洲精选在线视频| 欧美顶级少妇做爰| 国内精品国产三级国产a久久| 中文在线一区二区| 欧美伊人久久久久久久久影院 | 欧美一级搡bbbb搡bbbb| 奇米精品一区二区三区在线观看| 日韩一级大片在线| 夫妻av一区二区| 亚洲一区二区三区在线| 欧美一区二区啪啪| 国产成a人亚洲精品| 亚洲小说欧美激情另类| 337p粉嫩大胆色噜噜噜噜亚洲| 国产精品亚洲一区二区三区妖精 | 日本一不卡视频| 日本一区二区三区免费乱视频| 色综合久久久久综合体| 美女性感视频久久| 国产精品国产三级国产有无不卡| 欧美日韩激情一区二区三区| 久久99日本精品| 一区二区三区精品在线观看| 精品电影一区二区| 欧美视频一区二区在线观看| 国产福利91精品| 午夜精品福利一区二区蜜股av| 久久久久久久久免费| 欧美天堂一区二区三区| 成人午夜私人影院| 日精品一区二区三区| 中文字幕视频一区二区三区久| 在线播放91灌醉迷j高跟美女| 国产电影一区在线| 日本va欧美va精品| 亚洲影视在线观看| 亚洲国产岛国毛片在线| 欧美电影免费观看完整版| 99免费精品视频| 国产激情一区二区三区桃花岛亚洲| 亚洲一区二区在线观看视频| 国产亚洲精品免费| 日韩一卡二卡三卡国产欧美| 欧美在线观看18| 成人网男人的天堂| 黄网站免费久久| 日韩av二区在线播放| 亚洲一二三四久久| 日韩一区日韩二区| 国产精品日产欧美久久久久| 欧美精品一区二区三区蜜桃 | 国产精品情趣视频| 久久综合精品国产一区二区三区| 欧美日本在线观看| 欧美亚洲另类激情小说| 日本精品一区二区三区高清| 成人福利在线看| 成人app在线| www.亚洲免费av| 波多野结衣亚洲| 国产成人精品午夜视频免费| 国产精品一区二区在线观看网站| 美女mm1313爽爽久久久蜜臀| 日韩精品久久久久久| 日本特黄久久久高潮| 免费三级欧美电影| 老鸭窝一区二区久久精品| 麻豆高清免费国产一区| 久久不见久久见免费视频1| 久久精品国产精品亚洲精品| 老司机午夜精品99久久| 久久99精品久久久久久国产越南| 美国十次综合导航| 国产精品自拍毛片| 国产a级毛片一区| 91免费看视频| 色妞www精品视频| 欧洲精品在线观看| 91精品国模一区二区三区| 日韩亚洲欧美中文三级| 久久久久久免费网| 亚洲婷婷综合久久一本伊一区| 中文字幕日韩一区| 亚洲一区二区在线免费观看视频| 丝袜亚洲另类欧美综合| 精久久久久久久久久久| 成人国产视频在线观看| 一本一本大道香蕉久在线精品| 91搞黄在线观看| 欧美一区二区三区四区久久| 国产日韩v精品一区二区| 亚洲欧美区自拍先锋| 日本色综合中文字幕| 韩国成人在线视频| 色综合色狠狠天天综合色| 欧美日韩国产小视频| 久久久久国产免费免费| 怡红院av一区二区三区| 免费成人av在线播放| 国产东北露脸精品视频| 欧美性猛交一区二区三区精品| 欧美mv和日韩mv国产网站| 亚洲国产精品精华液2区45| 亚洲午夜精品一区二区三区他趣| 免费一级欧美片在线观看| www.在线成人| 日韩欧美高清在线| 亚洲老妇xxxxxx| 国内精品国产三级国产a久久| 91久久精品一区二区三| 日韩欧美国产综合一区 | 免费av网站大全久久| 成人精品视频.| 在线综合亚洲欧美在线视频| 国产精品久久久久一区二区三区共| 亚洲一区欧美一区| www.视频一区| 久久亚洲春色中文字幕久久久| 亚洲一区在线观看视频| 成人精品视频一区二区三区| 日韩精品一区二| 亚洲444eee在线观看| 色综合天天性综合| 久久日韩粉嫩一区二区三区 | 亚洲三级电影网站| 国产一区在线不卡| 欧美喷潮久久久xxxxx| 一区二区三区在线播| 丁香婷婷综合激情五月色| 精品久久久久久亚洲综合网| 亚洲午夜久久久久久久久久久| 成人精品视频一区| 国产午夜精品在线观看| 日韩二区三区四区| 在线观看区一区二| 1024精品合集| av一二三不卡影片| 国产精品网站在线播放| 国产精品亚洲一区二区三区妖精| 欧美大片一区二区| 美女一区二区三区| 日韩免费一区二区| 奇米精品一区二区三区四区 | 国产亚洲欧美激情| 极品美女销魂一区二区三区| 日韩精品最新网址| 麻豆精品在线看| 精品久久久久99| 国产真实乱子伦精品视频| 成人国产一区二区三区精品| 中文欧美字幕免费| 99国产精品久久久久久久久久久| 中文字幕一区二区在线播放|