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

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

?? rt_linux.c

?? Linux下的RT系列無線網卡驅動,可以直接在x86平臺上編譯
?? C
?? 第 1 頁 / 共 3 頁
字號:
/* ************************************************************************* * Ralink Tech Inc. * 4F, No. 2 Technology 5th Rd. * Science-based Industrial Park * Hsin-chu, 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.             *  *                                                                       *  ************************************************************************* */#include "rt_config.h"ULONG	RTDebugLevel = RT_DEBUG_ERROR;BUILD_TIMER_FUNCTION(MlmePeriodicExec);//BUILD_TIMER_FUNCTION(MlmeRssiReportExec);BUILD_TIMER_FUNCTION(AsicRxAntEvalTimeout);BUILD_TIMER_FUNCTION(APSDPeriodicExec);BUILD_TIMER_FUNCTION(AsicRfTuningExec);#ifdef CONFIG_STA_SUPPORTBUILD_TIMER_FUNCTION(BeaconTimeout);BUILD_TIMER_FUNCTION(ScanTimeout);BUILD_TIMER_FUNCTION(AuthTimeout);BUILD_TIMER_FUNCTION(AssocTimeout);BUILD_TIMER_FUNCTION(ReassocTimeout);BUILD_TIMER_FUNCTION(DisassocTimeout);BUILD_TIMER_FUNCTION(LinkDownExec);#ifdef LEAP_SUPPORTBUILD_TIMER_FUNCTION(LeapAuthTimeout);#endifBUILD_TIMER_FUNCTION(StaQuickResponeForRateUpExec);BUILD_TIMER_FUNCTION(WpaDisassocApAndBlockAssoc);#endif // CONFIG_STA_SUPPORT //// for wireless event messagechar const *pWirelessEventText[IW_EVENT_TYPE_NUM] = {        "had associated successfully",							/* IW_ASSOC_EVENT_FLAG */    "had disassociated",									/* IW_DISASSOC_EVENT_FLAG */    "had deauthenticated",									/* IW_DEAUTH_EVENT_FLAG */    "had been aged-out and disassociated",					/* IW_AGEOUT_EVENT_FLAG */    "occurred CounterMeasures attack",						/* IW_COUNTER_MEASURES_EVENT_FLAG */	    "occurred replay counter different in Key Handshaking",	/* IW_REPLAY_COUNTER_DIFF_EVENT_FLAG */    "occurred RSNIE different in Key Handshaking",			/* IW_RSNIE_DIFF_EVENT_FLAG */    "occurred MIC different in Key Handshaking",			/* IW_MIC_DIFF_EVENT_FLAG */    "occurred ICV error in RX",								/* IW_ICV_ERROR_EVENT_FLAG */    "occurred MIC error in RX",								/* IW_MIC_ERROR_EVENT_FLAG */	"Group Key Handshaking timeout",						/* IW_GROUP_HS_TIMEOUT_EVENT_FLAG */ 	"Pairwise Key Handshaking timeout",						/* IW_PAIRWISE_HS_TIMEOUT_EVENT_FLAG */ 	"RSN IE sanity check failure",							/* IW_RSNIE_SANITY_FAIL_EVENT_FLAG */ 	"set key done in WPA/WPAPSK",							/* IW_SET_KEY_DONE_WPA1_EVENT_FLAG */ 	"set key done in WPA2/WPA2PSK"};						/* IW_SET_KEY_DONE_WPA2_EVENT_FLAG */ /* timeout -- ms */VOID RTMP_SetPeriodicTimer(	IN	NDIS_MINIPORT_TIMER *pTimer, 	IN	unsigned long timeout){	timeout = ((timeout*HZ) / 1000);	pTimer->expires = jiffies + timeout;	add_timer(pTimer);}/* convert NdisMInitializeTimer --> RTMP_OS_Init_Timer */VOID RTMP_OS_Init_Timer(	IN	PRTMP_ADAPTER pAd,	IN	NDIS_MINIPORT_TIMER *pTimer, 	IN	TIMER_FUNCTION function,	IN	PVOID data){	init_timer(pTimer);    pTimer->data = (unsigned long)data;    pTimer->function = function;		}VOID RTMP_OS_Add_Timer(	IN	NDIS_MINIPORT_TIMER		*pTimer,	IN	unsigned long timeout){	timeout = ((timeout*HZ) / 1000);	pTimer->expires = jiffies + timeout;	add_timer(pTimer);}VOID RTMP_OS_Mod_Timer(	IN	NDIS_MINIPORT_TIMER		*pTimer,	IN	unsigned long timeout){	timeout = ((timeout*HZ) / 1000);	mod_timer(pTimer, jiffies + timeout);}VOID RTMP_OS_Del_Timer(	IN	NDIS_MINIPORT_TIMER		*pTimer,	OUT	BOOLEAN					*pCancelled){	if (timer_pending(pTimer))	{			*pCancelled = del_timer_sync(pTimer);		}	else	{		*pCancelled = TRUE;	}	}VOID RTMP_OS_Release_Packet(	IN	PRTMP_ADAPTER pAd,	IN	PQUEUE_ENTRY  pEntry){	//RELEASE_NDIS_PACKET(pAd, (struct sk_buff *)pEntry);}	// Unify all delay routine by using udelayVOID RTMPusecDelay(	IN	ULONG	usec){	ULONG	i;	for (i = 0; i < (usec / 50); i++)		udelay(50);	if (usec % 50)		udelay(usec % 50);}void RTMP_GetCurrentSystemTime(LARGE_INTEGER *time){	time->u.LowPart = jiffies;}// pAd MUST allow to be NULLNDIS_STATUS os_alloc_mem(	IN	PRTMP_ADAPTER pAd,	OUT	PUCHAR *mem,	IN	ULONG  size){		*mem = (PUCHAR) kmalloc(size, GFP_ATOMIC);	if (*mem)		return (NDIS_STATUS_SUCCESS);	else		return (NDIS_STATUS_FAILURE);}// pAd MUST allow to be NULLNDIS_STATUS os_free_mem(	IN	PRTMP_ADAPTER pAd,	IN	PUCHAR mem){		ASSERT(mem);	kfree(mem);	return (NDIS_STATUS_SUCCESS);}NDIS_STATUS AdapterBlockAllocateMemory(	IN PVOID	handle,	OUT	PVOID	*ppAd){	PPCI_DEV pci_dev;	dma_addr_t	*phy_addr;	POS_COOKIE pObj = (POS_COOKIE) handle;		pci_dev = pObj->pci_dev;	phy_addr = &pObj->pAd_pa;		*ppAd = (PVOID)vmalloc(sizeof(RTMP_ADAPTER)); //pci_alloc_consistent(pci_dev, sizeof(RTMP_ADAPTER), phy_addr);    	if (*ppAd) 	{		NdisZeroMemory(*ppAd, sizeof(RTMP_ADAPTER));		((PRTMP_ADAPTER)*ppAd)->OS_Cookie = handle;		return (NDIS_STATUS_SUCCESS);	} else {		return (NDIS_STATUS_FAILURE);	}}void RTMP_AllocateTxDescMemory(	IN	PRTMP_ADAPTER pAd,	IN	UINT	Index,	IN	ULONG	Length,	IN	BOOLEAN	Cached,	OUT	PVOID	*VirtualAddress,	OUT	PNDIS_PHYSICAL_ADDRESS PhysicalAddress){	POS_COOKIE pObj = (POS_COOKIE)pAd->OS_Cookie;	*VirtualAddress = (PVOID)pci_alloc_consistent(pObj->pci_dev,sizeof(char)*Length, PhysicalAddress);}void RTMP_AllocateMgmtDescMemory(	IN	PRTMP_ADAPTER pAd,	IN	ULONG	Length,	IN	BOOLEAN	Cached,	OUT	PVOID	*VirtualAddress,	OUT	PNDIS_PHYSICAL_ADDRESS PhysicalAddress){	POS_COOKIE pObj = (POS_COOKIE)pAd->OS_Cookie;	*VirtualAddress = (PVOID)pci_alloc_consistent(pObj->pci_dev,sizeof(char)*Length, PhysicalAddress);}void RTMP_AllocateRxDescMemory(	IN	PRTMP_ADAPTER pAd,	IN	ULONG	Length,	IN	BOOLEAN	Cached,	OUT	PVOID	*VirtualAddress,	OUT	PNDIS_PHYSICAL_ADDRESS PhysicalAddress){	POS_COOKIE pObj = (POS_COOKIE)pAd->OS_Cookie;	*VirtualAddress = (PVOID)pci_alloc_consistent(pObj->pci_dev,sizeof(char)*Length, PhysicalAddress);}void RTMP_FreeRxDescMemory(	IN	PRTMP_ADAPTER pAd,	IN	ULONG	Length,	IN	PVOID	VirtualAddress,	IN	NDIS_PHYSICAL_ADDRESS PhysicalAddress){	POS_COOKIE pObj = (POS_COOKIE)pAd->OS_Cookie;		pci_free_consistent(pObj->pci_dev, Length, VirtualAddress, PhysicalAddress);}void RTMP_AllocateFirstTxBuffer(	IN	PRTMP_ADAPTER pAd,	IN	UINT	Index,	IN	ULONG	Length,	IN	BOOLEAN	Cached,	OUT	PVOID	*VirtualAddress,	OUT	PNDIS_PHYSICAL_ADDRESS PhysicalAddress){	POS_COOKIE pObj = (POS_COOKIE)pAd->OS_Cookie;	*VirtualAddress = (PVOID)pci_alloc_consistent(pObj->pci_dev,sizeof(char)*Length, PhysicalAddress);}/* * FUNCTION: Allocate a common buffer for DMA * ARGUMENTS: *     AdapterHandle:  AdapterHandle *     Length:  Number of bytes to allocate *     Cached:  Whether or not the memory can be cached *     VirtualAddress:  Pointer to memory is returned here *     PhysicalAddress:  Physical address corresponding to virtual address */void RTMP_AllocateSharedMemory(	IN	PRTMP_ADAPTER pAd,	IN	ULONG	Length,	IN	BOOLEAN	Cached,	OUT	PVOID	*VirtualAddress,	OUT	PNDIS_PHYSICAL_ADDRESS PhysicalAddress){	POS_COOKIE pObj = (POS_COOKIE)pAd->OS_Cookie;	*VirtualAddress = (PVOID)pci_alloc_consistent(pObj->pci_dev,sizeof(char)*Length, PhysicalAddress);	}VOID RTMPFreeDMAMemory(    IN  PRTMP_ADAPTER   pAd){	int index, num , j;	PRTMP_TX_RING pTxRing;	PTXD_STRUC	  pTxD;	PNDIS_PACKET  pPacket;	POS_COOKIE pObj =(POS_COOKIE) pAd->OS_Cookie;		DBGPRINT(RT_DEBUG_TRACE, ("--> RTMPFreeDMAMemory\n"));		// Free TxSwQueue Packet	for (index=0; index <NUM_OF_TX_RING; index++)	{		PQUEUE_ENTRY pEntry;		PNDIS_PACKET pPacket;		PQUEUE_HEADER   pQueue;				pQueue = &pAd->TxSwQueue[index];		while (pQueue->Head)		{			pEntry = RemoveHeadQueue(pQueue);			pPacket = QUEUE_ENTRY_TO_PACKET(pEntry);			RELEASE_NDIS_PACKET(pAd, pPacket, NDIS_STATUS_FAILURE);		}		}	// Free Tx Ring Packet	for (index=0;index< NUM_OF_TX_RING;index++)	{		pTxRing = &pAd->TxRing[index];				for (j=0; j< TX_RING_SIZE; j++)		{				pTxD = (PTXD_STRUC) (pTxRing->Cell[j].AllocVa);			pPacket = pTxRing->Cell[j].pNdisPacket;			if (pPacket)			{            	PCI_UNMAP_SINGLE(pAd, pTxD->SDPtr0, pTxD->SDLen0, PCI_DMA_TODEVICE);				RELEASE_NDIS_PACKET(pAd, pPacket, NDIS_STATUS_SUCCESS);			}					//Always assign pNdisPacket as NULL after clear			pTxRing->Cell[j].pNdisPacket = NULL;								pPacket = pTxRing->Cell[j].pNextNdisPacket;						if (pPacket)			{            	PCI_UNMAP_SINGLE(pAd, pTxD->SDPtr1, pTxD->SDLen1, PCI_DMA_TODEVICE);				RELEASE_NDIS_PACKET(pAd, pPacket, NDIS_STATUS_SUCCESS);			}			//Always assign pNextNdisPacket as NULL after clear			pTxRing->Cell[pTxRing->TxSwFreeIdx].pNextNdisPacket = NULL;		}	}			for (index = RX_RING_SIZE - 1 ; index >= 0; index--)	{		if ((pAd->RxRing.Cell[index].DmaBuf.AllocVa) && (pAd->RxRing.Cell[index].pNdisPacket))		{			pci_unmap_single(pObj->pci_dev, pAd->RxRing.Cell[index].DmaBuf.AllocPa, pAd->RxRing.Cell[index].DmaBuf.AllocSize, PCI_DMA_FROMDEVICE);			RELEASE_NDIS_PACKET(pAd, pAd->RxRing.Cell[index].pNdisPacket, NDIS_STATUS_SUCCESS);		}#ifdef RX_SCATTERED		if ((pAd->RxRing.Cell[index].NextDmaBuf.AllocVa) && (pAd->RxRing.Cell[index].pNextNdisPacket))		{			pci_unmap_single(pObj->pci_dev, pAd->RxRing.Cell[index].NextDmaBuf.AllocPa, pAd->RxRing.Cell[index].NextDmaBuf.AllocSize, PCI_DMA_FROMDEVICE);			RELEASE_NDIS_PACKET(pAd, pAd->RxRing.Cell[index].pNextNdisPacket, NDIS_STATUS_SUCCESS);		}#endif			}	NdisZeroMemory(pAd->RxRing.Cell, RX_RING_SIZE * sizeof(RTMP_DMACB));		if (pAd->RxDescRing.AllocVa)    {    	pci_free_consistent(pObj->pci_dev, pAd->RxDescRing.AllocSize, pAd->RxDescRing.AllocVa, pAd->RxDescRing.AllocPa);    }    NdisZeroMemory(&pAd->RxDescRing, sizeof(RTMP_DMABUF));		if (pAd->MgmtDescRing.AllocVa)	{		pci_free_consistent(pObj->pci_dev, pAd->MgmtDescRing.AllocSize,	pAd->MgmtDescRing.AllocVa, pAd->MgmtDescRing.AllocPa);	}	NdisZeroMemory(&pAd->MgmtDescRing, sizeof(RTMP_DMABUF));	for (num = 0; num < NUM_OF_TX_RING; num++)	{    	if (pAd->TxBufSpace[num].AllocVa)	    {	    	pci_free_consistent(pObj->pci_dev, pAd->TxBufSpace[num].AllocSize, pAd->TxBufSpace[num].AllocVa, pAd->TxBufSpace[num].AllocPa);	    }	    NdisZeroMemory(&pAd->TxBufSpace[num], sizeof(RTMP_DMABUF));	        	if (pAd->TxDescRing[num].AllocVa)	    {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产尤物一区二区在线| 亚洲成av人**亚洲成av**| 激情综合网天天干| 精品乱人伦小说| 国产一区欧美二区| 亚洲国产电影在线观看| 99v久久综合狠狠综合久久| 亚洲日本va午夜在线影院| 91小视频在线观看| 亚洲成年人影院| 欧美不卡一区二区三区四区| 激情五月婷婷综合| 日本一区二区不卡视频| 91久久国产最好的精华液| 亚洲一区二区三区国产| 91精品国产色综合久久不卡电影| 男人操女人的视频在线观看欧美| 日韩精品最新网址| 成人av网站免费观看| 亚洲国产精品视频| 精品播放一区二区| 94-欧美-setu| 视频精品一区二区| 国产欧美一区二区精品久导航| 99精品国产99久久久久久白柏| 亚洲成人自拍网| 国产视频911| 欧美日韩精品欧美日韩精品一综合| 美腿丝袜在线亚洲一区| 国产精品久线在线观看| 欧美日韩精品一二三区| 国产成人精品一区二区三区网站观看| 亚洲欧美一区二区三区极速播放| 91精品国产综合久久婷婷香蕉 | 国产精品亲子伦对白| 欧美在线观看18| 国产乱码精品一品二品| 亚洲精品国久久99热| 精品国产乱码久久久久久影片| aaa国产一区| 久久se精品一区精品二区| 中文字幕字幕中文在线中不卡视频| 在线成人小视频| 99久久99久久久精品齐齐| 免费黄网站欧美| 亚洲国产视频网站| 国产精品亲子伦对白| 日韩精品中文字幕在线不卡尤物| 99国产精品久| 国产91富婆露脸刺激对白| 日日夜夜免费精品| 亚洲欧美另类在线| 国产欧美精品区一区二区三区| 欧美丰满美乳xxx高潮www| 99免费精品在线观看| 国产伦精品一区二区三区免费| 亚洲国产美女搞黄色| 中文字幕一区二区日韩精品绯色| 精品日本一线二线三线不卡| 欧美无砖专区一中文字| av影院午夜一区| 国产一区二区在线电影| 免费欧美在线视频| 亚洲1区2区3区4区| 亚洲美女偷拍久久| 成人免费在线视频观看| 久久久国际精品| 欧美成人一区二区三区在线观看| 欧美日韩一区二区不卡| 在线观看一区不卡| 91亚洲国产成人精品一区二区三| 粉嫩嫩av羞羞动漫久久久 | 欧美亚州韩日在线看免费版国语版| 国产精品一线二线三线| 久久激情五月激情| 美女诱惑一区二区| 免费久久99精品国产| 免费观看日韩av| 麻豆精品视频在线观看视频| 午夜精品一区二区三区三上悠亚| 亚洲一区二区三区四区在线免费观看| 一区二区三区中文在线观看| 亚洲欧美韩国综合色| 亚洲免费观看高清完整版在线观看熊| 中文乱码免费一区二区| 国产精品久久午夜| 亚洲色图一区二区| 一区二区三区精品在线观看| 亚洲免费观看高清完整| 亚洲最色的网站| 天天射综合影视| 久色婷婷小香蕉久久| 国产精品伊人色| 97精品久久久午夜一区二区三区 | 2欧美一区二区三区在线观看视频| 日韩欧美高清一区| 国产亚洲一区二区三区在线观看| 欧美国产视频在线| 一区二区三区在线影院| 国产成人在线色| 91亚洲国产成人精品一区二区三| 欧美视频一区在线| 日韩午夜三级在线| 国产欧美一区视频| 亚洲中国最大av网站| 蜜桃传媒麻豆第一区在线观看| 国产精品一区免费视频| 91蜜桃传媒精品久久久一区二区| 欧美高清激情brazzers| 久久久99精品免费观看| 最新国产成人在线观看| 日韩 欧美一区二区三区| 国产一区二区主播在线| 99re这里只有精品首页| 这里只有精品99re| 国产精品亲子乱子伦xxxx裸| 亚洲va天堂va国产va久| 国产精品亚洲视频| 欧美三级中文字| 久久亚洲综合色一区二区三区| 亚洲欧美在线视频| 秋霞av亚洲一区二区三| 99视频超级精品| 精品久久一二三区| 一区二区三区蜜桃网| 精品在线亚洲视频| 欧美性大战久久久久久久蜜臀| 精品国产污污免费网站入口 | 亚洲女人的天堂| 久久激情综合网| 欧美做爰猛烈大尺度电影无法无天| 日韩视频不卡中文| 亚洲桃色在线一区| 国产伦精品一区二区三区免费迷 | 蜜臀av性久久久久蜜臀aⅴ流畅| 大尺度一区二区| 4438亚洲最大| 亚洲精品视频免费观看| 国产99久久久精品| 日韩欧美国产不卡| 亚洲va韩国va欧美va精品| www.欧美.com| 国产无一区二区| 蜜臀av一级做a爰片久久| 色综合久久88色综合天天6| 亚洲精品一区二区三区福利 | 国产自产视频一区二区三区| 欧美一二三四区在线| 日韩伦理免费电影| 全部av―极品视觉盛宴亚洲| 色一情一乱一乱一91av| 中文字幕巨乱亚洲| 国产精品一色哟哟哟| 日韩欧美一区在线| 日本三级韩国三级欧美三级| 色999日韩国产欧美一区二区| 国产欧美日韩三级| 国产一区二区在线观看免费| 欧美成人性福生活免费看| 无码av免费一区二区三区试看 | 国产suv精品一区二区三区| 日韩精品在线看片z| 香蕉影视欧美成人| 欧美日韩久久一区二区| 午夜精品久久一牛影视| 欧美视频在线一区二区三区| 亚洲人精品午夜| 99久久精品国产观看| 国产精品毛片久久久久久久| 国产成人av电影在线观看| 国产无遮挡一区二区三区毛片日本| 麻豆精品在线播放| 精品国产髙清在线看国产毛片 | 亚洲国产成人av网| 欧美日韩视频在线一区二区| 一区二区三区成人| 精品视频免费在线| 日韩 欧美一区二区三区| 日韩西西人体444www| 精品一区二区三区在线播放 | 欧美不卡一区二区三区四区| 久久99久国产精品黄毛片色诱| 日韩欧美在线一区二区三区| 麻豆精品一二三| 国产喷白浆一区二区三区| 高清不卡一区二区在线| 中文字幕日本乱码精品影院| 91原创在线视频| 亚洲r级在线视频| 日韩一区二区三区四区五区六区| 老司机免费视频一区二区 | 国产精一品亚洲二区在线视频| 国产午夜久久久久| 99久久精品免费| 性做久久久久久久免费看| 欧美xingq一区二区| 成人av中文字幕| 亚洲国产精品一区二区www在线 | 欧美羞羞免费网站| 蜜桃av一区二区在线观看|