当前位置: 首页 > news >正文

PCIe Base Specification解析(六)

在这里插入图片描述
在这里插入图片描述

文章目录

  • 3 Data Link Layer Specification
    • 3.1 Data Link Layer Overview
    • 3.2 Data Link Control and Management State Machine
      • 3.2.1 Data Link Control and Management State Machine Rules
    • 3.3 Data Link Feature Exchange
    • 3.4 Floww Control Initialization Protocol
      • 3.4.1 Flow Control Initialization State Machine Rules
      • 3.4.2 Scaled Flow Control
    • 3.5 Data Link Layer Packets (DLLPs)


3 Data Link Layer Specification

数据链路层充当事务层和物理层之间的中间阶段。它的主要职责是提供一种可靠的机制,用于在链路上的两个组件之间交换事务层数据包(TLP)。

3.1 Data Link Layer Overview

在这里插入图片描述

Figure 3-1: Layering Diagram Highlighting the Data Link Layer

数据链路层负责通过PCI Express链路可靠地将事务层提供的事务层数据包(TLP)传输到其他组件的事务层。数据链路层提供的服务包括:

数据交换(DataExchange) :

  • 在发送端接收事务层TLP,送到物理层。
  • 在接收端把物理层接收到的TLP发送给事务层。

错误检测和重试(Error Detection and Retry):

  • TLP Sequence Number 和LCRC生成。
  • 存储发送端的TLP用于链路层重试。
  • TLP和DLLP的数据链路层数据完整性检查。
  • Ack/Nak机制。
  • 错误指示,用于错误报告和日志记录机制。
  • 链路确认超时重播机制。

初始化和电源管理(Initialization and power management) :

  • 跟踪链路状态并把active/reset/disconnected等状态发送给事务层。

DLLP (Data Link Layer Packet) :

  • 用作链路管理功能的Ack/Nak DLLP、用作电源管理的DLLP和用作流控管理的DLLP。
  • DLLP在链路两侧设备的的数据链路层交换。

DLLP是点到点而不是端到端的传输。TLP是端到端传输。

DLLP和TLP的数据完整性检查是通过跨链路发送的每个数据包附带的CRC完成的。DLLP使用16位CRC,而TLP使用32位LCRC。TLP还包含一个序列号,该序列号用于检测一个或多个完整TLP是否丢失。

收到的未通过CRC检查的DLLP将被丢弃。使用DLLP的机制可能会因信息丢失而遭受性能损失,但会进行自我修复,以使后续的DLLP会取代任何丢失的信息。

数据完整性检查(LCRC检查和序列号检查)失败,或在从一个组件到另一个组件的传输中丢失了TLP,则由发送器重新发送。发送器存储所有已发送TLP的副本,并在需要时重新发送这些副本,并且仅当它从其他组件收到Ack确认后才清除这些副本。如果在指定时间段内未收到Ack,则发送器将自动开始重新发送。接收方可以使用Nak请求发送方立即重发。

数据链路层像是一个信息管道,对事务层的延迟有所不同。在任何给定的单个链路上,灌入发送数据链路层(1和3)的所有TLP 之后将以相同顺序出现在接收数据链路层(2和4)的输出处,如Figure 3-1所示。之间的延迟将取决于许多因素,包括流水线延迟、链路的宽度、工作频率、链路上电信号的传输以及由数据链路层重试引起的延迟。由于这些延迟,传输数据链路层(1和3)可以向传输事务层施加反压,而接收数据链路层(2和4)将有效信息的存在或不存在传达给接收事务层。

3.2 Data Link Control and Management State Machine

数据链路层跟踪链路的状态。它与事务层和物理层通信链路状态,并通过物理层执行链路管理。数据链路层包含执行这些任务的数据链路控制和管理状态机(DLCMSM)。该状态机的状态描述如下,如Figure 3-2所示。

状态机状态有:

  • DL_Inactive:物理层报告链路不可用或端口无连接时数据链路层处于DL_Inactive状态。
  • DL_Feature(可选):物理层报告链路可操作,执行Data Link Feature Exchange。
  • DL_Init:物理层报告链接可操作后进入DL_Init,数据链路层在DL_Init状态为默认虚通道初始化流控制。
  • DL_Active:正常操作状态。

输出的数据链路层状态有两个:

  • DL_Down:数据链路层未与链路另一侧的组件进行通信。

  • DL_Up:数据链路层正在与链路另一侧的组件进行通信。

Figure 3-2 Data Link Control and Management State Machine

3.2.1 Data Link Control and Management State Machine Rules

DL_Inactive

  • PCI Express Hot Reset、Warm Reset 或Cold Reset 后数据链路层进入该初始状态(请参阅Section 6.6)。请注意,DL状态不受FLR的影响(请参阅Section 6.6)。
  • 进入DL_Inactive时:
    • 所有数据链路层状态复位为默认值。
    • 如果端口支持可选实现的Data Link Feature Exchange,则Remote DataLink Feature Supported 字段和 Remote Data Link Feature Supported Valid 字段必须清 0。
    • 丢弃数据链路层Retry Buffer的值(see Section 3.6)。

在DL_Inactive时:

  • 向事务层以及对端设备数据链路层报告DL_Down状态。

这将导致事务层丢弃所有outstanding transaction,并在内部终止尝试发送 TLP。对于下游端口,这等效于"Hot-Remove"。。对于上游端口,使链路断开等效于Hot Reset(see Section 2.9)。

  • 丢弃来自事务层和物理层的TLP。
  • 不能生成DLLP,也不能接收DLLP。

在以下情况会退出DL_Inactive并进入DL_Feature状态:

  • 端口支持可选的Data Link Feature Exchange, Data Link Feature Exchange Enable
    字段被置1,事务层指示该链路未被软件禁用,并且物理层报告Physical LinkUp=1∼b。

退出DL_Inactive时:

  • 如果端口不支持可选实现的Data Link Feature Exchange,事务层指示该链路未被软件禁用,并且物理层报告Physical LinkUp=1b

  • 如果端口支持可选实现的Data Link Feature Exchange,则Data Link Feature Exchange Enable字段清0,事务层指示该链路未被软件禁用,并且物理层报告Physical LinkUp=1b。

DL_Feature

  • 在DL_Feature时,
    • 按Section 3.3描述的执行 Data Link Feature Exchange协议。
    • 报告DL_Down状态。
    • 允许状态为DL_Down的端口的数据链路层丢弃任何接收到的TLP,前提是它不通过发送一个或多个Ack DLLP来确认那些TLP。
  • 在以下情况会退出DL_Feature并进入DL_Init:
    • Data Link Feature Exchange 成功完成,并且物理层继续报告 Physical LinkUp=1b,or
    • Data Link Feature Exchange 确定远程数据链路层不支持可选的Data Link Feature Exchange协议,并且物理层继续报告 Physical LinkU p=1b。
  • 在下列情况下,终止Data Link Feature Exchange 协议并退出到DL_Inactive:
    • 物理层报告 Physical LinkUp=0b

DLnit

  • 在DLnit时:
    • 按照 Section 3.3 中描述的流控制初始化协议,为默认虚通道VCO初始化流控制。
    • 发送FC_INIT1 DLLP的过程中报告DL_Down状态;发送FC_INIT2 DLLP的过程中报告 DLp 状态。
    • 允许状态为 DLown 的端口的数据链路层丢弃任何接收到的TLP,前提是它不通过发送一个或多个Ack DLLP来确认那些TLP。
  • 在以下情况会退出DL_Init并进入DL_Active状态:
    • 流控制初始化成功完成,并且物理层继续报告 Physical LinkUUp=1b。
  • 在以下情况下,终止尝试初始化VCO的流控制并退出到DL_Inactive:
    • 物理层报告PhysicalLinkUp=0b。

DL_Active

  • DL_Active为正常操作状态。
  • 在DL_Active时:
    • TLP正常传输。
    • DLLP正常发送和接收。
    • 向事务层和物理层报告DL_Up状态。
  • 在下述情况退出到DL_Inactive状态:
    • 物理层报告 Physical LinkUp=0b。
    • 上游组件可以将从DL_Active到DL_Inactive的转换视为一个Surprise Down error,除非以下情况阻止了此错误检测:
      • 如果通过软件将Bridge Control寄存器中的Secondary Bus Reset字段设置为1b,则随后的向DL_Inactive的转换不得视为错误。
      • 如果软件已将Link Disable 字段设置为1b,则随后的向DL_Inactive的转换不得视为错误。
      • 如果由于该端口上方的事件而导致Switch下游端口转换为DL_Inactive,则转换到DL_Inactive不得被视为一个错误。示例事件包括:Switch 上游端口发送一个Hot Reset,Switch上游链路转换为DL_Down以及设置了Switch 上游端口中的Secondary Bus Reset字段。
      • 如果已通过此端口发送了PME_Turn_Off消息,则随后的向DL_Inactive的转换不得视为错误。
      • 请注意,只有在关闭电源,复位或恢复链路的请求发送到物理层后,才会发生这种向DL_Inactive的转换。
      • 请注意,在PME_Turn_Off/PME_TO_Ack握手未能成功完成的情况下,可能会检测到Surprise Down错误。
      • 如果端口与可热插拔插槽关联(Slot Capabilities 寄存器中的Hot-Plug Capable 设置为1b),并且Slot Capabilities 寄存器中的Hot-Plug Surprise 设置为1b,则任何向DL_Inactive的转换都不视为错误。

如果端口与可热插拔插槽关联(Slot Capabilities 寄存器中的Hot-Plug Capable 设置为1b),并且 Slot Capabilities 寄存器中的Power Controller Control 设置为1b(Off),则任何向DL_Inactive的转换都不视为错误。

由上述情况中的一种或多种引起的错误阻止必须保持有效,直到端口退出DL_Active 并随后返回DL_Active为止,而再次返回DL_Active时没有发生任何阻止情况。

请注意,从DL_Active退出只是根据错误检测阻止条件所预期的预期过渡。

如果实现,则是报告的与检测端口相关的错误(请参见Section 6.2)。

IMPLEMENTATION NOTE

Physical Layer Throttling

请注意,在某些情况下,物理层可能暂时无法接受来自数据链路层的TLP和DLLP。数据链路层必须通过为物理层提供传达此条件的机制,以及为TLP和DLLP被该条件暂时阻止的机制来理解这一点。

3.3 Data Link Feature Exchange

Data Link Feature Exchange 协议是可选实现的。实现此协议的端口会实现一个Data Link Feature Extended Capability(请参阅 Section 7.7.4)。此Capability包含四个字段:

  • Local Data Link Feature Supported 字段表示local Port支持此数据链路功能。
  • Remote Data Link Feature Supported 字段表示remote Port支持此数据链路功能。
  • Remote Data Link Feature Supported Valid 字段表示 Remote Data Link Feature Supported 字段包含有效数据。
  • Data Link Feature Exchange Enable 字段允许系统禁用 Data Link Feature Exchange。这可用于解决无法正确忽略DLLP的旧硬件的问题。

Data Link Feature Exchange 协议将 Local Port的 Feature Supported 的信息传输到Remote Port,并捕获该 Remote Port的Feature Supported的信息。

此协议的规则如下:

  • 在进入DL_Feature时:

    • Remote Data Link Feature Supported 和 Remote Data Link Feature Supported Valid 字段必须清0。
  • 在DL_Feature时:

    • 事务层必须阻塞TLP的发送。

    • 发送Data Link Feature DLLP。

      • 发送的DLLP的Feature Supported 字段必须等于Local Data Link Feature Supported字段的值。

      • 发送的DLLP的Feature Ack字段必须等于RemoteDataLinkFeatureSupported Valid字段值。

  • Data Link Feature DLLP必须每34μs至少发送一次。在Recovery或Configuration状态中花费的时间不会导致此限制。

  • 处理收到的Data Link Feature DLLP。

    • 如果 Remote Data Link Feature Supported Valid字段清0,请在Remote Data Link Feature Supported字段中记录接收到的Data Link Feature DLLP中的 Feature Supported字段的值,然后把Remote Data Link Feature Supported Valid字段设置为1。
  • 在以下情况下会退出DL_Feature:

    • 收到了一个InitFC1 DLLP。

    • 收到了一个MR-IOV MRInit DLLP(编码为00000001b)。or

    • 在DL_Feature中时,至少收到一个Feature Ack字段设置为1的Data Link Feature DLLP。

每个Data Link Feature在 Feature Supported 字段中都有一个对应的比特位。当在Local Data Link Feature Supported 和Remote Data Link Feature Supported 字段中将该位设置为“1时,将激活此Data Link Feature。

Table 3-1中显示了 Data Link Feature及其对应的比特位置。

Table 3-1 Data Link Feature Supported Bit Definition
在这里插入图片描述

3.4 Floww Control Initialization Protocol

在链路正常运行之前,有必要为默认虚通道VCO初始化流控制(Section 6.6)。此外,启用其他虚通道(VC)后,必须为每个新启用的VC完成流控制初始化过程,然后才能使用它(see Section 2.6.1)。本节介绍了用于所有VC的初始化过程。请注意,由于在所有其他VC之前先启用了VCO,所以在初始化vco之前不会有任何类型的TLP业务流处于活动状态。但是,在初始化其他VC时,通常将在其他已启用的VC上传输TLP业务流。此类业务对其他VC的初始化过程没有直接影响。

VC初始化有两个过程:

  • FC_INIT1
  • FC_INIT2

各个过程的规则如下节描述。

3.4.1 Flow Control Initialization State Machine Rules

  • 如果在VC 1-7初始化期间的任何时间禁用了VC,则终止VC的流控制初始化过程。
  • FCNIT1 状态的规则:
    • 如果需要初始化一个VC(VCx) 就进入此状态。
      • 在进入 DLnit_状态时, VCx=VCO∘
      • 当软件使能一个VC(VCx=VC1-7)时就会进入FCNIT1 (see Sections 7.9.1 and 7.9.2)。
    • 在FC_INIT1状态下:
      • 事务层必须阻止使用VCx传输TLP。
      • 按下述顺序为VCx发送以下三个InitFC1 DLLP:
        • InitFC1-P(first)
        • InitFC1-NP(second)
        • InitFC1-Cpl(third)
    • 三个InitFC1 DLLP必须每34μs至少发送一次。
      • 在Recovery或Configuration 状态消耗的时间不会导致此限制。
      • 强烈建议频繁重复InitFC1 DLLP传输,尤其是在没有其他TLP或DLLP可用于传输时。
    • 如果链路激活了Scaled Flow Control,请将InitFC1 DLLP中的HdrScale和DataScale字段设置为01b,10b或11b,以指示其在相应的HdrFC和DataFC值上使用的缩放因子。
    • 如果发送器不支持Scaled Flow Control,或者如果链路未激活 Scaled Flow Control,则将HdrScale和 DataScale字段设置为00b。
    • 除非要保证最小的传输 InitFC1 DLLP的频率,否则数据链路层不得阻止其他传输。
      • 请注意,这包括所有物理层发起的传输(例如,有序集)、Ack和Nak DLLP、以及使用先前已完成初始化的VC的TLP。
    • 处理收到的InitFC1和InitFC2 DLLP:
      • 记录其中携带的HdrFC和DataFC值。
      • 如果接收器支持 Scaled Flow Control,则记录其中的HdrScale和DataScale值。
      • 一旦记录了VCx的每个P、NP和Cpl的FCunit值,就设置标志Fl1。
    • 下述条件满足则退出FC_INIT1状态进入 FC_INIT2:
      • 已设置FI1,表示已为VCx的每个P、NP和Cpl记录了FC unit值,则进入FC_INIT2状态。

FC_INIT2状态的规则:

  • 在FC_INIT2状态时:

    • 事务层必须阻止使用VCx传输TLP。
    • 按下述顺序为VCx发送以下三个InitFC2 DLLP:
      • InitFC2-P(first)
      • InitFC2-NP (second)
      • InitFC2-Cpl (third)
    • 三个InitFC1 DLLP必须每34μs至少发送一次。
      • 在Recovery或Configuration 状态消耗的时间不会导致此限制。
      • 强烈建议频繁重复InitFC2 DLLP传输,尤其是在没有其他TLP或DLLP可用于传输时。
    • 如果链路激活了 Scaled Flow Control,请将InitFC2 DLLP中的HdrScale和DataScale字段设置为01b,10b或11b,以指示其在相应的HdrFC和DataFC值上使用的缩放因子。
    • 如果发送器不支持Scaled Flow Control,或者如果链路未激活 Scaled Flow Control,则将HdrScale和DataScale字段设置为00b。
    • 除非要保证最小的传输InitFC2 DLLP的频率,否则数据链路层不得阻止其他传输。
      • 请注意,这包括所有物理层发起的传输(例如,有序集)、Ack和Nak DLLP、以及使用先前已完成初始化的VC的TLP。
    • 处理收到的InitFC1和 InitFC2 DLLP:
      • 忽略其中携带的HdrFC、DataFC、HdrScale和DataScale的值。
      • 一旦收到任何针对VCx的InitFC2 DLLP,就设置标志FI2。
    • 在收到VCx上的任何TLP或UpdateFC DLLP时,设置标志FI2。
  • 满足下述条件则完成初始化并退出FC_INIT2:

    • FI2被设置为1。
    • 如果链路激活了Scaled Flow Control,则发送器必须在VCx的所有UpdateFC DLLP中为HdrScale和DataScale发送01b,10b或11b。
    • 如果支持 Scaled Flow Control或链路未激活 Scaled Flow Control,则发送器必须在所有VCx的UpdateFC DLLP中为 HdrScale和 DataScale 发送00b。

IMPLEMENTATION NOTE

Example of Flow Control Initialization

Figure 3-3 说明了 Switch和下游组件之间vco的流控制初始化协议的示例。在此示例中,每个组件都会为每种类型的流控制信用通告最小允许值。对于这两个组件,支持的最大Max_Payload_Size值为1024字节,对应于040h的数据有效负载信用通告。所有DLLP都显示为已收到,没有错误。

Figure 3-3 VCO Flow Control Initialization Example with 8b/10b Encoding-based Framing

3.4.2 Scaled Flow Control

如果没有足够的流控制信用额度,则可能会影响链路性能。在较高的链路速度下,这种影响会变得更加明显,而限制127个Header 信用(流控DLLP中HdrFC字段为8-Bit)和2047个Data信用(流控DLLP中DataFC字段为12-Bit)会限制性能。Scaled Flow Control 机制旨在解决此限制。(1Credit=16∼B)

Flow Control Credits 代表的是接收端VC buffer的可用空间,这个值直接影响着PCle Link的性能。Scaled Flow Control 扩展了流控DLLP,其中加入了Hdr Scale字段和 Data Scale字段,用于对Credit的数量进行成倍的放大。见Table3-2, Figure 3-7, Figure 3-8和Figure 3-9。

引入Scaled Flow Control 功能之后,PCle的Data Link也发生了相应的变化。与PCle 3.0相比,PCle多了一个"DL_Feature"状态。不过,要进入DL_Feature状态还是有条件的,需要在Data Link Feature Capabilities Register 中使能 Data Link Feature Exchange 字段。在Flow Control中,DL_Feature这个状态主要用于Scaled Flow Control 功能的握手交互(专业名称叫做Handshake)。在这个过程中,会用到一个叫做Data Link Feature DLLP。

Data Link Feature DLLP 中 Byte1 bit[7]是 Feature Ack bit,就是用来握手的,Byte 3 bit[0]也就是Feature support的bit[0]代表Scaled Flow Control 是否 support,Feature support的其他bit[22:1]目前是保留的,以备将来之用。

允许所有端口支持Scaled Flow Control。支持16.0 GT/s和更高数据速率的端口必须支持按Scaled Flow Control。Scaled Flow Control 激活不会影响以16.0GT/s和更高数据速率运行的能力。

