NDIS 数据包时间戳的标准化 INF 关键字

INF 文件可以定义以下标准化 INF 关键字,以启用或禁用微型端口驱动程序和 NIC 硬件支持的时间戳功能。

微型端口驱动程序可以使用这些关键字来确定时间戳功能的当前配置。 例如,驱动程序可以在初始化期间读取这些关键字 (keyword) 值,以确定启用了哪些时间戳功能,因此驱动程序可以使用。

*PtpHardwareTimestampINF 关键字 (keyword)

*SoftwareTimestampINF 关键字 (keyword)

有关标准化 INF 关键字的详细信息,请参阅 网络设备的标准化 INF 关键字

*PtpHardwareTimestamp INF 关键字 (keyword)

*PtpHardwareTimestamp 关键字 (keyword) 定义为启用或禁用对使用 UDP 作为传输 (PTP) 版本 2 数据包的硬件时间戳的支持。

禁用了 *PtpHardwareTimestamp 关键字 (keyword) 的默认设置,默认情况下,微型端口驱动程序应禁用 NIC 硬件中所有类型的硬件时间戳支持。

微型端口驱动程序读取 *PtpHardwareTimestamp 关键字 (keyword) 值,以确定当前是启用或禁用硬件时间戳。

如果 启用了 *PtpHardwareTimestamp ,微型端口驱动程序应:

  1. 在 NIC 硬件中启用相关硬件时间戳功能。

  2. 生成 NDIS_STATUS_TIMESTAMP_CURRENT_CONFIG 状态指示,以将其启用的时间戳功能报告给 NDIS。 驱动程序使用 NDIS_TIMESTAMP_CAPABILITIES 结构来指定它启用的功能。 与硬件时间戳对应的 NDIS_TIMESTAMP_CAPABILITIES 结构中的 TimestampFlags 字段中的标志为 PtpV2OverUdpIPv4EventMsgReceiveHw、、PtpV2OverUdpIPv4AllMsgReceiveHwPtpV2OverUdpIPv4EventMsgTransmitHwPtpV2OverUdpIPv6AllMsgReceiveHwPtpV2OverUdpIPv6EventMsgReceiveHwPtpV2OverUdpIPv4AllMsgTransmitHwPtpV2OverUdpIPv6EventMsgTransmitHwPtpV2OverUdpIPv6AllMsgTransmitHw、、 AllReceiveHwAllTransmitHw 和 。TaggedTransmitHw NDIS_STATUS_TIMESTAMP_CURRENT_CONFIG状态NDIS_TIMESTAMP_CAPABILITIES结构中的 CrossTimestamp 字段指示是否启用了硬件交叉时间戳。

启用 *PtpHardwareTimestamp 后,微型端口应启用某种形式的功能,以便通过 UDP 为 PTP 版本 2 的 Rx 和 Tx 生成硬件时间戳。 如果硬件支持,微型端口还应启用硬件交叉时间戳功能。

微型端口驱动程序应在硬件中启用的特定硬件时间戳功能取决于 NIC 硬件的功能。 例如,如果 NIC 硬件仅支持 PtpV2OverUDPIPv4EventMsgReceiveHwPtpV2OverUDPIPv6EventMsgReceiveHwTaggedTransmitHw 功能,则如果启用了 *PtpHardwareTimestamp 关键字 (keyword) ,微型端口可以打开这些硬件时间戳功能。

如果 NIC 硬件支持多种形式的硬件时间戳功能,这些功能可以启用基于 UDP 的 PTP 版本 2 方案,则 IHV 应考虑其硬件和性能影响等问题,以确定微型端口应启用哪些功能。 例如,硬件可能能够生成 和 TaggedTransmitHwAllTransmitHw时间戳。 如果打开 AllTransmitHw 比启用 TaggedTransmitHw更昂贵,则 IHV 可以选择仅启用 TaggedTransmitHw Tx 的功能。

在所有情况下,微型端口驱动程序都应使用 NDIS_STATUS_TIMESTAMP_CURRENT_CONFIG 状态指示准确报告它启用或禁用的硬件时间戳功能。

注意

不支持通过原始以太网进行 PTP。 启用支持基于 UDP 的 PTP 时,IHV 需要确定通过原始以太网数据包处理 PTP 的最有效方法是什么。

