tcp/ip
文章平均质量分 80
frank_rabbit
这个作者很懒,什么都没留下…
展开
-
Linux DM9000网卡驱动程序完全分析
版权声明: 可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息。说明1:本文分析基于内核源码版本为linux-2.6.31 说明2:本文在理解了linux中总线、设备和驱动模型的基础上加以分析代码 虽然Linux驱动程序应该是和具体的硬件平台分离的,但是为了更好的理解DM9000的驱动程序,这里还是结合一下Mini2440开发板,这样也可以更好的体会如何实现驱动和转载 2014-03-07 10:15:55 · 579 阅读 · 0 评论 -
软中断 (linux网络子系统学习 第一节)
整个linux协议栈是运行在软中断环境中,所以学习协议栈首先要了解软中断。第一节就总结一下linux内核中软中断的具体实现。中断的作用:当一个中断信号到达时,CPU必须停止它当前正做的工作,转而去做中断要求其做的事情。中断分为同步中断和异步中断两种。1、同步中断又称异常,是由CPU执行指令时由CPU控制单元产生的。异常又分两种:(1)、 一种是由程序执行出错转载 2014-03-31 15:41:26 · 576 阅读 · 0 评论 -
NAPI 方式的实现 (linux网络子系统学习 第三节 )
Linux内核协议栈中报文接收的设计思路:NAPI接口和旧接口两者有一下相同点:(1)、对报文的处理都应该放在软中断中处理。(2)、两者都有存储报文的队列,NAPI的队列是由网卡来管理的,旧接口的队列是由内核管理的。每个NAPI设备都有一个轮询函数来由软中断调用,来进行轮询处理报文。我们可以建立转载 2014-04-02 14:12:02 · 673 阅读 · 0 评论 -
报文的接收方式(linux网络子系统学习 第二节 )
报文的接收是整个协议栈的入口,负责从网卡中把报文接收并送往内核协议栈相应协议处理模块处理。报文的接收方法主要分为两种一种是网卡产生中断,通知内核进行接收报文。一次中断接收一个报文。在中断处理程序中把报文从硬件缓存中拷贝到内存中,并把报文加入到协议栈中对应的入口队列中,中断退出时调用收包软中断来从相应队列来读取报文进行处理。这种方式优点是内核对报文响应较快,在网卡上 有少量报文时效果转载 2014-04-02 14:11:23 · 1136 阅读 · 0 评论 -
二层转发流程 (linux网络子系统学习 第六节 )
做为网络设备,二层转发是最基本的功能。要想继续学习linux 内核协议栈,必须明白二层转发的流程。这篇文章举例讲一讲二层转发的流程。二层转发是根据报文的目的MAC直接进行转发,转发过程中不用对报文的头部做任何的修改。三层转发则是根据报文的ip 地址来进行转发,并且要对报文的二层头部进行相应的修改。进行二层转发的设备一般叫做网桥(b转载 2014-04-18 11:40:47 · 3616 阅读 · 0 评论 -
报文接收方式【总结】
报文接收步骤:一、旧的接收过程1、当网卡中断产生后,内核的中断处理部分会根据网卡驱动注册的中断号找到相应网卡驱动中的中断处理函数。2、中断处理函数首先禁用网卡的接收报文中断。3、接着负责在内存中申请一个skb,把网卡硬件缓存中的报文拷贝到skb中。初始化skb的一些字段,根据报文内容给skb->protocol字段赋值,例如ip报文会赋为0x0800。4、接着调用netif原创 2014-04-09 11:09:11 · 4646 阅读 · 0 评论 -
收包软中断和netif_rx (linux网络子系统学习 第四节 )
初始化报文接收软中断static int __init net_dev_init(void){ ...... open_softirq(NET_RX_SOFTIRQ, net_rx_action); ......}报文接收软中断的处理函数net_rx_action详解:static void net_rx_action(struct softir转载 2014-04-11 13:53:59 · 2145 阅读 · 0 评论