当未为链路激活Scaled Flow Control时,以下规则适用:

  • 发送和接收的InitFC1、InitFC2和UpdateFC DLLP的HdrScale和DataScale字段必须为00b。
  • HdrFC计数器为8比特宽,且HdrFC DLLP字段包括此计数器的所有比特。
  • DataFC计数器为12比特宽,且DataFC DLLP字段包括此计数器的所有比特。

当为链路激活 Scaled Flow Control时,以下规则适用:

  • InitFC1和InitFC2 DLLP在HdrScale字段中必须包含01b、10b或11b。该值由Table3-2中定义的指定信用类型的outstanding 的最大Header信用数确定。
  • InitFC1和InitFC2 DLLP在DataScale字段中必须包含01b,10b或11b。该值由Table3-2中定义的指示信用类型的outstanding 的数据有效载荷信用的最大数量确定。
  • 如果在状态FC_INIT1中记录的接收到的HdrScale和DataScale值不为零,则在此VC上启用Scaled Flow Control,并且UpdateFC DLLP在HdrScale和DataScale字段中必须包含01b,10b或11b。
  • 如果在状态FC_INIT1中记录的接收到的HdrScale和DataScale值为零,则在此Vc上未启用Scaled Flow Control,并且 UpdateFC DLLP在HdrScale和DataScale字段中必须包含00b。

Table 3-2: Scaled Flow Control Scaling Factors
在这里插入图片描述
在这里插入图片描述

3.5 Data Link Layer Packets (DLLPs)

以下DLLP用于支持链路操作:

  • Ack DLLP:TLP Sequence number 应答;用于指示成功接收到一定数量的TLP。
  • Nak DLLP: TLP Sequence number 否定确认;用于启动数据链路层重试。
  • InitFC1、InitFC2和UpdateFC DLLP:用于流控制。
  • 电源管理DLLP。

3.5.1 Data Link Layer Packet Rules

形成DLLP时,所有标记为“Reserved”(缩写为R)的DLLP字段都必须用全0填充。接收者必须忽略此类字段中的值。每种情况都指定了编码字段中保留值的处理。

所有DLLP都包括以下字段,如Figure 3-4:

  • DLLP Type-DLLP类型编码字段,如Table 3-3。
  • 16-bit CRC字段。

Figure 3-4 DLLP Type and CRC Fields

Table 3-3: DLLP Type Encodings
在这里插入图片描述
在这里插入图片描述

  • 对Ack和Nak DLLP (see Figure 3-5) :
    • AckNak_Seq_Num字段用于指示哪些TLP受到影响。
    • 数据链路层根据Section 3.6中提供的规则发送和接收。
  • 对于InitFC1、InitFC2 和 UpdateFC DLLP:
    • HdrFC字段指P、NP或Cpl类型报头的信用值。
    • DataFC字段指P、NP或Cpl类型数据负载的信用值。
    • HdrScale 字段包含对应类型的Header的缩放因子。编码在Table 3-4中定义。
    • DataScale 字段包含对应类型的有效负载数据的缩放因子。编码在Table 3-4中定义。

在这里插入图片描述

  • 如果激活了Scaled Flow Control,则必须在所有传输的InitFC1,InitFC2和UpdateFC DLLP中将 HdrScale和DataScale字段设置为01b,10b或11b。

  • 在UpdateFC中,仅允许发送器在支持Scaled FlowControl的情况下在HdrScale和DataScale字段中发送非零值,并且在此VC的InitFC1和InitFC2中接收到HdrScale和DataScale的非零值。

  • InitFC1、InitFC2和UpdateFC DLLP包格式如 Figure 3-7、Figure 3-8和Figure 3-9所示。

  • 当数据链路层初始化虚通道的流控制(请参见Section 3.4),事务层根据Section2.6中的规则对流控制进行初始化后,触发传输。

  • 在数据链路层接收时检查完整性,如果正确,则将DLLP的信息内容传递到事务层。如果检查失败,则信息将被丢弃。

电源管理DLLP (see Figure 3-10) :

  • 根据Chapter 5中的电源管理逻辑规则触发。

  • 在数据链路层接收时检查完整性,然后传递到组件的电源管理逻辑。

Vendor Specific DLLP (see Figure 3-11):

  • 建议接收者静默丢弃Vendor Specific DLLP,除非由特定于实现的机制启用。

  • 建议发送者不要发送Vendor Specific DLLP,除非由特定于实现的机制启用。

NOP DLLP (see Figure 3-6)

  • 接收者应在检查DLLP的数据完整性后不采取任何措施并将其丢弃。

    注:这是不支持DLLP Type 编码的更通用规则的特殊情况(请参见Section 3.6.2.2)。

Data Link Feature DLLP (see Figure 3-12)

  • Feature Ack字段设置为1表示发送端口已接收到一个Data Link Feature DLLP。

    • Feature Supported字段表示发送端口支持的feature。这些位等于Local Data Link Feature Supported 字段的值(请参见Section 7.7.4.2)。

OM13781A

Figure 3-5 Data Link Layer Packet Format for Ack and Nak

NOPDataLinkPktFmt

Figure 3-6 NOP Data Link Layer Packet Format

OM13782B

Figure 3-7 Data Link Layer Packet Format for InitFC1

OM13783B

Figure 3-8 Data Link Layer Packet Format for InitFC2

OM13784B

Figure 3-9 Data Link Layer Packet Format for UpdateFC

OM14304A

Figure 3-10 PM Data Link Layer Packet Format

OM14305A

Figure 3-11 Vendor-specific Data Link Layer Packet Format

以下是与数据链路层数据包(DLLP)相关的特征和规则:

  • 当DLLP呈现给物理层或从物理层接收时,它们与TLP不同。

  • DLLP使用一个16-bit的CRC保护DLLP完整性。

  • 该16-bit CRC计算规则如下(see Figure 3-13) :

    • 用于CRC计算的多项式的系数表示为100Bh。

    • seed值为FFFFh。

    • CRC计算从byte0的bit0开始,从每个字节的bit0到bit 7。

    • 请注意,CRC计算使用DLLP的所有位,而与字段类型无关,包括保留字段。计算结果经过补充,然后放入DLLP的16位CRC字段中,如Table3-5所示。

Table 3-5 Mapping of Bits into CRC Field
在这里插入图片描述

在这里插入图片描述

http://www.dtcms.com/a/316329.html

相关文章:

  • 五、逐波限流保护电路-硬件部分
  • 从零搭建Cloud Alibaba (下) Sentinel篇
  • VUE-第二季-02
  • Sentinel全面实战指南
  • 制作一款打飞机游戏85:Hyper模式
  • JavaScript:Proxy 代理
  • 【数据结构初阶】--排序(三):冒泡排序,快速排序
  • 编码器模型和解码器模型解析
  • MongoDB学习专题(一)介绍安装基本操作
  • ✨OpenVoice 全流程实战:多语言语音合成系统安装与使用教程(附踩坑经验)
  • Makefile工具、双向链表
  • xshell、xftp使用案例
  • 【2025年8月5日】将运行一段时间的单机MongoDB平滑迁移至副本集集群
  • java回顾八股文中想起的知识点
  • 为什么不用rocketmq直接发送,用StreamBridge
  • 使用Playwright MCP探索网站并编写测试
  • 解锁n8n:开启自动化工作流的无限可能
  • 面试题:vue3使用proxy相较于vue2的优点在哪里
  • 03-基于深度学习的钢铁缺陷检测-yolo11-彩色版界面
  • postman接口测试实战
  • 鸿蒙组件装饰器深度解析:@Component vs @ComponentV2
  • 【实时Linux实战系列】基于实时Linux的智能交通系统设计
  • 数据结构---Makefile 文件(格式、文件变量、调用、伪目标)、gcc编译的四个步骤、双向链表(概念、作用、应用)
  • 若依vue前端处理日期数据的格式问题(只留下年月日,去掉时分秒)
  • 小易的yolo学习笔记2
  • AlexNet训练和测试FashionMNIST数据集
  • 系统启动项管理工具对美国服务器性能基线的验证标准
  • Rust进阶-part4-智能指针2
  • 真正的多模态上下文学习需要关注视觉上下文
  • 人工智能领域、图欧科技、IMYAI智能助手2025年1月更新月报