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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? wt_stmac.c

?? linux,red ,test,driver,need
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
										if( !IsQueueEmpty( &Adapter->AnFrmQ ) )					{						pEntry = RemoveHeadQueue(&Adapter->AnFrmQ); 						////////////////////////////////////////////////////////////						pWtTxBuf = (PWTWLAN_TXBUF)list_entry( (struct list_head *)pEntry, WTWLAN_TXBUF, List );						////////////////////////////////////////////////////////////						Adapter->AnQLen--;												}					else					{											pWtTxBuf = QosSendProcess( Adapter );					}				}			}			break;		case ASOC_PASS:			{				if( Adapter->MacParameter.sCfPollable & Adapter->MacParameter.mCfp )				{					if( Adapter->MacParameter.bNeedCFACK )					{						Adapter->MacParameter.bNeedCFACK = FALSE;						// add CFRSP code here						pWtTxBuf = QosSendProcess( Adapter );					}				}				else					pWtTxBuf = QosSendProcess( Adapter );			}			break;		case BSS:		case AUTH_PASS:		case NO_BSS:		default:			{				//pWtSentBuf->SendStatus = NDIS_STATUS_FAILURE; 				//WT_FREE_SEND_PACKET( Adapter, pWtTxBuf);				break;								}		}		break;	case WLAN_MACMODE_ESS_AP:	case WLAN_MACMODE_NONE:	default :		{			//pWtSentBuf->SendStatus = NDIS_STATUS_FAILURE;			//WT_FREE_SEND_PACKET( Adapter, pWtTxBuf);			break;				}	}        FN_EXIT(0,0);	return pWtTxBuf;}// Now tx bank4 as the special bank // mgmt frm and cfack etc urgency frm send via bank4// canceal mechanism can be adopted to optimize performanceBOOL MpSend(IN PWT_ADAPTER Adapter, IN PWTWLAN_TXBUF pWtTxBuf, IN BOOL bMgmtFrm){	int loopCount = MAX_URGENCY_BANK_LOOP_COUNT;	int loopIndex = 0;	PWTWLAN_TXBUF  pWtSentBuf = NULL;	UINT MsecDelay = 1;	UCHAR TxBank;	UCHAR TxBankStatus;	p80211_hdr_t *w_hdr;	FN_ENTER;		w_hdr = (p80211_hdr_t *)&pWtTxBuf->TXHwBuf.pHwTxBuf->dot11Head;	pWtTxBuf->Frmtype = ( WLAN_GET_FC_FTYPE(ieee2host16(w_hdr->a3.fc)) ) | ( WLAN_GET_FC_FSTYPE(ieee2host16(w_hdr->a3.fc)) );	if( Adapter->MacParameter.bPowerMgtPend )	{		pWtSentBuf->bPowerMgtPend = TRUE;	}	if( bMgmtFrm )//mgmt frame send	{		// define bank4 as special bank 		TxBank = WtWlanGetUrgentFreeBank( Adapter );		TxBankStatus = MASK_TX_BANK & (  Adapter->CSRAddress->TxStatus.RegTxStatus >> (TxBank*3) );		if( pWtTxBuf->bUrgency )		{			if( TxBankStatus != TX_STATUS_BANK_EMPTY )			{				ASSERT( Adapter->WtTDB.pTxbuf[TxBank] );				pWtSentBuf = Adapter->WtTDB.pTxbuf[TxBank];				Adapter->WtTDB.pTxbuf[TxBank]->TxStatus = TxBankStatus;				Adapter->CSRAddress->TxCtrl[TxBank] &= ~MASK_TX_START;			}		}		else		{			//when bank unvalued,wait any 200 ms			while( (loopIndex < loopCount )&&(! (MASK_TX_STATUS_BANK_AVAILABLE & (  Adapter->CSRAddress->TxStatus.RegTxStatus >> (TxBank*3)))))			{				udelay( MsecDelay );//				printk("~~~~~~~~~bank 4 is busy\n");				loopIndex++;			}			TxBankStatus = MASK_TX_BANK & (  Adapter->CSRAddress->TxStatus.RegTxStatus >> (TxBank*3) );			if( TxBankStatus != TX_STATUS_BANK_EMPTY )			{				Adapter->CSRAddress->TxCtrl[TxBank] &= ~MASK_TX_START;				if( Adapter->WtTDB.pTxbuf[TxBank] != NULL )					{						pWtSentBuf = Adapter->WtTDB.pTxbuf[TxBank];						Adapter->WtTDB.pTxbuf[TxBank]->TxStatus = MASK_TX_BANK & (  Adapter->CSRAddress->TxStatus.RegTxStatus >> (TxBank*3) );					}			}		}		pWtTxBuf->TxBank = TxBank;		NICSendPacket(Adapter, pWtTxBuf);	}	else//! mgmt frame	{		TxBank = WtWlanGetFreeBank( Adapter );//return freebank or 1 when no free bank		//	a freebank var may accelerate to find free bank find		switch ( Adapter->MacParameter.macmode )		{		case WLAN_MACMODE_IBSS_STA:		case WLAN_MACMODE_ESS_STA:			switch( Adapter->MacParameter.CurrentState )			{			case IBSS_IDLE:			case IBSS_ACTIVE:				{					TxBankStatus = MASK_TX_BANK & (  Adapter->CSRAddress->TxStatus.RegTxStatus >> (TxBank*3) );					if( TxBankStatus != TX_STATUS_BANK_EMPTY )					{						//ASSERT( Adapter->WtTDB.pTxbuf[TxBank] );						if( Adapter->WtTDB.pTxbuf[TxBank] != NULL )						{								Adapter->WtTDB.pTxbuf[TxBank]->TxStatus = MASK_TX_BANK & (  Adapter->CSRAddress->TxStatus.RegTxStatus >> (TxBank*3) );								if(Adapter->WtTDB.pTxbuf[TxBank]->TxStatus == TX_STATUS_SUCCESS_DONE)								{									Adapter->WtTDB.pTxbuf[TxBank]->SendStatus = NDIS_STATUS_SUCCESS;								}								else								{									Adapter->WtTDB.pTxbuf[TxBank]->SendStatus = NDIS_STATUS_FAILURE;								}								TxDoneHandle( Adapter, Adapter->WtTDB.pTxbuf[TxBank]);						}						Adapter->CSRAddress->TxCtrl[TxBank] &= ~MASK_TX_START;					}					pWtTxBuf->TxBank = TxBank;					NICSendPacket(Adapter, pWtTxBuf);				}				break;			case ASOC_PASS:				{					TxBankStatus = MASK_TX_BANK & (  Adapter->CSRAddress->TxStatus.RegTxStatus >> (TxBank*3) );					if( TxBankStatus != TX_STATUS_BANK_EMPTY )					{						//ASSERT( Adapter->WtTDB.pTxbuf[TxBank] );						if( Adapter->WtTDB.pTxbuf[TxBank] != NULL )						{							Adapter->WtTDB.pTxbuf[TxBank]->TxStatus = MASK_TX_BANK & (  Adapter->CSRAddress->TxStatus.RegTxStatus >> (TxBank*3) );							if(Adapter->WtTDB.pTxbuf[TxBank]->TxStatus == TX_STATUS_SUCCESS_DONE)							{								Adapter->WtTDB.pTxbuf[TxBank]->SendStatus = NDIS_STATUS_SUCCESS;							}							else							{								Adapter->WtTDB.pTxbuf[TxBank]->SendStatus = NDIS_STATUS_FAILURE;							}							TxDoneHandle( Adapter, Adapter->WtTDB.pTxbuf[TxBank]);						}						Adapter->CSRAddress->TxCtrl[TxBank] &= ~MASK_TX_START;					}					pWtTxBuf->TxBank = TxBank;					NICSendPacket(Adapter, pWtTxBuf);				}				break;			case BSS:			case AUTH_PASS:			case NO_BSS:			default:				{					pWtSentBuf->SendStatus = NDIS_STATUS_FAILURE; 					//dev_kfree_skb(pWtTxBuf->skb);					WT_FREE_SEND_PACKET( Adapter, pWtTxBuf);					break;									}			}			break;		case WLAN_MACMODE_ESS_AP:		case WLAN_MACMODE_NONE:		default :			{				pWtSentBuf->SendStatus = NDIS_STATUS_FAILURE;				//dev_kfree_skb(pWtTxBuf->skb);				WT_FREE_SEND_PACKET( Adapter, pWtTxBuf);				break;					}		}	}	if( pWtSentBuf )	{		switch ( pWtSentBuf->TxStatus )		{		case TX_STATUS_SUCCESS_DONE:			pWtSentBuf->SendStatus = NDIS_STATUS_SUCCESS;			break;		case TX_STATUS_FAILURE_DONE:		case TX_STATUS_FAILURE_TTL:			pWtSentBuf->SendStatus = NDIS_STATUS_FAILURE;  			break;		case TX_STATUS_UNDERGO:		case TX_STATUS_WAITSEND:			pWtTxBuf->ReQueueCount = 0;			pWtSentBuf->SendStatus = NDIS_STATUS_FAILURE;  			break;		default :			pWtSentBuf->SendStatus = NDIS_STATUS_FAILURE;  			break;						}		WT_SET_FLAG( pWtSentBuf, fWT_TX_CANCEAL_MASK);		TxDoneHandle( Adapter, pWtSentBuf);	} 	FN_EXIT(0,0);	return TRUE;}//接收數(shù)據(jù)包函數(shù)BOOL NICRecv(IN PWT_ADAPTER Adapter, IN UINT RcvBank, OUT PWTWLAN_RXBUF pWtRxBuf ){	PWTWLAN_RXBUF           pEncryptRxbuf = NULL;	PWTWLAN_HWRXBUF         pHwRxbuf = NULL;	BOOL 			bSoftDecrypt;	ULONG			Length;	//UINT 			payload_offset;	p80211_hdr_t            *w_hdr;	UINT8 *daddr = NULL;	UINT8 *saddr = NULL;	wlan_ethhdr_t           *e_hdr;	wlan_llc_t              *e_llc;	wlan_snap_t             *e_snap;	UINT8                   *e_payload;	BOOL		        bEtherIIhead = FALSE;	FN_ENTER;	pHwRxbuf = &Adapter->MainMemAddress->RxBufMap[RcvBank].HwRxBuf;//point receive bank	// auth fram3 also need decrypt, check condition	if( pWtRxBuf->ftype == WLAN_FTYPE_DATA )  	{		if( Adapter->MacParameter.bSoftDecrypt &&(WLAN_GET_FC_ISWEP(pWtRxBuf->FrmCtl)))		{			bSoftDecrypt	= TRUE;			//pEncryptRxbuf->RXHwBuf.pHwRxBuf;			AllocRxMgmtBuff(Adapter,  &pEncryptRxbuf);//why allocate mgmtbuffer?			if( 	pEncryptRxbuf  )			{				if( !WTWlanDecryptMPDU( Adapter, RcvBank, pEncryptRxbuf->RXHwBuf.pHwRxBuf ))				{					NICReturnRxMgmtBuf( Adapter, pEncryptRxbuf);					//DBGPRINT(WT_TRACE, ("<-- NICRecv\n"));					return FALSE;				}				else				{					pHwRxbuf = pEncryptRxbuf->RXHwBuf.pHwRxBuf;				}			}			else			{				//DBGPRINT(WT_TRACE, ("<-- NICRecv\n"));				return FALSE;			}		}		Length = sizeof( WTWLAN_RSB) + MAX_HW_HEAD_LEN ;//omit frame body length                ////////////////////////////////////////////////////////////////////////////////////////		/*		NdisMoveFromMappedMemory( 			pWtRxBuf->RXHwBuf.pRxBuffer,			pHwRxbuf,			Length			);		*/				//memcpy_fromio( pWtRxBuf->RXHwBuf.pRxBuffer, pHwRxbuf, Length);		memcpy( pWtRxBuf->RXHwBuf.pRxBuffer, pHwRxbuf, Length);		/////////////////////////////////////////////////////////////////////////////////////////		//Dump( (char *)pWtRxBuf->RXHwBuf.pHwRxBuf,Length, TRUE, 1 );		//Dump( (char *)pHwRxbuf,Length + pHwRxbuf->RxStatus.RecvBodyLen, TRUE, 1 );		//swap for date add ether head here--------------				e_hdr = (wlan_ethhdr_t *)(pWtRxBuf->RXHwBuf.pHwRxBuf->Buffer);		e_llc = (wlan_llc_t *)(&pHwRxbuf->Buffer);		e_snap = (wlan_snap_t *) (((UINT8 *) e_llc) + sizeof(wlan_llc_t));		e_payload = ((UINT8 *) e_snap) + sizeof(wlan_snap_t);		w_hdr = 	(p80211_hdr_t*)&pWtRxBuf->RXHwBuf.pHwRxBuf->dot11Head;		//DbgPrint("\nThe sequence number of data frame is %4x\n", w_hdr->a3.seq);		//FrmCtrl has been changed from ieee to host				if ((WLAN_GET_FC_TODS(pWtRxBuf->FrmCtl) == 0) && (WLAN_GET_FC_FROMDS(pWtRxBuf->FrmCtl) == 0)) {			daddr = w_hdr->a3.a1;			saddr = w_hdr->a3.a2;		} else if ((WLAN_GET_FC_TODS(pWtRxBuf->FrmCtl) == 0) && (WLAN_GET_FC_FROMDS(pWtRxBuf->FrmCtl) == 1)) {			daddr = w_hdr->a3.a1;			saddr = w_hdr->a3.a3;		} else if ((WLAN_GET_FC_TODS(pWtRxBuf->FrmCtl) == 1) && (WLAN_GET_FC_FROMDS(pWtRxBuf->FrmCtl) == 0)) {			daddr = w_hdr->a3.a3;			saddr = w_hdr->a3.a2;		} else {			daddr = w_hdr->a4.a3;			saddr = w_hdr->a4.a4;		}		// data should > 0 discard other frame include nodata 		if( ieee2host16( pHwRxbuf->RxStatus.RecvBodyLen ) > 0 )		{			if( ( e_llc->dsap == 0xaa ) && 				( e_llc->ssap == 0xaa ) &&				( e_llc->ctl == 0x03 ) )			{				if ((e_snap->oui[0] == 0x00 )&&(e_snap->oui[1] == 0x00 )&&(e_snap->oui[2] == 0xf8 ) ) 				{  //8021h					bEtherIIhead = TRUE;				}				else				{					// check					if( (e_snap->type == host2ieee16(0x80f3))||(e_snap->type == host2ieee16(0x8137)) )						bEtherIIhead  = FALSE;					else						bEtherIIhead = TRUE;				}			}		}		else		{			//DBGPRINT(WT_TRACE, ("<-- NICRecv\n"));			return FALSE;		}		if( bEtherIIhead )			{			pWtRxBuf->NDISPacketOffset = sizeof(wlan_llc_t) + sizeof(wlan_snap_t);			pWtRxBuf->CopyLen = ieee2host16( pWtRxBuf->RXHwBuf.pHwRxBuf->RxStatus.RecvBodyLen ) - pWtRxBuf->NDISPacketOffset ;			e_hdr->type = e_snap->type;			//printk("File %s Line = %d e_hdr->type = %04x pWtRxBuf->RXHwBuf.pHwRxBuf->RxStatus.RecvBodyLen =%d \n", __FILE__, __LINE__,e_hdr->type, ieee2host16( pWtRxBuf->RXHwBuf.pHwRxBuf->RxStatus.RecvBodyLen ) );		}		else		{			pWtRxBuf->NDISPacketOffset = 0;			pWtRxBuf->CopyLen = ieee2host16( pWtRxBuf->RXHwBuf.pHwRxBuf->RxStatus.RecvBodyLen ) - pWtRxBuf->NDISPacketOffset ;			e_hdr->type = host2ieee16( ieee2host16( pHwRxbuf->RxStatus.RecvBodyLen ) );			//printk("File %s Line = %d e_hdr->type = %d\n",  __FILE__, __LINE__, e_hdr->type );		}                ////////////////////////////////////////////////////////////////////////////////////		/*		NdisMoveMemory( e_hdr->daddr,  daddr,  ETH_ALEN );		NdisMoveMemory( e_hdr->saddr,  saddr,  ETH_ALEN );		*/		memmove(e_hdr->daddr, daddr, ETH_ALEN);		memmove(e_hdr->saddr, saddr, ETH_ALEN);		////////////////////////////////////////////////////////////////////////////////////		Length = pWtRxBuf->CopyLen;  		//printk("File %s Line = %d Length = %d\n",  __FILE__, __LINE__, Length );		if( ( Length <= 0 ) || ( pWtRxBuf->NDISPacketOffset >= ieee2host16( pWtRxBuf->RXHwBuf.pHwRxBuf->RxStatus.RecvBodyLen ) ) )		{			//DBGPRINT(WT_TRACE, ("<-- NICRecv\n"));			return FALSE;		} 		////////////////////////////////////////////////////////////////////////////////////		/*NdisMoveFromMappedMemory(//錕給dy錕?轉(zhuǎn)為錕教

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色婷婷av一区| 洋洋av久久久久久久一区| 中文字幕不卡的av| 亚洲日本一区二区| 婷婷丁香久久五月婷婷| 激情成人综合网| 不卡的看片网站| 欧美日韩免费一区二区三区视频| 日韩视频免费直播| 欧美国产1区2区| 亚洲精品水蜜桃| 日本欧美一区二区三区| 粗大黑人巨茎大战欧美成人| 欧洲视频一区二区| 欧美大片日本大片免费观看| 国产精品美女久久久久高潮| 五月天精品一区二区三区| 国产一区二区三区黄视频| 色狠狠av一区二区三区| 日韩亚洲欧美在线| 中文字幕亚洲精品在线观看| 日本午夜一本久久久综合| 不卡一区二区中文字幕| 欧美一区二区三区爱爱| 最新热久久免费视频| 老司机精品视频在线| 在线观看国产一区二区| 久久精品亚洲国产奇米99| 午夜激情综合网| 色哟哟一区二区| 日韩午夜在线影院| 亚洲最大成人综合| 国产一区不卡精品| 欧美日韩国产一二三| 国产亚洲精品7777| 男人操女人的视频在线观看欧美| 99在线热播精品免费| 精品1区2区在线观看| 夜夜嗨av一区二区三区中文字幕| 久88久久88久久久| 精品视频一区 二区 三区| 国产性色一区二区| 奇米影视7777精品一区二区| 91亚洲精品一区二区乱码| 久久婷婷综合激情| 人人精品人人爱| 欧美无砖专区一中文字| 亚洲日韩欧美一区二区在线| 国产成人免费在线| 欧美一区二区三区在线观看| 亚洲狠狠丁香婷婷综合久久久| 国产成人一区二区精品非洲| 欧美一区二区三区视频免费| 亚洲一二三四在线观看| 91欧美激情一区二区三区成人| xnxx国产精品| 精久久久久久久久久久| 欧美一区二区视频在线观看| 亚洲sss视频在线视频| av电影在线观看不卡| 中文字幕精品一区| 国产精品91一区二区| 精品国产一区久久| 精品一区中文字幕| 欧美v日韩v国产v| 奇米色777欧美一区二区| 欧美人与性动xxxx| 亚洲成人资源网| 欧美日韩国产一区| 亚洲午夜精品网| 欧美日韩久久久| 亚洲一本大道在线| 欧美日韩精品一区视频| 亚洲一区二区三区四区在线观看 | 欧美一级久久久| 一区二区久久久久久| 日本韩国精品在线| 亚洲精品欧美二区三区中文字幕| 色综合久久中文综合久久97| 亚洲女子a中天字幕| 欧美在线看片a免费观看| 亚洲一区电影777| 欧美精品丝袜久久久中文字幕| 亚洲成年人网站在线观看| 在线电影欧美成精品| 免费人成在线不卡| 久久精品亚洲乱码伦伦中文 | 国产午夜三级一区二区三| 国产一区二区三区四区五区美女| 久久精品欧美一区二区三区不卡| 国产在线精品不卡| 中文字幕一区二区三中文字幕| 91尤物视频在线观看| 亚洲一区二区视频在线观看| 欧美电影一区二区三区| 九九热在线视频观看这里只有精品| 欧美精品一区男女天堂| 成人一区二区三区视频在线观看 | 国产91综合网| 亚洲色图视频网| 欧美精品v国产精品v日韩精品| 日韩国产高清影视| 久久亚洲欧美国产精品乐播| 成人午夜av在线| 亚洲成人精品影院| 久久综合网色—综合色88| 成人激情动漫在线观看| 亚洲一区免费观看| 欧美电影免费提供在线观看| 成人一区二区三区中文字幕| 亚洲午夜电影网| 久久亚洲精精品中文字幕早川悠里| a级高清视频欧美日韩| 亚洲国产视频直播| 久久久蜜臀国产一区二区| 91麻豆自制传媒国产之光| 日韩国产精品久久久久久亚洲| 国产欧美日韩亚州综合| 国产精品网站导航| 精品在线你懂的| 国产精品乱码一区二三区小蝌蚪| 在线观看三级视频欧美| 精品一区二区三区在线观看国产 | 成人激情校园春色| 亚洲一区二区三区四区五区中文| 精品三级在线看| 色国产综合视频| 国产一区二区看久久| 亚洲久本草在线中文字幕| 欧美大片一区二区三区| 色av综合在线| 国产呦萝稀缺另类资源| 亚洲一区在线看| 日本一区二区三区久久久久久久久不| 在线亚洲高清视频| 国产成人小视频| 青青草一区二区三区| 亚洲精品国产高清久久伦理二区| 欧美精品一区二区三区一线天视频 | thepron国产精品| 青青草精品视频| 亚洲精品精品亚洲| 国产亚洲女人久久久久毛片| 欧美男女性生活在线直播观看| 99久久夜色精品国产网站| 久久精品国产成人一区二区三区| 亚洲综合一区在线| 国产精品久久久久久久久快鸭 | 日韩高清不卡一区二区三区| 国产精品免费观看视频| 精品毛片乱码1区2区3区| 欧美午夜视频网站| 97久久超碰精品国产| 福利视频网站一区二区三区| 日韩va亚洲va欧美va久久| 一区二区三区四区激情| 国产精品免费网站在线观看| 精品国产网站在线观看| 欧美日韩dvd在线观看| 91麻豆免费观看| av电影一区二区| 国产乱码精品一区二区三| 日本中文字幕一区二区有限公司| 亚洲一区二区三区中文字幕| ㊣最新国产の精品bt伙计久久| 国产欧美精品日韩区二区麻豆天美| 日韩欧美亚洲国产另类| 7777精品伊人久久久大香线蕉超级流畅| 91免费视频网| 97久久精品人人做人人爽50路| 国产传媒久久文化传媒| 韩国三级中文字幕hd久久精品| 久久国产婷婷国产香蕉| 免费在线一区观看| 日本系列欧美系列| 日韩av一区二区三区四区| 日韩影视精彩在线| 人人超碰91尤物精品国产| 婷婷成人综合网| 日韩制服丝袜先锋影音| 丝瓜av网站精品一区二区| 亚洲成人精品影院| 日日夜夜一区二区| 日韩国产在线观看一区| 日韩在线卡一卡二| 另类人妖一区二区av| 久99久精品视频免费观看| 精品一二线国产| 国产精品正在播放| 懂色av一区二区夜夜嗨| 成人黄色小视频在线观看| a亚洲天堂av| 日本高清不卡一区| 欧美在线免费播放| 欧美精品在线一区二区| 日韩欧美一二三四区| 国产婷婷色一区二区三区| 国产精品嫩草久久久久| 亚洲精品精品亚洲| 日本亚洲三级在线|