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

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

?? art_if.c

?? Atheros AP Test with Agilent N4010A source code
?? C
?? 第 1 頁 / 共 5 頁
字號:
	A_UINT32 devNum,
	 A_UINT32 physAddr,
	 A_UINT32 length,
	 A_UCHAR  *buf
)
{
	 A_UINT32        *pAddr;
	A_UINT16 devIndex;
	devIndex = (A_UINT16)dev2drv(devNum);

	 /* check to see if the size will make us bigger than the send buffer */
	 if (length > MAX_BLOCK_BYTES) {
		 uiPrintf("Error: block size too large, can only write %x bytes\n", MAX_BLOCK_BYTES);
		 return(0);
	 }

	if (!configSetup.remote) {
#ifndef __ATH_DJGPPDOS__
		 /* write the memory */
		 if(hwMemWriteBlock(devIndex, buf, length,  &(physAddr)) == -1) {
			uiPrintf("Failed call to hwMemWriteBlock()\n");
			return(0);
		 }
#else
		 uiPrintf(" NOt Implemented in DOS Version \n");
#endif
		 pAddr = &physAddr;
	  } else {

		GlobalCmd.devNum = (A_INT8) devNum;
		/* create cmd structure and send command */
		GlobalCmd.cmdID = MEM_WRITE_BLOCK_CMD_ID;
		GlobalCmd.CMD_U.MEM_WRITE_BLOCK_CMD.physAddr = physAddr;
		GlobalCmd.CMD_U.MEM_WRITE_BLOCK_CMD.length = length;
		memcpy(GlobalCmd.CMD_U.MEM_WRITE_BLOCK_CMD.bytes, buf, length);


		if(!artSendCmd(&GlobalCmd,
						(sizeof(GlobalCmd.CMD_U.MEM_WRITE_BLOCK_CMD)+sizeof(GlobalCmd.cmdID) - MAX_BLOCK_BYTES + length),
					   (void **)&pAddr))
		{
			uiPrintf("Error: Unable to successfully send MEM_WRITE_BLOCK command\n");
			return 0;
		}
	   }
   return(*pAddr);
}


/**************************************************************************
* mem_write - Command for write a block of memory
*
* RETURNS: value write
*/
A_UINT32 art_memWrite
(
	A_UINT32 devNum,
	A_UINT32 physAddr,
	A_UCHAR  *bytesWrite,
	A_UINT32 length
)
{
	A_UINT32 ii, startAddr_ii, len_ii, arrayStart_ii;
	A_UINT32 retAddr=0;
	A_UINT32 ret;
	A_UINT16 devIndex = (A_UINT16)dev2drv(devNum);

   //uiPrintf("SNOOP::art_memWrite:devNum=%d:physAddr=%x:length=%d\n", devNum, physAddr, length);

	// Split the writes into blocks of 2048 bytes only if the memory is already allocated
	if (!physAddr) {
	   physAddr = art_memAlloc(length, 0, devNum);
	}
		ii = length;
		startAddr_ii= physAddr;
		arrayStart_ii=0;

		while( ii > 0)
		{
			  if(ii > MAX_MEM_CMD_BLOCK_SIZE) {
				  len_ii = MAX_MEM_CMD_BLOCK_SIZE;
			  } else {
				  len_ii = ii;
			  }
			  ret = mem_write_block_2048(devNum, startAddr_ii, len_ii, ((A_UCHAR *)bytesWrite+arrayStart_ii));
			  if (ret == 0) return 0;
			  if (retAddr == 0)  retAddr = ret;
			  startAddr_ii += len_ii;
			  ii -= len_ii;
			  arrayStart_ii += len_ii;
		}

	return retAddr;
}



/**************************************************************************
* reg_read - Command for reading a register
*
* RETURNS: value read
*/
A_UINT32 art_regRead
(
	A_UINT32 devNum,
	A_UINT32 regOffset
)
{
	A_UINT32	     *pRegValue, regReturn;
	A_UINT16 devIndex;
	devIndex = (A_UINT16)dev2drv(devNum);

	//sent_bytes=received_bytes=0;
	//uiPrintf("SNOOP::art_regRead:offset=%x:sent_bytes=%d:recd_bytes=%d\n", regOffset, sent_bytes, received_bytes);

	if (!configSetup.remote)
	{
		/* read the register */
	  if (thin_client) {
		#ifndef __ATH_DJGPPDOS__
					regReturn = hwMemRead32(devIndex, (globDrvInfo.pDevInfoArray[devIndex]->pdkInfo->aregPhyAddr[globDrvInfo.pDevInfoArray[devIndex]->pdkInfo->bar_select]) + regOffset);
		#endif
		//regReturn = hwMemRead32(devIndex, regOffset);
	  }
	  else {
		regReturn = REGR(devNum, regOffset);
	  }
	  pRegValue = &regReturn;
	}
	else
	{
		GlobalCmd.devNum = (A_INT8) devNum;
		/* create cmd structure and send command */
		GlobalCmd.cmdID = REG_READ_CMD_ID;
		GlobalCmd.CMD_U.REG_READ_CMD.readAddr = regOffset;
		if(!artSendCmd(&GlobalCmd,
						sizeof(GlobalCmd.CMD_U.REG_READ_CMD)+sizeof(GlobalCmd.cmdID),
						(void **)&pRegValue))
		{
			uiPrintf("Error: Unable to successfully send REG_READ command\n");
			return 0xdeadbeef;
		}
	}
//	q_uiPrintf("Register at offset %08lx: %08lx\n", regOffset, *pRegValue);
	//uiPrintf("SNOOP::AFTER art_regRead:offset=%x:sent_bytes=%d:recd_bytes=%d\n", regOffset, sent_bytes, received_bytes);

	//if(checkLibError(devNum, 1)) {
	//	return 0xdeadbeef;
	//}

	return(*pRegValue);
}

A_UINT32 art_hwReset(A_UINT32 devNum, A_UINT32 rMask) {

	A_UINT32	     *pRevIdValue;
	A_UINT16 devIndex;
	devIndex = (A_UINT16)dev2drv(devNum);

	//uiPrintf("SNOOP::art_hwReset:rMask=%x\n", rMask);

		GlobalCmd.devNum = (A_INT8) devNum;
		/* create cmd structure and send command */
		GlobalCmd.cmdID = M_HW_RESET_CMD_ID;
		GlobalCmd.CMD_U.HW_RESET_CMD.resetMask = (A_UINT8) rMask;
		if(!artSendCmd(&GlobalCmd, sizeof(GlobalCmd.CMD_U.HW_RESET_CMD)+sizeof(GlobalCmd.cmdID),
						(void **)&pRevIdValue))
		{
			uiPrintf("Error: Unable to successfully send HW_RESET command\n");
			return 0xdeadbeef;
		}
	if(checkLibError(devNum, 1)) {
		return 0xdeadbeef;
	}

	return(*pRevIdValue);

}

void art_pllProgram(A_UINT32 devNum, A_UINT32 turbo, A_UINT32 mode) {

	A_UINT32	     *pRevIdValue;
	A_UINT16 devIndex;
	devIndex = (A_UINT16)dev2drv(devNum);

		GlobalCmd.devNum = (A_INT8) devNum;
		/* create cmd structure and send command */
		GlobalCmd.cmdID = M_PLL_PROGRAM_CMD_ID;
		GlobalCmd.CMD_U.PLL_PROGRAM_CMD.turbo = (A_UINT8) turbo;
		GlobalCmd.CMD_U.PLL_PROGRAM_CMD.mode = (A_UINT8) mode;
		if(!artSendCmd(&GlobalCmd,
						sizeof(GlobalCmd.CMD_U.PLL_PROGRAM_CMD)+sizeof(GlobalCmd.cmdID),
						(void **)&pRevIdValue))
		{
			uiPrintf("Error: Unable to successfully send PLL_PROGRAM command\n");
		}
}

void art_pciWrite(A_UINT32 devNum, PCI_VALUES *pPciValues, A_UINT32 length) {
	A_UINT32 dataSize;

	GlobalCmd.devNum = (A_INT8) devNum;
	GlobalCmd.cmdID = M_PCI_WRITE_CMD_ID;
	GlobalCmd.CMD_U.PCI_WRITE_CMD.length = length;
	memcpy(GlobalCmd.CMD_U.PCI_WRITE_CMD.pPciValues, pPciValues, length * sizeof(PCI_VALUES));

	dataSize = sizeof(GlobalCmd.CMD_U.PCI_WRITE_CMD) - ((MAX_PCI_ENTRIES-length) * sizeof(PCI_VALUES));

	if (!artSendCmd(&GlobalCmd, sizeof(GlobalCmd.cmdID)+ dataSize, NULL))
	{
			uiPrintf("Error: Unable to successfully send PCI_WRITE command\n");
	}
}

A_UINT32 art_calCheck (A_UINT32 devNum, A_UINT32 enableCal, A_UINT32 timeout ) {
	A_UINT32	    *pRegValue;

	GlobalCmd.devNum = (A_INT8) devNum;
	GlobalCmd.cmdID = M_CAL_CHECK_CMD_ID;
	GlobalCmd.CMD_U.CAL_CHECK_CMD.enableCal = enableCal;
	GlobalCmd.CMD_U.CAL_CHECK_CMD.timeout = timeout;

	if (!artSendCmd(&GlobalCmd, sizeof(GlobalCmd.CMD_U.CAL_CHECK_CMD)+sizeof(GlobalCmd.cmdID), (void **)&pRegValue))
	{
			uiPrintf("Error: Unable to successfully send CAL_CHECK command\n");
			return(0xdeadbeef);
	}
		return(*pRegValue);


}

/**************************************************************************
* reg_write - User interface command for writing a register
*
*
* RETURNS: 1 if OK, 0 if error
*/
A_UINT32 art_regWrite
(
	A_UINT32 devNum,
	A_UINT32 regOffset,
	A_UINT32 regValue
)
{

	A_UINT16 devIndex = (A_UINT16)dev2drv(devNum);

	//sent_bytes=received_bytes=0;
	//uiPrintf("SNOOP::art_regWrite:offset=%x\n", regOffset);
	//uiPrintf("SNOOP::art_regWrite:offset=%x:sent_bytes=%d:recd_bytes=%d\n", regOffset, sent_bytes, received_bytes);

	if (!configSetup.remote)
	{
	if (thin_client) {
#ifndef __ATH_DJGPPDOS__
	   hwMemWrite32(devIndex, (globDrvInfo.pDevInfoArray[devIndex]->pdkInfo->aregPhyAddr[globDrvInfo.pDevInfoArray[devIndex]->pdkInfo->bar_select]) + regOffset, regValue);
#endif
	 }
	 else {
	   REGW(devNum,regOffset,regValue);
	 }
	}
	else
	{
		GlobalCmd.devNum = (A_INT8) devNum;
		/* create cmd structure and send command */
		GlobalCmd.cmdID = REG_WRITE_CMD_ID;
		GlobalCmd.CMD_U.REG_WRITE_CMD.writeAddr = regOffset;
		GlobalCmd.CMD_U.REG_WRITE_CMD.regValue = regValue;

		if(!artSendCmd(&GlobalCmd,
						sizeof(GlobalCmd.CMD_U.REG_WRITE_CMD)+sizeof(GlobalCmd.cmdID),
						NULL))
		{
			uiPrintf("Error: Unable to successfully send REG_WRITE command\n");
			return 0;
		}
	}
	//uiPrintf("SNOOP::AFTER art_regWrite:offset=%x:sent_bytes=%d:recd_bytes=%d\n", regOffset, sent_bytes, received_bytes);
	return 1;
}


void art_setResetParams
(
 A_UINT32   devNum,
 A_CHAR     *pFilename,
 A_BOOL		eePromLoad,
 A_BOOL		forceCfgLoad,
 A_UCHAR	mode,
 A_UINT16     initCodeFlag
)
{
	A_UINT32 *pRegValue;

	if (!configSetup.remote || !configSetup.remote_exec)
	{
		setResetParams(devNum,pFilename,eePromLoad, forceCfgLoad, mode, initCodeFlag);
	}
	else
	{
			// create cmd to send to client
		GlobalCmd.cmdID = M_SET_RESET_PARAMS_CMD_ID;
		GlobalCmd.devNum = (A_INT8) devNum;
		GlobalCmd.CMD_U.SET_RESET_PARAMS_CMD.eePromLoad = (A_UINT32)eePromLoad;
		GlobalCmd.CMD_U.SET_RESET_PARAMS_CMD.forceCfgLoad = (A_UINT32)forceCfgLoad;
		GlobalCmd.CMD_U.SET_RESET_PARAMS_CMD.mode = (A_UINT32)mode;
		GlobalCmd.CMD_U.SET_RESET_PARAMS_CMD.use_init = (A_UINT16)initCodeFlag;
		if (pFilename) strcpy(GlobalCmd.CMD_U.SET_RESET_PARAMS_CMD.fileName, pFilename);
		else GlobalCmd.CMD_U.SET_RESET_PARAMS_CMD.fileName[0] = '\0';

		if ( !artSendCmd(&GlobalCmd,
						 sizeof(GlobalCmd.CMD_U.SET_RESET_PARAMS_CMD)+sizeof(GlobalCmd.cmdID),
						(void **)&pRegValue)) {
			uiPrintf("Error: Unable to successfully send SET_RESET_PARAMS command to client!\n");
		}
	}
	checkLibError(devNum, 1);
}

A_UINT32 art_resetDevice
(
	A_UINT32 devNum,
	A_UCHAR *mac,
	A_UCHAR *bss,
	A_UINT32 freq,
	A_UINT32 turbo
)
{
//** the following added by ccshiang
	{
		double cf;

		AgN4010_GetProperty(AgN4010_PropName_CenterFrequency_MHz,&cf);
		if (freq > 10000) {
			if (freq != (A_UINT32) (cf * 10))
				AgN4010_SetProperty(AgN4010_PropName_CenterFrequency_MHz,(double) freq/10.0);
		}
		else {
			if (freq != (A_UINT32) cf)
				AgN4010_SetProperty(AgN4010_PropName_CenterFrequency_MHz,freq);
		}
	}
//** the above added by ccshiang
	//if a quarter channel has been requested, then add the flag onto turbo
	//do it here, so can contain the changes to one place
	if(configSetup.quarterChannel) {
		freq = freq * 10 + 25;
	}

	if(!configSetup.remote || !configSetup.remote_exec)
	{
			resetDevice(devNum, mac, bss, freq, turbo);
	}
	else
	{
		// create cmd to send to client
		GlobalCmd.cmdID = M_RESET_DEVICE_CMD_ID;
		GlobalCmd.devNum = (A_INT8) devNum;
		memcpy(GlobalCmd.CMD_U.RESET_DEVICE_CMD.mac, mac, 6);
		memcpy(GlobalCmd.CMD_U.RESET_DEVICE_CMD.bss, bss, 6);
		GlobalCmd.CMD_U.RESET_DEVICE_CMD.freq = freq;
		GlobalCmd.CMD_U.RESET_DEVICE_CMD.turbo = turbo;

		if (!artSendCmd(&GlobalCmd,
						sizeof(GlobalCmd.CMD_U.RESET_DEVICE_CMD)+sizeof(GlobalCmd.cmdID),
						NULL))
		{
			uiPrintf("Error: Unable to successfully send RESET_DEVICE_CMD command to client, exiting!!\n");
			closeEnvironment();
			exit(0);
		}
	}

	if(checkLibError(devNum, 1)) {
		uiPrintf("Error: resetDevice command was unsuccessful, exiting!!\n");
//		exit(0);
	}
	//printf("SNOOP: writing pll\n");
	//Sleep(5);
	//art_ap_reg_write(devNum, 0x0c000014, 0x502c);
	//printf("SNOOP: pll written\n");
	//Sleep(10);
	return 1;
}

void art_getDeviceInfo
(
 A_UINT32 devNum,
 SUB_DEV_INFO *devStruct
)
{
	A_UCHAR  *pReadValues;		  /* pointer to the values that were read */

	if (!configSetup.remote || !configSetup.remote_exec)
	{
		getDeviceInfo(devNum, devStruct);
	}
	else {
				// create cmd to send to client
		GlobalCmd.cmdID = M_GET_DEVICE_INFO_CMD_ID;
		GlobalCmd.devNum = (A_INT8) devNum;

		if ( !artSendCmd(&GlobalCmd, sizeof(GlobalCmd.cmdID),
						(void **)&pReadValues))
		{
				uiPrintf("Error: Unable to successfully send GET_DEVICE_INFO_CMD command to client!\n");
				return;
		}
		if(checkLibError(devNum, 1)) return;
		memcpy((void *)devStruct,(void *)pReadValues,sizeof(SUB_DEV_INFO));
	}
	checkLibError(devNum, 1);
}

A_UINT32 art_eepromRead
(
	A_UINT32  devNum,
	A_UINT32 eepromOffset
)
{
	A_UINT32 	*pRegValue;
	A_UINT32	eepromValue;

	if (!configSetup.remote)
	{
		eepromValue = eepromRead(devNum, eepromOffset);
	}
	else
	{
		// create cmd to send to client
		GlobalCmd.cmdID = M_EEPROM_READ_CMD_ID;
		GlobalCmd.devNum = (A_INT8) devNum;
		GlobalCmd.CMD_U.EEPROM_READ_CMD.offset	= eepromOffset;

		if ( !artSendCmd(&GlobalCmd,
						sizeof(GlobalCmd.CMD_U.EEPROM_READ_CMD)+sizeof(GlobalCmd.cmdID),
						(void **)&pRegValue))
		{
				uiPrintf("Error: Unable to successfully send EEPROM_READ_CMD command to client!\n");
				//printf("IF EEPRO< DEAD \n" );
				return 0xdeadbeef;
		}
		eepromValue = *pRegValue;
		//printf("SNOOP::art_eepromRead::eepromValue=%x:*pRegValue=%x\n", eepromValue, *pRegValue);
	}
	//printf("SNOOP::art_eepromRead::eepromValue=%x:*pRegValue=%x\n", eepromValue, *pRegValue);
	if(checkLibError(devNum, 1)) {
		return 0xdeadbeef;
	}
	return eepromValue;
}

