CN101594199A - wlan收发帧在mac和主内存间分块交付的实现方法 - Google Patents
wlan收发帧在mac和主内存间分块交付的实现方法 Download PDFInfo
- Publication number
- CN101594199A CN101594199A CNA2008101131207A CN200810113120A CN101594199A CN 101594199 A CN101594199 A CN 101594199A CN A2008101131207 A CNA2008101131207 A CN A2008101131207A CN 200810113120 A CN200810113120 A CN 200810113120A CN 101594199 A CN101594199 A CN 101594199A
- Authority
- CN
- China
- Prior art keywords
- frame
- block
- descriptor
- memory
- block descriptor
- 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.)
- Pending
Links
Images
Landscapes
- Communication Control (AREA)
Abstract
本发明提出了一种802.11收发帧在MAC和主内存之间分块交付的实现方法。具有主接口的802.11MAC根据驱动交付下来的收发块描述符而非帧描述符进行帧收发。帧发送是以预定的顺序连续的取走不连续分布的帧体数据块,避免了主机的大量数据拷贝工作;帧接收是将接收帧存到多个空内存块中,短帧仅需要比较少的空内存块,长帧需要比较多的空内存块,从整体上节省了内存的使用,避免了内存的使用浪费。
Description
技术领域
本发明属于无线局域网领域,作为一种802.11发送帧和接收帧在MAC和主机内存之间分块交付的设计实现方法,特别适用于具有内存主接口的无线局域网网卡和接入点芯片及其驱动设计,也适用于其他具有帧结构定义、具有内存主接口的通信领域的芯片及其驱动设计。
背景技术
802.11国际标准规定,802.11MAC层的帧结构为:[帧头,帧体,FCS],其发送数据帧的帧头一般为驱动程序根据相应信息生成;FCS为802.11MAC为保证本帧发送的正确性和完整性添加的固定长度的校验数据,一般不需要驱动往MAC层交付;而数据帧的帧体数据为驱动从上层得到,而且一个数据帧的帧体一般以在主机内存中不连续分布的多块数据的形式存在。在802.11MAC将数据帧发送时,是将帧头和帧体作为一个整体,添加完整性校验数据,然后发出。驱动一般将帧头和帧体在内存中搬移到一块连续的内存中,然后再根据这一块数据的信息生成一个发送帧描述符,将本发送帧描述符交付给具有内存主接口的802.11MAC,802.11MAC再根据这个发送帧描述符从内存中取走本帧数据,然后发出。之前的数据搬移需要主机进行大量的数据拷贝工作。对于接收帧而言,802.11MAC需要将本地接收的数据帧,根据驱动交付下来的接收帧描述符,将接收到的数据帧通过内存主接口回写到主机内存中。因为驱动无法预期一个接收帧的长度,所以驱动生成并交付下来的接收帧描述符,指向一块最大数据帧长度的内存空间,以便于接收帧存放。不管接收帧多短多长,驱动在其接收之前,都要同样开辟出一块最大数据帧长度的内存空间。在内存使用比较紧张的情况下,无疑浪费了内存使用。本文提出了一种方法,由具有主接口的802.11MAC根据驱动交付下来的块描述符,而非帧描述符,以预定的顺序连续的取走不连续分布的帧体数据块,从而避免了主机的大量数据拷贝工作。由具有主接口的802.11MAC根据驱动交付下来的小长度的空内存块描述符,收到一帧后,可以将接收帧存到多个空内存块中,从而短帧仅需要比较少的空内存块,长帧需要比较多的空内存块,结果从整体上节省了内存的使用,避免了内存的使用浪费。
发明内容
对于802.11帧发送,上层交付到驱动的在内存中不连续分布的多个数据块,驱动可能会将它们作为一个帧交付给802.11MAC发出。能够避免将属于同一个帧的发送数据从不连续分布的多个数据块拷贝到一个大的数据块的方法是:驱动通过为每一个数据块生成一个块描述符,由802.11MAC根据驱动交付下来的块描述符链,通过其内存主接口,一个数据块接着另一个数据块的取过来,然后作为一个数据帧发出。
表1为发送块描述符为避免数据拷贝规定的内容。如果本数据块为当前发送帧的最后一个数据块,则本描述符的More Block为0;否则必须为1。如果本数据块所处的发送帧,不是发送帧队列的最后一帧,则本发送帧的所有块描述符中的More Frame指示为1;否则为0,Next Block Descriptor Pointer指向下一个发送数据块的描述符的首地址,下一个发送数据块,可能为同一个发送帧的下一个数据块,也可能为下一个发送帧的第一个数据块;
表1中所有信息都是驱动交付给802.11MAC的,802.11MAC得到了这些信息,会通过其内存主接口,先取来本数据块,然后判断是否需要去取下一个块描述符,如果需要,则根据下个块描述符的首地址,将下个块描述符取来。判断是否需要去取下一个块描述符的依据是,当前块描述符中More Block或者More Frame有效则需要去取下一个块描述符。
一个发送帧的帧头并不是由上层交付到驱动的,而是由驱动生成的,而且一般帧头较短。所以对于帧头而言,可以作为一个独立的数据块存在,其块描述符采用表1描述的通用格式。也可以在一个帧的块描述符设定一个特定域,特定域设计见表2。表2为发送帧帧头如果不采用发送块描述符通用格式而采用在块描述符增加的特定域,其中Frame Header Pointer为本数据块描述符所在帧的帧头内容首地址,Frame Header Length为本数据块描述符所在帧的帧头长度。
对于802.11帧接收,驱动为一个接收帧开辟内存空间时,无法预见接收帧的长度。驱动通过开辟多个小长度的空内存块,短接收帧存储使用个数比较少的空内存块,长接收帧存储使用个数比较多的空内存块。驱动在开辟空内存块的同时,生成相应的空内存块描述符链,之后驱动将空内存块描述符链交付给802.11MAC,802.11MAC通过其内存主接口进行的操作为:取空内存块描述符、回写接收帧数据、回写内存块描述符、取下一个空内存块描述符,然后继续循环。
表3为空内存块描述符具有的内容定义。表3指示出了驱动交付给MAC的内容部分,只有接收内存块队列的最后一个内存块描述符的More Memory Block为0,其余的为1;NextMemory Block Descriptor Pointer指示出了下一个空内存块描述符的首地址;Memory BlockPointer和Memory Block Length指示出了对应空内存块的首地址和长度;
通过调整空内存块的存储空间,一个接收帧存储可能浪费的内存空间小于一个空内存块的大小。不再为任何一个接收帧都开辟最大协议规定帧长度的存储空间,从而避免造成内存空间的浪费
名称 | 说明 |
Block Pointer | 本数据块描述符对应的数据块首地址 |
Block Length | 本数据块描述符对应的数据块长度 |
More Block | 同一帧中,本数据块之后,是否还有后续数据块 |
More Frame | 同一帧中,如果没有后续数据,则是否还有下一帧需要发送。 |
Next Block Descriptor Pointer | 在more block或者more frame有效时,交付下来的下个块描述符的首地址 |
表1
名称 | 说明 |
Frame Header Pointer | 本数据块描述符所在帧的帧头内容首地址 |
Frame Header Length | 本数据块描述符所在帧的帧头长度 |
表2
表3
附图说明
图1是发送帧数据块在主内存中的分布结构示意图;
图2是为接收开辟的空内存块在主内存中的分布示意图;
图3是接收帧在开辟的空内存块中的存储结构示意图。
具体实施方式
下面结合附图,具体介绍本发明的具体实施方式:
对于802.11帧发送,上层交付到驱动的在内存中不连续分布的多个数据块,驱动可能会将它们作为一个帧交付给802.11MAC发出。能够避免将属于同一个帧的发送数据从不连续分布的多个数据块拷贝到一个大的数据块的方法是:驱动通过为每一个数据块生成一个块描述符,由802.11MAC根据驱动交付下来的块描述符链,通过其内存主接口,一个数据块接着另一个数据块的取过来,然后作为一个数据帧发出。具体实施步骤如下:
(1).驱动为每一个待发送的数据块生成一个发送块描述符,如表1所示;如果对于帧头采用在块描述符中设定特定域的方式,则发送块描述符还包括了表2的内容;
(2).驱动在生成发送块描述符后,根据当前发送数据块在本发送帧中的顺序,以及本发送帧在发送帧队列中的顺序,来生成More Frame,More Block,Next Block Descriptor Pointer三个域,本数据块如果为当前发送帧的最后一个数据块,则本描述符的More Block为0;否则必须为1;如果本数据块所处的发送帧,不是发送帧队列的最后一帧,则本发送帧的所有块描述符中的More Frame指示为1;否则为0,Next Block Descriptor Pointer指向下一个发送数据块的描述符的首地址,下一个发送数据块,可能为同一个发送帧的下一个数据块,也可能为下一个发送帧的第一个数据块:如果采用在发送块描述符中为帧头设定特定域的方式,Frame Header Pointer指向驱动为本帧生成的帧头的首地址,FrameHeader Length指示帧头数据的长度;
(3).802.11MAC通过软件配置的寄存器,获得发送队列的第一个块描述符的首地址,和发送队列启动信号,开始使用主接口取第一个块描述符,之后再取第一个数据块;如果采用了在发送块描述符中为帧头设定特定域的方式,则在取到一帧第一个块描述符之后,先去取帧头数据,然后再取第一个数据块。对于一个帧的非第一个块描述符,不会关注描述帧头的特定域,在取到块数据符后也不会再取帧头数据。
对于802.11帧接收,驱动为一个接收帧开辟内存空间时,无法预见接收帧的长度。驱动通过开辟多个小长度的空内存块,短接收帧存储使用个数比较少的空内存块,长接收帧存储使用个数比较多的空内存块。驱动在开辟空内存块的同时,生成相应的空内存块描述符链,之后驱动将空内存块描述符链交付给802.11MAC,802.11MAC通过其内存主接口进行的操作为:取空内存块描述符、回写接收帧数据、回写内存块描述符、取下一个空内存块描述符,然后继续循环。具体实施步骤如下:
(1).驱动首先准备一系列空内存块,并为每一个空内存块准备一个空内存块描述符,并将它们进行排序,组成一个空内存块描述符链表,对于802.11MAC来讲,这是一个接收内存块队列;
(2).802.11MAC通过软件配置的寄存器,获得接收队列的第一个空内存块描述符的首地址,和接收启动信号,开始使用主接口取第一个空内存块描述符;
(3).在取到空内存块描述符后,进行帧接收,接收帧的过程中,就开始往取得的空内存块描述符指向的空内存块中存接收帧数据。在这个空内存块能够在接收本帧时收满,或者本帧收完,马上回写这个接收块描述符;
(4).回写之后,如果接收内存块队列没有结束,则直接取下一个接收块描述符。
802.11MAC回写的描述符内容部分,在表3中有说明。包括本内存块是否是当前接收帧占用的最后一个内存块,以及本内存块存入的接收帧数据个数。如果为接收帧占用的最后一个内存块,并且有剩余空间,剩余空间不再存下一个接收帧数据。
本发明提出的一种802.11收发帧在MAC和主内存之间分块交付的实现方法,具有主接口的802.11MAC根据驱动交付下来的收发块描述符而非帧描述符进行帧收发。帧发送是以预定的顺序连续的取走不连续分布的帧体数据块,避免了主机的大量数据拷贝工作;帧接收是将接收帧存到多个空内存块中,短帧仅需要比较少的空内存块,长帧需要比较多的空内存块,从整体上节省了内存的使用,避免了内存的使用浪费。
Claims (4)
1、一种802.11发送帧在具有内存主接口的MAC和主机内存之间分块交付的实现方法,其特征在于由具有主接口的802.11MAC根据驱动交付下来的发送块描述符以预定的顺序连续的取走不连续分布的帧体数据块,帧发送的具体实现步骤如下:
(1).驱动为每一个待发送的数据块生成一个发送块描述符;
(2).在生成发送块描述符后,驱动根据当前发送数据块在本发送帧中的顺序,以及本发送帧在发送帧队列中的顺序,来生成发送块描述符中的More Frame,More Block,Next BlockDescriptor Pointer三个域;
(3).802.11MAC通过软件配置的寄存器,获得发送队列的第一个块描述符的首地址和发送队列启动信号,开始使用主接口取第一个块描述符,之后再取第一个数据块。
2、一种802.11接收帧在具有内存主接口的MAC和主机内存之间分块交付的实现方法,其特征在于由具有主接口的802.11MAC根据驱动交付下来的接收块描述符以预定的顺序连续的将接收帧交付到主机的内存块中,帧接收的具体实施步骤如下:
(1).驱动准备一系列空内存块,并为每一个空内存块准备一个空内存块描述符,并将空内存块描述符进行排序,组成一个空内存块描述符链表;
(2).802.11MAC通过软件配置的寄存器,获得接收队列的第一个空内存块描述符的首地址和接收启动信号,使用主接口取第一个空内存块描述符;
(3).在取到空内存块描述符后,进行帧接收,接收帧的过程中,往取得的空内存块描述符指向的空内存块中存接收帧数据;
(4).在空内存块在接收本帧时收满,或者本帧收完,马上回写这个接收块描述符;
(5).回写之后,如果接收内存块队列没有结束,则直接取下一个接收块描述符。
3、如权利要求1所述的一种802.11发送帧在具有内存主接口的MAC和主机内存之间分块交付的实现方法,其特征在于帧发送过程中如果为帧头设定特定域方式,则在取到一帧第一个块描述符之后,先取帧头数据,然后再取第一个数据块。
4、如权利要求2所述的一种802.11接收帧在具有内存主接口的MAC和主机内存之间分块交付的实现方法,其特征在于如果帧接收过程中内存块为接收帧占用的最后一个内存块,并且有剩余空间,剩余空间不再存储后续帧数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2008101131207A CN101594199A (zh) | 2008-05-28 | 2008-05-28 | wlan收发帧在mac和主内存间分块交付的实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2008101131207A CN101594199A (zh) | 2008-05-28 | 2008-05-28 | wlan收发帧在mac和主内存间分块交付的实现方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101594199A true CN101594199A (zh) | 2009-12-02 |
Family
ID=41408670
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2008101131207A Pending CN101594199A (zh) | 2008-05-28 | 2008-05-28 | wlan收发帧在mac和主内存间分块交付的实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101594199A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103444249A (zh) * | 2011-03-31 | 2013-12-11 | 北京新岸线移动多媒体技术有限公司 | 一种用于资源请求的方法、站点和中心接入点 |
-
2008
- 2008-05-28 CN CNA2008101131207A patent/CN101594199A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103444249A (zh) * | 2011-03-31 | 2013-12-11 | 北京新岸线移动多媒体技术有限公司 | 一种用于资源请求的方法、站点和中心接入点 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102012872B (zh) | 一种用于嵌入式系统的二级缓存控制方法及装置 | |
CN106951388A (zh) | 一种基于PCIe的DMA数据传输方法及系统 | |
CN101304373B (zh) | 一种实现局域网内高效传输大块数据的方法及系统 | |
CN102541779A (zh) | 一种提高多数据缓冲区dma效率的系统和方法 | |
CN101150485A (zh) | 一种零拷贝缓冲区队列网络数据发送的管理方法 | |
CN101707565B (zh) | 零拷贝网络报文发送、接收方法和装置 | |
CN101540727A (zh) | 一种ip报文的硬件分流方法 | |
CN1592296A (zh) | 用于控制无线局域网中数据通信的装置和方法 | |
CN102567620A (zh) | 门诊药房智能药框系统及其控制方法 | |
CN110109852A (zh) | 硬件实现tcp_ip协议的系统及方法 | |
CN101335694B (zh) | 中断处理方法和系统 | |
CN105868134A (zh) | 高性能多口ddr控制器及其实现方法 | |
CN102567278A (zh) | 一种片上多核数据传输方法和装置 | |
CN107493329A (zh) | 一种分布式内存文件系统的远程文件访问方法 | |
CN103399832B (zh) | 总线间的乱序返回数据的归序方法 | |
CN101877666A (zh) | 基于零拷贝方式的多应用程序报文接收方法和装置 | |
CN100579125C (zh) | 一种pci以太网媒体访问控制器传输数据的方法 | |
CN1292568C (zh) | 一种多队列数据分组连续转发的装置和方法 | |
CN109062826A (zh) | 数据传输方法及系统 | |
CN1828565A (zh) | 高速内部无线总线 | |
CN101415270A (zh) | 移动终端及其处理模块的通讯方法 | |
CN101594199A (zh) | wlan收发帧在mac和主内存间分块交付的实现方法 | |
CN101667105A (zh) | 一种对动态内存进行动态读写访问分组的调度装置和方法 | |
CN101122894A (zh) | 一种异步串行通讯控制器件 | |
CN101064697A (zh) | 一种实现异步传输模式网络服务质量控制的装置和方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20091202 |