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

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

?? ixethaccdataplane.c

?? u-boot1.3.0的原碼,從配了網絡驅動和FLASH的驅動,并該用ESC竟如
?? C
?? 第 1 頁 / 共 5 頁
字號:
/** * @file IxEthDataPlane.c * * @author Intel Corporation * @date 12-Feb-2002 * * @brief This file contains the implementation of the IXPxxx * Ethernet Access Data plane component * * Design Notes: * * @par * IXP400 SW Release version 2.0 * * -- Copyright Notice -- * * @par * Copyright 2001-2005, Intel Corporation. * All rights reserved. * * @par * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright *    notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright *    notice, this list of conditions and the following disclaimer in the *    documentation and/or other materials provided with the distribution. * 3. Neither the name of the Intel Corporation nor the names of its contributors *    may be used to endorse or promote products derived from this software *    without specific prior written permission. * * @par * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * @par * -- End of Copyright Notice -- */#include "IxNpeMh.h"#include "IxEthAcc.h"#include "IxEthDB.h"#include "IxOsal.h"#include "IxEthDBPortDefs.h"#include "IxFeatureCtrl.h"#include "IxEthAcc_p.h"#include "IxEthAccQueueAssign_p.h"extern PUBLIC IxEthAccMacState ixEthAccMacState[];extern PUBLIC UINT32 ixEthAccNewSrcMask;/** * private functions prototype */PRIVATE IX_OSAL_MBUF *ixEthAccEntryFromQConvert(UINT32 qEntry, UINT32 mask);PRIVATE UINT32ixEthAccMbufRxQPrepare(IX_OSAL_MBUF *mbuf);PRIVATE UINT32ixEthAccMbufTxQPrepare(IX_OSAL_MBUF *mbuf);PRIVATE IxEthAccStatusixEthAccTxSwQHighestPriorityGet(IxEthAccPortId portId,				IxEthAccTxPriority *priorityPtr);PRIVATE IxEthAccStatusixEthAccTxFromSwQ(IxEthAccPortId portId,		  IxEthAccTxPriority priority);PRIVATE IxEthAccStatusixEthAccRxFreeFromSwQ(IxEthAccPortId portId);PRIVATE voidixEthAccMbufFromTxQ(IX_OSAL_MBUF *mbuf);PRIVATE voidixEthAccMbufFromRxQ(IX_OSAL_MBUF *mbuf);PRIVATE IX_STATUSixEthAccQmgrLockTxWrite(IxEthAccPortId portId,			UINT32 qBuffer);PRIVATE IX_STATUSixEthAccQmgrLockRxWrite(IxEthAccPortId portId,			UINT32 qBuffer);PRIVATE IX_STATUSixEthAccQmgrTxWrite(IxEthAccPortId portId,		    UINT32 qBuffer,		    UINT32 priority);/** * @addtogroup IxEthAccPri *@{ *//* increment a counter only when stats are enabled */#define TX_STATS_INC(port,field) \        IX_ETH_ACC_STATS_INC(ixEthAccPortData[port].ixEthAccTxData.stats.field)#define RX_STATS_INC(port,field) \        IX_ETH_ACC_STATS_INC(ixEthAccPortData[port].ixEthAccRxData.stats.field)/* always increment the counter (mainly used for unexpected errors) */#define TX_INC(port,field) \        ixEthAccPortData[port].ixEthAccTxData.stats.field++#define RX_INC(port,field) \        ixEthAccPortData[port].ixEthAccRxData.stats.field++PRIVATE IxEthAccDataPlaneStats     ixEthAccDataStats;extern IxEthAccPortDataInfo   ixEthAccPortData[];extern IxEthAccInfo   ixEthAccDataInfo;PRIVATE IxOsalFastMutex txWriteMutex[IX_ETH_ACC_NUMBER_OF_PORTS];PRIVATE IxOsalFastMutex rxWriteMutex[IX_ETH_ACC_NUMBER_OF_PORTS];/** * * @brief Mbuf header conversion macros : they implement the *  different conversions using a temporary value. They also double-check *  that the parameters can be converted to/from NPE format. * */#if defined(__wince) && !defined(IN_KERNEL)#define PTR_VIRT2NPE(ptrSrc,dst) \  do { UINT32 temp; \      IX_OSAL_ENSURE(sizeof(ptrSrc) == sizeof(UINT32), "Wrong parameter type"); \      IX_OSAL_ENSURE(sizeof(dst) == sizeof(UINT32), "Wrong parameter type"); \      temp = (UINT32)IX_OSAL_MBUF_MBUF_VIRTUAL_TO_PHYSICAL_TRANSLATION((IX_OSAL_MBUF*)ptrSrc); \      (dst) = IX_OSAL_SWAP_BE_SHARED_LONG(temp); } \  while(0)#define PTR_NPE2VIRT(type,src,ptrDst) \  do { void *temp; \      IX_OSAL_ENSURE(sizeof(type) == sizeof(UINT32), "Wrong parameter type"); \      IX_OSAL_ENSURE(sizeof(src) == sizeof(UINT32), "Wrong parameter type"); \      IX_OSAL_ENSURE(sizeof(ptrDst) == sizeof(UINT32), "Wrong parameter type"); \      temp = (void *)IX_OSAL_SWAP_BE_SHARED_LONG(src); \      (ptrDst) = (type)IX_OSAL_MBUF_MBUF_PHYSICAL_TO_VIRTUAL_TRANSLATION(temp); } \  while(0)#else#define PTR_VIRT2NPE(ptrSrc,dst) \  do { UINT32 temp; \      IX_OSAL_ENSURE(sizeof(ptrSrc) == sizeof(UINT32), "Wrong parameter type"); \      IX_OSAL_ENSURE(sizeof(dst) == sizeof(UINT32), "Wrong parameter type"); \      temp = (UINT32)IX_OSAL_MMU_VIRT_TO_PHYS(ptrSrc); \      (dst) = IX_OSAL_SWAP_BE_SHARED_LONG(temp); } \  while(0)#define PTR_NPE2VIRT(type,src,ptrDst) \  do { void *temp; \      IX_OSAL_ENSURE(sizeof(type) == sizeof(UINT32), "Wrong parameter type"); \      IX_OSAL_ENSURE(sizeof(src) == sizeof(UINT32), "Wrong parameter type"); \      IX_OSAL_ENSURE(sizeof(ptrDst) == sizeof(UINT32), "Wrong parameter type"); \      temp = (void *)IX_OSAL_SWAP_BE_SHARED_LONG(src); \      (ptrDst) = (type)IX_OSAL_MMU_PHYS_TO_VIRT(temp); } \  while(0)#endif/** * * @brief Mbuf payload pointer conversion macros : Wince has its own *  method to convert the buffer pointers */#if defined(__wince) && !defined(IN_KERNEL)#define DATAPTR_VIRT2NPE(ptrSrc,dst) \  do { UINT32 temp; \      temp = (UINT32)IX_OSAL_MBUF_DATA_VIRTUAL_TO_PHYSICAL_TRANSLATION(ptrSrc); \      (dst) = IX_OSAL_SWAP_BE_SHARED_LONG(temp); } \  while(0)#else#define DATAPTR_VIRT2NPE(ptrSrc,dst) PTR_VIRT2NPE(IX_OSAL_MBUF_MDATA(ptrSrc),dst)#endif/* Flush the shared part of the mbuf header */#define IX_ETHACC_NE_CACHE_FLUSH(mbufPtr) \  do { \      IX_OSAL_CACHE_FLUSH(IX_ETHACC_NE_SHARED(mbufPtr), \			      sizeof(IxEthAccNe)); \    } \  while(0)/* Invalidate the shared part of the mbuf header */#define IX_ETHACC_NE_CACHE_INVALIDATE(mbufPtr) \  do { \      IX_OSAL_CACHE_INVALIDATE(IX_ETHACC_NE_SHARED(mbufPtr), \				   sizeof(IxEthAccNe)); \    } \  while(0)/* Preload one cache line (shared mbuf headers are aligned * and their size is 1 cache line) * * IX_OSAL_CACHED  is defined when the mbuf headers are * allocated from cached memory. * * Other processor on emulation environment may not implement * preload function */#ifdef IX_OSAL_CACHED	#if (CPU!=SIMSPARCSOLARIS) && !defined (__wince)		#define IX_ACC_DATA_CACHE_PRELOAD(ptr) \		do { /* preload a cache line (Xscale Processor) */ \			__asm__ (" pld [%0]\n": : "r" (ptr)); \		} \		while(0)	#else		/* preload not implemented on different processor */		#define IX_ACC_DATA_CACHE_PRELOAD(mbufPtr) \		do { /* nothing */ } while (0)	#endif#else	/* preload not needed if cache is not enabled */	#define IX_ACC_DATA_CACHE_PRELOAD(mbufPtr) \	do { /* nothing */ } while (0)#endif/** * * @brief function to retrieve the correct pointer from * a queue entry posted by the NPE * * @param qEntry : entry from qmgr queue *        mask : applicable mask for this queue *        (4 most significant bits are used for additional informations) * * @return IX_OSAL_MBUF * pointer to mbuf header * * @internal */PRIVATE IX_OSAL_MBUF *ixEthAccEntryFromQConvert(UINT32 qEntry, UINT32 mask){    IX_OSAL_MBUF *mbufPtr;    if (qEntry != 0)    {        /* mask NPE bits (e.g. priority, port ...) */        qEntry &= mask;#if IX_ACC_DRAM_PHYS_OFFSET != 0        /* restore the original address pointer (if PHYS_OFFSET is not 0) */        qEntry |= (IX_ACC_DRAM_PHYS_OFFSET & ~IX_ETHNPE_QM_Q_RXENET_ADDR_MASK);#endif        /* get the mbuf pointer address from the npe-shared address */        qEntry -= offsetof(IX_OSAL_MBUF,ix_ne);        /* phys2virt mbuf */        mbufPtr = (IX_OSAL_MBUF *)IX_OSAL_MMU_PHYS_TO_VIRT(qEntry);        /* preload the cacheline shared with NPE */        IX_ACC_DATA_CACHE_PRELOAD(IX_ETHACC_NE_SHARED(mbufPtr));        /* preload the cacheline used by xscale */        IX_ACC_DATA_CACHE_PRELOAD(mbufPtr);    }    else    {	mbufPtr = NULL;    }    return mbufPtr;}/* Convert the mbuf header for NPE transmission */PRIVATE UINT32ixEthAccMbufTxQPrepare(IX_OSAL_MBUF *mbuf){    UINT32 qbuf;    UINT32 len;    /* endianess swap for tci and flags       note: this is done only once, even for chained buffers */    IX_ETHACC_NE_FLAGS(mbuf)   = IX_OSAL_SWAP_BE_SHARED_SHORT(IX_ETHACC_NE_FLAGS(mbuf));    IX_ETHACC_NE_VLANTCI(mbuf) = IX_OSAL_SWAP_BE_SHARED_SHORT(IX_ETHACC_NE_VLANTCI(mbuf));    /* test for unchained mbufs */    if (IX_OSAL_MBUF_NEXT_BUFFER_IN_PKT_PTR(mbuf) == NULL)    {	/* "best case" scenario : unchained mbufs */	IX_ETH_ACC_STATS_INC(ixEthAccDataStats.unchainedTxMBufs);	/* payload pointer conversion */	DATAPTR_VIRT2NPE(mbuf, IX_ETHACC_NE_DATA(mbuf));	/* unchained mbufs : the frame length is the mbuf length	 * and the 2 identical lengths are stored in the same	 * word.	 */	len = IX_OSAL_MBUF_MLEN(mbuf);	/* set the length in both length and pktLen 16-bits fields */	len |= (len << IX_ETHNPE_ACC_LENGTH_OFFSET);	IX_ETHACC_NE_LEN(mbuf) = IX_OSAL_SWAP_BE_SHARED_LONG(len);	/* unchained mbufs : next contains 0 */	IX_ETHACC_NE_NEXT(mbuf) = 0;	/* flush shared header after all address conversions */	IX_ETHACC_NE_CACHE_FLUSH(mbuf);    }    else    {	/* chained mbufs */	IX_OSAL_MBUF *ptr = mbuf;	IX_OSAL_MBUF *nextPtr;	UINT32 frmLen;	/* get the frame length from the header of the first buffer */	frmLen = IX_OSAL_MBUF_PKT_LEN(mbuf);	do	{	    IX_ETH_ACC_STATS_INC(ixEthAccDataStats.chainedTxMBufs);	    /* payload pointer */	    DATAPTR_VIRT2NPE(ptr,IX_ETHACC_NE_DATA(ptr));	    /* Buffer length and frame length are stored in the same word */	    len = IX_OSAL_MBUF_MLEN(ptr);	    len = frmLen | (len << IX_ETHNPE_ACC_LENGTH_OFFSET);	    IX_ETHACC_NE_LEN(ptr) = IX_OSAL_SWAP_BE_SHARED_LONG(len);	    /* get the virtual next chain pointer */	    nextPtr = IX_OSAL_MBUF_NEXT_BUFFER_IN_PKT_PTR(ptr);	    if (nextPtr != NULL)	    {		/* shared pointer of the next buffer is chained */		PTR_VIRT2NPE(IX_ETHACC_NE_SHARED(nextPtr),			     IX_ETHACC_NE_NEXT(ptr));	    }	    else	    {		IX_ETHACC_NE_NEXT(ptr) = 0;	    }	    /* flush shared header after all address conversions */	    IX_ETHACC_NE_CACHE_FLUSH(ptr);	    /* move to next buffer */	    ptr = nextPtr;	    /* the frame length field is set only in the first buffer	     * and is zeroed in the next buffers	     */	    frmLen = 0;	}	while(ptr != NULL);    }    /* virt2phys mbuf itself */    qbuf = (UINT32)IX_OSAL_MMU_VIRT_TO_PHYS(		  IX_ETHACC_NE_SHARED(mbuf));    /* Ensure the bits which are reserved to exchange information with     * the NPE are cleared     *     * If the mbuf address is not correctly aligned, or from an     * incompatible memory range, there is no point to continue     */    IX_OSAL_ENSURE(((qbuf & ~IX_ETHNPE_QM_Q_TXENET_ADDR_MASK) == 0),	      "Invalid address range");    return qbuf;}/* Convert the mbuf header for NPE reception */PRIVATE UINT32ixEthAccMbufRxQPrepare(IX_OSAL_MBUF *mbuf){    UINT32 len;    UINT32 qbuf;    if (IX_OSAL_MBUF_NEXT_BUFFER_IN_PKT_PTR(mbuf) == NULL)    {	/* "best case" scenario : unchained mbufs */	IX_ETH_ACC_STATS_INC(ixEthAccDataStats.unchainedRxFreeMBufs);	/* unchained mbufs : payload pointer */	DATAPTR_VIRT2NPE(mbuf, IX_ETHACC_NE_DATA(mbuf));	/* unchained mbufs : set the buffer length	* and the frame length field is zeroed	*/	len = (IX_OSAL_MBUF_MLEN(mbuf) << IX_ETHNPE_ACC_LENGTH_OFFSET);	IX_ETHACC_NE_LEN(mbuf) = IX_OSAL_SWAP_BE_SHARED_LONG(len);	/* unchained mbufs : next pointer is null */	IX_ETHACC_NE_NEXT(mbuf) = 0;	/* flush shared header after all address conversions */	IX_ETHACC_NE_CACHE_FLUSH(mbuf);	/* remove shared header cache line */	IX_ETHACC_NE_CACHE_INVALIDATE(mbuf);    }    else    {	/* chained mbufs */	IX_OSAL_MBUF *ptr = mbuf;	IX_OSAL_MBUF *nextPtr;	do	{	    /* chained mbufs */	    IX_ETH_ACC_STATS_INC(ixEthAccDataStats.chainedRxFreeMBufs);	    /* we must save virtual next chain pointer */	    nextPtr = IX_OSAL_MBUF_NEXT_BUFFER_IN_PKT_PTR(ptr);	    if (nextPtr != NULL)	    {		/* chaining pointer for NPE */		PTR_VIRT2NPE(IX_ETHACC_NE_SHARED(nextPtr),			     IX_ETHACC_NE_NEXT(ptr));	    }	    else	    {		IX_ETHACC_NE_NEXT(ptr) = 0;	    }	    /* payload pointer */	    DATAPTR_VIRT2NPE(ptr,IX_ETHACC_NE_DATA(ptr));	    /* buffer length */	    len = (IX_OSAL_MBUF_MLEN(ptr) << IX_ETHNPE_ACC_LENGTH_OFFSET);	    IX_ETHACC_NE_LEN(ptr) = IX_OSAL_SWAP_BE_SHARED_LONG(len);	    /* flush shared header after all address conversions */	    IX_ETHACC_NE_CACHE_FLUSH(ptr);	    /* remove shared header cache line */	    IX_ETHACC_NE_CACHE_INVALIDATE(ptr);	    /* next mbuf in the chain */	    ptr = nextPtr;	}	while(ptr != NULL);    }    /* virt2phys mbuf itself */    qbuf = (UINT32)IX_OSAL_MMU_VIRT_TO_PHYS(		  IX_ETHACC_NE_SHARED(mbuf));    /* Ensure the bits which are reserved to exchange information with     * the NPE are cleared     *     * If the mbuf address is not correctly aligned, or from an     * incompatible memory range, there is no point to continue     */    IX_OSAL_ENSURE(((qbuf & ~IX_ETHNPE_QM_Q_RXENET_ADDR_MASK) == 0),	      "Invalid address range");    return qbuf;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区中文在线观看| 精品国产不卡一区二区三区| 亚洲欧洲国产日韩| 成人高清视频在线| 中文字幕一区在线观看视频| 一本一道久久a久久精品综合蜜臀| √…a在线天堂一区| 色综合天天综合狠狠| 亚洲成人综合视频| 欧美老年两性高潮| 捆绑紧缚一区二区三区视频| 久久久久久久电影| 99国产欧美另类久久久精品| 亚洲午夜久久久久久久久电影院 | 精品嫩草影院久久| 国产精品自拍av| 国产精品你懂的在线| 91啦中文在线观看| 日韩avvvv在线播放| 欧美xxxxxxxxx| yourporn久久国产精品| 亚洲一区二区在线观看视频| 日韩欧美在线网站| av不卡在线播放| 丝袜美腿亚洲综合| 国产精品天干天干在观线| 91麻豆swag| 美女网站色91| 亚洲老妇xxxxxx| 精品av综合导航| 色婷婷精品大在线视频| 久久www免费人成看片高清| 中文字幕亚洲在| 日韩午夜在线观看视频| 97超碰欧美中文字幕| 久久不见久久见免费视频7| 亚洲欧美视频在线观看| 久久亚洲精精品中文字幕早川悠里| 99riav一区二区三区| 久久不见久久见免费视频1| 亚洲综合色丁香婷婷六月图片| 精品国产凹凸成av人网站| 91黄色免费网站| 国产成人综合自拍| 久久精品久久99精品久久| 一区二区欧美国产| 国产日韩欧美在线一区| 欧美一区二区三区人| 色综合久久88色综合天天6| 国产福利一区二区三区视频在线| 午夜精品123| 亚洲男人的天堂网| 国产精品天天摸av网| 精品电影一区二区| 欧美日本一道本| 色菇凉天天综合网| 成人av在线一区二区| 精彩视频一区二区三区| 天使萌一区二区三区免费观看| 亚洲婷婷综合久久一本伊一区 | 久久香蕉国产线看观看99| 欧美在线观看视频一区二区| 丰满少妇在线播放bd日韩电影| 美女尤物国产一区| 亚洲成人av资源| 亚洲精品欧美专区| 亚洲人快播电影网| 综合网在线视频| 欧美国产精品v| 国产亚洲精品aa午夜观看| 精品国产3级a| 欧美一级午夜免费电影| 91精品国产一区二区| 欧美日韩在线免费视频| 色呦呦网站一区| a亚洲天堂av| eeuss鲁片一区二区三区 | 亚洲欧洲制服丝袜| 中文字幕在线不卡视频| 国产精品久久一卡二卡| 国产精品福利影院| 亚洲欧美自拍偷拍色图| 国产精品电影院| 综合色天天鬼久久鬼色| 一二三区精品福利视频| 一个色在线综合| 亚洲va天堂va国产va久| 亚洲va韩国va欧美va| 日韩av电影免费观看高清完整版在线观看| 天天av天天翘天天综合网 | 亚洲国产激情av| 国产精品美女久久久久av爽李琼| 国产欧美日本一区视频| 日本一区二区在线不卡| 成人免费一区二区三区视频 | 黄色资源网久久资源365| 激情五月婷婷综合| 大尺度一区二区| 99精品国产99久久久久久白柏| 91福利国产精品| 在线不卡中文字幕播放| 欧美成人艳星乳罩| 国产精品久久久久9999吃药| 亚洲视频网在线直播| 日日摸夜夜添夜夜添精品视频| 蜜臀av性久久久久av蜜臀妖精| 国产精品资源网| 91国产免费观看| 欧美r级在线观看| 中文字幕av资源一区| 亚洲精品高清在线| 毛片不卡一区二区| 成人18视频日本| 欧美影视一区二区三区| 欧美哺乳videos| 18成人在线观看| 奇米四色…亚洲| 不卡的av网站| 欧美一区二区三区在线观看视频| 久久久久久久久久美女| 亚洲男人天堂av网| 青青草91视频| jlzzjlzz欧美大全| 日韩精品在线网站| 一区二区三区蜜桃| 国产一区二区网址| 欧美日韩一区国产| 国产亚洲欧洲一区高清在线观看| 亚洲精品免费在线观看| 久久99精品国产.久久久久| 日本乱人伦一区| 久久午夜羞羞影院免费观看| 亚洲一区二区3| 国产suv精品一区二区883| 欧美日韩精品免费观看视频| 欧美高清在线精品一区| 另类小说综合欧美亚洲| 色88888久久久久久影院野外| 国产丝袜欧美中文另类| 日韩精品高清不卡| 日本精品免费观看高清观看| 久久天天做天天爱综合色| 亚洲国产综合视频在线观看| 99国产精品国产精品久久| 国产亚洲一区二区在线观看| 免费久久精品视频| 欧美日韩情趣电影| 亚洲激情在线播放| 成人一级片在线观看| 欧美精品一区二区三| 午夜激情一区二区| 欧美日韩三级视频| 亚洲一区二区三区中文字幕在线| www..com久久爱| 国产日韩欧美精品在线| 国产一区二区三区美女| 日韩网站在线看片你懂的| 三级欧美在线一区| 精品视频999| 夜夜嗨av一区二区三区中文字幕| jlzzjlzz欧美大全| 国产精品日日摸夜夜摸av| 国产精品一卡二卡| 国产日韩欧美精品一区| 国产夫妻精品视频| 国产欧美一区二区精品性| 国产一区二区在线看| 国产拍欧美日韩视频二区| 国产一区在线观看视频| 久久久亚洲高清| 国产成人综合亚洲网站| 亚洲一区二区三区视频在线| 色久优优欧美色久优优| 一区二区久久久久| 欧美日韩一区在线| 天天影视网天天综合色在线播放 | 日韩一级大片在线| 奇米四色…亚洲| 久久综合五月天婷婷伊人| 国产主播一区二区| 日本一区二区电影| 91久久精品国产91性色tv| 亚洲成av人**亚洲成av**| 日韩欧美一级精品久久| 国产原创一区二区| 国产精品久久久久久久岛一牛影视 | 国产成人精品1024| 国产精品福利一区二区三区| 色综合久久综合网| 亚洲国产视频在线| 欧美成人三级在线| 国产成人综合网站| 一区二区三区不卡在线观看| 91精品国产色综合久久| 国产精品主播直播| 夜夜夜精品看看| 欧美成人在线直播| 91亚洲国产成人精品一区二三 | 91精品国产91久久综合桃花 | 亚洲欧美在线观看|