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

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

?? mdata.c

?? Atheros AP Test with Agilent N4010A source code
?? C
?? 第 1 頁 / 共 5 頁
字號:
			//only process packets if things are good
			if ( !((statsInfo.status1 & DESC_MORE) || statsInfo.badPacket || statsInfo.controlFrameReceived || 
				statsInfo.illegalBuffSize) ) {
#ifdef DEBUG_MEMORY
printf("SNOOP::Processing packet\n");
#endif
				//check for this being "last packet" or stats packet
				//mdkExtractAddrAndSequence also pulled mdkPkt type info from packet
				if ((statsInfo.status2 & DESC_FRM_RCV_OK) 
				 && (statsInfo.mdkPktType == MDK_LAST_PKT)){
					//if were not expecting remote stats then we are done
					if (!(remoteStats & ENABLE_STATS_RECEIVE)) {
						rxComplete = TRUE;
					}

					//we have done with receive so can send stats
					if(remoteStats & ENABLE_STATS_SEND) {
						for (i = 0; i < MAX_TX_QUEUE; i++ )
						{
							for(statsLoop = 1; statsLoop < STATS_BINS; statsLoop++) {
								if((pLibDev->rx.rxStats[i][statsLoop].crcPackets > 0) ||
									(pLibDev->rx.rxStats[i][statsLoop].goodPackets > 0)) {
									sendStatsPkt(devNum, statsLoop, MDK_RX_STATS_PKT, statsInfo.addrPacket.octets);
								}
							}
						}
						sendStatsPkt(devNum, 0, MDK_RX_STATS_PKT, statsInfo.addrPacket.octets);
						statsSent = TRUE;
					}
				}
				else if((statsInfo.status2 & DESC_FRM_RCV_OK) 
					 && (statsInfo.mdkPktType >= MDK_TX_STATS_PKT) 
					 && (statsInfo.mdkPktType <= MDK_TXRX_STATS_PKT)) {
					rxComplete = mdkExtractRemoteStats(devNum, &statsInfo);
				}
				else if (statsInfo.mdkPktType == MDK_NORMAL_PKT) {
					if (enableCompare) {
						comparePktData(devNum, &statsInfo);
					}
					if (pLibDev->rx.enablePPM) {
						extractPPM(devNum, &statsInfo);
					}

					if(skipStats && (numStatsToSkip != 0)) {
						numStatsToSkip --;
					}
					else {
						mdkExtractRxStats(devNum, &statsInfo);
					}
 				}

				else if ((statsInfo.mdkPktType == MDK_PROBE_PKT) ||
						(statsInfo.mdkPktType == MDK_PROBE_LAST_PKT)) {
					//Want to ignore probe packets, do nothing

				}
				else {
					if(statsInfo.status2 & DESC_FRM_RCV_OK) {
						mError(devNum, EIO, "Device Number %d:A good matching packet with an unknown MDK_PKT type detected MDK_PKT: %d\n", devNum, 
							statsInfo.mdkPktType);
						{
							A_UINT32 iIndex;
							printf("Frame Info\n");
							for(iIndex=0; iIndex<statsInfo.frame_info_len; iIndex++) {
								printf("%X ", statsInfo.frame_info[iIndex]);
							}
							printf("\n");
							printf("PPM Data Info\n");
							for(iIndex=0; iIndex<statsInfo.ppm_data_len; iIndex++) {
								printf("%X ", statsInfo.ppm_data[iIndex]);
							}
							printf("\n");
						}
					}
					if (statsInfo.status2 & DESC_CRC_ERR)
					{
						pLibDev->rx.rxStats[statsInfo.qcuIndex][0].crcPackets++;
						pLibDev->rx.rxStats[statsInfo.qcuIndex][statsInfo.descRate].crcPackets++;
						pLibDev->rx.haveStats = 1;
					}
					else if (statsInfo.status2 & pLibDev->decryptErrMsk)
					{
						pLibDev->rx.rxStats[statsInfo.qcuIndex][0].decrypErrors++;
						pLibDev->rx.rxStats[statsInfo.qcuIndex][statsInfo.descRate].decrypErrors++;
						pLibDev->rx.haveStats = 1;
					}

					
				}
			}

			if(rxComplete) {
				break;
			}

			//get next descriptor to process
			statsInfo.descToRead += sizeof(MDK_ATHEROS_DESC);
			numDesc ++;
		}
		else {
			curTime = milliTime();
			if (curTime > (startTime+timeout)) {
				i = timeout;
				break;
			}
			mSleep(1);
			i++;
		}

	} while (i < timeout);

	milliTime();
	
	if((remoteStats & ENABLE_STATS_SEND) && !statsSent) {
		for( i = 0; i < MAX_TX_QUEUE; i++ )
		{
			for(statsLoop = 1; statsLoop < STATS_BINS; statsLoop++) {
				if((pLibDev->rx.rxStats[i][statsLoop].crcPackets > 0) ||
					(pLibDev->rx.rxStats[i][statsLoop].goodPackets > 0)) {
					sendStatsPkt(devNum, statsLoop, MDK_RX_STATS_PKT, statsInfo.addrPacket.octets);
				}
			}
			sendStatsPkt(devNum, 0, MDK_RX_STATS_PKT, statsInfo.addrPacket.octets);
		}
	}

	//cleanup
	ar5kInitData[pLibDev->ar5kInitIndex].pMacAPI->rxCleanupConfig(devNum);

	if(pLibDev->tx[queueIndex].txEnable) {
		//write back the retry value
		//REGW(devNum, F2_RETRY_LMT, pLibDev->tx[queueIndex].retryValue);	__TODO__
	}

	//do any other register cleanup required
	if(enableCompare) {
		free(statsInfo.pCompareData);
	}

	if ((i == timeout) && (rxComplete != TRUE))
	{
		mError(devNum, EIO, 
			"Device Number %d:rxDataBegin: timeout reached, without receiving all packets.  Number received = %lu\n", devNum,
			numDesc);
		ar5kInitData[pLibDev->ar5kInitIndex].pMacAPI->rxCleanupConfig(devNum);
	}

	return;
}

/**************************************************************************
* rxDataCompleteSG - Start reception : Adjustment for Signal Generators
*
*/
MANLIB_API void rxDataCompleteSG
(
 A_UINT32 devNum, 
 A_UINT32 waitTime, 
 A_UINT32 timeout, 
 A_UINT32 remoteStats,
 A_UINT32 enableCompare,
 A_UCHAR *dataPattern, 
 A_UINT32 dataPatternLength,
 A_UINT32 sgpacketnumber
)
{
	ISR_EVENT	event;
	A_UINT32	i, statsLoop, jj;
	A_UINT32	numDesc = 0;
	LIB_DEV_INFO *pLibDev = gLibInfo.pLibDevArray[devNum];
	RX_STATS_TEMP_INFO	statsInfo;
	A_BOOL		statsSent = FALSE;
	A_BOOL		rxComplete = FALSE;
	A_UINT16	queueIndex = pLibDev->selQueueIndex;
	A_UINT32	startTime;
	A_UINT32	curTime;
	A_BOOL		skipStats = FALSE;
	A_UINT16    numStatsToSkip = 0;		
	A_UINT32    tempBuff[2] = {0, 0};
//A_UINT16  junkSeqCounter;
//A_UINT16  junkErrCounter;
	A_BOOL      falconTrue = FALSE;
	A_UINT32    ppm_data_padding = PPM_DATA_SIZE;
	A_UINT32    status1_offset, status2_offset, status3_offset; // legacy status1 - datalen/rate, 
	                                                            // legacy status2 - done/error/timestamp
	                                                            // new with falcon status3 - rssi for 4 ant

        A_UINT32     temp_buff_ind;
//	A_UINT32     temp_reg_rd;
        A_UINT32     pktcount = 0;
        A_UINT32     pktmon = 0;
        A_UINT32     storVar;
// 

	falconTrue = isFalcon(devNum) || isDragon(devNum);

	if (falconTrue) {
		status1_offset = FIRST_FALCON_RX_STATUS_WORD;
		status2_offset = SECOND_FALCON_RX_STATUS_WORD;
		status3_offset = FALCON_ANT_RSSI_RX_STATUS_WORD;
		if (pLibDev->libCfgParams.chainSelect == 2) {
			ppm_data_padding = PPM_DATA_SIZE_FALCON_DUAL_CHAIN;
		} else {
			ppm_data_padding = PPM_DATA_SIZE_FALCON_SINGLE_CHAIN;
		}
	} else {
		status1_offset = FIRST_STATUS_WORD;
		status2_offset = SECOND_STATUS_WORD;
		status3_offset = status2_offset; // to avoid illegal value. should never be used besides multAnt chips
	}
     
	 //store register to restore later
	storVar = REGR(devNum, 0x803C);

	REGW(devNum, 0x803C, storVar | 0x00000005); 

	startTime = milliTime();
    timeout = timeout * 10;

#ifdef DEBUG_MEMORY
printf("Desc Base address = %x:RXDP=%x:RXE/RXD=%x\n", pLibDev->rx.descAddress, REGR(devNum, 0xc), REGR(devNum, 0x8));
memDisplay(devNum, pLibDev->rx.descAddress, 12);
printf("reg8000=%x:reg8004=%x:reg8008=%x:reg800c=%x:reg8014=%x\n", REGR(devNum, 0x8000), REGR(devNum, 0x8004), REGR(devNum, 0x8008), REGR(devNum, 0x800c), REGR(devNum, 0x8014));

#endif

	// wait for event
	event.valid = 0;
	event.ISRValue = 0;
	for (i = 0; i < waitTime; i++)
	{
		event = pLibDev->devMap.getISREvent(devNum);
		if (event.valid) {
			if(ar5kInitData[pLibDev->ar5kInitIndex].pMacAPI->isRxdescEvent(event.ISRValue)) {
				break;
			}
		}

		curTime = milliTime();
		if (curTime > (startTime+waitTime)) {
			i = waitTime;
			break;
		}
		mSleep(1);	
	}

#ifdef DEBUG_MEMORY
printf("waitTime = %d\n", waitTime);
printf("Desc Base address = %x:RXDP=%x:RXE/RXD=%x\n", pLibDev->rx.descAddress, REGR(devNum, 0xc), REGR(devNum, 0x8));
memDisplay(devNum, pLibDev->rx.descAddress, 12);
printf("reg8000=%x:reg8004=%x:reg8008=%x:reg800c=%x:reg8014=%x\n", REGR(devNum, 0x8000), REGR(devNum, 0x8004), REGR(devNum, 0x8008), REGR(devNum, 0x800c), REGR(devNum, 0x8014));

#endif
	
	// This is a special case to allow the script multitest.pl to send and receive between
	// two cards in the same machine.  A wait time of 1 will setup RX and exit
	// A second rxDataBegin will collect the statistics.
	if (waitTime == 1) {
		return;
	}
	else if ((i == waitTime) && (waitTime !=0)) {
		mError(devNum, EIO, "Device Number %d:rxDataBegin: nothing received within %d millisecs (waitTime)\n", devNum, waitTime);
		ar5kInitData[pLibDev->ar5kInitIndex].pMacAPI->rxCleanupConfig(devNum);
		return;
	}

	i = 0;
	memset(&statsInfo, 0, sizeof(RX_STATS_TEMP_INFO));
	for(statsLoop = 0; statsLoop < STATS_BINS; statsLoop++) {
		statsInfo.sigStrength[statsLoop].rxMinSigStrength = 127;
		if (falconTrue) {
			for (jj = 0; jj < 4; jj++ ) {
				statsInfo.multAntSigStrength[statsLoop].rxMinSigStrengthAnt[jj] = 127;
				statsInfo.multAntSigStrength[statsLoop].rxMaxSigStrengthAnt[jj] = -127;
			}
		}
	}

	if(remoteStats & SKIP_SOME_STATS) {
		//extract and set number to skip
		skipStats = 1;
		numStatsToSkip = (A_UINT16)((remoteStats & NUM_TO_SKIP_M) >> NUM_TO_SKIP_S);
	}

	if(pLibDev->rx.enablePPM) {
		for( i = 0; i < MAX_TX_QUEUE; i++ )
		{
			for(statsLoop = 0; statsLoop < STATS_BINS; statsLoop++) 
			{
				pLibDev->rx.rxStats[i][statsLoop].ppmMax = -1000;
				pLibDev->rx.rxStats[i][statsLoop].ppmMin = 1000;
			}
		}
	}

	statsInfo.descToRead = pLibDev->rx.descAddress;
	if (falconTrue) {
		statsInfo.descToRead &= FALCON_DESC_ADDR_MASK;
	}

	if (enableCompare) {
		//create a max size compare buffer for easy compare
		statsInfo.pCompareData = (A_UCHAR *)malloc(FRAME_BODY_SIZE);

		if(!statsInfo.pCompareData) {
			mError(devNum, ENOMEM, "Device Number %d:rxDataBegin: Unable to allocate memory for compare buffer\n", devNum);
			ar5kInitData[pLibDev->ar5kInitIndex].pMacAPI->rxCleanupConfig(devNum);
			return;
		}

		fillCompareBuffer(statsInfo.pCompareData, FRAME_BODY_SIZE, dataPattern, dataPatternLength);
	}	

	startTime=milliTime();
//	junkSeqCounter = 0;
//	junkErrCounter = 0;
	//sit in polling loop, looking for descriptors to be done.
	do {
		//read descriptor status words

	   	// Read descriptor at once
		fillRxDescAndFrame(devNum, &statsInfo);


// Ignore 2 descriptors for the setup delay
	if(numDesc == 0) {
		//extract and set number to skip
		skipStats = 1;
		numStatsToSkip = 2;
	}

/* Siva
		pLibDev->devMap.OSmemRead(devNum, statsInfo.descToRead + status2_offset, 
					(A_UCHAR *)&statsInfo.status2, sizeof(statsInfo.status2));
*/

		if (statsInfo.status2 & DESC_DONE) {
/* Siva
			pLibDev->devMap.OSmemRead(devNum, statsInfo.descToRead + status1_offset, 
					(A_UCHAR *)&statsInfo.status1, sizeof(statsInfo.status1));
			if (falconTrue) {
					pLibDev->devMap.OSmemRead(devNum, statsInfo.descToRead + status3_offset, 
						(A_UCHAR *)&statsInfo.status3, sizeof(statsInfo.status3));
			}
			pLibDev->devMap.OSmemRead(devNum, statsInfo.descToRead + BUFFER_POINTER, 
					(A_UCHAR *)&statsInfo.bufferAddr, sizeof(statsInfo.bufferAddr));
*/
			if (falconTrue) {
				statsInfo.bufferAddr &= FALCON_DESC_ADDR_MASK;
			}

			if (!(remoteStats & LEAVE_DESC_STATUS)) {
			    //zero out status
			    pLibDev->devMap.OSmemWrite(devNum, statsInfo.descToRead + status1_offset, 
						(A_UCHAR *)tempBuff, 8);
			}

//pLibDev->devMap.OSmemWrite(devNum, statsInfo.descToRead + status2_offset, 
//			(A_UCHAR *)&tempBuff, 4);


			statsInfo.descRate = descRate2bin((statsInfo.status1 >> BITS_TO_RX_DATA_RATE) & pLibDev->rxDataRateMsk);
			// Initialize loop variables
			statsInfo.badPacket = 0;
			statsInfo.gotHeaderInfo = FALSE; // TODO: FIX for multi buffer packet support
			statsInfo.illegalBuffSize = 0;
			statsInfo.controlFrameReceived = 0;
			statsInfo.mdkPktType = 0;

			// Increase buffer address for PPM
			if(pLibDev->rx.enablePPM) {
				statsInfo.bufferAddr += ppm_data_padding;
			}

			//reset our timeout counter
			i = 0;

			if (numDesc == pLibDev->rx.numDesc - 1) {
				//This is the final looped rx desc and done bit is set, we ran out of receive descriptors, 
				//so return with an error
				mError(devNum, ENOMEM, "Device Number %d:rxDataCompleteSG:  ran out of receive descriptors\n", devNum);
				break;
			}

			mdkExtractAddrAndSequence(devNum, &statsInfo);

// Reciving Packets count
	if ((statsInfo.status2 & DESC_DONE)) {
		pktcount = pktcount + 1;
	}

#ifdef DEBUG_MEMORY
printf("SNOOP::mdkPkt s1=%X:s2=%X:Type = %x\n", statsInfo.status1, statsInfo.status2, statsInfo.mdkPktType);
printf("SNOOP::Process packet:bP=%d:cFR=%d:iBS=%d\n", statsInfo.badPacket, statsInfo.controlFrameReceived, statsInfo.illegalBuffSize);
#endif
			//only process packets if things are good
			if ( !((statsInfo.status1 & DESC_MORE) || statsInfo.badPacke

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品国产三级国产专播品爱网 | 国产成人午夜视频| 日韩精品91亚洲二区在线观看| 亚洲婷婷国产精品电影人久久| 国产欧美精品一区| 欧美国产日产图区| 国产精品久久久久久久久免费相片 | 国产中文字幕精品| 激情文学综合网| 国产一区视频在线看| 国精产品一区一区三区mba视频| 蜜乳av一区二区| 美女视频黄久久| 激情五月激情综合网| 国产精品一区二区黑丝 | 欧美va日韩va| 久久综合久色欧美综合狠狠| 精品国产91亚洲一区二区三区婷婷| 日韩你懂的在线播放| 久久一日本道色综合| 久久综合给合久久狠狠狠97色69| 久久蜜桃一区二区| 欧美激情一区二区三区全黄| 国产精品国产三级国产| 亚洲裸体在线观看| 亚洲福利视频一区二区| 青青青爽久久午夜综合久久午夜| 久久超碰97人人做人人爱| 国产精品一区一区三区| 亚洲人成伊人成综合网小说| 欧美日韩一二区| 欧美精品一二三| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 精品亚洲porn| 成人av免费在线观看| 欧洲国内综合视频| 91精品国产91综合久久蜜臀| 久久久精品中文字幕麻豆发布| 国产精品久久久久一区二区三区共| 亚洲精品亚洲人成人网在线播放| 亚洲3atv精品一区二区三区| 激情六月婷婷综合| 成人黄色软件下载| 欧美嫩在线观看| 国产亚洲综合色| 亚洲精品视频自拍| 免费在线观看精品| 成人免费的视频| 欧美日韩国产区一| 久久久久久影视| 亚洲色图欧美偷拍| 麻豆久久久久久久| 91蜜桃免费观看视频| 日韩一区二区精品葵司在线| 国产精品电影一区二区三区| 亚洲va国产va欧美va观看| 国产成人午夜精品影院观看视频| 在线观看日韩电影| 久久久久久久久久美女| 欧美大片一区二区| 国产精品国产三级国产| 亚洲欧美激情插| 激情欧美日韩一区二区| 在线视频你懂得一区二区三区| 欧美一二三四在线| 亚洲精品成人少妇| 粉嫩蜜臀av国产精品网站| 日韩精品中文字幕一区| 国产成人激情av| 欧美日韩国产天堂| 成人免费在线视频| 国产一区二区视频在线| 在线视频欧美区| 国产精品麻豆欧美日韩ww| 人人超碰91尤物精品国产| 99久久久精品免费观看国产蜜| 精品国产91乱码一区二区三区| 亚洲一区二区偷拍精品| 成人免费毛片片v| 久久伊99综合婷婷久久伊| 亚洲超碰精品一区二区| 99久久777色| 国产精品视频线看| 国产精品亚洲一区二区三区妖精| 精品视频在线视频| 亚洲欧美成人一区二区三区| 国产999精品久久久久久绿帽| 欧美一区二区三区影视| 亚洲午夜精品17c| www.日韩av| 日韩av中文字幕一区二区| 欧美一二三区精品| 日韩精品五月天| 69堂亚洲精品首页| 美国十次了思思久久精品导航| 国产成人免费视频一区| 国产偷国产偷精品高清尤物 | 69av一区二区三区| 天天爽夜夜爽夜夜爽精品视频| 日韩一区二区三区三四区视频在线观看 | 日本成人在线看| 欧美日韩激情一区二区| 亚洲啪啪综合av一区二区三区| 成人黄色av网站在线| 欧美激情在线一区二区| 国产69精品久久99不卡| 久久这里只有精品6| 国产一区 二区| 久久精品人人做人人爽人人| 国产精品一二三区在线| 国产欧美一区二区精品忘忧草 | 欧美日韩一区二区三区视频| 一区二区三区在线视频观看58| 欧日韩精品视频| 亚洲高清久久久| 91精品国产综合久久婷婷香蕉 | 91网站黄www| 亚洲免费视频成人| 欧美亚洲一区二区在线观看| 亚洲国产美女搞黄色| 精品1区2区3区| 日本亚洲视频在线| 精品乱人伦一区二区三区| 韩国午夜理伦三级不卡影院| 国产三级久久久| 99精品欧美一区| 亚洲永久免费视频| 欧美一区二区在线不卡| 精品在线播放免费| 中文字幕成人av| 在线日韩av片| 日本在线播放一区二区三区| 欧美一区二区三区男人的天堂 | 7777精品伊人久久久大香线蕉的| 热久久国产精品| 久久久国际精品| 91视频免费观看| 石原莉奈在线亚洲二区| 2017欧美狠狠色| 国产日韩精品一区| 欧美国产成人精品| 国产精品私房写真福利视频| 免费欧美日韩国产三级电影| 国产在线不卡视频| 青草av.久久免费一区| 洋洋av久久久久久久一区| 亚洲精品成人悠悠色影视| 亚洲欧洲av另类| 亚洲蜜臀av乱码久久精品| 久久精品夜色噜噜亚洲aⅴ| 精品国产一区二区三区不卡| 精品国产精品网麻豆系列| 欧美激情一区在线| 99九九99九九九视频精品| 亚洲乱码国产乱码精品精可以看 | 一区二区三区电影在线播| 91精品一区二区三区久久久久久| 国产美女在线精品| 亚洲香肠在线观看| 国产日韩精品一区| 7777女厕盗摄久久久| 丁香六月久久综合狠狠色| 亚洲成人资源网| 国产精品色眯眯| 日韩一区二区不卡| 在线观看一区二区精品视频| 国产精品一区二区三区四区 | 91激情在线视频| 国产一区二三区| 亚洲va韩国va欧美va| 国产精品理论在线观看| 欧美一区二区三区公司| 色综合天天做天天爱| 国产在线视频不卡二| 日韩中文字幕区一区有砖一区 | 日韩一区二区三区在线| 日本道精品一区二区三区| 国产精品中文字幕一区二区三区| 婷婷综合五月天| 亚洲色图欧美偷拍| 国产三级精品在线| 亚洲精品在线一区二区| 欧美日韩国产一区二区三区地区| 成人av在线资源网| 精品一区二区三区免费毛片爱| 亚洲午夜免费视频| 欧美亚洲综合色| 日韩中文字幕1| 亚洲另类一区二区| 国产精品少妇自拍| 久久影院午夜论| 欧美大肚乱孕交hd孕妇| 欧美日韩成人综合在线一区二区| 婷婷亚洲久悠悠色悠在线播放| 国产一区二区三区在线看麻豆| 久久综合狠狠综合久久综合88 | 色综合久久中文字幕| 久久久国产精品麻豆| 久久国产精品99久久久久久老狼 | 国产一区二区视频在线|