免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3625 | 回复: 5
打印 上一主题 下一主题

请教网卡dma问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-10-10 14:40 |只看该作者 |倒序浏览
当网卡驱动从环形缓冲区拿出数据包后,如何告诉网卡继续收报?
网卡如何知道环形缓冲区满了?

论坛徽章:
0
2 [报告]
发表于 2011-10-10 16:11 |只看该作者
自己顶下。

论坛徽章:
12
2015年辞旧岁徽章
日期:2015-03-03 16:54:1515-16赛季CBA联赛之同曦
日期:2017-03-17 19:13:162016科比退役纪念章
日期:2016-11-07 08:28:12luobin
日期:2016-06-17 17:46:36wusuopu
日期:2016-06-17 17:43:4515-16赛季CBA联赛之福建
日期:2016-01-14 12:49:22程序设计版块每日发帖之星
日期:2015-12-13 06:20:00程序设计版块每日发帖之星
日期:2015-06-08 22:20:00程序设计版块每日发帖之星
日期:2015-06-08 22:20:002015年亚洲杯之科威特
日期:2015-03-24 14:21:272015年迎新春徽章
日期:2015-03-04 09:57:092016科比退役纪念章
日期:2018-04-10 16:20:18
3 [报告]
发表于 2011-10-10 16:22 |只看该作者
设置队列的状态标志吧,缓冲区满了内核就设置.

论坛徽章:
0
4 [报告]
发表于 2011-10-10 16:37 |只看该作者
当网卡驱动从环形缓冲区拿出数据包后,如何告诉网卡继续收报?

网卡驱动从环形缓冲区拿出数据包 是 cpu 软件的行为
网卡继续收报是网卡的硬件行为
所以两者没有必然的关系


网卡如何知道环形缓冲区满了?

网卡中有寄存器来表示frame 是cpu 占用,还是网卡占用。当接收数据时候,发现都是cpu占用的时候(缓冲区满),就会报出溢出的interrupt。一句话,网卡通过观察网卡内部的寄存器,来做出相应的反应。

评分

参与人数 1可用积分 +2 收起 理由
瀚海书香 + 2 多谢分享!

查看全部评分

论坛徽章:
0
5 [报告]
发表于 2011-10-10 17:14 |只看该作者
当不是cpu占用并且缓冲区满的时候,网卡如何知道?

我现在是想让网卡不停的往环形缓冲区写数据,cpu不取数据。
其实我的意图是: 网卡不管缓冲区满了还是未满都写数据,满了就覆盖旧数据循环写。

目前我是用内存map进去,受到数据在unmap出来,然后再分配新内存map进去。
为了达到我的意图,我想map进去后就不unmap出来了,让网卡一直循环写。

论坛徽章:
0
6 [报告]
发表于 2011-10-10 17:31 |只看该作者
当不是cpu占用并且缓冲区满的时候,网卡如何知道?
在网卡内部的寄存器中,当有存在网卡占用的frame的时候,网卡就会认为缓冲区没有满。
所以你说的 “当不是cpu占用” “缓冲区满的时候”这个两个并不可能同时存在吧~
当然你可以在接受的中断中,把相关的frame 的相关位置成网卡占用,而不取数据。

目前我是用内存map进去,受到数据在unmap出来,然后再分配新内存map进去。
我对此有个疑问,网卡用到的frame是硬件的地址吧,而你mmap 出来的是虚拟地址,这样做是不是不行呀?
关于 linux 我刚刚看的时间不长,说的不一定对,有高手的话,出来指点指点呗
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP