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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? mdata.c

?? Atheros AP Test with Agilent N4010A source code
?? C
?? 第 1 頁 / 共 5 頁
字號:
		}
		else {
			localDescPtr->nextPhysPtr = falconAddrMod | (descAddress + sizeof(MDK_ATHEROS_DESC));
		}
		//update the buffer size, and set interrupt for first descriptor
		localDescPtr->hwControl[1] = pLibDev->rx.bufferSize;
		if (i == 0) {	
			 localDescPtr->hwControl[1] |= DESC_RX_INTER_REQ;
		}
//		else if ((i == (numDesc  - 1)) && (mode == RX_FIXED_NUMBER))
//		{
//			 localDescPtr->hwControl[1] |= DESC_RX_INTER_REQ;
//		}
		
		localDescPtr->hwControl[0] = 0;		

		localDescPtr->hwStatus[0] = 0;
		localDescPtr->hwStatus[1] = 0;

		localDescPtr->hwExtra[0] = 0; // falcon rx status word 3

		//writeDescriptor(devNum, descAddress, localDescPtr);
		zeroDescriptorStatus(devNum, localDescPtr, pLibDev->swDevID);

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

		if(pLibDev->rx.overlappingDesc) {
			bufferAddress += (sizeof(MDK_PACKET_HEADER) + sizeof(WLAN_DATA_MAC_HEADER3) + 0x22  + (enablePPM ? ppm_data_padding : 0));
			buffAddrIncrement = (sizeof(MDK_PACKET_HEADER) + sizeof(WLAN_DATA_MAC_HEADER3) + 0x22  + (enablePPM ? ppm_data_padding : 0));
		} else {
			bufferAddress += pLibDev->rx.bufferSize;
			buffAddrIncrement = pLibDev->rx.bufferSize;
		}
	}

    if (pLibDev->devMap.remoteLib) {
		lastDesc = LAST_DESC_LOOP << DESC_INFO_LAST_DESC_BIT_START;
		intrBit = DESC_RX_INTER_REQ_START <<  DESC_OP_INTR_BIT_START;

        if (!isFalcon(devNum) && !isDragon(devNum)) {
		   descOp = intrBit | 0 | (2 << DESC_OP_WORD_OFFSET_BIT_START);
        }
        else{
		   descOp = intrBit | 0 | (3 << DESC_OP_WORD_OFFSET_BIT_START);
        }

		pLibDev->devMap.r_createDescriptors(devNum, pLibDev->rx.descAddress, \
							lastDesc |  pLibDev->rx.numDesc |  \
							(sizeof(MDK_ATHEROS_DESC)/sizeof(A_UINT32) << DESC_INFO_NUM_DESC_WORDS_BIT_START), \
							buffAddrIncrement | (1 << BUF_ADDR_INC_CLEAR_BUF_BIT_START), \
							descOp, \
							(A_UINT32 *)localDescBuffer);
	}
	else {
	    //write all the descriptors in one shot
	    writeDescriptors(devNum, pLibDev->rx.descAddress, localDescBuffer, pLibDev->rx.numDesc);
	}
	free(localDescBuffer);

	ar5kInitData[pLibDev->ar5kInitIndex].pMacAPI->setPPM(devNum, enablePPM);

	pLibDev->rx.rxEnable = 1;

	return;
}


/**************************************************************************
* rxDataBegin - Start and complete reception
*
*/
MANLIB_API void rxDataBegin
(
 A_UINT32 devNum, 
 A_UINT32 waitTime, 
 A_UINT32 timeout, 
 A_UINT32 remoteStats,
 A_UINT32 enableCompare,
 A_UCHAR *dataPattern, 
 A_UINT32 dataPatternLength
)
{
	LIB_DEV_INFO *pLibDev = gLibInfo.pLibDevArray[devNum];
	pLibDev->mdkErrno = 0;
	rxDataStart(devNum);
	if (pLibDev->mdkErrno == 0) {
		rxDataComplete(devNum, waitTime, timeout, remoteStats, enableCompare, dataPattern, dataPatternLength);
	}
}

/**************************************************************************
* rxDataBeginSG - Start and complete reception - signal generator accomodation
*
*/
MANLIB_API void rxDataBeginSG
(
 A_UINT32 devNum, 
 A_UINT32 waitTime, 
 A_UINT32 timeout, 
 A_UINT32 remoteStats,
 A_UINT32 enableCompare,
 A_UCHAR *dataPattern, 
 A_UINT32 dataPatternLength,
 A_UINT32 sgpacketnumber
)
{
	LIB_DEV_INFO *pLibDev = gLibInfo.pLibDevArray[devNum];
	pLibDev->mdkErrno = 0;
	rxDataStart(devNum);
	if (pLibDev->mdkErrno == 0) {
		rxDataCompleteSG(devNum, waitTime, timeout, remoteStats, enableCompare, dataPattern, dataPatternLength, sgpacketnumber);
	}
}

/**************************************************************************
* rxDataBegin - Start and complete reception
*
*/
MANLIB_API void rxDataBeginFixedNumber
(
 A_UINT32 devNum, 
 A_UINT32 timeout, 
 A_UINT32 remoteStats,
 A_UINT32 enableCompare,
 A_UCHAR *dataPattern, 
 A_UINT32 dataPatternLength
)
{
	rxDataStart(devNum);
	rxDataCompleteFixedNumber(devNum, timeout, remoteStats, enableCompare, dataPattern, dataPatternLength);
}


/**************************************************************************
* rxDataStart - Start reception
*
*/
MANLIB_API void rxDataStart
(
 A_UINT32 devNum
)
{
	LIB_DEV_INFO *pLibDev = gLibInfo.pLibDevArray[devNum];
	
	if (checkDevNum(devNum) == FALSE) {
		mError(devNum, EINVAL, "Device Number %d:rxDataBegin\n", devNum);
		return;
	}

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

	if (!pLibDev->rx.rxEnable) {
		mError(devNum, EILSEQ, 
			"Device Number %d:rxDataBegin: rxDataSetup must successfully complete before running rxDataBegin\n", devNum);
		return; 
	}
	
	// zero out the stats structure
	memset(&(pLibDev->rx.rxStats[0][0]), 0, sizeof(RX_STATS_STRUCT) * STATS_BINS * MAX_TX_QUEUE);
	pLibDev->rx.haveStats = 0;

	// zero out remote transmit stats
//	if(remoteStats & ENABLE_STATS_RECEIVE) {
//		memset(&(pLibDev->txRemoteStats[0][0]), 0, sizeof(TX_STATS_STRUCT) * STATS_BINS * MAX_TX_QUEUE);
//	}

	// program registers
	ar5kInitData[pLibDev->ar5kInitIndex].pMacAPI->rxBeginConfig(devNum);
}


/**************************************************************************
* rxDataComplete - Start reception
*
*/
MANLIB_API void rxDataComplete
(
 A_UINT32 devNum, 
 A_UINT32 waitTime, 
 A_UINT32 timeout, 
 A_UINT32 remoteStats,
 A_UINT32 enableCompare,
 A_UCHAR *dataPattern, 
 A_UINT32 dataPatternLength
)
{
	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


	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
	}

	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);
	   	//



