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

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

?? rtmp_task.c

?? Ralink RT61 SoftAP Driver source code. RT61:MiniPCI
?? C
字號:
#include "rt_config.h"


#ifdef THREAD_ISR
static void rtmp_rx_done_tasklet(unsigned long data);
static void rtmp_tx_done_tasklet(unsigned long data);
static void rtmp_mgmt_done_tasklet(unsigned long data);
static void rtmp_ac0_dma_done_tasklet(unsigned long data);
static void rtmp_ac1_dma_done_tasklet(unsigned long data);
static void rtmp_ac2_dma_done_tasklet(unsigned long data);
static void rtmp_ac3_dma_done_tasklet(unsigned long data);
static void rtmp_hcca_dma_done_tasklet(unsigned long data);



#define RTMP_MASK_INT_TX_DONE			(1<<0)		// bit 0	
#define RTMP_MASK_INT_RX_DONE			(1<<1)		// bit 1
#define RTMP_MASK_INT_AC0_DMA_DONE		(1<<16)		// bit 16
#define RTMP_MASK_INT_AC1_DMA_DONE		(1<<17)		// bit 17
#define RTMP_MASK_INT_AC2_DMA_DONE		(1<<18)		// bit 18
#define RTMP_MASK_INT_AC3_DMA_DONE		(1<<19)		// bit 19
#define RTMP_MASK_INT_MGMT_DONE			(1<<20)		// bit 20
#define RTMP_MASK_INT_HCCA_DMA_DONE		(1<<21)		// bit 21

spinlock_t	Rtmp_Irq_Lock;


static void rtmp_rx_done_tasklet(unsigned long data)
{
	UINT32		irqsave;
	UINT32		irqMask;

	PRTMP_ADAPTER pAdapter = (PRTMP_ADAPTER) data; 

	/* device had been closed */
	if (RTMP_TEST_FLAG(pAdapter, fRTMP_ADAPTER_REMOVE_IN_PROGRESS)) {
		return;
	}
	
	RTMPHandleRxDoneInterrupt(pAdapter);

	RTMP_IRQ_LOCK(irqsave);

	/*
	 * double check to avoid rotting packet 
	 */

	if ((pAdapter->Rtmp_Masked_Int & RTMP_MASK_INT_RX_DONE) || pAdapter->Rx_Early_Done) {
		pAdapter->Rtmp_Masked_Int &= ~RTMP_MASK_INT_RX_DONE;
		tasklet_hi_schedule(&pAdapter->rx_done_task);
	} else {
		/* enable rx interrupt */
		RTMP_IO_READ32(pAdapter, INT_MASK_CSR,  &irqMask);
		RTMP_IO_WRITE32(pAdapter, INT_MASK_CSR,  irqMask & ~RTMP_MASK_INT_RX_DONE); 		
		/* flush the register */
		RTMP_IO_READ32(pAdapter, INT_MASK_CSR,  &irqMask);
		pAdapter->rx_done_running = FALSE;				
	}
		
	RTMP_IRQ_UNLOCK(irqsave);
}

static void rtmp_tx_done_tasklet(unsigned long data)
{
	UINT32		irqsave;
	UINT32		irqMask;
	PRTMP_ADAPTER pAdapter = (PRTMP_ADAPTER) data;

	/* device had been closed */
	if (RTMP_TEST_FLAG(pAdapter, fRTMP_ADAPTER_REMOVE_IN_PROGRESS)) {
		return;
	}

	RTMPHandleMgmtRingDmaDoneInterrupt(pAdapter);	


	RTMPHandleTxDoneInterrupt(pAdapter);
		
	RTMP_IRQ_LOCK(irqsave);

	/*
	 * double check to avoid rotting packet 
	 */

	if (pAdapter->Rtmp_Masked_Int & RTMP_MASK_INT_TX_DONE) {	
		pAdapter->Rtmp_Masked_Int &= ~RTMP_MASK_INT_TX_DONE;	
		tasklet_hi_schedule(&pAdapter->tx_done_task);
	} else {
		/* enable tx interrupt */
		RTMP_IO_READ32(pAdapter, INT_MASK_CSR,  &irqMask);
		RTMP_IO_WRITE32(pAdapter, INT_MASK_CSR,  irqMask & ~RTMP_MASK_INT_TX_DONE);
		pAdapter->tx_done_running = FALSE;
	}		

	RTMP_IRQ_UNLOCK(irqsave);
}

