解决wlan中分段发送问题的方法和装置的制作方法

文档序号:7623157阅读:155来源:国知局
专利名称:解决wlan中分段发送问题的方法和装置的制作方法
技术领域
本发明涉及网络通信领域,尤其涉及一种解决WLAN中MSDU/MMPDU分段发送问题的方法和装置。
背景技术
在无线局域网中,由于网络环境复杂,为了提高可靠性,需要将MSDU或MMDU分解为教小长度的多个分段发送,这个规程称为分段。分段的长度由分段阀值aFragmentationThreshold控制。每个分段由帧头和帧体两个部分构成,帧头从MSDU/MMPDU复制过来,但是需要对其中的分段序号字段和多分段字段进行设置。第一个分段的分段序号字段为0,以后分段依次按1递增。除了最后一个分段的多分段字段设置为0外,其他所有分段的多分段字段设置为1。
请参阅图1,该图显示了一个分为三段的MSDU/MMPDU。
协议规定,对于每个被发送的MSDU/MMPDU,系统应该为其维护一系列的用于管理的计数器和定时器,而不论它被分解为多少分段。协议同时规定,对于被分段的MSDU/MMPDU,应该从第1个分段开始,逐个分段的进行发送,如果某个分段发送失败,那么下次获取到信道后,从该分段处开始继续发送。直到所有分段发送完成或者MSDU/MMPDU的某个管理计数器到达阀值。协议规定,对于每个被发送的MSDU/MMPDU,系统应该为其维护一系列的用于管理的计数器和定时器,而不论它被分解为多少分段。
请参阅图2,该图显示了一个分为三段的MSDU/MMPDU的分段发送过程。
根据协议定义,目前的一种分段发送实现方法是将收到的MSDU/MMPDU先进行分段,然后进行发送。
请参阅图3,本图显示了这样一个实现的内部结构示意。
这个实现的分段过程如下(1)当收到一个MSDU/MMPDU后,为它定义一个管理结构,该结构中包含了MSDU/MMPDU相关管理计数器和定时器,并包含一个总分段数寄存器,一个当前分段寄存器,和一个用于指向各分段的分段数组寄存器。分段数组寄存器预先分为若干记录,每个记录将根据分段情况,指向一个分段。
(2)判断其帧体长度是否超过aFragmentationThreshold中定义的分段阀值,如果未超过,转(3),否则转(4)。
(3)设置总分段数寄存器为1,将分段数组寄存器组中的第一个记录指向本MSDU/MMPDU。转(7)。
(4)设置分段长度等于aFragmentationThreshold,根据出分段长度计算出总分段数。设置总分段数寄存器为分段总数。设置一个分段计数器,值为0;设置一个分段地址寄存器,值为帧体的开始地址,转(5)。
(5)分配一段内存,将分段数组寄存器的当前记录指向该段内存开始地址。然后复制MSDU/MMPDU的帧头到分段的开头,设置分段序号字段和多分段字段。然后从分段地址寄存器内的地址开始,复制长度为分段长度的数据到该内存中,将分段地址寄存器的值增加分段长度;分段计数器加1。判断分段计数器是否等于总分段数-1,如果等于,转(6),否则转(6)。
(6)将剩余数据形成最后一个分段,设置其多分段字段为0。转(7)。
(7)当前分段寄存器设置为第一个记录的序号,进行MSDU/MMPDU的发送。每个分段发送成功后,当前分段寄存器加1。直到当前寄存器等于总分段寄存器的值,或者MSDU/MMPDU的某个管理计数器到达阀值。
根据上述所描述的组成结构和分段过程,可以知道,本方是一种先分段后发送的方法。有如下缺点在每次分段时要进行内存复制,这就要求硬件有相应的交换存储空间,导致硬件片内内存增加。
在每次分段时要进行内存复制,会消耗相应的处理能力和功耗。
MSDU/MMPDU分段后,其所占用的总空间会随着分段数的增加而增加。
根据协议规定,最多可以有15个分段,那么就需要预先分配15个记录的分段数组寄存器,这也造成了片内存储器的增加。

