[发明专利]一种网卡发包功能的实现装置和方法无效
申请号: | 201110383377.6 | 申请日: | 2011-11-28 |
公开(公告)号: | CN102420749A | 公开(公告)日: | 2012-04-18 |
发明(设计)人: | 窦晓光;姬乃军;李旭;李锋伟;刘朝辉 | 申请(专利权)人: | 曙光信息产业(北京)有限公司 |
主分类号: | H04L12/56 | 分类号: | H04L12/56 |
代理公司: | 北京安博达知识产权代理有限公司 11271 | 代理人: | 徐国文 |
地址: | 100084 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 网卡 发包 功能 实现 装置 方法 | ||
1.一种网卡发包功能的实现装置,其包括主机单元和网卡单元;所述主机单元包括内存区域BUF和控制所述内存区域BUF的CPU;其特征在于,所述网卡单元包括依次连接的寄存器组、DMA读引擎模块和发送引擎模块。
2.根据权利要求1所述的实现装置,其特征在于,所述寄存器组包括:基地址寄存器、长度寄存器、写指针寄存器和读指针寄存器;所述基地址寄存器、所述长度寄存器、所述写指针寄存器和所述读指针寄存器并列设置。
3.根据权利要求2所述的实现装置,其特征在于,所述基地址寄存器、所述长度寄存器、所述写指针寄存器和所述读指针寄存器分别存储缓冲区基地址base_addr、缓冲区长度len、缓冲区写指针wr_ptr和缓冲区读指针rd_ptr;所有寄存器初始化为0。
4.根据权利要求1所述的实现装置,其特征在于,所述CPU包括读指针变量rd_ptr_cpu和写指针变量wr_ptr_cpu。
5.根据权利要求4所述的实现装置,其特征在于,所述读指针变量rd_ptr_cpu用于存储CPU定时读取的所述读指针寄存器的值;所述写指针变量wr_ptr_cpu用于将wr_ptr_cpu的数值写入所述写指针寄存器。
6.根据权利要求1所述的实现装置,其特征在于,所述DMA读引擎模块,比较读、写指针wr_ptr和rd_ptr,计算出当前待读取数据长度cur_rd_len;并向主机单元发送DMA读请求,请求地址为base_addr+rd_ptr,长度为cur_rd_len;之后等待DMA读请求返回,更新读指针rd_ptr到rd_ptr+cur_rd_len。
7.根据权利要求1所述的实现装置,其特征在于,所述发送引擎模块将从所述内存区域BUF读回来的数据包解析成单个报文,并向外发送。
8.根据1-7项权利要求任一项所述的网卡发包功能的实现装置的网卡发包功能的实现方法,其特征在于,所述方法包括如下步骤:
(1).对所有寄存器进行初始化;(2).从内存区域中申请发包缓冲区;(3).得到缓冲区空闲区域大小free_buf_len;(4).若free_buf_len的长度大于待发送报文pkt_len的大小,则分别读取wr_ptr reg和rd_ptr reg的值,并再次得到缓冲区空闲区域大小free_buf_len,其中,free_buf_len=(wr_ptr+len-rd_ptr)%len;(5).将待发送报文拷贝到缓冲区的写指针,并将写指针寄存器更新为wr_ptr_pkt_len;(6).计算cur_rd_len,如果cur_rd_len的值为0,则进行DMA读操作;(7).将返回的数据解析成单个报文格式,并从指定网口发送出去。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于曙光信息产业(北京)有限公司,未经曙光信息产业(北京)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110383377.6/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种车辆通行计重系统及车辆计重方法
- 下一篇:连铸长水口专用托架