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

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

?? hw_routines.c

?? Atheros AP Test with Agilent N4010A source code
?? C
?? 第 1 頁 / 共 3 頁
字號:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <memory.h>
#include <assert.h>
#include <time.h>

#ifdef LINUX
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/time.h>
#include <sys/mman.h>
#include <sys/ioctl.h>
#include <fcntl.h>
#include <stdarg.h>
#include <signal.h>
#endif

#ifdef ANWI
#include <windows.h>
#include <malloc.h>
#include <process.h>
#include <winioctl.h>
#ifndef LEGACY
#include <initguid.h>
#include <setupapi.h>
#endif

#endif

#ifdef __ATH_DJGPPDOS__
#include <dos.h>
#include <io.h>
//#include <limits.h>
//#include <stdio.h>
//#include <stdlib.h>
//#include <string.h>
#include <stdarg.h>
#include <unistd.h>

#define __int64	long long
#define HANDLE long
typedef unsigned long DWORD;
#define Sleep	delay
#endif	// #ifdef __ATH_DJGPPDOS__

#include "wlantype.h"
#include "dw16550reg.h"

#include "athreg.h"

#include "common_hw.h"
#include "dk_mem.h"

#ifdef SIM
#include "sim.h"
#endif
#include "dk_common.h"

/////////////////////////////////////////////////////////////////////////////
//GLOBAL VARIABLES

DRV_VERSION_INFO driverVer;

static FILE     *logFile;  /* file handle of logfile */
static FILE     *yieldLogFile;  /* file handle of yieldLogfile */
static A_BOOL   logging;   /* set to 1 if a log file open */
static A_BOOL   enablePrint = 1;
static A_BOOL   yieldLogging = 0;   /* set to 1 if a log file open */
static A_BOOL   yieldEnablePrint = 1;
static A_UINT16 quietMode; /* set to 1 for quiet mode, 0 for not */
static A_UINT16 yieldQuietMode; /* set to 1 for quiet mode, 0 for not */
static A_BOOL	driverOpened;

A_UCHAR			*pbuffMapBytes=NULL;
A_UINT16		*pnumBuffs=NULL;

MDK_WLAN_DRV_INFO	globDrvInfo;				/* Global driver info */

/////////////////////////////////////////////////////////////////////////////
// FORWARD DECLARATIONS
void        deviceCleanup(A_UINT16 devIndex);
DLL_EXPORT void dk_quiet ( A_UINT16 Mode);

// Extern declarations
extern A_UINT16    driverOpen();
extern A_STATUS connectSigHandler();
extern void close_device(MDK_WLAN_DEV_INFO *pdevInfo);
extern void close_driver();
extern A_STATUS get_device_client_info(MDK_WLAN_DEV_INFO *pdevInfo, PDRV_VERSION_INFO pdrv, PCLI_INFO cliInfo);


/**************************************************************************
* envInit - performs any intialization needed by the environment
*
* For the windows NT hardware environment, need to open the driver and
* perform any other initialization required by it
*
* RETURNS: A_OK if it works, A_ERROR if not
*/
#ifdef ART_BUILD
A_STATUS envInit ( A_BOOL debugMode, A_BOOL openDriver)
#else
A_STATUS envInit ( A_BOOL debugMode)
#endif
{
	A_UINT16 i;
#ifdef ART_BUILD
#else
//Define openDriver as it would not be defined for MDK
   A_BOOL openDriver=1;
#endif

	// quiet our optional uiPrintfs...
	dk_quiet((A_UINT16)(debugMode ? 0 : 1));

#if defined(LINUX ) && !defined(SOC_LINUX)
   ansi_init();
#endif

	// open a handle to the driver
	// need not open the driver if art is controlling a remote client
	driverOpened = 0;
	if (openDriver) {
		if (!driverOpen()) {
			return A_ERROR;
		}
		driverOpened = 1;
	}

	globDrvInfo.devCount = 0;

	// set all the devInfo pointers to null
	for(i = 0; i < WLAN_MAX_DEV; i++)
		globDrvInfo.pDevInfoArray[i] = NULL;

	return connectSigHandler();
}