发明内容
本发明实现一种不同于以上所述的方法和装置,本方法通过两个个分段数据结构,使用边发送边分段的策略进行WLAN MSDU/MMPDU的分段发送。本发明对原方法进行了改进,能够有效解决原方法中存在地问题。
本发明公开了一种硬件部件,该部件包括一个发送缓存区TxBuff;一个发送控制器;一个分段数据结构;一个分段发送数据结构;一个发送用FIFO,一个FIFO控制器。其中,
所述发送缓存区,用于存放准备发送的MSDU/MMPDU;所述发送控制器,用于对MSDU/MMPDU的进行分段,要求FIFO控制器进行分段发送;所述分段数据结构,由一系列寄存器组成,用于记录MSDU/MMPDU的分段状态;这些寄存器包括(1)MSDU/MMPDU开始地址寄存器记录了接收到的MSDU/MMPDU在发送缓存区的开始地址,本地址是MSDU/MMPDU的帧头开始地址;(2)帧头长度寄存器记录了MSDU/MMPDU帧头长度;(3)分段长度寄存器根据分段阀值aFragmentationThreshold得到的分段长度;(4)分段总计寄存器记录了根据分段长度,得到的总分段数,对于没有达到阀值的MSDU/MMPDU,该数值为1。
(5)当前分段地址寄存器记录了MSDU/MMDPU当前分段在发送缓存区中的开始地址。
(6)分段计数器记录了下次发送分段的序号,也就是下次将发送第几个分段。初始化为1。
所述分段发送数据结构,由一系列寄存器组成,用于记录分段数据发送的状态;寄存器包括(1)发送地址寄存器记录了当前要发送数据字节的地址。
(2)发送帧头长度寄存器记录了发送的帧头的长度。
(3)发送数据地址寄存器记录了发送的帧中的帧体部分开始地址,也就是本发明中当前要发送的分段的开始地址。如果帧不包括帧体也就是数据部分,那么为0。
(4)发送长度寄存器记录了本次将发送的帧的帧头长度和帧体长度的和。
(5)发送长度计数器记录了当前已经发送的字节数。初始化为0。
所述FIFO,用于逐字节的存放发送数据,并发送出去;所述FIFO控制器,用于控制分段数据的发送,向所述发送控制器返回发送状态。
本发明同时也公开了一种用于WLAN中MSDU/MMDU分段发送的的方法,用于在上述各组成部件之间建立联系,改进原有分段发送方法的缺点。本方法包括以下步骤(1)上层要求发送MSDU/MMPDU,将其放入到发送缓存区中。
(2)发送控制器为该MSDU/MMPDU设置分段数据结构中相应的寄存器,根据分段阀值aFragmentationThreshold得到分段长度,然后计算出分段总数,将当前分段地址寄存器设置为帧体首地址,分段计数器设置为1。判断分段总数是否等于1,如果等于,将MSDU/MMPDU帧头中的分段序号字段设置为0,多分段字段设置为0;否则,分段序号字段设置为0,多分段字段设置为1。
(3)填写分段发送数据结构中相应的寄存器,设置发送地址寄存器值为MSDU/MMPDU开始地址寄存器;发送帧长度寄存器为帧长;发送数据地址寄存器为当前分段开始地址;发送长度寄存器为帧头长度和本次分段长度的和;发送长度计数器为0。
(4)发送控制器发出数据发送请求信号。
(5)FIFO控制器收到该信号后,等待直到信道获取信号到达。
(6)FIFO控制器读发送地址寄存器,得到发送地址。
(7)FIFO控制器从发送地址指向的发送缓存区中取一个字节数据到FIFO中。
(8)FIFO控制器然后将该数据发送出去。
(9)该数据发送成功后,发送计数器加1,发送地址加1。然后判断发送长度是否等于发送帧头长度,如果小于,转(7);如果等于,那么判断是否等于发送长度寄存器的值,如果小于,转(10),否则转(11)。如果发送出现错误,那么转(12)。
(10)FIFO控制器读发送数据开始地址寄存器,得到分段数据的开始地址,设置发送地址寄存器为该地址。转(7)。
(11)发出发送完成信号,发送控制收到该信号后,分段计数器加1,判断是否大于分段总数,如果大于,那么表示该MSDU/MMPDU所有分段都发送完成了,过程结束;如果等于,设置当前分段地址寄存器的值为原值加上分段长度,设置MSDU/MMPDU帧头中的分段序号字段为分段计数器的值减1,多分段字段设置为0,然后转(3);如果小于,设置当前分段地址寄存器的值为原值加上分段长度,设置MSDU/MMPDU帧头中的分段序号字段为分段计数器的值减1,多分段字段设置为1,转(3)。
(12)如果发送过程出现错误,那么分段结构中各寄存器保持不变,然后转(3)。
由上述描述的步骤可知,本发明没有对MSDU/MMPDU先进行分段,而是通过设置两个结构,在发送的过程中进行分段。对于没有达到分段阀值得MSDU/MMPDU,将其作为只有一个分段的情况进行一致性处理。如果发送过程中出现失败,那么通过保持在两个结构中的状态能够保证在下次获得信道后,继续分段并发送。
本方法相对于原方法,可以有效的减少存储区的消耗和数据复制,从而降低成本和功耗。
本发明具有以下优点本发明没有单独的分段过程,而是在发送的同时进行分段,提高了通信效率。
本发明没有分段数据复制过程,而是通过使用改变地址指针指向的地址实现,所以不需要交换存储空间,减少了片内存储器大小。
本发明没有数据复制过程,减少了相应的处理消耗和功耗。
本发明预先分配的分段数组,减少了寄存器的使用。
通过以上空间和处理能力的降低,减少了硬件成本和功耗。


图1为一个分解为三个分段的MSDU/MMPDU示意图;图2为MSDU/MMPDU分段发送的示意图;图3为使用先分段后发送策略的实现结构示意图;图4为本发明的实现内部结构示意图。
图5为在图4基础上的,实现本发明分段发送方法的过程示意图。
具体实施例方式
本发明的具体实施基本和本发明说明书中所阐述的结构和原理一致。
以下结合附图,具体说明本发明。
请参阅图4,其为本发明利用上述发明原理实现的硬件部件结构示意图。根据本示意图,本硬件部件包括一个发送缓存区TxBuff;一个发送控制器;一个分段数据结构;一个分段发送数据结构;一个发送用FIFO,一个FIFO控制器。其中,所述发送缓存区,用于存放准备发送的MSDU/MMPDU;所述发送控制器,用于对MSDU/MMPDU的进行分段,要求FIFO控制器进行分段发送;所述分段数据结构,由一系列寄存器组成,用于记录MSDU/MMPDU的分段状态;这些寄存器包括(1)MSDU/MMPDU开始地址寄存器记录了接收到的MSDU/MMPDU在发送缓存区的开始地址,本地址是MSDU/MMPDU的帧头开始地址;(2)帧头长度寄存器记录了MSDU/MMPDU帧头长度;(3)分段长度寄存器根据分段阀值aFragmentationThreshold得到的分段长度;(4)分段总计寄存器记录了根据分段长度,得到的总分段数,对于没有达到阀值的MSDU/MMPDU,该数值为1。
(5)当前分段地址寄存器记录了MSDU/MMDPU当前分段在发送缓存区中的开始地址。
(6)分段计数器记录了下次发送分段的序号,也就是下次将发送第几个分段。初始化为1。
所述分段发送数据结构,由一系列寄存器组成,用于记录分段数据发送的状态;寄存器包括(1)发送地址寄存器记录了当前要发送数据字节的地址。
(2)发送帧头长度寄存器记录了发送的帧头的长度。
(3)发送数据地址寄存器记录了发送的帧中的帧体部分开始地址,也就是本发明中当前要发送的分段的开始地址。如果帧不包括帧体也就是数据部分,那么为0。
(4)发送长度寄存器记录了本次将发送的帧的帧头长度和帧体长度的和。
(5)发送长度计数器记录了当前已经发送的字节数。初始化为0。
所述FIFO,用于逐字节的存放发送数据,并发送出去;所述FIFO控制器,用于控制分段数据的发送,向所述发送控制器返回发送状态。
请参阅图4,该图描述了使用上述说明的硬件部件,进行MSDU/MMPDU分段发送的具体流程,具体步骤如下,(1)上层要求发送MSDU/MMPDU,将其放入到发送缓存区中。
(2)发送控制器为该MSDU/MMPDU设置分段数据结构中相应的寄存器,根据分段阀值aFragmentationThreshold得到分段长度,然后计算出分段总数,将当前分段地址寄存器设置为帧体首地址,分段计数器设置为1。判断分段总数是否等于1,如果等于,将MSDU/MMPDU帧头中的分段序号字段设置为0,多分段字段设置为0;否则,分段序号字段设置为0,多分段字段设置为1。
(3)填写分段发送数据结构中相应的寄存器,设置发送地址寄存器值为MSDU/MMPDU开始地址寄存器;发送帧长度寄存器为帧长;发送数据地址寄存器为当前分段开始地址;发送长度寄存器为帧头长度和本次分段长度的和;发送长度计数器为0。
(4)发送控制器发出数据发送请求信号。
(5)FIFO控制器收到该信号后,等待直到信道获取信号到达。
(6)FIFO控制器读发送地址寄存器,得到发送地址。
(7)FIFO控制器从发送地址指向的发送缓存区中取一个字节数据到FIFO中。
(8)FIFO控制器然后将该数据发送出去。
(9)该数据发送成功后,发送计数器加1,发送地址加1。然后判断发送长度是否等于发送帧头长度,如果小于,转(7);如果等于,那么判断是否等于发送长度寄存器的值,如果小于,转(10),否则转(11)。如果发送出现错误,那么转(12)。
(10)FIFO控制器读发送数据开始地址寄存器,得到分段数据的开始地址,设置发送地址寄存器为该地址。转(7)。
(11)发出发送完成信号,发送控制收到该信号后,分段计数器加1,判断是否大于分段总数,如果大于,那么表示该MSDU/MMPDU所有分段都发送完成了,过程结束;如果等于,设置当前分段地址寄存器的值为原值加上分段长度,设置MSDU/MMPDU帧头中的分段序号字段为分段计数器的值减1,多分段字段设置为0,然后转(3);如果小于,设置当前分段地址寄存器的值为原值加上分段长度,设置MSDU/MMPDU帧头中的分段序号字段为分段计数器的值减1,多分段字段设置为1,转(3)。
(12)如果发送过程出现错误,那么分段结构中各寄存器保持不变,然后转(3),等待下次获取到信道再发送。
以上公开的仅为本发明的几个具体实施例,但本发明的保护范围并不局限于此,任何本领域的技术人员能思之的变化都应落在本发明的保护范围内。
权利要求
1.一种解决WLAN中MSDU/MMPDU分段发送问题的方法和装置,其特征在于,本发明涉及的装置包括一个发送缓存区TxBuff;一个发送控制器;一个分段数据结构;一个分段发送数据结构;一个发送用FIFO,一个FIFO控制器。
2.如权利要求1所述,其特征在于所述分段数据结构,由一系列寄存器组成,包括MSDU/MMPDU开始地址寄存器,帧头长度寄存器,分段总计寄存器,当前分段地址寄存器,分段计数器。
3.如权利要求1所述,其特征在于,所述分段发送数据结构,由一系列寄存器组成,包括发送地址寄存器,发送帧头长度寄存器,发送数据地址寄存器,发送长度寄存器,发送长度计数器。
4.根据权利要求1所述,其特征在于包括以下步骤(1)上层要求发送MSDU/MMPDU,将其放入到发送缓存区中。(2)发送控制器为该MSDU/MMPDU设置分段数据结构中相应的寄存器,根据分段阀值aFragmentationThreshold得到分段长度,然后计算出分段总数,将当前分段地址寄存器设置为帧体首地址,分段计数器设置为1。判断分段总数是否等于1,如果等于,将MSDU/MMPDU帧头中的分段序号字段设置为0,多分段字段设置为0;否则,分段序号字段设置为0,多分段字段设置为1。(3)填写分段发送数据结构中相应的寄存器,设置发送地址寄存器值为MSDU/MMPDU开始地址寄存器;发送帧长度寄存器为帧长;发送数据地址寄存器为当前分段开始地址;发送长度寄存器为帧头长度和本次分段长度的和;发送长度计数器为0。(4)发送控制器发出数据发送请求信号。(5)FIFO控制器收到该信号后,等待直到信道获取信号到达。(6)FIFO控制器读发送地址寄存器,得到发送地址。(7)FIFO控制器从发送地址指向的发送缓存区中取一个字节数据到FIFO中。(8)FIFO控制器然后将该数据发送出去。(9)该数据发送成功后,分段发送数据结构中发送计数器加1,发送地址加1。然后判断发送长度是否等于发送帧头长度,如果小于,转(7);如果等于,那么判断是否等于发送长度寄存器的值,如果小于,转(10),否则转(11)。如果发送出现错误,那么转(12)。(10)FIFO控制器读发送数据开始地址寄存器,得到分段数据的开始地址,设置发送地址寄存器为该地址。转(7)。(11)发出发送完成信号,发送控制收到该信号后,分段计数器加1,判断是否大于分段总数,如果大于,那么表示该MSDU/MMPDU所有分段都发送完成了,过程结束;如果等于,设置当前分段地址寄存器的值为原值加上分段长度,设置MSDU/MMPDU帧头中的分段序号字段为分段计数器的值减1,多分段字段设置为0,然后转(3);如果小于,设置当前分段地址寄存器的值为原值加上分段长度,设置MSDU/MMPDU帧头中的分段序号字段为分段计数器的值减1,多分段字段设置为1,转(3)。(12)如果发送过程出现错误,那么分段结构中各寄存器保持不变,然后转(3)。
全文摘要
本发明提供一种解决WLAN中MSDU/MMPDU分段发送问题的方法和硬件部件。本发明使用了边发送边分段的策略解决WLAN中MSDU/MMPDU分段发送问题。本发明没有对MSDU/MMPDU先进行分段,而是通过设置两个结构,在发送的过程中进行分段。对于没有达到分段阀值得MSDU/MMPDU,将其作为只有一个分段的情况进行一致性处理。如果发送过程中出现失败,那么通过保持在两个结构中的状态能够保证在下次获得信道后,继续分段并发送。本方法可以有效的避免因为分段造成的存储区的消耗和数据复制问题,从而降低成本和功耗。本发明涉及的硬件部件包括一个发送缓存区TxBuff;一个发送控制器;一个分段数据结构;一个分段发送数据结构;一个发送用FIFO,一个FIFO控制器。
文档编号H04L12/28GK1929438SQ200510098449
公开日2007年3月14日 申请日期2005年9月8日 优先权日2005年9月8日
发明者兰天 申请人:北京中电华大电子设计有限责任公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1