CN115460024B - 网卡驱动优化方法、装置、设备及存储介质 - Google Patents
网卡驱动优化方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN115460024B CN115460024B CN202211070291.2A CN202211070291A CN115460024B CN 115460024 B CN115460024 B CN 115460024B CN 202211070291 A CN202211070291 A CN 202211070291A CN 115460024 B CN115460024 B CN 115460024B
- Authority
- CN
- China
- Prior art keywords
- network card
- interrupt
- message
- receiving
- dma
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 89
- 238000005457 optimization Methods 0.000 title claims abstract description 27
- 230000001960 triggered effect Effects 0.000 claims abstract description 9
- 230000006870 function Effects 0.000 claims description 28
- 238000013507 mapping Methods 0.000 claims description 9
- 238000012545 processing Methods 0.000 claims description 8
- 238000004891 communication Methods 0.000 abstract description 10
- 230000015556 catabolic process Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012827 research and development Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/02—Details
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/70—Admission control; Resource allocation
- H04L47/82—Miscellaneous aspects
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种网卡驱动优化方法、装置、设备及存储介质,属于通信技术领域,本申请应用于网卡驱动,当网卡收包中断产生时,Preemt rt Linux操作系统不采用中断线程化,同时不采用软中断,当收包中断产生时触发硬中断,直接在硬中断中关中断,轮询所述网卡的DMA接收描述符,从所述DMA接收描述符中读取所述报文,并将所述报文投入预设FIFO队列,开中断,完成报文的接收。因此,本申请减少了网卡收包过程中断线程和软中断的唤醒和调度时延,增强了网卡收包的实时性。
Description
技术领域
本申请涉及通信技术领域,尤其涉及一种网卡驱动优化方法、装置、设备及存储介质。
背景技术
EtherCAT(以太网控制自动化技术)协议适用于实时通信,EtherCAT协议要求操作系统的调度时延、中断响应时延很低。目前,在Linux上运行EtherCAT主站设备时通常会采用Preempt rt Linux(打了内核实时补丁的Linux)来降低系统的调度时延,使和EtherCAT相关的实时进程唤醒后快速得到调度。但是Preempt rt Linux会将操作系统中外设的中断进行中断线程化,当网卡接收中断发生时,需要依次经历硬中断、中断线程、软中断的处理,最后在软中断里执行接收操作。
在整个收包过程当中,需要由硬中断唤醒中断线程,然后在中断线程里触发软中断,总共需要两次内核线程调度。因为Linux内核线程调度开销非常大而且存在调度延迟,采用这种方式收包严重降低了网卡收包的实时性。
因此,现有技术中存在网卡收包的实时性弱的问题。
发明内容
本申请的主要目的在于提供一种网卡驱动优化方法、装置、设备及存储介质,旨在解决网卡收包的实时性弱的技术问题。
为实现上述目的,本申请提供一种网卡驱动优化方法,应用于网卡驱动,所述网卡驱动优化方法包括以下步骤:
在网卡接收到报文时,触发硬中断,并调用中断回调函数;
在所述中断回调函数中执行关中断,轮询所述网卡的DMA接收描述符,从所述DMA接收描述符中读取所述报文,将所述报文投入预设FIFO队列,以供EtherCAT协议栈从所述预设FIFO队列中取出所述报文,开中断,完成收包;
其中,在所述网卡收包过程中不采用中断线程以及软中断。
在本申请的一种可能的实施方式中,在所述硬中断处理过程中,不为所述DMA接收描述符申请新的skb_buff结构,所述将所述报文投入预设FIFO队列,以供EtherCAT协议栈从所述预设FIFO队列中取出所述报文,开中断的步骤之后,还包括:
通过EtherCAT协议栈为所述DMA接收描述符申请新的skb_buff结构,并建立所述新的skb_buff结构与所述DMA接收描述符的映射关系,以供所述网卡接收新的报文。
在本申请的一种可能的实施方式中,所述在网卡接收到报文时,若触发硬中断,并调用中断回调函数的步骤之前,所述方法还包括:
对所述网卡进行初始化;
在网卡初始化过程中,不向TCP/IP协议栈注册,以供所述EtherCAT协议栈独占所述网卡。
本申请还提供一种网卡驱动优化装置,所述装置包括:
函数调用模块,用于在网卡接收到报文时,触发硬中断,并调用中断回调函数;
收包中断处理模块,用于在所述中断回调函数中执行关中断,轮询所述网卡的DMA接收描述符,从所述DMA接收描述符中读取所述报文,将所述报文投入预设FIFO队列,以供EtherCAT协议栈从所述预设FIFO队列中取出所述报文,开中断,完成收包;其中,在所述网卡收包过程中不采用中断线程以及软中断。
在本申请的一种可能的实施方式中,所述装置还包括:
内存申请模块,用于通过EtherCAT协议栈为所述DMA接收描述符申请新的skb_buff结构,并建立所述新的skb_buff结构与所述DMA接收描述符的映射关系,以供所述网卡接收新的报文;
和/或者所述装置还包括协议初始化模块,用于对所述网卡进行初始化;还用于在网卡初始化过程中,不向TCP/IP协议栈注册,以供所述EtherCAT协议栈独占所述网卡。
本申请还提供一种网卡驱动优化设备,所述设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的网卡驱动优化程序,所述网卡驱动优化程序配置为实现如上述任一项所述的网卡驱动优化方法的步骤。
本申请还提供一种存储介质,所述存储介质上存储有网卡驱动优化程序,所述网卡驱动优化程序被处理器执行时实现如上述任一项所述的网卡驱动优化方法的步骤。
本申请提供一种网卡驱动优化方法,现有技术在整个收包过程当中,需要由硬中断唤醒中断线程,然后在中断线程里触发软中断,总共需要两次内核线程调度。与之相比,本申请应用于网卡驱动,EtherCAT主站设备运行Preemt rt Linux操作系统,在网卡接收到报文时,触发硬中断,并调用中断回调函数;在所述中断回调函数中执行关中断,轮询所述网卡的DMA接收描述符,从所述DMA接收描述符中读取所述报文,将所述报文投入预设FIFO队列,以供EtherCAT协议栈从所述预设FIFO队列中取出所述报文,开中断,完成收包;其中,在所述网卡收包过程中不采用中断线程以及软中断。
可以理解,当网卡收包中断产生时,Preemt rt Linux操作系统不采用中断线程化,同时不采用软中断,当收包中断产生时触发硬中断,直接在硬中断中,关中断,轮询所述网卡的DMA接收描述符,从所述DMA接收描述符中读取所述报文,并将所述报文投入预设FIFO队列,开中断,完成报文的接收。因此,本申请减少了网卡收包处理过程中的中断线程和软中断的唤醒和调度时延,增强了网卡收包的实时性。
附图说明
图1为本申请一种网卡驱动优化方法的第一实施例的流程示意图;
图2为本申请第一实施例的网卡驱动优化方法的第一场景示意图;
图3为本申请第一实施例的网卡驱动优化方法的第一场景示意图;
图4是本申请实施例方案涉及的硬件运行环境的网卡驱动优化设备的结构示意图;
图5为本申请第一实施例的网卡驱动优化装置示意图;
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明实施例提供了一种网卡驱动优化方法,参照图1,图1为本申请一种网卡驱动优化方法的第一实施例的流程示意图。
在本实施例中,应用于网卡驱动,所述网卡驱动优化方法包括:
步骤S10:在网卡接收到报文时,触发硬中断,并调用中断回调函数;
步骤S20:在所述中断回调函数中执行关中断,轮询所述网卡的DMA接收描述符,从所述DMA接收描述符中读取所述报文,将所述报文投入预设FIFO队列,以供EtherCAT协议栈从所述预设FIFO队列中取出所述报文,开中断,完成收包;其中,在所述网卡收包过程中不采用中断线程以及软中断。
本实施例旨在:增强了网卡收包的实时性。
本申请应用于网卡驱动,EtherCAT主站设备运行于Preemt rt Linux操作系统,当网卡收包中断产生时,Preemt rt Linux操作系统不采用中断线程化,同时不采用软中断,当收包中断产生时触发硬中断,直接在硬中断中,关中断,轮询所述网卡的DMA(DirectMemory Access,直接存储器访问)接收描述符,从所述DMA接收描述符中读取所述报文,并将所述报文投入预设FIFO(先入先出)队列,开中断,完成报文的接收。因此,本申请减少了网卡收包处理过程中的中断线程和软中断的唤醒和调度时延,增强了网卡收包的实时性。
具体地,本申请在网卡初始化过程中,不调用register_netdev接口,即,不向TCP/IP协议栈注册,使网卡独立于TCP/IP协议栈;也就是说,以供所述EtherCAT协议栈独占所述网卡,排除TCP/IP协议栈对网卡驱动产生干扰,例如,避免TCP/IP协议栈通过网卡发送arp、dhcp等广播报文,以保证网卡驱动不受其他报文的干扰。
具体地,应用于基于Preemt rt Linux的EtherCAT主站控制系统时,如果不采用中断线程化和软中断,在硬中断处理过程中调用中断回调函数的时候,申请新的skb_buff结构会使内核执行自旋锁上锁操作就会引发进程调度,产生系统崩溃问题,即在Preempt rtLinux中执行自旋锁上锁操作时,如果自旋锁已经被占用,则会主动发起进程调度而在中断上下文发生进程调度会导致操作系统崩溃,因此,为了解决申请新的skb_buff结构这一问题,本申请中申请新的skb_buff结构是由EtherCAT协议栈完成而不是网卡驱动。即当所述EtherCAT协议栈从所述预设FIFO队列中取出所述报文,并对所述报文处理完成之后,会通过EtherCAT协议栈为所述DMA接收描述符申请新的skb_buff结构,并建立所述新的skb_buff结构与所述DMA接收描述符的映射关系,以供所述网卡接收新的报文。既能避免中断上下文发生进程调度从而导致操作系统崩溃的问题,也能保证EtherCAT协议栈及时接收报文,不会出现报文丢失的问题。
本申请针对的研发背景:
目前,如图2所示,在Linux上运行EtherCAT主站设备时通常会采用Preempt rtLinux来降低系统的调度时延,使和EtherCAT相关的实时进程唤醒后快速得到调度。但是Preempt rt Linux会将操作系统中外设的中断进行中断线程化,当网卡接收中断发生时,需要依次经历硬中断、中断线程、软中断的处理,最后在软中断里执行接收操作。
在整个收包过程当中,需要由硬中断唤醒中断线程,然后在中断线程里触发软中断,总共需要两次内核线程调度。Linux内核线程调度开销非常大而且存在调度延迟,采用这种方式收包严重降低了网卡收包的实时性。
具体步骤如下:
步骤S10:在网卡接收到报文时,触发硬中断,则调用中断回调函数;其中,在所述网卡收包过程中不采用中断线程以及软中断。
作为一种示例,在网卡初始化过程中,网卡驱动通过调用内核模块初始化函数来完成,初始化网络设备的硬件寄存器、配置DMA以及初始化相关内核变量等。
作为一种示例,在网卡初始化过程中,调用request_irq接口向内核申请:将中断属性设置为IRQF_NO_THREAD(不需要线程化),内核将不会对网卡的硬中断进行线程化。当网卡发生硬中断时,硬中断处理程序会直接调用request_irq接口注册的中断回调函数。
作为一种示例,由于目前在linux内核中网卡接收报文是通过napi框架处理,在接收报文过程中napi框架主要是唤醒网络接收软中断。但本申请为了增强接收报文的实时性没有采用软中断,所以也不需要采用napi框架。因此,在驱动初始化过程中不调用netif_napi_add接口,还需调用napi_disable接口通知内核所述网卡的NAPI无效。
作为一种示例,经过上述网卡的初始化后,当网卡接收到报文触发硬中断时,网卡驱动不需要唤醒中断线程,也不需要调用napi_schedule触发软中断,网卡驱动直接在硬中断中完成报文接收,减少接收报文的环节,以增强接收的实时性。
在本实施例中,所述在网卡接收到报文时,触发硬中断,并调用中断回调函数的步骤之前,所述方法还包括:
步骤S30:对所述网卡进行初始化;
步骤S40:在网卡初始化过程中,不向TCP/IP协议栈注册,以供所述EtherCAT协议栈独占所述网卡。
本申请在网卡初始化过程中,不调用register_netdev接口,即,不向TCP/IP协议栈注册,使网卡独立于TCP/IP协议栈;也就是说,以供所述EtherCAT协议栈独占所述网卡,排除TCP/IP协议栈对网卡驱动产生干扰,例如,避免TCP/IP协议栈通过网卡发送arp、dhcp等广播报文,以保证网卡驱动不受其他报文的干扰。
步骤S20:在所述中断回调函数中执行关中断,轮询所述网卡的DMA接收描述符,从所述DMA接收描述符中读取所述报文,将所述报文投入预设FIFO队列,以供EtherCAT协议栈从所述预设FIFO队列中取出所述报文,开中断,完成收包。
作为一种示例,所述网卡接收到的报文为EtherCAT报文。
作为一种示例,内核在RAM(Random Access Memory,随机存取存储器)中为收发数据建立一个环形的缓冲队列,通常叫DMA环形缓冲区,又叫DMA接收或发送描述符。
作为一种示例,所述网卡的DMA接收描述符中存储了所述EtherCAT报文的数据帧信息,所述EtherCAT报文的每个数据帧对应一个DMA接收描述符,因此,轮询所述网卡的DMA接收描述符,即可找到EtherCAT主站和从站一次通信周期内的所有数据帧,将所述数据帧提取出来即可得到所述EtherCAT报文。
作为一种示例,该预设FIFO队列为预先设计的,用于存储所述从所述网卡的DMA接收描述符提取的所述EtherCAT报文的存储器,满足先进先出原则。
作为一种示例,网卡驱动将所述EtherCAT报文投入预设FIFO队列,开中断,以供EtherCAT协议栈从所述预设FIFO队列中取出所述报文,完成收包。
具体地,如图3所示,当网卡接收到局域网发出的数据包时,网卡将数据包通过DMA的方式写入到指定的内存地址,网卡通过硬件中断请求(IRQ)通知CPU,CPU根据中断向量表,进入相应的硬中断进行处理,然后操作系统内核在硬中断中调用中断回调函数,驱动先禁用网卡的中断,轮询所述网卡的DMA接收描述符,从所述DMA接收描述符中读取所述报文,并将所述报文投入预设FIFO队列,开中断,以供EtherCAT协议栈从所述预设FIFO队列中取出所述报文,完成收包。
进一步地,基于本申请中第一实施例,提供本申请的第二实施例,在该实施例中,所述网卡驱动优化的步骤,包括:
本实施例针对的研发背景:
一般的网卡驱动为了能够持续接收报文,避免报文丢失的问题,会在软中断中当接收报文完成后及时申请新的skb_buff结构,并建立一致性DMA映射。但是基于Preempt rtLinux实现EtherCAT主站控制系统时,如果不采用中断线程化和软中断,在硬中断处理过程中调用中断回调函数的时候,申请新的skb_buff结构会使内核执行自旋锁上锁操作就会引发进程调度,产生系统崩溃问题,即在Peempt rt Linux中执行自旋锁上锁操作时,如果自旋锁已经被占用,则会主动发起进程调度而在中断上下文发生进程调度会导致操作系统崩溃。
在本实施例中,在所述硬中断处理过程中,不为所述DMA接收描述符申请新的skb_buff结构,所述将所述报文投入预设FIFO队列,以供EtherCAT协议栈从所述预设FIFO队列中取出所述报文,开中断的步骤之后,还包括:
步骤S50:通过EtherCAT协议栈为所述DMA接收描述符申请新的skb_buff结构,并建立所述新的skb_buff结构与所述DMA接收描述符的映射关系,以供所述网卡接收新的报文。
针对上述问题,本申请当所述EtherCAT协议栈从所述预设FIFO队列中取出所述报文,并对所述报文处理完成之后,通过EtherCAT协议栈为所述DMA接收描述符申请新的skb_buff结构,并建立所述新的skb_buff结构与所述DMA接收描述符的映射关系,以供所述网卡接收新的报文。既能避免中断上下文发生进程调度从而导致操作系统崩溃的问题,也能保证EtherCAT协议栈及时接收报文,不会出现报文丢失的问题。
作为一种示例,鉴于EtherCAT协议具有一定的特性,一方面EtherCAT主站控制器发出报文后只有收到发出去的报文后才会进行下一次报文发送,另一方面只有EtherCAT主站控制器主动发出了报文,EtherCAT主站控制器才会有接收,EtherCAT主站网卡不会出现不间断的报文接收现象。鉴于EtherCAT收发报文的特性,相邻两次收包具有时间间隔,可以把EtherCAT协议栈从预设FIFO队列取报文之前网卡接收的所有EtherCAT报文投入FIFO队列。
因此,在接收中断发生后中断回调函数可以直接采用轮询的方式进行收包,轮询网卡的DMA接收描述符,从所有接收到EtherCAT报文的DMA接收描述符读取报文,然后投入预设FIFO队列。
作为一种示例,鉴于EtherCAT收发报文的特性,网卡不会出现不间断的报文接收现象,只要在下次接收报文之前有足够可用的skb_buff即可,可以对申请新的skb_buff结构,建立一致性DMA映射进行推迟,推迟到EtherCAT协议栈接收报文的时候。
作为一种示例,采用这种方式,既能避免中断上下文发生进程调度从而导致操作系统崩溃的问题,也能保证EtherCAT协议栈及时接收报文,不会出现报文丢失的问题。
参照图4,图4是本申请实施例方案涉及的硬件运行环境的设备结构示意图。
如图4所示,该网卡驱动优化设备可以包括:处理器1001,存储器1005,通信总线1002。通信总线1002用于实现处理器1001和存储器1005之间的连接通信。
可选地,该网卡驱动优化设备还可以包括用户接口、网络接口、摄像头、RF(RadioFrequency,射频)电路,传感器、WiFi模块等等。用户接口可以包括显示屏(Display)、输入子模块比如键盘(Keyboard),可选用户接口还可以包括标准的有线接口、无线接口。网络接口可以包括标准的有线接口、无线接口(如WI-FI接口)。
本领域技术人员可以理解,图4中示出的网卡驱动优化设备结构并不构成对网卡驱动优化设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图4所示,作为一种存储介质的存储器1005中可以包括操作系统、网络通信模块以及网卡驱动优化程序。操作系统是管理和控制网卡驱动优化设备硬件和软件资源的程序,支持网卡驱动优化程序以及其它软件和/或程序的运行。网络通信模块用于实现存储器1005内部各组件之间的通信,以及与网卡驱动优化系统中其它硬件和软件之间通信。
在图4所示的网卡驱动优化设备中,处理器1001用于执行存储器1005中存储的网卡驱动优化程序,实现上述任一项所述的网卡驱动优化方法的步骤。
本申请网卡驱动优化设备具体实施方式与上述网卡驱动优化方法各实施例基本相同,在此不再赘述。
本申请还提供一种网卡驱动优化装置,如图5所示,所述装置包括:
函数调用模块,用于在网卡接收到报文时,触发硬中断,并调用中断回调函数;
收包中断处理模块,用于在所述中断回调函数中执行关中断,轮询所述网卡的DMA接收描述符,从所述DMA接收描述符中读取所述报文,将所述报文投入预设FIFO队列,以供EtherCAT协议栈从所述预设FIFO队列中取出所述报文,开中断,完成收包;其中,在所述网卡收包过程中不采用中断线程以及软中断。
可选地,在本申请的一种可能的实施方式中,所述装置还包括:
内存申请模块,用于通过EtherCAT协议栈为所述DMA接收描述符申请新的skb_buff结构,并建立所述新的skb_buff结构与所述DMA接收描述符的映射关系,以供所述网卡接收新的报文;
和/或者所述装置还包括协议初始化模块,用于对所述网卡进行初始化;还用于在网卡初始化过程中,不向TCP/IP协议栈注册,以供所述EtherCAT协议栈独占所述网卡。
本申请网卡驱动优化装置的具体实施方式与上述网卡驱动优化方法各实施例基本相同,在此不再赘述。
本申请还提供一种存储介质,所述存储介质上存储有网卡驱动优化程序,所述网卡驱动优化程序被处理器执行时实现如上述任一项所述的网卡驱动优化方法的步骤。
本申请存储介质具体实施方式与上述网卡驱动优化各实施例基本相同,在此不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (7)
1.一种网卡驱动优化方法,其特征在于,应用于网卡驱动,所述网卡驱动优化包括以下步骤:
在网卡接收到报文时,触发硬中断,并调用中断回调函数;
在所述中断回调函数中执行关中断,轮询所述网卡的DMA接收描述符,从所述DMA接收描述符中读取所述报文,将所述报文投入预设FIFO队列,以供EtherCAT协议栈从所述预设FIFO队列中取出所述报文,开中断,完成收包;
其中,在所述网卡收包过程中不采用中断线程以及软中断。
2.如权利要求1所述的网卡驱动优化方法,其特征在于,在所述硬中断处理过程中,不为所述DMA接收描述符申请新的skb_buff结构,所述将所述报文投入预设FIFO队列,以供EtherCAT协议栈从所述预设FIFO队列中取出所述报文,开中断的步骤之后,还包括:
通过EtherCAT协议栈为所述DMA接收描述符申请新的skb_buff结构,并建立所述新的skb_buff结构与所述DMA接收描述符的映射关系,以供所述网卡接收新的报文。
3.如权利要求1所述的网卡驱动优化方法,其特征在于,所述在网卡接收到报文时,若触发硬中断,并调用中断回调函数的步骤之前,所述方法还包括:
对所述网卡进行初始化;
在网卡初始化过程中,不向TCP/IP协议栈注册,以供所述EtherCAT协议栈独占所述网卡。
4.一种网卡驱动优化装置,其特征在于,所述装置包括:
函数调用模块,用于在网卡接收到报文时,触发硬中断,并调用中断回调函数;
收包中断处理模块,用于在所述中断回调函数中执行关中断,轮询所述网卡的DMA接收描述符,从所述DMA接收描述符中读取所述报文,将所述报文投入预设FIFO队列,以供EtherCAT协议栈从所述预设FIFO队列中取出所述报文,开中断,完成收包;其中,在所述网卡收包过程中不采用中断线程以及软中断。
5.如权利要求4所述的网卡驱动优化装置,其特征在于,所述装置还包括:
内存申请模块,用于通过EtherCAT协议栈为所述DMA接收描述符申请新的skb_buff结构,并建立所述新的skb_buff结构与所述DMA接收描述符的映射关系,以供所述网卡接收新的报文;
和/或者所述装置还包括协议初始化模块,用于对所述网卡进行初始化;还用于在网卡初始化过程中,不向TCP/IP协议栈注册,以供所述EtherCAT协议栈独占所述网卡。
6.一种网卡驱动优化设备,其特征在于,所述设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的网卡驱动优化程序,所述网卡驱动优化程序配置为实现如权利要求1至3中任一项所述的网卡驱动优化方法的步骤。
7.一种存储介质,其特征在于,所述存储介质上存储有网卡驱动优化程序,所述网卡驱动优化程序被处理器执行时实现如权利要求1至3任一项所述的网卡驱动优化方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211070291.2A CN115460024B (zh) | 2022-09-02 | 2022-09-02 | 网卡驱动优化方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211070291.2A CN115460024B (zh) | 2022-09-02 | 2022-09-02 | 网卡驱动优化方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115460024A CN115460024A (zh) | 2022-12-09 |
CN115460024B true CN115460024B (zh) | 2024-05-28 |
Family
ID=84300864
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211070291.2A Active CN115460024B (zh) | 2022-09-02 | 2022-09-02 | 网卡驱动优化方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115460024B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7320044B1 (en) * | 2002-02-22 | 2008-01-15 | Arc International I.P., Inc. | System, method, and computer program product for interrupt scheduling in processing communication |
CN102375761A (zh) * | 2010-08-06 | 2012-03-14 | 中兴通讯股份有限公司 | 业务管理方法和装置、以及设备 |
CN103440213A (zh) * | 2013-07-23 | 2013-12-11 | 深圳市共进电子股份有限公司 | 一种应用于具有多cpu和网卡的系统的网卡驱动方法 |
CN110658751A (zh) * | 2019-09-16 | 2020-01-07 | 华中科技大学 | 一种EtherCAT现场总线控制系统的实现方法 |
CN112422453A (zh) * | 2020-12-09 | 2021-02-26 | 新华三信息技术有限公司 | 一种报文处理的方法、装置、介质及设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8861434B2 (en) * | 2010-11-29 | 2014-10-14 | Alcatel Lucent | Method and system for improved multi-cell support on a single modem board |
-
2022
- 2022-09-02 CN CN202211070291.2A patent/CN115460024B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7320044B1 (en) * | 2002-02-22 | 2008-01-15 | Arc International I.P., Inc. | System, method, and computer program product for interrupt scheduling in processing communication |
CN102375761A (zh) * | 2010-08-06 | 2012-03-14 | 中兴通讯股份有限公司 | 业务管理方法和装置、以及设备 |
CN103440213A (zh) * | 2013-07-23 | 2013-12-11 | 深圳市共进电子股份有限公司 | 一种应用于具有多cpu和网卡的系统的网卡驱动方法 |
CN110658751A (zh) * | 2019-09-16 | 2020-01-07 | 华中科技大学 | 一种EtherCAT现场总线控制系统的实现方法 |
CN112422453A (zh) * | 2020-12-09 | 2021-02-26 | 新华三信息技术有限公司 | 一种报文处理的方法、装置、介质及设备 |
Also Published As
Publication number | Publication date |
---|---|
CN115460024A (zh) | 2022-12-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10884786B2 (en) | Switch device, switching method, and computer program product | |
US11057835B2 (en) | System coordinated WLAN scanning | |
US7937499B1 (en) | Methods and apparatus for dynamically switching between polling and interrupt mode for a ring buffer of a network interface card | |
US9424101B2 (en) | Method and apparatus for synchronous processing based on multi-core system | |
US11910205B2 (en) | Messaging in a wireless communication network | |
CN111787522B (zh) | 一种无线资源控制rrc状态维护方法及终端、存储介质 | |
US20230051346A1 (en) | Downlink reception triggering method, terminal, and network side device | |
CN107277907B (zh) | 移动终端及其控制方法 | |
CN115460024B (zh) | 网卡驱动优化方法、装置、设备及存储介质 | |
WO2022199095A1 (zh) | 数据传输方法、装置、存储介质及无线节点 | |
CN101997777A (zh) | 中断处理方法、装置和网络设备 | |
WO2022033437A1 (zh) | 多模芯片及终端设备 | |
CN110635879B (zh) | 一种bwp去激活定时器的控制方法及终端设备 | |
CN106953984B (zh) | 数据传输系统及方法 | |
CN107087062B (zh) | 数据传输系统及方法 | |
CN113286325B (zh) | Sl bsr处理方法、终端及网络设备 | |
WO2023105578A1 (ja) | サーバ内データ転送装置、サーバ内データ転送方法およびプログラム | |
WO2024013830A1 (ja) | サーバ内データ転送装置、データ転送システム、サーバ内データ転送方法およびプログラム | |
CN106953983B (zh) | 数据传输系统及方法 | |
CN107087063B (zh) | 数据传输系统及方法 | |
WO2023218596A1 (ja) | サーバ内遅延制御装置、サーバ内遅延制御方法およびプログラム | |
CN107071165B (zh) | 数据传输系统及方法 | |
GB2387932A (en) | Scheduling tasks in a communications network | |
CN107018560B (zh) | 数据传输系统及方法 | |
CN107094317B (zh) | 数据传输系统及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |