Intel82576学习笔记 数据的发送接收整体流程

在这里插入图片描述
82576 数据手册总结
Datasheet目录
1.0:43-61 介绍
2.0:61-77 管脚接口
3.0:77-161 内部连接
4.0:161-195 初始化
5.0:195-219 电源管理
6.0:219-273 EEPROM
7.0:273-441 内部功能
8.0:441-679 编程接口
9.0:679-733 PCIE编程接口
10.0:733-867 系统可管理性
11.0:867-901 电气/机械规格
12.0:901-937 设计指导方案
13.0:937-951热设计规范
14.0:951-953 诊断
15.0:953-955 模型、符号、测试选项、原理图和清单

82576 网卡芯片性能
Intel®82576 GbE控制器是一个紧凑型低功耗组件,工作在OSI模型的数据链路层和物理层,提供两个完全集成的千兆以太网媒体访问控制和物理层端口。此设备使用PCIE*v2.0(2.5GT/S)。82576支持在相对较小的区域内实施双端口,并可用于服务器系统配置,例如机架安装或台式服务器,其中82576可用作附加网卡或主板上局域网(LOM)设计。另一种系统配置是刀片服务器,可用作LOM。82576还可用于交换机附加卡和网络设备等嵌入式应用中。
物理层:定义了数据传送与接收所需要的电与光信号、线路状态、时钟基准、数据编码和电路等,并向数据链路层提供标准接口。物理层的芯片为PHY
数据链路层:提供限制机构、数据帧的构建、数据差错检查、传送控制、向网络层提供标准的数据接口等功能。数据链路的芯片为MAC控制器。
82576内部的接收过程为:首先通过PHY和SEDES接收电信号和光信号(1000BaseT是基带电信号,模拟数字均可传输,serdes口接收光信号),PHY将串行模拟信号转换并行数字信号,电信号转换为比特流,传输给MAC。MAC将比特流以接收描述符的形式封装成数据帧,MAC再将数据包转发到RX MAC过滤器,如果包是MACSec或IPSec包,并且硬件中存储了足够的密钥,则对包进行解密和身份验证。如果数据包符合Rx过滤的预编程标准,则将其转发到Rx FIFO。在将整个包放入Rx FIFO后,接收DMA通过PCIe接口将包数据发布到描述符指示的主机内存16个队列对应的位置。当数据包被放入主机内存时,接收DMA会更新数据包使用的所有描述符。
发送过程为:首先从PCIE读取发送描述符,放入高速缓存的队列中,通过DMA传输进行校验和卸载以及TCP/UDP分段。数据包通过DMA之后被存入TX FIFO,然后再转发到发送交换模块,MAC进行通过IPSec(L3)和MACSec(L2)进行加密和认证,并分组转发到MAC,MAC将L2 CRC附加在数据包上,使用预配置的接口将数据包发送到线路。

82576 框图
图注:
1.82576支持的PCIE最大链路宽度为x4、x2或x1,由PCIE初始化配置EEPROM字中的LANE_WIDTH字段确定。2.5 GT/s指的是2.5 Gbit/s串行数据速率。V2.0代表第二代版本。
2.1000BASE-T使用非屏蔽双绞线作为传输介质传输的最长距离是100米,不支持8B/10B编码方式,而是采用更加复杂的编码方式。1000Base-T技术能在五类线上提供1000Mbps的传输带宽,而五类线是在LAN体系中最广泛采用的物理媒体。
3.NC-SI:网络控制器边带接口。NC-SI链路既支持MC和82576局域网功能之间的直通业务,也支持NC-SI协议中定义的MC和82576内部单元之间的配置业务。
4.SMBUS:系统管理总线。是一种两线制接口,用于管理硬件设备的串行总线标准,通过它能够使系统芯片元件之间相互通信。
5.Serdes:串行解串器。可用于实施基于光纤的解决方案或背板连接,而不需要外部的TBI模式收发器或是SerDes。是光口,接光纤。
6.SGMII:串行千兆媒体独立接口。一般是PHY和MAC间的接口,可用于连接SFP(小型可插拔)模块。因此SGMII接口具有以下限制:没有发送时钟、仅交流耦合。是电口,接网线,一般看到的网络PHY指的就是电口。支持10/100/1000BASE-T。
82576的外部接口如下:
(1)PCIe 接口:82576使用PCIe v2.0 (2.5GT/s)接口作为主机接口。它支持x4, x2和x1配置,而每个通道运行在2.5 GHz的速度。典型x4配置的最大聚合原始带宽在每个方向上为8 Gb/s。PCIe 拓扑由位于一个设备上的发送器 (Tx) 组成,该发送器通过差分对连接到第二个设备上的接收器 (Rx)。控制器可以位于主板上或使用指定连接器的附加卡上。
(2)Network 接口:使用两个独立接口连接两个82576接口与外部设备。支持的协议如下:
• 10BASE-T和100BASE-T。
• 1000Base-T接口直接连接到CAT 5e线。
• SerDes接口通过背板连接到另一个SerDes兼容设备或光模块。
• SGMII接口连接到外部PHY,无论是板载或通过SFP模块。SGMII与serde共享相同的接口。
• MDI(铜)支持标准IEEE 802.3以太网接口,用于1000BASE-T, 100BASE-TX和10BASE-T应用(802.3,802.3u和802.3ab)。
(3)EEPROM接口:使用EEPROM设备存储产品配置信息,复位后EEPROM的部分字被82576自动访问,以便在主机软件访问之前提供82576必须可用的启动前配置数据。82576还支持无eeprom模式。
(4)串行Flash接口:82576为Flash或Boot ROM设备(如Atmel* AT25F1024或AT25FB512)提供外部SPI串行接口。82576支持高达64mb (8mb)内存的串行闪存设备。82576使用的Flash的大小可以通过EEPROM来配置。
(5)SMBus接口:SMBus是一个可选接口,用于MC和82576之间的直通和/或配置流量。82576的SMBus接口可以配置为支持慢速和快速定时模式。
(6)NC-SI接口:是可选的MC和82576之间的直通和/或配置流量。SMBUS和NC-SI均为管理接口。是82576中2个连接到外部主控板的可能接口。
(7)MDIO/2线接口:82576实现两个管理接口,用于控制可选的外部PHY。每个接口可以是2线接口,用于控制SFP模块,也可以是MDIO/MDC管理接口,用于控制平面连接MAC和PHY设备(主侧)。该接口为MAC和软件提供了监视和控制PHY状态的能力。82576支持802.3条款22的数据格式。每个MDIO接口都应该连接到相应的PHY。
(8)软件可定义引脚(SDP)接口(通用I/O):82576每个端口有四个软件定义引脚(SDP引脚),可用于各种硬件或软件控制目的。这些引脚可以单独配置作为输入或输出引脚。每个引脚的默认方向可通过EEPROM配置,以及配置为输出的所有引脚的默认值。使用设备控制(CTRL)寄存器和扩展设备控制(CTRL_EXT)寄存器中的字段来控制和访问SDP引脚的使用、方向和值。
(9)LED接口:每个端口实现四个输出驱动器,用于驱动外部LED电路。四个LED输出中的每一个都可以单独配置,LED输出的配置通过LEDCTL寄存器指定。此外,所有LED输出的硬件默认配置可以通过EEPROM字段指定。
下图列出了82576内部模块和相应的接口:

82576内部连接:PCIe、管理接口、Flash/EEPROM、可配置I/O管脚、网络接口。
1.PCIe
PCIe是一种封装分层协议,是点对点,全双工的差分传输信号总线。
1.1传输方式
PCIe采用差分信号对来串行传输数据。D+和D-之间电压差为正表示1,D+和D-之间的电压差为负表示0。两者之间没有电压差意味着处于第三态—高阻态,这种状态称为链路的electrical-idle状态。选择一个参考地后,差分信号两个电压的相对差值(D+ - D-)就是差模电压,两电压的绝对高度的平均值((D+ + D-) / 2)就是共模电压。PCIe差分信号峰峰值的电压范围是800mV1200mV,共模电压可以为0V3.6V之间的任何电压。也就是说,差分信号相交的地方(Vcm)不一定是绝对零。

1.2 拓扑结构
PCIe主要的组件有RC(Root Complex),SW(Switch),EP(Endpoint)。RC可以和所有device进行通信,一个EP也可以和一个PCIe系统中的EP来通信(Peer-to-Peer)。协议规定SW需要支持Peer-to-Peer,但对于有多个port的RC并没有要求。
1.3 体系结构
PICe设备的体系结构可以分为三个层次:事务层(Transaction Layer)、数据链路层(Data Link Layer)、物理层(Physical)。每一个层次又可以分为两个部分,分别为处理发送和处理接收的部分。也可以分为四个层次,将事务层以上的层次称为软件层(Software Layer)。

2 管理接口
82576包含2个连接到外部主控板的可选接口:
·SMBus
·NC-SI
由于可管理边带吞吐量低于网络链路吞吐量,82576在通过边带接口发送传入网络数据包之前,会为其分配8 KB的内部缓冲区。
2.1 SMBUS
SMBUS,System Management BUS,即系统管理总线,是一种两线制接口,用于管理计算机系统中硬件设备的串行总线标准,通过它能够使系统芯片元件之间相互通信。
SMBus通常用于连接主板和其他硬件设备,如电源、风扇、温度传感器等。它提供了一组标准化的命令和数据格式,用于在主机和硬件设备之间进行通信。
有两条信号线,分别为SMBCLK与SMBDAT,即一条时钟线一条数据线,并且这两条信号线都是双向的,当总线空闲时,这两条信号线都是高电平。
SMBUS总线规范是基于I2C的总线规范。SMBUS为系统和电源管理相关的任务提供一条控制总线。一个系统利用SMBus可以和多个设备互传信息,而不需使用独立的控制线路。SMBus标准涉及三类设备:从设备,接收或响应命令的设备;主设备,用来发布命令,产生时钟和终止发送的设备;主机,是一种专用的主设备,它提供与系统CPU的主接口。主机必须具有主-从机功能,并且必须支持SMBus通报协议。在一个系统里只允许有一个主机。
2.2 NC-SI
NC-SI 是一种协议!全称 Network Controller Sideband Interface(网络控制器边带接口),是一个由分布式管理任务组(DMTF)定义的电气接口和协议,它可以通过多种物理层接口实现,包括PCI Express、SMBus、I2C等。
通过 NC-SI,BMC 就可以与 CPU(操作系统)共享 NIC。
BMC(Baseboard Management Controller,基板管理控制器)通过相应的传感器,BMC 接收各种系统参数数据,例如,温度、风扇转速、操作系统状态等。管理员则可以通过 BMC 查看服务器运行状态及控制服务器。

简单的来说NC-SI就是从主控制器的管理控制器和以太网控制器之前通信定义的协议,一般传输是通过SMBus和I2C接口来传输的。
NC-SI主要包括:一个管理控制器(Management Controller, MC),一个或多个(NCSI 的电气特性最多支持 4 个)网络控制器(Network Controller,NC)。网络控制器NC一方面连接了外部网络接口与内部主机接口,另一方面,又与管理控制器之间有一个带外接口。
NC-SI 通信模型是经典的一问一答网络模型,由 MC 发送 Command,然后 NIC 给出 Response。NC 和 MC 都只需要实现单线程处理,MC 发送一个 Command 后,需要等待应答(或超时)后,才能发送下一个 Command,NC 处理完一个命令后才会出来下一个命令。

3 EEPROM/flash
3.1 EEPROM
82576使用EEPROM设备来存储产品配置信息。EEPROM一般分为三个通用区域:
·硬件访问-上电后由82576访问的硬件加载、PCI重置去断言、D3->D0转换或软件指令的EEPROM读取(CTRL_EXT.EE_RST)。
·可管理性固件访问-由82576在通电或固件重置后以直通模式加载。
·软件访问-仅供软件使用。此处列出的这些寄存器的含义仅为软件约定,并被82576忽略。
3.2 flash
82576提供了两种不同的软件访问Flash的方法。
用传统的flash事务,每次主机CPU对flash地址映射内的内存位置执行读或写操作时,或者在重新启动后通过访问扩展ROM基址寄存器指示的空间,对flash进行读取或写入操作。
4 配置IO引脚
4.1 通用I/O(软件可定义引脚)
82576每个端口有四个软件定义引脚(SDP引脚),可用于各种硬件或软件可控目的。这些引脚及其功能绑定到特定的局域网设备。为了避免信号争用,所有四个引脚都被设置为输入引脚,直到EEPROM配置加载之后。
4.2 软件看门狗
一旦主机驱动程序启动并确定硬件正常工作,驱动程序可能会重置看门狗定时器,以指示82576正常工作。控制此特性的寄存器是WDSTP。此寄存器允许设置超时时间并激活此模式。这两个值都从EEPROM获得默认值。
如果设备驱动程序因为怀疑82576卡住而需要立即触发看门狗,则驱动程序可以设置WDSWSTS.Force_WD位。它还可以通过使用WDSWSTS.STUMP_REASON字段向固件提供原因指示。看门狗特性为驱动程序提供了一种指示固件82576不工作的方法。
4.3 LED
82576为每个端口提供四个LED,可用于指示不同的流量状态。对于每个LED,可以定义以下参数:
·模式:定义该LED反映哪些信息。编码在LEDCTL寄存器中描述。
·极性:定义LED的极性。
·闪烁模式:确定LED应该闪烁还是稳定。
5 网络接口
82756支持具有内部PHY或SerDes/SGMII端口的2个端口,这些端口可以连接到外部物理层或直接连接到MAC到MAC通信的刀片连接。
每个82576 MAC可以配置为使用不同的媒体接口。支持以下潜在配置:
·内部铜缆PHY。
·外部SerDes设备,如光纤SerDes(SFP或板载)或背板连接。
·外部SGMII设备。此模式用于SFP连接或外部SGMII物理层。SFP是光模块!

1.SerDes功能可用于实施基于光纤的解决方案或背板连接,而不需要外部的TBI模式收发器或是SerDes。是光口,接光纤。
2.SGMII接口可用于连接SFP(小型可插拔)模块。SFP是光模块!!因此SGMII接口具有以下限制:没有发送时钟、仅交流耦合。是电口,接网线。支持10/100/1000BASE-T。
3.内部铜缆PHY支持10/100/1000-BaseT信号,能够根据系统电源状态和局域网能量检测(检测未插入的电缆)执行智能电源管理。电源管理包括在不需要时关闭到极低(断电)状态的能力,以及当系统处于低功率状态时自动协商到低速(和较少耗电)10/100 Mb/S操作的能力。

82576内部功能及原理
82576的内部功能主要包括:数据包的接收和发送功能、支持三种中断模式、支持802.1q VLAN、配置LED输出、内存错误检测和校正、DCA、传输速率限制(TRL)、新一代安全保护、虚拟化、时间同步和统计数据。
下文将对内部的接收发送功能进行重点介绍。
一、数据接收
1 整体接收数据流(P59 1.7.2)
(1)主机创建描述符环,并使用该环的地址位置、长度、头和尾指针来配置82576接收队列之一(16个可用Rx队列之一)。
(2)主机初始化指向空数据缓冲区的描述符。主机将这些描述符放在适当Rx环处的正确位置。
(3)主机更新适当的队列尾指针(RDT)。
(4)82576的DMA感测到特定RDT的变化,并因此发送PCIE请求以从主机存储器获取描述符。
(5)在PCIe读取完成中接收描述符内容,并将其写入描述符队列内部高速缓存中的适当位置。
(6)数据包进入Rx MAC。RX MAC检查分组的CRC。
(7)MAC将数据包转发到Rx过滤器
(8)如果包是MACSec或IPSec包,并且硬件中存储了足够的密钥,则对包进行解密和身份验证。
(9)如果数据包符合Rx过滤的预编程标准,则将其转发到Rx FIFO。可选地从分组中剥离VLAN码和CRC,并检查L3/L4校验和,并且固定目标队列。
(10)接收DMA从适当队列的内部高速缓存中取出下一个描述符,以用于下一个接收到的分组。
(11)在将整个包放入Rx FIFO后,接收DMA通过PCIe接口将包数据发布到描述符指示的位置。如果数据包大小大于缓冲区大小,则获取更多的描述符,并将其缓冲区用于接收的数据包。
(12)当数据包被放入主机内存时,接收DMA会更新数据包使用的所有描述符。在收集了足够的描述符用于写回、中断调节定时器超时或分组需要立即转发之后,接收DMA回写描述符内容以及指示分组信息的状态位,包括在该分组上进行了什么卸载。
(13)在中断调节定时器完成或接收到立即分组之后,82576向主机发起中断,以指示新接收的分组已经在主机存储器中。
(14)主机读取分组数据并将其发送到TCP/IP堆栈进行进一步处理。一旦不再使用关联的缓冲区和描述符,主机就会释放它们。
2 接收功能(P273 7.1)
2.1数据包接收流程
82576内部数据包的接收过程包括识别线路上数据包的存在、执行地址过滤、将数据包存储在接收数据 FIFO 中、将数据传输到主机内存中的 16 个接收队列之一,以及更新接收状态描述符。
82576支持的最大接收数据包大小为9.5 KB(9728字节)
2.2接收队列分配(7.1.1)
接收到的数据包经过三个阶段的过滤,对应图2中的L2 Filters–>Pool Select–>Queue Select。图2描述了虚拟模式下,数据包从“网络端口(图的顶部)”到“一个或多个虚拟端口(图的底部)”之间路由分组的三个阶段,其中底部的每个虚拟端口可以与一个虚拟机、IOVM、VMM等相关联。

图2 数据包过滤的三阶段
L2 Filters——第一阶段是确保端口接收到数据包,这是由一组L2过滤器完成的。L2数据包过滤分为三个阶段:1.通过L2过滤器(MAC地址、单播/组播/广播)过滤数据包。2.如果存在虚拟局域网标签,则按虚拟局域网过滤数据包。3.数据包由可管理性过滤器(端口、IP、FLEX、其他)过滤。
PoolSelect——第二阶段特定于虚拟化环境,并定义作为Rx包目标的虚拟端口(称为池)。一个信息包可以与任意数量的端口/池和选择过程相关联。PoolSelect分为虚拟化和非虚拟化两种。
虚拟化环境中:
(1) L2 以太网类型过滤器 — 每个过滤器标识属于某个池的特定队列(队列名称确定池,通常分配给 VMM 或服务操作系统)。
(2)SYN 过滤器— VT 模式不支持。
(3) L3/L4 5 元组过滤器— 每个过滤器都与属于特定池的单个Rx 队列关联。
(4) RSS 过滤器— 支持以下模式:<1>无RSS — 每个池分配一个队列(每个池的队列0)。<2> RSS — 所有 16 个队列都分配给池。请注意,可以使用 VMOLR.RSSE 位启用每个池的 RSS 使用。如果数据包不适合 RSS,则为每个池使用队列 0。
非虚拟化环境中:
(1) L2 以太网类型过滤器 — 每个过滤器标识 16 个 Rx 队列之一。
(2) SYN 过滤器— 识别16 个Rx 队列之一。
(3) L3/L4 5 元组过滤器— 每个过滤器识别16 个Rx 队列之一。
(4) RSS 过滤器— 通过RSS 索引识别2 x 8 队列之一。支持以下模式:<1>无 RSS — MRQC.DEF_Q 中定义的默认队列用于不满足任何前述条件的数据包。<2>RSS — 为 RSS 分配一组 16 个队列。队列通过RSS索引来标识。请注意,可以使用 16 个队列的子集。
Queue Select——第三阶段,成功通过Rx过滤器的接收分组与多个接收描述符队列之一相关联。按照以下顺序将接收到的分组分配到队列:
(1)按L2以太类型过滤器排队(如果匹配)
(2)如果RFCTL.SYNQFP是0b,则:
-按L3/L4 5元组过滤器排队(如果匹配)
-按SYN过滤器排队(如果匹配)
·如果RFCTL.SYNQFP是1b,则:
-按SYN过滤器排队(如果匹配)
-按L3/L4 5元组过滤器排队(如果匹配)
·定义池(在虚拟化的情况下)
·按RSS排队。
表7-1列出了每种模式下的队列分配情况。