void art_eepromWrite
(
	A_UINT32 devNum,
	A_UINT32 eepromOffset,
	A_UINT32 eepromValue
)
{
	if (!configSetup.remote)
	{
			eepromWrite(devNum, eepromOffset, eepromValue);
	}
	else
	{
		// create cmd to send to client
		GlobalCmd.cmdID = M_EEPROM_WRITE_CMD_ID;
		GlobalCmd.devNum = (A_INT8) devNum;
		GlobalCmd.CMD_U.EEPROM_WRITE_CMD.offset = eepromOffset;
		GlobalCmd.CMD_U.EEPROM_WRITE_CMD.value = eepromValue;

		if (!artSendCmd(&GlobalCmd,
						sizeof(GlobalCmd.CMD_U.EEPROM_WRITE_CMD)+sizeof(GlobalCmd.cmdID),
						NULL))
		{
			uiPrintf("Error: Unable to successfully send EEPROM_WRITE_CMD command to client!\n");
		}
	}
	checkLibError(devNum, 1);
}

static A_INT32 art_eepromWriteBlock_256
(
	A_UINT32 devNum,
	A_UINT32 startOffset,
	A_UINT32 length,
	A_UINT32 *buf
)
{
	int ii;
	if (!configSetup.remote) {
		eepromWriteBlock(devNum,startOffset,length,buf);
	} else {
		/* setup the command struct to send */
		GlobalCmd.cmdID = M_EEPROM_WRITE_BLOCK_CMD_ID;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩精品资源二区在线| 日韩一区二区三区电影| 日本不卡123| 亚洲图片另类小说| 欧美α欧美αv大片| 欧美性生活久久| 国产91在线观看丝袜| 免费国产亚洲视频| 亚洲国产精品一区二区尤物区| 久久久国产精品麻豆| 欧美一区二区大片| 欧洲一区在线电影| av电影在线不卡| 成人小视频在线观看| 精品一区免费av| 午夜精品久久久久久久99水蜜桃| 中文字幕av一区二区三区免费看| 日韩免费看网站| 欧美肥胖老妇做爰| 欧美日韩精品系列| 欧美影院一区二区三区| 91麻豆国产香蕉久久精品| 国产91精品久久久久久久网曝门| 老司机精品视频一区二区三区| 亚洲成人777| 亚洲成a人片在线不卡一二三区| 中文字幕欧美日本乱码一线二线| 久久综合网色—综合色88| 日韩欧美中文一区| 日韩一区二区麻豆国产| 8x8x8国产精品| 欧美日韩一区在线| 欧美精品一卡两卡| 欧美日高清视频| 欧美日韩一级二级三级| 欧美三级视频在线播放| 欧美高清hd18日本| 在线播放一区二区三区| 3751色影院一区二区三区| 欧美日韩成人一区| 欧美一区二区三区啪啪| 日韩视频一区二区在线观看| 欧美一区二区三级| 精品久久久久久综合日本欧美| 日韩小视频在线观看专区| 91精品国产综合久久久久久久 | 91视频国产观看| 91啪九色porn原创视频在线观看| 波波电影院一区二区三区| 成人av午夜电影| 色综合久久中文综合久久牛| 色天天综合久久久久综合片| 欧美综合一区二区| 欧美高清激情brazzers| 欧美xxx久久| 久久精品一区四区| 亚洲人成影院在线观看| 亚洲午夜久久久久久久久电影院| 亚洲国产精品尤物yw在线观看| 日本成人在线视频网站| 国产精品一二三四区| 成人av资源网站| 欧美三级视频在线| 欧美videofree性高清杂交| 国产精品三级视频| 樱花影视一区二区| 日韩高清一级片| 国产精品香蕉一区二区三区| 一本久道中文字幕精品亚洲嫩| 欧美日韩亚洲高清一区二区| 日韩精品一区二区三区中文不卡| 久久精品亚洲麻豆av一区二区 | 日韩成人免费在线| 国产伦精品一区二区三区视频青涩| 不卡av在线网| 7777精品伊人久久久大香线蕉最新版| 欧美一区二区三区视频在线| 国产精品丝袜一区| 亚洲成av人片在线观看无码| 国产精品中文字幕日韩精品 | 久久精品亚洲精品国产欧美| 亚洲欧美偷拍另类a∨色屁股| 日韩高清在线一区| 99久久国产综合精品麻豆| 8v天堂国产在线一区二区| 中文av字幕一区| 日日骚欧美日韩| av成人免费在线观看| 欧美一区二区三区视频| 亚洲欧美自拍偷拍色图| 免费成人你懂的| 日本韩国精品在线| 久久综合国产精品| 天堂成人免费av电影一区| 成人国产精品免费网站| 欧美成人福利视频| 一区二区三区在线播放| 国产精品中文字幕日韩精品| 欧美精选午夜久久久乱码6080| 国产精品毛片无遮挡高清| 蜜臀av一级做a爰片久久| 91福利国产精品| 国产精品三级av| 国产在线精品国自产拍免费| 欧美精品xxxxbbbb| 日韩美女久久久| 成人午夜在线播放| 精品国产凹凸成av人网站| 亚洲成av人影院| 色偷偷久久人人79超碰人人澡| 久久男人中文字幕资源站| 日本亚洲欧美天堂免费| 在线观看av一区| 成人欧美一区二区三区小说 | 国产精品白丝在线| 久久99精品国产麻豆婷婷洗澡| 在线视频国产一区| 最新成人av在线| 成人亚洲精品久久久久软件| 久久精品无码一区二区三区| 久久超碰97人人做人人爱| 91麻豆精品91久久久久久清纯 | 中文字幕av一区 二区| 国产精品影视在线观看| 欧美v国产在线一区二区三区| 日韩av二区在线播放| 欧美人狂配大交3d怪物一区| 夜色激情一区二区| 色欧美乱欧美15图片| 亚洲少妇最新在线视频| 91麻豆精品视频| 一区二区三区欧美激情| 99久久久久久| 亚洲精品乱码久久久久久久久| 成人国产电影网| 亚洲婷婷在线视频| 色婷婷综合久久久久中文一区二区| 国产精品久久看| 91污在线观看| 亚洲一区影音先锋| 欧美精品精品一区| 日本不卡中文字幕| 精品日本一线二线三线不卡 | 欧美日韩黄视频| 五月婷婷欧美视频| 日韩免费看的电影| 国产二区国产一区在线观看| 国产欧美日韩三区| 91麻豆6部合集magnet| 亚洲成人在线网站| 欧美一二三四区在线| 国产精品系列在线播放| 国产精品嫩草影院av蜜臀| 一本大道av伊人久久综合| 亚洲一区二区3| 91精品婷婷国产综合久久竹菊| 免费观看久久久4p| 久久精品亚洲精品国产欧美| 成人av网站在线| 亚洲欧美日韩国产另类专区| 欧美色图片你懂的| 久草精品在线观看| 中文字幕一区二区三区在线观看 | 欧美电视剧免费全集观看| 国产高清一区日本| 亚洲精品伦理在线| 日韩一区二区麻豆国产| 不卡电影一区二区三区| 亚洲福利国产精品| 久久青草国产手机看片福利盒子| 国产成人精品三级麻豆| 一区二区欧美精品| 日韩视频在线你懂得| 成人毛片视频在线观看| 亚洲成人激情社区| 国产色婷婷亚洲99精品小说| 色噜噜偷拍精品综合在线| 九九国产精品视频| 亚洲综合在线免费观看| 欧美一级免费大片| 99国产精品视频免费观看| 奇米精品一区二区三区在线观看一| 久久日韩精品一区二区五区| 色国产精品一区在线观看| 精品一区二区三区日韩| 伊人一区二区三区| 久久精品视频在线看| 欧美日韩国产精选| 波多野结衣亚洲一区| 毛片一区二区三区| 亚洲乱码国产乱码精品精的特点| 精品日产卡一卡二卡麻豆| 欧洲一区二区三区在线| 东方aⅴ免费观看久久av| 日韩成人免费在线| 一区二区在线观看视频在线观看| 精品成人免费观看| 欧美日韩国产欧美日美国产精品| 成人av在线资源网| 狠狠v欧美v日韩v亚洲ⅴ|