static void rtmp_ac0_dma_done_tasklet(unsigned long data)
{
	UINT32		irqsave;
	UINT32		irqMask;
	PRTMP_ADAPTER pAdapter = (PRTMP_ADAPTER) data;
    INT_SOURCE_CSR_STRUC	IntSource;

	/* device had been closed */
	if (RTMP_TEST_FLAG(pAdapter, fRTMP_ADAPTER_REMOVE_IN_PROGRESS)) {
		return;
	}


	IntSource.word = 0;
	IntSource.field.Ac0DmaDone = 1;

	RTMPHandleTxRingDmaDoneInterrupt(pAdapter, IntSource);
	
	RTMP_IRQ_LOCK(irqsave);

	/*
	 * double check to avoid rotting packet 
	 */

	if (pAdapter->Rtmp_Masked_Int & RTMP_MASK_INT_AC0_DMA_DONE) {	
		pAdapter->Rtmp_Masked_Int &= ~RTMP_MASK_INT_AC0_DMA_DONE;	
		tasklet_hi_schedule(&pAdapter->ac0_dma_done_task);
	} else {
		/* enable ac0 interrupt */
		RTMP_IO_READ32(pAdapter, INT_MASK_CSR,  &irqMask);
		RTMP_IO_WRITE32(pAdapter, INT_MASK_CSR,  irqMask & ~RTMP_MASK_INT_AC0_DMA_DONE);
		pAdapter->ac0_dma_done_running = FALSE;
	}
		
	RTMP_IRQ_UNLOCK(irqsave);
}

static void rtmp_ac1_dma_done_tasklet(unsigned long data)
{
	UINT32		irqsave;
	UINT32		irqMask;
	PRTMP_ADAPTER pAdapter = (PRTMP_ADAPTER) data;
    INT_SOURCE_CSR_STRUC	IntSource;

	/* device had been closed */
	if (RTMP_TEST_FLAG(pAdapter, fRTMP_ADAPTER_REMOVE_IN_PROGRESS)) {
		return;
	}

	IntSource.word = 0;
	IntSource.field.Ac1DmaDone = 1;

	RTMPHandleTxRingDmaDoneInterrupt(pAdapter, IntSource);
	
	RTMP_IRQ_LOCK(irqsave);

	/*
	 * double check to avoid rotting packet 
	 */

	if (pAdapter->Rtmp_Masked_Int & RTMP_MASK_INT_AC1_DMA_DONE) {	
		pAdapter->Rtmp_Masked_Int &= ~RTMP_MASK_INT_AC1_DMA_DONE;	
		tasklet_hi_schedule(&pAdapter->ac1_dma_done_task);
	} else {
		/* enable ac1 interrupt */
		RTMP_IO_READ32(pAdapter, INT_MASK_CSR,  &irqMask);
		RTMP_IO_WRITE32(pAdapter, INT_MASK_CSR,  irqMask & ~RTMP_MASK_INT_AC1_DMA_DONE);
		pAdapter->ac1_dma_done_running = FALSE;
	}
		
	RTMP_IRQ_UNLOCK(irqsave);
}