2.2.1非虚拟化环境下的队列分配
通过以下方式将接收到的数据包分配给队列:
·L2以太类型过滤器-每个过滤器标识16个Rx队列中的一个。
·SYN过滤器-识别16个Rx队列中的一个。
·L3/L4 5元组过滤器-每个过滤器识别16个Rx队列中的一个。
·RSS筛选器-通过RSS索引标识2 x 8队列中的一个。支持以下模式:-无RSS:MRQC.DEF_Q中定义的默认队列用于不满足任何先前条件的分组。-RSS:为RSS分配一组16个队列。该队列通过RSS索引来标识。
下图指示出了非虚拟化环境下的接收数据包过滤流程:

2.2.2虚拟化环境下的队列分配(P275 7.1.1.1)
共有16个Rx队列被分配给预配置数量的队列集,称为池。在新一代VMDq模式中,系统软件将池分配给VMM、IOVM或VM。此过程属于三阶段中的PoolSelect阶段,在该阶段中,将根据池的关联将Rx队列分配给Rx包的每个复制。在IOV模式下,每个池都与一个VF相关联。
通过以下方式将接收到的分组分配到池中的队列:
·L2以太类型过滤器-每个过滤器标识属于某个池的特定队列(队列名称确定池,通常分配给VMM或服务操作系统)。
·SYN过滤器-VT模式不支持。
·L3/L4 5元组筛选器-每个筛选器与属于特定池的单个Rx队列相关联。
·RSS筛选器-支持以下模式:-无RSS-每个池分配单个队列(每个池的队列0)。-RSS-所有16个队列都分配给池。请注意,可以使用VMOLR.RSSE位启用每个池的RSS使用。如果数据包不适合RSS,则为每个池使用队列0。
下图指示出了虚拟化环境下的接收数据包过滤流程:

2.2.3队列配置寄存器(P279 7.1.1.3)
配置寄存器(CSR)用来控制队列,该寄存器按队列复制,每个队列对应1套,因此队列索引等于该寄存器的序列号,共计16套。1套中包含的寄存器有:
·RDBAL和RDBAH-Rx描述符基
·RDLEN-Rx描述符长度
·Rdh-Rx描述符头
·RDT-Rx描述符尾
·RXDCTL-接收描述符控制
·RXCTL-Rx DCA控制(DCA直接高速缓存访问,是一种通过将一些发布的入站写入直接放置在CPU缓存中来提高网络I/O性能的方法。)
2.2.4 L2以太网类型过滤器(P279 7.1.1.4)
82576集成了8个以太网型过滤器,用于识别数据包,并将其分配给接收队列。通过以下方式完成:
·IEEE 802.1X分组-基于局域网的可扩展身份验证协议(EAPOL)。
·时间同步信息包(如IEEE1588)-识别同步或延迟请求信息包。
RX描述符中Packet Type字段记录了匹配L2以太网类型的过滤器编号(共有8个)。
过滤器通过ETQF寄存器配置,配置内容如下:
·Etype字段包含与Rx包中所有L2类型字段进行比较的16位Ether-Type。
·Filter Enable位根据此过滤器启用按以太类型识别Rx包。如果此位清0,则在所有情况下都会忽略该滤波器。
·Rx Queue字段包含信息包的绝对的目的地队列。
·1588 Time Stamp字段指示应根据IEEE 1588规范对数据包加时间戳,进行时间标记。
· Queue Enable 字段根据该寄存器中定义的以太网类型启用转发Rx数据包。
2.2.5 L3/L4五元组过滤器(P280 7.1.1.5)
82576集成了8个L3/L4五元组过滤器,用于标识特定的L3/L4流或L3/L4流的集合。每个过滤器由5元组(协议、源和目标IP地址、源和目标TCP/UDP端口)组成,并将数据包转发到Rx队列之一。在虚拟环境中,每个过滤器可以与一个特定的VF相关联,并且数据包必须匹配该VF的L2条件才能匹配5元组过滤器。
5元组过滤器通过FTQF、SPQF、IMIR、IMIR_EXT、DAQF和SAQF寄存器配置如下:
· Protocol-标识IP协议,是5元组队列过滤器的一部分。通过掩码字段中的位启用。
· Source address -标识IP源地址,这是5元组队列过滤器的一部分。通过掩码字段中的位启用。仅支持IPv4地址。
· Destination address -标识IP目的地地址,这是5元组队列过滤器的一部分。通过掩码字段中的位启用。仅支持IPv4地址。
·Source port-标识TCP/UDP源端口,这是5元组队列过滤器的一部分。通过掩码字段中的位启用。
·Destination port-标识5元组队列筛选器的一部分,即TCP/UDP目的端口。如果清除IMIR.PORT_BP字段,则启用。
·Size threshold-标识应触发筛选器的数据包长度。这是主机收到的长度,不包括硬件删除的数据包的任何部分。由SIZE_BP字段启用。
·Control Bits -确定可能是过滤过程一部分的TCP标志。由CtrlBit_BP字段启用。
·Rx queue-确定与此筛选器匹配的数据包的Rx队列。仅使用LSB位:-在非虚拟配置中,Rx队列字段包含队列序列号。-在虚拟配置中,Rx队列字段包含与此过滤器关联(通过VF字段)的VF队列集合中的队列序列号。在这种情况下,数据包被发送到过滤器中定义的队列中的VF索引列表中的所有VF。
·queue enable-启用转发使用此过滤器的数据包。
·VF-通过VF索引标识与此筛选器关联的VF(仅限虚拟化模式)。数据包必须与VF筛选器(如MAC地址)和5元组筛选器匹配,此筛选器才能应用。
• VF Mask-确定VF字段是参与5元组匹配还是被忽略:-在非虚拟化情况下必须设置为1b-在虚拟化配置中:当设置为0b时,只有与VF字段匹配的单播数据包才是此过滤器的候选。当设置为1b时,单播、多播和广播数据包可能都与5元组过滤器匹配。未检查VF关联。Rx队列字段为每个VF定义一个队列。
• Mask-一个5位的字段,用于屏蔽5元组中的每个字段(L4协议、IP地址、TCP/UDP端口)。该过滤器是非屏蔽5元组域的逻辑与。如果所有5元组字段都被屏蔽,则不会将过滤器用于队列转发。
如果数据包匹配多个具有相同优先级的5元组过滤器,则使用第一个过滤器(最小序号)来定义该数据包的队列目的地。
IPv6数据包的过滤规则包括:
• 如果过滤器定义了IP源地址和目的地址中的至少一个,则IPv6数据包总是错过这样的过滤器。
• 如果过滤器同时屏蔽IP源地址和目的地址,则将IPv6数据包与过滤器的其余字段进行比较。
• 隧道报文不被5元组过滤器匹配。
2.2.6 SYN包过滤器(P281 7.1.1.6)
转发SYN标志位为1的TCP包至特定的队列,通过将这些数据包过滤到一个单独的队列中,安全软件可以监视SYN攻击并对其采取行动。虚拟化环境不使用。
通过SYNQF寄存器配置:
• Queue En -允许将SYN报文转发到指定队列。
• Rx Queue字段-包含数据包的目的队列.
2.2.7 RSS包过滤器(P281 7.1.1.7)
RSS将数据包转发到不同队列,软件将队列分配给不同处理器。RSS输出一个RSS索引,82576的全局赋值使用RSS索引位(或仅使用部分lsb)作为队列号的一部分。
RSS在MRQC寄存器中启用。当RXCSUM.PCSD位被设置(片段校验和被禁用)时,写回描述符中的RSS状态字段被启用。因此,RSS与UDP fragmentation互斥。此外,当使用传统接收描述符格式时,不提供对RSS的支持。
启用RSS后,82576向软件提供 RSS或设备驱动程序帮助所需的以下信息:
• 将用于流分类的双字结果写入接收数据包描述符。
• 4位RSS类型字段传达用于特定数据包的hash函数。
Hash函数将数据包的IP地址,协议(UDP或TCP)和端口(5个元组)作为键并计算哈希值。
下图显示了计算RSS输出的过程:

1.接收的数据包被解析为hash操作使用的报头字段(如IP地址、TCP端口等)。
2.执行hash计算。32位结果被馈送到分组接收描述符中。
3.使用hash结果的七个LSB作为对128个条目的间接表的索引。每个条目提供3位RSS输出索引。
下图显示了hash函数的计算索引过程:

当禁用RSS时,为数据包分配RSS输出索引=0。系统软件可以随时启用或禁用RSS。禁用时,系统软件可能会更新任何与RSS相关的寄存器的内容。
当在RSS模式下启用多个请求队列时,将为无法解码的分组分配RSS输出索引=0。32位标记(通常是hash函数的结果)等于0。
2.3 L2包过滤器(P287 7.1.2)
接收过滤包的目的是确定传入的数据包哪些传递到本地系统,哪些被丢弃。接收到的数据包可以转发到主机或BMC(可管理性控制器),也可以两者都发。
L2数据包过滤分为三个阶段:
(1)通过MAC地址(单播/组播/广播)过滤数据包。
(2)如果存在虚拟局域网标签,则按虚拟局域网过滤数据包。
(3)数据包由可管理性过滤器(port、IP、FLEX、其他)过滤。
数据包不转发到主机的三种情况:
1.数据包不会通过本节后面介绍的MAC地址过滤器。
2.该数据包不会通过本节后面所述的虚拟局域网过滤。
3.数据包通过可管理性过滤,然后可管理性过滤器确定该数据包不应同时传递到主机。
只有好的数据包才不丢弃,正常接收,好数据包即指没有 Under Size Error, Over Size Error, Packet Error, Length Error and CRC Error 中的任何一个。如果STOREBAD-PACKET位(FCTRL.SBP)被置1 ,则坏包也可被存储在主机内存。数据包错误由接收描述符中的错误位(RDESC.ERRORS)表示。通过设置混杂使能和STORE-BAD-PACKET位,可以接收所有包,而不管它们是否是坏包。若接收FIFO满,也会丢包并计数。
下图显示了RX过滤流程:

(1)上图中MAC Address Filter的过滤过程如下图:
如果满足以下任一条件,则数据包成功通过MAC地址过滤:
1.它是单播数据包,并且启用了混杂单播过滤。
2.它是组播报文,启用混播过滤。
3.它是单播数据包,它与单播MAC过滤器之一(主机或可管理性)匹配。
4.它是多播分组,并且它与多播过滤器之一匹配。
5.它是一个广播分组,并且启用了广播接受模式(BAM)。请注意,在这种情况下,对于可管理性流量,数据包不会经过虚拟局域网过滤(假设虚拟局域网过滤匹配)。

(2)VLAN Filter的过滤过程如下图:

(3)MNG Filter的过滤过程如下图:

2.4 接收数据存储(P294 7.1.3)
2.4.1 主机buffer
每个描述符指向由软件设备驱动程序指定用于存储分组数据的一个或多个buffer。使用通用RCTL.BSIZE字段或每队列SRRCTL[n].BSIZEPACKET字段设置buffer的大小。支持256、512、1024和2048字节的缓冲区大小。如果任何队列的SRRCTL[n].BSIZEPACKET = 0,则使用RCTL.BSIZE定义的缓冲区大小。否则,使用SRRCTL[n].BSIZEPACKET定义的缓冲区大小。
对于高级描述符的用法,SRRCTL.BSIZEHEADER字段用于定义分配给Header buffer大小。支持的最大缓冲区大小为960字节。
82576对接收内存缓冲区地址没有对齐限制。在高级描述符中使用No-Snoop使能位时,缓冲区地址是16位(2个字节)对齐的。
2.4.2 片上接收buffer
82576包含一个64K字节的数据包buffer,可用于存储数据包,直到它们被转发到主机。此外还提供了20千字节的交换buffer,用作所有本地流量的接收。
2.4.3 片上描述符buffer
82576为每个接收队列包含32个描述符buffer,用于减少数据包处理的延迟,并通过在突发中提取和写回描述符来优化PCIE带宽的使用。
2.5 接收描述符格式(P295 7.1.4)
2.5.1 传统接收描述符
在激活诸如虚拟化或安全功能等高级功能时,不得使用旧版描述符。接收描述符包含数据的buffer address [63:0]和用于硬件存储分组信息的字段[63:0]。如果SRRCTL[n].DESCTYPE=000b,则82576使用传统接收描述符。

2.5.2 高级接收描述符
高级接收描述符分为读取格式和写回格式。
读取格式:
读取格式用于软件写入描述符队列和硬件从主机内存中的描述符队列读取。
读取格式如下:

Packet Buffer Address (64) :数据包buffer的物理地址。最低位为A0(地址的LSB)或NSE(无监听使能),由相关队列的位RXCTL.RXdataWriteNSEn来配置决定。
当软件设置NSE位时,82576将接收到的与此描述符相关的数据包放在内存中的数据包缓冲地址中,NSE设置在PCIe属性字段中。NSE不影响写入头缓冲区地址的数据。
写回格式:
SRRCTL [n].DESCTYPE必须设置为000b以外的值(若为000则会使用传统接收描述符),以便82576回写特殊描述符。写回格式如下:

2.6 接收描述符预取(P304 7.1.6)
通过在每个burst中获取一个(或更多)缓存行描述符来最大限度地利用PCIe带宽。一下两种情况进行预区:1.当片上缓冲区为空时,只要有任何描述符可用(主机写入尾部指针),就会立即进行提取。2.当片上缓冲区几乎为空(RXDCTL.PTHRESH)时,每当主机内存中有足够的有效描述符(RXDCTL.HTHRESH)可用时,就会执行预取。
当主机存储器中的描述符数大于可用片上描述符存储时,82576可以选择执行不是高速缓存线大小的倍数的提取。如果这样做会导致下一描述符提取在缓存行边界上对齐,则硬件执行该非对齐提取。这使得描述符获取机制在落后于软件的情况下最有效。
所有的预取都是由可用的描述符数量决定的,并且不考虑由于总线访问限制而导致的事务的任何分割。
注意:82576从不获取描述符尾指针以外的描述符。
2.7 接收描述符写回(P304 7.1.7)
处理器的cache-line(128字节)大小大于接收描述符大小(16字节)。因此,写回每个接收到的分组的描述符信息将导致昂贵的部分高速缓存线更新。接收描述符打包机制使部分行回写的发生最小化。为了提高内存效率,接收描述符会被打包在一起,并作为1个cache-line写回。描述符回写累积在面向cache-line的区块中,在以下情况中有机会以cache-line组的形式写出:
·RXDCTL.WTHRESH描述符已被使用(已达到指定的未写入已使用描述符的最大阈值)。
·接收定时器超时(EITR)-在这种情况下,所有描述符都会被刷新,而忽略任何高速缓存线边界。
·显式软件刷新(RXDCTLn.SWFLS)。
·动态数据包-如果至少有一个正在等待回写的描述符被归类为需要立即通知的数据包,则整个队列将被清除。
当RXDCTL指定的描述符数目。如果使用了thresh,则不管缓存行是否对齐,它们都会被回写。当接收定时器(EITR)到期时,为了保持一致性,所有使用的描述符在启动中断之前被强制写回。软件可以通过写入带有SWFLS位集的RXDCTLn寄存器显式刷新累积的描述符。
当82576执行部分缓存行回写时,它会尝试在下一次回写时恢复到缓存行对齐。
2.8 接收描述符写回(P305 7.1.8)
硬件包含16个描述符环队列,每个队列最多存放16个描述符(即图片中一个方格对应16字节内存)。当多个描述符被处理,头尾指针会wrap back。硬件接管head指针,软件接管tail指针,在head指针前进之前要把使用过的描述符写回,把该队列腾空。处理完大小描述符后,头指针和尾指针换回基址。当软件开始插入片外描述符,每一个描述符中都指向主机分配内存的一块地址的起始地址。每当插入一个接收描述符后(插入到空白格子中),软件就会向下移动 tail 指针,每写回一个描述符后(对应阴影格子),硬件就会下移head指针。tail指针引用恰好在最后一个有效描述符之后的条目的地址。数据包被写回到达主机内存后,head会由硬件控制递增。当head指针等于tail指针时,队列为空。
阴影框表示已存储传入分组但尚未被软件识别的描述符。空白框则是硬件拥有的片外描述符。

接收描述符环由以下寄存器描述:
·接收描述符基地址(RDBA15至RDBA0)寄存器:该寄存器指示描述符环缓冲区的开始。该64位地址按16字节边界对齐,存储在两个连续的32位寄存器中。硬件会忽略低4位。
·接收描述符长度(RDLEN15至RDLEN0)寄存器:该寄存器确定分配给循环缓冲区的字节数,该值必须是128B(最大cache-line大小)的倍数。由于每个描述符的长度为16字节,因此接收描述符的总数始终是8的倍数。
·接收描述符头(RDH15至RDH0)寄存器:该寄存器保存一个偏离基地址base的偏移值,表示正在进行的描述符。循环缓冲区中最多可以有64 KB、8 KB的描述符。硬件维护一个卷影副本,其中包括那些已完成但尚未存储在内存中的描述符。
·接收描述符尾(RDT15至RDT0)寄存器:该寄存器保存一个偏离基地址base的偏移值,并标识硬件可以处理的最后一个描述符之外的位置。这是软件写入第一个新描述符的位置。
低接收描述符阈值:在运行时,软件处理完成的描述符,然后递增接收描述符尾寄存器(RDT)。同时,硬件可以发送从局域网接收的新分组,递增每个使用的描述符的接收描述符头寄存器(RDH)。硬件的可用(空闲)描述符数是尾部寄存器和头部寄存器之间的距离。当尾部到达头部时,没有空闲描述符,并且进一步的分组可能被丢弃或阻塞接收FIFO。为了避免丢弃或阻塞,一旦存在小于等于阈值的空闲描述符时,82576可以生成低等待时间中断(与相关的Rx队列相关联)。阈值由SRRCTL[n].RDMTS配置。
2.9 标头拆分和复制(P307 7.1.9)
包括数据包header拆分或复制到不同的内存空间,有助于主机单独读取header进行处理。Header通过常规的snoop事务进行复制,以便由主机CPU处理。建议在启用DCA功能或与软件预取结合使用的情况下执行此事务。
82576支持的头分割模式:
·传统模式:使用传统描述符;不拆分报头和有效负载。
·高级模式,不拆分:使用高级描述符;不拆分报头和有效载荷。
·高级模式,拆分:正在使用高级描述符;报头和有效负载被拆分到不同的缓冲区。如果数据包不能拆分,则只使用数据包缓冲区。
·高级模式,复制:正在使用高级描述符;报头在单独的缓冲区中复制,也在有效载荷缓冲区中复制。
·高级模式,复制,以数据包大小为条件:使用高级描述符;仅当数据包大于报头缓冲区大小时才执行复制。
·高级模式,拆分,始终使用报头缓冲区:正在使用高级描述符;报头和有效负载被拆分到不同的缓冲区。如果没有进行分割,则将包的第一部分存储在报头缓冲区中。
下图显示了头拆分和头复制模式:

