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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? rtmp_init.c

?? RT73_Linux_STA_Drv1.0.3.6 linux系統(tǒng)下
?? C
?? 第 1 頁 / 共 5 頁
字號(hào):
				goto out2;
			}
			
			NdisZeroMemory(pMLMEContext->TransferBuffer, sizeof(TX_BUFFER));
			pMLMEContext->pAd = pAd ;
			pMLMEContext->InUse = FALSE;
			pMLMEContext->IRPPending = FALSE;
		}

				
		//
		// BEACON_RING_SIZE
		//
		for (i = 0; i < BEACON_RING_SIZE; i++)
		{
			PTX_CONTEXT	pBeaconContext = &(pAd->BeaconContext[i]);
			pBeaconContext->pUrb = RT_USB_ALLOC_URB(0);
			if(pBeaconContext->pUrb == NULL){
				Status = NDIS_STATUS_RESOURCES;
				goto out2;
			}
			
			pBeaconContext->TransferBuffer= (PTX_BUFFER) kmalloc(sizeof(TX_BUFFER), GFP_KERNEL);
			if(!pBeaconContext->TransferBuffer){
				DBGPRINT(RT_DEBUG_ERROR,"Not enough memory\n");
				Status = NDIS_STATUS_RESOURCES;
				goto out3;
			}
			NdisZeroMemory(pBeaconContext->TransferBuffer, sizeof(TX_BUFFER));

			pBeaconContext->pAd = pAd;
			pBeaconContext->InUse = FALSE;
			pBeaconContext->IRPPending = FALSE;
		}

				
		//
		// NullContext
		//
		pNullContext->pUrb = RT_USB_ALLOC_URB(0);
		if(pNullContext->pUrb == NULL){
			Status = NDIS_STATUS_RESOURCES;
			goto out3;
		}		 
		
		pNullContext->TransferBuffer= (PTX_BUFFER) kmalloc(sizeof(TX_BUFFER), GFP_KERNEL);
		if(!pNullContext->TransferBuffer){
			DBGPRINT(RT_DEBUG_ERROR,"Not enough memory\n");
			Status = NDIS_STATUS_RESOURCES;
			goto out4;
		}

		NdisZeroMemory(pNullContext->TransferBuffer, sizeof(TX_BUFFER));
		pNullContext->pAd = pAd;
		pNullContext->InUse = FALSE;
		pNullContext->IRPPending = FALSE;
				
		//
		// RTSContext
		//
		pRTSContext->pUrb = RT_USB_ALLOC_URB(0);
		if(pRTSContext->pUrb == NULL){
			Status = NDIS_STATUS_RESOURCES;
			goto out4;
		}		 
		
		pRTSContext->TransferBuffer= (PTX_BUFFER) kmalloc(sizeof(TX_BUFFER), GFP_KERNEL);
		if(!pRTSContext->TransferBuffer){
			DBGPRINT(RT_DEBUG_ERROR,"Not enough memory\n");
			Status = NDIS_STATUS_RESOURCES;
			goto out5;
		}

		NdisZeroMemory(pRTSContext->TransferBuffer, sizeof(TX_BUFFER));
		pRTSContext->pAd = pAd;
		pRTSContext->InUse = FALSE;
		pRTSContext->IRPPending = FALSE; 


		//
		// PsPollContext
		// 
		pPsPollContext->pUrb = RT_USB_ALLOC_URB(0);
		if(pPsPollContext->pUrb == NULL){
			Status = NDIS_STATUS_RESOURCES;
			goto out5;
		}		 
		
		pPsPollContext->TransferBuffer= (PTX_BUFFER) kmalloc(sizeof(TX_BUFFER), GFP_KERNEL);
		if(!pPsPollContext->TransferBuffer){
			DBGPRINT(RT_DEBUG_ERROR,"Not enough memory\n");
			Status = NDIS_STATUS_RESOURCES;
			goto out6;
		}

		NdisZeroMemory(pPsPollContext->TransferBuffer, sizeof(TX_BUFFER));
		pPsPollContext->pAd = pAd;
		pPsPollContext->InUse = FALSE;
		pPsPollContext->IRPPending = FALSE;

	}  while (FALSE);
	
	return Status;


