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

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

?? wt_init.c

?? linux,red ,test,driver,need
?? C
字號:
/* Copyright (C) 2005 LHWT Inc. *///already see #include "wtprecomp.h"#define  DUMP_BytesPerLine 16 //only for DUMP/******************************************************************************    Device Interface & Control functions******************************************************************************/#if 0void Wt100nDelay(WT_ADAPTER *Adapter,UINT delay){     unsigned long volatile i = jiffies + (delay*((HZ/1000000)/10));	     Adapter->debugvar1 = jiffies;     while(jiffies < i);     Adapter->debugvar2 = jiffies;}#endif/*WtDisableInterrupts - disable all interrupts*/ void WtDisableInterrupts(WT_ADAPTER *Adapter){       	//Adapter->CSRAddress = &Adapter->MainMemAddress->HwCSMem.CSRAddress;	Adapter->CSRAddress->IntMaskCtrl |= MASK_INT_ALL;}void WtClearInterrupts(WT_ADAPTER *Adapter){        // Adapter->CSRAddress = &Adapter->MainMemAddress->HwCSMem.CSRAddress;	Adapter->IntStatus = Adapter->CSRAddress->IntStatus;	*((volatile USHORT *)(&Adapter->CSRAddress->IntStatus) )= Adapter->IntStatus;}void WtEnableInterrupts(WT_ADAPTER *Adapter) {	//Adapter->CSRAddress = &Adapter->MainMemAddress->HwCSMem.CSRAddress;	Adapter->CSRAddress->IntMaskCtrl &= ~MASK_INT_ALL;}void Dump(CHAR* p, ULONG cb, BOOL fAddress, ULONG ulGroup){        int cbLine;	while(cb)	{	   cbLine = (cb < DUMP_BytesPerLine) ? cb : DUMP_BytesPerLine;           DumpLine( p, cbLine, fAddress, ulGroup );           cb -= cbLine;           p  += cbLine;	}}/* Display buffer */void DumpLine(UCHAR* p, ULONG cb, BOOL fAddress, ULONG ulGroup){        CHAR* pszDigits = "0123456789ABCDEF";        CHAR  szHex[ ((2 + 1) * DUMP_BytesPerLine) + 1 ];        CHAR* pszHex = szHex;        CHAR  szAscii[ DUMP_BytesPerLine + 1 ];        CHAR* pszAscii = szAscii;        ULONG ulGrouped = 0;        if (fAddress)         {           printk( "WT40: %08x: ", (unsigned int)p );        }        else         {           printk( "WT40: " );        }        while (cb)        {           *pszHex++ = pszDigits[ ((UCHAR )*p) / 16 ];           *pszHex++ = pszDigits[ ((UCHAR )*p) % 16 ];           if (++ulGrouped >= ulGroup)           {              *pszHex++ = ' ';               ulGrouped = 0;           }           *pszAscii++ = (*p >= 32 && *p < 128) ? *p : '.';           ++p;           --cb;        }        *pszHex = '\0';        *pszAscii = '\0';	{		int len_line;		len_line =  (2 * DUMP_BytesPerLine) + (DUMP_BytesPerLine / ulGroup);	         printk("%-*s|%-*s|\n", len_line, szHex,			 	DUMP_BytesPerLine, szAscii );	}	}void WtInitList(WT_ADAPTER *Adapter){        // Init lists, spinlocks, etc.	FN_ENTER;        //send queue	do{			INIT_LIST_HEAD(&Adapter->SendBufList);	INIT_LIST_HEAD(&Adapter->SendMgmtList);        //InitializeQueueHeader(&Adapter->SendWaitQueue);	 skb_queue_head_init(&Adapter->SendWaitQueue);		        InitializeQueueHeader(&Adapter->SendCancelQueue);  		        InitializeQueueHeader(&Adapter->TxFrmQMgmt);        InitializeQueueHeader(&Adapter->TxFrmQCtl);		        InitializeQueueHeader(&Adapter->TxFrmQBE);        InitializeQueueHeader(&Adapter->TxFrmQBK);        InitializeQueueHeader(&Adapter->TxFrmQVI);        InitializeQueueHeader(&Adapter->TxFrmQVO);		        InitializeQueueHeader(&Adapter->AnFrmQ);        InitializeQueueHeader(&Adapter->PsFrmQ);        InitializeQueueHeader(&Adapter->CfFrmQ);	//rcv queue        INIT_LIST_HEAD(&Adapter->RecvList);        INIT_LIST_HEAD(&Adapter->RecvMgmtList);		        INIT_LIST_HEAD(&Adapter->RecvFragList);		        INIT_LIST_HEAD(&Adapter->RxFrmQBE);        INIT_LIST_HEAD(&Adapter->RxFrmQBK);        INIT_LIST_HEAD(&Adapter->RxFrmQVI);        INIT_LIST_HEAD(&Adapter->RxFrmQVO);		        INIT_LIST_HEAD(&Adapter->RxFrmQMgmt);        INIT_LIST_HEAD(&Adapter->RxFrmQCtl);		        //spin_lock_init(&Adapter->Lock);        //spin_lock_init(&Adapter->SendLock);        //spin_lock_init(&Adapter->RcvLock);        //spin_lock_init(&Adapter->MacLock);    } while (FALSE);      FN_EXIT(0,0);    return ;}void WtSoftParaInit( IN  PWT_ADAPTER  Adapter){	FN_ENTER;	Adapter->NumRxBuf = MAX_RX_DESC; //32	Adapter->NumTxBuf = MAX_TX_DESC; //32			Adapter->NumTxMgmtBuf = MAX_NUM_TX_MGMT_BUF; //8	Adapter->NumRxMgmtBuf = MAX_NUM_RX_MGMT_BUF; //8	Adapter->AlignSize = 0;  	Adapter->MacHwCfg.ulHwHeadLen   = MAX_HW_HEAD_LEN; //80	Adapter->MacHwCfg.ulHwTxCellLen = MAX_TX_CELL_LEN; //1600	Adapter->MacHwCfg.ulHwRxCellLen = MAX_RX_CELL_LEN; //1600	FN_EXIT(0,0);	return;}BOOL WtInitSend(WT_ADAPTER *Adapter){	PUCHAR          pMem;	BOOL 		Status = TRUE;  	PWTWLAN_TXBUF   pWtTxBuf;        LONG            index;	UINT		ErrorIndex = 0;	BOOL		ErrorFlag = FALSE;		//WT_SPIN_LOCK(&Adapter->SendLock);		FN_ENTER;	do{		Adapter->WtWlanTxBufMemSize = (Adapter->NumTxBuf + Adapter->NumTxMgmtBuf) * sizeof(WTWLAN_TXBUF);		pMem = kmalloc(Adapter->WtWlanTxBufMemSize, GFP_ATOMIC);		if( !pMem )		{			Status = FALSE;		   	break;		}		   		memset(pMem, 0, Adapter->WtWlanTxBufMemSize);	        Adapter->WtWlanTxBufMem = pMem;		 		//tx desc		//初始化隊列		pWtTxBuf = (PWTWLAN_TXBUF)Adapter->WtWlanTxBufMem;	        for (index = 0; index < Adapter->NumTxBuf ; index++)	        {			pWtTxBuf->TXHwBuf.pBuffer = (PUCHAR)pWtTxBuf->AuxHeadBuf;						list_add_tail((struct list_head *)pWtTxBuf, &Adapter->SendBufList);						pWtTxBuf++;		}		// tx mgmt desc			        for (index = 0; index < Adapter->NumTxMgmtBuf ; index++)	        {					        if ((pWtTxBuf->skb = dev_alloc_skb(Adapter->MacHwCfg.ulHwHeadLen + Adapter->MacHwCfg.ulHwTxCellLen)) != NULL)			{				pWtTxBuf->TXHwBuf.pBuffer =( pWtTxBuf->skb )->data;				list_add_tail( (struct list_head *)pWtTxBuf, &Adapter->SendMgmtList);				pWtTxBuf++;			}			else			{			 	ErrorIndex = index;				ErrorFlag = TRUE;				break;			}		}	        if ( ErrorFlag )		{			for (index = 0; index < ErrorIndex ; index++)			{				AllocTxMgmt( Adapter, &pWtTxBuf );								if( pWtTxBuf && (pWtTxBuf->skb) )				dev_kfree_skb_any(pWtTxBuf->skb);			}			kfree(Adapter->WtWlanTxBufMem);			Status = FALSE;					break;		}	}while( FALSE );		//WT_SPIN_UNLOCK(&Adapter->SendLock);		FN_EXIT(0,0);	return Status;}BOOL NICInitRecv(IN PWT_ADAPTER Adapter){        BOOL            Status = TRUE;        PWTWLAN_RXBUF   pWtRxBuf;              LONG            index;	UINT 	        ErrorIndex = 0;	BOOL 		ErrorFlag = FALSE;	        PUCHAR          pMem;		//WT_SPIN_LOCK(&Adapter->RcvLock);	FN_ENTER;		do{		Adapter->WtWlanRxBufMemSize = (Adapter->NumRxBuf + Adapter->NumRxMgmtBuf) * sizeof(WTWLAN_RXBUF);		pMem = kmalloc(Adapter->WtWlanRxBufMemSize, GFP_ATOMIC);		if( !pMem )		{		   Status = FALSE;		   break;		}		   		memset(pMem, 0, Adapter->WtWlanRxBufMemSize);	        Adapter->WtWlanRxBufMem = pMem;		 		//Rx desc				pWtRxBuf = (PWTWLAN_RXBUF)Adapter->WtWlanRxBufMem;	        for(index = 0; index < Adapter->NumRxBuf ; index++)		{                   list_add_tail( (struct list_head *)pWtRxBuf, &Adapter->RecvList);		   pWtRxBuf++;	        }	        // rx mgmt desc			        for (index = 0; index < Adapter->NumRxMgmtBuf ; index++)	        {					        if ((pWtRxBuf->skb = dev_alloc_skb(Adapter->MacHwCfg.ulHwHeadLen +                Adapter->MacHwCfg.ulHwRxCellLen)) != NULL)			{				pWtRxBuf->RXHwBuf.pRxBuffer  = ( pWtRxBuf->skb )->data;				list_add_tail( (struct list_head *)pWtRxBuf, &Adapter->RecvMgmtList);				pWtRxBuf++;			}			else			{			 	ErrorIndex = index;				ErrorFlag = TRUE;				break;			}		}	        if ( ErrorFlag )		{					printk("Error Alloc Rcv mem\n");						for (index = 0; index < ErrorIndex ; index++)			{				AllocRxMgmtBuff( Adapter, &pWtRxBuf );				if( pWtRxBuf && (pWtRxBuf->skb) )				dev_kfree_skb_any(pWtRxBuf->skb);			}			kfree(Adapter->WtWlanRxBufMem);			Status = FALSE;					break;		}					}while( FALSE );		//WT_SPIN_UNLOCK(&Adapter->RcvLock);		FN_EXIT(0,0);	return Status;	}BOOL NICReadAdapterInfo(    IN  PWT_ADAPTER     Adapter){	int             i;	UCHAR          MacAddr_default_noeeprom[6] = {0x00,0x05,0x5d,0xb8,0x98,0x23};	UCHAR          MacAddr_default[6] = {0};		UCHAR          *MacAddr;	struct sockaddr  addr;			FN_ENTER;//add our own mac addr read router later	//copy mac_addr from eeprom	if(Adapter->CfgAddress->MacAddr && Adapter->CfgAddress->Identifier == EEPROM_HAVE_INIT)	{		if(memcmp(MacAddr_default, Adapter->CfgAddress->MacAddr, 6))//如果在eeprom中保存了mac地址		{			memcpy(MacAddr_default, &Adapter->CfgAddress->MacAddr, 6);		}			}	else		memcpy(MacAddr_default, MacAddr_default_noeeprom, 6);	//if( memcmp(MacAddr_zero, Adapter->CurrentAddress, 6))	{		memcpy( Adapter->CurrentAddress, MacAddr_default,6);	}		MacAddr =(PUCHAR)MacAddr_default;		//printk(" LEVEL  Function %s Dev_Addr Dump\r\n", __FUNCTION__);		//Dump( MacAddr, 6, TRUE, 1 );	memcpy(&addr.sa_data, MacAddr, 6 );		wt4_set_mac_address( Adapter->ndev, (unsigned char *)(&addr));	//printk(" LEVEL  Function %s Dev_Addr Dump\r\n", __FUNCTION__);		//Dump( Adapter->ndev->dev_addr, 6, TRUE, 1 );		for (i=0; i<6; i ++)	{       	 Adapter->PermanentAddress[i] = MacAddr[i];    	}		FN_EXIT(0,0);    return 0;}                    

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美剧情片在线观看| 五月天婷婷综合| 丝袜诱惑制服诱惑色一区在线观看| 蜜桃av一区二区在线观看| 成人激情电影免费在线观看| 日韩一级欧美一级| 亚洲综合在线免费观看| 成人综合婷婷国产精品久久免费| 日韩视频在线观看一区二区| 亚洲自拍另类综合| 色综合 综合色| 国产精品对白交换视频| 国产99一区视频免费| 日韩欧美第一区| 日韩黄色免费电影| 欧美三级日韩在线| 亚洲国产精品人人做人人爽| proumb性欧美在线观看| 国产免费久久精品| 国产a级毛片一区| 国产亚洲一本大道中文在线| 极品少妇xxxx偷拍精品少妇| 精品少妇一区二区| 蜜臀av在线播放一区二区三区| 欧美久久久久中文字幕| 婷婷丁香久久五月婷婷| 69堂亚洲精品首页| 日精品一区二区三区| 欧美一区二区在线免费观看| 亚洲国产美国国产综合一区二区| 91久久精品网| 午夜精品久久久久久久 | 午夜日韩在线电影| 在线视频你懂得一区二区三区| 亚洲欧美激情小说另类| 欧洲一区在线电影| 日韩在线一区二区| 精品国产污网站| 国产成人免费在线观看| 国产欧美视频一区二区三区| 成人av在线播放网址| 亚洲图片你懂的| 欧美少妇一区二区| 七七婷婷婷婷精品国产| 久久亚洲一级片| 91小宝寻花一区二区三区| 亚洲高清免费一级二级三级| 欧美大片在线观看一区二区| 国产在线观看免费一区| 国产精品色一区二区三区| 91啪九色porn原创视频在线观看| 亚洲一区二区三区激情| 日韩久久免费av| 不卡av电影在线播放| 亚洲小说欧美激情另类| 欧美电影免费观看高清完整版在线观看| 国产麻豆91精品| 一区二区三区四区在线免费观看| 日韩三区在线观看| 成人av高清在线| 亚洲小少妇裸体bbw| 久久蜜桃香蕉精品一区二区三区| 99精品黄色片免费大全| 美女视频黄频大全不卡视频在线播放| 久久影院电视剧免费观看| 色偷偷88欧美精品久久久| 久久99精品久久只有精品| 国产精品国产三级国产aⅴ入口| 在线播放/欧美激情| 播五月开心婷婷综合| 看国产成人h片视频| 亚洲精品日韩综合观看成人91| 精品国产乱码久久久久久久久| 91香蕉视频污在线| 国产精品99久久久| 青椒成人免费视频| 亚洲图片自拍偷拍| 国产精品麻豆网站| 亚洲精品一区在线观看| 欧美三级电影精品| 91色porny| 国产精品一二一区| 日本成人在线电影网| 一区二区三区在线影院| 中文字幕第一区二区| 日韩欧美二区三区| 欧美日韩国产一区二区三区地区| 成人av网址在线观看| 精品在线观看免费| 日韩电影免费在线看| 亚洲综合色视频| 亚洲男人的天堂网| 国产精品亲子伦对白| 久久一留热品黄| 欧美成人一级视频| 日韩精品在线一区二区| 欧美人妖巨大在线| 欧美日韩综合色| 欧美午夜一区二区| 欧美午夜影院一区| 欧美在线一区二区| 日本高清成人免费播放| 91亚洲国产成人精品一区二区三| 成人高清伦理免费影院在线观看| 国产老肥熟一区二区三区| 精品在线你懂的| 国产精一区二区三区| 国产乱淫av一区二区三区 | 成人不卡免费av| 国产成人精品一区二区三区四区 | 五月激情综合色| 亚洲一二三专区| 亚洲成人激情社区| 五月激情综合色| 蜜桃久久久久久| 久久99精品久久久久久久久久久久| 美女尤物国产一区| 国产麻豆精品一区二区| 高清视频一区二区| av电影天堂一区二区在线| 97se亚洲国产综合自在线不卡| 99国产精品视频免费观看| 色综合色狠狠综合色| 欧美日韩国产影片| 精品美女在线播放| 国产精品无人区| 亚洲精品免费播放| 五月天一区二区三区| 久久精品国产**网站演员| 国产精品 日产精品 欧美精品| aaa亚洲精品| 欧美美女一区二区三区| 2022国产精品视频| 中文字幕日本乱码精品影院| 亚洲男人的天堂av| 欧美96一区二区免费视频| 狠狠色丁香婷综合久久| 99麻豆久久久国产精品免费| 在线一区二区三区四区| 日韩一区和二区| 国产精品青草综合久久久久99| 一色桃子久久精品亚洲| 香蕉av福利精品导航| 久久99精品国产麻豆婷婷洗澡| 暴力调教一区二区三区| 欧美一区二区三区视频在线 | 亚洲成人免费视| 国产一区二区在线观看视频| 91亚洲资源网| 精品久久久久av影院| 中文字幕色av一区二区三区| 日本成人在线电影网| 91在线看国产| 久久午夜老司机| 亚洲一区二区三区四区不卡| 韩国一区二区在线观看| 色av成人天堂桃色av| 久久久精品人体av艺术| 日韩高清中文字幕一区| av在线不卡免费看| 欧美一区二区三区成人| 国产精品不卡一区| 国产一区二三区好的| 欧美日本在线播放| 亚洲日本在线观看| 国产在线视频一区二区三区| 欧美三区在线观看| 1024成人网色www| 国产麻豆精品视频| 欧美电影免费观看高清完整版在线观看 | 欧美国产日韩精品免费观看| 亚洲h精品动漫在线观看| 97se亚洲国产综合在线| 久久亚区不卡日本| 另类小说欧美激情| 欧美精品九九99久久| 亚洲一区二区三区美女| 不卡av在线网| 中文字幕高清不卡| 国产一区二区三区综合| 日韩欧美一区在线| 性欧美疯狂xxxxbbbb| 在线观看日韩电影| 亚洲欧美一区二区不卡| 99久久国产免费看| 国产精品三级电影| 成人精品免费看| 久久久久综合网| 国产精品538一区二区在线| 欧美电影免费观看高清完整版在| 午夜精品免费在线| 欧美性大战久久| 亚洲国产综合人成综合网站| 日本高清不卡aⅴ免费网站| 亚洲免费观看在线观看| 97se亚洲国产综合自在线| 亚洲欧美aⅴ...| 色久优优欧美色久优优| 夜夜嗨av一区二区三区中文字幕 | 亚洲一区二区三区四区五区黄 |