注意

PTP 版本 1 无需支持。 如果 NIC 硬件还支持 PTP 版本 1,则在支持 PTP 版本 2 时,IHV 需要确定处理 PTP 版本 1 数据包的最有效方法。

*PtpHardwareTimestamp 的 INF 条目

*PtpHardwareTimestamp INF 关键字 (keyword) 是枚举关键字 (keyword) 。 枚举标准化 INF 关键字具有以下属性:

SubkeyName:必须在 INF 文件中指定的关键字 (keyword) 的名称。

ParamDesc:与 SubkeyName 关联的显示文本。

值:与列表中每个 SubkeyName 关联的枚举整数值。

EnumDesc:与菜单中显示的每个值关联的显示文本。

默认值:菜单的默认值。

下表描述了 *PtpHardwareTimestamp INF 关键字 (keyword) 可能的 INF 条目。

SubkeyName ParamDesc EnumDesc
*PtpHardwareTimestamp PTP 硬件时间戳 0(默认值) 已禁用
1 已启用

备注

如果微型端口驱动程序发现 *PtpHardwareTimestamp 关键字 (keyword) 不支持的值,则应完全禁用硬件时间戳功能。

*SoftwareTimestamp INF 关键字 (keyword)

*SoftwareTimestamp 关键字 (keyword) 对应于微型端口驱动程序能够进行时间戳的软件类型。 微型端口驱动程序使用此关键字 (keyword) 的配置值来确定当前已启用哪些受支持的软件时间戳功能。

*SoftwareTimestamp 关键字 (keyword) 的默认设置处于禁用状态,默认情况下应禁用微型端口中所有类型的软件时间戳支持。

微型端口生成 NDIS_STATUS_TIMESTAMP_CURRENT_CONFIG 状态指示,以通知 NDIS 当前启用的各种时间戳功能。

与软件时间戳对应的 NDIS_TIMESTAMP_CAPABILITIES 结构中的 TimestampFlags 字段中的标志为 AllReceiveSwAllTransmitSwTaggedTransmitSw

如果 *SoftwareTimestamp 关键字 (keyword) 包含一个值,该值指示已启用某些软件时间戳配置,则微型端口应启用配置的软件时间戳功能,并生成NDIS_STATUS_TIMESTAMP_CURRENT_CONFIG状态指示,以准确报告已启用的软件时间戳功能。

如果微型端口不支持任何类型的软件时间戳,则不应在其 INF 文件中包括 *SoftwareTimestamp 关键字 (keyword) 。

*SoftwareTimestamp INF 关键字 (keyword) 是枚举关键字 (keyword) 。 枚举标准化 INF 关键字具有以下属性:

SubkeyName:必须在 INF 文件中指定的关键字 (keyword) 的名称。

ParamDesc:与 SubkeyName 关联的显示文本。

值:与列表中每个 SubkeyName 关联的枚举整数值。

EnumDesc:与菜单中显示的每个值关联的显示文本。

默认值:菜单的默认值。

下表介绍了 *SoftwareTimestamp INF 关键字 (keyword) 可能的 INF 条目。

SubkeyName ParamDesc EnumDesc
*SoftwareTimestamp 软件时间戳 0(默认值) 已禁用
1 RxAll:此枚举值对应于微型端口驱动程序功能,用于在 Rx 期间为所有数据包生成软件时间戳。
2 TxAll:此枚举值对应于在 Tx 期间为所有数据包生成软件时间戳的微型端口驱动程序功能。
3 RxAll & TxAll:此枚举值对应于微型端口驱动程序功能,用于在 Rx 和 Tx 期间为所有数据包生成软件时间戳。
4 TagedTx:此枚举值对应于微型端口驱动程序功能,当操作系统指示为特定 Tx 数据包生成软件时间戳时。
5 RxAll & TaggedTx:此枚举值对应于微型端口驱动程序功能,用于在 Rx 期间生成所有数据包的软件时间戳,并在操作系统指示这样做时为特定 Tx 数据包生成软件时间戳。

注意

如果微型端口驱动程序发现 *SoftwareTimestamp 关键字 (keyword) 不支持的值,则应完全禁用软件时间戳功能。