解决wlan接收缓冲区占用问题的方法和装置的制作方法

文档序号:7623155阅读:204来源:国知局
专利名称:解决wlan接收缓冲区占用问题的方法和装置的制作方法
技术领域
本发明涉及网络通信领域,尤其涉及一种解决WLAN中接收缓冲区被无效数据占用的方法和硬件部件。
背景技术
在无线局域网中,由于网络环境复杂,为了提高可靠性,需要将MSDU或MMDU分解为较小长度的多个分段发送,这个规程称为分段;每个MSDU/MMPDU最多可以分为16个分段。每个分段由帧头和帧体两个部分构成,帧头从MSDU/MMPDU复制过来,但是需要对其中的分段序号字段和多分段字段进行设置。第一个分段的分段序号字段为0,以后分段依次按1递增。除了最后一个分段的多分段字段设置为0外,其他所有分段的多分段字段设置为1。
对于接收方,需要将多个分段进行组合构成单个的MSDU或MMDU,这个规程称为重组。
当一个STA发送某个MSDU分段的过程中,可能出现中断,而随后竞争到信道并且发送MSDU/MMPDU帧的可能是另一个STA,这就导致接受方在一段时间内可能无法接收到MSDU/MMPDU的完整分段,那么已接收的分段就需要存储在接收缓冲区内。而且由于信道竞争的随机性,接收方无法预测某个MSDU/MMDU的随后分段会在什么时候发送,也就无法预计何时可以接收完整。
基于如上分析可知,在一段时间内,接收方一侧会保持有多个不完整得MSDU/MMPDU的分段,如果某个MSDU/MMPDU的后续分段一直不能到达,那么其已经接收到的分段就会一直占用接收存储容量。最终导致后续到达的MSDU/MMPDU无法接收,即使该MSDU/MMPDU没有进行分段。这个问题就是接收缓冲区无效占用问题。
该问题不仅出现在未完成接收分段上。另一种情况是,如果某个MSDU/MMPDU已经接收完整,但是由于某些原因,没有能够被处理,形成一个死数据,也会导致对接收缓冲区的一直占用。
请参阅图1,该图显示了一个由于接收分段不完整导致的接收缓存区无效占用情况。
(1)MSDU/MMPDU接收缓存区保持了若干个MSDU/MMPDU的分段,导致剩余空闲空间很少。
(2)在一段时间内,由于保持的MSDU/MMPDU都无法接收完整,那么接收缓存区被一直占用。
(3)在此期间,任何到达的MSDU/MMPDU都无法有足够的空间被接收,即使它没有分段。
(4)如果没有合适的方法,除非某个存储的MSDU/MMPDU被接收完整,否则存储区会被一直占用,导致通信中断。
为避免这一问题,WLAN MAC协议提供了一种使用MSDU/MMPDU最长接收时间进行规避的方法。方法定义目的SAT应为每个正被接收的MSDU/MMPDU维护一个接收定时器,该定时器有一个属性aMaxReceiveLifeTime,定义了接收一个MSDU/MMPDU所允许的最长时间。接收定时器从MSDU/MMPDU第一个分段到达时开始计数,如果超出最长接收时间,则目的STA将丢弃所有已接收的该MSDU/MMPDU分段。协议同时定义,实现应该至少能同时保证三个MSDU/MMPDU的分段接收,所以必须至少同时维护三个接收定时器。最长接收时间的阀值aMaxReceiveLifeTime由实现者进行定义和调整。
根据该方法的一个直观实现,就是为每个MSDU/MMPDU维护一个定时器。在硬件实现上,就必须根据最多可能存放的MSDU/MMPDU,预先定义相应数量的定时器。并且为每个MSDU/MMPDU定义记录到达时间的寄存器。因为MSDU/MMPDU帧,其最小长度和最大长度差别能达到10倍以上,这意味着如果按照协议定义,维持至少三帧数据的接收缓冲区,那么可能存放的小数据帧在3×10=30帧,需要预先定义极大数量的定时器。
由上述分析可知,该方法有如下缺点(1)需要预先定义大量定时器,成本高。
(2)大部分情况下,定时器都处于空闲状态,实现效率低。
(3)较多的定时器本身消耗较高的功耗。
对该方法的一个改进是,为每个MSDU/MMPDU分配一个到达时间寄存器,同时定义一个共用定时器。当MSDU/MMPDU第一次到达时填写其对应的到达时间寄存器。共用定时器每隔一段时间就触发一次对所有的MSDU/MMPDU的轮询,该轮询根据当前时间和到达时间寄存器地差值,判断是否到达最长接收时间,如果到达,那么就释放该MSDU/MMPDU占用空间。
请参阅图2,该图示意了这一结构。
该方法有了很大的改进,但是由于使用了定时进行轮询机制,所以有如下缺点(1)因为定时粒度不能太大,所以轮询次数较高,导致不必要的处理消耗。
(2)缓冲区管理不能够根据通信情况自适应,导致无论接收缓冲区占用情况如何,都使用同一策略。比如如果目前缓冲区内占用少的话,可以允许未接收完整的MSDU/MMPDU的分段多保持一段时间,这样有利于提高通信性能。
(3)定时器实现关联与系统时钟频率,相对复杂。同时,因为表示一个时间至少需要8个字节,比较浪费硬件资源。

发明内容
本发明提供一种解决由于接收分段不完整或者死数据导致的接收缓存区无效占用问题的方法和硬件部件,本发明能够在解决问题的基础上,同时具有自适应能力,并且能够保持较小的处理频度。
本发明公开了一种硬件部件,能够很好的解决由于接收分段不完整或者死数据导致的接收缓存区无效占用问题。该部件包括一个接收缓存区RxBuff;一个RxBuff分片数据管理寄存器;一个头记录寄存器;一个当前记录寄存器;一个最早有效记录寄存器;一个分片释放配置寄存器。
其中,所述接收缓存区,按M字节为单位划分为N片,用于存储MSDU/MMPDU的数据。
所述RxBuff分片数据管理寄存器,共分为K条管理记录,每条记录唯一标志了一个MSDU/MMPDU,也保存了该MSDU/MMPDU的第一个分片数据和最后一个分片数据的位置信息。通过管理记录,可以唯一确定一个MSDU/MMPDU,也能够唯一定位该MSDU/MMPDU在RxBuff中的存放位置。
所述分片管理寄存器中的管理记录包括如下字段(1)MACC地址字段记录了接收数据的来源MAC地址;(2)MSDU/MMPDU序号字段记录了MSDU/MMPDU的唯一序号;(3)分段序号字段记录了MSDU/MMPDU中其中一个分段的唯一序号;(4)帧接收状态字段标志了该MSDU/MMPDU接收状态,状态包括接收完成,接收未完成和数据无效。初始化为无效。
(5)首分片索引字段记录了该MSDU/MMPDU第一个分片在RxBuff中的位置。
(6)尾分片索引字段记录了该MSDU/MMPDU最后一个分片在RxBuff中的位置。
(7)分片总计字段记录了MSDU/MMPDU总共占用了多少个分片。
所述头记录寄存器,指向所述分片数据管理寄存器中的最新有效记录。
所述当前记录寄存器,指向所述分片数据管理寄存器中的当前操作有效记录。
所述最早有效记录寄存器,指向所述分片数据管理寄存器中的记录中,建立最早的有效记录。
所谓有效记录,是指该记录所确定的MSDU/MMPDU及其其分段还存在于接收缓存区中,也即占用有缓存区。
所述分片释放配置寄存器,用于设置一个数值,该数值表示了在需要进行RxBuff空间释放时,需要最少释放多少个分片。
本发明同时也公开了一种用于解决WLAN中接收MSDU/MMDU缓冲区被无效数据占用的方法,用于在上述各组成部件之间建立联系,解决由于接收分段不完整或者死数据导致接收缓存区的占用问题,从而提高通信效率。它包括以下步骤(1)一个MSDU/MMPDU的数据到达时,该数据可以是该MSDU/MMPDU的任意分段,硬件接收到M个字节后,形成一个分片,判断该分片是否是某个分段的第一个分片,如果不是第一个分片,那么转(5)。如果是第一个分片,转(2);(2)一个分片数据内部包含有该MSDU/MMPDU的帧头信息,硬件提取帧头中标识信息,并比对标识信息和RxBuff分片管理寄存器中的管理记录,判断该数据是否合法。如果不合法,转(3);否则,判断该信息是否表明是一个新的MSDU/MMPDU,如果是那么转(4),如果不是,转(5)。
(3)丢弃该不合法的分段数据。
(4)在RxBuff分片管理寄存器中增加一条记录,更新当前记录寄存器和首记录寄存器,然后转(5);(5)查看RxBuff分片占用情况,如果空闲分片低于阀值,转(6),否则转(7);(6)从最早有效记录寄存器指向的记录开始,逐条释放记录所标识的MSDU/MMPDU占用的RxBuff分片空间,直到释放的分片数达到分片释放配置寄存器中的数值。然后转(7)。
(7)将该分片数据放入到一个RxBuff分片中,转(8)。
(8)重复上述过程,直到MSDU/MMPDU标志信息中显示接收完整,转(9)。
(9)接收缓存部件提示MSDU/MMPDU接收完整,请求上层提取数据;如果该数据被提取,那么释放其占用的RxBuff分片空间;如果最早有效记录寄存器正好指向该记录,那么从该记录开始,逐条查找,直到找到一条有效记录,将最早有效记录寄存器指向该查找到的记录。
步骤(4)进一步说明(1)将首记录寄存器指向的记录下移一条,并更新首记录寄存器指向该记录。如果该记录的帧接收状态字段标识为有效状态,那么释放该记录指向的MSDU/MMPDU所占用的RxBuff分片,然后转(2)。否则转(2)。
(2)保存该记录内存放提取到的标识信息和分片位置信息。转(3)。
(3)更新当前记录寄存器,指向本记录。
步骤(6)进一步说明(1)释放最早有效记录寄存器指向的记录所标识的MSDU/MMPDU占用的分片。判断释放分片是否等于释放配置寄存器内的数值,如果等于,转(3),否则转(2)。
(2)从最早有效记录寄存器指向的记录下移一条记录,判断该记录的帧接收状态字段,如果该字段内容为无效,那么继续下移,直到到达一条有效记录,转(1);否则转(3)。
(3)下移记录直到到达一条有效记录,将最早有效记录寄存器指向该记录。
由上述描述可知,本发明只有在空闲内存小于阀值的时候才进行RxBuff的释放。同时,最早有效寄存器总是指向最早到达但是一直没有完成的MSDU/MMPDU,或者是完成但是未被上层提取得死数据。通过本发明描述的方法,就能够实现只有必要的时候才进行空间释放,而且总是先释放在缓存中存在时间最长的数据。同时,如果在接收缓冲区没有到达阀值得情况下,也就是通信缓慢地情况下,允许未完成MSDU/MMPDU等待较长的时间以提高接收效率;在通信繁忙的情况下,则会尽快释放等待时间长的未完成数据,提高通信效率。
本发明具有以下优点(1)本发明只有必要的时候才进行空间释放,而不需要定时的进行轮询。
(2)本发明总是先释放在缓存中存在时间最长的数据,该数据包括未完成的MSDU/MMPDU,也包括完成但是未处理的死数据。从而完全解决无效数据占用问题。
(3)本发明在通信缓慢地情况下,允许未完成MSDU/MMPDU等待较长的时间以提高接收效率;在通信繁忙的情况下,则会尽快释放等待时间长的未完成数据以提高通信效率,具有自适应性。
(4)本发明未使用定时器和时间存储寄存器,减小了实现的复杂度和成本。


图1为无效数据占用问题示意图;图2为使用共用计时器解决无效数据占用问题的硬件装置的结构示意图;图3为实现本发明所述方法的硬件装置的结构示意图;
图4是基于图3硬件装置的解决接收缓存区占用问题的处理流程图。
具体实施例方式
本发明的具体实施基本和本发明说明书中所阐述的结构和原理一致。以下结合附图,具体说明本发明。
本发明公开了一种硬件部件,能够很好的解决由于接收分段不完整或者死数据导致的接收缓存区无效占用问题。该部件包括一个接收缓存区RxBuff;一个RxBuff分片数据管理寄存器;一个头记录寄存器;一个当前记录寄存器;一个最早有效记录寄存器;一个分片释放配置寄存器。
请参阅图3,其为本发明利用上述结构实现的硬件部件结构示意图。根据本示意图,本硬件部件由上述4个部分构成。
其中,所述接收缓存区,按M字节为单位划分为N片,用于存储MSDU/MMPDU的数据。
所述RxBuff分片数据管理寄存器,共分为K条管理记录,每条记录唯一标志了一个MSDU/MMPDU,也保存了该MSDU/MMPDU的第一个分片数据和最后一个分片数据的位置信息。通过管理记录,可以唯一确定一个MSDU/MMPDU,也能够唯一定位该MSDU/MMPDU在RxBuff中的存放位置。
所述分片管理寄存器中的管理记录包括如下字段(1)MACC地址字段记录了接收数据的来源MAC地址;(2)MSDU/MMPDU序号字段记录了MSDU/MMPDU的唯一序号;(3)分段序号字段记录了MSDU/MMPDU中其中一个分段的唯一序号;(4)帧接收状态字段标志了该MSDU/MMPDU接收状态,状态包括接收完成,接收未完成和数据无效。初始化为无效。
(5)首分片索引字段记录了该MSDU/MMPDU第一个分片在RxBuff中的位置。
(6)尾分片索引字段记录了该MSDU/MMPDU最后一个分片在RxBuff中的位置。
(7)分片总计字段记录了MSDU/MMPDU总共占用了多少个分片。
所述头记录寄存器,指向所述分片数据管理寄存器中的最新有效记录。
所述当前记录寄存器,指向所述分片数据管理寄存器中的当前操作有效记录。
所述最早有效记录寄存器,指向所述分片数据管理寄存器中的记录中,建立最早的有效记录。
所谓有效记录,是指该记录所确定的MSDU/MMPDU及其其分段还存在于接收缓存区中,也即占用有缓存区。
所述分片释放配置寄存器,用于设置一个数值,该数值表示了在需要进行RxBuff空间释放时,需要最少释放多少个分片。
请参阅图4,该图描述了使用上述说明的硬件部件,解决接收缓冲区无效数据占用问题的流程,具体步骤如下,(1)一个MSDU/MMPDU的数据到达时,该数据可以是该MSDU/MMPDU的任意分段,硬件接收到M个字节后,形成一个分片,判断该分片是否是某个分段的第一个分片,如果不是第一个分片,那么转(5)。如果是第一个分片,转(2);(2)第一个分片数据内部包含有该MSDU/MMPDU的帧头信息,硬件提取帧头中标识信息,并比对标识信息和RxBuff分片管理寄存器中的管理记录,判断该数据是否合法。如果不合法,转(3);否则,判断该信息是否表明是一个新的MSDU/MMPDU,如果是那么转(4),如果不是,转(5)。
(3)丢弃该不合法的分段数据。
(4)在RxBuff分片管理寄存器中增加一条记录,更新当前记录寄存器和首记录寄存器,然后转(5);(5)查看RxBuff分片占用情况,如果空闲分片低于阀值,转(6),否则转(7);(6)从最早有效记录寄存器指向的记录开始,逐条释放记录所标识的MSDU/MMPDU占用的RxBuff分片空间,直到释放的分片数达到分片释放配置寄存器中的数值。然后转(7)。
(7)该分片数据放入到一个RxBuff分片中,转(8)。
(8)重复上述过程,直到MSDU/MMPDU标志信息中显示接收完整,请求上层提取数据;转(9)。
(9)如果该数据被提取,那么释放其占用的RxBuff分片空间;如果最早有效记录寄存器正好指向该记录,那么转(10)。
(10)从该记录开始,逐条查找,直到找到一条有效记录,将最早有效记录寄存器指向该查找到的记录。
以上公开的仅为本发明的几个具体实施例,但本发明的保护范围并不局限于此,任何本领域的技术人员能思之的变化都应落在本发明的保护范围内。
权利要求
1.一种解决WLAN中接收MSDU/MMDU缓冲区被无效数据占用的方法和装置,其特征在于硬件部件包括一个接收缓存区RxBuff;一个RxBuff分片数据管理寄存器;一个头记录寄存器;一个当前记录寄存器;一个最早有效记录寄存器;一个分片释放配置寄存器。
2.如权利要求1所述其特征在于,所述分片管理寄存器中的管理记录包括MACC地址字段;MSDU/MMPDU序号字段;分段序号字段;帧接收状态字段;首分片索引字段;尾分片索引字段;分片总计字段。
3.根据权利要求1所述其特征在于,包括以下步骤(1)当一个MSDU/MMPDU的数据到达时,该数据可以是该MSDU/MMPDU的任意分段,硬件接收到M个字节后,形成一个分片,判断该分片是否是某个分段的第一个分片,如果不是第一个分片,那么转(5)。如果是第一个分片,转(2);(2)第一个分片数据内部包含有该MSDU/MMPDU的帧头信息,硬件提取帧头中标识信息,并比对标识信息和RxBuff分片管理寄存器中的管理记录,判断该数据是否合法。如果不合法,转(3);否则,判断该信息是否表明是一个新的MSDU/MMPDU,如果是那么转(4),如果不是,转(5)。(3)丢弃该不合法的分段数据。(4)在RxBuff分片管理寄存器中增加一条记录,更新当前记录寄存器和首记录寄存器,然后转(5);(5)查看RxBuff分片占用情况,如果空闲分片低于阀值,转(6),否则转(7);(6)从最早有效记录寄存器指向的记录开始,逐条释放记录所标识的MSDU/MMPDU占用的RxBuff分片空间,直到释放的分片数达到分片释放配置寄存器中的数值。然后转(7)。(7)将该分片数据放入到一个空闲的RxBuff分片中,转(8)。(8)重复上述过程,直到MSDU/MMPDU标志信息中显示接收完整,转(9)。(9)接收缓存部件提示MSDU/MMPDU接收完整,请求上层提取数据;如果该数据被提取,那么释放其占用的RxBuff分片空间;如果最早有效记录寄存器正好指向该记录,那么从该记录开始,逐条查找,直到找到一条有效记录,将最早有效记录寄存器指向该查找到的记录。
4.如权利要求3所述其特征在于,步骤(4)进一步包括(1)将首记录寄存器指向的记录下移一条,并更新首记录寄存器指向该记录。如果该记录的帧接收状态字段标识为有效状态,那么释放该记录指向的MSDU/MMPDU所占用的RxBuff分片,然后转(2)。否则转(2)。(2)在该记录内存放提取到的标识信息和分片位置信息。转(3)。(3)更新当前记录寄存器,指向本记录。
5.如权利要求3所述其特征在于,步骤(6)进一步包括(1)释放最早有效记录寄存器指向的记录所标识的MSDU/MMPDU占用的分片。判断释放分片是否等于释放配置寄存器内的数值,如果等于,转(3),否则转(2)。(2)从最早有效记录寄存器指向的记录下移一条记录,判断该记录的帧接收状态字段,如果该字段内容为无效,那么继续下移,直到到达一条有效记录,转(1);否则转(3)。(3)下移记录直到到达一条有效记录,将最早有效记录寄存器指向该记录。
全文摘要
本发明提供一种解决WLAN中接收MSDU/MMDU缓冲区被无效数据占用的方法和装置,能够很好的解决由于接收分段不完整或者死数据导致的接收缓存区无效占用问题。通过本发明描述的方法,只有必要的时候才进行空间释放,而且总是先释放在缓存中存在时间最长的数据。同时,具有适配通信情况的自适应特性,从而提高通信效率。实现该功能的硬件部件包括一个接收缓存区RxBuff;一个RxBuff分片数据管理寄存器;一个头记录寄存器;一个当前记录寄存器;一个最早有效记录寄存器;一个分片释放配置寄存器。
文档编号H04L12/28GK1929436SQ20051009844
公开日2007年3月14日 申请日期2005年9月8日 优先权日2005年9月8日
发明者兰天 申请人:北京中电华大电子设计有限责任公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1