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

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

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

* PtpHardwareTimestamp INF 关键字

* SoftwareTimestamp INF 关键字

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

* PtpHardwareTimestamp INF 关键字

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

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

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

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

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

  2. 生成 NDIS_STATUS_TIMESTAMP_CURRENT_CONFIG 状态指示,报告它启用到 NDIS 的时间戳功能。 驱动程序使用 NDIS_TIMESTAMP_CAPABILITIES 结构来指定启用了哪些功能。 NDIS_TIMESTAMP_CAPABILITIES结构中对应于硬件时间戳 PtpV2OverUdpIPv4EventMsgReceiveHwTimestampFlags字段中的标志为、 PtpV2OverUdpIPv4EventMsgTransmitHwPtpV2OverUdpIPv4AllMsgTransmitHwPtpV2OverUdpIPv6EventMsgReceiveHwPtpV2OverUdpIPv4AllMsgReceiveHw 、、、、 PtpV2OverUdpIPv6AllMsgReceiveHwPtpV2OverUdpIPv6AllMsgTransmitHwAllReceiveHwPtpV2OverUdpIPv6EventMsgTransmitHwAllTransmitHw 、、、和。 TaggedTransmitHw NDIS_STATUS_TIMESTAMP_CURRENT_CONFIG状态NDIS_TIMESTAMP_CAPABILITIES结构中的CrossTimestamp字段指示是否启用了硬件交叉时间戳。

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

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

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

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

注意

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

注意

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

* PtpHardwareTimestamp 的 INF 条目

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

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

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

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

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

默认值:菜单的默认值。

下表介绍 * PtpHardwareTimestamp inf 关键字的可能 inf 条目。

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

备注

如果微型端口驱动程序找到了不受支持的 * PtpHardwareTimestamp 关键字值,则它应完全禁用硬件时间戳功能。

* SoftwareTimestamp INF 关键字

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

* SoftwareTimestamp关键字的默认设置为 "禁用",并且默认情况下应禁用微型端口中所有类型的软件时间戳支持。

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

NDIS_TIMESTAMP_CAPABILITIES结构中对应于软件时间戳的TimestampFlags字段中的标志为 AllReceiveSwAllTransmitSw 和。 TaggedTransmitSw

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

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

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

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

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

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

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

默认值:菜单的默认值。

下表介绍 * SoftwareTimestamp inf 关键字的可能 inf 条目。

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

注意

如果微型端口驱动程序找到了不受支持的 * SoftwareTimestamp 关键字值,则它应完全禁用软件时间戳功能。