void envCleanup
	(
	A_BOOL closeDriver
	)
{
	A_UINT16 i;

	//uiPrintf("SNOOP:::envCleanup called \n");
#ifdef SIM
	signal(SIGINT, SIG_DFL);
#endif

	// cleanup all the devInfo structures
	for ( i = 0; i < WLAN_MAX_DEV; i++ ) {
		if ( globDrvInfo.pDevInfoArray[i] ) {
			deviceCleanup(i);
		 }
	}

	globDrvInfo.devCount = 0;

	// close the handle to the driver
	if ((closeDriver) && (driverOpened)) {
			close_driver();
		driverOpened = 0;
	}
}

#ifndef SOC_LINUX
void hwInit ( MDK_WLAN_DEV_INFO *pdevInfo, A_UINT32 resetMask)
{
	A_UINT32    reg=0, i;
	A_UINT32    devmapRegAddress = pdevInfo->pdkInfo->f2MapAddress;
	A_UINT16 devIndex = (A_UINT16)pdevInfo->pdkInfo->devIndex;
	A_UINT16 hwDevId;

	hwDevId = (A_UINT16)( (hwCfgRead32(devIndex, 0) >> 16) & 0xffff);

	/* Bring out of sleep mode */
	hwMemWrite32(devIndex, F2_SCR + devmapRegAddress, F2_SCR_SLE_FWAKE);
	mSleep(10);

	reg = 0;
	if (hwDevId && 0xff) {
	  if (resetMask & MAC_RESET) {
		reg = reg | F2_RC_MAC | F2_RC_BB | F2_RC_RESV0;
	  }
	  if (resetMask & BB_RESET) {
		reg = reg | F2_RC_RESV1;
	  }
	  if (resetMask & BUS_RESET) {
		reg = reg | F2_RC_PCI;
	  }
	}
	else {
	  if (resetMask & MAC_RESET) {
		reg = reg | F2_RC_MAC;
	  }
	  if (resetMask & BB_RESET) {
		reg = reg | F2_RC_BB;
	  }
	  if (resetMask & BUS_RESET) {
		reg = reg | F2_RC_PCI;
	  }
	}

	hwMemRead32(devIndex, F2_RXDP+devmapRegAddress);  // To clear any pending writes, as per doc/mac_registers.txt
	hwMemWrite32(devIndex, F2_RC+devmapRegAddress, reg);
	mSleep(1);
	//workaround for hainan 1.0
	if((hwMemRead32(devIndex, F2_SREV+devmapRegAddress) & F2_SREV_ID_M)== 0x55) {
		for (i = 0; i < 20; i++) {
			hwMemRead32(devIndex, 0x4020);
		}
	}
//	mSleep(10);


	if(hwMemRead32(devIndex, F2_RC+devmapRegAddress) == 0) {
		uiPrintf("hwInit: Device did not enter Reset \n");
		return;
	}

	/* Bring out of sleep mode again */
	hwMemWrite32(devIndex, F2_SCR+devmapRegAddress, F2_SCR_SLE_FWAKE);
	mSleep(10);

	/* Clear the reset */
	hwMemWrite32(devIndex, F2_RC+devmapRegAddress, 0);
	mSleep(10);

}
#endif


/**************************************************************************
* deviceInit - performs any initialization needed for a device
*
* Perform the initialization needed for a device.  This includes creating a
* devInfo structure and initializing its contents
*
* RETURNS: A_OK if successful, A_ERROR if not
*/
A_STATUS deviceInit
	(
	A_UINT16 devIndex, /* index of globalDrvInfo which to add device to */
	A_UINT16 device_fn,
	DK_DEV_INFO *pdkInfo

	)
{
	MDK_WLAN_DEV_INFO *pdevInfo;
	A_UINT32      regValue;
	CLI_INFO cliInfo;
	A_UINT32 iIndex;
	A_UINT32        NumBuffBlocks;
	A_UINT32        NumBuffMapBytes;

	/* check to see if we already have a devInfo structure created for this device */
	if (globDrvInfo.pDevInfoArray[devIndex]) {
		uiPrintf("Error : Device already in use \n");
		return A_ERROR;
	}

	  pdevInfo = (MDK_WLAN_DEV_INFO *) A_MALLOC(sizeof(MDK_WLAN_DEV_INFO));
	  if(!pdevInfo) {
		uiPrintf("Error: Unable to allocate MDK_WLAN_DEV_INFO struct!\n");
		return(A_ERROR);
	  }
#ifdef WIN32
	  pdevInfo->hDevice = NULL;
#else
	  pdevInfo->hDevice = -1;
#endif

	  pdevInfo->pdkInfo = (DK_DEV_INFO *) A_MALLOC(sizeof(DK_DEV_INFO));
	  if(!pdevInfo->pdkInfo) {
		A_FREE(pdevInfo);
		uiPrintf("Error: Unable to allocate DK_DEV_INFO struct!\n");
		return A_ERROR;
	  }
	  //uiPrintf("pdevInfo->pdkInfo=%x:\npdevInfo=%x:\n", pdevInfo->pdkInfo, pdevInfo);
	if (!pdkInfo) {
	  /* zero out the dkInfo struct */
	  A_MEM_ZERO(pdevInfo->pdkInfo, sizeof(DK_DEV_INFO));

	  pdevInfo->pdkInfo->devIndex = devIndex;
	  pdevInfo->pdkInfo->device_fn = device_fn;

	  cliInfo.numBars = 1;    //apparently anwi driver does not update this for eagle
							  //make sure it is initialized to a good default
	  if (get_device_client_info(pdevInfo, &driverVer, &cliInfo) == A_ERROR) {
		 return A_ERROR;
	  }

	  pdevInfo->pdkInfo->f2Mapped = 1;
	  if (driverVer.minorVersion >= 2) {
		 pdevInfo->pdkInfo->f2MapAddress = cliInfo.aregPhyAddr[0];
		 pdevInfo->pdkInfo->regMapRange = cliInfo.aregRange[0];
		 pdevInfo->pdkInfo->regVirAddr = cliInfo.aregVirAddr[0];
		 for(iIndex=0; iIndex<cliInfo.numBars; iIndex++) {
			pdevInfo->pdkInfo->aregPhyAddr[iIndex] = cliInfo.aregPhyAddr[iIndex];
			pdevInfo->pdkInfo->aregVirAddr[iIndex] = cliInfo.aregVirAddr[iIndex];
			pdevInfo->pdkInfo->aregRange[iIndex] = cliInfo.aregRange[iIndex];
			pdevInfo->pdkInfo->res_type[iIndex] = cliInfo.res_type[iIndex];
		 }
	  }
	  else {
		 pdevInfo->pdkInfo->aregPhyAddr[0] = cliInfo.regPhyAddr;
		 pdevInfo->pdkInfo->aregVirAddr[0] = cliInfo.regVirAddr;
		 pdevInfo->pdkInfo->aregRange[0] = cliInfo.regRange;
		 pdevInfo->pdkInfo->f2MapAddress = cliInfo.regPhyAddr;
		 pdevInfo->pdkInfo->regMapRange = cliInfo.regRange;
		 pdevInfo->pdkInfo->regVirAddr = cliInfo.regVirAddr;
	  }
	  pdevInfo->pdkInfo->numBars = (A_UINT16)cliInfo.numBars;

	  pdevInfo->pdkInfo->memPhyAddr = cliInfo.memPhyAddr;
	  pdevInfo->pdkInfo->memVirAddr = cliInfo.memVirAddr;
	  pdevInfo->pdkInfo->memSize = cliInfo.memSize;
	  pdevInfo->pdkInfo->bar_select = 0;
	}
	else {
	  memcpy(pdevInfo->pdkInfo, pdkInfo, sizeof(DK_DEV_INFO));
	  uiPrintf("Client Version = %d.%d Build %d\n", ((pdevInfo->pdkInfo->version&0xfff0)>> 4), (pdevInfo->pdkInfo->version & 0xf), (pdevInfo->pdkInfo->version >> 16));
	}

	  q_uiPrintf("Num bars = %d\n", pdevInfo->pdkInfo->numBars);
	  q_uiPrintf("+ f2MapAddress = %08x\n", (A_UINT32)(pdevInfo->pdkInfo->f2MapAddress));
		iIndex = 0;
	  for(iIndex=0; iIndex<pdevInfo->pdkInfo->numBars; iIndex++) {
		q_uiPrintf("+   aregPhyAddr[%d]= %08x\n", iIndex, (A_UINT32)(pdevInfo->pdkInfo->aregPhyAddr[iIndex]));
		q_uiPrintf("+   aregVirAddr[%d]= %08x\n", iIndex, (A_UINT32)(pdevInfo->pdkInfo->aregVirAddr[iIndex]));
		q_uiPrintf("+   aregRange[%d]= %08x\n", iIndex, (A_UINT32)(pdevInfo->pdkInfo->aregRange[iIndex]));
	  }
	  q_uiPrintf("+ Allocated memory in the driver.\n");
	  q_uiPrintf("+ VirtAddress = %08x\n", (A_UINT32)(pdevInfo->pdkInfo->memVirAddr));
	  q_uiPrintf("+ PhysAddress = %08x\n", (A_UINT32)(pdevInfo->pdkInfo->memPhyAddr));
	  q_uiPrintf("+ Size = %08x\n", (A_UINT32)(pdevInfo->pdkInfo->memSize));


#ifdef ART_BUILD
	NumBuffBlocks = 0;  // to quiet compiler warnings
	NumBuffMapBytes = 0;  // to quiet compiler warnings
#else
	NumBuffBlocks	= pdevInfo->pdkInfo->memSize / BUFF_BLOCK_SIZE;
	NumBuffMapBytes = NumBuffBlocks / 8;

	/* initialize the map bytes for tracking memory management: calloc will init to 0 as well*/
#ifdef SIM
	if (pbuffMapBytes == NULL)
		 pbuffMapBytes = (A_UCHAR *) calloc(NumBuffMapBytes, sizeof(A_UCHAR));
	pdevInfo->pbuffMapBytes = pbuffMapBytes;
#else
	pdevInfo->pbuffMapBytes = (A_UCHAR *) calloc(NumBuffMapBytes, sizeof(A_UCHAR));
#endif
	if(!pdevInfo->pbuffMapBytes) {
		close_device(pdevInfo);
		A_FREE(pdevInfo->pdkInfo);
		A_FREE(pdevInfo);
		uiPrintf("Error: Unable to allocate buffMapBytes struct!\n");
		return A_ERROR;
	}

#ifdef SIM
	if (pnumBuffs == NULL)
		pnumBuffs = (A_UINT16 *) calloc(NumBuffBlocks, sizeof(A_UINT16));
	pdevInfo->pnumBuffs = pnumBuffs;
#else
	pdevInfo->pnumBuffs = (A_UINT16 *) calloc(NumBuffBlocks, sizeof(A_UINT16));
#endif
	if(!pdevInfo->pnumBuffs) {
		A_FREE(pdevInfo->pbuffMapBytes);
		close_device(pdevInfo);
		A_FREE(pdevInfo->pdkInfo);
		A_FREE(pdevInfo);
		uiPrintf("Error: Unable to allocate numBuffs struct!\n");
		return A_ERROR;
	}

#endif

	globDrvInfo.pDevInfoArray[devIndex] = pdevInfo;
	globDrvInfo.devCount++;

	if (!pdkInfo)  {  // pdkInfo will be non-zero only for thin/usb clients
	  // Setup memory window, bus mastering, & SERR
	  regValue = hwCfgRead32(devIndex, F2_PCI_CMD);
	  regValue |= (MEM_ACCESS_ENABLE | MASTER_ENABLE | SYSTEMERROR_ENABLE);
	  regValue &= ~MEM_WRITE_INVALIDATE; // Disable write & invalidate for our device
	  hwCfgWrite32(devIndex, F2_PCI_CMD, regValue);

	  regValue = hwCfgRead32(devIndex, F2_PCI_CACHELINESIZE);
	  regValue = (regValue & 0xffff) | (0x40 << 8) | 0x08;
	  hwCfgWrite32(devIndex, F2_PCI_CACHELINESIZE, regValue);

#ifdef SOC_LINUX
	 //hwInit(pdevInfo, BUS_RESET | BB_RESET | MAC_RESET);
	 hwInit(pdevInfo, 0);
#endif
	}

	/*
	  // Test memaccesses
	  uiPrintf("Testing Reg accesses\n");
	  hwMemWrite32(devIndex, F2_RXDP+pdevInfo->pdkInfo->f2MapAddress, 0xbabecafc);
	  uiPrintf("RXDP Content exp=0xbabecafc:act=%x\n", hwMemRead32(devIndex, F2_RXDP+pdevInfo->pdkInfo->f2MapAddress));
	  uiPrintf("Testing Memory accesses\n");
	  hwMemWrite32(devIndex, pdevInfo->pdkInfo->memPhyAddr + 0x100, 0xdeadbeef);
	  uiPrintf("Memory  Content exp=0xdeadbeef:act=%x\n", hwMemRead32(devIndex, pdevInfo->pdkInfo->memPhyAddr + 0x100));
	  */



	return A_OK;
}

