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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? rt_linux.h

?? ralink最新rt3070 usb wifi 無線網(wǎng)卡驅(qū)動程序
?? H
?? 第 1 頁 / 共 2 頁
字號:
/* ************************************************************************* * 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.             *  *                                                                       *  ************************************************************************* */ /***********************************************************************//*                                                                     *//*   Program:    rt_linux.c                                            *//*   Created:    4/21/2006 1:17:38 PM                                  *//*   Author:     Wu Xi-Kun                                             *//*   Comments:   `description`                                         *//*                                                                     *//*---------------------------------------------------------------------*//*                                                                     *//* History:                                                            *//*    Revision 1.1 4/21/2006 1:17:38 PM  xsikun                        *//*    Initial revision                                                 *//*                                                                     *//***********************************************************************/#include "rtmp_type.h"#include <linux/module.h>#include <linux/version.h>#include <linux/kernel.h>#include <linux/spinlock.h>#include <linux/init.h>#include <linux/string.h>#include <linux/timer.h>#include <linux/errno.h>#include <linux/slab.h>#include <linux/interrupt.h>#include <linux/pci.h>#include <linux/netdevice.h>#include <linux/etherdevice.h>#include <linux/skbuff.h>#include <linux/ethtool.h>#include <linux/wireless.h>#include <linux/proc_fs.h>#include <linux/delay.h>#include <linux/if_arp.h>#include <linux/ctype.h>#include <linux/vmalloc.h>#include <linux/wireless.h>#include <net/iw_handler.h>// load firmware#define __KERNEL_SYSCALLS__#include <linux/unistd.h>#include <asm/uaccess.h>#define MEM_ALLOC_FLAG      (GFP_ATOMIC) //(GFP_DMA | GFP_ATOMIC)#ifndef IFNAMSIZ#define IFNAMSIZ 16#endif//#define CONFIG_CKIP_SUPPORT#undef __inline#define __inline	   static inline typedef int (*HARD_START_XMIT_FUNC)(struct sk_buff *skb, struct net_device *net_dev);// add by kathy#ifdef CONFIG_STA_SUPPORT#ifdef RT2870#define STA_PROFILE_PATH			"/etc/Wireless/RT2870STA/RT2870STA.dat"#define STA_RT2870_IMAGE_FILE_NAME  "/etc/Wireless/RT2870STA/rt2870.bin"#define STA_NIC_DEVICE_NAME			"RT2870STA"#define STA_DRIVER_VERSION			"2.0.1.0"#ifdef MULTIPLE_CARD_SUPPORT#define CARD_INFO_PATH			"/etc/Wireless/RT2870STA/RT2870STACard.dat"#endif // MULTIPLE_CARD_SUPPORT //#endif // RT2870 //#endif // CONFIG_STA_SUPPORT //#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0)#define RTMP_TIME_AFTER(a,b)		\	(typecheck(unsigned long, (unsigned long)a) && \	 typecheck(unsigned long, (unsigned long)b) && \	 ((long)(b) - (long)(a) < 0))#define RTMP_TIME_AFTER_EQ(a,b)	\	(typecheck(unsigned long, (unsigned long)a) && \	 typecheck(unsigned long, (unsigned long)b) && \	 ((long)(a) - (long)(b) >= 0))#define RTMP_TIME_BEFORE(a,b)	RTMP_TIME_AFTER_EQ(b,a)#else#define RTMP_TIME_AFTER(a,b) time_after(a, b)#endif#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0)#define RT_MOD_INC_USE_COUNT() \	if (!try_module_get(THIS_MODULE)) \	{ \		DBGPRINT(RT_DEBUG_ERROR, ("%s: cannot reserve module\n", __FUNCTION__)); \		return -1; \	}#define RT_MOD_DEC_USE_COUNT() module_put(THIS_MODULE);#else#define RT_MOD_INC_USE_COUNT()	MOD_INC_USE_COUNT;#define RT_MOD_DEC_USE_COUNT() MOD_DEC_USE_COUNT;#endif#define OS_HZ			HZ#define ETH_LENGTH_OF_ADDRESS	6#define IN#define OUT#define NDIS_STATUS                             INT#define NDIS_STATUS_SUCCESS                     0x00#define NDIS_STATUS_FAILURE                     0x01#define NDIS_STATUS_INVALID_DATA				0x02#define NDIS_STATUS_RESOURCES                   0x03#define MIN_NET_DEVICE_FOR_AID			0x00		//0x00~0x3f#define MIN_NET_DEVICE_FOR_MBSSID		0x00		//0x00,0x10,0x20,0x30#define MIN_NET_DEVICE_FOR_WDS			0x10		//0x40,0x50,0x60,0x70#define MIN_NET_DEVICE_FOR_APCLI		0x20#define MIN_NET_DEVICE_FOR_MESH			0x30#ifdef CONFIG_STA_SUPPORT#define MIN_NET_DEVICE_FOR_DLS			0x40#endif // CONFIG_STA_SUPPORT //#ifdef CONFIG_STA_SUPPORT#define NDIS_PACKET_TYPE_DIRECTED		0#define NDIS_PACKET_TYPE_MULTICAST		1#define NDIS_PACKET_TYPE_BROADCAST		2#define NDIS_PACKET_TYPE_ALL_MULTICAST	3#endif // CONFIG_STA_SUPPORT //struct os_lock  {	spinlock_t		lock;	unsigned long  	flags;};struct os_cookie {#ifdef RT2870	struct usb_device		*pUsb_Dev;	pid_t					MLMEThr_pid;	pid_t					RTUSBCmdThr_pid;	pid_t					TimerQThr_pid;#endif // RT2870 //	struct tasklet_struct 	rx_done_task;	struct tasklet_struct 	mgmt_dma_done_task;	struct tasklet_struct 	ac0_dma_done_task;	struct tasklet_struct 	ac1_dma_done_task;	struct tasklet_struct 	ac2_dma_done_task;	struct tasklet_struct 	ac3_dma_done_task;	struct tasklet_struct 	hcca_dma_done_task;	struct tasklet_struct	tbtt_task;#ifdef RT2870	struct tasklet_struct	null_frame_complete_task;	struct tasklet_struct	rts_frame_complete_task;	struct tasklet_struct	pspoll_frame_complete_task;#endif // RT2870 //	unsigned long			apd_pid; //802.1x daemon pid	INT						ioctl_if_type;	INT 					ioctl_if;};	typedef struct _VIRTUAL_ADAPTER{	struct net_device		*RtmpDev;	struct net_device		*VirtualDev;} VIRTUAL_ADAPTER, PVIRTUAL_ADAPTER;#undef  ASSERT#define ASSERT(x)                                                               \{                                                                               \    if (!(x))                                                                   \    {                                                                           \        printk(KERN_WARNING __FILE__ ":%d assert " #x "failed\n", __LINE__);    \    }                                                                           \}	typedef struct os_cookie	* POS_COOKIE;	typedef struct pci_dev 		* PPCI_DEV;	typedef struct net_device	* PNET_DEV;typedef void				* PNDIS_PACKET;typedef char				NDIS_PACKET;typedef PNDIS_PACKET		* PPNDIS_PACKET;typedef	dma_addr_t			NDIS_PHYSICAL_ADDRESS;typedef	dma_addr_t			* PNDIS_PHYSICAL_ADDRESS;//typedef struct timer_list	RALINK_TIMER_STRUCT;//typedef struct timer_list	* PRALINK_TIMER_STRUCT;//typedef struct os_lock		NDIS_SPIN_LOCK;typedef spinlock_t			NDIS_SPIN_LOCK;typedef struct timer_list	NDIS_MINIPORT_TIMER;typedef void				* NDIS_HANDLE;typedef char 				* PNDIS_BUFFER;void hex_dump(char *str, unsigned char *pSrcBufVA, unsigned int SrcBufLen);dma_addr_t linux_pci_map_single(void *handle, void *ptr, size_t size, int sd_idx, int direction);void linux_pci_unmap_single(void *handle, dma_addr_t dma_addr, size_t size, int direction);////////////////////////////////////////// MOVE TO rtmp.h ?/////////////////////////////////////////#define PKTSRC_NDIS             0x7f#define PKTSRC_DRIVER           0x0f#define PRINT_MAC(addr)	\	addr[0], addr[1], addr[2], addr[3], addr[4], addr[5]#define RT2860_PCI_DEVICE_ID		0x0601#ifdef RT2870#define PCI_MAP_SINGLE(_handle, _ptr, _size, _dir) (ULONG)0#define PCI_UNMAP_SINGLE(_handle, _ptr, _size, _dir)#endif // RT2870 //#define BEACON_FRAME_DMA_CACHE_WBACK(_ptr, _size)	\	dma_cache_wback(_ptr, _size)//////////////////////////////////////////////////////////////////////////////////////#define NdisMIndicateStatus(_w, _x, _y, _z)typedef struct timer_list	RTMP_OS_TIMER;	#ifdef RT2870/* ----------------- Timer Related MARCO ---------------*/// In RT2870, we have a lot of timer functions and will read/write register, it's //	not allowed in Linux USB sub-system to do it ( because of sleep issue when submit //  to ctrl pipe). So we need a wrapper function to take care it.typedef VOID (*RT2870_TIMER_HANDLE)(	IN  PVOID   SystemSpecific1, 	IN  PVOID   FunctionContext, 	IN  PVOID   SystemSpecific2, 	IN  PVOID   SystemSpecific3);#endif // RT2870 //typedef struct  _RALINK_TIMER_STRUCT    {    RTMP_OS_TIMER		TimerObj;       // Ndis Timer object	BOOLEAN				Valid;			// Set to True when call RTMPInitTimer    BOOLEAN             State;          // True if timer cancelled    BOOLEAN	      		PeriodicType;	// True if timer is periodic timer     BOOLEAN             Repeat;         // True if periodic timer    ULONG               TimerValue;     // Timer value in milliseconds	ULONG				cookie;			// os specific object#ifdef RT2870	RT2870_TIMER_HANDLE	handle;	void				*pAd;#endif // RT2870 //}   RALINK_TIMER_STRUCT, *PRALINK_TIMER_STRUCT;#ifdef RT2870typedef enum _RT2870_KERNEL_THREAD_STATUS_{	RT2870_THREAD_UNKNOWN = 0,	RT2870_THREAD_INITED = 1,	RT2870_THREAD_RUNNING = 2,	RT2870_THREAD_STOPED = 4,}RT2870_KERNEL_THREAD_STATUS;#define RT2870_THREAD_CAN_DO_INSERT		(RT2870_THREAD_INITED |RT2870_THREAD_RUNNING)typedef struct _RT2870_TIMER_ENTRY_{	RALINK_TIMER_STRUCT 			*pRaTimer;	struct _RT2870_TIMER_ENTRY_ 	*pNext;}RT2870_TIMER_ENTRY;#define TIMER_QUEUE_SIZE_MAX	128typedef struct _RT2870_TIMER_QUEUE_{	unsigned int		status;	//wait_queue_head_t 	timerWaitQ;	//atomic_t			count;	UCHAR				*pTimerQPoll;	RT2870_TIMER_ENTRY	*pQPollFreeList;	RT2870_TIMER_ENTRY 	*pQHead;	RT2870_TIMER_ENTRY 	*pQTail;}RT2870_TIMER_QUEUE;#endif // RT2870 ////#define DBG	1////  MACRO for debugging information//#ifdef DBGextern ULONG    RTDebugLevel;#define DBGPRINT_RAW(Level, Fmt)    \{                                   \    if (Level <= RTDebugLevel)      \    {                               \        printk Fmt;               \    }                               \}#define DBGPRINT(Level, Fmt)    DBGPRINT_RAW(Level, Fmt)#define DBGPRINT_ERR(Fmt)           \{                                   \    printk("ERROR!!! ");          \    printk Fmt;                  \}#define DBGPRINT_S(Status, Fmt)		\{									\	printk Fmt;					\}			#else#define DBGPRINT(Level, Fmt)#define DBGPRINT_RAW(Level, Fmt)#define DBGPRINT_S(Status, Fmt)#define DBGPRINT_ERR(Fmt)#endif////  spin_lock enhanced for Nested spin lock//#define NdisAllocateSpinLock(__lock)      \{                                       \    spin_lock_init((spinlock_t *)(__lock));               \}#define NdisFreeSpinLock(lock)          \{                                       \}#define RTMP_SEM_LOCK(__lock)					\{												\	spin_lock_bh((spinlock_t *)(__lock));				\}#define RTMP_SEM_UNLOCK(__lock)					\{												\	spin_unlock_bh((spinlock_t *)(__lock));				\}// sample, use semaphore lock to replace IRQ lock, 2007/11/15#define RTMP_IRQ_LOCK(__lock, __irqflags)			\{													\	__irqflags = 0;									\	spin_lock_bh((spinlock_t *)(__lock));			\	pAd->irq_disabled |= 1; \}#define RTMP_IRQ_UNLOCK(__lock, __irqflag)			\{													\	pAd->irq_disabled &= 0; \	spin_unlock_bh((spinlock_t *)(__lock));			\}#define RTMP_INT_LOCK(__lock, __irqflags)			\{													\	spin_lock_irqsave((spinlock_t *)__lock, __irqflags);	\}#define RTMP_INT_UNLOCK(__lock, __irqflag)			\{													\	spin_unlock_irqrestore((spinlock_t *)(__lock), ((unsigned long)__irqflag));	\}#ifdef RT2870#define RTMP_IO_READ32(_A, _R, _pV)								\	RTUSBReadMACRegister(_A, _R, _pV)#define RTMP_IO_READ8(_A, _R, _pV)								\{																\}#define RTMP_IO_WRITE32(_A, _R, _V)								\	RTUSBWriteMACRegister(_A, _R, _V)#define RTMP_IO_WRITE8(_A, _R, _V)								\{																\	USHORT	_Val = _V;											\	RTUSBSingleWrite(_A, _R, _Val);								\}#define RTMP_IO_WRITE16(_A, _R, _V)								\{																\	RTUSBSingleWrite(_A, _R, _V);								\

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品国产一区二区亚洲人成毛片 | 欧美不卡视频一区| 亚洲动漫第一页| 91久久精品国产91性色tv| 国产精品亲子乱子伦xxxx裸| 国产乱人伦精品一区二区在线观看| 欧美变态tickling挠脚心| 日本怡春院一区二区| 欧美一区二区三区在线| 日本vs亚洲vs韩国一区三区二区 | 91小视频免费看| 亚洲图片你懂的| 一本色道久久综合亚洲精品按摩| 最新热久久免费视频| 97精品国产露脸对白| 日韩理论片在线| 91久久精品国产91性色tv| 一区二区三区不卡视频在线观看| 91福利国产精品| 亚洲一区二区三区四区的| 精品视频一区二区不卡| 日日夜夜精品视频免费| 日韩精品专区在线影院观看| 韩国欧美国产一区| 国产日韩欧美a| 91丨porny丨最新| 亚洲精品视频免费看| 欧美日韩免费高清一区色橹橹 | 中文字幕在线不卡视频| 91免费看片在线观看| 亚洲一区二区五区| 日韩一级完整毛片| 国产一区二区影院| 中文字幕亚洲区| 欧美亚洲综合在线| 蜜臀久久99精品久久久久宅男| 欧美成人高清电影在线| 成人免费av资源| 一区二区不卡在线播放| 在线成人小视频| 国内外成人在线| 国产精品国产三级国产普通话蜜臀| 一本大道av一区二区在线播放| 午夜影院久久久| 久久综合色综合88| 9人人澡人人爽人人精品| 亚洲夂夂婷婷色拍ww47| 日韩免费电影一区| 成人三级伦理片| 亚洲永久精品国产| 欧美精品一区二区三区在线播放| 成人毛片在线观看| 亚洲午夜av在线| 久久人人97超碰com| 91欧美激情一区二区三区成人| 午夜精品国产更新| 日本一区二区三区视频视频| 在线精品观看国产| 老色鬼精品视频在线观看播放| 亚洲国产经典视频| 欧美肥大bbwbbw高潮| 成人一级视频在线观看| 亚洲成在线观看| 国产午夜久久久久| 欧美三级电影在线观看| 国产高清不卡二三区| 亚洲第一激情av| 国产精品网站在线| 欧美精品丝袜中出| 不卡一区二区中文字幕| 奇米色777欧美一区二区| 国产精品卡一卡二| 欧美一级在线视频| 91亚洲精品乱码久久久久久蜜桃 | 国产在线视频一区二区三区| 亚洲欧美另类久久久精品| 精品日韩欧美在线| 色婷婷亚洲综合| 国产精品一级黄| 日韩二区在线观看| 综合电影一区二区三区| 精品国产百合女同互慰| 欧洲一区二区三区免费视频| 国产91精品一区二区| 奇米精品一区二区三区在线观看一 | 欧美日韩在线三区| 成+人+亚洲+综合天堂| 久久国产剧场电影| 欧美日韩高清在线| av高清久久久| 韩国成人福利片在线播放| 亚洲国产成人av网| 国产精品福利电影一区二区三区四区| 日韩一卡二卡三卡| 欧美色图激情小说| 91小宝寻花一区二区三区| 国产在线播精品第三| 日韩中文欧美在线| 一二三区精品福利视频| 国产精品丝袜在线| 久久精品人人做人人综合 | 国产欧美一区二区三区鸳鸯浴 | 午夜影院在线观看欧美| 亚洲精品国产成人久久av盗摄| 国产日韩av一区二区| 精品少妇一区二区| 日韩一区二区三免费高清| 欧美视频在线播放| 日本黄色一区二区| 99久久精品国产导航| 成人性生交大合| 国产精品1区二区.| 国产最新精品精品你懂的| 免费成人结看片| 日韩二区三区四区| 丝袜亚洲另类丝袜在线| 亚洲bt欧美bt精品| 欧美日韩一区三区四区| 色婷婷综合久久久久中文一区二区| 成人激情校园春色| 成人av网址在线观看| 成人激情午夜影院| 成人的网站免费观看| 国产盗摄精品一区二区三区在线| 国产一区二区视频在线| 国产揄拍国内精品对白| 国模冰冰炮一区二区| 国产老肥熟一区二区三区| 精品一区二区免费在线观看| 久久精品国产**网站演员| 久久精品国产99久久6| 久久国产精品一区二区| 久久69国产一区二区蜜臀| 精品一区二区三区免费视频| 精品综合免费视频观看| 精品亚洲国内自在自线福利| 久久99精品国产.久久久久久| 久久国产福利国产秒拍| 极品瑜伽女神91| 国产精品综合久久| 丰满亚洲少妇av| av在线播放一区二区三区| 91蜜桃免费观看视频| 欧美专区日韩专区| 欧美丰满一区二区免费视频 | 精品盗摄一区二区三区| 国产盗摄精品一区二区三区在线 | 91在线观看免费视频| 在线一区二区三区四区| 欧美日韩一区二区不卡| 91精品国产综合久久久蜜臀粉嫩| 日韩欧美123| 国产亚洲欧美中文| 中文字幕一区二区日韩精品绯色| 亚洲激情图片小说视频| 午夜精品久久久久久久99水蜜桃| 美女高潮久久久| 国产精品1区二区.| 91免费观看国产| 欧美日韩国产系列| 欧美mv日韩mv国产网站app| 欧美激情一区二区三区蜜桃视频 | 日本一区二区视频在线| 亚洲美女屁股眼交| 丝袜国产日韩另类美女| 韩国女主播一区二区三区| 成人av综合一区| 欧美影视一区在线| 日韩欧美亚洲一区二区| 国产日韩影视精品| 亚洲国产精品一区二区久久恐怖片| 日本成人在线不卡视频| 国产a久久麻豆| 欧美中文字幕一区二区三区亚洲| 日韩一卡二卡三卡国产欧美| 中文av一区二区| 午夜婷婷国产麻豆精品| 国产精品小仙女| 欧美系列亚洲系列| 久久久久久97三级| 一区二区成人在线视频| 国产专区欧美精品| 色乱码一区二区三区88| 日韩免费一区二区| 中文字幕欧美一| 久久精品国产亚洲高清剧情介绍| 成人免费视频播放| 欧美日韩大陆在线| 中文字幕第一区第二区| 亚洲aaa精品| 成人av免费网站| 欧美一区二区在线免费观看| 国产精品青草综合久久久久99| 婷婷久久综合九色综合绿巨人| 国产91清纯白嫩初高中在线观看 | 日韩欧美成人激情| 一区二区三区中文字幕电影| 国产在线国偷精品免费看| 在线精品观看国产| 日本一区二区免费在线观看视频|