2.10 接收数据包校验和卸载(P310 7.1.10)
82576支持卸载三种接收校验和计算:数据包校验和、IPV4 header校验和和tcp/udp校验和。
2.11 SCTP卸载(P314 7.1.12)
如果接收分组被识别为SCTP,则82576检查该分组的CRC32校验和。通过Rx描述符的扩展状态字段中的CRCV位通知软件CRC检查。SCTP分组的检测通过Rx描述符的分组类型字段中的SCTP位来指示。
二、数据发送
1 整体发送数据流(P57 1.7.1)
(1)主机创建描述符环,并使用该环的地址位置、长度、头部和尾部指针来配置82576发送队列之一(16个可用TX队列之一)。
(2)主机被TCP/IP堆栈请求发送分组,它获取一个或多个数据缓冲区中的分组数据。
(3)主机初始化描述符,该描述符指向数据缓冲区,并且具有描述所需硬件功能的附加控制参数。主机将该描述符放在适当的TX环处的正确位置。
(4)主机更新适当的队列尾指针(TDT)
(5)82576的 DMA感测到特定TDT的改变,并因此发送PCIE请求以从主机存储器获取描述符。
(6)在PCIE读取完成中接收描述符内容,并将其写入描述符队列内部高速缓存中的适当位置。
(7) DMA从内部高速缓存获取下一个描述符,并处理其内容。因此,DMA发送PCIe请求以从系统内存获取分组数据。
(8)从PCIe完成接收分组数据,并通过传输DMA执行所有编程数据操作(各种CPU卸载任务,如校验和卸载、TSO卸载等)。在运行中的分组数据上。
(9)当数据包通过DMA时,它被存储到发送FIFO中。在整个分组存储在发送FIFO中之后,它被转发到发送交换模块。
(10)如果数据包目的地也在本地,则还会将其发送到本地交换机内存并加入接收路径。
(11)传输交换机在主机和管理分组之间进行仲裁,并最终将分组转发到安全引擎。
(12)安全引擎可选地应用L3(IPSec)或L2(MACSec)加密或认证,并将分组转发到MAC。
(13) MAC将L2 CRC附加到该数据包,并使用预配置的接口将该数据包发送到线路。
(14)当给定分组的所有PCIE完成时,DMA更新适当的描述符。
(15)在收集了足够的描述符用于回写或中断调节定时器超时后,使用PCIe发布的写入将描述符写回到主机内存。或者,只能写回头指针。
(16)在中断调节定时器期满之后,产生中断以通知主机设备驱动程序特定分组已被读取到82576,并且驱动程序可以释放缓冲器。
2 发送功能(P273 7.1)
输出分组由构成描述符链的指针长度对组成。软件通过组合指针-长度对的列表,将该信息存储在传输描述符中,然后将片上传输尾指针更新为该描述符,来形成传输包。传输描述符和缓冲区存储在主机存储器中。硬件通常仅在完全从主机存储器获取所有L2包数据并将其存入片上传输FIFO后才传输包。这允许进行TCP或UDP校验和计算,并避免PCIe运行不足的问题。
82576的另一个发送功能是tcp/udp分段。该硬件能够对从网络操作系统(NOS)卸载的大型数据缓冲区执行数据包分段。
2.1发送数据存储
数据存储在描述符指向的buffer中。数据对齐在任意字节边界上,每个描述符的最大大小仅限于允许的最大数据包大小(9728字节)。一个分组通常由两个(或多个)buffer组成,一个(或多个)用于报头,一个用于实际数据。每个缓冲区由不同的描述符引用。一些软件实现将报头和分组数据复制到一个缓冲区中,并且每个发送的分组仅使用一个描述符。
2.1.1片上发送缓冲区
82576包含一个40 KB的数据包缓冲区,可用于存储数据包,直到它们被转发到网络或本地到另一个虚拟机(VM)。
2.1.2片上描述符缓冲区
82576包含用于每个传输队列的32个描述符缓存,用于减少数据包处理的延迟,并通过在突发中提取和写回描述符来优化PCIE带宽的使用。
2.1.3发送上下文
发送数据不仅有数据描述符,还有上下文描述符,以便提供硬件校验和的卸载以及TCP/UDP分段所需要的参数。上下文是指作为一组被加载或访问以提供特定功能的一组设备寄存器。82576支持片上32个上下文寄存器集(每个队列两个)。
IDX字段包含指向两个队列上下文之一的索引。软件必须跟踪每个IDX位置存储的上下文。
使用任何高级卸载功能的每个高级数据描述符都必须引用一个上下文。
每个上下文定义有关所发送的分组的信息,包括MAC报头的总大小(TDESC.MACHDR)、每个分组中应包括的有效负载数据量(TDESC.MSS)、TCP报头长度(TDESC.TCPHDR)、IP报头长度(TDESC.IPHDR)以及有关使用的协议类型(TCP、IP等)的信息。除TCP、IP(TDESC.TUCMD)外,大多数信息都是特定于分段能力的。
2.2 发送描述符(P316 7.2.2)
82576支持传统描述符和高级描述符。传统描述符旨在支持传统驱动程序,以实现快速平台通电和方便调试。
注意:这些描述符不得与使用虚拟化或MACSec等高级功能一起使用。
通过DXT位值来识别传统描述符。
82576支持两种类型的高级传输描述符:1.高级传输上下文描述符,DTYP=0010b。
2.高级传输数据描述符,DTYP=0011b。
2.2.1 传统发送描述符格式
通过将描述符(TDESC.DEXT)的第29位设置为0b来标识传统描述符。

对于跨越多个描述符的帧,VLAN、CSS、CSO、CMD.VLE、CMD.IC和CMD.IFCS仅在第一个描述符中有效,在后续描述符中被忽略。
buffer addresss(64):数据包buffer的物理地址。
Length(TDESC.LENGTH)指定要从提供的缓冲区地址获取的长度(以字节为单位);与任何单个传统描述符关联的最大长度为9728字节。
CSO和CSS:校验和偏移量和起始。校验和偏移量(TDESC.CSO)字段指示相对于数据包开始处插入TCP校验和的位置。校验和开始(TDESC.CSS)字段指示开始计算校验和的位置。CSO和CSS均以字节为单位,并且必须在描述符中提供给82576的数据范围内。

CMD:命令字节,存储的命令包括:
• RSV (bit 7) — 保存
• VLE (bit 6) — 启用虚拟局域网数据包
• DEXT (bit 5) — 描述符扩展(0用于传统模式)
• Reserved (bit 4) — 保留
• RS (bit 3) — 报告状态
• IC (bit 2) — 插入校验和
• IFCS (bit 1) — 插入FCS
• EOP (bit 0) — 分组结束
STA:状态。DD表示描述符已完成,并在描述符被处理后被写回。

DD:描述符完成状态
VLAN:vlan字段用于提供802.1q/802.1ac标记信息。当设置了VLE位时,仅在每个数据包的第一个描述符上限定了VLAN字段。

2.2.2高级传输上下文描述符

IPLEN(9):IP报头长度。如果请求卸载,则IPLEN必须大于或等于20且小于或等于511。对于IPSec流,它包括IPSec报头的长度。
MACLEN (7):指示MAC报头的长度。当请求卸载时(设置了TSE、IXSM或TXSM之一),MACHDR必须大于或等于14且小于或等于127。

VLAN(16):仅当使用此上下文的数据包设置了其DCMD.VLE位时,才会插入并需要此VLAN标记。
IPSec SA IDX(8):如果为该分组请求IPSec卸载(在高级Tx数据描述符中设置了IPSec位),则指示SA表中存储该流的IPSec密钥和SALT的索引。
Reserved (24)
IPS_ESP_LEN (9)
TUCMD(11):
• RSV (bit 10-6) — 保留。
• Encryption (bit5) — 需要ESP加密卸载。仅对在其高级TX数据描述符中为其设置了IPSec位的分组有意义。
• IPSEC_TYPE (bit 4) — 为ESP设置。仅对在其高级TX数据描述符中为其设置了IPSec位的分组有意义。
• L4T (bit 3:2) — L4分组类型(00b:UDP;01b:TCP;10b:SCTP;11b:RSV)。
• IPV4 (bit 1) — IP分组类型:当为1b时,为IPv4;当为0b时,为IPv6。
• SNAP (bit 0) — SNAP指示。
DTYP(4):始终为0010b。
RSV (5)
DEXT:描述符扩展(1b用于高级模式)。
RSV (6)
IDX (3):索引到存储此上下文的硬件上下文表。
RSV (1)
L4LEN (8):第4层报头长度。如果在指向此上下文的数据描述符中设置了TSE,则此字段必须大于或等于12且小于或等于255。
MSS:控制最大分段大小。指定每帧发送的最大TCP有效负载数据段,不包括任何报头或报尾。
2.2.3高级传输数据描述符

