本主题介绍 NDIS 和上层驱动程序如何确定网络适配器的单根 I/O 虚拟化(SR-IOV)功能。 本主题包含以下信息:
在 MiniportInitializeEx 期间报告 SR-IOV 功能
在 MiniportInitializeEx 期间报告 SR-IOV 功能
当 NDIS 调用微型端口驱动程序的 MiniportInitializeEx 函数时,驱动程序提供以下 SR-IOV 功能:
网络适配器可以支持的完整 SR-IOV 硬件功能集。
网络适配器当前启用的 SR-IOV 功能。
微型端口驱动程序是管理网络适配器上的 PCI Express (PCIe) 物理功能 (PF) 还是虚拟功能 (VF)。
微型端口驱动程序通过以下方式初始化的 NDIS_SRIOV_CAPABILITIES 结构,报告基础网络适配器的 SR-IOV 硬件功能:
微型端口驱动程序初始化 Header 成员。 驱动程序将 Header 的 Type 成员设置为NDIS_OBJECT_TYPE_DEFAULT。
从 NDIS 6.30 开始,微型端口驱动程序会将标头的修订成员设置为 NDIS_SRIOV_CAPABILITIES _REVISION_1,并将 Size 成员设置为NDIS_SIZEOF_SRIOV_CAPABILITIES_REVISION_1。
微型端口驱动程序在 SriovCapabilities 成员中设置相应的标志,以便报告 SR-IOV 功能。
如果网络适配器支持 SR-IOV,适配器的 PCI Express (PCIe) 物理功能的微型端口驱动程序必须设置以下标志:
NDIS_SRIOV_CAPS_SRIOV_SUPPORTED
NDIS_SRIOV_CAPS_PF_MINIPORT
注意
网络适配器的 PCIe 虚拟函数 (VF) 的微型端口驱动程序必须同时设置 NDIS_SRIOV_CAPS_VF_MINIPORT 标志和 NDIS_SRIOV_CAPS_SRIOV_SUPPORTED 标志。
当 NDIS 调用微型端口驱动程序的 MiniportInitializeEx 函数时,驱动程序会按照以下步骤注册网络适配器的 SR-IOV 功能:
微型端口驱动程序初始化 NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES 结构。
微型端口驱动程序将 HardwareSriovCapabilities 成员设置为指向以前初始化的 NDIS_SRIOV_CAPABILITIES 结构的指针。
如果 *SRIOV INF 关键字的注册表设置的值为 1,则 SR-IOV 功能当前在网络适配器上启用。 微型端口驱动程序会将 CurrentSriovCapabilities 成员设置为指向相同 NDIS_SRIOV_CAPABILITIES 结构的指针。
如果 *SRIOV INF 关键字的注册表设置值为零,则 SR-IOV 功能当前在网络适配器上处于禁用状态。 微型端口驱动程序必须将 CurrentSriovCapabilities 成员设置为 NULL。
有关 *SRIOV INF 关键字的详细信息,请参阅 SR-IOV的标准化 INF 关键字。
驱动程序调用 NdisMSetMiniportAttributes,并将 MiniportAttributes 参数设置为指向 NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES 结构的指针。
有关适配器初始化过程的详细信息,请参阅 初始化微型端口适配器。
通过叠加驱动程序查询 SR-IOV 功能
NDIS 将网络适配器当前启用的 SR-IOV 功能传递给以以下方式与网络适配器绑定的上层驱动程序:
当 NDIS 调用上层筛选器驱动程序的 FilterAttach 函数时,NDIS 会通过 AttachParameters 参数传递网络适配器的 SR-IOV 能力。 此参数包含指向 NDIS_FILTER_ATTACH_PARAMETERS 结构的指针。 此结构的 SriovCapabilities 成员包含指向 NDIS_SRIOV_CAPABILITIES 结构的指针。
当 NDIS 调用上层协议驱动程序的 ProtocolBindAdapterEx 函数时,NDIS 通过 BindParameters 参数传递网络适配器的 SR-IOV 能力。 此参数包含指向 NDIS_FILTER_ATTACH_PARAMETERS 结构的指针。 此结构的 SriovCapabilities 成员包含指向 NDIS_SRIOV_CAPABILITIES 结构的指针。
当 NDIS 处理由过度协议或筛选器驱动程序发出的 OID_SRIOV_HARDWARE_CAPABILITIES 和 OID_SRIOV_CURRENT_CAPABILITIES 的对象标识符(OID)查询请求时,NDIS 还会返回 NDIS_SRIOV_CAPABILITIES 结构。