out6:	
	if (NULL != pPsPollContext->pUrb)
	{
		RTUSB_UNLINK_URB(pPsPollContext->pUrb);
		usb_free_urb(pPsPollContext->pUrb);
		pPsPollContext->pUrb = NULL;
	}
	if (NULL != pPsPollContext->TransferBuffer)
	{
		kfree(pPsPollContext->TransferBuffer);
		pPsPollContext->TransferBuffer = NULL;
	}
out5:
	if (NULL != pRTSContext->pUrb)
	{
		RTUSB_UNLINK_URB(pRTSContext->pUrb);
		usb_free_urb(pRTSContext->pUrb);
		pRTSContext->pUrb = NULL;
	}
	if (NULL != pRTSContext->TransferBuffer)
	{
		kfree(pRTSContext->TransferBuffer);
		pRTSContext->TransferBuffer = NULL;
	}	
out4:	
	if (NULL != pNullContext->pUrb)
	{
		RTUSB_UNLINK_URB(pNullContext->pUrb);
		usb_free_urb(pNullContext->pUrb);
		pNullContext->pUrb = NULL;
	}
	if (NULL != pNullContext->TransferBuffer)
	{
		kfree(pNullContext->TransferBuffer);
		pNullContext->TransferBuffer = NULL;
	}
out3:	
	for (i = 0; i < BEACON_RING_SIZE; i++)
	{
		PTX_CONTEXT	pBeaconContext = &(pAd->BeaconContext[i]);
		if ( NULL != pBeaconContext->pUrb )
		{
			RTUSB_UNLINK_URB(pBeaconContext->pUrb);
			usb_free_urb(pBeaconContext->pUrb);
			pBeaconContext->pUrb = NULL;
		}
		
		if ( NULL != pBeaconContext->TransferBuffer )
		{
			kfree( pBeaconContext->TransferBuffer);
			pBeaconContext->TransferBuffer = NULL;
		}
	}
out2:	
	for ( i= 0; i < PRIO_RING_SIZE; i++ )
	{
		PTX_CONTEXT pMLMEContext = &(pAd->MLMEContext[i]);
		
		if ( NULL != pMLMEContext->pUrb )
		{
			RTUSB_UNLINK_URB(pMLMEContext->pUrb);
			usb_free_urb(pMLMEContext->pUrb);
			pMLMEContext->pUrb = NULL;
		}
		
		if ( NULL != pMLMEContext->TransferBuffer )
		{
			kfree( pMLMEContext->TransferBuffer);
			pMLMEContext->TransferBuffer = NULL;
		}
	}
out1:
	for (acidx = 0; acidx < 4; acidx++)
	{
		for ( i= 0; i < TX_RING_SIZE; i++ )
		{
			PTX_CONTEXT pTxContext = &(pAd->TxContext[acidx][i]);

			if ( NULL != pTxContext->pUrb )
			{
				RTUSB_UNLINK_URB(pTxContext->pUrb);
				usb_free_urb(pTxContext->pUrb);
				pTxContext->pUrb = NULL;
			}
			if ( NULL != pTxContext->TransferBuffer )
			{
				kfree( pTxContext->TransferBuffer);
				pTxContext->TransferBuffer = NULL;
			}
		}
	}
	
done:
	return Status;
}

/*
	========================================================================
	
	Routine Description:
		Initialize receive data structures

	Arguments:
		Adapter 					Pointer to our adapter

	Return Value:
		NDIS_STATUS_SUCCESS
		NDIS_STATUS_RESOURCES

	Note:
		Initialize all receive releated private buffer, include those define
		in RTMP_ADAPTER structure and all private data structures. The mahor
		work is to allocate buffer for each packet and chain buffer to 
		NDIS packet descriptor.
		
	========================================================================
*/
NDIS_STATUS NICInitRecv(
	IN	PRTMP_ADAPTER	pAd)
{
	UCHAR	i;
	NDIS_STATUS 	Status = NDIS_STATUS_SUCCESS;


	DBGPRINT(RT_DEBUG_TRACE,"--> NICInitRecv\n");
	pAd->NextRxBulkInIndex = 0;
	atomic_set( &pAd->PendingRx, 0);
	for (i = 0; i < RX_RING_SIZE; i++)
	{
		PRX_CONTEXT  pRxContext = &(pAd->RxContext[i]);
		pRxContext->pUrb = RT_USB_ALLOC_URB(0);
		if(pRxContext->pUrb == NULL)
		{
			Status = NDIS_STATUS_RESOURCES;
			DBGPRINT(RT_DEBUG_TRACE,"--> pRxContext->pUrb == NULL\n");
			break;
		}
						
		pRxContext->TransferBuffer= (PUCHAR) kmalloc(BUFFER_SIZE, MEM_ALLOC_FLAG);
		if(!pRxContext->TransferBuffer)
		{
			DBGPRINT(RT_DEBUG_ERROR,"Not enough memory\n");
			Status = NDIS_STATUS_RESOURCES;
			break;
		}	

		NdisZeroMemory(pRxContext->TransferBuffer, BUFFER_SIZE);
		
		pRxContext->pAd	= pAd;
		pRxContext->InUse = FALSE;
		pRxContext->IRPPending	= FALSE;
	}

	DBGPRINT(RT_DEBUG_TRACE,"<-- NICInitRecv\n");	
	return Status;
}

////////////////////////////////////////////////////////////////////////////
//
//	FUNCTION
//		ReleaseAdapter
//
//	DESCRIPTION
//		Calls USB_InterfaceStop and frees memory allocated for the URBs
//		calls NdisMDeregisterDevice and frees the memory
//		allocated in VNetInitialize for the Adapter Object
//		
//	INPUT
//		Adapter 	Pointer to RTMP_ADAPTER structure
//
//	OUTPUT
//		-
//		
////////////////////////////////////////////////////////////////////////////
VOID ReleaseAdapter(
	IN	PRTMP_ADAPTER pAd, 
    IN  BOOLEAN         IsFree,
	IN  BOOLEAN         IsOnlyTx) 
{
	UINT			i, acidx;
	PTX_CONTEXT		pNullContext   = &pAd->NullContext;
	PTX_CONTEXT		pPsPollContext = &pAd->PsPollContext;
	PTX_CONTEXT 	pRTSContext    = &pAd->RTSContext;

	DBGPRINT(RT_DEBUG_TRACE, "---> ReleaseAdapter\n");
	
    if (!IsOnlyTx)
    {
	    // Free all resources for the RECEIVE buffer queue.
	    for (i = 0; i < RX_RING_SIZE; i++)
	    {
		    PRX_CONTEXT  pRxContext = &(pAd->RxContext[i]);

		    if (pRxContext->pUrb != NULL)
		    {
			    RTUSB_UNLINK_URB(pRxContext->pUrb);
			    if (IsFree)
			    usb_free_urb(pRxContext->pUrb);
			    pRxContext->pUrb = NULL;
		    }
		    if (pRxContext->TransferBuffer != NULL)
		    {
			    kfree(pRxContext->TransferBuffer); 
			    pRxContext->TransferBuffer = NULL;
		    }

	    }
    }

	// Free PsPoll frame resource
	if (NULL != pPsPollContext->pUrb)
	{
		RTUSB_UNLINK_URB(pPsPollContext->pUrb);
		if (IsFree)
		usb_free_urb(pPsPollContext->pUrb);
		pPsPollContext->pUrb = NULL;
	}
	if (NULL != pPsPollContext->TransferBuffer)
	{
		kfree(pPsPollContext->TransferBuffer);
		pPsPollContext->TransferBuffer = NULL;
	}
	
	// Free NULL frame resource
	if (NULL != pNullContext->pUrb)
	{
		RTUSB_UNLINK_URB(pNullContext->pUrb);
		if (IsFree)
		usb_free_urb(pNullContext->pUrb);
		pNullContext->pUrb = NULL;
	}
	if (NULL != pNullContext->TransferBuffer)
	{
		kfree(pNullContext->TransferBuffer);
		pNullContext->TransferBuffer = NULL;
	}
	
	// Free RTS frame resource
	if (NULL != pRTSContext->pUrb)
	{
		RTUSB_UNLINK_URB(pRTSContext->pUrb);
		if (IsFree)
		usb_free_urb(pRTSContext->pUrb);
		pRTSContext->pUrb = NULL;
	}
	if (NULL != pRTSContext->TransferBuffer)
	{
		kfree(pRTSContext->TransferBuffer);
		pRTSContext->TransferBuffer = NULL;
	}

	// Free beacon frame resource
	for (i = 0; i < BEACON_RING_SIZE; i++)
	{
		PTX_CONTEXT	pBeaconContext = &(pAd->BeaconContext[i]);
		if ( NULL != pBeaconContext->pUrb )
		{
			RTUSB_UNLINK_URB(pBeaconContext->pUrb);
			if (IsFree)
			usb_free_urb(pBeaconContext->pUrb);
			pBeaconContext->pUrb = NULL;
		}
		
		if ( NULL != pBeaconContext->TransferBuffer )
		{
			kfree( pBeaconContext->TransferBuffer);
			pBeaconContext->TransferBuffer = NULL;
		}
	}

	// Free Prio frame resource
	for ( i= 0; i < PRIO_RING_SIZE; i++ )
	{
		PTX_CONTEXT pMLMEContext = &(pAd->MLMEContext[i]);
		
		if ( NULL != pMLMEContext->pUrb )
		{
			RTUSB_UNLINK_URB(pMLMEContext->pUrb);
			if (IsFree)
			usb_free_urb(pMLMEContext->pUrb);
			pMLMEContext->pUrb = NULL;
		}
		
		if ( NULL != pMLMEContext->TransferBuffer )

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色婷婷狠狠综合| 精品国产一区二区在线观看| 午夜精品在线视频一区| 欧美一二三区在线| 狠狠色综合色综合网络| 国产日韩v精品一区二区| zzijzzij亚洲日本少妇熟睡| 樱桃视频在线观看一区| 欧美日韩一区高清| 久久aⅴ国产欧美74aaa| 欧美激情一区二区在线| 欧洲亚洲精品在线| 日本不卡123| 国产欧美精品区一区二区三区| av电影在线观看一区| 亚洲国产毛片aaaaa无费看| 欧美一区二区不卡视频| 国产一区二区在线电影| ●精品国产综合乱码久久久久| 欧美日韩国产片| 国产在线一区二区| 亚洲人成在线观看一区二区| 欧美群妇大交群的观看方式| 国产米奇在线777精品观看| 日韩理论片网站| 91精品国产欧美一区二区18| 成人午夜视频免费看| 亚洲国产色一区| 欧美精品一区二区三区高清aⅴ| k8久久久一区二区三区| 午夜久久电影网| 中文字幕精品三区| 欧美美女喷水视频| 成人免费视频免费观看| 无码av免费一区二区三区试看| 久久精品一区二区三区不卡牛牛| 在线视频你懂得一区二区三区| 久久成人久久鬼色| 亚洲欧美成人一区二区三区| 欧美mv日韩mv国产网站app| 99久久99久久综合| 六月丁香婷婷色狠狠久久| 亚洲天堂久久久久久久| 精品99一区二区| 欧美亚洲综合在线| 国产精品1区2区3区| 亚洲一区二区三区四区的| 久久久久久久久久久久久久久99| 欧美主播一区二区三区| 成人综合在线网站| 日本欧美大码aⅴ在线播放| 亚洲天天做日日做天天谢日日欢 | 亚洲一区二区四区蜜桃| 欧美精品一区二区高清在线观看| 97精品久久久午夜一区二区三区| 六月丁香婷婷色狠狠久久| 一区二区三区色| 国产三级欧美三级日产三级99| 欧美精品久久99| 97久久精品人人澡人人爽| 国产一区二区三区精品视频 | 亚洲制服丝袜一区| 亚洲国产精品高清| 精品国免费一区二区三区| 欧美色中文字幕| av在线不卡网| 国产一区二区三区四区在线观看| 亚洲成人激情综合网| 综合久久给合久久狠狠狠97色| 精品对白一区国产伦| 777久久久精品| 在线观看日韩毛片| av一二三不卡影片| 国产在线麻豆精品观看| 日韩国产欧美在线视频| 一区二区日韩电影| 亚洲欧洲性图库| 中文字幕第一页久久| 精品少妇一区二区三区| 337p亚洲精品色噜噜| 91美女视频网站| 99热国产精品| 国产不卡视频在线播放| 激情综合网天天干| 麻豆高清免费国产一区| 日韩中文字幕不卡| 亚洲成av人片一区二区梦乃 | 奇米色一区二区| 五月婷婷激情综合| 成人动漫av在线| 国产久卡久卡久卡久卡视频精品| 蜜桃一区二区三区在线| 五月天一区二区| 日韩1区2区3区| 天天综合网 天天综合色| 亚洲国产精品视频| 亚洲午夜国产一区99re久久| 亚洲国产视频一区| 亚洲一区在线观看网站| 亚洲高清在线精品| 亚洲一区二区视频在线观看| 亚洲国产成人tv| 亚欧色一区w666天堂| 午夜精品久久久久久久| 亚洲午夜三级在线| 亚洲成人av福利| 日日欢夜夜爽一区| 日韩国产精品大片| 另类小说图片综合网| 麻豆一区二区99久久久久| 久久99日本精品| 国产在线播放一区三区四| 国产一区 二区| 成人一区二区三区视频在线观看| 成人一区在线观看| 91香蕉视频在线| 欧洲色大大久久| 欧美另类变人与禽xxxxx| 欧美二区乱c少妇| 日韩三区在线观看| 26uuuu精品一区二区| 久久精品欧美一区二区三区不卡 | 国产自产视频一区二区三区| 韩日精品视频一区| 国产69精品一区二区亚洲孕妇| 国产v综合v亚洲欧| 99久久精品国产导航| 日本电影欧美片| 在线成人av影院| 日韩午夜激情电影| 国产日韩av一区| 亚洲精品国产第一综合99久久 | 一区二区三区丝袜| 日韩专区中文字幕一区二区| 激情另类小说区图片区视频区| 国产成人av电影在线| 91免费版在线看| 在线不卡中文字幕播放| 26uuu久久综合| 中文字幕一区三区| 亚洲二区在线视频| 国内精品自线一区二区三区视频| 成人午夜免费视频| 欧美日韩精品欧美日韩精品一综合| 日韩丝袜情趣美女图片| 欧美激情综合五月色丁香小说| 亚洲美女屁股眼交3| 日韩经典中文字幕一区| 国产精品资源在线观看| 色综合色综合色综合| 337p亚洲精品色噜噜| 中文字幕高清不卡| 日韩综合一区二区| 东方欧美亚洲色图在线| 欧美日韩中文字幕一区| 久久蜜桃香蕉精品一区二区三区| 自拍偷拍国产精品| 美女在线视频一区| 91丝袜美腿高跟国产极品老师 | 欧美一区二区黄| 国产精品女主播在线观看| 亚洲成人av电影在线| 国产高清不卡一区二区| 欧美性猛片aaaaaaa做受| 精品国产污网站| 亚洲乱码国产乱码精品精98午夜| 精品中文字幕一区二区小辣椒| 成人av动漫在线| 3d动漫精品啪啪一区二区竹菊| 中文字幕不卡的av| 日韩av中文字幕一区二区三区| 国产**成人网毛片九色| 欧美精品在线一区二区三区| 亚洲国产精品成人久久综合一区| 三级亚洲高清视频| 99久久精品国产网站| 欧美成人精品3d动漫h| 亚洲欧美另类小说| 国模套图日韩精品一区二区| 欧美日韩专区在线| 国产精品短视频| 另类人妖一区二区av| 色婷婷一区二区三区四区| 久久免费看少妇高潮| 天天综合网天天综合色| 色综合夜色一区| 久久久午夜电影| 免费在线观看成人| 色噜噜狠狠色综合中国| 久久精品人人做人人爽人人| 日韩高清一级片| 在线观看免费亚洲| 中国色在线观看另类| 极品少妇xxxx精品少妇偷拍| 欧美日韩五月天| 亚洲精品视频免费观看| 成年人网站91| 久久看人人爽人人| 久久成人av少妇免费| 91精品在线观看入口|