日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

显示驱动包含在Linux内核层,驱动程序层(上) - Linux内核--网络栈实现分析_Linux编程_Linux公社-Linux系统门户网站...

發(fā)布時間:2025/3/19 linux 73 豆豆
生活随笔 收集整理的這篇文章主要介紹了 显示驱动包含在Linux内核层,驱动程序层(上) - Linux内核--网络栈实现分析_Linux编程_Linux公社-Linux系统门户网站... 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

經(jīng)過前面兩篇博文的分析,已經(jīng)對Linux的內(nèi)核網(wǎng)絡棧的結構有了一個模糊的認識,這里我們開始從底層開始詳細分析Linux內(nèi)核網(wǎng)絡棧的實現(xiàn)。由于這是早期版本,代碼的層次隔離做的還不是很好,這里說是從底層分析,但是不免會牽扯上層或下層的函數(shù),許多關鍵代碼都在驅動的文件夾下。

我們首先有第一篇博文中知道在網(wǎng)絡棧初始化的時候在net/socket.c中的函數(shù)sock_init()函數(shù)中當proto_init()完成后會執(zhí)行dev_init()來進行網(wǎng)絡設備模塊的初始化。

首先說明一下,在drivers/net/space.c中定義了設備首節(jié)點地址dev_base,其實際上是回環(huán)設備的地址。

structdevice?loopback_dev?=?{

"lo",/*?Software?Loopback?interface??????*/

0x0,/*?recv?memory?end??????????*/

0x0,/*?recv?memory?start????????????*/

0x0,/*?memory?end???????????????*/

0x0,/*?memory?start?????????????*/

0,/*?base?I/O?address?????????*/

0,/*?IRQ??????????????????*/

0,?0,?0,/*?flags????????????????*/

NEXT_DEV,/*?next?device??????????????*/

loopback_init/*?loopback_init?should?set?up?the?rest?*/

};

structdevice?*dev_base?=?&loopback_dev;而NEXT_DEV宏定義即定義了下一個網(wǎng)絡設備的地址,這樣可以把設備串成鏈。

附網(wǎng)絡設備的定義(include/linux/netdevice.h)如下:

/*

*?The?DEVICE?structure.

*?Actually,?this?whole?structure?is?a?big?mistake.??It?mixes?I/O

*?data?with?strictly?"high-level"?data,?and?it?has?to?know?about

*?almost?every?data?structure?used?in?the?INET?module.

*/

structdevice

{

/*

*?This?is?the?first?field?of?the?"visible"?part?of?this?structure

*?(i.e.?as?seen?by?users?in?the?"Space.c"?file).??It?is?the?name

*?the?interface.

*/

char*name;

/*?I/O?specific?fields?-?FIXME:?Merge?these?and?struct?ifmap?into?one?*/

unsignedlongrmem_end;/*?shmem?"recv"?end?*/

unsignedlongrmem_start;/*?shmem?"recv"?start???*/

unsignedlongmem_end;/*?sahared?mem?end??*/

unsignedlongmem_start;/*?shared?mem?start?*/

unsignedlongbase_addr;/*?device?I/O?address???*/

unsignedcharirq;/*?device?IRQ?number????*/

/*?Low-level?status?flags.?*/

volatileunsignedcharstart,/*?start?an?operation???*/

tbusy,/*?transmitter?busy?*/

interrupt;/*?interrupt?arrived????*/

structdevice???????*next;

/*?The?device?initialization?function.?Called?only?once.?*/

int(*init)(structdevice?*dev);

/*?Some?hardware?also?needs?these?fields,?but?they?are?not?part?of?the

usual?set?specified?in?Space.c.?*/

unsignedcharif_port;/*?Selectable?AUI,?TP,..*/

unsignedchardma;/*?DMA?channel??????*/

structenet_statistics*?(*get_stats)(structdevice?*dev);

/*

*?This?marks?the?end?of?the?"visible"?part?of?the?structure.?All

*?fields?hereafter?are?internal?to?the?system,?and?may?change?at

*?will?(read:?may?be?cleaned?up?at?will).

*/

/*?These?may?be?needed?for?future?network-power-down?code.?*/

unsignedlongtrans_start;/*?Time?(in?jiffies)?of?last?Tx?*/

unsignedlonglast_rx;/*?Time?of?last?Rx??????*/

unsignedshortflags;/*?interface?flags?(a?la?BSD)???*/

unsignedshortfamily;/*?address?family?ID?(AF_INET)??*/

unsignedshortmetric;/*?routing?metric?(not?used)????*/

unsignedshortmtu;/*?interface?MTU?value??????*/

unsignedshorttype;/*?interface?hardware?type??*/

unsignedshorthard_header_len;/*?hardware?hdr?length??*/

void*priv;/*?pointer?to?private?data??*/

/*?Interface?address?info.?*/

unsignedcharbroadcast[MAX_ADDR_LEN];/*?hw?bcast?add?*/

unsignedchardev_addr[MAX_ADDR_LEN];/*?hw?address???*/

unsignedcharaddr_len;/*?hardware?address?length??*/

unsignedlongpa_addr;/*?protocol?address?????*/

unsignedlongpa_brdaddr;/*?protocol?broadcast?addr??*/

unsignedlongpa_dstaddr;/*?protocol?P-P?other?side?addr?*/

unsignedlongpa_mask;/*?protocol?netmask?????*/

unsignedshortpa_alen;/*?protocol?address?length??*/

structdev_mc_list?????*mc_list;/*?Multicast?mac?addresses??*/

intmc_count;/*?Number?of?installed?mcasts???*/

structip_mc_list??*ip_mc_list;/*?IP?multicast?filter?chain????*/

/*?For?load?balancing?driver?pair?support?*/

unsignedlongpkt_queue;/*?Packets?queued?*/

structdevice???????*slave;/*?Slave?device?*/

/*?Pointer?to?the?interface?buffers.?*/

structsk_buff_head?????buffs[DEV_NUMBUFFS];

/*?Pointers?to?interface?service?routines.?*/

int(*open)(structdevice?*dev);

int(*stop)(structdevice?*dev);

int(*hard_start_xmit)?(structsk_buff?*skb,

structdevice?*dev);

int(*hard_header)?(unsignedchar*buff,

structdevice?*dev,

unsignedshorttype,

void*daddr,

void*saddr,

unsigned?len,

structsk_buff?*skb);

int(*rebuild_header)(void*eth,structdevice?*dev,

unsignedlongraddr,structsk_buff?*skb);

unsignedshort(*type_trans)?(structsk_buff?*skb,

structdevice?*dev);

#define?HAVE_MULTICAST

void(*set_multicast_list)(structdevice?*dev,

intnum_addrs,void*addrs);

#define?HAVE_SET_MAC_ADDR

int(*set_mac_address)(structdevice?*dev,void*addr);

#define?HAVE_PRIVATE_IOCTL

int(*do_ioctl)(structdevice?*dev,structifreq?*ifr,intcmd);

#define?HAVE_SET_CONFIG

int(*set_config)(structdevice?*dev,structifmap?*map);

};dev_init()網(wǎng)絡設備的初始化函數(shù)如下:

/*

*??Initialize?the?DEV?module.?At?boot?time?this?walks?the?device?list?and

*??unhooks?any?devices?that?fail?to?initialise?(normally?hardware?not

*??present)?and?leaves?us?with?a?valid?list?of?present?and?active?devices.

*

*??The?PCMCIA?code?may?need?to?change?this?a?little,?and?add?a?pair

*??of?register_inet_device()?unregister_inet_device()?calls.?This?will?be

*??needed?for?ethernet?as?modules?support.

*/

voiddev_init(void)

{

structdevice?*dev,?*dev2;

/*

*??Add?the?devices.

*??If?the?call?to?dev->init?fails,?the?dev?is?removed

*??from?the?chain?disconnecting?the?device?until?the

*??next?reboot.

*/

dev2?=?NULL;

for(dev?=?dev_base;?dev?!=?NULL;?dev=dev->next)//循環(huán)移除設備由璞傅絛ev_base指向的網(wǎng)絡設備鏈表

{

if(dev->init?&&?dev->init(dev))//如果設備有初始化函數(shù)并且初始化失敗,則從鏈表摘除設備(init()函數(shù)成功返回0)

{

/*

*??It?failed?to?come?up.?Unhook?it.這個函數(shù)還挺有技巧性的,從默認配置的設備中掃描不存在的設備,將其移除

*/

if(dev2?==?NULL)

dev_base?=?dev->next;

else

dev2->next?=?dev->next;

}

else

{

dev2?=?dev;

}

}

}這里我們看一下dev_base這個隊列是如何定義的,這里我們僅僅看eth網(wǎng)卡的定義方式即可

/*?"eth0"?defaults?to?autoprobe?(==?0),?other?use?a?base?of?0xffe0?(==?-0x20),

which?means?"don't?probe".??These?entries?exist?to?only?to?provide?empty

slots?which?may?be?enabled?at?boot-time.?*/

staticstructdevice?eth3_dev?=?{

"eth3",?0,0,0,0,0xffe0/*?I/O?base*/,?0,0,0,0,?NEXT_DEV,?ethif_probe?};

staticstructdevice?eth2_dev?=?{

"eth2",?0,0,0,0,0xffe0/*?I/O?base*/,?0,0,0,0,?e3_dev,?ethif_probe?};

staticstructdevice?eth1_dev?=?{

"eth1",?0,0,0,0,0xffe0/*?I/O?base*/,?0,0,0,0,?e2_dev,?ethif_probe?};

staticstructdevice?eth0_dev?=?{

"eth0",?0,?0,?0,?0,?ETH0_ADDR,?ETH0_IRQ,?0,?0,?0,?e1_dev,?ethif_probe?};

#???undef?NEXT_DEV

#???define?NEXT_DEV?(e0_dev)可以看出eth系列網(wǎng)卡設備的init函數(shù)定義為ethif_probe(),該函數(shù)會調(diào)用具體網(wǎng)卡的探測函數(shù),我們還是以?NS8390 ethernet網(wǎng)卡為例來分析,該網(wǎng)卡的驅動實現(xiàn)文件為drivers/net/ne.c

ethif_probe()函數(shù)會調(diào)用函數(shù)ne_probe()探測函數(shù),而該函數(shù)對設備地址進行檢查后調(diào)用ne_probe1()函數(shù),具體工作有ne_probe1()函數(shù)完成。

函數(shù)如下:

staticintne_probe1(structdevice?*dev,intioaddr)

