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

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

?? wt_dev_mem.c

?? linux,red ,test,driver,need
?? C
?? 第 1 頁 / 共 2 頁
字號:
/***************************************************************************** *This file realize all network device related functions  *Version:  *Copyright(c) 2004-2005 Beijing LHET Microelectronics Inc,All Right Reserved. *****************************************************************************/ #include "wtprecomp.h" /////////////////////////////////////////////////////////////////////////////////////////WT_ADAPTER *WtWlanAdpterWt4 = NULL;//void Wt4_HandleInterrupt_tasklet(unsigned long);//DECLARE_TASKLET(WtHandleInterrupt, Wt4_HandleInterrupt_tasklet, 0);/////////////////////////////////////////////////////////////////////////////////////////static int WtAllocMemory(WT_ADAPTER *Adapter);int WtHandleSendInterrupt(IN  PWT_ADAPTER  Adapter);void WtHandleInterrupt(WT_ADAPTER *Adapter); //const unsigned char	dummy_mac[6] = { 0x00, 0x30, 0xB4, 0x00, 0x00, 0x00 }; /******************************************************************************    Device Interrupt Handler******************************************************************************/irqreturn_t WtInterrupt(int irq, void *config, struct pt_regs *regs){               //printk("<0> Now we entered  function %s  !!!\r\n", __FUNCTION__);       	WT_ADAPTER *Adapter=config;	FN_ENTER;	WT_SPIN_LOCK_IRQ(&Adapter->slock);//mxx already locked by wt_etc.c 433 line error	        //printk("%s   intmaskctrl = %04x intstatus = %04x : %08x %08x\r\n", __FUNCTION__,  Adapter->CSRAddress->IntMaskCtrl, Adapter->CSRAddress->IntStatus, &Adapter->MainMemAddress->HwCSMem.CSRAddress, Adapter->MainMemAddress->HwCSMem.SysCfg.ChipFreq);	        	//printk("<0>%s  step3 intmaskctrl = %04x intstatus = %04x  \r\n", __FUNCTION__,  Adapter->CSRAddress->IntMaskCtrl, Adapter->CSRAddress->IntStatus);		if((!NIC_INTERRUPT_DISABLED(Adapter))&&NIC_INTERRUPT_ACTIVE(Adapter))	{ 		//printk("<0>%s  step4 intmaskctrl = %04x intstatus = %04x  txstatus = %04x RxStatus = %04x \r\n", __FUNCTION__,  Adapter->CSRAddress->IntMaskCtrl, Adapter->CSRAddress->IntStatus, Adapter->CSRAddress->TxStatus,Adapter->CSRAddress->RxStatus);		  //mdelay(80);	  //Adapter->debugvar1++;          //printk(" %s we got our interrupt (: !!!\n", __FUNCTION__);   	  WtDisableInterrupts(Adapter);	  //printk(" %s WtDisableInterrupts complete !!!\n", __FUNCTION__);	   //mdelay(80);	  WtClearInterrupts(Adapter);	  //printk(" %s WtClearInterrupts complete !!!\n", __FUNCTION__);	  	  //tasklet_schedule(&WtHandleInterrupt);	  //printk(" %s tasklet_schedule complete !!!\n", __FUNCTION__);	  	  WtHandleInterrupt(Adapter);	 // printk(" %s WtHandleInterrupt complete !!!\n", __FUNCTION__);	   	  	//WtEnableInterrupts( Adapter );	  //printk(" %s WtEnableInterrupts complete !!!\n", __FUNCTION__);	}	else	{	  //printk(" %s we got wrong interrupt ): prepare to exit !!!\n", __FUNCTION__);	  WT_SPIN_UNLOCK_IRQ(&Adapter->slock);	  //printk(" %s WT_SPIN_UNLOCK completed, bye ,wrong interrupt!!!\n", __FUNCTION__);        FN_EXIT(0,0);	  return IRQ_NONE;	  	}	//printk(" step 7 complete !!!\n");           WT_SPIN_UNLOCK_IRQ(&Adapter->slock);        FN_EXIT(0,0);	//printk(" step8 complete !!!\n");	return IRQ_HANDLED;}/////////////////////////////////////////////////////////////////////////////////////////void Wt4_HandleInterrupt_tasklet(unsigned long  pWtAdapter)void WtHandleInterrupt(WT_ADAPTER *Adapter){	//WT_ADAPTER *Adapter = (WT_ADAPTER *)WtWlanAdpterWt4;		//printk(" %s In function Wt4_HandleInterrupt_tasklet step 2 step !!! intmaskctrl = %04x intstatus = %04x : %08x %08x\n", __FUNCTION__,  Adapter->CSRAddress->IntMaskCtrl, Adapter->CSRAddress->IntStatus, &Adapter->MainMemAddress->HwCSMem.CSRAddress, Adapter->MainMemAddress->HwCSMem.SysCfg.ChipFreq);	//	Adapter->IntStatus |= Adapter->CSRAddress->IntStatus;//not =, because it is set at WtClearInterrupts first//	*((volatile USHORT *)(&Adapter->CSRAddress->IntStatus) )= Adapter->IntStatus;	//printk("Adapter->IntStatus 1 : %d \n", Adapter->IntStatus);	//printk("%s intmaskctrl = %04x intstatus = %04x  adapter->IntStatus = %04x\r\n", __FUNCTION__,  Adapter->CSRAddress->IntMaskCtrl, Adapter->CSRAddress->IntStatus, Adapter->IntStatus);	//printk("WtHandleInterrupt \n");		if( Adapter != NULL )        {		  				if(Adapter->IntStatus & MASK_STATUS_INT_TXEND)		{				tasklet_schedule(&Adapter->TxTasklet);		//printk("<0> %s WtHandleSendInterrupt is executed !!!\n", __FUNCTION__);	 				}		//added by hk 2006.4.11		//Adapter->IntStatus |= Adapter->CSRAddress->IntStatus;	//	*((volatile USHORT *)(&Adapter->CSRAddress->IntStatus) )= 		//Adapter->IntStatus & MASK_STATUS_INT_RXEND;					//printk("Adapter->IntStatus 2 : %d \n", Adapter->IntStatus);				if(Adapter->IntStatus & MASK_STATUS_INT_RXEND)//whether receive end interrupt		{ 			tasklet_schedule(&Adapter->RxTasklet);  //			printk("<0> %s WtHandleRecvInterrupt is executed !!!\n", __FUNCTION__);		}		else			//StaMacSend( Adapter );			WtEnableInterrupts(Adapter);			 			}		FN_EXIT( 0, 0 );			}VOID WtHandleRecvInterrupt(IN  PWT_ADAPTER  Adapter){                //printk(" Now we entered  function %s and the value of RecvNum is %d !!!\n", __FUNCTION__,Adapter->debugvar3++);        //printk("<0>)0x110 = %d 0x120 = %d 0x124 = %d 0x128 = %d 0x164 = %08x\r\n", Adapter->MainMemAddress->HwCSMem.HwStatistic.XmtMsduCounter, Adapter->MainMemAddress->HwCSMem.HwStatistic.RcvMpduCounter, Adapter->MainMemAddress->HwCSMem.HwStatistic.RcvSuccessMpduCounter, Adapter->MainMemAddress->HwCSMem.HwStatistic.RcvMissedCounter, Adapter->CSRAddress->RxStatus.RegRxStatus);	UINT            LoopIndex = 0;	UINT            LoopCount = 1;	BOOL            bContinue = TRUE;	BOOL            bAllocNewRfd = FALSE;	//USHORT          PacketStatus;	UCHAR           RxBank;	p80211_hdr_t	*pHdr;	UINT16          ftype;	UINT            fstype;	RXSTATUS        RxStatus;	UCHAR           Index;	PWTWLAN_RXBUF   pWtRxBuf;	PWTWLAN_MAINMEM	MainHwMem;//	WtDisableInterrupts(Adapter);	ASSERT(Adapter->nReadyRecv >= NIC_MIN_RFDS);	MainHwMem = Adapter->MainMemAddress;		// change to allow rcv multi package 	        //printk("<0>we are now in function %s at the %d line :-)\r\n",__FUNCTION__,__LINE__);	while(LoopIndex++ < LoopCount && bContinue)	{	        RxStatus = Adapter->CSRAddress->RxStatus;	       		//printk(" RxStatus = %08x\r\n",RxStatus.RegRxStatus);	        if(RxStatus.RegRxStatus == 0)	               break;	        for( Index = 0; Index < 4; Index++ )	        {	                if(RxStatus.RegRxStatus & (MASK_RX_BANK_DONE<<(2*Index)))	                {	                       RxBank = Index;					                       // log rx frame type and timestamp here	                       // move here for convenient to debug out	 	       	                       pHdr = (p80211_hdr_t*)&Adapter->MainMemAddress->RxBufMap[RxBank].HwRxBuf.dot11Head;	                       ftype =  WLAN_GET_FC_FTYPE(ieee2host16(pHdr->a3.fc));	                       fstype = WLAN_GET_FC_FSTYPE(ieee2host16(pHdr->a3.fc));	                       if( FALSE == MPPreRecv( Adapter, RxBank))	                       {			                //printk("<0>We lost a package :-(\n\r");		                        Adapter->CSRAddress->RxStatus.RegRxStatus = MASK_RX_BANK<<(2*Index);		                        continue;	                       }			       								if( ftype == WLAN_FTYPE_DATA )					{		                        AllocRxBuff(Adapter,  &pWtRxBuf);					}					else					{	                                AllocRxMgmtBuff(Adapter,  &pWtRxBuf);					}			       					                       if( NULL != pWtRxBuf )	                       {		                        pWtRxBuf->ftype = ftype;		                        pWtRxBuf->fstype = fstype;		                        pWtRxBuf->FrmCtl = ieee2host16(pHdr->a3.fc);		                        if( NICRecv( Adapter, Index, pWtRxBuf)  )		                        { 		                               if(Adapter->IsListenMode)		                               {       //defined in mime.c add it later!		                                       //InsertPacket(Adapter->pReceivedPackets, pWtRxBuf);									                                       if( ftype == WLAN_FTYPE_DATA )			                                       NICReturnRxBuf( Adapter,  pWtRxBuf );		                                       else			                                       NICReturnRxMgmtBuf( Adapter,  pWtRxBuf );		                                }		                                else		                                {						                                        Adapter->Ndis80211Parameter.RSSI = pWtRxBuf->RXHwBuf.pHwRxBuf->RxStatus.RecvPower;		                                        WtWlanRxInQueue(  Adapter, pWtRxBuf );		                                }		    		                        }		                        else		                        {    		                                if( ftype == WLAN_FTYPE_DATA )//edited by hk 2004.11.23		                                         NICReturnRxBuf( Adapter,  pWtRxBuf );		                                else		                                         NICReturnRxMgmtBuf( Adapter,  pWtRxBuf );		                                		                        }					                                        // printk(" %s start dump now !!!\n", __FUNCTION__);		 		                        //Dump( (unsigned char *)(&Adapter->MainMemAddress->RxBufMap[RxBank].HwRxBuf), 300, TRUE, 1 );		                        //printk(" %s dump  complete now !!!\n", __FUNCTION__);		  				Adapter->CSRAddress->RxStatus.RegRxStatus = MASK_RX_BANK<<(2*Index);		                }		                else		                {		                		printk("~~~~~~~in WtHandleRecvInterrupt don't allocate pWtRxBuf\n");		                        // check if rx buf too small alloc to add, or drop it 		                        bContinue = FALSE;  		                        bAllocNewRfd = TRUE;		                        break;		                }	                }		}        } 	if (Adapter->IsListenMode)	        IndicateReceivedPackets(Adapter);			else	{		//printk(" %s receive frame@ LINE = %d \n", __FUNCTION__, __LINE__);//del temp	// 	        WtWlanCFPRSPDPC( Adapter );	        MPRecv( Adapter );		WtEnableInterrupts( Adapter );	}}//#if 0/*++Routine Description:Interrupt handler for sending processing Re-claim the send resources,                     complete sends and get more to send from the send wait queueAssumption: Send spinlock has been acquired Arguments:    Adapter  Pointer to our adapterReturn Value: NDIS_STATUS_SUCCESS              NDIS_STATUS_HARD_ERRORS	      NDIS_STATUS_PENDING--*/int WtHandleSendInterrupt(IN  PWT_ADAPTER  Adapter){	//NDIS_STATUS     Status = NDIS_STATUS_SUCCESS;	NDIS_STATUS      Status = 1;	TXSTATUS	 TxStatus;	int              TxIndex;	UCHAR            TxBankStatus;         FN_ENTER;//	WtDisableInterrupts(Adapter);			TxStatus = Adapter->CSRAddress->TxStatus;	  			//printk("<0>)0x110 = %d 0x120 = %d 0x124 = %d 0x128 = %d 0x164 = %08x\r\n", Adapter->MainMemAddress->HwCSMem.HwStatistic.XmtMsduCounter, Adapter->MainMemAddress->HwCSMem.HwStatistic.RcvMpduCounter, Adapter->MainMemAddress->HwCSMem.HwStatistic.RcvSuccessMpduCounter, Adapter->MainMemAddress->HwCSMem.HwStatistic.RcvMissedCounter, Adapter->CSRAddress->RxStatus.RegRxStatus);	//printk("<0>%s   intmaskctrl = %04x intstatus = %04x : %08x %08x\r\n", __FUNCTION__,  Adapter->CSRAddress->IntMaskCtrl, Adapter->CSRAddress->IntStatus, &Adapter->MainMemAddress->HwCSMem.CSRAddress, Adapter->MainMemAddress->HwCSMem.SysCfg.ChipFreq);	///////////////////////////////////////////////////////////////////////////////////////////////	if(Adapter->bSend_Test)	{	        //Dump( (char *)(&(Adapter->MainMemAddress->TxBufMap[1].HwTxBuf)),(1600+sizeof(WTWLAN_TAUXB)+80), TRUE, 1 );			        //printk(" return buffer\r\n");		 		kfree( Adapter->WtTDB.pTxbuf[1] );		 		Adapter->WtTDB.pTxbuf[1]  = NULL;				WtClearInterrupts(Adapter);		Adapter->MainMemAddress->HwCSMem.CSRAddress.IntMaskCtrl &= (MASK_INT_TXEND);	}//if(Adapter->bSend_Test)	///////////////////////////////////////////////////////////////////////////////////////////////	else//standed process	{  	        //printk("<0>we are now in function %s at the %d line :-)\r\n",__FUNCTION__,__LINE__);	        //printk("<0> TxStatus = %08x\r\n",TxStatus);		if( WT_TXHW_DONE(TxStatus.RegTxStatus) )		{			for( TxIndex = 0; TxIndex < TX_BUF_NUM; TxIndex++)			{				if( Adapter->WtTDB.pTxbuf[TxIndex] )				{					if( ( TxBankStatus = ( (TxStatus.RegTxStatus >> (3*TxIndex) ) & MASK_TX_BANK) ) > 4 )					{						if( TxBankStatus & MASK_TX_STATUS_ERROR )						{					       	 //printk("<0>we are now in function %s at the %d line :-(\r\n",__FUNCTION__,__LINE__);							//printk(" intmaskctrl = %04x intstatus = %04x \n\r",Adapter->CSRAddress->IntMaskCtrl, Adapter->CSRAddress->IntStatus);							Adapter->WtTDB.pTxbuf[TxIndex]->SendStatus =NDIS_STATUS_FAILURE;							TxDoneHandle( Adapter, Adapter->WtTDB.pTxbuf[TxIndex] );						}						else						{       					        	 //printk("<0>we are now in function %s at the %d line :-)\r\n",__FUNCTION__,__LINE__);							 //printk(" intmaskctrl = %04x intstatus = %04x \n\r",Adapter->CSRAddress->IntMaskCtrl, Adapter->CSRAddress->IntStatus);							Adapter->WtTDB.pTxbuf[TxIndex]->SendStatus =NDIS_STATUS_SUCCESS;							TxDoneHandle( Adapter, Adapter->WtTDB.pTxbuf[TxIndex] );						}					}				}			}		} //if( WT_TXHW_DONE(TxStatus.RegTxStatus)		else		{//		      printk("error when reading TxStatus in function WtHandleSendInterrupt\n");		}        }//standed process	StaMacSend( Adapter );	FN_EXIT(0,0);	return Status;}//#endif////////////////////////////////////////////////////////////////////////////////////////******************************************************************************    Network Interface Control & Statistical functions******************************************************************************/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲综合在线视频| 欧美喷潮久久久xxxxx| 国产精一区二区三区| 国产很黄免费观看久久| 久久综合999| 国产精品99久久久久久似苏梦涵| 日韩午夜精品电影| 美女视频网站黄色亚洲| 日韩午夜在线观看视频| 蜜臀精品一区二区三区在线观看| 91精品国产黑色紧身裤美女| 日日欢夜夜爽一区| 日韩精品一区二区三区在线播放 | 综合激情成人伊人| 精品亚洲国内自在自线福利| 精品国产污污免费网站入口| 日本sm残虐另类| 自拍偷拍欧美精品| 成人免费黄色在线| 中文欧美字幕免费| 色综合视频在线观看| 一区二区在线电影| 欧美一区欧美二区| 久久精品免费看| 日韩精品一区二区三区视频 | 国产色91在线| 国产一区二区三区视频在线播放| 精品国产91洋老外米糕| 国产一区二区电影| 久久久久久99久久久精品网站| 成人一区在线观看| 尤物视频一区二区| 4438x成人网最大色成网站| 精品一区二区日韩| 国产精品国产三级国产专播品爱网 | 国产日韩欧美一区二区三区乱码| 国产99久久久久久免费看农村| 日韩一区在线免费观看| 欧美日本一区二区| 琪琪久久久久日韩精品| 国产欧美精品在线观看| 91久久人澡人人添人人爽欧美| 日本欧美大码aⅴ在线播放| 久久久www成人免费毛片麻豆 | 国产aⅴ综合色| 亚洲三级在线播放| 成人自拍视频在线观看| 国产精品色噜噜| 欧美精品一区二区三区蜜臀 | 亚洲制服欧美中文字幕中文字幕| www久久久久| 51精品久久久久久久蜜臀| 99re免费视频精品全部| 国产精品一区免费在线观看| 琪琪一区二区三区| 亚洲国产你懂的| 亚洲欧洲综合另类| 国产精品国产三级国产aⅴ中文 | 日韩不卡一区二区| 亚洲夂夂婷婷色拍ww47| 玉米视频成人免费看| 亚洲欧洲国产日本综合| 国产精品国产三级国产普通话99 | 中文字幕日本不卡| 国产亚洲精品精华液| 精品国产一区二区三区忘忧草| 制服丝袜亚洲精品中文字幕| 欧美日韩午夜在线视频| 欧美影院午夜播放| 欧美性受xxxx黑人xyx| 91在线观看视频| 91网站黄www| 一本一本大道香蕉久在线精品| 暴力调教一区二区三区| 国产白丝网站精品污在线入口| 国产精品一区免费视频| 国产盗摄一区二区| 高清国产午夜精品久久久久久| 国产成人高清视频| 99视频精品在线| 91老司机福利 在线| 色94色欧美sute亚洲13| 在线观看日韩电影| 欧美巨大另类极品videosbest | 日韩高清在线观看| 蜜臀av亚洲一区中文字幕| 麻豆精品在线视频| 国产中文一区二区三区| 国产a级毛片一区| 91美女蜜桃在线| 欧美日韩一区二区三区高清| 91精品国产综合久久小美女| 精品国产免费人成电影在线观看四季| 日韩欧美你懂的| 欧美国产欧美综合| 亚洲免费观看高清完整版在线观看 | 亚洲bt欧美bt精品| 青娱乐精品视频| 国产激情91久久精品导航| 91一区二区在线观看| 欧美精品欧美精品系列| 精品国产凹凸成av人导航| 中文字幕一区二区三区不卡 | 亚洲大片一区二区三区| 午夜国产精品一区| 国产福利电影一区二区三区| 色一情一乱一乱一91av| 欧美一二三四在线| 国产精品视频看| 午夜精彩视频在线观看不卡| 国产美女在线精品| 99久久国产综合精品女不卡| 欧美日韩免费一区二区三区| 久久先锋影音av| 亚洲综合一二三区| 国产精品一二三四区| 在线免费亚洲电影| 亚洲精品一线二线三线无人区| 中文字幕国产一区| 日韩国产在线观看一区| 成人免费视频国产在线观看| 在线亚洲一区二区| 国产亚洲成aⅴ人片在线观看| 亚洲国产cao| av一区二区久久| 久久综合狠狠综合久久激情| 亚洲一区二区视频| 福利电影一区二区三区| 欧美一区二区播放| 亚洲午夜一区二区| 成人精品小蝌蚪| 91精品中文字幕一区二区三区| 日韩美女啊v在线免费观看| 久久aⅴ国产欧美74aaa| 欧美日韩精品二区第二页| 国产精品网曝门| 久久66热re国产| 在线不卡a资源高清| 亚洲女人小视频在线观看| 国产一区二区三区免费| 91精品国产综合久久久蜜臀图片| 亚洲日本一区二区三区| 国产高清无密码一区二区三区| 91麻豆精品久久久久蜜臀 | 国产三级一区二区三区| 免费在线观看一区二区三区| 欧美在线观看视频一区二区| 国产精品免费看片| 国产精品一区二区男女羞羞无遮挡 | 久久色中文字幕| 婷婷亚洲久悠悠色悠在线播放| 99国产一区二区三精品乱码| 久久精品无码一区二区三区| 蜜臀久久99精品久久久久宅男| 欧美日高清视频| 亚洲va中文字幕| 欧美私模裸体表演在线观看| 亚洲精选视频免费看| heyzo一本久久综合| 国产精品国产三级国产| 国产成人在线网站| 国产欧美一区在线| 国产高清无密码一区二区三区| 久久青草国产手机看片福利盒子 | 欧美精品欧美精品系列| 亚洲福利一区二区三区| 欧美日韩一区二区三区四区五区 | 欧美日韩在线播放三区四区| 一区二区三区高清在线| 欧美色综合网站| 亚洲超碰97人人做人人爱| 欧美日本高清视频在线观看| 午夜精品福利在线| 日韩一区二区三区在线观看| 蜜桃在线一区二区三区| 欧美电视剧在线看免费| 国产精品一区二区你懂的| 国产精品久久久99| 91麻豆swag| 午夜av一区二区| 欧美大片在线观看| 国产美女精品人人做人人爽| 国产精品网站导航| 91老师片黄在线观看| 亚洲福中文字幕伊人影院| 日韩精品中文字幕在线不卡尤物| 韩国精品久久久| 中文字幕不卡三区| 欧美体内she精视频| 美脚の诱脚舐め脚责91 | 99精品欧美一区二区三区综合在线| 国产精品久久久久久户外露出 | 一区二区三区在线播| 欧美喷潮久久久xxxxx| 精品亚洲porn| 亚洲人成网站影音先锋播放| 666欧美在线视频| 国产九色sp调教91| 夜夜夜精品看看| 精品三级av在线|