免费注册 查看新帖 |

Chinaunix

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

请教关于以太网卡驱动用DMA接收帧的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-08-28 20:21 |只看该作者 |倒序浏览
看有关以太网卡驱动代码时有几点疑问:接受和发送都是使用DMA来完成,pci_map_single()和pci_unmap_single()函数,当接收中断侦测后,使用pci_unmap_single()函数完成接收工作,怎么确定接收的帧的大小?在源码中,莫明其妙地直接从一个结构体中获取到,我没发现过对它的赋值;第二就是:每次中断接收以太帧,所接收到的帧是一个完整的以太帧结构嘛?即目的地址+源地址+类型+数据?

论坛徽章:
0
2 [报告]
发表于 2006-08-31 14:12 |只看该作者
嗯,我觉得你考虑得太多了,硬件做的事情,应该由硬件保证,你只要假设硬件可以很好的完成这件事情,否则就是硬件的问题。
硬件可以保证它收上来的是一个完整的以太网报文,你也就把它当作一个完整的以太网报文,其它的不是你需要考虑的。
网络的接受过程应该是这样的:
首先:你应该在一个ring buffer中挂上你分配的dma buffer,然后硬件会自动把这些buffer填满,而这些buffer中的数据就是一个完整的以太网报文;
其次:你需要把存放在dma buffer中的以太网报文拷贝到你自己的sk_buffer结构中,然后把这个dma复位,以让它能接受下一个报文
整个过程就这么简单,当然之后的部分还牵扯到softirq之类的东西,你应该好好去看看源码,然后一定记住,什么事情是硬件保证的,什么事情是应该由软件做的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP