zoukankan      html  css  js  c++  java
  • 以太网卡杂记之MAC和PHY

    网卡工作在osi的最后两层,物理层和数据链路层。

     

    物理层的芯片称之为PHY。物理层定义了数据传送与接收所需要的电与光信号、线路状态、时钟基准、数据编码和电路等,并向数据链路层设备提供标准接口。

     

    以太网卡中数据链路层的芯片称之为MAC控制器, 数据链路层则提供寻址机构、数据帧的构建、数据差错检查、传送控制、向网络层提供标准的数据接口等功能。

     

    MAC和PHY之间的关系是PCI总线接MAC总线,MAC接PHY,PHY接网线(当然也不是直接接上的,还有一个变压装置),很多网卡的这两个部分是做到一起的。

    PHY和MAC之间互连的界面是IEEE定义的标准:MII/GigaMII(Media Independed Interfade,介质独立界面)。MII界面传递了网络的所有数据和数据的控制。


    写文章的这天有人在网上问, 如果操作系统没有加载网卡驱动,网卡虽然在系统设备树上,但网卡接口创建不了,那网卡实际能不能接收到数据? 下面是我在网上讨论的整理:

    这里面有很多细节, 我根据Intel网卡的Spec大概写了写, 想尽量写的通俗一些,所以没有刻意用Spec里的术语,另外本文虽然讲的是MAC/PHY,但光口卡的(SERDES)也是类似的。

    1. PCI设备做reset以后进入D0uninitialized(非初始化的D0状态, 参考PCI电源管理规范),此时网卡的MAC和DMA都不工作,PHY是工作在一个特殊的低电源状态的。

    2. 操作系统创建设备树时,初始化这个设备,PCI命令寄存器的 Memory Access Enable or the I/O Access Enable bit会被enable, 这就是D0active。此时PHY/MAC就使能了。

    3. PHY被使能应该就可以接收物理链路上的数据了,否则不能收到FLP/NLP, PHY就不能建立物理连接。但这类包一般是流量间歇发送的.

    4. 驱动程序一般要通过寄存器来控制PHY, 比如自动协商speed/duplex, 查询物理链路的状态Link up/down。

    5. MAC被使能后, 如果没有驱动设置控制寄存器的一个位(CTRL.SLU )的话, MAC和PHY是不能通讯的, 就是说MAC不知道PHY的link已经ready, 所以收不到任何数据的。这位设置以后, PHY完成自协商, 网卡才会有个Link change的中断,知道物理连接已经Link UP了。

    6. 即使Link已经UP, MAC还需要enable接收器的一个位(RCTL.RXEN ),包才可以被接收进来,如果网卡被reset,这位是0,意味着所有的包都会被直接drop掉,不会存入网卡的 FIFO。老网卡在驱动退出前利用这位关掉接收。Intel的最新千兆网卡发送接收队列的动态配置就是依靠这个位的,重新配置的过程一定要关掉流量。

    7. 无论驱动加载与否, 发生reset后,网卡EEPOM里的mac地址会写入网卡的MAC地址过滤寄存器, 驱动可以去修改这个寄存器,现代网卡通常支持很多MAC地址,也就是说,MAC地址是可以被软件设置的。例如,Intel的千兆网卡就支持16个单播 MAC地址,但只有1个是存在EEPROM里的,其它是软件声称和设置的。

    8. 但如果驱动没有加载,网卡已经在设备树上,操作系统完成了步骤1-2的初始化,此时网卡的PHY应该是工作的,但因为没有人设置控制位(CTRL.SLU)来让MAC和PHY建立联系,所以MAC是不收包的。这个控制位在reset时会再设置成0。

    9. PHY可以被软件设置加电和断电, 断电状态除了接收管理命令以外,不会接收数据。另外,PHY还能工作在Smart Power Down模式下,link down就进入省电状态。

    10. 有些多口网卡,多个网口共享一个PHY, 所以BIOS里设置disbale了某个网口, 也未必会把PHY的电源关掉,反过来,也要小心地关掉PHY的电源。

    11. 要详细了解PHY,最终还是要熟悉IEEE以太网的相关协议。

  • 相关阅读:
    IDEA常用快捷指令整理
    Python dict 字典
    内联函数
    【MFC】编辑框 CEdit Ctrl控件自动换行设置
    mysql 多sql文件恢复方案
    Linux: 用64位的系统,能编译32位的程序吗?
    C++ 遍历数组
    工业现场传感器传感器为什么采用电流形式输出?
    【转】电磁阀、电磁铁的工作原理说明
    PCB板强弱电隔离距离不够导致损坏和问题检查记录
  • 原文地址:https://www.cnblogs.com/ainima/p/6330794.html
Copyright © 2011-2022 走看看