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

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

?? ax88180.c

?? 網絡ax88180linux下的驅動
?? C
?? 第 1 頁 / 共 4 頁
字號:
/* ax88180: ASIX AX88180 Non-PCI Gigabit Ethernet Linux driver *//*  * Copyright (c) 2005 ASIX Electronics Corporation * Written by Allan Chou <allan@asix.com.tw> * *  This program is free software; you can distribute it and/or modify it *  under the terms of the GNU General Public License (Version 2) as *  published by the Free Software Foundation. * *  This program is distributed in the hope it will be useful, but WITHOUT *  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or *  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License *  for more details. * *  You should have received a copy of the GNU General Public License along *  with this program; if not, write to the Free Software Foundation, Inc., *  59 Temple Place - Suite 330, Boston MA 02111-1307, USA. * *//* * ======================================================================== * ASIX AX88180 Non-PCI 16/32-bit Gigabit Ethernet Linux Driver * * The AX88180 Ethernet controller is high performance and highly  * integrated local CPU bus Ethernet controllers with embedded 40K bytes  * SRAM and supports both 16-bit and 32-bit SRAM-Like interfaces  * for any embedded systems.  * The AX88180 is a single chip 10/100/1000Mbps Gigabit Ethernet controller  * that supports both MII and RGMII interfaces and is compliant to  * IEEE 802.3, IEEE 802.3u and IEEE 802.3z standards.   * * Please visit ASIX's web site (http://www.asix.com.tw) for more details. * * Module Name : ax88180.c * Purpose     : This file is the main file. * Author      : Allan Chou <allan@asix.com.tw> * Date        : 2005-12-07 * Notes       : * History     : * $Log:$ * 1.0.0	2005-12-07 * New release for AX88180 US1 chip. * * 1.0.1	2006-06-14 * 1.Modify to support AX88180 US2 chip.  * 2.Modify to support AX88180 US2 burst data access function. * * * * * * * * * * ======================================================================== */#include <linux/config.h>#include <linux/module.h>#include <linux/version.h>#include <linux/kernel.h>#include <linux/sched.h>#include <linux/types.h>#include <linux/interrupt.h>#include <linux/ioport.h>#include <linux/string.h>#include <linux/init.h>#include <linux/errno.h>#include <linux/spinlock.h>#include <linux/netdevice.h>#include <linux/etherdevice.h>#include <linux/skbuff.h>#include <linux/timer.h>#include <linux/delay.h>#include <linux/crc32.h>#if LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0)#include <linux/ethtool.h>#endif#include <linux/mii.h>#include <linux/if_ether.h>#include <asm/io.h>#include <asm/uaccess.h>		/* User space memory access functions */#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)#	ifdef CONFIG_BOARD_S3C2440_SMDK#		include <asm/irq.h>#		include <asm/arch/S3C2440.h>#	endif#else#	ifdef CONFIG_ARCH_S3C2410#		include <asm/arch/regs-mem.h>#		include <asm/arch/regs-irq.h>#	endif#endif#include "ax88180.h"/* * =========================================================================== * <<<<<<                   Declare Global Variables                    >>>>>> * =========================================================================== */#define	DRV_NAME	"ax88180"#define	DRV_VERSION	"v1.1.0"static char version[] __initdata = KERN_INFO "ax88180: ASIX AX88180 Non-PCI 32-bit Gigabit Ethernet Driver " DRV_VERSION "\n" KERN_INFO "ax88180: Please visit http://www.asix.com.tw for the latest driver.\n";/* * =========================================================================== * <<<<<<             Declare Macro/Structure Definition                >>>>>> * =========================================================================== *///allan1/* Information that need to be kept for each board. */struct _AX88180_PRIVATE {	struct net_device_stats	stats;	unsigned long Phy_MemBase;	unsigned long PhyAddr;	unsigned long PhyID0;	unsigned int MediaMode;	unsigned int RealMediaMode;	unsigned int ForceMedia;	unsigned int LineSpeed;	unsigned int DuplexMode;	unsigned int JumboFlag;	unsigned long RxFilterMode;	unsigned long FirstTxDesc;	unsigned long NextTxDesc;	unsigned long rxbuf_overflow_count;	unsigned char *rx_buf;	spinlock_t lock;	struct mii_if_info mii_if;} AX88180_PRIVATE, *PAX88180_PRIVATE;static unsigned long Log_MemBase = 0;unsigned long mem = PLATFORM_MEMBASE; unsigned long irq = PLATFORM_IRQ;unsigned int jumbo = DISABLE_JUMBO; unsigned int media = 0;#define	PRINTK(flag, args...) if (flag & DEBUG_FLAGS) printk(args)	//Access RXBUFFER_START/TXBUFFER_START to read RX buffer/write TX buffer#define READ_RXBUF(data) data = *(const volatile unsigned long * const)(Log_MemBase + RXBUFFER_START)#define WRITE_TXBUF(data) *(volatile unsigned long *)(Log_MemBase + TXBUFFER_START) = data#define READ_MACREG(regaddr, regdata) regdata = *(volatile unsigned long *)(Log_MemBase + regaddr)#define WRITE_MACREG(regaddr, regdata) { \	*(volatile unsigned long *)(Log_MemBase + regaddr) = regdata; \	}#define READ_PHYREG(phyaddr, regaddr, regdata) { \	unsigned long tmpval1, k1; \	WRITE_MACREG(MDIOCTRL, READ_PHY | (regaddr << 8) | phyaddr); \	for (k1 = 0; k1 < 10000; k1++) { \		READ_MACREG(MDIOCTRL, tmpval1); \		if ((tmpval1 & READ_PHY) == 0) { \			break; \		} \		udelay(1); \	} \	READ_MACREG(MDIODP, regdata); \}#define WRITE_PHYREG(phyaddr, regaddr, regdata) { \	unsigned long tmpval2, k2; \	WRITE_MACREG(MDIODP, regdata); \	WRITE_MACREG(MDIOCTRL, WRITE_PHY | (regaddr << 8) | phyaddr); \	for (k2 = 0; k2 < 10000; k2++) { \		READ_MACREG(MDIOCTRL, tmpval2); \		if ((tmpval2 & WRITE_PHY) == 0) { \			break; \		} \		udelay(1); \	} \}#define RESET_MAC { \	unsigned long tmpval3; \	WRITE_MACREG(MISC, MISC_RESET_MAC); \	READ_MACREG(MISC, tmpval3); \	WRITE_MACREG(MISC, MISC_NORMAL); \	WRITE_MACREG(RXINDICATOR, DEFAULT_RXINDICATOR); \	WRITE_MACREG(TXCMD, DEFAULT_TXCMD); \	WRITE_MACREG(TXBS, DEFAULT_TXBS); \	WRITE_MACREG(TXDES0, DEFAULT_TXDES0); \	WRITE_MACREG(TXDES1, DEFAULT_TXDES1); \	WRITE_MACREG(TXDES2, DEFAULT_TXDES2); \	WRITE_MACREG(TXDES3, DEFAULT_TXDES3); \	WRITE_MACREG(TXCFG, DEFAULT_TXCFG); \	WRITE_MACREG(MACCFG2, DEFAULT_MACCFG2); \	WRITE_MACREG(MACCFG3, DEFAULT_MACCFG3); \	WRITE_MACREG(TXLEN, DEFAULT_TXLEN); \	WRITE_MACREG(TXPAUT, DEFAULT_TXPAUT); \	WRITE_MACREG(RXBTHD0, DEFAULT_RXBTHD0); \	WRITE_MACREG(RXBTHD1, DEFAULT_RXBTHD1); \	WRITE_MACREG(RXFULTHD, DEFAULT_RXFULTHD); \	WRITE_MACREG(DOGTHD0, DEFAULT_DOGTHD0); \	WRITE_MACREG(DOGTHD1, DEFAULT_DOGTHD1); \}#define RESET_PHY { \	unsigned long tmpval3a, k3a; \	WRITE_PHYREG(pax88180_local->PhyAddr, BMCR, PHY_RESET); \	for (k3a = 0; k3a < 500; k3a++) { \		READ_PHYREG(pax88180_local->PhyAddr, BMCR, tmpval3a); \		if (!(tmpval3a & PHY_RESET)) \			break; \		mdelay(1); \	} \}#define	INIT_TXRX_VARIABLES { \	pax88180_local->FirstTxDesc = TXDP0; \	pax88180_local->NextTxDesc = TXDP0; \	pax88180_local->rxbuf_overflow_count = 0; \}#define	ENABLE_INTERRUPT	WRITE_MACREG(IMR, DEFAULT_IMR)#define	DISABLE_INTERRUPT	WRITE_MACREG(IMR, CLEAR_IMR)#define	START_READ_RXBUFF 	WRITE_MACREG(RXINDICATOR, RX_START_READ)#define	STOP_READ_RXBUFF 	WRITE_MACREG(RXINDICATOR, RX_STOP_READ)/* Display all AX88180 MAC registers onto console screen */#define	DISPLAY_ALLMACREG { \	unsigned long tmpval4; \	int k4; \	PRINTK(DEBUG_MSG, "ax88180: AX88180 MAC Registers:\n"); \	for (k4 = 0xFC00; k4 <= 0xFCFF; k4+=4) { \		READ_MACREG(k4, tmpval4); \		PRINTK(DEBUG_MSG, "0x%04x=0x%08lx ", k4, tmpval4); \		if ((k4 & 0xF) == 0xC) \			PRINTK(DEBUG_MSG, "\n"); \	} \	PRINTK(DEBUG_MSG, "\n"); \}//allan3/* Display all AX88180 PHY registers onto console screen */#define	DISPLAY_ALLPHYREG { \	unsigned long tmpval5; \	PRINTK(DEBUG_MSG, "ax88180: AX88180 PHY Registers: (media=%d)\n", media); \	READ_PHYREG(pax88180_local->PhyAddr, BMCR, tmpval5); \	PRINTK(DEBUG_MSG, "BMCR=0x%04x ", (unsigned int)tmpval5); \	READ_PHYREG(pax88180_local->PhyAddr, BMSR, tmpval5); \	PRINTK(DEBUG_MSG, "BMSR=0x%04x ", (unsigned int)tmpval5); \	READ_PHYREG(pax88180_local->PhyAddr, PHYIDR0, tmpval5); \	PRINTK(DEBUG_MSG, "PHYIDR0=0x%04x ", (unsigned int)tmpval5); \	READ_PHYREG(pax88180_local->PhyAddr, PHYIDR1, tmpval5); \	PRINTK(DEBUG_MSG, "PHYIDR1=0x%04x ", (unsigned int)tmpval5); \	READ_PHYREG(pax88180_local->PhyAddr, ANAR, tmpval5); \	PRINTK(DEBUG_MSG, "ANAR=0x%04x ", (unsigned int)tmpval5); \	READ_PHYREG(pax88180_local->PhyAddr, ANLPAR, tmpval5); \	PRINTK(DEBUG_MSG, "ANLPAR=0x%04x \n", (unsigned int)tmpval5); \	READ_PHYREG(pax88180_local->PhyAddr, ANER, tmpval5); \	PRINTK(DEBUG_MSG, "ANER=0x%04x ", (unsigned int)tmpval5); \	READ_PHYREG(pax88180_local->PhyAddr, AUX_1000_CTRL, tmpval5); \	PRINTK(DEBUG_MSG, "1G_CTRL=0x%04x ", (unsigned int)tmpval5); \	READ_PHYREG(pax88180_local->PhyAddr, AUX_1000_STATUS, tmpval5); \	PRINTK(DEBUG_MSG, "1G_STATUS=0x%04x \n", (unsigned int)tmpval5); \	if (pax88180_local->PhyID0 == MARVELL_88E1111_PHYIDR0) { \		READ_PHYREG(pax88180_local->PhyAddr, M88_SSR, tmpval5); \		PRINTK(DEBUG_MSG, "M88_SSR=0x%04x ", (unsigned int)tmpval5); \		READ_PHYREG(pax88180_local->PhyAddr, M88_IER, tmpval5); \		PRINTK(DEBUG_MSG, "M88_IER=0x%04x ", (unsigned int)tmpval5); \		READ_PHYREG(pax88180_local->PhyAddr, M88_ISR, tmpval5); \		PRINTK(DEBUG_MSG, "M88_ISR=0x%04x ", (unsigned int)tmpval5); \		READ_PHYREG(pax88180_local->PhyAddr, M88_EXT_SCR, tmpval5); \		PRINTK(DEBUG_MSG, "M88_EXT_SCR=0x%04x ", (unsigned int)tmpval5); \		READ_PHYREG(pax88180_local->PhyAddr, M88_EXT_SSR, tmpval5); \		PRINTK(DEBUG_MSG, "M88_EXT_SSR=0x%04x \n", (unsigned int)tmpval5); \	} else if (pax88180_local->PhyID0 == CICADA_CIS8201_PHYIDR0) { \		READ_PHYREG(pax88180_local->PhyAddr, CIS_IMR, tmpval5); \		PRINTK(DEBUG_MSG, "CIS_IMR=0x%04x ", (unsigned int)tmpval5); \		READ_PHYREG(pax88180_local->PhyAddr, CIS_ISR, tmpval5); \		PRINTK(DEBUG_MSG, "CIS_ISR=0x%04x ", (unsigned int)tmpval5); \		READ_PHYREG(pax88180_local->PhyAddr, CIS_AUX_CTRL_STATUS, tmpval5); \		PRINTK(DEBUG_MSG, "CIS_AUX=0x%04x \n", (unsigned int)tmpval5); \	} \	READ_MACREG(RXCFG, tmpval5); \	PRINTK(DEBUG_MSG, "RXCFG=0x%08lx ", tmpval5); \	READ_MACREG(MACCFG0, tmpval5); \	PRINTK(DEBUG_MSG, "MACCFG0=0x%08lx ", tmpval5); \	READ_MACREG(MACCFG1, tmpval5); \	PRINTK(DEBUG_MSG, "MACCFG1=0x%08lx ", tmpval5); \	READ_MACREG(MACCFG2, tmpval5); \	PRINTK(DEBUG_MSG, "MACCFG2=0x%08lx \n\n", tmpval5); \} /* Index to functions, as function prototypes. */extern int __init ax88180_probe(struct net_device *global_dev);static int ax88180_open(struct net_device *global_dev);static int ax88180_stop(struct net_device *global_dev);static int ax88180_start_xmit(struct sk_buff *skb, struct net_device *global_dev);static void ax88180_tx_timeout(struct net_device *global_dev);static struct net_device_stats * ax88180_get_stats(struct net_device *global_dev);static void ax88180_set_multicast_list(struct net_device *global_dev);#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)#ifdef CONFIG_BOARD_S3C2440_SMDKint set_external_irq(int irq, int edge, int pullup);#endifstatic void ax88180_interrupt(int irq, void *global_dev_id, struct pt_regs * regs);#elsestatic irqreturn_t ax88180_interrupt(int irq, void *global_dev_id, struct pt_regs * regs);#endifstatic int ax88180_initialization(struct net_device *global_dev);static void ax88180_PHY_initial(struct net_device *global_dev);static void ax88180_meida_config(struct net_device *global_dev);static void get_MarvellPHY_meida_mode(struct net_device *global_dev);static void get_CicadaPHY_meida_mode(struct net_device *global_dev);static void ax88180_rx_handler(struct net_device *global_dev);static void ax88180_tx_handler(struct net_device *global_dev);#if LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0)static int ax88180_ioctl(struct net_device *global_dev, struct ifreq *rq, int cmd);static int ax88180_ethtool_ioctl(struct net_device *global_dev, void *useraddr);static int mdio_read(struct net_device *global_dev, int phy_id, int regaddr);static void mdio_write(struct net_device *global_dev, int phy_id, int regaddr, int regval);#endifint set_external_irq(int irq, int edge, int pullup);/* * =========================================================================== * <<<<<<                        MODULE-ROUTINES                        >>>>>> * =========================================================================== */#ifdef MODULEMODULE_AUTHOR("Allan Chou <allan@asix.com.tw>");MODULE_DESCRIPTION("ASIX AX88180 Non-PCI 32-bit Gigabit Ethernet Driver");MODULE_LICENSE("GPL");/* ***************************************************************************** * AX88180 module mode driver optional parameters: * Syntax: insmod ax88180.o mem=0xXXXXXXXX irq=0xXX media=<media_type> jumbo=x  *   mem	Set memory base address (default is 0x08000000) *   irq	Set IRQ number (default is 0x27) *   media	Set media mode (0:auto, 1:100full, 2:100half, 3:10full 4:10half) *   jumbo	Enable/disable Jumbo frame (1=enable, 0=disable)(default is 0) *  * example: insmod ax88180.o mem=0x08000000 irq=0x27 media=auto jumbo=0  * ***************************************************************************** */#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)MODULE_PARM(media, "i");MODULE_PARM(mem, "i");MODULE_PARM(irq, "i");MODULE_PARM(jumbo, "i");#elsemodule_param(media, int, 0);module_param(jumbo, int, 0);module_param(mem, long, 0);module_param(irq, long, 0);#endifMODULE_PARM_DESC(media, "Media Mode(auto, 100full, 100half, 10full or 10half)");MODULE_PARM_DESC(mem, "Memory Base Address");MODULE_PARM_DESC(irq, "Interrupt Number");MODULE_PARM_DESC(jumbo, "Jumbo Frame(1=enable, 0=disable");static struct net_device dev_ax;static int __init ax88180_init_module(void);static void __exit ax88180_cleanup_module(void);module_init(ax88180_init_module);module_exit(ax88180_cleanup_module);/* ***************************************************************************** * ax88180_init_module() * * Check for a network adaptor of this type, and return '0' if one exists. * * Return 0 on success. ***************************************************************************** */static int __init ax88180_init_module(void){	static struct net_device *global_dev;	PRINTK(INIT_MSG, "ax88180: ax88180_init_module beginning ..........\n");	global_dev = &dev_ax;	global_dev->irq = irq;	global_dev->base_addr = mem;	global_dev->init = ax88180_probe;	if(register_netdev(global_dev) == 0) {		PRINTK(INIT_MSG, "ax88180: ax88180_init_module end ..........\n");		return 0;	}	if (mem != 0) {		PRINTK(WARNING_MSG, "AX88180: No AX88180 card found at memory = %#lx\n", mem);	}	else {		PRINTK(WARNING_MSG, "AX88180: You must supply \"mem=0xNNNNNNN\" value(s) for AX88180.\n");	}	return -ENXIO;}/* ***************************************************************************** * ax88180_cleanup_module() ***************************************************************************** */static void __exit ax88180_cleanup_module(void){	struct _AX88180_PRIVATE *pax88180_local;	static struct net_device *global_dev = &dev_ax; 	PRINTK(INIT_MSG, "ax88180: ax88180_cleanup_module beginning ..........\n");	pax88180_local = (struct _AX88180_PRIVATE *) global_dev->priv;	if (global_dev != NULL) {		unregister_netdev(global_dev);		free_irq(global_dev->irq, global_dev);	}	if (Log_MemBase != 0) {		iounmap((void *)Log_MemBase);	}	if (pax88180_local != NULL) {		if (pax88180_local->Phy_MemBase != 0) {			release_mem_region(pax88180_local->Phy_MemBase, AX88180_MEMORY_SIZE);		}		kfree(global_dev->priv);		global_dev->priv = NULL;				}        PRINTK(INIT_MSG, "ax88180: ax88180_cleanup_module end ..........\n");	return;}#endif/* * =========================================================================== * <<<<<<                        MAIN-ROUTINES                          >>>>>> * =========================================================================== *//* ***************************************************************************** * ax88180_probe() * * This is the entry routine for kernel mode driver. This routine will probe * the AX88180 device and allocate a (64K bytes + private data structure size)  * memory space for AX88180 operation. *  * AX88180 32-bit memory mapping: * ============================== * 0x0000~0x3FFF	RX buffer area * 0x4000~0xFBFF	TX buffer area

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99精品国产一区二区三区不卡| 亚洲国产精品一区二区久久恐怖片| 日本va欧美va瓶| 欧美自拍丝袜亚洲| 亚洲精品中文在线| 欧美亚洲丝袜传媒另类| 日韩精品电影一区亚洲| 欧美一区二区三区性视频| 免费成人结看片| 国产亚洲精久久久久久| 粉嫩久久99精品久久久久久夜| 国产精品色哟哟| 91蜜桃在线免费视频| 亚洲成a人片在线不卡一二三区| 欧美精品高清视频| 国产一区二区三区黄视频 | 亚洲成人免费视| 日韩精品在线网站| aaa欧美色吧激情视频| 亚洲福利一二三区| 久久综合99re88久久爱| av电影在线观看不卡 | 亚洲精品写真福利| 日韩亚洲欧美高清| 懂色av一区二区夜夜嗨| 亚洲成a人片在线观看中文| 久久久亚洲精品石原莉奈 | 成人午夜大片免费观看| 亚洲国产成人av好男人在线观看| 欧美xxxxx牲另类人与| 成人av第一页| 久久99国内精品| 一区二区高清免费观看影视大全| 精品久久久久久久久久久久久久久 | 国产精品系列在线| 色欲综合视频天天天| 老司机精品视频导航| 亚洲色图视频网| 欧美性三三影院| 国产成人自拍网| 亚洲国产成人在线| 国产精品自拍毛片| 久久综合精品国产一区二区三区 | 97se亚洲国产综合在线| 久久精品国产一区二区| 亚洲精品国久久99热| 7777女厕盗摄久久久| av中文字幕在线不卡| 韩国女主播一区| 日韩国产在线一| 亚洲男人的天堂av| 久久久久久综合| 91精品国产综合久久久久久漫画 | 欧美zozo另类异族| 欧美丝袜丝交足nylons图片| 成人av在线影院| 亚洲成a人v欧美综合天堂下载 | 久久久青草青青国产亚洲免观| 欧美日韩国产一级| 在线中文字幕一区| 91色在线porny| 99国产精品久久久久久久久久久| 国产精品66部| 国产伦理精品不卡| 久久国产精品第一页| 午夜精品久久久久久久久久久| ...xxx性欧美| 亚洲免费伊人电影| 一区二区三区在线免费播放| 亚洲乱码国产乱码精品精可以看 | 久久久久久电影| 欧美v国产在线一区二区三区| 欧美美女直播网站| 欧美日韩三级在线| 欧美日韩精品一区视频| 777亚洲妇女| 欧美一级搡bbbb搡bbbb| 日韩免费视频线观看| 欧美电视剧在线看免费| 精品久久一二三区| 精品福利一二区| 国产午夜亚洲精品午夜鲁丝片| 精品福利视频一区二区三区| 精品国产亚洲在线| 久久久www免费人成精品| 久久久久久久久久久电影| 久久日韩粉嫩一区二区三区| 久久久久久一级片| 自拍偷拍国产精品| 亚洲制服丝袜一区| 秋霞午夜av一区二区三区| 久久精品999| 成人h精品动漫一区二区三区| 99免费精品视频| 欧美视频一区二区三区四区| 91精品国产91综合久久蜜臀| 精品99久久久久久| 国产精品你懂的| 一区二区三区在线不卡| 美女视频黄a大片欧美| 国产不卡在线一区| 91九色02白丝porn| 欧美一级爆毛片| 国产欧美一区二区三区在线看蜜臀| 国产精品高潮呻吟| 亚洲午夜在线观看视频在线| 男女性色大片免费观看一区二区| 日本最新不卡在线| 国产高清亚洲一区| 91极品美女在线| 欧美电视剧在线观看完整版| 中文字幕在线一区| 无码av免费一区二区三区试看 | 欧美性色欧美a在线播放| 欧美xxxx老人做受| 亚洲精品国产视频| 蜜臀av一区二区在线观看| 成人亚洲一区二区一| 56国语精品自产拍在线观看| 亚洲国产岛国毛片在线| 天堂成人免费av电影一区| 成人美女在线观看| 日韩一区二区三| 亚洲精品中文在线| 国产成人免费网站| 91麻豆精品国产91久久久久 | 亚洲国产电影在线观看| 免费看欧美女人艹b| 色网综合在线观看| 国产区在线观看成人精品| 午夜国产精品一区| 91丨porny丨户外露出| 久久亚区不卡日本| 亚洲18影院在线观看| www.亚洲在线| 久久亚洲二区三区| 日韩av在线播放中文字幕| 99久久99久久久精品齐齐| 精品国产乱码久久久久久老虎| 洋洋av久久久久久久一区| 国产一区二区三区四区五区入口 | 欧美一级视频精品观看| 亚洲综合男人的天堂| 成人影视亚洲图片在线| 精品免费一区二区三区| 午夜精品爽啪视频| 91黄视频在线观看| 亚洲精品五月天| 色综合欧美在线视频区| 国产精品卡一卡二卡三| 国产精品99久久久久久久女警| 欧美大片一区二区| 奇米精品一区二区三区四区| 欧美日韩亚洲综合在线 | 最新国产成人在线观看| 国产**成人网毛片九色| 久久久午夜电影| 国产一区二区三区久久久| 精品伦理精品一区| 精品一区精品二区高清| 日韩一级片在线观看| 日本成人在线电影网| 欧美丰满嫩嫩电影| 五月激情六月综合| 91精品国产综合久久婷婷香蕉| 日韩精品色哟哟| 欧美老肥妇做.爰bbww| 五月天欧美精品| 欧美一级欧美三级在线观看| 青青草97国产精品免费观看| 制服丝袜一区二区三区| 日本不卡不码高清免费观看| 欧美va亚洲va国产综合| 国产中文一区二区三区| 国产午夜亚洲精品羞羞网站| 国产.欧美.日韩| 亚洲精品美国一| 欧美日本在线播放| 久久国产精品免费| 国产日韩欧美精品一区| 成人激情免费视频| 亚洲三级小视频| 91精品在线观看入口| 制服丝袜中文字幕一区| 中文字幕一区不卡| 日本韩国一区二区| 日本三级亚洲精品| www成人在线观看| 成人精品一区二区三区四区| 一区二区三区产品免费精品久久75| 91国偷自产一区二区三区观看| 一区二区欧美在线观看| 3d成人h动漫网站入口| 国产精品99久久久久久似苏梦涵| 国产精品国产三级国产aⅴ入口| 欧美四级电影网| 国产精品一区二区久激情瑜伽 | **欧美大码日韩| 欧美日产国产精品| 国产成人精品影院|