/**************************************************************************
* deviceCleanup - performs any memory cleanup needed for a device
*
* Perform any cleanup needed for a device.  This includes deleting any
* memory allocated by a device, and unregistering the card with the driver
*
* RETURNS: 1 if successful, 0 if not
*/
void deviceCleanup
	(
	A_UINT16 devIndex
	)
{
	MDK_WLAN_DEV_INFO    *pdevInfo;

//printf("SNOOP::deviceCleanup::devIndex=%d\n", devIndex);
	pdevInfo = globDrvInfo.pDevInfoArray[devIndex];


#ifdef SOC_LINUX
	 hwClose(pdevInfo);
#endif

	close_device(pdevInfo);

	A_FREE(pdevInfo->pdkInfo);
	A_FREE(pdevInfo);

	globDrvInfo.pDevInfoArray[devIndex] = NULL;
	globDrvInfo.devCount--;
//	printf("SNOOP::exit deviceCleanup::devIndex=%d:devCount=%d\n", devIndex, globDrvInfo.devCount);

}


/**************************************************************************
* checkRegSpace - Check to see if an address sits in the setup register space
*
* This internal routine checks to see if an address lies in the register space
*
* RETURNS: A_OK to signify a valid address or A_ENOENT
*/
A_STATUS checkRegSpace
	(
	MDK_WLAN_DEV_INFO *pdevInfo,
	A_UINT32      address
	)
{
		A_UINT32 iIndex;

		if (driverVer.minorVersion >= 2) {
			for(iIndex=0; iIndex<pdevInfo->pdkInfo->numBars; iIndex++) {
			   if((address >= pdevInfo->pdkInfo->aregPhyAddr[iIndex]) &&
				   (address < pdevInfo->pdkInfo->aregPhyAddr[iIndex] + pdevInfo->pdkInfo->aregRange[iIndex]))
				   return A_OK;
			 }
		 }
		 else {
			if((address >= pdevInfo->pdkInfo->aregPhyAddr[0]) && (address < pdevInfo->pdkInfo->aregPhyAddr[0] + pdevInfo->pdkInfo->regMapRange))
			return A_OK;
		 }
		 return A_ENOENT;

}

