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 结构。

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

NDIS_NIC_SWITCH_CAPABILITIES_REVISION_3

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

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

 

Size 成员设置为NDIS_SIZEOF_NIC_SWITCH_CAPABILITIES_REVISION_3。

NDIS_NIC_SWITCH_CAPABILITIES_REVISION_2

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

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

 

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 值,该值包含以下标志的按位 OR,用于指定 NIC 开关的功能:

NDIS_NIC_SWITCH_CAPS_RSS_ON_PF_VPORTS_SUPPORTED

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

指定 NIC 支持 PF VPorts 的 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 VPorts 的间接表大小有限制。 此标志强制 RSS OID 的颁发者使用每 PF VPort 间接表大小等于向上舍入到下一个幂的 VPort 队列数。 这仅适用于 PF VPorts,不适用于 VF VPorts。 此标志可以与NDIS_NIC_SWITCH_CAPS_ASYMMETRIC_QUEUE_PAIRS_FOR_NONDEFAULT_VPORT_SUPPORTED标志结合使用 (不同的 PF VPorts 可以具有不同的队列数) 。 此标志可防止 VMMQ 用户执行精细的队列引导。

NDIS_NIC_SWITCH_CAPS_NIC_SWITCH_WITHOUT_IOV_SUPPORTED

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

此标志通过 NDIS 6.60 引入,指定可以在不使用 SR-IOV 的情况下创建 NIC 开关。 此标志允许将 NIC 开关与 *SRIOV 关键字分开,这意味着即使 *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 虚拟端口进行 VLAN ID 筛选 (VPorts) 时,才应设置此标志。
 

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 上设置队列对数的功能。 这可能不同于在非默认 VPorts 上设置的队列对数。

注意 队列对由传输队列和接收队列组成。 在通过 OID_NIC_SWITCH_CREATE_SWITCH的 OID 方法请求创建交换机时配置与默认 VPort 关联的队列对。 一个或多个队列对通过 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,并且可以使用非默认 VPort for RSS 中的一个或多个队列对。

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

NDIS_NIC_SWITCH_CAPS_SINGLE_VPORT_POOL

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

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

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

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

MaxNumSwitches

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

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

MaxNumVPorts

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

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

NdisReserved4

保留为 NDIS。

MaxNumVFs

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

注意 根据网络适配器上的可用硬件资源,微型端口驱动程序可以将 MaxNumVFs 成员设置为小于其 *NumVFs 关键字的值。 有关此关键字的详细信息,请参阅 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 的非默认 PFVPorts 的最大数目。

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 及更高版本中受支持。
Header 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