Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1880778
  • 博文数量: 376
  • 博客积分: 2147
  • 博客等级: 大尉
  • 技术积分: 3642
  • 用 户 组: 普通用户
  • 注册时间: 2012-02-06 10:47
文章分类

全部博文(376)

文章存档

2019年(3)

2017年(28)

2016年(15)

2015年(17)

2014年(182)

2013年(16)

2012年(115)

我的朋友

分类: LINUX

2012-02-07 14:58:30

当网卡设备上有新的数据到达时,硬件会产生一个中断,驱动程序处理这个中断,就可以接收数据。其接收过程大致可以分为以下几步:
    1、检查rx_ring[entry].status,大于等于零,表示有数据到达,需要处理。
    2、取status的高8位,如果高8位不等于0x03,表示有错误发生。
    3、否则从rx_ring[entry].msg_length中可以取到数据包的长度,并判断长度是否在合理的范围内。
    4、如果长度值超过一个阀值(可以通过参数设定),则取下rx_ring的接收缓冲区作为传给上层的缓冲区,同时,还给rx_ring一个空的缓冲区,如果没有超过阀值,则把rx_ring的接收缓冲区数据拷贝出来。
    5、更新统计信息,把接收缓冲区传给接收层。
阅读(1069) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~