免费注册 查看新帖 |

Chinaunix

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

请教个网卡驱动的问题 [复制链接]

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
发表于 2010-02-26 16:02 |显示全部楼层
通讯的双方要交流信息,载体就是你的网线,载体此时扮演着的角色就是在双方之间建立一个信号“回路”。网卡 ...
snail_314 发表于 2010-02-26 15:42

同意snail_314兄的解释。如果没有网卡驱动,它就没有办法工作起来。此路不通,因此这个时侯应该是无法接受数据的。

论坛徽章:
0
发表于 2010-02-26 16:08 |显示全部楼层
本帖最后由 shank941 于 2010-02-26 16:11 编辑

网卡就是将线路上的光/电信号进行转换,通过以太报文前导码进行截包,确定每一个报文的内容,然后通过DMA(direct mem access)的方式传输到内存中(网卡驱动初始化分配的dma buffer),这些都是网卡硬件本身完成的 然后驱动代码通过中断或轮询的方式知道有新的报文进入,从内存中提取到报文再上送到协议栈上. 此外驱动还会处理一些配置相关的如speed/duplex 混杂模式等配置,及定时器监控网卡up/down状态.

如果没有驱动,就无法判断up/down状态, 报文通过dma进入dma buffer后,由于没有驱动处理,及时回填这些dma buffer,dma buffer会耗尽,此后
网卡硬件的phy 和mac 层会继续上包,但没有dma buffer而被硬件本身丢弃.

论坛徽章:
0
发表于 2010-02-26 16:10 |显示全部楼层
我觉得网络内幕那本书讲网卡驱动讲得还挺清楚的

论坛徽章:
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
发表于 2010-02-26 16:11 |显示全部楼层
回复 10# Godbach


    感谢版主,正在参考这个帖子。

    不知道用一个月的时间来学习协议栈会有多少收获?版主指教。

论坛徽章:
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
发表于 2010-02-26 16:11 |显示全部楼层
本帖最后由 VIP_fuck 于 2010-02-26 16:13 编辑

回复 13# peimichael


    那本书才开始看,好多东西都还没看到。呵呵。


    谢谢指教。

   

   我就是参考大牛的神贴啊

论坛徽章:
0
发表于 2010-02-26 16:14 |显示全部楼层
回复 11# Godbach

我也是信口开河的,呵呵。

不过我觉得这么说看能不能证明,以太网中任何一个节点有数据请求时那么其他所有节点都可以'收到'数据对吧(这里的收到是指信号层面的).一般来说我们的pc的以太网口有数据流通时那个灯都猛闪,普通情况下,比如家里那种环境工作时都是闪的,只要你的电脑挂在网上.但要是先ifconfig eth0 down,接着modprobe -r xxx,可以看到灯不闪了.我认为此时的网卡根本都没工作.

论坛徽章:
0
发表于 2010-02-26 16:19 |显示全部楼层
回复 16# snail_314


    只要芯片的phy和mac层是 up的状态,包都会走到这里,这些都是硬件队列,和驱动无关, 但报文在将给网卡分配的内存填满后就直接丢弃了.
   phy层主要是处理up/down的,此处还无法判断每一个独立的网络包, mac层硬件就能看到每一个独立的包了,硬件会对单/多/组播报文什么的进行
统计, cat /proc/net/dev 里的网卡收发统计就是通过读取mac层的寄存器来获取的

论坛徽章:
0
发表于 2010-02-26 16:23 |显示全部楼层
回复 17# shank941


    MAC和PHY的enable/disable需要软件控制不?还是power on后就一直enable了的?

论坛徽章:
0
发表于 2010-02-26 16:28 |显示全部楼层
回复 18# snail_314


    可以控制,ifconfig eth0 down 就把phy和mac关了,此时无论插线与否,都是phy都是disable的,
   如果 ifconfig eth0 up把phy 和 mac打开了, 但如果没插线就是down的, 即disable,插线后如果
协商没有问题的话,phy就会变为up,即enable态. 软件通过定时器或中断来检测当前网络状态是up/down
状态, 通常通过定时器来检测up/down,来监控网线插拔类似的事件.

论坛徽章:
0
发表于 2010-02-26 16:48 |显示全部楼层
嗯,那说简单点,就是,如果没有驱动的话,连eth0都没有,更是ifconfig eth0 up都无法完成,所以PHY/MAC都是down的.自然连包都收不到了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP