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

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

?? rtmp_init.c

?? r73模塊的無(wú)線網(wǎng)卡在Linux下的驅(qū)動(dòng)程序
?? C
?? 第 1 頁(yè) / 共 5 頁(yè)
字號(hào):
		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;	// Rx Bulk pointer	pAd->CurRxBulkInIndex = 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;		}		memset(pRxContext->TransferBuffer, 0, BUFFER_SIZE);		pRxContext->pAd	= pAd;		pRxContext->InUse = FALSE;		atomic_set(&pRxContext->IrpLock, IRPLOCK_COMPLETED);		pRxContext->IRPPending	= FALSE;	}	if (Status) ReleaseAdapter(pAd, TRUE, FALSE);	DBGPRINT(RT_DEBUG_TRACE,"<-- NICInitRecv status=%d\n", Status);	return Status;}////////////////////////////////////////////////////////////////////////////////	FUNCTION//		ReleaseAdapter////	DESCRIPTION//		Frees memory allocated for URBs and transfer buffers.////	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 )		{			kfree( pMLMEContext->TransferBuffer);			pMLMEContext->TransferBuffer = NULL;		}	}	// Free Tx frame resource	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);				if (IsFree)				usb_free_urb(pTxContext->pUrb);				pTxContext->pUrb = NULL;			}			if ( NULL != pTxContext->TransferBuffer )			{				kfree( pTxContext->TransferBuffer);				pTxContext->TransferBuffer = NULL;			}		}	}	DBGPRINT(RT_DEBUG_TRACE, "<--- ReleaseAdapter\n");}/*	========================================================================	Routine Description:		Allocate DMA memory blocks for send, receive	Arguments:		Adapter		Pointer to our adapter	Return Value:		None.	Note:	========================================================================*/void RTMPInitAdapterBlock(	IN	PRTMP_ADAPTER	pAd){	UINT			i;	PCmdQElmt		cmdqelmt;	DBGPRINT(RT_DEBUG_TRACE, "--> RTMPInitAdapterBlock\n");	// init counter	pAd->WlanCounters.TransmittedFragmentCount.vv.LowPart =  0;	pAd->WlanCounters.MulticastTransmittedFrameCount.vv.LowPart =0;	pAd->WlanCounters.FailedCount.vv.LowPart =0;	pAd->WlanCounters.NoRetryCount.vv.LowPart =0;	pAd->WlanCounters.RetryCount.vv.LowPart =0;	pAd->WlanCounters.MultipleRetryCount.vv.LowPart =0;	pAd->WlanCounters.RTSSuccessCount.vv.LowPart =0;	pAd->WlanCounters.RTSFailureCount.vv.LowPart =0;	pAd->WlanCounters.ACKFailureCount.vv.LowPart =0;	pAd->WlanCounters.FrameDuplicateCount.vv.LowPart =0;	pAd->WlanCounters.ReceivedFragmentCount.vv.LowPart =0;	pAd->WlanCounters.MulticastReceivedFrameCount.vv.LowPart =0;	pAd->WlanCounters.FCSErrorCount.vv.LowPart =0;	pAd->WlanCounters.TransmittedFragmentCount.vv.HighPart =  0;	pAd->WlanCounters.MulticastTransmittedFrameCount.vv.HighPart =0;	pAd->WlanCounters.FailedCount.vv.HighPart =0;	pAd->WlanCounters.NoRetryCount.vv.HighPart =0;	pAd->WlanCounters.RetryCount.vv.HighPart =0;	pAd->WlanCounters.MultipleRetryCount.vv.HighPart =0;	pAd->WlanCounters.RTSSuccessCount.vv.HighPart =0;	pAd->WlanCounters.RTSFailureCount.vv.HighPart =0;	pAd->WlanCounters.ACKFailureCount.vv.HighPart =0;	pAd->WlanCounters.FrameDuplicateCount.vv.HighPart =0;	pAd->WlanCounters.ReceivedFragmentCount.vv.HighPart =0;	pAd->WlanCounters.MulticastReceivedFrameCount.vv.HighPart =0;	pAd->WlanCounters.FCSErrorCount.vv.HighPart =0;	do	{		for (i = 0; i < COMMAND_QUEUE_SIZE; i++)		{			cmdqelmt = &(pAd->CmdQElements[i]);			memset(cmdqelmt, 0, sizeof(CmdQElmt));			cmdqelmt->buffer = NULL;			cmdqelmt->CmdFromNdis = FALSE;			cmdqelmt->InUse = FALSE;		}		RTUSBInitializeCmdQ(&pAd->CmdQ);		pAd->MLMEThr_pid= -1;		pAd->RTUSBCmdThr_pid= -1;		init_MUTEX_LOCKED(&(pAd->usbdev_semaphore));		init_MUTEX_LOCKED(&(pAd->mlme_semaphore));		init_MUTEX_LOCKED(&(pAd->RTUSBCmd_semaphore));		init_completion (&pAd->mlmenotify);	// event initially non-signalled		init_completion (&pAd->cmdnotify); 	// event initially non-signalled		////////////////////////		// Spinlock		NdisAllocateSpinLock(&pAd->BulkOutLock[0]);		NdisAllocateSpinLock(&pAd->BulkOutLock[1]);		NdisAllocateSpinLock(&pAd->BulkOutLock[2]);		NdisAllocateSpinLock(&pAd->BulkOutLock[3]);		NdisAllocateSpinLock(&pAd->CmdQLock);		NdisAllocateSpinLock(&pAd->MLMEWaitQueueLock);		NdisAllocateSpinLock(&pAd->MLMEQLock);		NdisAllocateSpinLock(&pAd->BulkFlagsLock);	}	while (FALSE);	DBGPRINT(RT_DEBUG_TRACE, "<-- RTMPInitAdapterBlock\n");}NDIS_STATUS	RTUSBWriteHWMACAddress(	IN	PRTMP_ADAPTER		pAd){	MAC_CSR2_STRUC		StaMacReg0;	MAC_CSR3_STRUC		StaMacReg1;	NDIS_STATUS			Status = NDIS_STATUS_SUCCESS;	PUCHAR			curMAC;	int			t;	if (pAd->bLocalAdminMAC != TRUE)	{		if (!memcmp(pAd->net_dev->dev_addr, "\x00\x00\x00\x00\x00\x00", 6)) {			KPRINT(KERN_INFO, "using permanent MAC addr\n");			DBGPRINT(RT_DEBUG_INFO, "-   using permanent MAC addr\n");			curMAC = pAd->PermanentAddress;			// Also meets 2.6.24 pre-up requirements - bb			memcpy(pAd->net_dev->dev_addr, curMAC, pAd->net_dev->addr_len);		} else {			KPRINT(KERN_INFO, "using net dev supplied MAC addr\n");			DBGPRINT(RT_DEBUG_INFO, "-   using net dev supplied MAC addr\n");			curMAC = pAd->net_dev->dev_addr;		}		KPRINT(KERN_INFO, "Active MAC addr: %02x:%02x:%02x:%02x:%02x:%02x\n",			curMAC[0], curMAC[1], curMAC[2], curMAC[3], curMAC[4], curMAC[5]);		for (t=0; t<6; t++) pAd->CurrentAddress[t] = curMAC[t];	}	// Write New MAC address to MAC_CSR2 & MAC_CSR3 & let ASIC know our new MAC	StaMacReg0.field.Byte0 = pAd->CurrentAddress[0];	StaMacReg0.field.Byte1 = pAd->CurrentAddress[1];	StaMacReg0.field.Byte2 = pAd->CurrentAddress[2];	StaMacReg0.field.Byte3 = pAd->CurrentAddress[3];	StaMacReg1.field.Byte4 = pAd->CurrentAddress[4];	StaMacReg1.field.Byte5 = pAd->CurrentAddress[5];	StaMacReg1.field.U2MeMask = 0xff;	KPRINT(KERN_INFO, "Local MAC = %02x:%02x:%02x:%02x:%02x:%02x\n",		pAd->CurrentAddress[0], pAd->CurrentAddress[1], pAd->CurrentAddress[2],		pAd->CurrentAddress[3], pAd->CurrentAddress[4], pAd->CurrentAddress[5]);	DBGPRINT(RT_DEBUG_INFO, "- %s: Local MAC = %02x:%02x:%02x:%02x:%02x:%02x\n",		__FUNCTION__,		pAd->CurrentAddress[0], pAd->CurrentAddress[1], pAd->CurrentAddress[2],		pAd->CurrentAddress[3], pAd->CurrentAddress[4], pAd->CurrentAddress[5]);	RTUSBWriteMACRegister(pAd, MAC_CSR2, StaMacReg0.word);	RTUSBWriteMACRegister(pAd, MAC_CSR3, StaMacReg1.word);	return Status;}/*	========================================================================	Routine Description:		Read initial parameters from EEPROM	Arguments:		Adapter						Pointer to our adapter	Return Value:		None	Note:	========================================================================*/VOID NICReadEEPROMParameters(	IN	PRTMP_ADAPTER	pAd){	USHORT					i, value, value2;	EEPROM_ANTENNA_STRUC	Antenna;	EEPROM_VERSION_STRUC	Version;	CHAR					ChannelTxPower[MAX_NUM_OF_CHANNELS];	EEPROM_LED_STRUC		LedSetting;	DBGPRINT(RT_DEBUG_TRACE, "--> NICReadEEPROMParameters\n");	//Read MAC address.	RTUSBReadEEPROM(pAd, EEPROM_MAC_ADDRESS_BASE_OFFSET,					pAd->PermanentAddress, MAC_ADDR_LEN);	DBGPRINT(RT_DEBUG_INFO, "- Local MAC = %02x:%02x:%02x:%02x:%02x:%02x\n",			pAd->PermanentAddress[0], pAd->PermanentAddress[1],			pAd->PermanentAddress[2], pAd->PermanentAddress[3],			pAd->PermanentAddress[4], pAd->PermanentAddress[5]);	// Init the channel number for TX channel power	// 0. 11b/g	for (i = 0; i < 14; i++)		pAd->TxPower[i].Channel = i + 1;	// 1. UNI 36 - 64	for (i = 0; i < 8; i++)		pAd->TxPower[i + 14].Channel = 36 + i * 4;	// 2. HipperLAN 2 100 - 140	for (i = 0; i < 11; i++)		pAd->TxPower[i + 22].Channel = 100 + i * 4;	// 3. UNI 140 - 165	for (i = 0; i < 5; i++)		pAd->TxPower[i + 33].Channel = 149 + i * 4;	// 34/38/42/46	for (i = 0; i < 4; i++)		pAd->TxPower[i + 38].Channel = 34 + i * 4;	// if E2PROM version mismatch with driver's expectation, then skip	// all subsequent E2RPOM retieval and set a system error bit to notify GUI	RTUSBReadEEPROM(pAd, EEPROM_VERSION_OFFSET, (PUCHAR)&Version.word, 2);	Version.word = le16_to_cpu(Version.word);	pAd->EepromVersion = Version.field.Version +					Version.field.FaeReleaseNumber * 256;	DBGPRINT(RT_DEBUG_INFO, "E2PROM: Version = %d, FAE release #%d\n",			Version.field.Version, Version.field.FaeReleaseNumber);	// Read BBP default from EEPROM, store to array(EEPROMDefaultValue) in pAd

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美精彩视频一区二区三区| 色婷婷av一区| 久久色在线视频| 国产精品 日产精品 欧美精品| 亚洲视频狠狠干| 91麻豆成人久久精品二区三区| 欧美亚洲一区二区在线观看| 一个色妞综合视频在线观看| 欧美日韩视频专区在线播放| 一区二区三区四区在线播放| 欧美日韩国产综合一区二区 | 91福利区一区二区三区| 亚洲免费av观看| 日韩欧美高清dvd碟片| 国产精品99久久久久久有的能看| 色综合视频一区二区三区高清| 日韩美女一区二区三区四区| 国产揄拍国内精品对白| 国产精品久久久久久一区二区三区 | 91在线观看污| 天天色天天操综合| 欧美精品一区男女天堂| 99久久久国产精品| 蜜芽一区二区三区| 亚洲图片激情小说| 亚洲婷婷在线视频| 91麻豆精品91久久久久同性| 国产制服丝袜一区| 亚洲欧美日韩中文播放| 日韩欧美精品在线| 95精品视频在线| 麻豆高清免费国产一区| 成人免费视频在线观看| 欧美刺激脚交jootjob| 色综合色综合色综合色综合色综合| 久久久久久久久久美女| 欧美调教femdomvk| 成人激情校园春色| 热久久久久久久| 亚洲嫩草精品久久| 国产网站一区二区| 欧美日韩午夜在线| 99久久久久久99| 国产一区二区三区在线看麻豆| 欧美日韩一级二级三级| 成人综合在线网站| 麻豆免费精品视频| 亚洲国产另类av| 久久久久久久久久美女| 欧美一区二区三区不卡| 91麻豆免费视频| 国产高清不卡一区| 日韩高清在线不卡| 亚洲午夜精品网| 亚洲欧洲综合另类| 国产欧美一区视频| 欧美videos中文字幕| 538prom精品视频线放| 色诱亚洲精品久久久久久| 成人福利在线看| 国产盗摄精品一区二区三区在线| 欧美精彩视频一区二区三区| 欧美tickling挠脚心丨vk| 欧美色中文字幕| 色婷婷综合久久| 国产午夜精品理论片a级大结局| 国产在线精品一区二区三区不卡| 亚洲精品一区二区三区香蕉 | 久久伊99综合婷婷久久伊| 欧美主播一区二区三区| 99久久精品国产毛片| 成人午夜免费av| 高潮精品一区videoshd| 粉嫩在线一区二区三区视频| 国产成人午夜视频| 国产乱码字幕精品高清av| 久久精品国产精品亚洲精品 | 91福利国产精品| 99国产麻豆精品| 一本色道久久加勒比精品 | 国产精品一卡二| 美女www一区二区| 麻豆免费看一区二区三区| 久久精品72免费观看| 奇米在线7777在线精品| 蜜桃视频一区二区三区| 久久99热国产| 国产ts人妖一区二区| 成人国产精品免费网站| 成人av手机在线观看| 91小视频在线观看| 欧美亚洲动漫另类| 5566中文字幕一区二区电影| 欧美成人在线直播| 中文av字幕一区| 一区二区三区加勒比av| 午夜精品福利久久久| 国内成人精品2018免费看| 成人性视频网站| 欧美性大战久久久久久久蜜臀| 国产大片一区二区| 不卡一区中文字幕| 精品视频一区三区九区| 日韩精品在线看片z| 亚洲国产精品成人综合色在线婷婷| 91精品国产综合久久久久久久久久| 成人v精品蜜桃久久一区| 一本在线高清不卡dvd| 欧美一区二区在线看| 国产精品美女一区二区三区| 亚洲激情第一区| 美女爽到高潮91| 99久久精品免费看| 欧美成人艳星乳罩| 亚洲欧美日韩小说| 麻豆91在线播放免费| 99精品国产99久久久久久白柏| 国产成人亚洲综合a∨婷婷图片| 日日摸夜夜添夜夜添国产精品| 一区二区三区日韩欧美| 免费在线视频一区| 99久久国产综合精品女不卡| 69久久夜色精品国产69蝌蚪网| 色8久久人人97超碰香蕉987| 日韩欧美一区二区三区在线| 中文字幕在线不卡一区二区三区| 久久久www成人免费毛片麻豆| 日韩欧美国产综合一区| 亚洲人快播电影网| 国产经典欧美精品| 欧美精品一卡二卡| 亚洲同性同志一二三专区| 狠狠色丁香久久婷婷综合丁香| 美女在线一区二区| 色欧美片视频在线观看 | 久久国产精品露脸对白| 成人精品视频一区二区三区| 日韩一区二区三区三四区视频在线观看| 91精品办公室少妇高潮对白| 久久亚洲综合色| 免费欧美日韩国产三级电影| 日本道精品一区二区三区| 国产欧美精品在线观看| 天天做天天摸天天爽国产一区| 午夜精品成人在线| 在线观看免费一区| 亚洲视频免费在线| 成人一区在线观看| 欧美大片在线观看| 日产欧产美韩系列久久99| 在线一区二区视频| 亚洲激情自拍视频| 日本伦理一区二区| 亚洲日本成人在线观看| 成人亚洲一区二区一| 国产欧美一区二区精品性 | 亚洲成av人在线观看| 91免费观看视频在线| 国产精品二三区| 成人黄色在线网站| 国产精品高清亚洲| 成人av在线影院| 久久久精品免费免费| 国产美女精品一区二区三区| 欧美xxxxxxxxx| 国产成人av一区| 国产精品污www在线观看| 成人免费视频视频| 亚洲婷婷在线视频| 不卡的av电影| 亚洲天堂中文字幕| 欧洲av在线精品| 亚洲国产日韩在线一区模特| 欧美午夜电影网| 日韩vs国产vs欧美| 精品欧美一区二区在线观看 | 亚洲sss视频在线视频| 欧美性猛片aaaaaaa做受| 亚洲精品伦理在线| 欧美美女一区二区在线观看| 香蕉成人伊视频在线观看| 欧美日韩激情在线| 韩日av一区二区| 国产精品成人免费在线| 91久久精品一区二区三| 亚洲大片精品永久免费| 日韩一区二区免费在线观看| 久久99在线观看| 国产精品电影一区二区三区| 在线免费亚洲电影| 美女久久久精品| 国产精品色在线| 色噜噜狠狠色综合中国| 日韩电影在线免费观看| 久久久亚洲综合| 一本大道久久a久久精二百| 热久久国产精品| 国产精品美女一区二区三区 | 日韩激情av在线| 久久久久久一二三区|