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

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

?? ixethacccommon.c

?? 友善mini2440嵌入式
?? C
?? 第 1 頁 / 共 2 頁
字號:
#ifdef __ixp46X    ixEthAccPortData[IX_ETH_PORT_3].ixEthAccRxData.rxFreeQueue	= IX_ETH_ACC_RX_FREE_BUFF_ENET2_Q;#endif    ixEthAccPortData[IX_ETH_PORT_1].ixEthAccTxData.txQueue	= IX_ETH_ACC_TX_FRAME_ENET0_Q;    ixEthAccPortData[IX_ETH_PORT_2].ixEthAccTxData.txQueue	= IX_ETH_ACC_TX_FRAME_ENET1_Q;#ifdef __ixp46X    ixEthAccPortData[IX_ETH_PORT_3].ixEthAccTxData.txQueue	= IX_ETH_ACC_TX_FRAME_ENET2_Q;#endif    /* Fill the corspondance between ports and NPEs     * This defines the mapping from port to npeIds.     */    ixEthAccPortData[IX_ETH_PORT_1].npeId = IX_NPEMH_NPEID_NPEB;    ixEthAccPortData[IX_ETH_PORT_2].npeId = IX_NPEMH_NPEID_NPEC;#ifdef __ixp46X    ixEthAccPortData[IX_ETH_PORT_3].npeId = IX_NPEMH_NPEID_NPEA;#endif    /* set the default rx scheduling discipline */    ixEthAccDataInfo.schDiscipline = FIFO_NO_PRIORITY;    /*     * Queue Selection step:     *     * The following code selects all the queues and build     * a temporary array which contains for each queue     * - the queue Id,     * - the highest traffic class (in case of many     * priorities configured for the same queue on different     * ports)     * - the number of different Npes which are     * configured to write to this queue.     *     * The output of this loop is a temporary array of RX queues     * in any order.     *     */#ifdef CONFIG_IXP425_COMPONENT_ETHDB    for (ixEthAccPortId = 0;	 (ixEthAccPortId < IX_ETH_ACC_NUMBER_OF_PORTS)	     && (ret == IX_ETH_ACC_SUCCESS);	 ixEthAccPortId++)    {	/* map between ethDb and ethAcc port Ids */	ixEthDbPortId = (IxEthDBPortId)ixEthAccPortId;	/* map between npeId and ethAcc port Ids */	ixNpeId = IX_ETH_ACC_PORT_TO_NPE_ID(ixEthAccPortId);	/* Iterate thru the different priorities */	for (ixEthDBTrafficClass = IX_ETH_DB_QOS_TRAFFIC_CLASS_0_RX_QUEUE_PROPERTY;	     ixEthDBTrafficClass <= IX_ETH_DB_QOS_TRAFFIC_CLASS_7_RX_QUEUE_PROPERTY;	     ixEthDBTrafficClass++)	{	    ixEthDBStatus = ixEthDBFeaturePropertyGet(	      ixEthDbPortId,	      IX_ETH_DB_VLAN_QOS,	      ixEthDBTrafficClass,	      &ixEthDBPropertyType,	      (void *)&ixEthDBParameter);	    if (ixEthDBStatus == IX_ETH_DB_SUCCESS)	    {		/* This port and QoS class are mapped to		 * a RX queue.		 */		if (ixEthDBPropertyType == IX_ETH_DB_INTEGER_PROPERTY)		{		    /* remember the highest npe Id supporting ethernet */		    if (ixNpeId > ixHighestNpeId)		    {			ixHighestNpeId = ixNpeId;		    }		    /* search the queue in the list of queues		     * already used by an other port or QoS		     */		    for (rxQueue = 0;			 rxQueue < rxQueueCount;			 rxQueue++)		    {			if (rxQueues[rxQueue].qId == (IxQMgrQId)ixEthDBParameter)			{			    /* found an existing setup, update the number of ports			     * for this queue if the port maps to			     * a different NPE.			     */			    if (rxQueues[rxQueue].npeId != ixNpeId)			    {				rxQueues[rxQueue].npeCount++;				rxQueues[rxQueue].npeId = ixNpeId;			    }			    /* get the highest traffic class for this queue */			    if (rxQueues[rxQueue].trafficClass > ixEthDBTrafficClass)			    {				rxQueues[rxQueue].trafficClass = ixEthDBTrafficClass;			    }			    break;			}		    }		    if (rxQueue == rxQueueCount)		    {			/* new queue not found in the current list,			 * add a new entry.			 */			IX_OSAL_ASSERT(rxQueueCount < IX_ETHACC_MAX_RX_QUEUES);			rxQueues[rxQueueCount].qId = ixEthDBParameter;			rxQueues[rxQueueCount].npeCount = 1;			rxQueues[rxQueueCount].npeId = ixNpeId;			rxQueues[rxQueueCount].trafficClass = ixEthDBTrafficClass;			rxQueueCount++;		    }		}		else		{		    /* unexpected property type (not Integer) */		    ret = IX_ETH_ACC_FAIL;                    IX_ETH_ACC_WARNING_LOG("ixEthAccQMgrQueuesConfig: unexpected property type returned by EthDB\n", 0, 0, 0, 0, 0, 0);		    /* no point to continue to iterate */		    break;		}	    }	    else	    {		/* No Rx queue configured for this port		 * and this traffic class. Do nothing.		 */	    }	}        /* notify EthDB that queue initialization is complete and traffic class allocation is frozen */        ixEthDBFeaturePropertySet(ixEthDbPortId,            IX_ETH_DB_VLAN_QOS,            IX_ETH_DB_QOS_QUEUE_CONFIGURATION_COMPLETE,            NULL /* ignored */);    }#else    ixNpeId = IX_ETH_ACC_PORT_TO_NPE_ID(ixEthAccPortId);    rxQueues[0].qId = 4;    rxQueues[0].npeCount = 1;    rxQueues[0].npeId = ixNpeId;    rxQueues[0].trafficClass = IX_ETH_DB_QOS_TRAFFIC_CLASS_0_RX_QUEUE_PROPERTY;    rxQueueCount++;#endif    /* check there is at least 1 rx queue : there is no point     * to continue if there is no rx queue configured     */    if ((rxQueueCount == 0) || (ret == IX_ETH_ACC_FAIL))    {        IX_ETH_ACC_WARNING_LOG("ixEthAccQMgrQueuesConfig: no queues configured, bailing out\n", 0, 0, 0, 0, 0, 0);	return (IX_ETH_ACC_FAIL);    }    /* Queue sort step:     *     * Re-order the array of queues by decreasing traffic class     * using a bubble sort. (trafficClass 0 is the lowest     * priority traffic, trafficClass 7 is the highest priority traffic)     *     * Primary sort order is traffic class     * Secondary sort order is npeId     *     * Note that a bubble sort algorithm is not very efficient when     * the number of queues grows . However, this is not a very bad choice     * considering the very small number of entries to sort. Also, bubble     * sort is extremely fast when the list is already sorted.     *     * The output of this loop is a sorted array of queues.     *     */    sortIterations = 0;    do    {	sortIterations++;	completelySorted = TRUE;	for (rxQueue = 0;	     rxQueue < rxQueueCount - sortIterations;	     rxQueue++)	{	    /* compare adjacent elements */	    if ((rxQueues[rxQueue].trafficClass <		rxQueues[rxQueue+1].trafficClass)		|| ((rxQueues[rxQueue].trafficClass ==		     rxQueues[rxQueue+1].trafficClass)		    &&(rxQueues[rxQueue].npeId <		       rxQueues[rxQueue+1].npeId)))	    {		/* swap adjacent elements */		int npeCount = rxQueues[rxQueue].npeCount;		UINT32 npeId = rxQueues[rxQueue].npeId;		IxQMgrQId qId = rxQueues[rxQueue].qId;		IxEthDBProperty trafficClass = rxQueues[rxQueue].trafficClass;		rxQueues[rxQueue].npeCount = rxQueues[rxQueue+1].npeCount;		rxQueues[rxQueue].npeId = rxQueues[rxQueue+1].npeId;		rxQueues[rxQueue].qId = rxQueues[rxQueue+1].qId;		rxQueues[rxQueue].trafficClass = rxQueues[rxQueue+1].trafficClass;		rxQueues[rxQueue+1].npeCount = npeCount;		rxQueues[rxQueue+1].npeId = npeId;		rxQueues[rxQueue+1].qId = qId;		rxQueues[rxQueue+1].trafficClass = trafficClass;		completelySorted = FALSE;	    }	}    }    while (!completelySorted);    /* Queue traffic class list:     *     * Fill an array of rx queues linked by ascending traffic classes.     *     * If the queues are configured as follows     *   qId 6 -> traffic class 0 (lowest)     *   qId 7 -> traffic class 0     *   qId 8 -> traffic class 6     *   qId 12 -> traffic class 7 (highest)     *     * Then the output of this loop will be     *     * higherPriorityQueue[6] = 8     * higherPriorityQueue[7] = 8     * higherPriorityQueue[8] = 12     * higherPriorityQueue[12] = Invalid queueId     * higherPriorityQueue[...] = Invalid queueId     *     * Note that this queue ordering does not handle all possibilities     * that could result from different rules associated with different     * ports, and inconsistencies in the rules. In all cases, the     * output of this  algorithm is a simple linked list of queues,     * without closed circuit.     * This list is implemented as an array with invalid values initialized     * with an "invalid" queue id which is the maximum number of queues.     *     */    /*     * Initialise the rx queue list.     */    for (rxQueue = 0; rxQueue < IX_QMGR_MAX_NUM_QUEUES; rxQueue++)    {	ixEthAccDataInfo.higherPriorityQueue[rxQueue] = IX_QMGR_MAX_NUM_QUEUES;    }    /* build the linked list for this NPE.     */    for (ixNpeId = 0;	 ixNpeId <= ixHighestNpeId;	 ixNpeId++)    {	/* iterate thru the sorted list of queues	 */	ixQId = IX_QMGR_MAX_NUM_QUEUES;	for (rxQueue = 0;	     rxQueue < rxQueueCount;	     rxQueue++)	{	    if (rxQueues[rxQueue].npeId == ixNpeId)	    {		ixEthAccDataInfo.higherPriorityQueue[rxQueues[rxQueue].qId] = ixQId;		/* iterate thru queues with the same traffic class		 * than the current queue. (queues are ordered by descending		 * traffic classes and npeIds).		 */		while ((rxQueue < rxQueueCount - 1)		       && (rxQueues[rxQueue].trafficClass			   == rxQueues[rxQueue+1].trafficClass)		       && (ixNpeId == rxQueues[rxQueue].npeId))		{		    rxQueue++;		    ixEthAccDataInfo.higherPriorityQueue[rxQueues[rxQueue].qId] = ixQId;		}		ixQId = rxQueues[rxQueue].qId;	    }	}    }    /* point on the first dynamic queue description */    qInfoDes = ixEthAccQmgrRxQueuesInfo;    /* update the list of queues with the rx queues */    for (rxQueue = 0;	 (rxQueue < rxQueueCount) && (ret == IX_ETH_ACC_SUCCESS);	 rxQueue++)    {	/* Don't utilize more than IX_ETHACC_MAX_LARGE_RX_QUEUES queues	 * with the full 128 entries.  For the lower priority queues, use	 * a smaller number of entries.  This ensures queue resources	 * remain available for other components.	 */	if( (rxQueueCount > IX_ETHACC_MAX_LARGE_RX_QUEUES) &&	    (rxQueue < rxQueueCount - IX_ETHACC_MAX_LARGE_RX_QUEUES) )	{	    /* add the small RX Queue setup template to the list of queues */	    memcpy(qInfoDes, &ixEthAccQmgrRxSmallTemplate, sizeof(*qInfoDes));	} else {	    /* add the default RX Queue setup template to the list of queues */	    memcpy(qInfoDes, &ixEthAccQmgrRxDefaultTemplate, sizeof(*qInfoDes));	}	/* setup the RxQueue ID */	qInfoDes->qId = rxQueues[rxQueue].qId;	/* setup the RxQueue watermark level	 *	 * Each queue can be filled by many NPEs. To avoid the	 * NPEs to write to a full queue, need to set the	 * high watermark level for nearly full condition.	 * (the high watermark level are a power of 2	 * starting from the top of the queue)	 *	 * Number of     watermark         *   ports        level         *    1             0	 *    2             1	 *    3             2	 *    4             4	 *    5             4	 *    6             8	 *    n          approx. 2**ceil(log2(n))	 */	if (rxQueues[rxQueue].npeCount == 1)	{	    qInfoDes->AlmostFullThreshold = IX_QMGR_Q_WM_LEVEL0;	}	else if (rxQueues[rxQueue].npeCount == 2)	{	    qInfoDes->AlmostFullThreshold = IX_QMGR_Q_WM_LEVEL1;	}	else if (rxQueues[rxQueue].npeCount == 3)	{	    qInfoDes->AlmostFullThreshold = IX_QMGR_Q_WM_LEVEL2;	}	else	{	    /* reach the maximum number for CSR 2.0 */            IX_ETH_ACC_WARNING_LOG("ixEthAccQMgrQueuesConfig: maximum number of NPEs per queue reached, bailing out\n", 0, 0, 0, 0, 0, 0);	    ret = IX_ETH_ACC_FAIL;	    break;	}	/* move to next queue entry */	++qInfoDes;    }    /* configure the static list (RxFree, Tx and TxDone queues) */    for (qInfoDes = ixEthAccQmgrStaticInfo;	 (qInfoDes->qCallback != (IxQMgrCallback) NULL )	     && (ret == IX_ETH_ACC_SUCCESS);	 ++qInfoDes)    {	ret = ixEthAccQMgrQueueSetup(qInfoDes);    }    /* configure the dynamic list (Rx queues) */    for (qInfoDes = ixEthAccQmgrRxQueuesInfo;	 (qInfoDes->qCallback != (IxQMgrCallback) NULL )	     && (ret == IX_ETH_ACC_SUCCESS);	 ++qInfoDes)    {	ret = ixEthAccQMgrQueueSetup(qInfoDes);    }    return(ret);}/** * @fn ixEthAccQMgrRxQEntryGet(UINT32 *rxQueueEntries) * * @brief Add and return the total number of entries in all Rx queues * * @param UINT32 rxQueueEntries[in] number of entries in all queues * * @return void * * @note Rx queues configuration is driven by Qos Setup. There is a * variable number of rx queues which are set at initialisation. * * @internal */IX_ETH_ACC_PUBLICvoid ixEthAccQMgrRxQEntryGet(UINT32 *numRxQueueEntries){    UINT32 rxQueueLevel;    IxEthAccQregInfo *qInfoDes;;    *numRxQueueEntries = 0;    /* iterate thru rx queues */    for (qInfoDes = ixEthAccQmgrRxQueuesInfo;	 qInfoDes->qCallback != (IxQMgrCallback)NULL;	 ++qInfoDes)    {	/* retrieve the rx queue level */	rxQueueLevel = 0;	ixQMgrQNumEntriesGet(qInfoDes->qId, &rxQueueLevel);	(*numRxQueueEntries) += rxQueueLevel;    }}/** * @fn ixEthAccQMgrRxCallbacksRegister(IxQMgrCallback ixQMgrCallback) * * @brief Change the callback registered to all rx queues. * * @param IxQMgrCallback ixQMgrCallback[in] QMgr callback to register * * @return IxEthAccStatus * * @note The user may decide to use different Rx mechanisms * (e.g. receive many frames at the same time , or receive *  one frame at a time, depending on the overall application *  performances). A different QMgr callback is registered. This *  way, there is no excessive pointer checks in the datapath. * * @internal */IX_ETH_ACC_PUBLICIxEthAccStatus ixEthAccQMgrRxCallbacksRegister(IxQMgrCallback ixQMgrCallback){    IxEthAccQregInfo *qInfoDes;    IxEthAccStatus ret = IX_ETH_ACC_SUCCESS;    /* parameter check */    if (NULL == ixQMgrCallback)    {	ret = IX_ETH_ACC_FAIL;    }    /* iterate thru rx queues */    for (qInfoDes = ixEthAccQmgrRxQueuesInfo;	 (qInfoDes->qCallback != (IxQMgrCallback) NULL )	     && (ret == IX_ETH_ACC_SUCCESS);	 ++qInfoDes)    {	/* register the rx callback for all queues */	if (ixQMgrNotificationCallbackSet(qInfoDes->qId,					     ixQMgrCallback,					     qInfoDes->callbackTag					     ) != IX_SUCCESS)	{	    ret = IX_ETH_ACC_FAIL;	}    }    return(ret);}/** * @fn ixEthAccSingleEthNpeCheck(IxEthAccPortId portId) * * @brief Check the npe exists for this port * * @param IxEthAccPortId portId[in] port * * @return IxEthAccStatus * * @internal */IX_ETH_ACC_PUBLICIxEthAccStatus ixEthAccSingleEthNpeCheck(IxEthAccPortId portId){    /* If not IXP42X A0 stepping, proceed to check for existence of coprocessors */    if ((IX_FEATURE_CTRL_SILICON_TYPE_A0 !=        (ixFeatureCtrlProductIdRead() & IX_FEATURE_CTRL_SILICON_STEPPING_MASK))        || (IX_FEATURE_CTRL_DEVICE_TYPE_IXP42X != ixFeatureCtrlDeviceRead ()))      {            if ((IX_ETH_PORT_1 == portId) &&                (ixFeatureCtrlComponentCheck(IX_FEATURECTRL_ETH0) ==                 IX_FEATURE_CTRL_COMPONENT_ENABLED))            {                return IX_ETH_ACC_SUCCESS;            }            if ((IX_ETH_PORT_2 == portId) &&                (ixFeatureCtrlComponentCheck(IX_FEATURECTRL_ETH1) ==                 IX_FEATURE_CTRL_COMPONENT_ENABLED))            {                return IX_ETH_ACC_SUCCESS;            }            if ((IX_ETH_PORT_3 == portId) &&                (ixFeatureCtrlComponentCheck(IX_FEATURECTRL_NPEA_ETH) ==                 IX_FEATURE_CTRL_COMPONENT_ENABLED))            {                return IX_ETH_ACC_SUCCESS;            }            return IX_ETH_ACC_FAIL;      }    return IX_ETH_ACC_SUCCESS;}/** * @fn ixEthAccStatsShow(void) * * @brief Displays all EthAcc stats * * @return void * */void ixEthAccStatsShow(IxEthAccPortId portId){    ixEthAccMdioShow();    printf("\nPort %u\nUnicast MAC : ", portId);    ixEthAccPortUnicastAddressShow(portId);    ixEthAccPortMulticastAddressShow(portId);    printf("\n");    ixEthAccDataPlaneShow();}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品久久久三级丝袜| 欧美日本视频在线| 在线观看免费亚洲| 精品欧美一区二区三区精品久久| 国产精品天天摸av网| 亚洲影院理伦片| 懂色中文一区二区在线播放| 欧美日本韩国一区二区三区视频| 欧美国产欧美综合| 蜜臀av亚洲一区中文字幕| 99国产精品久久久久| 国产午夜精品福利| 日韩av一区二区在线影视| 日本高清视频一区二区| 国产清纯美女被跳蛋高潮一区二区久久w | 欧美日韩1234| 国产精品久久久99| 国产精品1区二区.| 精品国产免费人成电影在线观看四季| 一区二区三区中文字幕电影| 成人国产视频在线观看| 国产欧美一区二区精品婷婷| 免费av网站大全久久| 7777精品伊人久久久大香线蕉经典版下载| 成人欧美一区二区三区| 成人免费电影视频| 欧美高清在线一区| 国产成人aaa| 中文字幕二三区不卡| 国产精一区二区三区| 日韩欧美成人一区| 国产一区视频导航| 久久久亚洲午夜电影| 久久精品久久99精品久久| 欧美伦理视频网站| 婷婷综合在线观看| 日韩欧美一二三| 美日韩黄色大片| 欧美日韩一区二区三区在线| 亚洲成人免费看| 7777精品伊人久久久大香线蕉经典版下载 | 日韩一区二区麻豆国产| 蜜桃视频在线观看一区二区| 日韩免费福利电影在线观看| 精品一区二区三区视频 | 激情伊人五月天久久综合| 日韩午夜电影av| 精品一区二区三区免费视频| 国产肉丝袜一区二区| youjizz国产精品| 亚洲综合一区二区精品导航| 欧美精品tushy高清| 久久精品国产77777蜜臀| 久久久久99精品一区| 99久久精品免费看| 亚洲成人福利片| 日韩欧美国产三级电影视频| 国产成人免费在线视频| 亚洲同性同志一二三专区| 91久久精品午夜一区二区| 天天射综合影视| 国产午夜精品久久| 在线区一区二视频| 精品综合久久久久久8888| 国产精品护士白丝一区av| 欧美男人的天堂一二区| 黄网站免费久久| 亚洲日本va在线观看| 日韩一卡二卡三卡| 成人黄色大片在线观看| 图片区小说区区亚洲影院| 久久久99精品久久| 精品视频在线免费观看| 日韩电影免费在线看| 中文字幕成人在线观看| 欧美日韩www| 成人涩涩免费视频| 天天色天天操综合| 中文字幕一区二区在线播放| 欧美一级一区二区| 色天天综合色天天久久| 国产精品一区二区在线观看不卡 | yourporn久久国产精品| 蜜臀av一级做a爰片久久| 亚洲乱码国产乱码精品精可以看 | 欧美日韩视频一区二区| 国产成人综合在线播放| 日韩国产精品久久久久久亚洲| 中文字幕成人在线观看| 精品久久一区二区三区| 欧美午夜精品免费| 99久久er热在这里只有精品66| 看国产成人h片视频| 午夜精品福利视频网站| 亚洲免费av网站| 国产精品无遮挡| 国产亚洲欧洲一区高清在线观看| 欧美精品日韩一区| 欧美最猛性xxxxx直播| 成人av在线资源网| 国产麻豆日韩欧美久久| 美女视频一区二区三区| 日本中文字幕一区二区有限公司| 亚洲精品免费视频| 亚洲精品日产精品乱码不卡| 国产精品素人一区二区| 国产欧美一区二区在线| 欧美不卡在线视频| 日韩欧美一区在线| 日韩欧美专区在线| 日韩精品一区二区三区中文不卡 | 国产亚洲综合av| 久久综合色一综合色88| 日韩一区二区视频在线观看| 制服丝袜激情欧洲亚洲| 欧美日韩成人激情| 制服.丝袜.亚洲.另类.中文 | 日韩欧美成人激情| 欧美电影免费观看完整版| 日韩一级片网站| 精品国产乱码久久久久久久久 | 日本sm残虐另类| 蜜臀久久99精品久久久久宅男| 天天综合天天综合色| 日韩国产精品91| 久久69国产一区二区蜜臀| 韩国中文字幕2020精品| 粉嫩绯色av一区二区在线观看| 国产成人福利片| 97精品超碰一区二区三区| 色诱亚洲精品久久久久久| 日本久久一区二区三区| 在线观看91av| 精品国精品国产| 国产精品乱子久久久久| 一区二区成人在线观看| 日韩成人午夜精品| 国产一区二区三区香蕉| 99热这里都是精品| 欧美吞精做爰啪啪高潮| 精品卡一卡二卡三卡四在线| 欧美激情综合网| 亚洲自拍欧美精品| 美腿丝袜在线亚洲一区| 精品一区二区久久久| 成人在线综合网站| 久久久久久免费毛片精品| 国产午夜精品一区二区| 亚洲最大色网站| 蜜桃传媒麻豆第一区在线观看| 国产精品99久久久久久有的能看| av一二三不卡影片| 91精品国产美女浴室洗澡无遮挡| 2023国产一二三区日本精品2022| 国产精品久久久久精k8| 日本美女一区二区三区| 风间由美性色一区二区三区| 欧美视频精品在线| 国产视频911| 日韩国产欧美一区二区三区| 成人h精品动漫一区二区三区| 欧美视频一区在线| 国产欧美日韩精品a在线观看| 亚洲成av人片| 成人黄色国产精品网站大全在线免费观看 | 国产精品视频线看| 日韩高清不卡一区| 91小视频免费观看| 久久丝袜美腿综合| 日韩av成人高清| 色猫猫国产区一区二在线视频| 精品久久久久99| 亚洲成人av资源| 不卡av免费在线观看| 精品日本一线二线三线不卡 | 亚洲视频在线一区| 久久99热99| 欧美电影在线免费观看| 亚洲男女毛片无遮挡| 成人污污视频在线观看| 精品理论电影在线| 免费观看一级特黄欧美大片| 日本丶国产丶欧美色综合| 国产三级精品在线| 国产精品白丝av| 久久夜色精品一区| 久久成人免费网| 日韩免费电影一区| 久久精品免费观看| 欧美va天堂va视频va在线| 蜜臀av性久久久久蜜臀aⅴ流畅| 欧美日韩在线播放| 亚洲成人自拍网| 欧美日韩亚洲综合| 亚洲成人一区二区| 欧美色精品在线视频| 午夜在线成人av| 欧美亚洲日本国产| 香蕉成人伊视频在线观看| 欧美日韩免费在线视频|