NDIS_NIC_SWITCH_CAPABILITIES 结构 (ntddndis.h)

NDIS_NIC_SWITCH_CAPABILITIES结构指定网络适配器上 NIC 交换机的功能。

语法

typedef struct _NDIS_NIC_SWITCH_CAPABILITIES {
  NDIS_OBJECT_HEADER Header;
  ULONG              Flags;
  ULONG              NdisReserved1;
  ULONG              NumTotalMacAddresses;
  ULONG              NumMacAddressesPerPort;
  ULONG              NumVlansPerPort;
  ULONG              NdisReserved2;
  ULONG              NdisReserved3;
  ULONG              NicSwitchCapabilities;
  ULONG              MaxNumSwitches;
  ULONG              MaxNumVPorts;
  ULONG              NdisReserved4;
  ULONG              MaxNumVFs;
  ULONG              MaxNumQueuePairs;
  ULONG              NdisReserved5;
  ULONG              NdisReserved6;
  ULONG              NdisReserved7;
  ULONG              MaxNumQueuePairsPerNonDefaultVPort;
  ULONG              NdisReserved8;
  ULONG              NdisReserved9;
  ULONG              NdisReserved10;
  ULONG              NdisReserved11;
  ULONG              NdisReserved12;
  ULONG              MaxNumMacAddresses;
  ULONG              NdisReserved13;
  ULONG              NdisReserved14;
  ULONG              NdisReserved15;
  ULONG              NdisReserved16;
  ULONG              NdisReserved17;
  ULONG              MaxNumRssCapableNonDefaultPFVPorts;
  ULONG              NumberOfIndirectionTableEntriesForDefaultVPort;
  ULONG              NumberOfIndirectionTableEntriesPerNonDefaultPFVPort;
  ULONG              MaxNumQueuePairsForDefaultVPort;
} NDIS_NIC_SWITCH_CAPABILITIES, *PNDIS_NIC_SWITCH_CAPABILITIES;

成员

Header

NDIS_NIC_SWITCH_CAPABILITIES结构的类型、修订和大小。 此成员的格式设置为 NDIS_OBJECT_HEADER 结构。

微型端口驱动程序必须将 HeaderType 成员设置为NDIS_OBJECT_TYPE_DEFAULT。 若要指定 NDIS_NIC_SWITCH_CAPABILITIES 结构的版本,驱动程序必须将 HeaderRevision 成员设置为以下值之一:

NDIS_NIC_SWITCH_CAPABILITIES_REVISION_3

为 NDIS 6.60 添加了 RSS 接口成员。

注意此结构的修订版 3 仅在 Windows Server 2016 及更高版本的 Windows Server 上受支持。

 

Size 成员设置为NDIS_SIZEOF_NIC_SWITCH_CAPABILITIES_REVISION_3。

NDIS_NIC_SWITCH_CAPABILITIES_REVISION_2

为 NDIS 6.30 添加了单根 I/O 虚拟化 (SR-IOV) 接口成员。

注意此结构的修订版 2 仅在 Windows Server 2012 及更高版本的 Windows Server 上受支持。

 

Size 成员设置为 NDIS_SIZEOF_NIC_SWITCH_CAPABILITIES_REVISION_2。

NDIS_NIC_SWITCH_CAPABILITIES_REVISION_1

NDIS 6.20 的原始版本。

Size 成员设置为 NDIS_SIZEOF_NIC_SWITCH_CAPABILITIES_REVISION_1。

Flags

包含标志的按位 OR 的 ULONG 值。 此成员是为 NDIS 保留的。

NdisReserved1

为 NDIS 保留。

NumTotalMacAddresses

一个 ULONG 值,该值包含网络适配器支持的媒体访问控制 (MAC) 地址总数。

注意 对于此结构的修订版 2 和更高版本,驱动程序必须将此成员设置为零。
 

NumMacAddressesPerPort

一个 ULONG 值,该值包含每个端口支持的 MAC 地址数。

注意 对于此结构的修订版 2 和更高版本,驱动程序必须将此成员设置为零。
 

NumVlansPerPort

一个 ULONG 值,该值包含每个端口支持的 VLAN 数。

注意 对于此结构的修订版 2 和更高版本,驱动程序必须将此成员设置为零。
 

NdisReserved2

为 NDIS 保留。

NdisReserved3

为 NDIS 保留。

NicSwitchCapabilities

一个 ULONG 值,该值包含指定 NIC 开关功能的以下标志的按位 OR:

NDIS_NIC_SWITCH_CAPS_RSS_ON_PF_VPORTS_SUPPORTED

注意Windows Server 2016 及更高版本中支持此标志。 它在 NDIS 6.60 中引入。

指定 NIC 支持 PF VPort 的 VMMQ。

NDIS_NIC_SWITCH_CAPS_RSS_PER_PF_VPORT_INDIRECTION_TABLE_SUPPORTED

注意Windows Server 2016 及更高版本中支持此标志。 它在 NDIS 6.60 中引入。

如果设置为 1,则指定 NIC 能够维护每个 PF VPort 间接表。

NDIS_NIC_SWITCH_CAPS_RSS_PER_PF_VPORT_HASH_FUNCTION_SUPPORTED

注意Windows Server 2016 及更高版本中支持此标志。 它在 NDIS 6.60 中引入。

如果设置为 1,则指定 NIC 支持为每个 PF VPort 设置不同的哈希函数。 如果设置了此标志,还必须设置 NDIS_NIC_SWITCH_CAPS_RSS_PER_PF_VPORT_HASH_KEY_SUPPORTED

NDIS_NIC_SWITCH_CAPS_RSS_PER_PF_VPORT_HASH_TYPE_SUPPORTED

注意Windows Server 2016 及更高版本中支持此标志。 它在 NDIS 6.60 中引入。

如果设置为 1,则指定 NIC 支持为每个 PF VPort 设置不同的哈希类型。

NDIS_NIC_SWITCH_CAPS_RSS_PER_PF_VPORT_HASH_KEY_SUPPORTED

注意Windows Server 2016 及更高版本中支持此标志。 它在 NDIS 6.60 中引入。

如果设置为 1,则指定 NIC 支持为每个 PF VPort 设置不同的哈希密钥。 如果设置了 NDIS_NIC_SWITCH_CAPS_RSS_PER_PF_VPORT_HASH_FUNCTION_SUPPORTED ,则必须设置此标志。

NDIS_NIC_SWITCH_CAPS_RSS_PER_PF_VPORT_INDIRECTION_TABLE_SIZE_RESTRICTED

注意Windows Server 2016 及更高版本中支持此标志。 它在 NDIS 6.60 中引入。

如果设置为 1,则指定 NIC 对 PF VPort 的间接表大小有限制。 此标志强制 RSS OID 的颁发者使用每 PF VPort 间接表大小等于向上舍入到下一个 2 幂的 VPort 队列数。 这仅适用于 PF VPort,不适用于 VF VPort。 此标志可以与 NDIS_NIC_SWITCH_CAPS_ASYMMETRIC_QUEUE_PAIRS_FOR_NONDEFAULT_VPORT_SUPPORTED 标志结合使用, (不同的 PF VPort 可以具有不同数量的队列) 。 此标志阻止 VMMQ 用户执行精细队列引导。

NDIS_NIC_SWITCH_CAPS_NIC_SWITCH_WITHOUT_IOV_SUPPORTED

注意Windows Server 2016 及更高版本中支持此标志。

此标志由 NDIS 6.60 引入,指定无需使用 SR-IOV 即可创建 NIC 交换机。 此标志允许将 NIC 开关与 *SRIOV 关键字 (keyword) 分开,这意味着即使 *SRIOV = 0,也可以通过 OID_NIC_SWITCH_CREATE_SWITCH 创建 NIC 开关。

有关报告 NDIS 6.60 及更高版本微型端口驱动程序的 NIC 交换机功能的详细信息,请参阅 确定 NIC 交换机功能

NDIS_NIC_SWITCH_CAPS_VLAN_SUPPORTED

此标志指定 NIC 交换机支持基于虚拟局域网 (VLAN) 标识符 (ID) 的硬件数据包筛选。

注意 仅当 NIC 交换机支持在单个 SR-IOV 虚拟端口 (VPorts) 上筛选 VLAN ID 时,才应设置此标志。
 

NDIS_NIC_SWITCH_CAPS_PER_VPORT_INTERRUPT_MODERATION_SUPPORTED

此标志指定 NIC 交换机可以支持单个 VPort 上的中断审查配置。

NDIS_NIC_SWITCH_CAPS_ASYMMETRIC_QUEUE_PAIRS_FOR_NONDEFAULT_VPORT_SUPPORTED

此标志指定 NIC 交换机可以为每个非默认 VPort 配置不同数量的队列对。 这意味着每个非默认 VPort 都可以配置为具有不同数量的队列对。

如果未设置此标志,则必须以对称方式将所有非默认 VPort 配置为具有相同数量的队列对。

无论是否设置此标志,NIC 交换机都必须支持在默认 VPort 上设置队列对数的功能。 这可能不同于在非默认 VPort 上设置的队列对数。

注意 队列对由传输队列和接收队列组成。 与默认 VPort 关联的队列对是在创建交换机时通过 OID_NIC_SWITCH_CREATE_SWITCH 的 OID 方法请求配置的。 通过OID_NIC_SWITCH_CREATE_VPORT的 OID 方法请求,在非默认 VPort 上配置一个或多个队列对。
 
有关详细信息,请参阅 队列对的对称和非对称分配

NDIS_NIC_SWITCH_CAPS_VF_RSS_SUPPORTED

此标志指定附加到 PCI Express (PCIe) Virtual Function (VF) 的非默认 VPort 的队列对可用于接收方缩放 (RSS) 。 VF 微型端口驱动程序在 Hyper-V 子分区的来宾操作系统中运行。

如果设置了此标志,微型端口驱动程序支持 VF 上的 RSS,并且可以使用 RSS 的非默认 VPort 中的一个或多个队列对。

注意从 Windows Server 2012 开始,只能将一个非默认 VPort 附加到 VF。
 

NDIS_NIC_SWITCH_CAPS_SINGLE_VPORT_POOL

此标志指定可以从网络适配器上的 VPort 池以非保留方式创建非默认 VPort。 这允许根据需要创建可用的非默认 VPort 并将其分配给 PF 和分配的 VF。 如果网络适配器支持虚拟机队列 (VMQ) 接口,则分配给 PF 的非默认 VPort 也可用于 VM 接收队列。

注意 默认 VPort 始终保留,以便分配给 PF。
 
如果设置了此标志,则会创建可用的非默认 VPort 并将其分配给 PF 和分配的 VF。 但是,此机制不会为 VF 创建和分配保留非默认 VPort。 因此,如果池已耗尽可用 VPort,则可能会出现以下情况:如果池已耗尽可用 VPort,则可能无法为 VF 分配 VPort。
注意 如果无法为 VF 分配 VPort,则通过 VF 的数据包流量通过 SR-IOV 综合数据路径发生。 有关此数据路径的详细信息,请参阅 SR-IOV 数据路径
 
如果未设置此标志,则为 VF 分配保留非默认 VPort 的创建和分配。 可以创建其他非默认 VPort 并将其分配给 PF。

有关 VMQ 的详细信息,请参阅 虚拟机队列 (VMQ)

有关 VPort 的详细信息,请参阅 管理虚拟端口

MaxNumSwitches

一个 ULONG 值,该值指定可在网络适配器的 PCI Express (PCIe) 物理功能 (PF) 上创建的最大交换机数。

