[发明专利]一种避免先入先出队列溢出的方法及设备有效

专利信息
申请号: 201110205098.0 申请日: 2011-07-21
公开(公告)号: CN102209042A 公开(公告)日: 2011-10-05
发明(设计)人: 黄伟 申请(专利权)人: 迈普通信技术股份有限公司
主分类号: H04L12/56 分类号: H04L12/56
代理公司: 北京德琦知识产权代理有限公司 11018 代理人: 牛峥;王丽琴
地址: 610041 四川省*** 国省代码: 四川;51
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 一种 避免 先入先出 队列 溢出 方法 设备
【说明书】:

技术领域

发明涉及数据通信技术领域,尤其涉及设备驱动软件的接收机制,特别涉及一种避免先入先出队列溢出的方法及设备。

背景技术

目前网络设备中,设备驱动软件接收数据普遍采用缓冲区描述符(BD)环机制,BD环是驱动软件与硬件收发器之间的一个数据缓冲。如图1所示,在设备内存103中分配BD 104,每个BD 104由状态标志和缓冲指针组成,状态标志指示这个BD是空闲的还是有数据待处理的,缓冲指针指向一块内存区域,用于存放待处理的数据。多个BD 104首尾相接组成BD环。BD环是驱动软件101与硬件收发器102之间的一个数据缓冲。

设备初始化的时候,由驱动软件101将BD环构造好,然后把BD环的信息通告给硬件收发器102。硬件收发器102收到数据后,先在先入先出队列(FIFO)105中暂存接收到的数据,当FIFO 105中暂存的数据达到一定水位后,再将暂存的数据从FIFO 105转移到接收BD环中的空闲BD上,最后以中断的方式通知驱动软件101处理收到的数据。

虽然BD环与硬件收发器102的FIFO 105一样都是起缓冲作用,但BD环能存放更多的数据,能容忍更大的网络突发流量。由于驱动软件101处理数据的时间较长且不固定,所以通常会在中断服务进程中唤醒一个接收任务来延后处理。当接收任务处理数据的速度持续低于硬件收发器102写入数据的速度,则BD环会被数据占满,硬件收发器102无法将FIFO 105中的数据转移走,只要此时还有数据进入,FIFO 105就会溢出。

可见,采用上述机制接收数据,FIFO溢出是容易出现的情况。特别是对于集中式系统,控制驱动软件和转发驱动软件都在一个中央处理单元(CPU)中运行,驱动接收任务被调度的时间得不到保证,FIFO溢出情况更为普遍。

如图1所示,在FIFO 105溢出的时候,硬件收发器102往往会停止接收数据,并产生一个中断通知驱动软件101。驱动软件101的做法是清空接收BD环上的数据,然后统计一次接收溢出错误,最后重新启动硬件收发器102继续接收数据。

通常情况下,FIFO溢出的后果也就是丢失几个报文,不会有太大问题。但是,如果FIFO反复溢出,就会产生大量额外的中断,进一步增加驱动软件系统的开销,降低驱动软件的处理性能,形成恶性循环。另外,某些硬件收发器在FIFO多次溢出后,会引起内部状态机紊乱,轻者再也不收数据,重者将数据写到错误的内存地址上,导致系统崩溃。而如何避免硬件收发器FIFO溢出,是解决上述问题的关键。

发明内容

本发明提供了一种避免先入先出队列溢出的方法及设备,在不修改硬件收发器的前提下避免出现接收FIFO溢出,相应提高驱动接收的稳定性和可靠性。

本发明实施例提出的一种避免FIFO溢出的方法,包括如下步骤:

A、在设备内存中创建第一缓冲区描述符BD环和第二BD环;

B、硬件收发器将FIFO中的数据通过第一写指针写入第一BD环的空闲BD中,完成后硬件收发器产生接收中断;

C、驱动软件检测到接收中断后,利用第一读指针从第一BD环中读取数据;驱动软件利用第二写指针将所读取的数据写入第二BD环中;驱动软件利用第二读指针从第二BD环中读取数据并进行处理。

较佳地,所述第一BD环和第二BD环中的BD数目均为m,m≥n,n为硬件收发器产生一个接收中断对应的最大报文数。

较佳地,对于第一BD环和第二BD环,同一个BD环中的各个BD在内存中连续相邻,BD的状态字段中包含一个环回标志比特。

较佳地,对于第一BD环和第二BD环,同一个BD环中的各个BD在内存中不连续相邻,BD中有一个特殊字段用于存放下一个BD的内存起始地址,最后一个BD的该字段存放第一个BD的内存起始地址。

较佳地,步骤B包括:

B1、硬件收发器FIFO达到高水位后,判断FIFO中是否有数据需要转移,若是执行步骤B2;否则转至步骤B6;

B2、判断第一写指针指向的第一BD环中的BD是否为空闲,若是,执行步骤B3,否则返回步骤B2;

B3、从W1指向的BD中取出缓冲区地址,将数据通过直接内存访问DMA的方式写入到缓冲区中;

B4、判断第一BD环是否完成一个报文的接收,若是,继续执行步骤B5,否则返回步骤B3;

B5、设置第一写指针指向的BD的空闲标志为有数据,然后将第一写指针指向第一BD环的下一个BD;

B6、硬件收发器判断是否满足产生接收中断的条件,若是则产生接收中断,完成步骤B;否则返回步骤B1。

较佳地,步骤C包括:

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于迈普通信技术股份有限公司,未经迈普通信技术股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/201110205098.0/2.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top