免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: Minit

【原】Linux-千兆网卡驱动实现机制浅析 [复制链接]

论坛徽章:
0
发表于 2009-03-26 14:13 |显示全部楼层
原帖由 epegasus 于 2009-3-26 14:06 发表
1.DMA主要是进行数据传输用的,那么将内存中的数据传到网卡上去,一个问题是如果控制总线?细节是怎么样?网卡设备又怎么通过总线提供给DMA读写的地址?

2.网卡设备接受到数据后又如何告诉DMA该传输该数据到内存?是先发中断到CPU,CPU控制DMA,还是直接就统治DMA了,等DMA传完了再由DMA发送中断到CPU.

...


现在的PCI设备是自带DMA engine的,可以做bus master的DMA操作。

所以DMA是由设备发起的,CPU不需要参与,DMA结束后会产生中断通知CPU来执行网卡驱动的中断处理程序。

论坛徽章:
0
发表于 2009-03-26 14:33 |显示全部楼层
原帖由 Solaris12 于 2009-3-26 14:13 发表


现在的PCI设备是自带DMA engine的,可以做bus master的DMA操作。

所以DMA是由设备发起的,CPU不需要参与,DMA结束后会产生中断通知CPU来执行网卡驱动的中断处理程序。

这么一说,我就想通了,再看eexplorer的解释更清楚了.
关于现代结构和外设总线之类的书可不可推荐下?

论坛徽章:
0
发表于 2009-03-26 14:36 |显示全部楼层
原帖由 Solaris12 于 2009-3-26 14:09 发表


我说的就是x86。 x86上要支持IOMMU了,DMA address就会是虚拟地址。

如果你看Solaris的DMA接口的实现,就会发现,SPARC版的是DVMA不是DMA, 因为SPARC早就是用IOMMU了。

未来IOMMU是发展方向,特别是虚 ...


IOMMU的东东没看过,只是知道有了IOMMU,dma addr 和 phy addr也要由IOMMU进行转换了。

在linux kernel里所有的东西都包装在pci_alloc_consistent, pci_map_single这类函数里了。没仔细研究过

论坛徽章:
0
发表于 2009-03-26 14:52 |显示全部楼层
原帖由 epegasus 于 2009-3-26 14:33 发表

这么一说,我就想通了,再看eexplorer的解释更清楚了.
关于现代结构和外设总线之类的书可不可推荐下?


Addison.Wesley.PCI.Express.System.Architecture 这本书虽然是讲pci express的,但是第一章的回顾讲pci bus讲得很不错。

论坛徽章:
0
发表于 2009-03-26 15:21 |显示全部楼层
感谢eexplorer及Solarist12等的精彩回复,曾经迷糊的某些东西终于变得清晰了:wink:

论坛徽章:
0
发表于 2009-03-26 15:29 |显示全部楼层
原帖由 eexplorer 于 2009-3-26 14:52 发表


Addison.Wesley.PCI.Express.System.Architecture 这本书虽然是讲pci express的,但是第一章的回顾讲pci bus讲得很不错。

这本没看过,但是PCI体系结构是硬啃了一部分,感觉就是整个只从总线设计和构造将的很清晰,但是无法看出设备应用如何关联,可能是我功力不够

论坛徽章:
0
发表于 2009-03-26 16:38 |显示全部楼层

强悍

我的道行太浅,路过拜读各位强人的贴子,受教了。

论坛徽章:
0
发表于 2009-03-27 16:13 |显示全部楼层
路过,又受伤了,小心的问一下各位牛人都修炼了多长时间。

论坛徽章:
1
2017金鸡报晓
日期:2017-02-08 10:33:21
发表于 2009-03-30 12:45 |显示全部楼层
学习者_wyg 该用户已被删除
发表于 2009-04-01 22:41 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP