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

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

?? mdata.c

?? Atheros AP Test with Agilent N4010A source code
?? C
?? 第 1 頁(yè) / 共 5 頁(yè)
字號(hào):

					pLibDev->devMap.r_createDescriptors(devNum, (pLibDev->tx[queueIndex].descAddress + \
							(dIndex * sizeof(MDK_ATHEROS_DESC))),  \
							lastDesc | numDescPerRate |  \
							(sizeof(MDK_ATHEROS_DESC)/sizeof(A_UINT32) << DESC_INFO_NUM_DESC_WORDS_BIT_START), \
							0, \
							descOp, \
							(A_UINT32 *)localDescPtr);

				    dIndex = i+1;
				}
			}
			else {
				j++;
			}
		}


		//increment descriptor address
		descAddress += sizeof(MDK_ATHEROS_DESC);
		localDescPtr ++;
	}

	//write all the descriptors in one shot
    if (!pLibDev->devMap.remoteLib || !(rateMask & RATE_GROUP)) {
		writeDescriptors(devNum, pLibDev->tx[queueIndex].descAddress, localDescBuffer, pLibDev->tx[queueIndex].numDesc);
#ifdef DEBUG_MEMORY
printf("SNOOP::Desc contents are\n");
memDisplay(devNum, pLibDev->tx[queueIndex].descAddress, 16);
#endif
	}
	free(localDescBuffer);


#ifdef DEBUG_MEMORY
printf("SNOOP::createEndPacket to \n");
printf("SNOOP::dest %x:%x:%x:%x:%x:%x\n", dest[6], dest[5], dest[4], dest[3], dest[2], dest[1], dest[0]);
#endif

	//create the end packet
	createEndPacket(devNum, queueIndex, dest, antMode, probePkt);

	// Set broadcast for Begin
	if(broadcast) {
		pLibDev->tx[queueIndex].broadcast = 1;
	}
	else {
		pLibDev->tx[queueIndex].broadcast = 0;
	}

	pLibDev->tx[queueIndex].txEnable = 1;
	ar5kInitData[pLibDev->ar5kInitIndex].pMacAPI->setRetryLimit( devNum, queueIndex );
#ifdef _TIME_PROFILE
    txDataSetup_end=milliTime();
printf(".................SNOOP::exit txDataSetup:Time taken = %dms\n", (txDataSetup_end-txDataSetup_start));
#endif
	return;
}

MANLIB_API void cleanupTxRxMemory
(
 A_UINT32 devNum,
 A_UINT32 flags
)
{
	LIB_DEV_INFO *pLibDev = gLibInfo.pLibDevArray[devNum];
	A_UINT16	 queueIndex;



	pLibDev->selQueueIndex = 0;
	pLibDev->tx[0].dcuIndex = 0;

	queueIndex = pLibDev->selQueueIndex;

	if(flags & TX_CLEAN) {
		if (pLibDev->tx[queueIndex].pktAddress) {
			memFree(devNum, pLibDev->tx[queueIndex].pktAddress);
			pLibDev->tx[queueIndex].pktAddress = 0;
			memFree(devNum, pLibDev->tx[queueIndex].descAddress);
			pLibDev->tx[queueIndex].descAddress = 0;
			pLibDev->tx[queueIndex].txEnable = 0;
		}
		if(pLibDev->tx[queueIndex].endPktAddr) {
			memFree(devNum, pLibDev->tx[queueIndex].endPktAddr);
			memFree(devNum, pLibDev->tx[queueIndex].endPktDesc);
			pLibDev->tx[queueIndex].endPktAddr = 0;
			pLibDev->tx[queueIndex].endPktDesc = 0;
		}
		if(pLibDev->tx[PROBE_QUEUE].pktAddress) {
			memFree(devNum, pLibDev->tx[PROBE_QUEUE].pktAddress);
			pLibDev->tx[PROBE_QUEUE].pktAddress = 0;
			memFree(devNum, pLibDev->tx[PROBE_QUEUE].descAddress);
			pLibDev->tx[PROBE_QUEUE].descAddress = 0;
			pLibDev->tx[PROBE_QUEUE].txEnable = 0;
		}
	}
	if(flags & RX_CLEAN) {
		if (pLibDev->rx.rxEnable || pLibDev->rx.bufferAddress) {
			memFree(devNum, pLibDev->rx.bufferAddress);
			pLibDev->rx.bufferAddress = 0;
			memFree(devNum, pLibDev->rx.descAddress);
			pLibDev->rx.descAddress = 0;
			pLibDev->rx.rxEnable = 0;
		}
	}

}

void
createEndPacket
(
 A_UINT32 devNum,
 A_UINT16 queueIndex,
 A_UCHAR  *dest,
 A_UINT32 antMode,
 A_BOOL   probePkt
)
{
	LIB_DEV_INFO *pLibDev = gLibInfo.pLibDevArray[devNum];
	A_UINT32 pktSize;
	MDK_ATHEROS_DESC	localDesc;
	A_UINT32			retryValue;
	A_UINT16			endPktType = MDK_LAST_PKT;

	if (pLibDev->noEndPacket) {
		return;
	}

	pLibDev->tx[queueIndex].endPktDesc = 
			memAlloc( devNum, 1 * sizeof(MDK_ATHEROS_DESC));
	if(probePkt) {
		endPktType = MDK_PROBE_LAST_PKT;
	}

	// this is the special end descriptor
	createTransmitPacket(devNum, endPktType, dest, 1, 0, NULL, 0, 0,
		queueIndex, &pktSize, &(pLibDev->tx[queueIndex].endPktAddr));

	//write buffer ptr to descriptor
#if defined(COBRA_AP) && defined(PCI_INTERFACE)
	    if(isCobra(pLibDev->swDevID)) {
			localDesc.bufferPhysPtr = pLibDev->tx[queueIndex].endPktAddr;
		}
		else {
			localDesc.bufferPhysPtr = pLibDev->tx[queueIndex].endPktAddr | HOST_PCI_SDRAM_BASEADDR;
		}
#else
	localDesc.bufferPhysPtr = pLibDev->tx[queueIndex].endPktAddr;
#endif
	
	//Venice needs to have the retries set for end packets
	//so take a copy and artificially set it
	retryValue = pLibDev->tx[queueIndex].retryValue;
	if(probePkt) {
		pLibDev->tx[queueIndex].retryValue = 0;
	}
	else {
		pLibDev->tx[queueIndex].retryValue = 0xf;
	}


	if (pLibDev->libCfgParams.enableXR) {
		if (isFalcon(devNum) || isDragon(devNum)) {
			setDescriptorEndPacketAr5513( devNum, &localDesc, pktSize, 
									       antMode, 0, rateValues[15], 0);
		} else {
		        setDescriptorEndPacketAr5212( devNum, &localDesc, pktSize, 
								       antMode, 0, rateValues[15], 0);
		}
	}
	else if (((pLibDev->swDevID & 0x00ff) >= 0x0013) && (pLibDev->mode == MODE_11G) && (!pLibDev->turbo)) {
		if (isFalcon(devNum) || isDragon(devNum)) {
			setDescriptorEndPacketAr5513( devNum, &localDesc, pktSize, 
									       antMode, 0, rateValues[8], 0);
		} else {
		        setDescriptorEndPacketAr5212( devNum, &localDesc, pktSize, 
								       antMode, 0, rateValues[8], 0);
		}
	} else {
	  	ar5kInitData[pLibDev->ar5kInitIndex].pMacAPI->setDescriptor( devNum, &localDesc, pktSize, 
						antMode, 0, rateValues[0], 0);
	}
	//restore the retry value
	pLibDev->tx[queueIndex].retryValue = retryValue;
	
	localDesc.nextPhysPtr = 0;
	
	writeDescriptor(devNum, pLibDev->tx[queueIndex].endPktDesc, &localDesc);
}

void
sendEndPacket
(
 A_UINT32 devNum,
 A_UINT16 queueIndex
)
{
	LIB_DEV_INFO *pLibDev = gLibInfo.pLibDevArray[devNum];

	if (pLibDev->noEndPacket) {
		return;
	}

#ifdef DEBUG_MEMORY
printf("SNOOP:sendEndPacket::start Send end packet\n");
#endif
    
	//successful transmission of frames, so send special end packet
	ar5kInitData[pLibDev->ar5kInitIndex].pMacAPI->sendTxEndPacket(devNum, queueIndex );

	//cleanup end packet memory allocation
//	if(pLibDev->tx[queueIndex].endPktAddr) {
//		memFree(devNum, pLibDev->tx[queueIndex].endPktAddr);
//		memFree(devNum, pLibDev->tx[queueIndex].endPktDesc);
//		pLibDev->tx[queueIndex].endPktAddr = 0;
//		pLibDev->tx[queueIndex].endPktDesc = 0;
//	}
}


/**************************************************************************
* enableWep - setup the keycache with default keys and set an internel
*			  wep enable flag
*			  For now the software will hardcode some keys in here.
*			  eventually I will change the interface on here to allow
*			  keycache to be setup.
*
*/
MANLIB_API void enableWep
(
 A_UINT32 devNum,
 A_UCHAR key	   //which of the default keys to use
)
{
	LIB_DEV_INFO *pLibDev = gLibInfo.pLibDevArray[devNum];

	if (checkDevNum(devNum) == FALSE) {
		mError(devNum, EINVAL, "Device Number %d:enableWep\n", devNum);
		return;
	}

	if(pLibDev->devState < RESET_STATE) {
		mError(devNum, EILSEQ, "Device Number %d:enableWep: device not in reset state - resetDevice must be run first\n", devNum);
		return;
	}

	//program keys 1-3 in the key cache.
	REGW(devNum, 0x9000, 0x22222222);
	REGW(devNum, 0x9004, 0x11);
	REGW(devNum, 0x9014, 0x00); 		//40 bit key
	REGW(devNum, 0x901c, 0x8000);		//valid bit
	REGW(devNum, 0x9010, 0x22222222);
	REGW(devNum, 0x9024, 0x11);
	REGW(devNum, 0x9034, 0x00); 		//40 bit key
	REGW(devNum, 0x903c, 0x8000);		//valid bit
	REGW(devNum, 0x9040, 0x22222222);
	REGW(devNum, 0x9044, 0x11);
	REGW(devNum, 0x9054, 0x00); 		//40 bit key
	REGW(devNum, 0x905c, 0x8000);		//valid bit
	REGW(devNum, 0x9060, 0x22222222);
	REGW(devNum, 0x9064, 0x11);
	REGW(devNum, 0x9074, 0x00); 		//40 bit key
	REGW(devNum, 0x907c, 0x8000);		//valid bit

	REGW(devNum, 0x8800, 0x22222222);
	REGW(devNum, 0x8804, 0x11);
	REGW(devNum, 0x8814, 0x00); 		//40 bit key
	REGW(devNum, 0x881c, 0x8000);		//valid bit
	REGW(devNum, 0x8810, 0x22222222);
	REGW(devNum, 0x8824, 0x11);
	REGW(devNum, 0x8834, 0x00); 		//40 bit key
	REGW(devNum, 0x883c, 0x8000);		//valid bit
	REGW(devNum, 0x8840, 0x22222222);
	REGW(devNum, 0x8844, 0x11);
	REGW(devNum, 0x8854, 0x00); 		//40 bit key
	REGW(devNum, 0x885c, 0x8000);		//valid bit
	REGW(devNum, 0x8860, 0x22222222);
	REGW(devNum, 0x8864, 0x11);
	REGW(devNum, 0x8874, 0x00); 		//40 bit key
	REGW(devNum, 0x887c, 0x8000);		//valid bit
	pLibDev->wepEnable = 1;
	pLibDev->wepKey = key;
}