/**************************************************************************
* checkMemSpace - Check to see if an address sits in the setup physical memory space
*
* This internal routine checks to see if an address lies in the physical memory space
*
* RETURNS: A_OK to signify a valid address or A_ENOENT
*/
A_STATUS checkMemSpace
	(
	MDK_WLAN_DEV_INFO *pdevInfo,
	A_UINT32      address
	)
{
	if((address >= (A_UINT32)pdevInfo->pdkInfo->memPhyAddr) &&
			(address < (A_UINT32)((A_UCHAR *)(pdevInfo->pdkInfo->memPhyAddr) + pdevInfo->pdkInfo->memSize)))
		return A_OK;
	else
		return A_ENOENT;
}


/**************************************************************************
* checkIOSpace - Check to see if an address sits in the IO register space
*
* This internal routine checks to see if an address lies in the IO register space
*
* RETURNS: A_OK to signify a valid address or A_ENOENT
*/
A_STATUS checkIOSpace
	(
	MDK_WLAN_DEV_INFO *pdevInfo,
	A_UINT32      address
	)
{
	A_UINT32 i;

	for (i=0;i<pdevInfo->pdkInfo->numBars;i++) {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲日本免费电影| 国产农村妇女精品| 亚洲午夜三级在线| 91麻豆国产香蕉久久精品| 亚洲日本成人在线观看| 欧美在线啊v一区| 伊人婷婷欧美激情| 婷婷夜色潮精品综合在线| 制服丝袜亚洲网站| 亚洲午夜私人影院| 精品国产自在久精品国产| 国产精品白丝jk白祙喷水网站| 亚洲国产精品v| 97精品国产97久久久久久久久久久久| 久久国产尿小便嘘嘘尿| 91黄色免费网站| 日产国产高清一区二区三区| 亚洲精品在线观看网站| 色综合夜色一区| 日日夜夜精品视频免费| 中文字幕一区在线观看视频| 亚洲 欧美综合在线网络| 波多野结衣一区二区三区| 亚洲欧美综合网| 777午夜精品视频在线播放| 成人一区在线观看| 麻豆精品久久精品色综合| 国产精品三级久久久久三级| 精品女同一区二区| 丁香网亚洲国际| 亚洲国产精品传媒在线观看| 欧美午夜不卡视频| 国产91丝袜在线18| 麻豆中文一区二区| 亚洲欧美影音先锋| 精品国偷自产国产一区| 欧美精品一级二级| 国产成人精品三级麻豆| 国产精品美女久久久久久久久久久 | 一区二区在线看| 欧美激情在线一区二区三区| 欧美一区二区三区喷汁尤物| 欧美制服丝袜第一页| 欧美日韩一级片网站| 在线观看免费成人| aaa欧美大片| 日韩va亚洲va欧美va久久| 国产日本欧美一区二区| 久久影院午夜论| 国产欧美视频一区二区| 久久久国际精品| 国产精品久久久久永久免费观看| 国产精品麻豆99久久久久久| 一卡二卡欧美日韩| 欧美一区二区在线视频| 欧美一二三区精品| 国产精品一线二线三线| 岛国av在线一区| 欧美日韩久久一区二区| 日韩一级成人av| 久久精品视频免费观看| **欧美大码日韩| 日韩国产精品91| 92国产精品观看| 欧美性感一区二区三区| 亚洲自拍偷拍欧美| 2019国产精品| 国产精品短视频| 天天免费综合色| 成人黄色片在线观看| 欧美精品自拍偷拍| 中文幕一区二区三区久久蜜桃| 亚洲成人7777| 色欧美日韩亚洲| 日韩一区中文字幕| 久久久亚洲欧洲日产国码αv| 69久久99精品久久久久婷婷 | 色哟哟精品一区| 精品三级av在线| 婷婷一区二区三区| 99精品久久免费看蜜臀剧情介绍| 久久久精品中文字幕麻豆发布| 日韩成人一级片| 欧美电影免费观看高清完整版在 | av色综合久久天堂av综合| 成人激情免费视频| 久久色.com| 国产精品自拍在线| 亚洲色图.com| 国产亚洲精品bt天堂精选| 亚洲午夜视频在线| 97精品久久久午夜一区二区三区| a在线欧美一区| 精品国产免费一区二区三区四区 | 亚洲福利视频一区二区| 欧美日韩一区二区在线视频| 毛片av中文字幕一区二区| xvideos.蜜桃一区二区| 波多野结衣在线aⅴ中文字幕不卡| 亚洲同性同志一二三专区| 欧美日韩黄色一区二区| 国产福利精品一区二区| 亚洲最新在线观看| 久久综合久久鬼色中文字| 色综合久久综合网97色综合| 六月丁香综合在线视频| 亚洲卡通动漫在线| 久久亚洲综合色| 91精品国产91久久久久久最新毛片 | 蜜臀久久99精品久久久久久9| 中文字幕一区不卡| 日韩一区二区免费在线观看| 一本大道久久a久久精品综合| 久久99久久久欧美国产| 亚洲一区二三区| 国产成人免费视频精品含羞草妖精| 蜜臀va亚洲va欧美va天堂| 成人欧美一区二区三区| 中文字幕成人在线观看| www精品美女久久久tv| 日韩欧美一区在线| 欧美裸体bbwbbwbbw| 欧美性高清videossexo| 99精品偷自拍| 欧美无乱码久久久免费午夜一区| 成人av在线网站| 99久久夜色精品国产网站| 99免费精品视频| 99国产精品一区| 日本高清视频一区二区| 欧美专区亚洲专区| 欧美日韩1区2区| 日韩欧美国产精品一区| 久久亚洲综合色| 亚洲欧美日韩国产手机在线| 亚洲一区二区三区四区不卡| 日韩精品91亚洲二区在线观看| 日本亚洲欧美天堂免费| 国产一区二区美女| 色香蕉久久蜜桃| 91精品国产手机| 国产精品视频一二三| 亚洲一区二区视频在线| 亚洲综合色视频| 青青草原综合久久大伊人精品优势| 日本一不卡视频| 国产一区二区三区四| 成人激情免费视频| 在线观看日韩一区| 日韩午夜av电影| 国产亚洲制服色| 亚洲天堂久久久久久久| 日本亚洲电影天堂| 成人免费视频国产在线观看| 91小视频在线免费看| 日韩视频不卡中文| 国产精品欧美久久久久无广告| 亚洲欧洲综合另类| 另类小说色综合网站| 一本久久综合亚洲鲁鲁五月天 | 亚洲精品一区二区在线观看| 精品国产人成亚洲区| 国产精品无码永久免费888| 亚洲精品国产一区二区精华液 | 亚洲欧美在线aaa| 亚洲成人动漫在线免费观看| 经典三级在线一区| 一本到不卡免费一区二区| 欧美一区二区三区免费观看视频| 国产欧美中文在线| 亚洲综合激情网| 国产精品123| 欧美日韩国产一区| 国产精品成人在线观看| 久久国产乱子精品免费女| 日本福利一区二区| 中文字幕+乱码+中文字幕一区| 亚洲国产成人tv| 成人sese在线| 26uuu亚洲综合色欧美| 亚洲精品欧美激情| 成人免费毛片a| 欧美成人猛片aaaaaaa| 亚洲超丰满肉感bbw| 欧美日韩国产三级| 国产精品18久久久久久久久| 亚洲国产精品国自产拍av| 91久久精品一区二区三区| 免费高清在线视频一区·| 国产亚洲精品bt天堂精选| 91国偷自产一区二区三区成为亚洲经典| 性久久久久久久久久久久| 久久综合色播五月| 色香蕉成人二区免费| 极品少妇一区二区| 亚洲国产视频网站| 国产精品麻豆久久久| 日韩一区二区高清| 日本韩国精品在线| 国产一区三区三区|