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

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

?? ssx31bdrv.c

?? 海思KEY驅動
?? C
?? 第 1 頁 / 共 5 頁
字號:
#ifdef __cplusplus
extern "C" {
#endif

#include <linux/config.h>
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/pci.h>
#include <linux/init.h>
#include <linux/ioport.h>
#include <linux/errno.h>

#include <linux/slab.h>
#include <linux/delay.h>
/* #include <asm/io.h> */

 
#include "../def.h"
#include "../SSX31.h"
#include "SSX31BDrv.h"

MBufQ_S mbufq[SSX31B_MBUFQ_LEN];
USHORT mbufq_writer;
USHORT mbufq_reader;


//extern int ssx31_dma_virt_mapping_add(ULONG dma_phys_addr,ULONG virtAddr,ULONG BufLen);
//extern void ssx31_dma_virt_mapping_del(ULONG dma_phys_addr, ULONG virtAddr);
extern ULONG ssx31_dma_virt_mapping_findByDmaPhys(ULONG dma_phys_addr,ULONG* BufLen);
extern ULONG ssx31_dma_virt_mapping_findByVirt(ULONG virtAddr,ULONG* BufLen);
extern void* ssx31_consistent_alloc(int flag, ULONG size, dma_addr_t* pDmaAddr);
extern void ssx31_consistent_free(void* virtAddr,ULONG size, dma_addr_t dmaAddr);
extern ULONG ssx31_dma_virt_mapping_PreDelByDmaPhys(ULONG dma_phys_addr,ULONG* BufLen);
extern ULONG ssx31_dma_virt_mapping_PreDelByVirt(ULONG virtAddr,ULONG* BufLen);


ULONG SSX31B_Vrp_IoCtl(ULONG ulPhyLink, ULONG ulCmdIndex, CHAR *pData);
ULONG SSX31B_Transmit(ULONG , MBUF_S *, UCHAR* , dma_addr_t , ULONG );
ULONG SSX31B_Transmit_Basic(ULONG , MBUF_S *, UCHAR* , dma_addr_t , ULONG );

VOID  SSX31B_ISR(SSX31BDRV_CTRL *  pDrvCtrl);

ULONG SSX31B_PhyUpdateSA(ULONG ulPhyLink, VOID * pTDB, dma_addr_t pTDB_dma_phys, ULONG ulSaNum);

VOID SSX31B_ShowReg(SSX31BDRV_CTRL *  pDrvCtrl, UCHAR* pucBuffer);
 
ULONG SSX31B_FreeBDDesc(SSX31BDRV_CTRL *  pDrvCtrl, SSX31B_IPSEC_RD* pRdDesc); 

 ULONG four_bytes_align_en (ULONG ulBusAddr,ULONG ulVirAddr);

extern  wait_queue_head_t appwait;
extern  wait_queue_head_t inwait;


char bIPSecPerf;
extern unsigned long g_ipsec_performace_num;
extern struct semaphore ipsec_perf_sema;

ULONG SSX31B_Reset(SSX31BDRV_CTRL* pDrvCtrl)
{
    ULONG ulTempID = 0x10;
    LONG  lIntmask = 0;
    
    SplImp(&lIntmask);


    PciWrite32(SSX31B_REG_MRID, ulTempID | MASK_MRID_RST);


    UsDelay(10);

    ulTempID &= ~MASK_MRID_RST;
    PciWrite32(SSX31B_REG_MRID, ulTempID);
    
    

    PciRead32(SSX31B_REG_MRID, &ulTempID);
    if ((ulTempID & 0xff) != 0x10)
    {
        PRINT("SSX31B version err2:%08x.\r\n", ulTempID);
        return ERR;
    }

    SplX(lIntmask);

    return OK;
}


ULONG SSX31B_PCInit(SSX31BDRV_CTRL* pDrvCtrl)
{
     pci_write_config_dword (pDrvCtrl->pPciDev, 0x04, 0xFFFF0146 );

     pci_write_config_word (pDrvCtrl->pPciDev, 0x0c, 0x4020 );

 	return OK;
}


ULONG SSX31B_SdramInit(SSX31BDRV_CTRL* pDrvCtrl)
{
    ULONG ulTemp, ulTemp1;

    PciWrite32(SSX31B_REG_CLK_ENABLE, CLOCK_ENABLE);


    ulTemp = SDRAM_CTRL_COL_BIT; 
    ulTemp <<= 3;
    ulTemp |= SDRAM_CTRL_CAS_LATENCY;
    ulTemp <<= 16;
    ulTemp |= SDRAM_CTRL_REFRESH_FREQ; 
    ulTemp |= SDRAM_CTRL_SDR_INIT;

    PciWrite32(SSX31B_REG_SDRAM_CTRL, ulTemp);
    PciRead32(SSX31B_REG_SDRAM_CTRL, &ulTemp1);
    
    if (ulTemp1 != ulTemp)
    {
        PRINT("\r\nSSX31B SDRAM init err 1 write %08x read %08x \r\n", ulTemp, ulTemp1);
        return ERR;
    }
    ulTemp &= ~SDRAM_CTRL_SDR_INIT;

    PciWrite32(SSX31B_REG_SDRAM_CTRL, ulTemp);
    PciRead32(SSX31B_REG_SDRAM_CTRL, &ulTemp1);
    if (ulTemp1 != ulTemp)
    {
        PRINT("\r\nSSX31B SDRAM init err 2 write %08x read %08x \r\n", ulTemp, ulTemp1);
        return ERR;
    }

    PRINT("\r\nSSX31B SDRAM Init %08x done!\n", ulTemp);    

    return OK;
}


ULONG SSX31B_MCInit(SSX31BDRV_CTRL* pDrvCtrl)
{
    ULONG ulTmp;


    if (SSX31B_Reset(pDrvCtrl) == ERR)
        goto InitError;
    


    if (SSX31B_SdramInit(pDrvCtrl) == ERR)
        goto InitError;


    
    ulTmp = (INT_CTRL2_PAKT_COUNT << INT_CTRL2_TIME_COUNT_BIT);
    ulTmp |= INT_CTRL2_TIME_INTERVAL;

    PciWrite32(SSX31B_REG_INT_CTRL2, ulTmp);
    
    PciWrite32(SSX31B_REG_INT_CTRL1, ulTmp);


    PciWrite32(SSX31B_REG_INT_MASK, SSX31B_INT_MASK | INT_MASK_DMA2_PAKT_OPDONE | INT_MASK_DMA2_PROC_TMOUT);


    PciWrite32(SSX31B_REG_CYC_CNT_1US, CYC_CNT_1US);

    return OK;
  
InitError:
    return ERR;
}



ULONG SSX31B_PEInit(SSX31BDRV_CTRL* pDrvCtrl)
{
    ULONG ulTmp;

    ulTmp = (PE_CTRL_ENGINE_SEL << PE_CTRL_ENGINE_SEL_BIT); /* three engine */
    ulTmp |= PE_CTRL_PACK_FILTER;

    PciWrite32(SSX31B_REG_PE_CTRL, ulTmp);
    
    return OK;
}



ULONG SSX31B_MemoryInit(SSX31BDRV_CTRL* pDrvCtrl)
{
    ULONG ulIPSecMemPoolSize, ulSaMemPoolSize, ulPkeMemPoolSize, i,ulSize,ulGatherSize,ulCtrlWordSize;
    dma_addr_t dma_buf_phys;
	
    pDrvCtrl->ulIPSecBDDescs = SSX31B_IPSEC_BDQUEUE_LEN;
    pDrvCtrl->ulIPSecRDDescs = SSX31B_IPSEC_RDQUEUE_LEN;

    ulIPSecMemPoolSize = pDrvCtrl->ulIPSecBDDescs * (SSX31B_IPSEC_BD_LENGTH) + \
                         pDrvCtrl->ulIPSecRDDescs * (SSX31B_IPSEC_RD_LENGTH);


    pDrvCtrl->ulSaBDDescs = SSX31B_SA_BDQUEUE_LEN;
    pDrvCtrl->ulSaRDDescs = SSX31B_SA_RDQUEUE_LEN;

    ulSaMemPoolSize = pDrvCtrl->ulSaBDDescs * (SSX31B_BASIC_BD_LENGTH) + \
                      pDrvCtrl->ulSaRDDescs * (SSX31B_BASIC_RD_LENGTH);

    
    pDrvCtrl->ulPkeBDDescs = SSX31B_PKE_BDQUEUE_LEN;
    pDrvCtrl->ulPkeRDDescs = SSX31B_PKE_RDQUEUE_LEN;

    ulPkeMemPoolSize = pDrvCtrl->ulPkeBDDescs * (SSX31B_PKE_BD_LENGTH) + \
                      pDrvCtrl->ulPkeRDDescs * (SSX31B_PKE_RD_LENGTH);

    ulSize= ulIPSecMemPoolSize + ulSaMemPoolSize + ulPkeMemPoolSize;
       
    pDrvCtrl->ulMemBase = (ULONG) consistent_alloc(GFP_KERNEL|GFP_DMA,ulSize,&dma_buf_phys);
    if (pDrvCtrl->ulMemBase == 0)
    {
        PRINT("\r\nSSX31B mem Init failed.");
        return ERR;
    }
   pDrvCtrl->ulMemSize=ulSize;
   pDrvCtrl->ulMemBase_dmaaddr=dma_buf_phys;
   
/*toyinfo*/
#ifdef HI_DBG
	PRINT("(IPSec,Sa,Pke) MemPool allocated:%ld Bytes (%ld+%ld+%ld)\n",ulSize,ulIPSecMemPoolSize,ulSaMemPoolSize,ulPkeMemPoolSize);
#endif
    Mem_Set((VOID*)pDrvCtrl->ulMemBase, 0, ulSize);

    ulGatherSize = pDrvCtrl->ulIPSecBDDescs * SSX31B_ICD_LENGTH * SSX31B_MAX_GATHER;
    pDrvCtrl->pstGather = (SSX31B_ICD* )consistent_alloc(GFP_KERNEL|GFP_DMA,ulGatherSize,&dma_buf_phys);
    if (pDrvCtrl->pstGather == NULL)
    {
        consistent_free((void *)(pDrvCtrl->ulMemBase),ulSize,(dma_addr_t)(pDrvCtrl->ulMemBase_dmaaddr));
        PRINT("\r\nSSX31B Init ICD failed.");    
        return 1;
    }
   pDrvCtrl->ulGatherSize=ulGatherSize;
   pDrvCtrl->pstGather_dmaaddr=(SSX31B_ICD*)dma_buf_phys;

/*toyinfo*/
#ifdef HI_DBG
	PRINT("IPSecICD MemPool Mem allocated:%ld Bytes\n",ulGatherSize);
#endif
    Mem_Set((VOID*)pDrvCtrl->pstGather, 0, ulGatherSize);

    ulCtrlWordSize= pDrvCtrl->ulIPSecBDDescs * SSX31B_PE_HEADER_LEHGTN;

    pDrvCtrl->ulCtrlWordMemBase = (ULONG)consistent_alloc(GFP_KERNEL|GFP_DMA,ulCtrlWordSize,&dma_buf_phys);
    if (pDrvCtrl->ulCtrlWordMemBase == 0)
    {
        consistent_free((void *)(pDrvCtrl->ulMemBase),ulSize,(dma_addr_t)(pDrvCtrl->ulMemBase_dmaaddr));
        consistent_free((void *)(pDrvCtrl->pstGather),ulGatherSize,(dma_addr_t)(pDrvCtrl->pstGather_dmaaddr));
        PRINT("\r\nSSX31B Init ICD CtrlWord failed.");    
        return 1;
    }
	pDrvCtrl->ulCtrlWordSize=ulCtrlWordSize;
	pDrvCtrl->ulCtrlWordMemBase_dmaaddr=dma_buf_phys;
/*toyinfo*/
#ifdef HI_DBG
	PRINT("IPSecCtrlWord MemPool Mem allocated:%ld Bytes\n",ulCtrlWordSize);
#endif
    Mem_Set((VOID*)pDrvCtrl->ulCtrlWordMemBase, 0, ulCtrlWordSize);        



    pDrvCtrl->ulIPSecBDMemBase      = pDrvCtrl->ulMemBase;
    pDrvCtrl->ulIPSecBDMemBase_dmaaddr=pDrvCtrl->ulMemBase_dmaaddr;
    pDrvCtrl->ulFreeIPSecBDs        = pDrvCtrl->ulIPSecBDDescs;
    pDrvCtrl->ulCurrIPSecBdReadPtr  = 0;
    pDrvCtrl->ulCurrIPSecBdWritePtr = 0;

    pDrvCtrl->ulIPSecRDMemBase      = pDrvCtrl->ulIPSecBDMemBase + pDrvCtrl->ulIPSecBDDescs * (SSX31B_IPSEC_BD_LENGTH);
    pDrvCtrl->ulIPSecRDMemBase_dmaaddr= SSX31DRV_VIRT2DMA((pDrvCtrl->ulIPSecRDMemBase), (pDrvCtrl->ulMemBase),(pDrvCtrl->ulMemBase_dmaaddr));
    pDrvCtrl->ulFreeIPSecRDs        = pDrvCtrl->ulIPSecRDDescs;
    pDrvCtrl->ulCurrIPSecRdReadPtr  = 0;
    pDrvCtrl->ulCurrIPSecRdWritePtr = 0;



    pDrvCtrl->ulSaBDMemBase         = pDrvCtrl->ulMemBase + ulIPSecMemPoolSize;
    pDrvCtrl->ulSaBDMemBase_dmaaddr= pDrvCtrl->ulMemBase_dmaaddr+ ulIPSecMemPoolSize;
    pDrvCtrl->ulFreeSaBDs           = pDrvCtrl->ulSaBDDescs;
    pDrvCtrl->ulCurrSaBdReadPtr     = 0;
    pDrvCtrl->ulCurrSaBdWritePtr    = 0;


    pDrvCtrl->ulSaRDMemBase         = pDrvCtrl->ulSaBDMemBase + pDrvCtrl->ulSaBDDescs * (SSX31B_BASIC_BD_LENGTH);
    pDrvCtrl->ulSaRDMemBase_dmaaddr= SSX31DRV_VIRT2DMA(pDrvCtrl->ulSaRDMemBase, pDrvCtrl->ulMemBase,pDrvCtrl->ulMemBase_dmaaddr);
    pDrvCtrl->ulFreeSaRDs           = pDrvCtrl->ulSaRDDescs;
    pDrvCtrl->ulCurrSaRdReadPtr     = 0;
    pDrvCtrl->ulCurrSaRdWritePtr    = 0;



    pDrvCtrl->ulPkeBDMemBase         = pDrvCtrl->ulMemBase + ulIPSecMemPoolSize + ulSaMemPoolSize;
    pDrvCtrl->ulPkeBDMemBase_dmaaddr= pDrvCtrl->ulMemBase_dmaaddr+ ulIPSecMemPoolSize + ulSaMemPoolSize;
    pDrvCtrl->ulFreePkeBDs           = pDrvCtrl->ulPkeBDDescs;
    pDrvCtrl->ulCurrPkeBdReadPtr     = 0;
    pDrvCtrl->ulCurrPkeBdWritePtr    = 0;


    pDrvCtrl->ulPkeRDMemBase         = pDrvCtrl->ulPkeBDMemBase + pDrvCtrl->ulPkeBDDescs * (SSX31B_PKE_BD_LENGTH);
    pDrvCtrl->ulPkeRDMemBase_dmaaddr= SSX31DRV_VIRT2DMA(pDrvCtrl->ulPkeRDMemBase, pDrvCtrl->ulMemBase,pDrvCtrl->ulMemBase_dmaaddr);
    pDrvCtrl->ulFreePkeRDs           = pDrvCtrl->ulPkeRDDescs;
    pDrvCtrl->ulCurrPkeRdReadPtr     = 0;
    pDrvCtrl->ulCurrPkeRdWritePtr    = 0;





    for (i = 0; i < pDrvCtrl->ulIPSecBDDescs; i ++)
    {
       SSX31B_ICD* pICD;
       SSX31B_IPSEC_BD* pCurBD = ((SSX31B_IPSEC_BD *)(pDrvCtrl->ulIPSecBDMemBase + i * SSX31B_IPSEC_BD_LENGTH));
       pICD = &((SSX31B_ICD*)(pDrvCtrl->pstGather))[i * SSX31B_MAX_GATHER];

       pICD->ulInputAttrib = 0;
       pICD->ulInputLen = SSX31B_PE_HEADER_LEHGTN;
       pICD->ulInputPtr = pDrvCtrl->ulCtrlWordMemBase_dmaaddr+ i * SSX31B_PE_HEADER_LEHGTN;
       pCurBD->ulInputContext =SSX31DRV_VIRT2DMA(pICD, pDrvCtrl->pstGather,pDrvCtrl->pstGather_dmaaddr);
	pCurBD->ulGatherEnable = 1;
    }

    return OK;
}



ULONG SSX31B_DMAInit(SSX31BDRV_CTRL* pDrvCtrl)
{
    ULONG ulTmp;

/*DMA1 Sa*/
//    PciWrite32(SSX31B_REG_BQBA1, virt_to_bus(pDrvCtrl->ulSaBDMemBase));
    PciWrite32(SSX31B_REG_BQBA1, pDrvCtrl->ulSaBDMemBase_dmaaddr);	
    PciWrite32(SSX31B_REG_BQS1,  pDrvCtrl->ulSaBDDescs - 1);
    PciWrite32(SSX31B_REG_BQRP1, pDrvCtrl->ulCurrSaBdReadPtr);
    PciWrite32(SSX31B_REG_BQWP1, pDrvCtrl->ulCurrSaBdWritePtr);
    
//    PciWrite32(SSX31B_REG_RQBA1, virt_to_bus(pDrvCtrl->ulSaRDMemBase));
    PciWrite32(SSX31B_REG_RQBA1, pDrvCtrl->ulSaRDMemBase_dmaaddr);
    PciWrite32(SSX31B_REG_RQS1,  pDrvCtrl->ulSaRDDescs - 1);
    PciWrite32(SSX31B_REG_RQRP1, pDrvCtrl->ulCurrSaRdReadPtr );
    PciWrite32(SSX31B_REG_RQWP1, pDrvCtrl->ulCurrSaRdWritePtr);

    PciWrite32(SSX31B_REG_DMACTRL1, (DMA1_CTRL_CHANNEL_ENABLE | DMA1_CTRL_BURST_256 | DMA1_CTRL_DESC_BYTEORDER_SWAP));
//    PciWrite32(SSX31B_REG_DMACTRL1, (DMA1_CTRL_CHANNEL_ENABLE | DMA1_CTRL_BURST_256));
    ulTmp = SSX31B_BASIC_BD_LENGTH / sizeof(ULONG);
    PciWrite32(SSX31B_REG_PDLR1, ulTmp);
    PciWrite32(SSX31B_REG_BQTMOUT1, (DMA1_TIMEOUT_RD | DMA1_TIMEOUT_DMA1));


/*DMA2 Pke*/
//    PciWrite32(SSX31B_REG_BQBA2, virt_to_bus(pDrvCtrl->ulPkeBDMemBase));
    PciWrite32(SSX31B_REG_BQBA2, pDrvCtrl->ulPkeBDMemBase_dmaaddr);
    PciWrite32(SSX31B_REG_BQS2,  pDrvCtrl->ulPkeBDDescs - 1);
    PciWrite32(SSX31B_REG_BQRP2, pDrvCtrl->ulCurrPkeBdReadPtr);
    PciWrite32(SSX31B_REG_BQWP2, pDrvCtrl->ulCurrPkeBdWritePtr);
    
//    PciWrite32(SSX31B_REG_RQBA2, virt_to_bus(pDrvCtrl->ulPkeRDMemBase));
    PciWrite32(SSX31B_REG_RQBA2, pDrvCtrl->ulPkeRDMemBase_dmaaddr);
    PciWrite32(SSX31B_REG_RQS2,  pDrvCtrl->ulPkeRDDescs - 1);
    PciWrite32(SSX31B_REG_RQRP2, pDrvCtrl->ulCurrPkeRdReadPtr );
    PciWrite32(SSX31B_REG_RQWP2, pDrvCtrl->ulCurrPkeRdWritePtr);

    PciWrite32(SSX31B_REG_DMACTRL2, (DMA2_CTRL_CHANNEL_ENABLE /* | DMA2_CTRL_BURST_256 */));
    ulTmp = SSX31B_PKE_BD_LENGTH / sizeof(ULONG);
    PciWrite32(SSX31B_REG_PDLR2, ulTmp);
    PciWrite32(SSX31B_REG_BQTMOUT2, (DMA2_TIMEOUT_RD | DMA2_TIMEOUT_DMA2));

/*DMA3 IPSec*/
//    PciWrite32(SSX31B_REG_BQBA3, virt_to_bus(pDrvCtrl->ulIPSecBDMemBase));
    PciWrite32(SSX31B_REG_BQBA3, pDrvCtrl->ulIPSecBDMemBase_dmaaddr);
    PciWrite32(SSX31B_REG_BQS3, pDrvCtrl->ulIPSecBDDescs - 1 );
    PciWrite32(SSX31B_REG_BQRP3, pDrvCtrl->ulCurrIPSecBdReadPtr);
    PciWrite32(SSX31B_REG_BQWP3, pDrvCtrl->ulCurrIPSecBdWritePtr);

//    PciWrite32(SSX31B_REG_RQBA3, virt_to_bus(pDrvCtrl->ulIPSecRDMemBase));
    PciWrite32(SSX31B_REG_RQBA3, pDrvCtrl->ulIPSecRDMemBase_dmaaddr);
    PciWrite32(SSX31B_REG_RQS3, pDrvCtrl->ulIPSecRDDescs - 1);
    PciWrite32(SSX31B_REG_RQRP3, pDrvCtrl->ulCurrIPSecRdReadPtr);
    PciWrite32(SSX31B_REG_RQWP3, pDrvCtrl->ulCurrIPSecRdWritePtr);

    PciWrite32(SSX31B_REG_DMACTRL3, DMA3_CTRL_CHANNEL_ENABLE);
    ulTmp = SSX31B_IPSEC_BD_LENGTH / sizeof(ULONG);
    PciWrite32(SSX31B_REG_PDLR3, ulTmp);
    PciWrite32(SSX31B_REG_BQTMOUT3, (DMA3_TIMEOUT_RD | DMA3_TIMEOUT_DMA3));

    return OK;
}




ULONG SSX31B_ISRInit(SSX31BDRV_CTRL* pDrvCtrl)
{

    /* PciWrite32(SSX31B_REG_INT_MASK, INT_STAT_DMA3_PACK_DONE); */

    return OK;

}


ULONG SSX31B_DeviceInit(SSX31BDRV_CTRL* pDrvCtrl)
{
    

    SSX31B_PCInit(pDrvCtrl);
    

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美国产乱子伦| 久久一区二区三区国产精品| 1024成人网| 一本色道a无线码一区v| 亚洲国产一二三| 欧美成人伊人久久综合网| 国产精品18久久久久久久久 | bt7086福利一区国产| 精品国产成人系列| 色哟哟一区二区在线观看| 91蜜桃网址入口| 狠狠色丁香婷婷综合久久片| 中文字幕在线一区二区三区| 欧美一区二区私人影院日本| 成人晚上爱看视频| 日本成人超碰在线观看| 国产精品成人一区二区三区夜夜夜| 国产欧美日韩视频一区二区| 欧美日韩国产bt| 成人午夜精品在线| 99国产精品久久| 成人夜色视频网站在线观看| 成人app在线| 国产精品亚洲专一区二区三区 | 欧美成人video| 国产亚洲精品aa午夜观看| 91麻豆精品国产91久久久久 | 日本不卡不码高清免费观看| 国产精品久久久久天堂| 一区二区三区四区乱视频| 国产色婷婷亚洲99精品小说| 亚洲欧洲精品天堂一级 | 天天av天天翘天天综合网色鬼国产| 国产日韩欧美综合一区| 亚洲人妖av一区二区| 欧美丰满少妇xxxxx高潮对白| 99精品久久只有精品| 欧美精品在线一区二区| 久久久美女艺术照精彩视频福利播放| 欧美日韩国产在线观看| 久久久久久夜精品精品免费| 亚洲欧美日韩人成在线播放| 三级欧美在线一区| 日本视频一区二区三区| 波多野洁衣一区| 精品美女被调教视频大全网站| 亚洲国产电影在线观看| 日韩高清一区在线| 97se亚洲国产综合自在线| 日韩精品一区二区三区视频| 欧美成人三级在线| 一区二区三区国产豹纹内裤在线 | 日韩欧美国产综合| 一区二区三区色| 成人性生交大片免费看在线播放| 91.麻豆视频| 亚洲日本一区二区| 成人不卡免费av| 久久久久久久久久电影| 免费观看一级欧美片| 在线看国产一区二区| 欧美日韩高清影院| 亚洲欧美国产三级| 成人av网在线| 国产午夜精品久久久久久免费视| 午夜精品视频一区| 欧美性三三影院| 日韩欧美亚洲国产精品字幕久久久| 亚洲精品日韩综合观看成人91| 亚洲成人av一区二区三区| 久久精品国产免费| www.激情成人| 国产精品三级久久久久三级| 午夜欧美电影在线观看| 在线亚洲一区观看| 久久综合丝袜日本网| 蜜桃精品在线观看| 99免费精品视频| 国产精品久久久久影视| 成人av网在线| 中文文精品字幕一区二区| 国产精品系列在线观看| 久久九九全国免费| 成人av资源在线| 中文字幕一区二区在线观看| 成人av在线资源网站| 亚洲欧洲日韩女同| 91老师片黄在线观看| 亚洲自拍偷拍av| 国产原创一区二区| 欧美日韩一二三| 中文字幕欧美三区| 色综合色狠狠综合色| 亚洲另类中文字| 欧美三级日韩三级| 九九精品视频在线看| 欧美人妖巨大在线| 另类专区欧美蜜桃臀第一页| 精品成人免费观看| 成人爱爱电影网址| 亚洲午夜久久久久久久久电影网 | 亚洲色图制服诱惑| 欧美视频一区二| 国产一区欧美二区| 一区在线中文字幕| 欧美男人的天堂一二区| 黑人巨大精品欧美一区| 成人欧美一区二区三区视频网页| 一本大道av一区二区在线播放| 亚洲18色成人| 中文字幕乱码亚洲精品一区| 色88888久久久久久影院按摩| 日韩—二三区免费观看av| 国产视频亚洲色图| 欧美精品日韩综合在线| 懂色av中文一区二区三区| 26uuu另类欧美| 在线看不卡av| 国产成人精品午夜视频免费| 精品国产91乱码一区二区三区| 9久草视频在线视频精品| 午夜精品免费在线观看| 国产精品第13页| www日韩大片| 337p亚洲精品色噜噜狠狠| 懂色av中文一区二区三区| 蜜臀av性久久久久蜜臀aⅴ四虎| 国产精品免费av| 精品久久久久久最新网址| 在线观看亚洲精品| av一区二区三区在线| 韩国毛片一区二区三区| 丝袜诱惑制服诱惑色一区在线观看 | 欧美一区二区啪啪| 在线看日本不卡| 91蝌蚪国产九色| 成人国产精品免费观看动漫| 中文字幕日本不卡| 欧美激情综合在线| 久久久久久久久久看片| 日韩欧美在线综合网| 精彩视频一区二区三区| 天堂蜜桃一区二区三区| 一区二区三区在线观看欧美| 欧美国产禁国产网站cc| 久久久亚洲精品石原莉奈| 日韩欧美国产午夜精品| 欧美一区欧美二区| 在线播放日韩导航| 欧美日韩电影在线播放| 欧美午夜精品免费| 欧美体内she精高潮| 在线看一区二区| 欧美日韩不卡视频| 91精品国产91热久久久做人人| 欧美三级日韩在线| 538在线一区二区精品国产| 欧美性视频一区二区三区| 91久久一区二区| 欧美亚洲一区二区在线| 欧洲日韩一区二区三区| 欧美日韩国产高清一区二区| 欧美日韩高清一区二区不卡| 欧美二区在线观看| 日韩欧美电影在线| 欧美激情综合五月色丁香小说| 久久综合久久综合亚洲| 久久亚洲一级片| 中文字幕制服丝袜一区二区三区| ●精品国产综合乱码久久久久| 亚洲欧美日韩一区二区| 午夜久久久久久久久| 九九久久精品视频| www.av亚洲| 欧美久久久一区| 久久久综合视频| 一区二区三区高清不卡| 日韩中文字幕一区二区三区| 久久99最新地址| 99久久免费视频.com| 欧美久久久久久久久久| 久久综合九色综合97_久久久| 中文字幕乱码亚洲精品一区| 亚洲午夜久久久久久久久电影院 | 精品一二线国产| 本田岬高潮一区二区三区| 欧美在线观看视频一区二区 | 波多野结衣中文一区| 欧美日韩免费一区二区三区视频| 欧美r级在线观看| 亚洲精品免费在线| 蜜桃一区二区三区在线观看| 高清免费成人av| 欧美一区二区视频在线观看2022| 中文字幕va一区二区三区| 亚洲成人av福利| 波多野结衣中文字幕一区| 欧美大片在线观看一区二区| 国产精品毛片久久久久久久| 日本午夜精品视频在线观看|