static void rtmp_ac2_dma_done_tasklet(unsigned long data)
{

	UINT32		irqsave;
	UINT32		irqMask;
	PRTMP_ADAPTER pAdapter = (PRTMP_ADAPTER) data;
    INT_SOURCE_CSR_STRUC	IntSource;

	/* device had been closed */
	if (RTMP_TEST_FLAG(pAdapter, fRTMP_ADAPTER_REMOVE_IN_PROGRESS)) {
		return;
	}

	IntSource.word = 0;
	IntSource.field.Ac2DmaDone = 1;

	RTMPHandleTxRingDmaDoneInterrupt(pAdapter, IntSource);
	
	RTMP_IRQ_LOCK(irqsave);

	/*
	 * double check to avoid rotting packet 
	 */

	if (pAdapter->Rtmp_Masked_Int & RTMP_MASK_INT_AC2_DMA_DONE) {	
		pAdapter->Rtmp_Masked_Int &= ~RTMP_MASK_INT_AC2_DMA_DONE;	
		tasklet_hi_schedule(&pAdapter->ac2_dma_done_task);
	} else {
		/* enable ac2 interrupt */
		RTMP_IO_READ32(pAdapter, INT_MASK_CSR,  &irqMask);
		RTMP_IO_WRITE32(pAdapter, INT_MASK_CSR,  irqMask & ~RTMP_MASK_INT_AC2_DMA_DONE);
		pAdapter->ac2_dma_done_running = FALSE;
	}
		
	RTMP_IRQ_UNLOCK(irqsave);
}

static void rtmp_ac3_dma_done_tasklet(unsigned long data)
{
	UINT32		irqsave;
	UINT32		irqMask;
	PRTMP_ADAPTER pAdapter = (PRTMP_ADAPTER) data;
    INT_SOURCE_CSR_STRUC	IntSource;

	/* device had been closed */
	if (RTMP_TEST_FLAG(pAdapter, fRTMP_ADAPTER_REMOVE_IN_PROGRESS)) {
		return;
	}

	IntSource.word = 0;
	IntSource.field.Ac3DmaDone = 1;

	RTMPHandleTxRingDmaDoneInterrupt(pAdapter, IntSource);
	
	RTMP_IRQ_LOCK(irqsave);

	/*
	 * double check to avoid rotting packet 
	 */

	if (pAdapter->Rtmp_Masked_Int & RTMP_MASK_INT_AC3_DMA_DONE) {	
		pAdapter->Rtmp_Masked_Int &= ~RTMP_MASK_INT_AC3_DMA_DONE;	
		tasklet_hi_schedule(&pAdapter->ac3_dma_done_task);
	} else {
		/* enable ac3 interrupt */
		RTMP_IO_READ32(pAdapter, INT_MASK_CSR,  &irqMask);
		RTMP_IO_WRITE32(pAdapter, INT_MASK_CSR,  irqMask & ~RTMP_MASK_INT_AC3_DMA_DONE);
		pAdapter->ac3_dma_done_running = FALSE;
	}
		
	RTMP_IRQ_UNLOCK(irqsave);
}

static void rtmp_hcca_dma_done_tasklet(unsigned long data)
{

	UINT32		irqsave;
	UINT32		irqMask;
	PRTMP_ADAPTER pAdapter = (PRTMP_ADAPTER) data;
    INT_SOURCE_CSR_STRUC	IntSource;

	/* device had been closed */
	if (RTMP_TEST_FLAG(pAdapter, fRTMP_ADAPTER_REMOVE_IN_PROGRESS)) {
		return;
	}

	IntSource.word = 0;
	IntSource.field.HccaDmaDone = 1;

	RTMPHandleTxRingDmaDoneInterrupt(pAdapter, IntSource);
	
	RTMP_IRQ_LOCK(irqsave);

	/*
	 * double check to avoid rotting packet 
	 */

	if (pAdapter->Rtmp_Masked_Int & RTMP_MASK_INT_HCCA_DMA_DONE) {	
		pAdapter->Rtmp_Masked_Int &= ~RTMP_MASK_INT_HCCA_DMA_DONE;	
		tasklet_hi_schedule(&pAdapter->hcca_dma_done_task);
	} else {
		/* enable hcca interrupt */
		RTMP_IO_READ32(pAdapter, INT_MASK_CSR,  &irqMask);
		RTMP_IO_WRITE32(pAdapter, INT_MASK_CSR,  irqMask & ~RTMP_MASK_INT_HCCA_DMA_DONE);
		pAdapter->hcca_dma_done_running = FALSE;
	}
		
	RTMP_IRQ_UNLOCK(irqsave);
}