注意从 Windows Server 2012 开始,Windows 仅支持网络适配器上的默认 NIC 开关。 因此,必须始终将此成员设置为 1。
 

MaxNumVPorts

一个 ULONG 值,该值指定可在网络适配器上创建的最大 VPort 数。 这包括始终附加到 PF 的默认 VPort。

注意 NIC 交换机必须至少支持 (MaxNumVFs + 1) VPort。
 

NdisReserved4

为 NDIS 保留。

MaxNumVFs

一个 ULONG 值,该值指定可在 NIC 交换机上创建的最大 VF 数。

注意根据网络适配器上的可用硬件资源,微型端口驱动程序可以将 MaxNumVFs 成员设置为小于其 *NumVF 关键字 (keyword) 的值。 有关此关键字 (keyword) 的详细信息,请参阅 SR-IOV 的标准化 INF 关键字
 

MaxNumQueuePairs

一个 ULONG 值,该值指定可分配给所有 VPort 的最大队列对数。 这包括附加到 PF 的默认 VPort。

注意 此值必须大于或等于 MaxNumVPorts 的值
 

NdisReserved5

为 NDIS 保留。

NdisReserved6

为 NDIS 保留。

NdisReserved7

为 NDIS 保留。

MaxNumQueuePairsPerNonDefaultVPort

一个 ULONG 值,该值指定可分配给非默认 VPort 的最大队列对数。

此值以 2 的幂指定,用于非对称配置和将队列对分配到 VPorts。 有关详细信息,请参阅 队列对的对称和非对称分配

NdisReserved8

为 NDIS 保留。

NdisReserved9

为 NDIS 保留。

NdisReserved10

为 NDIS 保留。

NdisReserved11

为 NDIS 保留。

NdisReserved12

为 NDIS 保留。

MaxNumMacAddresses

一个 ULONG 值,该值指定 NIC 交换机上可用的单播 MAC 地址筛选器的最大数目。

注意 此值必须大于或等于 MaxNumVPorts 的值。 这样,每个 VPort ((包括默认 VPort) )都可以配置为至少具有一个单播 MAC 地址筛选器。
 

NdisReserved13

为 NDIS 保留。

NdisReserved14

为 NDIS 保留。

NdisReserved15

为 NDIS 保留。

NdisReserved16

为 NDIS 保留。

NdisReserved17

为 NDIS 保留。

MaxNumRssCapableNonDefaultPFVPorts

一个 ULONG 值,该值指定支持 RSS 的非默认 PFVPort 的最大数目。

NumberOfIndirectionTableEntriesForDefaultVPort

一个 ULONG 值,该值指定默认 VPort 的间接表条目数。

NumberOfIndirectionTableEntriesPerNonDefaultPFVPort

一个 ULONG 值,该值指定每个非默认 PFVPort 的间接表条目数。

MaxNumQueuePairsForDefaultVPort

一个 ULONG 值,该值指定可分配给默认 VPort 的最大队列对数。

此值以 2 的幂指定,用于非对称配置和将队列对分配到 VPorts。 有关详细信息,请参阅 队列对的对称和非对称分配

注解

NDIS_NIC_SWITCH_CAPABILITIES 结构用于以下结构的成员:

OID_NIC_SWITCH_CURRENT_CAPABILITIES 和 的 OID 查询请求 OID_NIC_SWITCH_HARDWARE_CAPABILITIES 返回 NDIS_NIC_SWITCH_CAPABILITIES 结构。

要求

要求
最低受支持的客户端 在 NDIS 6.20 及更高版本中受支持。
标头 ntddndis.h (包括 Ndis.h)

另请参阅

NDIS_BIND_PARAMETERS

NDIS_FILTER_ATTACH_PARAMETERS

NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES

NDIS_OBJECT_HEADER

OID_NIC_SWITCH_CREATE_VPORT

OID_NIC_SWITCH_CURRENT_CAPABILITIES

OID_NIC_SWITCH_HARDWARE_CAPABILITIES