主机内存中包含传输包一部分的数据缓冲区的物理地址。
Address (64):主机内存中数据buffer的物理地址
DTALEN (16):这个特定描述符所指向的地址处的数据buffer的字节长度。
RSV (2)
MAC (2)
DTYP (4):0011b
DCMD (8):
• TSE (bit 7) — TCP/UDP Segmentation Enable
• VLE (bit 6) — VLAN Packet Enable
• DEXT (bit 5) — Descriptor Extension (1b for advanced mode)
• Reserved (bit 4)
• RS (bit 3) — Report Status
• Reserved (bit 2)
• IFCS (bit 1) — Insert FCS
• EOP (bit 0) — End Of Packet
STA (4) :
• Rsv (bits 1-3) — Reserved
• DD (bit 0) — Descriptor Done
IDX (3):索引到硬件上下文表
RSV (1)
POPTS (6):
• RSV (bit 5:3) — Reserved
• IPSEC (bit 2) — IPSec Offload Request
• TXSM (bit 1) — Insert L4 Checksum
• IXSM (bit 0) — Insert IP Checksum
PAYLEN (18):表示主机内存中用于传输的数据缓冲区的大小(以字节为单位)。
2.2.4发送描述符环结构
传输描述符环结构如图:
一组硬件寄存器维护主机内存中的每个传输描述符环。软件通过将描述符写入循环缓冲区内存区域并移动与该队列关联的尾指针,将新的描述符添加到队列中。尾指针指向最后一个硬件拥有的描述符之外的一个条目。

阴影框表示当前不属于软件可以修改的硬件的描述符。
发送描述符环由以下寄存器描述:
•发送描述符基址寄存器(TDBA 0-15):该寄存器表示主机内存中描述符环缓冲区的起始地址;这个64位地址在16字节边界上对齐,并存储在两个连续的32位寄存器中。硬件忽略低四位。
•传输描述符长度寄存器(TDLEN 0-15):这个寄存器决定分配给循环缓冲区的字节数。该值必须为0对128取模。
•发送描述符头寄存器(TDH 0-15):该寄存器保存一个值,该值是基数的偏移量,表示正在进行的描述符。在循环缓冲区中最多可以有64 KB的描述符。读取这个寄存器返回与已经在输出FIFO中加载的描述符相对应的head值。这个寄存器反映硬件回写过程的内部头,包括提交的写管道中的描述符,并且可能指向比实际写回内存的最后一个描述符更远的地方。
•传输描述符尾寄存器(TDT 0-15):这个寄存器保存一个值,它是基数的偏移量,并指示硬件可以处理的最后一个描述符之外的位置。这是软件写入第一个新描述符的位置。驱动程序不应该处理描述部分数据包的82576描述符。因此,用于描述数据包的描述符的数量不能大于环的大小。
2.2.5发送描述符环预取
相对于接收描述符预取,片上发送描述符的数量增加了(从8个增加到64个),当片上描述符缓冲区为空时,只要有任何描述符可用,就会进行取操作(主机写入尾指针)。如果几个片上描述符队列同时处于这种情况,则必须首先为索引最高的队列提供服务,依此类推,直到索引最低的队列。
2.2.6发送描述符环写回
当TXDCTL[n].WTHRESH值不是0b时,发送描述符的描述符写回策略类似于接收描述符的描述符写回策略。在这种情况下,无论其RS位的值如何,所有描述符都会被写回。
当TXDCTL[n].WTHRESH值为0b时,只有设置了RS位的描述符才会被写回。
任何描述符回写都包括描述符的全部16个字节。
在以下三种情况之一中写回描述符:
·TXDCTL[n].WTHRESH=0b且设置了RS的描述符已准备好被写回。
·相应的EITR计数器已达到零。
·TXDCTL[n].WTHRESH>0b并且TXDCTL[n].WTHRESH描述符已累积。
2.3 发送完成头写回(P330 7.2.3)
硬件可以将描述符队列head的内容写入主机存储器,而不是写入DD位以发出发送请求完成的信号。软件设备驱动程序读取该存储位置以确定哪些发送请求已完成。
软件设备驱动程序需要对DCA寄存器进行编程,以配置哪个CPU正在处理每个发送队列。
head计数器反映在由软件为每个队列分配的存储位置中。
软件设备驱动程序通过发送队列0-15头回写地址、低地址和高地址(从而允许64位地址)来控制该功能。
2.4 TCP/UDP分段
TCP分段TCP/IP堆栈支持的卸载选项之一,通常被称为TCP分段卸载或TSO。此功能使TCP/IP堆栈能够将要传输的消息传递给网络设备驱动程序,该消息大于介质的最大传输单位(MTU)。然后,软件设备驱动程序和硬件负责将TCP消息划分为MTU大小的帧,这些帧具有适当的第2层(以太网)、第3层(IP)和第4层(TCP)报头。这些标头必须包括需要的序列号、校验和字段、选项和标签值。另外,82576还支持嵌入式应用程序的UDP分段。后文中任何提及TCP分段的内容都应被视为指的是TCP分段和UDP分段。
82576用于进行TCP分段的流程如下:
1.获取一个描述符,该描述符带有一个TSO卸载一个TCP包的请求。
2.第一段处理:
A.获取包含由MACLEN、IPLEN和L4LEN字段计算的报头的所有缓冲区。保存包含报头的缓冲区的地址和长度(最多4个缓冲区)。不保存标题内容。
B.从后续缓冲区获取数据至MSS并计算适当的校验和。
C.相应地更新报头并更新分组的内部状态(要获取的下一数据和IP SN)。
D.将数据包发送到网络。
E.如果发送了总数据包,则转到步骤4。否则继续。
3.下一段
A.等待该队列的下一次仲裁。
B.从保存的地址中获取包含报头的所有缓冲区。可以使用no-snoop属性来完成对报头的后续读取。
C.从后续缓冲区中获取直到MSS或分组末尾的数据,并计算适当的校验和。
D.相应地更新报头并更新分组的内部状态(要获取的下一数据和IP SN)。
E.如果发送了总报文,则完成请求,否则从步骤3重新启动。
4.释放所有缓冲区(更新头指针)。
2.5 非分段模式下的校验和卸载(P339 7.2.5)
卸载校验和之前,必须先初始化校验和上下文。通过向设备提供带有TUCMD.TSE=0b的TCP/IP上下文描述符来执行的。设置TSE=0b表示正在设置正常的校验和上下文,而不是分段上下文。
每个校验和独立运行。通过发送数据描述符POPTS.TSXM和POPTS.IXSM字段,可以分别为每个分组插入IP和TCP校验和。
发送上下文描述符中有三个字段设置了 IP 校验和卸载功能的上下文,三个字段分别是:TUCMD.IPv4、IPLEN、MACLEN。
三个字段设置 TCP 校验和卸载功能的上下文,分别是:MACLEN、IPLEN、TUCMD.L4T。
三个字段设置 STCP 校验和卸载功能的上下文:MACLEN、IPLEN、TUCMD.L4T。
2.6 多发送队列(P342 7.2.6)
传输队列的数量增加到 16 个,以匹配大多数服务器平台上的预期处理器数量并支持新的虚拟化模式。
如果 CPU 数量多于队列,那么一个队列可能会用于服务多个 CPU。
2.6.1 虚拟机/传输队列的带宽分配
当在 VMDq2 或 SR-IOV 模式下运行时,82576 能够控制每个虚拟机 (VM) 使用的 Tx 带宽。由于在这些虚拟化模式中,每个 Tx 队列由一个单独的 VM(或一组单独的 VM)拥有,因此通过向 Tx 队列分配带宽份额来执行对 VM 的带宽分配。速率控制器在内部与 Tx 队列关联,以维护其分配的带宽份额。
带宽共享方案由以下寄存器组配置:
• VMBACS,用于控制虚拟机带宽分配功能的一般操作。
• VMBAMMW,设置虚拟机在暂时不使用分配的带宽时可以累积的最大Tx 有效负载补偿量。
• VMBASEL,选择通过VMBAC 寄存器配置带宽共享的VM/Tx 队列。
• VMBAC,设置分配给VM 的最小速率。
三、中断工作模式

  1. 中断映射原因(P343 7.3.1)
    82576支持以下中断模式:
    1.选择PCI型传统中断或MSI(GPIE.Multiple_MSIX为0b时);
    2.非IOV模式下的MSI-X(当GPIE.Multiple_MSIX为1b且PCIe SR-IOV控制寄存器中的VFE位被清除);
    3.IOV模式下的MSI-X(GPIE.Multiple_MSIX为1b且PCIe SR-IOV控制寄存器中的VFE位设置时选择)。
    1.1 传统和 MSI 中断模式
    在传统模式和 MSI 模式下,中断原因通过设置 EICR 寄存器中的位来反映。
    中断原因一般包括:特定 Rx 队列事件或 LSC 事件。其中队列相关原因的映射是通过 IVAR 寄存器完成的。每个可能的队列中断原因(每个Rx或Tx队列)都在IVAR中分配一个条目,并且IVAR中的每个条目标识EICR寄存器中分配给队列中断原因的位中的一位。可以将多个中断原因映射到同一个 EICR 位。
    在此模式下,原因可以映射到 EICR 寄存器的前 16 位。
    与非队列原因相关的中断原因被映射到ICR传统寄存器中;每个原因都分配一个单独的位。所有原因的总和反映在 EICR 的其他位中。分配流程如图7-13所示。

涉及以下配置和参数:
• IVAR[7:0] 条目将 16 个 Tx 队列和 16 个 Rx 队列映射到 EICR[15:0] 位
• 不使用映射非队列原因的 IVAR_MISC
• EICR[30] 位分配给 TCP 定时器中断原因。
• EICR[31] 位分配给ICR 寄存器中汇总的其他中断原因。
• 提供单个中断向量。
下表将不同的中断原因映射到 IVAR 寄存器中。

