CN102547864A - 一种串口802.11n无线网卡芯片接收数据的方法 - Google Patents
一种串口802.11n无线网卡芯片接收数据的方法 Download PDFInfo
- Publication number
- CN102547864A CN102547864A CN2010106223043A CN201010622304A CN102547864A CN 102547864 A CN102547864 A CN 102547864A CN 2010106223043 A CN2010106223043 A CN 2010106223043A CN 201010622304 A CN201010622304 A CN 201010622304A CN 102547864 A CN102547864 A CN 102547864A
- Authority
- CN
- China
- Prior art keywords
- buf
- block
- data
- frame
- serial ports
- 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
Abstract
本发明提出了一种串口802.11n无线网卡接收通路结构,内容包括把各个分散的长度不定的数据结构按照一定的规则组成一个长帧;采用一个巧妙的结构,保证了上传帧的顺序,实现了先到先上传;当其中的某一块传输出错时,采用一种机制,可以回退访问,快速重传;当其中一个数据结构传输成功后,可以单独释放这块空间,空间做到边上传边释放;当跨越buf的边界时,可以做到无缝访问。这种结构实现简单,空间的利用率高,串口传输效率高,同时面积很小,有利于电路实现。通过此电路结构实现802.11n无线网卡的接收,可以实现高性能、低成本的方案。
Description
技术领域
本发明属于无线局域网领域,作为一种串口802.11n无线网卡芯片接收通路结构,特别适用于串口的802.11n无线网卡芯片设计领域,尤其为USB、SDIO主机接口的802.11n无线网卡芯片设计。采用本发明提出的串口802.11n无线网卡芯片接收通路结构,可以提高串口传输的利用率,减少缓存使用的buf空间,提高整个芯片处理协议的吞吐率。
背景技术
802.11n无线协议不同于以前的802.11协议,提出了聚合的概念。为了提高无线信道的利用率,采用了聚合帧的格式,见说明书附图1。简单的说,就是把多个802.11的单帧组合成一个长帧,其规则就是在帧与帧之间插入delimiter。这样,当接收方收到这样一个长帧时,可以通过搜索其中的delimiter,把各个子帧给解析出来。子帧之间的间隔最小为4个字节,最大没有限制。在802.11协议中,一个子帧与下一个子帧之间的时间间隔最小为sifs(16us),而在802.11n的聚合协议中,在150Mbps物理层速率下,最小只有100ns的时间。可见,802.11n协议的高效率对于内部的硬件接收结构提出了新的要求。
串口无线网卡,不同于PCI、PCIe设备,只能作为主机的从设备,其传输是被动的。当主机需要获取数据时,从设备才会把数据送上去。串口另一个特点是采用block传输,每一次的传输数据量会限制在block内。由此可以看出,充分利用block传输的数据量、减少block次数,才能提高串口的利用率。
为了能够最大程度减少丢帧,需要足够的缓冲空间。在接口速率一定的情况下,改善接口的传输利用率是减少缓冲空间的唯一方法。串口的每一次block传输,都能充分利用,这需要把各个独立的单帧按照类似802.11n协议中的聚合帧的方式给重新聚合起来。制定的规则不是采用delimiter的方式,而是为了上层驱动与软件的方便,采用了私有的协议。
把几个buf的子帧聚合成一个长帧,通过串口传送,等整个帧传送完毕,才释放这几个buf。显然会浪费buf的空间利用率。采用边上传边释放的方式,当其中一个子帧确认传输成功后,会立即释放掉此buf。
串口的每一次传输都会伴随着传输数据的校验,只有校验通过的数据才能认为此次block传输成功。因此,在长帧的传输过程中,不可避免地出现多次重传。重传的结果是降低了串口的利用率,同时带来了设计的复杂。需要一种机制,来保证buf在正确的时机释放。
发明内容
本发明提出了一种串口802.11n无线网卡芯片接收通路结构。芯片接收机从空中信道接收到聚合帧,由MAC协议处理单元完成聚合帧的解析,把一个聚合帧拆分成多个子帧,存放在不同的buf中。在聚合帧的解析过程中,会得到各个子帧的详细信息,同时会保存在帧描述符中(BD),见附图2,便于上层驱动和软件识别。当上层主机通过串口询问接收buf的状态时,就可以把多个存有数据帧的buf组合成一个超长的数据帧,把帧的整体长度告诉主机。此后,主机就会按照此帧的长度,下发多个block进行数据读取。这样,每一次block传输携带的数据量都是足够的,充分利用了串口的传输效率。
当一次block传输过程中,跨越多个buf时,会根据前一个buf中帧的长度,提前预测出下一个buf的地址,从而能够在传送过程中,不间断数据的读取,完成buf之间的无缝衔接。从串口看去,感觉在访问同一个buf,其地址访问采用虚拟地址的方式。串口的block传输会进行传送数据的校验,校验不成功会重新发起此次block的传输。传输地址以虚拟地址的方式回退到block传输的起始地址。判断block传输是否成功,是通过比较此次block的起始地址与上一次block的起始地址是否相同得到的。如果两者相同,block进行重传;反之,是一次新的block传输。
当block传输跨越两个buf的边界时,存在释放buf的可能。根据上述block重传的判断规则,当block重传发生时,不能释放buf;反之,可以释放buf,用来接收新的帧。通过边上传边释放的方式,提高了buf的利用率。
上层驱动与软件处理数据帧,根据数据帧的接收顺序来处理,是最合适的方法。当内部有n个实际buf时,扩展n-1个虚拟buf空间。Buf的写入是按照实际buf空间管理的,buf的写指针在循环运转。当串口可以接收数据时,内部管理模块把各个存有数据帧的buf组合成一个虚拟的无间断的buf。把各个buf存储帧的帧长相加,得到的长帧的帧长送往串口。此后,串口按照此长度分为多个block进行传输。在串口读取数据的过程中,会用到虚拟的buf空间。从buf的写指针开始,依次访问最大n个buf,当处于实际buf空间时,访问不做特殊处理;当处于虚拟buf空间时,访问第n+1个虚拟buf空间等同于访问第1个实际buf空间,以次类推。由此可知,从buf的写指针看去,按照由先到后的顺序,就可以保证上传是按照先到先上传的顺序进行的。通过扩展虚拟空间,把循环buf指针变成依次递增的单向指针,简化了buf的读取,利于硬件电路的实现,见说明书附图1。
附图说明
图1是buf空间结构图;
图2是A-MPDU结构图
图3是buf中数据结构图
图4是多个buf聚合成的长帧结构图
图5是数据帧顺序上传流程图
具体实施方式
在buf中存储的数据有两部分:1)存储的数据帧的buf描述符(BD);2)存储的帧体数据(FrmData)。在BD中,存有此帧的标识Bd_Id,用来区分此帧的类型;存有此帧的长度FrmLen。Buf存储数据结构见附图3。
假设内部有8个实际buf空间,详细见附图1。当电路接收机启动空中信道数据帧的接收时,会按照从buf1到buf8的顺序写入数据帧,wr_ptr是当前的写指针。Buf1到buf8构成一个循环结构,wr_ptr的取值范围是0到7。同时,还会维护一个8bit的位图bitmap,用来指示那个buf中含有数据。当串口询问是否有数据上传时,根据内部buf的状态,给出要传送的数据帧的大小。在此时刻,需要锁存当前的bitmap,记为bitmap_1,锁存当前的wr_ptr记为wr_ptr_1,通过这两个变量。可以计算出长帧的大小。由于BD中的FrmLen是以字节为单位的,需要进行padding,补充到4的整数倍。根据bitmap_1指示那几个buf中含有数据,把对应buf中的BD取出得到FrmLen,对齐到4的整数倍后累加得到总的帧长FrmLen_Sum。此长度送给串口后,串口会按照此长度分为多个block进行数据的读取。
Block传输过程中会进行传输数据的校验,校验成功后,说明此次block传输成功。Block_start_addr记为当前block传输的起始地址。Block_start_addr_pre记为前一次block传输的起始地址。在每次block传输之前,比较Block_start_addr与Block_start_addr_pre,两者相等,表示此次block重传;反之,表示新的block传输。
当block传输跨越两个buf的边界时,存在释放buf的可能。根据block是否重传,就能确认是否能够释放前一个buf。当blcok不是重传时,buf就可以释放,给出release_index。当前bitmap中release_index位可以置为0,供新的接收帧写入。
为了保证按照先到先上传的顺序把接收帧送往上位机,需要用到虚拟buf空间。虚拟buf空间扩展7个,加上8个实际buf空间总共15个。按照此虚拟buf空间,可以形成15bit的虚拟向量bitmap_vlt。Bitmap_vlt的对应关系如下:
完成上述向量的置换后,就可以按照此向量顺序传送buf里的数据帧。首先找到bitmap_vlt向量中第一个为1的bit,解析出存储此帧buf的index,上传完毕,对bitmap_vlt[index]清零;接下来,按照同样的方式进行下一个buf的传送,直到bitmap_vlt中所有的bit为0,也就是所有的buf里的数据都已上传完毕。当处于虚拟buf空间时,按照上述规则,可以方便的切换到实际buf空间。具体流程见附图5。通过这种虚拟扩展的方式,简化了电路结构,利于硬件进行实现。
Claims (4)
1.一种串口802.11n无线网卡芯片接收数据的方法,其特征在于包括以下步骤:
(1)芯片接收机从空中信道接收到聚合帧,由MAC协议处理单元完成聚合帧的解析,把一个聚合帧拆分成多个子帧,存放在不同的buf中;
(2)上层主机通过串口询问buf的状态,把多个存有子帧的buf组合成一个数据帧,主机按照此数据帧的长度,下发多个block进行数据读取;
(3)在block传输过程中跨越多个buf时,根据前一个buf中子帧的长度,提前预测出下一个buf的地址,使得在传送过程中不间断读取数据;
(4)当block传输跨越两个buf的边界时,如果不发生block重新传输,释放buf,用来接收新的数据帧;如果发生block重新传输,不释放buf;
(5)在串口读取数据的过程中,用到虚拟的buf,当有n个实际buf时,扩展n-1个虚拟buf,buf的写指针循环运转,从buf的写指针开始,依次访问最大n个buf,n≥1。
2.如权利要求1所述的一种串口802.11n无线网卡芯片接收数据的方法,其特征在于,当串口接收数据时,进行传送数据的校验,校验不成功发起此次block的重新传输;传输地址以虚拟地址的方式回退到block传输的起始地址。
3.如权利要求1或2所述的一种串口802.11n无线网卡芯片接收数据的方法,其特征在于,通过比较此次传输的block的起始地址与上一次传输的block的起始地址是否相同,判断block是否需要进行重新传输;如果两者相同,block进行重新传输;如果两者不相同,进行新的block传输。
4.如权利要求1所述的一种串口802.11n无线网卡芯片接收数据的方法,其特征在于,当串口访问虚拟buf时,访问第n+1个虚拟buf等同于访问第1个实际buf,访问第n+2个虚拟buf等同于访问第2个实际buf,以次类推。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010106223043A CN102547864A (zh) | 2010-12-27 | 2010-12-27 | 一种串口802.11n无线网卡芯片接收数据的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010106223043A CN102547864A (zh) | 2010-12-27 | 2010-12-27 | 一种串口802.11n无线网卡芯片接收数据的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102547864A true CN102547864A (zh) | 2012-07-04 |
Family
ID=46353554
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2010106223043A Pending CN102547864A (zh) | 2010-12-27 | 2010-12-27 | 一种串口802.11n无线网卡芯片接收数据的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102547864A (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060083233A1 (en) * | 2004-10-19 | 2006-04-20 | Yasuyuki Nishibayashi | Communication apparatus and method |
CN101227341A (zh) * | 2007-12-18 | 2008-07-23 | 浪潮电子信息产业股份有限公司 | Linux系统上以太网卡快速捕包的方法 |
-
2010
- 2010-12-27 CN CN2010106223043A patent/CN102547864A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060083233A1 (en) * | 2004-10-19 | 2006-04-20 | Yasuyuki Nishibayashi | Communication apparatus and method |
CN1764157A (zh) * | 2004-10-19 | 2006-04-26 | 株式会社东芝 | 通信设备和方法 |
CN101227341A (zh) * | 2007-12-18 | 2008-07-23 | 浪潮电子信息产业股份有限公司 | Linux系统上以太网卡快速捕包的方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105187227B (zh) | 一种应用rmap协议实现can总线设备即插即用的装置 | |
US7817593B2 (en) | Method for aggregation of a number of media access control (MAC) frames into a single phyical layer frame in a distributed MAC layer | |
CN102117342A (zh) | 基于PCI Express总线的多波段红外图像实时采集系统及方法 | |
CN101582756B (zh) | 一种实现无线局域网立即块应答机制的方法 | |
CN103427846B (zh) | 动态可重构高速串行总线中错误控制方法 | |
CA2959815A1 (en) | Uplink data fragmentation for multi-user networks | |
CN111638992A (zh) | 基于微片的分组化 | |
CN104135339A (zh) | 一种蓝牙低功耗通信的方法、蓝牙设备和系统 | |
CN103999509B (zh) | 使用短头帧进行通信的系统和方法 | |
CN103703829A (zh) | 一种数据传输方法和装置 | |
CN102065569A (zh) | 一种适用于wlan的以太网mac子层控制器 | |
CN103748845B (zh) | 报文发送方法、接收方法、装置及系统 | |
CN101873299A (zh) | 串行总线和通信方法及系统 | |
CN104506280B (zh) | 一种基于时分多址接入空间动态网络的可靠数据传输方法 | |
CN102420763A (zh) | Dma发送方法 | |
CN104065588A (zh) | 一种数据包调度和缓存的装置及方法 | |
CN101729396A (zh) | 数据包的发送、接收方法及装置、以及处理方法及系统 | |
CN102014076A (zh) | 一种PCIe重试缓冲区及其实现方法 | |
CN101415027B (zh) | 基于hdlc协议的通讯模块及数据实时转发存储控制方法 | |
CN100591067C (zh) | 一种用逻辑实现sdh和以太网速率适配的方法 | |
CN101534259B (zh) | 异步通信控制器及其控制方法 | |
CN102868557B (zh) | 一种网管和xPON设备之间的配置同步实现方法 | |
CN102790663B (zh) | 一种应用于vlbi硬件相关处理机的全硬件网络接口 | |
CN103442091A (zh) | 一种数据传输方法及装置 | |
CN101212379B (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: 20120704 |