static void rtmp_mgmt_done_tasklet(unsigned long data)
{
	UINT32		irqsave;
	UINT32		irqMask;
	PRTMP_ADAPTER pAdapter = (PRTMP_ADAPTER) data;

	/* device had been closed */
	if (RTMP_TEST_FLAG(pAdapter, fRTMP_ADAPTER_REMOVE_IN_PROGRESS)) {
		return;
	}

	RTMPHandleMgmtRingDmaDoneInterrupt(pAdapter);	
	
	RTMP_IRQ_LOCK(irqsave);

	/*
	 * double check to avoid rotting packet 
	 */

	if (pAdapter->Rtmp_Masked_Int & RTMP_MASK_INT_MGMT_DONE) {	
		pAdapter->Rtmp_Masked_Int &= ~RTMP_MASK_INT_MGMT_DONE;	
		tasklet_hi_schedule(&pAdapter->mgmt_done_task);
	} else {
		/* enable mgmt interrupt */
		RTMP_IO_READ32(pAdapter, INT_MASK_CSR,  &irqMask);
		RTMP_IO_WRITE32(pAdapter, INT_MASK_CSR,  irqMask & ~RTMP_MASK_INT_MGMT_DONE);
		pAdapter->mgmt_done_running = FALSE;
	}
		
	RTMP_IRQ_UNLOCK(irqsave);
}


void Rtmp_Init_Thread_Task(IN PRTMP_ADAPTER pAdapter)
{
	tasklet_init(&pAdapter->rx_done_task, rtmp_rx_done_tasklet, (unsigned long)pAdapter);
	tasklet_init(&pAdapter->tx_done_task, rtmp_tx_done_tasklet, (unsigned long)pAdapter);
	tasklet_init(&pAdapter->mgmt_done_task, rtmp_mgmt_done_tasklet, (unsigned long)pAdapter);
	tasklet_init(&pAdapter->ac0_dma_done_task, rtmp_ac0_dma_done_tasklet, (unsigned long)pAdapter);
	tasklet_init(&pAdapter->ac1_dma_done_task, rtmp_ac1_dma_done_tasklet, (unsigned long)pAdapter);
	tasklet_init(&pAdapter->ac2_dma_done_task, rtmp_ac2_dma_done_tasklet, (unsigned long)pAdapter);
	tasklet_init(&pAdapter->ac3_dma_done_task, rtmp_ac3_dma_done_tasklet, (unsigned long)pAdapter);
	tasklet_init(&pAdapter->hcca_dma_done_task, rtmp_hcca_dma_done_tasklet, (unsigned long)pAdapter);

	pAdapter->rx_done_running = FALSE;
	pAdapter->tx_done_running = FALSE;
	pAdapter->mgmt_done_running = FALSE;
	pAdapter->ac0_dma_done_running = FALSE;
	pAdapter->ac1_dma_done_running = FALSE;
	pAdapter->ac2_dma_done_running = FALSE;
	pAdapter->ac3_dma_done_running = FALSE;
	pAdapter->hcca_dma_done_running = FALSE;

	pAdapter->Rx_Early_Done = FALSE;
	pAdapter->Rtmp_Masked_Int = 0;

	RTMP_SEM_INIT(&Rtmp_Irq_Lock);
}


void Rtmp_Kill_Thread_Task(IN PRTMP_ADAPTER pAdapter)
{
	tasklet_kill(&pAdapter->rx_done_task);
	tasklet_kill(&pAdapter->tx_done_task);
	tasklet_kill(&pAdapter->mgmt_done_task);
	tasklet_kill(&pAdapter->ac0_dma_done_task);
	tasklet_kill(&pAdapter->ac1_dma_done_task);
	tasklet_kill(&pAdapter->ac2_dma_done_task);
	tasklet_kill(&pAdapter->ac3_dma_done_task);
	tasklet_kill(&pAdapter->hcca_dma_done_task);
}


UINT32 Rtmp_Thread_Isr(IN PRTMP_ADAPTER pAdapter, 
					   INT_SOURCE_CSR_STRUC	IntSource)
{

	UINT32	int_mask = 0;

	if (IntSource.field.MgmtDmaDone)
	{
		pAdapter->Rtmp_Masked_Int |= RTMP_MASK_INT_MGMT_DONE;
		if (pAdapter->mgmt_done_running == FALSE){
			pAdapter->mgmt_done_running = TRUE;
			pAdapter->Rtmp_Masked_Int &= ~RTMP_MASK_INT_MGMT_DONE;
			/* mask out mgmt interrupt */
			int_mask |= RTMP_MASK_INT_MGMT_DONE;
			tasklet_hi_schedule(&pAdapter->mgmt_done_task);	
	    }
	}

    if (IntSource.field.RxDone)
	{
		pAdapter->Rtmp_Masked_Int |= RTMP_MASK_INT_RX_DONE;
		if (pAdapter->rx_done_running == FALSE){
			pAdapter->rx_done_running = TRUE;
			pAdapter->Rtmp_Masked_Int &= ~RTMP_MASK_INT_RX_DONE;
			/* mask out rx interrupt */
			int_mask |= RTMP_MASK_INT_RX_DONE;
			tasklet_hi_schedule(&pAdapter->rx_done_task);
	    }
	}

	if (IntSource.field.TxDone)
	{
		pAdapter->Rtmp_Masked_Int |= RTMP_MASK_INT_TX_DONE;
		if (pAdapter->tx_done_running == FALSE){
			pAdapter->tx_done_running = TRUE;
			pAdapter->Rtmp_Masked_Int &= ~RTMP_MASK_INT_TX_DONE;
			/* mask out rx interrupt */
			int_mask |= RTMP_MASK_INT_TX_DONE;
			tasklet_hi_schedule(&pAdapter->tx_done_task);	
	    }
	}

    if (IntSource.field.Ac0DmaDone)
	{
		pAdapter->Rtmp_Masked_Int |= RTMP_MASK_INT_AC0_DMA_DONE;
		if (pAdapter->ac0_dma_done_running == FALSE){
			pAdapter->ac0_dma_done_running = TRUE;
			pAdapter->Rtmp_Masked_Int &= ~RTMP_MASK_INT_AC0_DMA_DONE;
			/* mask out ac0 interrupt */
			int_mask |= RTMP_MASK_INT_AC0_DMA_DONE;
			tasklet_hi_schedule(&pAdapter->ac0_dma_done_task);	
	    }
	}


    if (IntSource.field.HccaDmaDone)
	{
		pAdapter->Rtmp_Masked_Int |= RTMP_MASK_INT_HCCA_DMA_DONE;
		if (pAdapter->hcca_dma_done_running == FALSE){
			pAdapter->hcca_dma_done_running = TRUE;
			pAdapter->Rtmp_Masked_Int &= ~RTMP_MASK_INT_HCCA_DMA_DONE;
			/* mask out hcca interrupt */
			int_mask |= RTMP_MASK_INT_HCCA_DMA_DONE;
			tasklet_hi_schedule(&pAdapter->hcca_dma_done_task);	
	    }
	}

    if (IntSource.field.Ac3DmaDone)
	{
		pAdapter->Rtmp_Masked_Int |= RTMP_MASK_INT_AC3_DMA_DONE;
		if (pAdapter->ac3_dma_done_running == FALSE){
			pAdapter->ac3_dma_done_running = TRUE;
			pAdapter->Rtmp_Masked_Int &= ~RTMP_MASK_INT_AC3_DMA_DONE;
			/* mask out ac3 interrupt */
			int_mask |= RTMP_MASK_INT_AC3_DMA_DONE;
			tasklet_hi_schedule(&pAdapter->ac3_dma_done_task);	
	    }
	}


    if (IntSource.field.Ac2DmaDone)
	{
		pAdapter->Rtmp_Masked_Int |= RTMP_MASK_INT_AC2_DMA_DONE;
		if (pAdapter->ac2_dma_done_running == FALSE){
			pAdapter->ac2_dma_done_running = TRUE;
			pAdapter->Rtmp_Masked_Int &= ~RTMP_MASK_INT_AC2_DMA_DONE;
			/* mask out ac2 interrupt */
			int_mask |= RTMP_MASK_INT_AC2_DMA_DONE;
			tasklet_hi_schedule(&pAdapter->ac2_dma_done_task);	
	    }
	}

	if (IntSource.field.Ac1DmaDone)
	{
		pAdapter->Rtmp_Masked_Int |= RTMP_MASK_INT_AC1_DMA_DONE;
		if (pAdapter->ac1_dma_done_running == FALSE){
			pAdapter->ac1_dma_done_running = TRUE;
			pAdapter->Rtmp_Masked_Int &= ~RTMP_MASK_INT_AC1_DMA_DONE;
			/* mask out ac1 interrupt */
			int_mask |= RTMP_MASK_INT_AC1_DMA_DONE;
			tasklet_hi_schedule(&pAdapter->ac1_dma_done_task);	
	    }
	}

	return (int_mask);
}
#endif /* THREAD_ISR */


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人av网站大全| 国产激情精品久久久第一区二区| 日韩一区二区三| www.色精品| 美美哒免费高清在线观看视频一区二区| 亚洲国产成人私人影院tom| 欧美视频一区在线观看| 国产激情偷乱视频一区二区三区| 日韩不卡免费视频| 国产精品成人免费精品自在线观看| 欧美日韩精品三区| 不卡的av在线| 国产电影一区在线| 日韩成人精品在线| 亚洲一区影音先锋| 中文字幕一区二区不卡| 久久久国产综合精品女国产盗摄| 欧美在线综合视频| 94-欧美-setu| 国产综合成人久久大片91| 亚洲欧美在线另类| 中文在线资源观看网站视频免费不卡| 成人av网在线| 国产精品资源网| 婷婷综合另类小说色区| 1024精品合集| 亚洲色欲色欲www| 国产精品网友自拍| 国产婷婷色一区二区三区四区| 日韩视频一区二区三区| 555夜色666亚洲国产免| 欧美色国产精品| 色美美综合视频| 色婷婷精品久久二区二区蜜臂av| 69成人精品免费视频| 538在线一区二区精品国产| 欧美日韩aaaaaa| 在线成人高清不卡| 正在播放亚洲一区| 欧美一区二区三区四区五区| 91精品国产品国语在线不卡| 欧美日韩国产区一| 欧美日韩成人高清| 欧美一区二区在线观看| 这里是久久伊人| 欧美一级国产精品| 久久夜色精品一区| 欧美韩日一区二区三区| 国产精品午夜春色av| 1024精品合集| 亚洲国产精品精华液网站| 肉色丝袜一区二区| 免费成人小视频| 国产精品一区二区三区乱码 | 亚洲欧美电影一区二区| 亚洲人成网站影音先锋播放| 亚洲欧美国产77777| 香蕉成人啪国产精品视频综合网 | k8久久久一区二区三区 | 成人av在线观| 在线观看av一区二区| 欧美日韩国产欧美日美国产精品| 日韩一区二区在线播放| 欧美激情一区二区三区不卡| 亚洲欧美一区二区三区久本道91| 亚洲成人免费影院| 国产乱国产乱300精品| 99精品在线免费| 欧美日韩大陆一区二区| 26uuu久久天堂性欧美| 中文字幕一区二区在线观看| 亚洲在线视频一区| 韩国午夜理伦三级不卡影院| 99久久99久久精品国产片果冻| 欧美日韩一区二区三区不卡| 久久久久国产精品厨房| 亚洲高清不卡在线观看| 国产精品主播直播| 欧美日韩另类一区| 国产精品欧美综合在线| 亚州成人在线电影| 国产馆精品极品| 在线成人高清不卡| 国产精品嫩草久久久久| 天堂成人国产精品一区| 成人毛片老司机大片| 欧美日韩国产影片| 中日韩免费视频中文字幕| 天天影视色香欲综合网老头| 成人激情av网| 日韩一区二区中文字幕| 亚洲色图.com| 国产美女在线观看一区| 欧美日韩国产免费| 国产精品久久久久aaaa樱花| 日本视频在线一区| 色菇凉天天综合网| 国产校园另类小说区| 日韩精品福利网| 欧美亚洲另类激情小说| 亚洲国产精品成人综合色在线婷婷 | 成年人网站91| 日韩一区二区在线看| 一区二区三区在线视频免费| 国产成人精品一区二区三区四区 | 欧美福利视频一区| 国产精品亲子伦对白| 国产一区在线观看麻豆| 欧美高清你懂得| 亚洲综合久久av| 99re亚洲国产精品| 久久影音资源网| 裸体一区二区三区| 欧美日韩黄色影视| 亚洲一二三四区| 色综合亚洲欧洲| 中文字幕亚洲电影| 男女男精品网站| 在线播放欧美女士性生活| 一区二区三区在线观看欧美| 成人app网站| 国产精品美女久久久久aⅴ| 国产精品一级片| 久久久精品tv| 国产1区2区3区精品美女| 26uuu亚洲综合色欧美| 免费看日韩a级影片| 欧美精品久久久久久久多人混战 | 欧美一卡二卡在线| 日韩精品乱码av一区二区| 欧美日韩在线不卡| 亚洲一区二区五区| 在线视频欧美精品| 亚洲自拍偷拍网站| 色综合久久久久综合体| 亚洲欧美日韩中文字幕一区二区三区 | 欧洲精品中文字幕| 一区二区在线观看视频在线观看| 91婷婷韩国欧美一区二区| 亚洲欧美影音先锋| 91丨porny丨最新| 亚洲精品中文字幕乱码三区| 日本高清视频一区二区| 亚洲色欲色欲www| 欧美色图天堂网| 日本欧美一区二区| 欧美xfplay| 日韩欧美国产麻豆| 麻豆精品一区二区三区| 国产亚洲欧美一级| www.亚洲人| 亚洲午夜免费视频| 欧美成人伊人久久综合网| 国产黄人亚洲片| 亚洲视频在线一区观看| 欧美性生活久久| 六月丁香婷婷久久| 久久精品无码一区二区三区| 91丨九色丨国产丨porny| 亚洲小说春色综合另类电影| 欧美一区二区三区不卡| 国产精品资源网站| 尤物视频一区二区| 日韩一卡二卡三卡| 国产一区亚洲一区| 亚洲精品少妇30p| 91精品欧美综合在线观看最新| 激情综合五月天| 日韩一区中文字幕| 日韩一区二区在线看片| 成人丝袜高跟foot| 亚洲成av人影院| 国产喷白浆一区二区三区| 欧美艳星brazzers| 国产精品夜夜嗨| 亚洲国产精品视频| 久久精品人人做人人综合 | 中文字幕亚洲一区二区va在线| 91啦中文在线观看| 麻豆精品一二三| 亚洲欧美另类在线| www国产亚洲精品久久麻豆| 91欧美一区二区| 久久99热国产| 亚洲免费观看高清在线观看| 在线播放欧美女士性生活| 99久久久免费精品国产一区二区| 日韩成人午夜精品| 亚洲日本一区二区| 欧美精品一区二区久久婷婷| 欧洲人成人精品| 丁香啪啪综合成人亚洲小说| 性做久久久久久久免费看| 国产精品毛片a∨一区二区三区| 欧美日韩高清一区二区不卡| 不卡一卡二卡三乱码免费网站| 奇米一区二区三区av| 亚洲三级电影全部在线观看高清| 日韩精品一区二区三区视频 | 日韩欧美激情一区|