亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
欧美四级电影网| 久久老女人爱爱| 精品久久人人做人人爱| 亚洲欧美日韩成人高清在线一区| 日韩**一区毛片| 日本精品一级二级| 国产丝袜欧美中文另类| 五月婷婷色综合| 色八戒一区二区三区| 亚洲国产成人午夜在线一区| 久久99国产精品免费| 欧美三区免费完整视频在线观看| 国产精品福利一区| 国产成人日日夜夜| 精品国产免费人成电影在线观看四季| 亚洲欧美日韩在线播放| 国产成人免费视频网站| 精品国产免费人成在线观看| 性做久久久久久免费观看| 欧美影院精品一区| 亚洲欧美电影院| 91在线观看成人| 国产精品久久久久久久久图文区 | 6080yy午夜一二三区久久| 亚洲丝袜美腿综合| 91在线视频观看| 国产精品护士白丝一区av| 国产成人久久精品77777最新版本| 欧美一区二区三区电影| 天天操天天色综合| 在线不卡欧美精品一区二区三区| 亚洲最新视频在线观看| 欧美亚洲丝袜传媒另类| 亚洲自拍偷拍综合| 欧美午夜精品一区二区蜜桃| 一区二区三区免费网站| 欧美三级日韩在线| 日本午夜一本久久久综合| 3d动漫精品啪啪一区二区竹菊| 日韩国产在线观看| 精品国产乱码久久久久久久| 黄网站免费久久| 国产精品理论在线观看| 91亚洲国产成人精品一区二三| 国产精品免费视频一区| 99国产精品久| 五月天激情综合网| 日韩一级完整毛片| 国产自产v一区二区三区c| 国产精品人成在线观看免费| 99久久99久久精品免费观看| 亚洲综合激情网| 91精品国产综合久久久久久| 国产乱码一区二区三区| 日韩毛片视频在线看| 欧美午夜精品久久久久久孕妇| 日日夜夜免费精品视频| 久久久久久亚洲综合| 一本到三区不卡视频| 肉肉av福利一精品导航| 欧美国产一区在线| 欧美日韩一本到| 国产精品一二三四五| 亚洲男人电影天堂| 欧美一区二区三区在线观看视频| 国产精品996| 亚洲国产精品影院| 久久只精品国产| 色婷婷精品大在线视频| 老司机免费视频一区二区 | 国产欧美日韩在线视频| 日本久久电影网| 国产精品综合一区二区| 一区二区三区精品在线| 2020国产精品| 欧美日韩一区二区在线观看| 国产精品77777| 视频一区二区中文字幕| 国产精品久久久久久久久久久免费看| 欧美日韩五月天| 丁香婷婷综合五月| 美女视频网站久久| 亚洲欧美日韩人成在线播放| 精品国产伦一区二区三区观看方式 | 国内精品伊人久久久久av影院| 1000部国产精品成人观看| 91精品国产91久久久久久一区二区| www.欧美色图| 国产一区二区三区精品视频| 午夜久久久久久久久| 亚洲免费观看高清| 国产日韩欧美制服另类| 精品日韩在线观看| 欧美婷婷六月丁香综合色| 成人av网站免费观看| 国产精品自产自拍| 蜜桃av噜噜一区| 日韩国产在线一| 性做久久久久久久久| 一区二区三区波多野结衣在线观看| 欧美国产一区二区| 久久精品一区二区三区四区| 日韩精品中文字幕一区 | 亚洲1区2区3区视频| 亚洲精品高清视频在线观看| 中文字幕国产一区二区| 久久一二三国产| 精品国产精品一区二区夜夜嗨| 欧美老肥妇做.爰bbww| 欧美综合一区二区| 日本高清无吗v一区| 一本久道久久综合中文字幕| 91在线播放网址| 色天天综合色天天久久| 91小宝寻花一区二区三区| 99久久久免费精品国产一区二区 | 91浏览器打开| 色吧成人激情小说| 欧美三电影在线| 在线成人av影院| 精品理论电影在线观看 | 久久精品国产99国产| 日韩电影一区二区三区四区| 天堂影院一区二区| 美腿丝袜亚洲一区| 精品一区二区免费在线观看| 国产在线播放一区| 不卡影院免费观看| 欧美在线观看视频一区二区| 欧美午夜精品久久久| 3d动漫精品啪啪一区二区竹菊| 欧美成人女星排行榜| 国产欧美一区二区精品忘忧草| 国产精品久久国产精麻豆99网站| 国产精品久久久久影院老司| 亚洲综合丝袜美腿| 蜜桃av一区二区在线观看| 国产精品一区二区无线| 不卡一区二区三区四区| 欧美日韩国产一区二区三区地区| 91精品午夜视频| 国产三级久久久| 一区二区三区国产| 久久成人av少妇免费| aaa欧美大片| 欧美一个色资源| 国产精品毛片大码女人| 一区二区成人在线| 精品一区二区在线视频| 99re这里只有精品6| 欧美一级黄色大片| 欧美激情一区不卡| 日韩黄色免费网站| av不卡免费电影| 日韩视频免费观看高清在线视频| 欧美国产精品一区二区三区| 亚洲成人久久影院| 成人三级伦理片| 91麻豆精品久久久久蜜臀| 国产精品电影一区二区| 美女诱惑一区二区| 在线观看视频一区二区| 国产视频在线观看一区二区三区 | 国产精品美女久久久久高潮| 亚洲 欧美综合在线网络| 丰满亚洲少妇av| 日韩一级完整毛片| 一区二区三区四区五区视频在线观看| 免费观看在线综合| 精品污污网站免费看| 国产精品午夜春色av| 精品一区二区三区在线播放视频| 色偷偷成人一区二区三区91| 久久久久久久综合| 日本美女视频一区二区| 91黄色免费看| 亚洲色欲色欲www| 成人午夜免费视频| 精品乱码亚洲一区二区不卡| 午夜精品成人在线| 在线观看免费亚洲| 亚洲欧洲成人自拍| 丁香另类激情小说| 国产日韩av一区二区| 国模套图日韩精品一区二区| 91精品国产综合久久精品app | 日本韩国一区二区三区| 国产嫩草影院久久久久| 国产原创一区二区| 欧美videos大乳护士334| 日韩和欧美一区二区| 欧美精品国产精品| 亚洲韩国精品一区| 欧美日韩在线三区| 午夜激情综合网| 欧美日韩一区二区三区在线| 亚洲综合男人的天堂| 欧美日韩在线播放| 视频一区二区不卡| 欧美不卡在线视频|