1.2 MSI-X 模式 — 非 IOV 模式
在非SR-IOV设置中,82576最多可以请求25个向量。在MSI-X模式下,中断原因被映射到MSI-X向量中。映射是通过IVAR寄存器完成的。每个可能的中断原因都在 IVAR 中分配一个条目,并且 IVAR 中的每个条目标识一个 MSI-X 向量。可以将多个中断原因映射到 MSI-X 向量中。
EICR还反映了中断向量。分配给队列原因的EICR位反映MSI-X向量(当使用MSI-X向量2时,位2被设置)。与非队列原因相关的中断原因被映射到ICR中(与传统情况相同)。所有这些原因的MSI-X向量都反映在EICR中。

下表7-43定义了MSI-X分配寄存器中的每个条目代表的中断原因。

1.3在SR-IOV模式下的MSI-X中断
SR-IOV模式中的每个VF功能单元分配3个MSI-X向量。PF最多可以请求10个向量。
物理功能(PF)的中断分配与MSI-X非IOV情况相同。但是,PF不应将中断向量分配给未分配给它的队列。IVAR_MISC寄存器分配非队列中断。尽管PF最多可分配10个矢量,但这些矢量与VFS共享内部中断。
IOV模式下的每个VF被分配单独的IVAR寄存器(称为VTIVAR),将其与队列相关的中断原因转换为该虚拟功能的MSI-X向量。IVAR寄存器的每个Tx或Rx队列有一个条目。VTIVAR_MISC寄存器用于将邮箱中断映射到MSI-X向量。
PF可以将VFS未使用的中断原因分配给它自己的一个向量。

2 中断相关寄存器
第一个表描述了传统模式中寄存器的使用,第二个表描述了在使用扩展中断功能时寄存器的使用。

3 MSI-X和矢量
与MSI相比,MSI-X支持每个函数更大的最大向量数量,支持软件在分配的向量少于请求的向量时控制混叠的能力,以及每个向量使用由内存空间中的表指定的独立地址和数据值的能力。
MSI-X将每个中断原因映射到一个中断向量中,该中断向量由82576作为后写PCIE事务传递。中断原因到MSI-X向量的映射由系统软件(设备驱动程序)通过存储在MSI-X分配寄存器中的转换表确定。分配寄存器的每个条目定义单个中断原因的矢量。
82576中有34个扩展中断原因退出:
1.32流量原因-16个Tx,16个Rx。
2.TCP计时器
3.其他原因-将传统中断总结为一个扩展原因。
3.1 中断调节
82576实现了中断调节,进行中断限流以减少软件进程的中断数量。
调节方案基于EITR,流程如下图所示:

4 清除中断原因
82576有三种清除EICR位的方法:自动清除、写入时清除和读取时清除。只能使用写入时清除或读取时清除来清除ICR位。
5 速率控制低延迟中断(LLI)
低延迟中断共享排队机制使用的过滤器。除了排队操作之外,这些过滤器中的每一个还可以指示匹配的分组可能会产生立即中断。如果接收到的包与这些过滤器中的一个匹配,硬件应立即中断,覆盖EITR计数器的中断调节。每次触发低延迟中断时,加载EITR间隔,并再次开始递减计数。
6 TCP计时器中断(P356 7.3.1)
为了实现IOAT的TCP计时器,软件需要定期(每10毫秒)采取行动。
驱动程序会设置一个超时值(通常为10 ms),每次定时器超时时,硬件都会在EICR中设置一个特定的位。当中断发生时(由于正常的中断调节方案),软件读取EICR并发现它需要在该DPC期间处理定时器事件。
超时应由驱动程序编程,如果不需要,驱动程序应能够禁用定时器中断。四、802.1q VLAN
802.1q就是VLAN协议,提供了两种支持协议的特殊机制,1.添加和剥离VLAN标签2.过滤属于特定VLAN的数据包,这两种方式都是可选择的。
下表比较了未添加标记的802.3以太网数据包和有802.1q标记的数据包。

五、配置LED输出
82576实现了4个输出驱动器,用于驱动每个端口的外部发光二极管电路。每个局域网设备都提供一组独立的LED输出–这些引脚及其功能绑定到特定的局域网设备。四个LED输出中的每一个都可以单独配置为选择该输出上指示的特定事件、状态或活动。此外,每个LED可以单独配置为输出极性以及闪烁和不闪烁(稳定状态)指示。
LED输出的配置通过LEDCTL寄存器指定。此外,所有LED输出的硬件默认配置可以通过EEPROM字段指定,从而支持可根据特定OEM偏好配置的LED显示器。
六、内存错误的纠正和检测
82576个主内存由纠错码或奇偶校验码保护。较大的存储器由纠错码(ECC)保护,该纠错码可以检测两个错误并纠正一个错误。用纠错码(ECC)或可以检测一个错误的奇偶校验位来保护较小的存储器。
有些错误能够矫正,有些不能。不能校正的错误又分为致命错误和非致命错误。如果是非致命错误,运输到指定位置在丢弃数据包即可,如果是致命错误则会停止通信并产生中断,只有通过软件重置才能解除流量停止。
ICR[23:22]用于指示错误的中断原因。注:一旦断言指示内存错误的中断,则必须先读取PEIND寄存器,然后才能断言新的中断。使用PEINDM寄存器实现82576对每个存储器的不可纠正错误的反应机制。
RPBECCSTS.Corr_err_cnt、TPBECCSTS.Corr_err_cnt、SWPBECCSTS.Corr_err_cnt、IPPBECCSTS.Corr_err_cnt、RDHESTS.Corr_err_cnt、TDHESTS.Corr_err_cnt、PRBESTS.Corr_err_cnt、PWBESTS.Corr_err_cnt或PMSIXESTS.Corr_err_cnt字段中会自动更正和计数可纠正的错误。
根据发现错误的内存,在RPBECCSTS.Uncorr_err_cnt、TPBECCSTS.Uncorr_err_cnt、SWPBECCSTS.Uncorr_err_cnt、IPPBECCSTS.Uncorr_err_cnt、RDHESTS.Uncorr_err_cnt或TDHESTS.Uncorr_err_cnt或TDHESTS.Uncorr_err_cnt字段中统计部分无法纠正的错误。
七、DCA
DCA 直接缓存访问,是一种通过将一些发布的入站写入直接放置在CPU缓存中来提高网络I/O性能的方法。通过研究和实验表明,DCA可以显著降低CPU缓存未命中率。DCA的实现由每个接收和发送的独立寄存器:RXCTL和TXCTL寄存器控制。
DCA实施有两种模式:1. 传统DCA(DCA目标ID派生自CPU ID);2. DCA 1.0(DCA目标ID派生自APIC ID)。软件驱动器通过DCA_MODE寄存器选择其中一种模式。
八、传输速率限制
速率控制是根据最大负载速率定义的,速率调度器通过计算其控制的实体下一次可以被服务的时间,速率调度器的输出是该实体当前是否可以被服务。这可以被看作好像由速率调度器控制的振荡“开/关”被附加在它控制的每个实体的出口处。

九、下一代安全
1 MACSec
MACSec(或MACsec、802.1AE)是IEEE 802.1AE中定义的使用对称加密的MAC级别加密/身份验证方案。
MACsec在以太网连接设备之间主要是保护动态数据安全,并保护网络通信免受DoS攻击、窃听和中间人攻击。与上层协议一样,MACsec 通过向以太网帧添加两个额外字段来提供加密和身份验证服务:
安全标签,是 EtherType 字段的扩展,也用于 VLAN 标记;消息身份验证代码 (ICV) 用于定义完整性检查值算法。
MACsec是基于AES-GCM加密的既定协议,通过提供机密性、数据完整性、数据来源真实性和重放保护来保护数据链路层(通信的起点)。
设置MACsec加密连接主要涉及五个步骤:
第 1 步
使用预共享密钥 (PSK) 建立相互对等身份验证。
第 2步
身份验证成功后,交换安全连接关联密钥名称 (CKN),以在对等设备之间形成连接关联。MKA ICV 使用连接关联密钥 (CAK) 进行验证(该密钥实际上是私钥)。
第 3 步
两个端点的优先级值用于选择哪个设备成为密钥服务器,另一个设备则充当密钥客户端。
第 4 步
然后,密钥服务器生成安全关联密钥 (SAK) 并将其分发给密钥客户端(对等设备),以形成安全关联。
第 5 步
在对等设备之间交换加密数据。
与在OSI堆栈的更高层实现的方案相比,MACsec硬件加密是延迟最低的安全保护方案。
2 IPSec
IPSec卸载是指能够在硬件中处理一定数量的IPSec流,而其余部分仍由操作系统处理。操作系统有责任向硬件提交负载最大的流,以便在节省CPU使用率方面最大限度地利用IPSec卸载。
十、虚拟化
I/O虚拟化是一种在多个使用者之间共享I/O资源的机制。虚拟设备旨在通过共享I/O设备的某些功能来减轻VMM的负担,因此可以从每个从操作系统或虚拟机(VM)直接访问这些功能。
82576支持两种虚拟环境操作模式:1.使用PCIsig SR-IOV标准将部分端口资源直接分配给不同的从操作系统。也称为“原生模式”或直通模式。2.通过IOVM或VMM集中管理网络资源。也称为软件交换机加速模式。此模式称为下一代VMDq模式。与之前版本的网卡芯片相比,82576新添加了SR-IOV虚拟化功能,因此后文只对SR-IOV进行重点介绍。
注:在虚拟环境中,82576最多可支持8台虚拟机(VM)。

2 SR-IOV
SR-IOV 技术是 PCI-SIG 组织为了减少 VMM 在 I/O 传输过程中的干预,提出了针对 PCIe 设备的一系列硬件增强功能的规范,它通过 IOMMU 实现内存保护和地址转换的功能卸载(offload)。核心思想是:在设备支持的前提下,将一个设备划分为一个物理功能单元PF和多个虚拟功能单元VF,每个虚拟功能单元VF都可以作为一个轻量级的 I/O 设备供虚拟机使用,这样一个设备就可以同时被分配给多个虚拟机,解决了因设备数量限制给虚拟化系统带来的可扩展性差的问题。下图展示了具有 SR-IOV 功能的设备。

2.1 相关概念
1.虚拟映像(VI):被分配部分I/O资源的虚拟机。也称为VM。
2.I/O虚拟中介(IOVI)或I/O虚拟机(IOVM):拥有物理设备并负责物理设备配置的特殊虚拟机。
3.终端(EP):可能包含一些物理功能的物理设备,即82576。
4.物理功能单元(PF):表示物理实例的函数,即一个端口。PF驱动程序负责函数中共享资源的配置和管理。
5.虚拟功能单元(VF):分配给VI的PF的一部分。
物理功能(PF)具有发现、管理和操作功能齐全的 PCIe 功能,除执行 I/O 功能外,其与正常 PCIe 设备拥有一致的配置功能。虚拟功能(VF)从属于 PF,是一种轻量级 PCIe 功能,它缺少配置资源,仅限于处理 I/O 流来移动数据。
支持 SR-IOV 技术的 PCIe 设备一般拥有一个或者多个 PF,相应的一个 PF 通常拥有多个 VF。每个 VF 都有唯一相关联的 RID 和发送/接收队列、DMA 通道等,如下图所示。其中 Tx 表示发送队列,Rx 表示接收队列。由一个发送队列和接收队列组成的队列组称为 Pool,并将其分配给 VF,使得 VF 具有数据收发功能,从而可以把 VF 作为一个轻量级的 I/O 设备分配给一个虚拟机使用,大大的节约了芯片设计资源。由于 SR-IOV 具有优秀的扩展性和发展潜力,目前成为硬件辅助 I/O 虚拟化技术主流研究方向之一。

常见的术语缩写含义
PHY:端口物理层设备,OSI最底层。OSI七层模型分别为:应用层、表示层、会话层、运输层、网络层、数据链路层和物理层。
SerDes:串行器和解串器,一种主流的时分多路复用(TDM)、点对点(P2P)的串行通信技术。即在发送端多路低速并行信号被转换成高速串行信号,经过传输媒体(光缆或铜线),最后在接收端高速串行信号重新转换成低速并行信号。这种点对点的串行通信技术充分利用传输媒体的信道容量,减少所需的传输信道和器件引脚数目,提升信号的传输速度,从而大大降低通信成本。
SGMII:串行吉比特媒体独立接口,一般是PHY和MAC间的接口。
SMBUS:系统管理总线,一种承载各种可管理区间的总线,包括LAN控制器、BIOS、传感器和远程控制器。
DMA:直接内存访问。
FC:流控制。
MDIO:管理数据进出,是MAC用来管理PHY的管理总线协议,也叫SMI和MIIM。包括:MDIO接口时钟(MDC,由MAC设备驱动到PHY时钟,MDIO数据与MDC时钟同步,在MDC上升沿有效);MDIO数据(双向,用于MAC读写PHY寄存器的数据)。
DCA:直接缓存访问。
EEPROM:电可擦除可编程存储器,位于LAN控制器上的非易失性存储器,可从主机直接访问。
NIC:网卡,工作在数据链路层,局域网中连接计算机和传输介质的接口。
LOM:集成在计算机主板上的网络接口模块,将网卡功能整合到主板上。
MAC:媒体访问控制,MAC层属于数据链路层的范畴。
TSO:传输分段卸载。是一种模式,在该模式中,大量的TCP/UDP I/O被处理到设备,并且设备根据所请求的MS将其分段为L2分组。
END-to-END CRC:循环冗余校验码,校验位,该校验码是根据header和data部分计算出来的端到端数据,将其附加到TLP末尾,方便数据包的接收方进行ECRC字段检验。
ACK:ACKnowledge Character在数据通信传输中,接收站发给发送站的一种传输控制字符。它表示确认发来的数据已经接受无误。
NAK:Negative Acknowledgment否定应答或者非应答的缩写。它是一个用于数字通信中确认数据收到但是有小错误的信号。
Ack/Nak是一种由硬件实现的,完全自动的机制,目的是保证TLP有效可靠地传输。Ack DLLP用于确认TLP被成功接收,Nak DLLP则用于表明TLP传输中遇到了错误。从EEPROM加载的PCIe错误恢复位确定使用两种方案中的哪一种。
EDB:结束错误符号。
Lane-to-Lane De-skew:通道对齐
GEN2:使用PCI Express 2.0 规格的接口(插槽)
Link:链路,PCIe链路是两台设备之间的物理连接
Lane:一条链路在每个方向上可以有x1,x2,x4,x8,x16或者x32个信号对,这些信号对称为lane。每个信号对分为TX和RX,因为是差分信号,所以每个信号对总共有四根信号,分别为TX+,TX-,RX+,RX-。一个Link有多个lane。
BMC:基板管理控制器,通过监控系统的电源、温度等来保证系统处于正常运行的状态。使用独立的Power,在系统关机时依然处于工作状态。
ARP:地址解析协议,已知一个机器的IP地址,通过ARP可找出相应的物理地址,相当于地址映射。SMBus从地址冲突可以通过给每个从设备动态分配一个新的唯一地址来解决。ARP有以下的属性:地址分配利用标准SMBus物理层仲裁机制;当设备维持供电期间,分配的地址仍保持不变,允许设备在断电时保留其地址;在地址分配后,没有额外的SMBus的打包开销(也就是说访问分配地址的设备与访问固定地址的设备所用时间是一样的);任何一个SMBus主设备可以遍历总线。
UDID:唯一的设备标识符,为了提供一种为进行地址分配目的而区分每个设备的机制,每个设备必须拥有一个唯一的设备标识符。
NC-SI:网络控制器边带接口,(type-C),简化的媒体独立接口(简化的MII),是一个由分布式管理任务组(DMTF)定义的电气接口和协议。通过 NC-SI,BMC 就可以与 CPU(操作系统)共享 NIC。
DMTF:分布式管理任务组。
MC:管理控制器。
NC:网络控制器。
PXE:用来通过网络引导系统,主要包含三个步骤:1.网络配置,通过DHCP来配置网络IP等;2.下载引导程序,上图中通过FTP来进行下载操作;3.启动引导程序。
EERD:EEPROM读取
DMA:(Direct Memory Access,直接存储器访问)。在DMA出现之前,CPU与外设之间的数据传送方式有程序传送方式、中断传送方式。CPU是通过系统总线与其他部件连接并进行数据传输。
RSS:接收端缩放。
VM:虚拟机。 VMM:虚拟机监视器,是一个系统软件,可以维护多个高效的、隔离的程序环境,该环境支持用户直接去访问真实硬件,而这样的程序环境就称为虚拟机。
TCO:总体拥有成本。(Total Cost of Ownership)
MSI: 是一种通过在内存中写入信息来产生中断的方式。(Message Signaled Interrupts)其中内存地址由设备驱动程序和硬件设备协商确定。MSI与传统的中断线不同,它不需要单独的中断线,而是通过PCI总线进行通信。
MSI-X: 是在MSI的基础上扩展的一种中断方式。(Extended Message Signaled Interrupts)它在系统的特定地址做一个memory write transation,将一个系统约定的数据写入,一次通知CPU一个中断产生了,这样就脱离了传统的interrupt pin 的约束,中断数目不再受约束。它允许设备使用多个独立的中断信号,从而提高了中断处理的效率。这对于那些需要高速响应的应用程序尤其有用,例如虚拟化或者高性能计算。MSI-X比MSI更强大,因为它允许设备使用多个中断信号,使得中断处理更加高效。然而,MSI-X需要更多的硬件资源,所以不是所有设备都能使用它。
RO:read only只读区域。 RW:读写。 RWS:读写状态。
PXE:预启动执行环境。(Pre-boot Execution Environment) 是由Intel设计的协议,提供了一种使用网络接口(Network Interface)启动计算机的机制。工作在Client/Server模式,允许客户机通过网络从远程服务器下载引导镜像,并加载安装文件或者整个操作系统。
OEM:原始设备制造商。
IA:以太网单独地址。
DWORD:双字,4字节,32位。
BAR:基址寄存器。
CSR:配置寄存器。每种寄存器有16个副本,一个寄存器对应一个队列,队列索引等于寄存器序列号。
BAM:广播接收模式
NOS:网络操作系统
VPD:重要产品数据
ARI:替代请求ID解释
TLP:处理层数据包
DLLP:数据链路层数据包
PLP:物理层数据包
MII:介质无关接口,是MAC与PHY之间的接口。MII数据接口包含16个信号和2个管理接口信号。
SMII:串行MII接口。它包括TXD,RXD,SYNC三个信号线,共用一个时钟信号,此时钟信号是125MHz,信号线与此时钟同步。
GMII:千兆MII接口。GMII采用8位接口数据,工作时钟125MHz,因此传输速率可达1000Mbps。同时兼容MII所规定的10/100 Mbps工作方式。GMII接口数据结构符合IEEE以太网标准,该接口定义见IEEE 802.3-2000。
RMII:精简MII接口,节省了一半的数据线。RMII收发使用2位数据进行传输,收发时钟均采用50MHz时钟源。
RGMII:精简GMII接口。相对于GMII相比,RGMII具有如下特征:
1.发送/接收数据线由8条改为4条
2.TX_ER和TX_EN复用,通过TX_CTL传送
3.RX_ER与RX_DV复用,通过RX_CTL传送
4.1 Gbit/s速率下,时钟频率为125MHz
5.100 Mbit/s速率下,时钟频率为25MHz
6.10 Mbit/s速率下,时钟频率为2.5MHz
NVM:非易失性存储器
BMC:板极管理控制器
ACPI:高级配置和电源接口
APM:高级电源管理
SDP:软件可定义引脚

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值