/* 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:rxDataComplete:  ran out of receive descriptors\n", devNum);
				break;
			}

			mdkExtractAddrAndSequence(devNum, &statsInfo);

			
#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

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久五月婷婷| 欧美日韩国产一级| 欧美午夜精品久久久| 欧美日韩免费一区二区三区| 精品欧美久久久| 日韩美女视频一区| 日韩av一级电影| 成人精品免费看| 欧美视频一区二区在线观看| 久久亚洲免费视频| 一区二区三区在线影院| 美女国产一区二区三区| 成人av资源在线| 91精品国产综合久久小美女| 久久久.com| 天堂蜜桃91精品| 成人黄色小视频在线观看| 欧美视频精品在线观看| 久久免费美女视频| 亚洲福利视频三区| 不卡欧美aaaaa| 欧美一级淫片007| 一区视频在线播放| 日日摸夜夜添夜夜添亚洲女人| 国产精品自拍一区| 欧美日本免费一区二区三区| 欧美国产精品中文字幕| 日韩av中文字幕一区二区三区| 成人av午夜影院| 精品国产成人系列| 亚洲丶国产丶欧美一区二区三区| 国产成人啪午夜精品网站男同| 欧美三级欧美一级| 国产精品水嫩水嫩| 美女尤物国产一区| 欧美日韩久久久一区| 国产女同性恋一区二区| 欧美aaaaaa午夜精品| 在线一区二区三区| 欧美疯狂做受xxxx富婆| 日韩一级欧美一级| 亚洲精品高清视频在线观看| 国产乱理伦片在线观看夜一区| 欧美日韩在线亚洲一区蜜芽| 国产精品私房写真福利视频| 韩国女主播成人在线观看| 欧美欧美欧美欧美首页| 一区二区三区中文字幕电影 | 色婷婷国产精品| 久久五月婷婷丁香社区| 日本午夜精品一区二区三区电影| 91浏览器打开| 国产欧美日韩三区| 狠狠色综合播放一区二区| 欧美精品色一区二区三区| 亚洲精选视频在线| 99视频精品在线| 亚洲国产精品二十页| 国产一区二区三区久久悠悠色av| 欧美一区二区三区日韩| 亚洲午夜羞羞片| 91精品办公室少妇高潮对白| 亚洲日本护士毛茸茸| 成人黄页在线观看| 久久久久久电影| 亚洲精品免费看| 2020国产精品自拍| 久久机这里只有精品| 制服丝袜一区二区三区| 午夜精品视频一区| 精品视频1区2区| 午夜精品视频一区| 91麻豆精品国产91久久久久久久久 | 中文字幕亚洲区| 99久久精品国产一区二区三区| 国产精品色呦呦| 97se亚洲国产综合自在线不卡| 国产精品久久久久国产精品日日| 不卡电影免费在线播放一区| 国产精品传媒入口麻豆| 成人精品鲁一区一区二区| 中文字幕亚洲成人| 色综合久久综合中文综合网| 亚洲日本在线看| 91国偷自产一区二区开放时间 | 国产精品女人毛片| 成人性生交大片免费看中文| 国产精品福利在线播放| 亚洲乱码国产乱码精品精可以看| 国产资源精品在线观看| 国产亚洲欧美一区在线观看| 高清不卡一二三区| 日韩一区欧美一区| 欧美视频三区在线播放| 丝袜a∨在线一区二区三区不卡| 欧美一区二区三区在线观看视频 | 精品对白一区国产伦| 国产精品99久久久久久宅男| 国产精品麻豆久久久| 色婷婷综合久久久| 日韩国产欧美在线播放| 精品福利一二区| 不卡的电影网站| 亚洲成人777| 精品久久国产老人久久综合| 成人做爰69片免费看网站| 亚洲美腿欧美偷拍| 9191成人精品久久| 国产a久久麻豆| 亚洲激情在线播放| 日韩精品一区二区三区在线播放| 国产成人精品一区二区三区网站观看| 亚洲日本一区二区| 日韩精品最新网址| 不卡的av电影在线观看| 日韩中文字幕亚洲一区二区va在线| 久久亚洲精华国产精华液| 色94色欧美sute亚洲线路一久 | 日韩欧美高清在线| 91小视频免费观看| 老鸭窝一区二区久久精品| 中文字幕高清一区| 51精品国自产在线| 成人毛片在线观看| 免费在线观看一区二区三区| 成人欧美一区二区三区黑人麻豆| 欧美军同video69gay| 成人app网站| 美脚の诱脚舐め脚责91| 亚洲视频香蕉人妖| 精品国产91九色蝌蚪| 在线欧美日韩国产| 国产风韵犹存在线视精品| 香蕉加勒比综合久久| 国产精品蜜臀在线观看| 欧美一区二区三区四区视频| 91蜜桃在线观看| 国产一区二区三区观看| 午夜精品爽啪视频| 亚洲三级免费观看| 久久久久九九视频| 91精品国产综合久久婷婷香蕉| 91在线精品一区二区三区| 精品亚洲国产成人av制服丝袜| 亚洲福利一区二区三区| 国产精品久久久久影院| 精品久久久久久无| 欧美疯狂做受xxxx富婆| 在线观看免费亚洲| 高清在线不卡av| 久久99精品视频| 日本va欧美va欧美va精品| 一区二区三区在线视频免费 | 92国产精品观看| 国产成人精品影视| 精品一区二区综合| 舔着乳尖日韩一区| 亚洲最大色网站| 亚洲日本成人在线观看| 中文字幕av一区二区三区免费看| 日韩欧美区一区二| 91精品国产91久久久久久最新毛片 | 久久久99久久| 欧美大片一区二区| 91精品国产品国语在线不卡| 欧美色精品在线视频| 色妞www精品视频| a级高清视频欧美日韩| 国产成人av福利| 国产激情偷乱视频一区二区三区| 麻豆91免费看| 蜜桃av噜噜一区二区三区小说| 天天综合色天天综合| 亚洲高清免费视频| 亚洲成人免费看| 亚洲成人7777| 午夜精品国产更新| 图片区小说区国产精品视频| 石原莉奈在线亚洲二区| 日韩精品一级二级| 日本不卡一二三| 老色鬼精品视频在线观看播放| 蜜臀av性久久久久蜜臀aⅴ| 日本视频一区二区三区| 日本伊人色综合网| 男男成人高潮片免费网站| 麻豆精品视频在线观看免费| 美洲天堂一区二卡三卡四卡视频| 蜜桃一区二区三区在线观看| 免费观看久久久4p| 国产麻豆精品久久一二三| 高清不卡一区二区| 99久久99久久精品免费观看| 91一区二区在线观看| 欧美在线观看视频在线| 5858s免费视频成人| 欧美大片一区二区三区| 国产日韩欧美激情| 国产精品国产a| 亚洲国产日韩综合久久精品|