一种应用于具有多CPU和网卡的系统的网卡驱动方法技术方案

技术编号:9434540 阅读:155 留言:0更新日期:2013-12-12 00:35
本发明专利技术提供了一种应用于具有多CPU和网卡的系统的网卡驱动方法,包括网卡驱动过程一和二,且在各个CPU中创建数据接收设备队列和数据发送设备队列;网卡驱动过程一包括:①在数据到达网卡时,产生硬件中断,关闭硬件中断,调用中断处理进程;②将网卡添加至一CPU的数据接收设备队列中;③重新开启硬件中断,设置软中断,中断处理进程返回;网卡驱动过程二包括:软中断轮询;对于软中断置位的CPU,先扫描其数据接收设备队列,依次对该队列中的网卡进行数据读取处理,再依次对其数据发送设备队列中的设备进行数据发送处理。本发明专利技术大大缩短了硬件中断上半部分处理时间,并将硬件中断下半部的处理任务分摊到各个CPU上,从而提高了系统性能。

【技术实现步骤摘要】
一种应用于具有多CPU和网卡的系统的网卡驱动方法
本专利技术涉及通信
,尤其涉及一种应用于具有多CPU和网卡的系统的网卡驱动方法。
技术介绍
通常,linux系统的网卡驱动过程主要包括两部分。如图1所示,网卡驱动过程的上半部包括:101、在来自通信对端的以太网数据传输到本端的网卡后,系统产生硬件中断,同时关闭硬件中断,即此时不会再接收网络中断。102、硬件中断产生后,系统CPU调用上述网卡在open时注册的中断处理函数,进行以下中断处理:首先从网卡的数据寄存器中读取所接收的以太网数据;然后创建一块缓存(skb_buf),将以太网数据写入到该缓存中;之后将该缓存以结构链表的方式挂入到上述网卡的接收队列中。网卡的接收队列其实就是一个链表,是用来临时存放skb_buf对象实例的;所有网卡在将接收到的数据写入skb_buf之后都会将此skb_buf链入到其接收队列中,接收队列中的各skb_buf将在网络驱动过程的下半部分被取出发送至协议栈。103、在网卡设备接收完数据之后,将该网卡挂到当前CPU的设备队列中,然后设置软中断,等待在软中断中继续处理数据。CPU的设备队列用以维护当前所有需本文档来自技高网...
一种应用于具有多CPU和网卡的系统的网卡驱动方法

【技术保护点】
一种应用于具有多CPU和网卡的系统的网卡驱动方法,包括网卡驱动过程一和网卡驱动过程二,其特征在于,还包括步骤:在各个CPU的数据结构中分别创建数据接收设备队列和数据发送设备队列,初始化为空;所述网卡驱动过程一具体包括:①在通信对端的以太网数据到达网卡时,产生硬件中断,同时关闭硬件中断,调用中断处理进程;②将所述网卡添加至一CPU的数据接收设备队列中;③重新开启硬件中断,同时设置所述网卡当前所处数据接收设备队列所属的CPU软中断,所述中断处理进程返回;所述网卡驱动过程二具体包括:进行软中断轮询;对于软中断置位的CPU,先扫描其数据接收设备队列,依次对该数据接收设备队列中的每个网卡进行处理:先从设...

【技术特征摘要】
1.一种应用于具有多CPU和网卡的系统的网卡驱动方法,包括网卡驱动过程一和网卡驱动过程二,其特征在于,还包括步骤:在各个CPU的数据结构中分别创建数据接收设备队列和数据发送设备队列,初始化为空;所述网卡驱动过程一具体包括:①在通信对端的以太网数据到达网卡时,产生硬件中断,同时关闭硬件中断,调用中断处理进程;②将所述网卡添加至一CPU的数据接收设备队列中;③重新开启硬件中断,同时设置所述网卡当前所处数据接收设备队列所属的CPU软中断,所述中断处理进程返回;所述网卡驱动过程二具体包括:进行软中断轮询;对于软中断置位的CPU,先扫描其数据接收设备队列,依次对该数据接收设备队列中的每个网卡进行处理:先从设备寄存器中读取相应的数据,将数据打包后挂入当前网卡的数据接收链表中;然后从数据接收设备队列中摘除当前网卡,并将当前网卡挂入一CPU的数据发送设备队列中;再依次对其数据发送设备队列中的设备进行处理:将当前网卡的数据接收链表中的数据处理后发送至协议栈;所述步骤②,将所述网卡添加至一CPU的数据接收设备队列的过程进一步包括:所述中断处理进程轮询各CPU,查看所述网卡存在于当前CPU的数据接收设备队列还是数据发送设备队列中,若存在于当前CPU的数据接收设备队列,则跳转至步骤③;若存在于当前CPU的数据发送设备队列中,则将该网卡移到一C...

【专利技术属性】
技术研发人员:刘炳伟王金桂
申请(专利权)人:深圳市共进电子股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1