/**************************************************************************
* txDataBegin - start transmission
*
*/
MANLIB_API void txDataBegin
(
 A_UINT32 devNum, 
 A_UINT32 timeout,
 A_UINT32 remoteStats
)
{
	txDataStart( devNum );
	txDataComplete( devNum, timeout, remoteStats );
}

/////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////
////
////

/**************************************************************************
* txDataBegin - start transmission
*
*/
MANLIB_API void txDataStart
(
 A_UINT32 devNum
)
{
	LIB_DEV_INFO *pLibDev = gLibInfo.pLibDevArray[devNum];
	MDK_ATHEROS_DESC	localDesc;
	static A_UINT16 activeQueues[MAX_TX_QUEUE] = {0};	// Index of the active queue
	A_UINT16	activeQueueCount = 0;					// active queues count
	int i = 0;

	//if we are sending probe packets, then only enable the probe queue
	if((pLibDev->txProbePacketNext) && (pLibDev->tx[PROBE_QUEUE].txEnable)) {
		activeQueues[activeQueueCount] = (A_UINT16)PROBE_QUEUE;
		activeQueueCount++;
	}
	else {
		for( i = 0; i < MAX_TX_QUEUE; i++ )
		{
			if ( pLibDev->tx[i].txEnable )
			{
				activeQueues[activeQueueCount] = (A_UINT16)i;
				activeQueueCount++;
			}
		}
	}

	for( i = 0; i < activeQueueCount; i++ )
	{
		if (checkDevNum(devNum) == FALSE) {
			mError(devNum, EINVAL, "Device Number %d:txDataStart\n", devNum);
			return;
		}
 
		if(pLibDev->devState < RESET_STATE) {
			mError(devNum, EILSEQ, "Device Number %d:txDataStart: device not in reset state - resetDevice must be run first\n", devNum);
			return;
		}

		if (!pLibDev->tx[activeQueues[i]].txEnable) {
			mError(devNum, EILSEQ, 
				"Device Number %d:txDataStart: txDataSetup must successfully complete before running txDataBegin\n", devNum);
			return; 
		}

		//zero out the local tx stats structures
		memset(&(pLibDev->tx[activeQueues[i]].txStats[0]), 0, sizeof(TX_STATS_STRUCT) * STATS_BINS);
		pLibDev->tx[activeQueues[i]].haveStats = 0;
	}
	
	// cleanup descriptors created by the last begin
	if (pLibDev->rx.rxEnable || pLibDev->rx.bufferAddress) {
		memFree(devNum, pLibDev->rx.bufferAddress);
		pLibDev->rx.bufferAddress = 0;
		memFree(devNum, pLibDev->rx.descAddress);
		pLibDev->rx.descAddress = 0;
		pLibDev->rx.rxEnable = 0;
		pLibDev->rx.numDesc = 0;
		pLibDev->rx.bufferSize = 0;
	}
  
	// Add a local self-linked rx descriptor and buffer to stop receive overrun
	pLibDev->rx.descAddress = memAlloc( devNum, sizeof(MDK_ATHEROS_DESC));
	if (0 == pLibDev->rx.descAddress) {
		mError(devNum, ENOMEM, "Device Number %d:txDataStart: unable to allocate memory for rx-descriptor to prevent overrun\n", devNum);
		return;
	}
	pLibDev->rx.bufferSize = 512;
	pLibDev->rx.bufferAddress = memAlloc(devNum, pLibDev->rx.bufferSize);
	if (0 == pLibDev->rx.bufferAddress) {
		mError(devNum, ENOMEM, "Device Number %d:txDataStart: unable to allocate memory for rx-buffer to prevent overrun\n", devNum);
		return;
	}
#if defined(COBRA_AP) && defined(PCI_INTERFACE)
	    if(isCobra(pLibDev->swDevID)) {
		localDesc.bufferPhysPtr = pLibDev->rx.bufferAddress;
	    localDesc.nextPhysPtr = pLibDev->rx.descAddress;
	}
	else {
		localDesc.bufferPhysPtr = pLibDev->rx.bufferAddress | HOST_PCI_SDRAM_BASEADDR;
	    localDesc.nextPhysPtr = pLibDev->rx.descAddress | HOST_PCI_SDRAM_BASEADDR;
	}
#else
	localDesc.bufferPhysPtr = pLibDev->rx.bufferAddress;
	localDesc.nextPhysPtr = pLibDev->rx.descAddress;
#endif
	localDesc.hwControl[1] = pLibDev->rx.bufferSize;
	localDesc.hwControl[0] = 0;

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美国产一区二区| 亚洲一区影音先锋| 激情亚洲综合在线| 久久蜜桃香蕉精品一区二区三区| 蜜臀av一区二区在线观看| 亚洲精品免费在线播放| eeuss国产一区二区三区| 亚洲国产一区二区a毛片| 91亚洲精华国产精华精华液| 日韩中文字幕亚洲一区二区va在线| 精品欧美乱码久久久久久1区2区| 国产精品一卡二卡在线观看| 亚洲精品国产a| 亚洲一区在线看| 午夜激情久久久| 最新热久久免费视频| 久久人人爽人人爽| 中文字幕精品—区二区四季| 亚洲素人一区二区| 久久久久国产精品厨房| 久久久高清一区二区三区| 亚洲精品午夜久久久| 一区二区三区四区在线免费观看| 精品国产乱码久久久久久老虎| 欧美伊人久久大香线蕉综合69| 国产91精品一区二区麻豆网站| 日本不卡免费在线视频| 亚洲国产wwwccc36天堂| 免费观看日韩av| 成人免费福利片| 床上的激情91.| 欧美日韩国产乱码电影| 欧美日韩免费电影| 2023国产一二三区日本精品2022| 6080国产精品一区二区| 欧美性受xxxx| 91超碰这里只有精品国产| 久久久久高清精品| 香蕉av福利精品导航| 视频一区视频二区中文| 成人毛片在线观看| 欧美一区二区三区公司| 日韩一本二本av| 日韩欧美综合一区| 亚洲精品videosex极品| 国产一区二区三区av电影| 国产另类ts人妖一区二区| 欧美丝袜丝交足nylons图片| 国产精品丝袜在线| 亚洲男人的天堂一区二区| 亚洲午夜激情网站| 国产一区二区精品久久99| 欧美日韩一区中文字幕| 欧美美女一区二区三区| 91麻豆精品国产91久久久久久久久 | 欧美二区三区91| 欧美国产国产综合| 精品一区二区三区久久| 激情成人午夜视频| 欧美色图片你懂的| 国产精品久久久久久福利一牛影视| 国产精品乱码人人做人人爱| 久久99久久精品欧美| 69堂精品视频| 亚洲二区在线观看| 91福利在线观看| 91福利视频在线| 中文字幕一区二区三区四区| 国产一区二区三区免费播放| 欧美日韩和欧美的一区二区| 一区二区三区四区视频精品免费 | 久久99国产精品尤物| 91免费观看国产| 亚洲人吸女人奶水| 国产精品一区二区不卡| 精品国产一区二区三区不卡| 天天av天天翘天天综合网色鬼国产| 色综合久久久久久久久久久| 欧美麻豆精品久久久久久| 国产精品夫妻自拍| 成人黄色片在线观看| 久久99久国产精品黄毛片色诱| 欧美日韩免费视频| 亚洲v中文字幕| 3d动漫精品啪啪1区2区免费| 欧美a级理论片| 26uuu国产在线精品一区二区| 国产一区二区三区观看| 久久久久久久久伊人| 成人午夜视频免费看| 亚洲三级在线免费| 欧美专区亚洲专区| 国产欧美精品区一区二区三区| 亚洲第一会所有码转帖| 蜜臀99久久精品久久久久久软件| 免费成人深夜小野草| 亚洲成av人综合在线观看| 国产精品影音先锋| 欧美日韩一区中文字幕| 日韩av电影天堂| 国产美女av一区二区三区| 中文字幕精品在线不卡| 欧美三级在线看| 国产精品资源网站| 亚洲欧美视频在线观看| 欧美丰满美乳xxx高潮www| 国产一区二区导航在线播放| 亚洲欧美在线高清| 91精品蜜臀在线一区尤物| 国产+成+人+亚洲欧洲自线| 亚洲激情图片小说视频| 日韩久久免费av| 青青国产91久久久久久| 国产午夜久久久久| 国产1区2区3区精品美女| 亚洲一区二区在线观看视频| 久久夜色精品国产噜噜av| 91老司机福利 在线| 九九热在线视频观看这里只有精品| 欧美激情资源网| 91精品国产综合久久小美女| 国产成人精品综合在线观看| 国产日韩欧美高清| 91精品国产高清一区二区三区 | 久久精品国产77777蜜臀| 欧美视频一区二| 国产精选一区二区三区| 亚洲国产美国国产综合一区二区| 欧美电影免费观看高清完整版在| 成人性色生活片| 紧缚奴在线一区二区三区| 亚洲你懂的在线视频| 欧美激情综合网| 精品国产免费一区二区三区四区 | 国产精品美女www爽爽爽| 欧美一区二区福利视频| 91麻豆免费观看| 风间由美中文字幕在线看视频国产欧美| 婷婷国产在线综合| 加勒比av一区二区| 日韩精品电影在线| 亚洲一区二区三区国产| 亚洲欧美乱综合| 亚洲图片欧美激情| 国产精品成人免费精品自在线观看| 26uuu另类欧美| 欧美电影免费观看完整版| 欧美男女性生活在线直播观看| 91福利在线导航| 色就色 综合激情| 91麻豆国产福利精品| 色av一区二区| 欧美性大战久久| 欧美日韩高清在线播放| 久久久99精品久久| 国产亚洲一区二区在线观看| 国产人久久人人人人爽| 久久精品网站免费观看| 中文av字幕一区| 亚洲欧洲精品一区二区精品久久久| 国产精品亲子乱子伦xxxx裸| 国产精品国产三级国产有无不卡| 国产精品第四页| 亚洲精品国产第一综合99久久| 一区二区三区不卡视频在线观看| 亚洲精品视频一区二区| 亚洲一区二区三区激情| 日韩福利视频网| 狠狠狠色丁香婷婷综合久久五月| 国产精品一线二线三线精华| 成人免费精品视频| 日本韩国欧美三级| 制服丝袜av成人在线看| 欧美精品一区二区不卡| 国产精品乱人伦一区二区| 亚洲二区在线观看| 精品一区二区在线视频| 成人免费看片app下载| 欧美色精品在线视频| 精品免费日韩av| 亚洲欧洲三级电影| 日韩精品亚洲一区| 国产aⅴ综合色| 欧美人狂配大交3d怪物一区| 精品99久久久久久| 一区二区三区中文在线观看| 日本三级亚洲精品| 不卡的电视剧免费网站有什么| 欧美日韩免费电影| 国产婷婷色一区二区三区四区| 亚洲一区二区在线免费看| 韩国女主播成人在线观看| 91精品福利视频| 精品国产乱码久久久久久免费 | 国产成人综合精品三级| 欧美色精品在线视频| 国产三级精品视频| 日日欢夜夜爽一区| 色诱视频网站一区| 国产午夜精品福利|