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

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

?? ixethaccmac.c

?? 友善mini2440嵌入式
?? C
?? 第 1 頁 / 共 5 頁
字號:
/** * @file IxEthAccMac.c * * @author Intel Corporation * @date * * @brief  MAC control functions * * 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 "IxOsal.h"#include "IxNpeMh.h"#ifdef CONFIG_IXP425_COMPONENT_ETHDB#include "IxEthDB.h"#endif#include "IxEthDBPortDefs.h"#include "IxEthNpe.h"#include "IxEthAcc.h"#include "IxEthAccDataPlane_p.h"#include "IxEthAcc_p.h"#include "IxEthAccMac_p.h"/* Maximum number of retries during ixEthAccPortDisable, which * is approximately 10 seconds*/#define IX_ETH_ACC_MAX_RETRY 500/* Maximum number of retries during ixEthAccPortDisable when expecting * timeout */#define IX_ETH_ACC_MAX_RETRY_TIMEOUT 5#define IX_ETH_ACC_VALIDATE_PORT_ID(portId) \    do                                                           \    {                                                            \        if(!IX_ETH_ACC_IS_PORT_VALID(portId))   \        {                                                        \	    return IX_ETH_ACC_INVALID_PORT;                      \        }                                                        \    } while(0)PUBLIC IxEthAccMacState ixEthAccMacState[IX_ETH_ACC_NUMBER_OF_PORTS];PRIVATE UINT32 ixEthAccMacBase[IX_ETH_ACC_NUMBER_OF_PORTS];/*Forward function declarations*/PRIVATE voidixEthAccPortDisableRx (IxEthAccPortId portId,		       IX_OSAL_MBUF * mBufPtr,		       BOOL useMultiBufferCallback);PRIVATE voidixEthAccPortDisableRxAndReplenish (IxEthAccPortId portId,				   IX_OSAL_MBUF * mBufPtr,				   BOOL useMultiBufferCallback);PRIVATE voidixEthAccPortDisableTxDone (UINT32 cbTag,			   IX_OSAL_MBUF *mbuf);PRIVATE voidixEthAccPortDisableTxDoneAndSubmit (UINT32 cbTag,				    IX_OSAL_MBUF *mbuf);PRIVATE voidixEthAccPortDisableRxCallback (UINT32 cbTag,			       IX_OSAL_MBUF * mBufPtr,			       UINT32 learnedPortId);PRIVATE voidixEthAccPortDisableMultiBufferRxCallback (UINT32 cbTag,					  IX_OSAL_MBUF **mBufPtr);PRIVATE IxEthAccStatusixEthAccPortDisableTryTransmit(UINT32 portId);PRIVATE IxEthAccStatusixEthAccPortDisableTryReplenish(UINT32 portId);PRIVATE IxEthAccStatusixEthAccPortMulticastMacAddressGet (IxEthAccPortId portId,				    IxEthAccMacAddr *macAddr);PRIVATE IxEthAccStatusixEthAccPortMulticastMacFilterGet (IxEthAccPortId portId,				   IxEthAccMacAddr *macAddr);PRIVATE voidixEthAccMacNpeStatsMessageCallback (IxNpeMhNpeId npeId,				    IxNpeMhMessage msg);PRIVATE voidixEthAccMacNpeStatsResetMessageCallback (IxNpeMhNpeId npeId,					 IxNpeMhMessage msg);PRIVATE voidixEthAccNpeLoopbackMessageCallback (IxNpeMhNpeId npeId,				    IxNpeMhMessage msg);PRIVATE voidixEthAccMulticastAddressSet(IxEthAccPortId portId);PRIVATE BOOLixEthAccMacEqual(IxEthAccMacAddr *macAddr1,		 IxEthAccMacAddr *macAddr2);PRIVATE voidixEthAccMacPrint(IxEthAccMacAddr *m);PRIVATE voidixEthAccMacStateUpdate(IxEthAccPortId portId);IxEthAccStatusixEthAccMacMemInit(void){    ixEthAccMacBase[IX_ETH_PORT_1] =	(UINT32) IX_OSAL_MEM_MAP(IX_ETH_ACC_MAC_0_BASE,				 IX_OSAL_IXP400_ETHA_MAP_SIZE);    ixEthAccMacBase[IX_ETH_PORT_2] =	(UINT32) IX_OSAL_MEM_MAP(IX_ETH_ACC_MAC_1_BASE,				 IX_OSAL_IXP400_ETHB_MAP_SIZE);#ifdef __ixp46X    ixEthAccMacBase[IX_ETH_PORT_3] =	(UINT32) IX_OSAL_MEM_MAP(IX_ETH_ACC_MAC_2_BASE,				 IX_OSAL_IXP400_ETH_NPEA_MAP_SIZE);    if (ixEthAccMacBase[IX_ETH_PORT_3] == 0)    {	ixOsalLog(IX_OSAL_LOG_LVL_FATAL,		  IX_OSAL_LOG_DEV_STDOUT,		  "EthAcc: Could not map MAC I/O memory\n",		  0, 0, 0, 0, 0 ,0);	return IX_ETH_ACC_FAIL;    }#endif    if (ixEthAccMacBase[IX_ETH_PORT_1] == 0	|| ixEthAccMacBase[IX_ETH_PORT_2] == 0)    {	ixOsalLog(IX_OSAL_LOG_LVL_FATAL,		  IX_OSAL_LOG_DEV_STDOUT,		  "EthAcc: Could not map MAC I/O memory\n",		  0, 0, 0, 0, 0 ,0);	return IX_ETH_ACC_FAIL;    }    return IX_ETH_ACC_SUCCESS;}voidixEthAccMacUnload(void){    IX_OSAL_MEM_UNMAP(ixEthAccMacBase[IX_ETH_PORT_1]);    IX_OSAL_MEM_UNMAP(ixEthAccMacBase[IX_ETH_PORT_2]);#ifdef __ixp46X    IX_OSAL_MEM_UNMAP(ixEthAccMacBase[IX_ETH_PORT_3]);    ixEthAccMacBase[IX_ETH_PORT_3] = 0;#endif    ixEthAccMacBase[IX_ETH_PORT_2] = 0;    ixEthAccMacBase[IX_ETH_PORT_1] = 0;}IxEthAccStatusixEthAccPortEnablePriv(IxEthAccPortId portId){    IX_ETH_ACC_VALIDATE_PORT_ID(portId);    if (IX_ETH_ACC_SUCCESS != ixEthAccSingleEthNpeCheck(portId))    {        IX_ETH_ACC_WARNING_LOG("EthAcc: Unavailable Eth %d: Cannot enable port.\n",(INT32)portId,0,0,0,0,0);        return IX_ETH_ACC_SUCCESS ;    }    if (!IX_ETH_IS_PORT_INITIALIZED(portId))    {        printf("EthAcc: (Mac) cannot enable port %d, port not initialized\n", portId);	return (IX_ETH_ACC_PORT_UNINITIALIZED);    }    if (ixEthAccPortData[portId].ixEthAccTxData.txBufferDoneCallbackFn == NULL)    {        /* TxDone callback not registered */        printf("EthAcc: (Mac) cannot enable port %d, TxDone callback not registered\n", portId);	return (IX_ETH_ACC_PORT_UNINITIALIZED);    }    if ((ixEthAccPortData[portId].ixEthAccRxData.rxCallbackFn == NULL)	&& (ixEthAccPortData[portId].ixEthAccRxData.rxMultiBufferCallbackFn == NULL))    {        /* Receive callback not registered */        printf("EthAcc: (Mac) cannot enable port %d, Rx callback not registered\n", portId);	return (IX_ETH_ACC_PORT_UNINITIALIZED);    }    if(!ixEthAccMacState[portId].initDone)    {        printf("EthAcc: (Mac) cannot enable port %d, MAC address not set\n", portId);	return (IX_ETH_ACC_MAC_UNINITIALIZED);    }    /* if the state is being set to what it is already at, do nothing*/    if (ixEthAccMacState[portId].enabled)    {        return IX_ETH_ACC_SUCCESS;    }#ifdef CONFIG_IXP425_COMPONENT_ETHDB    /* enable ethernet database for this port */    if (ixEthDBPortEnable(portId) != IX_ETH_DB_SUCCESS)    {        printf("EthAcc: (Mac) cannot enable port %d, EthDB failure\n", portId);        return IX_ETH_ACC_FAIL;    }#endif    /* set the MAC core registers */    REG_WRITE(ixEthAccMacBase[portId],	      IX_ETH_ACC_MAC_TX_CNTRL2,	      IX_ETH_ACC_TX_CNTRL2_RETRIES_MASK);    REG_WRITE(ixEthAccMacBase[portId],	      IX_ETH_ACC_MAC_RANDOM_SEED,	      IX_ETH_ACC_RANDOM_SEED_DEFAULT);    REG_WRITE(ixEthAccMacBase[portId],	      IX_ETH_ACC_MAC_THRESH_P_EMPTY,	      IX_ETH_ACC_MAC_THRESH_P_EMPTY_DEFAULT);    REG_WRITE(ixEthAccMacBase[portId],	      IX_ETH_ACC_MAC_THRESH_P_FULL,	      IX_ETH_ACC_MAC_THRESH_P_FULL_DEFAULT);    REG_WRITE(ixEthAccMacBase[portId],	      IX_ETH_ACC_MAC_TX_DEFER,	      IX_ETH_ACC_MAC_TX_DEFER_DEFAULT);    REG_WRITE(ixEthAccMacBase[portId],	      IX_ETH_ACC_MAC_TX_TWO_DEFER_1,	      IX_ETH_ACC_MAC_TX_TWO_DEFER_1_DEFAULT);    REG_WRITE(ixEthAccMacBase[portId],	      IX_ETH_ACC_MAC_TX_TWO_DEFER_2,	      IX_ETH_ACC_MAC_TX_TWO_DEFER_2_DEFAULT);    REG_WRITE(ixEthAccMacBase[portId],	      IX_ETH_ACC_MAC_SLOT_TIME,	      IX_ETH_ACC_MAC_SLOT_TIME_DEFAULT);    REG_WRITE(ixEthAccMacBase[portId],	      IX_ETH_ACC_MAC_INT_CLK_THRESH,	      IX_ETH_ACC_MAC_INT_CLK_THRESH_DEFAULT);    REG_WRITE(ixEthAccMacBase[portId],	      IX_ETH_ACC_MAC_BUF_SIZE_TX,	      IX_ETH_ACC_MAC_BUF_SIZE_TX_DEFAULT);    REG_WRITE(ixEthAccMacBase[portId],	      IX_ETH_ACC_MAC_TX_CNTRL1,	      IX_ETH_ACC_TX_CNTRL1_DEFAULT);    REG_WRITE(ixEthAccMacBase[portId],	      IX_ETH_ACC_MAC_RX_CNTRL1,	      IX_ETH_ACC_RX_CNTRL1_DEFAULT);    /* set the global state */    ixEthAccMacState[portId].portDisableState = ACTIVE;    ixEthAccMacState[portId].enabled = TRUE;    /* rewrite the setup (including mac filtering) depending     * on current options     */    ixEthAccMacStateUpdate(portId);    return IX_ETH_ACC_SUCCESS;}/* * PortDisable local variables. They contain the intermediate steps * while the port is being disabled and the buffers being drained out * of the NPE. */typedef void (*IxEthAccPortDisableRx)(IxEthAccPortId portId,				      IX_OSAL_MBUF * mBufPtr,				      BOOL useMultiBufferCallback);static IxEthAccPortRxCallbackixEthAccPortDisableFn[IX_ETH_ACC_NUMBER_OF_PORTS];static IxEthAccPortMultiBufferRxCallbackixEthAccPortDisableMultiBufferFn[IX_ETH_ACC_NUMBER_OF_PORTS];static IxEthAccPortDisableRxixEthAccPortDisableRxTable[IX_ETH_ACC_NUMBER_OF_PORTS];static UINT32ixEthAccPortDisableCbTag[IX_ETH_ACC_NUMBER_OF_PORTS];static UINT32ixEthAccPortDisableMultiBufferCbTag[IX_ETH_ACC_NUMBER_OF_PORTS];static IxEthAccPortTxDoneCallbackixEthAccPortDisableTxDoneFn[IX_ETH_ACC_NUMBER_OF_PORTS];static UINT32ixEthAccPortDisableTxDoneCbTag[IX_ETH_ACC_NUMBER_OF_PORTS];static UINT32ixEthAccPortDisableUserBufferCount[IX_ETH_ACC_NUMBER_OF_PORTS];/* * PortDisable private callbacks functions. They handle the user * traffic, and the special buffers (one for tx, one for rx) used * in portDisable. */PRIVATE voidixEthAccPortDisableTxDone(UINT32 cbTag,			  IX_OSAL_MBUF *mbuf){    IxEthAccPortId portId = (IxEthAccPortId)cbTag;    volatile IxEthAccPortDisableState *txState = &ixEthAccMacState[portId].txState;    /* check for the special mbuf used in portDisable */    if (mbuf == ixEthAccMacState[portId].portDisableTxMbufPtr)    {        *txState = TRANSMIT_DONE;    }    else    {	/* increment the count of user traffic during portDisable */	ixEthAccPortDisableUserBufferCount[portId]++;       /* call client TxDone function */        ixEthAccPortDisableTxDoneFn[portId](ixEthAccPortDisableTxDoneCbTag[portId], mbuf);    }}PRIVATE IxEthAccStatusixEthAccPortDisableTryTransmit(UINT32 portId){    int key;    IxEthAccStatus status = IX_ETH_ACC_SUCCESS;    volatile IxEthAccPortDisableState *txState = &ixEthAccMacState[portId].txState;    /* transmit the special buffer again if it is transmitted     * and update the txState     * This section is protected because the portDisable context     * run an identical code, so the system keeps transmitting at the     * maximum rate.     */    key = ixOsalIrqLock();    if (*txState == TRANSMIT_DONE)    {	IX_OSAL_MBUF *mbufTxPtr = ixEthAccMacState[portId].portDisableTxMbufPtr;	*txState = TRANSMIT;	status = ixEthAccPortTxFrameSubmit(portId,					   mbufTxPtr,					   IX_ETH_ACC_TX_DEFAULT_PRIORITY);    }    ixOsalIrqUnlock(key);    return status;}PRIVATE voidixEthAccPortDisableTxDoneAndSubmit(UINT32 cbTag,				   IX_OSAL_MBUF *mbuf){    IxEthAccPortId portId = (IxEthAccPortId)cbTag;    /* call the callback which forwards the traffic to the client */    ixEthAccPortDisableTxDone(cbTag, mbuf);    /* try to transmit the buffer used in portDisable     * if seen in TxDone     */    ixEthAccPortDisableTryTransmit(portId);}PRIVATE voidixEthAccPortDisableRx (IxEthAccPortId portId,		       IX_OSAL_MBUF * mBufPtr,		       BOOL useMultiBufferCallback){    volatile IxEthAccPortDisableState *rxState = &ixEthAccMacState[portId].rxState;    IX_OSAL_MBUF *mNextPtr;    while (mBufPtr)    {	mNextPtr = IX_OSAL_MBUF_NEXT_BUFFER_IN_PKT_PTR(mBufPtr);	IX_OSAL_MBUF_NEXT_BUFFER_IN_PKT_PTR(mBufPtr) = NULL;	/* check for the special mbuf used in portDisable */	if (mBufPtr == ixEthAccMacState[portId].portDisableRxMbufPtr)	{            *rxState = RECEIVE;	}	else	{	    /* increment the count of user traffic during portDisable */	    ixEthAccPortDisableUserBufferCount[portId]++;	    /* reset the received payload length during portDisable */	    IX_OSAL_MBUF_MLEN(mBufPtr)    = 0;	    IX_OSAL_MBUF_PKT_LEN(mBufPtr) = 0;	    if (useMultiBufferCallback)	    {		/* call the user callback with one unchained		 * buffer, without payload. A small array is built		 * to be used as a parameter (the user callback expects		 * to receive an array ended by a NULL pointer.		 */		IX_OSAL_MBUF *mBufPtrArray[2];		mBufPtrArray[0] = mBufPtr;		mBufPtrArray[1] = NULL;		ixEthAccPortDisableMultiBufferFn[portId](			 ixEthAccPortDisableMultiBufferCbTag[portId],			 mBufPtrArray);	    }	    else	    {		/* call the user callback with a unchained

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产清纯白嫩初高生在线观看91| 一区二区三区欧美日| 欧美日韩在线免费视频| av中文字幕不卡| 成人黄色片在线观看| 99亚偷拍自图区亚洲| 波多野结衣在线aⅴ中文字幕不卡| 国产精华液一区二区三区| 狠狠色狠狠色综合| 国产精品综合二区| 99热在这里有精品免费| 在线免费不卡视频| 一区二区免费在线| 捆绑调教一区二区三区| 琪琪久久久久日韩精品| 久久综合一区二区| 精品一区二区三区视频在线观看| 美腿丝袜亚洲综合| 国产精品人妖ts系列视频| 韩国理伦片一区二区三区在线播放 | av午夜精品一区二区三区| 成人毛片在线观看| 91香蕉视频mp4| 91精品一区二区三区久久久久久| 久久国产尿小便嘘嘘| 久久久不卡网国产精品一区| 欧美中文字幕一区二区三区| 8x8x8国产精品| 久久九九久久九九| 午夜精品成人在线视频| 国产91精品免费| 一本一本大道香蕉久在线精品 | 老司机免费视频一区二区三区| 青娱乐精品视频在线| 不卡欧美aaaaa| 91精品国产一区二区三区| 久久久久久亚洲综合| 亚洲人成网站精品片在线观看| 日本成人在线不卡视频| 大桥未久av一区二区三区中文| 色偷偷成人一区二区三区91 | 中文字幕va一区二区三区| 一区二区三区免费看视频| 黄色成人免费在线| 欧美日韩精品一区二区天天拍小说| 久久婷婷国产综合国色天香| 亚洲精品videosex极品| 国产精品一区二区在线播放| 欧美日韩精品一区视频| 亚洲丝袜另类动漫二区| 激情久久五月天| 欧美二区三区的天堂| 中文字幕综合网| 国产精品一区二区三区99| 日韩视频一区二区三区在线播放| 国产精品久久毛片av大全日韩| 蜜桃视频在线观看一区二区| 欧美做爰猛烈大尺度电影无法无天| 久久久久国产精品厨房| 日日骚欧美日韩| 欧美专区日韩专区| 亚洲狠狠丁香婷婷综合久久久| 国产伦精品一区二区三区在线观看 | 99热国产精品| 久久丝袜美腿综合| 麻豆91精品91久久久的内涵| 在线亚洲+欧美+日本专区| 欧美经典三级视频一区二区三区| 精品一区二区三区久久| 4438成人网| 午夜精品福利一区二区三区蜜桃| 91丝袜高跟美女视频| 成人欧美一区二区三区白人| 风间由美一区二区av101| 精品国产99国产精品| 精品无码三级在线观看视频| 欧美一区二区二区| 韩国精品主播一区二区在线观看 | 免费观看一级特黄欧美大片| 欧美三电影在线| 亚洲v日本v欧美v久久精品| 日本精品视频一区二区三区| 亚洲精品欧美二区三区中文字幕| aa级大片欧美| 亚洲大片一区二区三区| 91麻豆精品国产91久久久久久| 亚洲成人av在线电影| 欧美日韩精品免费| 老司机精品视频导航| 久久久精品欧美丰满| 成人免费观看视频| 亚洲视频免费在线观看| 色素色在线综合| 日韩激情视频网站| 精品久久国产字幕高潮| 国产成人亚洲综合a∨猫咪| 最新中文字幕一区二区三区| 日本大香伊一区二区三区| 亚洲成人一区二区| 2020国产精品自拍| 91亚洲精品一区二区乱码| 亚洲中国最大av网站| 日韩一区二区三| 国产成人午夜精品影院观看视频| 中文字幕一区二区三区av| 欧美日韩在线播| 国产一区三区三区| 亚洲精品视频一区| 日韩一区二区三区免费观看| 国产在线不卡视频| 亚洲午夜国产一区99re久久| 337p粉嫩大胆噜噜噜噜噜91av | 秋霞午夜av一区二区三区| 久久综合久色欧美综合狠狠| 99久免费精品视频在线观看 | 久久久久国产精品麻豆ai换脸 | 婷婷久久综合九色综合绿巨人| 337p粉嫩大胆噜噜噜噜噜91av| 91久久久免费一区二区| 久久精品国产99| 亚洲精品免费播放| 久久亚洲精精品中文字幕早川悠里| 色老汉av一区二区三区| 麻豆专区一区二区三区四区五区| 中文字幕国产一区| 欧美一区二区三区白人| 日本韩国欧美国产| 国产麻豆欧美日韩一区| 日韩精品免费视频人成| 亚洲精品水蜜桃| 国产日韩亚洲欧美综合| 欧美挠脚心视频网站| 成人动漫在线一区| 黄页网站大全一区二区| 亚洲sss视频在线视频| 亚洲欧美日韩电影| 中文字幕巨乱亚洲| 国产欧美日韩三区| 日韩视频在线你懂得| 精品视频一区三区九区| av电影在线观看完整版一区二区| 国产剧情av麻豆香蕉精品| 免费xxxx性欧美18vr| 亚洲gay无套男同| 一区二区在线观看视频| 亚洲日本在线a| 一区视频在线播放| 国产精品久久夜| 国产欧美日韩在线看| 国产亚洲美州欧州综合国| 精品国产电影一区二区| 欧美大片在线观看| 欧美精品一区二区三区视频| 精品国产一区二区精华| 欧美精品一区二区三区高清aⅴ| 欧美一级黄色录像| 精品国产网站在线观看| 精品国产百合女同互慰| 国产午夜亚洲精品理论片色戒| 久久伊人中文字幕| 中文字幕精品综合| 一色桃子久久精品亚洲| 一区二区高清在线| 日韩精品成人一区二区在线| 日韩av中文字幕一区二区 | 国产午夜精品一区二区三区视频 | 麻豆精品国产传媒mv男同| 裸体健美xxxx欧美裸体表演| 美女网站色91| 国产丶欧美丶日本不卡视频| 成人av网站大全| 91尤物视频在线观看| 欧美日韩一区二区欧美激情| 欧美日韩日日摸| 日韩视频免费观看高清完整版在线观看 | 精品乱码亚洲一区二区不卡| 精品国产一区二区三区忘忧草 | 成人综合婷婷国产精品久久免费| 国产成人av福利| 99re这里都是精品| 欧美三区在线视频| 日韩精品一区二区三区蜜臀 | 国产精品每日更新| 亚洲成人精品在线观看| 精品一区二区三区免费观看| 国产成人欧美日韩在线电影| 99re这里都是精品| 欧美一级日韩一级| 最新国产精品久久精品| 日韩中文字幕不卡| 成人午夜激情影院| 欧美一区二区在线免费播放| 中文字幕高清一区| 奇米色一区二区三区四区| 国产成人啪免费观看软件| 欧洲激情一区二区| 国产欧美日韩精品a在线观看| 亚洲激情自拍偷拍| 国产91精品一区二区麻豆亚洲| 欧美日韩精品电影|