{

.....................//合法性檢查

/*?Fixup?for?users?that?don't?know?that?IRQ?2?is?really?IRQ?9,

or?don't?know?which?one?to?set.?*/

dev->irq?=?9;//設置中斷類型號

/*?Snarf?the?interrupt?now.??There's?no?point?in?waiting?since?we?cannot

share?and?the?board?will?usually?be?enabled.?*/

{

intirqval?=?request_irq?(dev->irq,?ei_interrupt,?0,?wordlength==2??"ne2000":"ne1000");//注冊申請中斷,中斷處理函數(shù)為ei_interrupt

if(irqval)?{

printk?("?unable?to?get?IRQ?%d?(irqval=%d).\n",?dev->irq,?irqval);

returnEAGAIN;

}

}

dev->base_addr?=?ioaddr;

request_region(ioaddr,?NE_IO_EXTENT,?wordlength==2??"ne2000":"ne1000");//申請內(nèi)存空間

for(i?=?0;?i?

dev->dev_addr[i]?=?SA_prom[i];

ethdev_init(dev);//調(diào)用函數(shù)對dev設備結構體進行初始化

printk("\n%s:?%s?found?at?%#x,?using?IRQ?%d.\n",

dev->name,?name,?ioaddr,?dev->irq);

if(ei_debug?>?0)

printk(version);

ei_status.name?=?name;

ei_status.tx_start_page?=?start_page;

ei_status.stop_page?=?stop_page;

ei_status.word16?=?(wordlength?==?2);

ei_status.rx_start_page?=?start_page?+?TX_PAGES;

#ifdef?PACKETBUF_MEMSIZE

/*?Allow?the?packet?buffer?size?to?be?overridden?by?know-it-alls.?*/

ei_status.stop_page?=?ei_status.tx_start_page?+?PACKETBUF_MEMSIZE;

#endif

ei_status.reset_8390?=?&ne_reset_8390;

ei_status.block_input?=?&ne_block_input;

ei_status.block_output?=?&ne_block_output;

NS8390_init(dev,?0);//配置網(wǎng)卡中的寄存器等到默認狀態(tài)

return0;

}初始化函數(shù)ethdev_init()在文件drivers/net/8390.c中。如下:

/*?Initialize?the?rest?of?the?8390?device?structure.?*/

intethdev_init(structdevice?*dev)

{

if(ei_debug?>?1)

printk(version);

if(dev->priv?==?NULL)?{//申請私有空間存儲具體網(wǎng)卡的結構體信息

structei_device?*ei_local;//8390網(wǎng)卡設備的結構體

dev->priv?=?kmalloc(sizeof(structei_device),?GFP_KERNEL);//申請內(nèi)核內(nèi)存空間

memset(dev->priv,?0,sizeof(structei_device));

ei_local?=?(structei_device?*)dev->priv;

#ifndef?NO_PINGPONG

ei_local->pingpong?=?1;

#endif

}

/*?The?open?call?may?be?overridden?by?the?card-specific?code.?*/

if(dev->open?==?NULL)

dev->open?=?&ei_open;//設備的打開函數(shù)

/*?We?should?have?a?dev->stop?entry?also.?*/

dev->hard_start_xmit?=?&ei_start_xmit;//設備的發(fā)送函數(shù),定義在8390.c中

dev->get_stats???=?get_stats;

#ifdef?HAVE_MULTICAST

dev->set_multicast_list?=?&set_multicast_list;

#endif

ether_setup(dev);//進一步調(diào)用函數(shù)設置dev設備結構體

return0;

}ether_setup()函數(shù)的實現(xiàn)如下:

voidether_setup(structdevice?*dev)

{

inti;

/*?Fill?in?the?fields?of?the?device?structure?with?ethernet-generic?values.

This?should?be?in?a?common?file?instead?of?per-driver.??*/

for(i?=?0;?i?

skb_queue_head_init(&dev->buffs[i]);//緩沖隊列初始化

/*?register?boot-defined?"eth"?devices?*/

if(dev->name?&&?(strncmp(dev->name,"eth",?3)?==?0))?{//定義eth網(wǎng)卡的名稱

i?=?simple_strtoul(dev->name?+?3,?NULL,?0);

if(ethdev_index[i]?==?NULL)?{

ethdev_index[i]?=?dev;

}

elseif(dev?!=?ethdev_index[i])?{

/*?Really?shouldn't?happen!?*/

printk("ether_setup:?Ouch!?Someone?else?took?%s\n",

dev->name);

}

}

dev->hard_header?=?eth_header;//該函數(shù)的作用是創(chuàng)建鏈路層首部,定義在eth.c中

dev->rebuild_header?=?eth_rebuild_header;//該函數(shù)的作用是重建鏈路層首部,用于ARP協(xié)議

dev->type_trans?=?eth_type_trans;

dev->type????????=?ARPHRD_ETHER;

dev->hard_header_len?=?ETH_HLEN;

dev->mtu?????=?1500;/*?eth_mtu?*/

dev->addr_len????=?ETH_ALEN;

for(i?=?0;?i?

dev->broadcast[i]=0xff;

}

/*?New-style?flags.?*/

dev->flags???????=?IFF_BROADCAST|IFF_MULTICAST;

dev->family??????=?AF_INET;

dev->pa_addr?=?0;

dev->pa_brdaddr?=?0;

dev->pa_mask?=?0;

dev->pa_alen?=sizeof(unsignedlong);

}這樣,網(wǎng)絡設備的初始化工作就完成了。

在drivers/net/8390.c中實現(xiàn)了該網(wǎng)卡的設備的基本操作函數(shù),

設備的打開函數(shù)ei_open()比較簡單,下面列出該設備的發(fā)送和接收函數(shù),在這里不做具體的分析,如果想更多了解請點擊前面分析過的DM9000網(wǎng)卡驅動,下面給出鏈接:

ei_start_xmit()

staticintei_start_xmit(structsk_buff?*skb,structdevice?*dev)

{

inte8390_base?=?dev->base_addr;

structei_device?*ei_local?=?(structei_device?*)?dev->priv;

intlength,?send_length;

unsignedlongflags;

/*

*??We?normally?shouldn't?be?called?if?dev->tbusy?is?set,?but?the

*??existing?code?does?anyway.?If?it?has?been?too?long?since?the

*??last?Tx,?we?assume?the?board?has?died?and?kick?it.

*/

if(dev->tbusy)?{/*?Do?timeouts,?just?like?the?8003?driver.?*/

inttxsr?=?inb(e8390_base+EN0_TSR),?isr;

inttickssofar?=?jiffies?-?dev->trans_start;

if(tickssofar?

return1;

}

isr?=?inb(e8390_base+EN0_ISR);

if(dev->start?==?0)?{

printk("%s:?xmit?on?stopped?card\n",?dev->name);

return1;

}

printk(KERN_DEBUG"%s:?transmit?timed?out,?TX?status?%#2x,?ISR?%#2x.\n",

dev->name,?txsr,?isr);

/*?Does?the?8390?thinks?it?has?posted?an?interrupt??*/

if(isr)

printk(KERN_DEBUG"%s:?Possible?IRQ?conflict?on?IRQ%d?\n",?dev->name,?dev->irq);

else{

/*?The?8390?probably?hasn't?gotten?on?the?cable?yet.?*/

printk(KERN_DEBUG"%s:?Possible?network?cable?problem?\n",?dev->name);

if(ei_local->stat.tx_packets==0)

ei_local->interface_num?^=?1;/*?Try?a?different?xcvr.??*/

}

/*?Try?to?restart?the?card.??Perhaps?the?user?has?fixed?something.?*/

ei_reset_8390(dev);

NS8390_init(dev,?1);

dev->trans_start?=?jiffies;

}

/*?Sending?a?NULL?skb?means?some?higher?layer?thinks?we've?missed?an

tx-done?interrupt.?Caution:?dev_tint()?handles?the?cli()/sti()

itself.?*/

if(skb?==?NULL)?{

dev_tint(dev);

return0;

}

length?=?skb->len;

if(skb->len?<=?0)

return0;

save_flags(flags);

cli();

/*?Block?a?timer-based?transmit?from?overlapping.?*/

if((set_bit(0,?(void*)&dev->tbusy)?!=?0)?||?ei_local->irqlock)?{

printk("%s:?Tx?access?conflict.?irq=%d?lock=%d?tx1=%d?tx2=%d?last=%d\n",

dev->name,?dev->interrupt,?ei_local->irqlock,?ei_local->tx1,

ei_local->tx2,?ei_local->lasttx);

restore_flags(flags);

return1;

}

/*?Mask?interrupts?from?the?ethercard.?*/

outb(0x00,?e8390_base?+?EN0_IMR);

ei_local->irqlock?=?1;

restore_flags(flags);

send_length?=?ETH_ZLEN?

if(ei_local->pingpong)?{

intoutput_page;

if(ei_local->tx1?==?0)?{

output_page?=?ei_local->tx_start_page;

ei_local->tx1?=?send_length;

if(ei_debug??&&??ei_local->tx2?>?0)

printk("%s:?idle?transmitter?tx2=%d,?lasttx=%d,?txing=%d.\n",

dev->name,?ei_local->tx2,?ei_local->lasttx,

ei_local->txing);

}elseif(ei_local->tx2?==?0)?{

output_page?=?ei_local->tx_start_page?+?6;

ei_local->tx2?=?send_length;

if(ei_debug??&&??ei_local->tx1?>?0)

printk("%s:?idle?transmitter,?tx1=%d,?lasttx=%d,?txing=%d.\n",

dev->name,?ei_local->tx1,?ei_local->lasttx,

ei_local->txing);

}else{/*?We?should?never?get?here.?*/

if(ei_debug)

printk("%s:?No?Tx?buffers?free.?irq=%d?tx1=%d?tx2=%d?last=%d\n",

dev->name,?dev->interrupt,?ei_local->tx1,

ei_local->tx2,?ei_local->lasttx);

ei_local->irqlock?=?0;

dev->tbusy?=?1;

outb_p(ENISR_ALL,?e8390_base?+?EN0_IMR);

return1;

}

ei_block_output(dev,?length,?skb->data,?output_page);

if(!?ei_local->txing)?{

ei_local->txing?=?1;

NS8390_trigger_send(dev,?send_length,?output_page);

dev->trans_start?=?jiffies;

if(output_page?==?ei_local->tx_start_page)

ei_local->tx1?=?-1,?ei_local->lasttx?=?-1;

else

ei_local->tx2?=?-1,?ei_local->lasttx?=?-2;

}else

ei_local->txqueue++;

dev->tbusy?=?(ei_local->tx1??&&??ei_local->tx2);

}else{/*?No?pingpong,?just?a?single?Tx?buffer.?*/

ei_block_output(dev,?length,?skb->data,?ei_local->tx_start_page);

ei_local->txing?=?1;

NS8390_trigger_send(dev,?send_length,?ei_local->tx_start_page);

dev->trans_start?=?jiffies;

dev->tbusy?=?1;

}

/*?Turn?8390?interrupts?back?on.?*/

ei_local->irqlock?=?0;

outb_p(ENISR_ALL,?e8390_base?+?EN0_IMR);

dev_kfree_skb?(skb,?FREE_WRITE);

return0;

}ei_receive()函數(shù)

staticvoidei_receive(structdevice?*dev)

{

inte8390_base?=?dev->base_addr;

structei_device?*ei_local?=?(structei_device?*)?dev->priv;

intrxing_page,?this_frame,?next_frame,?current_offset;

intrx_pkt_count?=?0;

structe8390_pkt_hdr?rx_frame;

intnum_rx_pages?=?ei_local->stop_page-ei_local->rx_start_page;

while(++rx_pkt_count?

intpkt_len;

/*?Get?the?rx?page?(incoming?packet?pointer).?*/

outb_p(E8390_NODMA+E8390_PAGE1,?e8390_base?+?E8390_CMD);

rxing_page?=?inb_p(e8390_base?+?EN1_CURPAG);

outb_p(E8390_NODMA+E8390_PAGE0,?e8390_base?+?E8390_CMD);

/*?Remove?one?frame?from?the?ring.??Boundary?is?always?a?page?behind.?*/

this_frame?=?inb_p(e8390_base?+?EN0_BOUNDARY)?+?1;

if(this_frame?>=?ei_local->stop_page)

this_frame?=?ei_local->rx_start_page;

/*?Someday?we'll?omit?the?previous,?iff?we?never?get?this?message.

(There?is?at?least?one?clone?claimed?to?have?a?problem.)??*/

if(ei_debug?>?0??&&??this_frame?!=?ei_local->current_page)

printk("%s:?mismatched?read?page?pointers?%2x?vs?%2x.\n",

dev->name,?this_frame,?ei_local->current_page);

if(this_frame?==?rxing_page)/*?Read?all?the?frames??*/

break;/*?Done?for?now?*/

current_offset?=?this_frame?<

ei_block_input(dev,sizeof(rx_frame),?(char*)&rx_frame,

current_offset);

pkt_len?=?rx_frame.count?-sizeof(rx_frame);

next_frame?=?this_frame?+?1?+?((pkt_len+4)>>8);

/*?Check?for?bogosity?warned?by?3c503?book:?the?status?byte?is?never

written.??This?happened?a?lot?during?testing!?This?code?should?be

cleaned?up?someday.?*/

if(rx_frame.next?!=?next_frame

&&?rx_frame.next?!=?next_frame?+?1

&&?rx_frame.next?!=?next_frame?-?num_rx_pages

&&?rx_frame.next?!=?next_frame?+?1?-?num_rx_pages)?{

ei_local->current_page?=?rxing_page;

outb(ei_local->current_page-1,?e8390_base+EN0_BOUNDARY);

ei_local->stat.rx_errors++;

continue;

}

if(pkt_len??1518)?{

if(ei_debug)

printk("%s:?bogus?packet?size:?%d,?status=%#2x?nxpg=%#2x.\n",

dev->name,?rx_frame.count,?rx_frame.status,

rx_frame.next);

ei_local->stat.rx_errors++;

}elseif((rx_frame.status?&?0x0F)?==?ENRSR_RXOK)?{

structsk_buff?*skb;

skb?=?alloc_skb(pkt_len,?GFP_ATOMIC);

if(skb?==?NULL)?{

if(ei_debug?>?1)

printk("%s:?Couldn't?allocate?a?sk_buff?of?size?%d.\n",

dev->name,?pkt_len);

ei_local->stat.rx_dropped++;

break;

}else{

skb->len?=?pkt_len;

skb->dev?=?dev;

ei_block_input(dev,?pkt_len,?(char*)?skb->data,

current_offset?+sizeof(rx_frame));

netif_rx(skb);

ei_local->stat.rx_packets++;

}

}else{

interrs?=?rx_frame.status;

if(ei_debug)

printk("%s:?bogus?packet:?status=%#2x?nxpg=%#2x?size=%d\n",

dev->name,?rx_frame.status,?rx_frame.next,

rx_frame.count);

if(errs?&?ENRSR_FO)

ei_local->stat.rx_fifo_errors++;

}

next_frame?=?rx_frame.next;

/*?This?_should_?never?happen:?it's?here?for?avoiding?bad?clones.?*/

if(next_frame?>=?ei_local->stop_page)?{

printk("%s:?next?frame?inconsistency,?%#2x\n",?dev->name,

next_frame);

next_frame?=?ei_local->rx_start_page;

}

ei_local->current_page?=?next_frame;

outb_p(next_frame-1,?e8390_base+EN0_BOUNDARY);

}

/*?If?any?worth-while?packets?have?been?received,?dev_rint()

has?done?a?mark_bh(NET_BH)?for?us?and?will?work?on?them

when?we?get?to?the?bottom-half?routine.?*/

/*?Record?the?maximum?Rx?packet?queue.?*/

if(rx_pkt_count?>?high_water_mark)

high_water_mark?=?rx_pkt_count;

/*?Bug?alert!??Reset?ENISR_OVER?to?avoid?spurious?overruns!?*/

outb_p(ENISR_RX+ENISR_RX_ERR+ENISR_OVER,?e8390_base+EN0_ISR);

return;

}

總結

以上是生活随笔為你收集整理的显示驱动包含在Linux内核层,驱动程序层(上) - Linux内核--网络栈实现分析_Linux编程_Linux公社-Linux系统门户网站...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

麻豆观看 | 夜色成人网 | 天天干夜夜擦 | 在线黄色免费av | 日韩网站中文字幕 | 一区三区视频在线观看 | 国产精品剧情在线亚洲 | 亚洲成a人片在线观看中文 中文字幕在线视频第一页 狠狠色丁香婷婷综合 | 日韩精品一区二区三区不卡 | 99久久综合国产精品二区 | 色偷偷网站视频 | 天天天综合 | 在线影视 一区 二区 三区 | 国产午夜精品一区二区三区在线观看 | 99视频这里有精品 | 亚洲一级片免费观看 | 日韩精品专区在线影院重磅 | 国产精品一区二区三区在线 | 日韩,精品电影 | 一级欧美黄 | 久青草国产在线 | 成人在线黄色 | 久久a热6 | 国产精品免费在线观看视频 | 免费看av片网站 | 91桃花视频 | 免费在线电影网址大全 | 国产一区福利在线 | 婷婷去俺也去六月色 | 波多野结衣在线观看视频 | 欧美精品一区二区免费 | av在线激情 | 国产免费高清视频 | 亚洲1级片 | 91新人在线观看 | 日韩超碰 | 一区在线观看视频 | 午夜精品久久久99热福利 | 日本中文字幕在线看 | 国产免费不卡 | 国产综合婷婷 | 91理论电影 | 国产不卡精品 | 黄色视屏在线免费观看 | 成全在线视频免费观看 | 免费看黄色91| bbbbb女女女女女bbbbb国产 | 久久观看 | 日日干天天爽 | 又黄又爽又湿又无遮挡的在线视频 | 亚洲精品影视 | 国产在线精品观看 | 亚洲欧美精品一区 | 久久精品视频免费播放 | 欧美日韩不卡一区二区 | 少妇bbbb | 日韩精品免费在线播放 | 波多野结衣综合网 | 中文字幕电影在线 | www日韩在线观看 | 91av在线精品| 夜又临在线观看 | 九九视频免费在线观看 | 韩国一区在线 | 久久精品牌麻豆国产大山 | 99热这里只有精品国产首页 | av在线网站免费观看 | 国产品久精国精产拍 | 精品成人久久 | 日韩免费三区 | 国产高清日韩 | 日日射av | 黄色亚洲片 | 久久久久国产a免费观看rela | 久久久久成人精品免费播放动漫 | 91色影院| 欧美专区国产专区 | 婷婷色中文 | 国产一区二区在线免费视频 | 特黄特黄的视频 | 婷婷色中文网 | 色在线网站| 国产专区在线视频 | 中文av网站 | 亚洲激情视频在线 | 国产成人精品在线播放 | 美女av免费 | 天天爽夜夜操 | 日韩首页 | 国产在线观看高清视频 | 五月天久久婷婷 | 91麻豆精品国产91久久久更新时间 | 激情www| 成人免费网站视频 | 波多野结衣视频在线 | 日韩精品中文字幕在线不卡尤物 | 欧美a性 | 国产精品久久久久久99 | 在线看av网址 | 久久区二区 | 久草网站在线 | 亚洲精品av中文字幕在线在线 | 国产精品欧美激情在线观看 | 97超碰超碰久久福利超碰 | 国产免费精彩视频 | 国产精品国产毛片 | 欧美视频二区 | 欧美性极品xxxx做受 | 992tv人人网tv亚洲精品 | 天天射天天艹 | 国产精品精品 | 国产中文字幕亚洲 | 国产高清不卡 | 区一区二在线 | 国产日韩高清在线 | 国产99久久久国产精品成人免费 | 亚洲精品一区二区三区高潮 | 久久人人爽人人片 | 天天色 天天 | 亚洲涩涩色 | 欧美精品久久久久久久久久久 | 中文字幕高清免费日韩视频在线 | 中文字幕在线视频精品 | 国产在线观看免 | 在线播放国产一区二区三区 | 麻豆久久精品 | 国产一二区视频 | 成人久久综合 | 久久综合九色综合久久久精品综合 | 国产精品theporn | 综合在线亚洲 | 五月婷婷黄色 | 亚洲精品九九 | 中文字幕网址 | 一区二区三区日韩在线观看 | 欧美一级视频在线观看 | 在线视频麻豆 | 国产黄在线 | 狠狠久久伊人 | 国产精品久久二区 | av片子在线观看 | 在线免费观看视频一区 | 蜜臀av麻豆| 国产一级精品在线观看 | 国产真实精品久久二三区 | 国产精品剧情在线亚洲 | 免费久久网站 | 96久久欧美麻豆网站 | 91av99| 久久精品亚洲精品国产欧美 | 波多野结衣久久精品 | 波多野结衣理论片 | 天天舔天天搞 | 在线一区观看 | 97在线精品| 啪啪免费观看网站 | 亚洲一区二区三区在线看 | 国产高清在线观看 | 999久久a精品合区久久久 | 久久影院一区 | 奇米网网址 | 视频国产精品 | 国产第一页福利影院 | av超碰在线 | 麻豆精品91| 欧美日韩性视频在线 | 九九九九九九精品 | 亚洲人天堂| 日韩中文在线电影 | 韩国精品在线 | 欧美日本在线观看视频 | 超碰人人舔 | 精品中文字幕在线 | 成年人视频在线免费观看 | www.五月婷婷 | 国产91精品一区二区麻豆网站 | 日韩中文字幕国产精品 | 国产精品露脸在线 | 免费观看十分钟 | 久久精品中文字幕免费mv | 99视频在线免费看 | 九草视频在线观看 | 午夜 在线 | 在线免费av播放 | 久久久精品欧美一区二区免费 | 久久99精品久久久久婷婷 | 亚洲精品动漫在线 | 日韩三级久久 | 在线观看色网站 | 一区中文字幕在线观看 | avove黑丝 | 国产精品无av码在线观看 | 日韩精品在线视频 | 精品美女久久久久久免费 | 美女国产免费 | 午夜狠狠干 | av免费电影在线观看 | 日韩在线国产精品 | 国产精品免费不卡 | 久久av免费观看 | 丁香六月在线观看 | 国产福利中文字幕 | 婷婷综合五月天 | 香蕉影院在线播放 | 91福利国产在线观看 | 91爱爱电影 | ww亚洲ww亚在线观看 | 午夜精品视频一区二区三区在线看 | 天天干天天操天天拍 | 久久在线免费观看视频 | 色干综合 | 91久久奴性调教 | 97小视频 | 福利视频网站 | 国产精品久久久久9999 | 看全黄大色黄大片 | 免费网站黄 | 亚洲欧美综合精品久久成人 | 色偷偷88888欧美精品久久久 | 视频1区2区 | 国产视频18 | 狠狠操狠狠插 | 丁香婷婷自拍 | 成人一区影院 | 国产色在线视频 | 国产一二区视频 | 蜜臀一区二区三区精品免费视频 | 一区二区三区四区五区六区 | 视频一区二区在线 | 欧美影片 | 亚洲欧美精品一区二区 | 日韩在线三级 | 国产精品免费观看视频 | 狠狠狠狠干 | 97精品免费视频 | 中文字幕在线免费播放 | 欧美国产亚洲精品久久久8v | 99精品美女 | 亚洲少妇xxxx | 欧美日韩中文视频 | 国产亚洲小视频 | 91精品在线免费视频 | 久久久久久久久久免费视频 | 午夜影院在线观看18 | 婷婷网站天天婷婷网站 | 久久超| 伊人午夜 | 国产一区二区播放 | 亚洲人成免费网站 | 日韩免费不卡av | 91视频免费看 | 日韩在线小视频 | 在线视频免费观看 | 91在线国内视频 | 欧美韩国在线 | www91在线观看 | 91九色网站 | 婷婷九月激情 | 在线观看免费成人av | 国产精品视频在线观看 | 国产高清视频在线播放一区 | 色七七亚洲影院 | 欧美作爱视频 | 国产精品久久人 | 色综合咪咪久久网 | 亚洲精品成人免费 | 亚洲资源在线观看 | 欧美特一级片 | 欧美成a人片在线观看久 | 亚洲黄色一级电影 | 久久免费公开视频 | 国产精品高清免费在线观看 | 欧美在线一二 | 国模精品在线 | 天天操伊人 | 欧美91精品国产自产 | 午夜在线免费观看 | sm免费xx网站 | 99热官网 | 久草电影免费在线观看 | 一级性视频 | 亚洲成成品网站 | 久草在线中文888 | 人人射人人射 | 久久国产亚洲视频 | 欧美一区二区三区在线看 | 久久草在线免费 | 日韩精品一区二区在线视频 | 精品综合久久久 | 欧美一区二区伦理片 | 国产剧情一区在线 | 中文字幕在线观看av | 日韩av影视 | 玖玖在线观看视频 | 操处女逼| 麻豆一区在线观看 | 97av精品| 成人黄色大片在线观看 | 国产麻豆精品一区 | 久久久午夜电影 | 亚洲成a人片在线观看中文 中文字幕在线视频第一页 狠狠色丁香婷婷综合 | 狠狠色丁香久久婷婷综合五月 | 国产精品美女久久久久久 | 亚洲国内精品在线 | 久久久黄色免费网站 | 日本黄色免费电影网站 | 色网站免费在线观看 | 一级做a爱片性色毛片www | 狠狠躁夜夜av | 青春草视频在线播放 | 色综合久久88色综合天天人守婷 | 在线午夜 | 久久性生活片 | 一区二区三区视频在线 | 福利电影一区二区 | 日韩精品一区电影 | av千婊在线免费观看 | 欧美日韩三级 | 一级性av| 日韩国产欧美在线播放 | 超级av在线 | 99成人免费视频 | 2018好看的中文在线观看 | 日日夜夜噜| 99久久精品国产亚洲 | 日韩免费av网址 | 色综合久久88色综合天天免费 | 国产成人av福利 | 又黄又爽又色无遮挡免费 | 久久国产精品二国产精品中国洋人 | 亚洲精品麻豆视频 | 天天伊人网 | www日韩在线 | 国产精品午夜8888 | 激情五月婷婷综合 | 亚在线播放中文视频 | 日本公乱妇视频 | 天堂久色| 欧美日韩三级在线观看 | 久久免费精品国产 | 992tv人人网tv亚洲精品 | 久草热久草视频 | 国产精品小视频网站 | 色婷五月天| 国产成人精品av在线 | 色在线免费 | 又大又硬又黄又爽视频在线观看 | 久久成熟 | 久久er99热精品一区二区 | 日韩大片免费在线观看 | 韩国三级一区 | 久草在线中文888 | 亚洲成人黄色网址 | 99国内精品久久久久久久 | 一二三精品视频 | 亚洲午夜电影网 | 97成人精品视频在线观看 | 国产精品久久久久久久妇 | 免费在线国产视频 | 中文在线字幕免 | www久久99 | 婷婷丁香色综合狠狠色 | 日韩在线无 | 涩涩网站在线播放 | 亚洲成人免费 | 中文av字幕在线观看 | 欧美精品亚洲二区 | 精品九九九 | 日韩在线观看免费 | 日日干网 | 亚洲免费婷婷 | 中文av日韩 | 91精品国产91久久久久 | 日本精品视频在线观看 | 亚洲aⅴ乱码精品成人区 | 亚洲欧美日本国产 | 成人资源网 | 欧美少妇xx | 欧美色一色| 狠狠干激情 | 日韩久久一区 | 国产无区一区二区三麻豆 | 精品一区二区日韩 | 在线观看av的网站 | 国产成人精品一区二区三区网站观看 | 男女视频91 | 久久夜夜操 | 美女在线免费观看视频 | 91中文视频| 日韩午夜电影网 | 国产91全国探花系列在线播放 | 欧美日韩1区 | 日韩精品亚洲专区在线观看 | 久久综合九色综合97婷婷女人 | 国产 日韩 在线 亚洲 字幕 中文 | 最近中文字幕在线播放 | 在线观看日韩中文字幕 | 91视频 - 114av | 草久在线观看 | 精品久久精品久久 | 91亚洲精品久久久中文字幕 | 中文字幕国语官网在线视频 | 成人黄色电影视频 | 亚洲黄色小说网址 | 国产成人福利在线 | 色婷婷导航 | 99久久精品免费 | 伊在线视频 | 高清在线一区二区 | 奇米7777狠狠狠琪琪视频 | 在线观看视频三级 | 日韩av区 | 国产区精品区 | 国产91免费在线观看 | 日韩欧美一区视频 | 中文字幕av最新 | 亚洲人成人在线 | 国产一级片免费视频 | a特级毛片 | 久久av免费 | 国产日韩欧美在线播放 | 摸bbb搡bbb搡bbbb | 国产日韩精品一区二区三区 | 中国一级片视频 | 中文字幕亚洲字幕 | 一区二区精品 | 国产精品美女网站 | 青青草久草在线 | 亚洲精品久久久久久久蜜桃 | 三级av免费 | 国产中文字幕一区二区三区 | 五月天亚洲婷婷 | 久久久久久久久久久精 | 久久高清精品 | 美女国产精品 | 日b视频在线观看网址 | 中文乱码视频在线观看 | 亚洲精品视频免费在线 | 99资源网| 麻花传媒mv免费观看 | 狠狠干综合网 | 91视频首页 | 狠狠的干狠狠的操 | 久久久久久久久久久久久国产精品 | 在线视频手机国产 | 在线黄频| 在线看成人av | 国产精品久久久久久久久久久久 | 伊人电影天堂 | 99re8这里有精品热视频免费 | 日本黄色免费大片 | 96超碰在线 | 99色亚洲| 国产精品ⅴa有声小说 | 国产精品精品国产 | 日本精品中文字幕在线观看 | 激情久久网 | 国产成人精品999 | 天天夜夜亚洲 | 一区二区三区韩国免费中文网站 | 天天爱天天操天天爽 | 99热这里只有精品久久 | 久久综合免费 | 国产精品久久免费看 | 日韩一区二区三免费高清在线观看 | 成人性生交大片免费观看网站 | 丝袜+亚洲+另类+欧美+变态 | av成人资源 | 亚洲好视频 | 欧美久久久久久久久中文字幕 | 国产精品系列在线播放 | 免费观看成人 | 久久久96| 丁香六月伊人 | 亚洲国产中文在线观看 | 欧美色综合久久 | 亚洲精品一区二区三区在线观看 | 久久精品视频免费观看 | 97人人射 | 欧美日韩中文字幕在线视频 | 成人97视频一区二区 | 99在线精品视频在线观看 | 久久久久久久久久亚洲精品 | 国产精品久久久久久久久久久久久久 | 国产在线国偷精品产拍免费yy | 亚洲国产高清视频 | 精品日韩中文字幕 | 欧美日韩在线观看视频 | 亚洲精区二区三区四区麻豆 | 丁香五月亚洲综合在线 | 黄色tv视频| 免费高清无人区完整版 | 亚州精品在线视频 | 色丁香婷婷 | 丁香国产视频 | 亚洲精品456在线播放 | 波多野结衣一区二区三区中文字幕 | www黄com | 日韩一区二区三区视频在线 | 热热热热热色 | 亚洲精品美女久久久久 | 99视频在线免费 | 中文在线免费看视频 | 91看片看淫黄大片 | 天天操福利视频 | 日韩高清在线观看 | 欧美一级大片在线观看 | 免费看久久 | 久久成年人视频 | 黄色1级毛片 | 国产999精品久久久久久绿帽 | 国产精品欧美激情在线观看 | 三级av网 | 91免费版成人 | h视频在线看 | 97夜夜澡人人爽人人免费 | 免费在线播放黄色 | 成人免费在线电影 | 91精品看片| 国产精品亚洲成人 | 亚洲网久久 | 色视频网页 | 国产在线色视频 | 国产成人精品女人久久久 | 国产黄色片一级 | 国产色婷婷精品综合在线手机播放 | 亚洲成年片| 在线 影视 一区 | 欧美日韩在线观看一区二区 | 久久国产精品99国产 | 91视频观看免费 | 99草在线视频 | 六月丁香激情网 | 美女av免费看| 久久亚洲欧美 | 黄网站免费大全入口 | 欧美激情精品久久久 | 福利久久久 | 精品福利网 | 色丁香色婷婷 | 国产涩涩在线观看 | 精品国产一区二区三区久久久蜜臀 | 激情五月在线视频 | 成人黄色在线视频 | 91成人破解版 | 国产亚洲精品综合一区91 | www.伊人网| 欧美一级日韩三级 | 这里只有精品视频在线观看 | 婷婷视频导航 | 亚洲三级性片 | 99视频网址| 亚洲精品午夜国产va久久成人 | 国内揄拍国产精品 | av网站大全免费 | 亚洲a网 | 国产精品久久久久久一区二区 | 97超碰人人模人人人爽人人爱 | 成人在线黄色电影 | av免费在线播放 | 亚洲欧洲精品一区二区 | 日韩久久精品一区二区 | 99热在线免费观看 | 亚洲成人免费 | 中文字幕在线观看av | 最新国产精品亚洲 | 黄色在线观看网站 | 综合成人在线 | 久久精品亚洲一区二区三区观看模式 | 国产99久久久欧美黑人 | 久久久久成人精品亚洲国产 | 欧美天天综合网 | 久久狠狠一本精品综合网 | 久久96国产精品久久99漫画 | 人人玩人人添人人 | 91福利视频一区 | 182午夜在线观看 | 国产99re | 日韩欧美精品一区二区三区经典 | 午夜精品久久久久久久99婷婷 | 亚洲欧洲成人 | 欧美-第1页-屁屁影院 | 久久国产精品99国产精 | 九色精品免费永久在线 | 五月天中文字幕 | 国产中文字幕在线看 | 韩国在线一区二区 | 中文亚洲欧美日韩 | 欧美激情视频在线观看免费 | 国产亚洲成av片在线观看 | 97在线免费观看 | 青青色影院 | av高清一区 | 日韩色av色资源 | 人人爽人人片 | 天天操天天操天天爽 | 最新av网址在线 | 亚洲视频 在线观看 | 国产女人免费看a级丨片 | 99精品视频在线观看播放 | 91桃色免费观看 | 色综合久久久久 | 超碰97在线资源站 | www黄色av| 日韩中文在线观看 | 精品国产伦一区二区三区观看体验 | 91亚洲国产成人 | www.在线观看视频 | 欧美三级在线播放 | 中文字幕韩在线第一页 | 99久久99久久精品免费 | 国产夫妻性生活自拍 | 国产高清av免费在线观看 | 91视频在线观看免费 | 久久在线视频精品 | 中文字幕美女免费在线 | 午夜精品电影一区二区在线 | 久久综合久久八八 | 91视频久久久久久 | 九九久久久久久久久激情 | 在线国产91 | 久免费 | 国产视频在线观看一区 | 色成人亚洲网 | 国产亚洲精品久久久久5区 成人h电影在线观看 | 91探花在线视频 | 欧美精品一区二区在线播放 | 成人国产亚洲 | 国产精品久久久久久久久蜜臀 | 国产 在线 高清 精品 | 自拍超碰在线 | 国产区av在线 | 青青草国产精品视频 | 中文字幕乱在线伦视频中文字幕乱码在线 | 成人国产电影在线观看 | av成人免费观看 | 国产精品麻豆99久久久久久 | 久久精视频 | 久久久精品免费观看 | 国产专区在线播放 | 国产精品毛片久久蜜 | 成人免费共享视频 | 一区二区影视 | 超碰在线人人爱 | 日韩激情视频在线 | 国产原创中文在线 | 日韩精品中文字幕在线播放 | 99热最新 | 日韩剧 | 亚洲精品国产精品乱码在线观看 | 国产va饥渴难耐女保洁员在线观看 | 91丨九色丨高潮丰满 | 亚洲人成在线电影 | 99久久99久久免费精品蜜臀 | 九九免费视频 | 国产精品成人免费精品自在线观看 | 亚洲成人精品久久久 | 亚洲人人爱 | 国产午夜精品一区二区三区在线观看 | 特级黄色视频毛片 | 久久久久久久久久久久影院 | 久热超碰 | 色先锋资源网 | 成人久久久久久久久久 | 久久综合电影 | 成人免费xxx在线观看 | 国产精品乱看 | 四虎www. | 中文字幕一区2区3区 | 精品一区二区久久久久久久网站 | 久久国产精品久久久久 | a一片一级 | 在线观看视频亚洲 | 色婷婷骚婷婷 | 天天操网| 免费黄色看片 | av午夜电影 | 一区二区三区日韩在线观看 | 免费合欢视频成人app | 中文字幕乱码视频 | 日韩在线视频国产 | 中文字幕在线观看第一区 | 日韩av影视在线 | 天天艹天天干天天 | 日本韩国精品一区二区在线观看 | 国产美女视频网站 | 一区二区三区精品久久久 | 少妇搡bbbb搡bbb搡忠贞 | 久久五月婷婷综合 | 天天爽夜夜操 | 久久免费影院 | 色a综合| 黄色亚洲片 | 国产精品密入口果冻 | 久精品在线观看 | 久久综合欧美精品亚洲一区 | 九九精品无码 | 国产精品高清免费在线观看 | 999精品视频| 91久久国产露脸精品国产闺蜜 | 色噜噜狠狠狠狠色综合久不 | 夜夜操狠狠操 | 欧美成人黄色片 | 国产精品综合av一区二区国产馆 | 97国产电影| 久久九九网站 | 成人午夜电影网 | 91亚洲精品在线 | 狠狠婷婷 | 亚洲国产成人在线 | 波多野结衣一区二区三区中文字幕 | 亚洲乱码国产乱码精品天美传媒 | 激情网五月天 | 久久久久久久久久久影院 | 国产精品露脸在线 | 男女全黄一级一级高潮免费看 | 色免费在线 | 国产色视频一区二区三区qq号 | 国产成人av在线 | 久久看毛片 | 成年人三级网站 | 成人av在线电影 | 97视频在线观看免费 | av在线一级 | 人人超碰人人 | 精品免费一区二区三区 | 欧美日本在线观看视频 | www国产亚洲精品久久网站 | 九九热在线播放 | 中文一区在线 | 人人视频网站 | 国产护士av | 91看片在线看片 | 成人av在线播放网站 | 97超碰.com | 精品一区二区免费视频 | 一区二区三区四区影院 | 久久激情五月婷婷 | 日韩乱码中文字幕 | 久久免费国产精品 | 香蕉成人在线视频 | 18国产精品白浆在线观看免费 | 久久精品99精品国产香蕉 | 久久精品一区二区三区中文字幕 | 波多野结衣视频在线 | 亚洲精品女人久久久 | 国产精品久久久久久久免费 | 国产男女免费完整视频 | 天天爽夜夜爽人人爽一区二区 | 成人wwwxxx视频 | 久草免费在线观看 | 在线观看一级片 | av天天澡天天爽天天av | 日韩精品久久久免费观看夜色 | 91视频久久久久 | 成人黄在线 | 中文国产在线观看 | 看av免费| 中文字幕高清av | 国产97在线视频 | 久久久精品成人 | 2022久久国产露脸精品国产 | 成年人免费电影在线观看 | 黄色成人91 | 青青久视频 | 九九热在线视频免费观看 | av在线中文 | 国产精品h在线观看 | 91精品一| 日韩性xxxx| 国产精品久久网站 | 日本免费一二三区 | 亚洲综合在线五月 | 九九热免费视频在线观看 | 热re99久久精品国产99热 | 九色最新网址 | 伊人午夜视频 | 久久久高清免费视频 | 中文在线 | 日本中文字幕网 | 在线观看av网站 | 国产精品黄色 | 天天射天天干天天 | 国内精品久久久久久久 | 久久国产精品视频免费看 | 欧美色就是色 | 久久不见久久见免费影院 | 久久精品视频网址 | 美女免费视频观看网站 | 欧美日韩在线观看一区二区三区 | 人成午夜视频 | 精品国产一区二区三区男人吃奶 | 波多野结衣电影一区 | 国产黄色一级片 | 狠色狠色综合久久 | 久久视频在线 | 久久精品草 | 在线观看视频在线观看 | 色wwww| 成人av动漫在线观看 | 日日射av | 久影院| 中文字幕a在线 | 国产精品视频在线看 | 天天射成人 | 国产视频久 | 久草视频国产 | 园产精品久久久久久久7电影 | 国产1区在线 | 色综合色综合色综合 | 日韩免费在线视频观看 | av视屏在线播放 | 午夜丁香网 | 精品在线播放视频 | 黄色片网站免费 | sm免费xx网站 | 成人97视频一区二区 | 国产在线视频一区二区 | 国产精品com | 奇米7777狠狠狠琪琪视频 | 久久免费a| 亚洲日b视频 | 99视频国产精品免费观看 | 中文字幕成人 | 一区二区三区在线观看免费 | 国产高清成人 | 一区二区视频在线看 | 久久草在线免费 | a久久久久 | 黄色视屏在线免费观看 | 亚洲精品福利在线 | 国产日韩欧美在线一区 | 欧美激情视频一二区 | 国产成人91| a久久免费视频 | 中文字幕色综合网 | 免费久久网站 | 欧美亚洲国产精品久久高清浪潮 | 五月天堂网 | 992tv人人网tv亚洲精品 | 国产资源精品在线观看 | 国产 字幕 制服 中文 在线 | 婷婷视频在线 | 91av在线看| 99久久久久久久久 | 亚洲 综合 激情 | 成人av地址| 色操插| 国产91精品一区二区麻豆网站 | 天天操比 | 免费精品视频在线 | 女人18片毛片90分钟 | 99爱国产精品 | 久久久这里有精品 | 婷婷久久久 | 最近中文字幕在线播放 | 丝袜网站在线观看 | 亚洲国产成人精品在线 | 最新高清无码专区 | 国产一级电影网 | 香蕉视频在线免费看 | 99c视频高清免费观看 | 美女视频黄免费网站 | 人人草在线视频 | 国产精品久久久久久久婷婷 | 成人av在线观 | 欧美成人高清 | 国产我不卡 | 中文字幕高清 | www.夜夜爽 | 成人av久久 | 久久久国产成人 | 亚洲精品免费播放 | 亚洲aⅴ一区二区三区 | 又黄又爽的视频在线观看网站 | 蜜臀av在线一区二区三区 | 伊人色综合久久天天网 | 精品一区二区亚洲 | 福利区在线观看 | 91精品国产乱码久久 | 国产精品专区在线观看 | 欧美疯狂性受xxxxx另类 | 天天干天天在线 | 最新国产在线观看 | 精品999在线观看 | 一区二区精品久久 | 国产欧美日韩视频 | 久久久国产99久久国产一 | 成人黄色免费观看 | 色偷偷888欧美精品久久久 | 久久久久在线观看 | 免费看片成年人 | 色中色综合 | 天天射天天搞 | 四虎在线免费观看 | 中文字幕av有码 | 激情视频免费在线 | 夜夜婷婷 | 亚洲国产小视频在线观看 | 在线免费观看视频 | 久久乱码卡一卡2卡三卡四 五月婷婷久 | 正在播放一区 | 999久久国产精品免费观看网站 | av综合av | 草在线| 最新日韩在线观看视频 | 日韩欧美在线中文字幕 | 久久狠狠婷婷 | 在线视频国产区 | 国产精品欧美激情在线观看 | 天天操天天操一操 | 日狠狠 | 久草在线资源网 | 天天综合天天做天天综合 | 在线a人片免费观看视频 | 亚洲最大免费成人网 | 日韩动漫免费观看高清完整版在线观看 | 久久精品中文 | 精品久久久久久亚洲 | 成人av在线一区二区 | 五月婷婷另类国产 | 日日夜夜噜噜噜 | 欧美激情片在线观看 | 91精品对白一区国产伦 | 中文字幕一区二区三区四区 | 久久免费福利视频 | www.大网伊人 | 亚洲爽爽网 | 久久久久亚洲精品男人的天堂 | 国产一区免费观看 | 999一区二区三区 | 久久国产区 | 日韩视频免费观看高清 | 国产专区一 | 色欧美综合 | 国产精品九色 | 日韩超碰| 欧美一级视频一区 | 狠狠色免费 | 亚洲人成网站精品片在线观看 | 特级a老妇做爰全过程 | 二区三区在线观看 | 天天操夜夜操天天射 | 国产欧美日韩视频 | 9草在线 | 久久久久电影 | 国产系列 在线观看 | 91亚洲精品久久久中文字幕 | 久久99久久99精品中文字幕 | 久久黄色网页 | 久久精品久久综合 | 日日干夜夜干 | 在线观看片 | 久久99精品国产99久久 | 99精品久久99久久久久 | 天天干天天天天 | 美女久久久久久久 | 天天操夜夜逼 | 久久99精品久久久久婷婷 | 天天狠狠干 | 久久永久视频 | 欧美激情综合五月色丁香小说 | 日韩在线观看免费 | 激情五月开心 | 久久av网址 | 97在线播放视频 | 在线欧美小视频 | 91成人网在线播放 | 国产精品久久网 | 午夜精品久久一牛影视 | 一级一片免费观看 | 免费看的黄色 | 亚洲成年人免费网站 | 久久艹欧美| 久久狠狠干 | 国产精品一区二区62 | 国产精品破处视频 | 国产麻豆精品传媒av国产下载 | 日精品在线观看 | 亚洲精品理论 | 天天操 夜夜操 | 中文字幕网址 | 中文字幕有码在线播放 | 久久久久久久久久久久久久av | 91av观看 | 成人小视频在线播放 | 丁香九月激情 | 久草视频免费在线观看 | 狠狠狠色丁香婷婷综合激情 | 在线观av| 国产福利免费看 | 免费看国产a | 在线免费黄色毛片 | 在线观看中文字幕av | 国产精品成久久久久三级 | 在线观看日韩国产 | 天天色天天色天天色 | 久久精品亚洲国产 |