NDIS_RECEIVE_SCALE_CAPABILITIES结构 (ntddndis.h)

NDIS_RECEIVE_SCALE_CAPABILITIES结构指定微型端口适配器的接收端缩放 (RSS) 功能。

语法

typedef struct _NDIS_RECEIVE_SCALE_CAPABILITIES {
  NDIS_OBJECT_HEADER  Header;
  NDIS_RSS_CAPS_FLAGS CapabilitiesFlags;
  ULONG               NumberOfInterruptMessages;
  ULONG               NumberOfReceiveQueues;
  USHORT              NumberOfIndirectionTableEntries;
} NDIS_RECEIVE_SCALE_CAPABILITIES, *PNDIS_RECEIVE_SCALE_CAPABILITIES;

成员

Header

NDIS_RECEIVE_SCALE_CAPABILITIES结构的NDIS_OBJECT_HEADER结构。 设置 Header 指定要NDIS_OBJECT_TYPE_RSS_CAPABILITIES的结构的类型成员。

对于 NDIS 6.60 及更高版本,请将 修订 成员设置为 NDIS_RECEIVE_SCALE_CAPABILITIES_REVISION_3 ,将 Size 成员设置为 NDIS_SIZEOF_RECEIVE_SCALE_CAPABILITIES_REVISION_3

对于 NDIS 6.30 及更高版本,请将 修订 成员设置为 NDIS_RECEIVE_SCALE_CAPABILITIES_REVISION_2 ,将 Size 成员设置为 NDIS_SIZEOF_RECEIVE_SCALE_CAPABILITIES_REVISION_2

对于 NDIS 6.0、6.1 和 6.20,请将 修订 成员设置为 NDIS_RECEIVE_SCALE_CAPABILITIES_REVISION_1 ,将 Size 成员设置为 NDIS_SIZEOF_RECEIVE_SCALE_CAPABILITIES_REVISION_1

CapabilitiesFlags

指定 NIC 的 RSS 功能的标志的位掩码。 微型端口驱动程序可以指定以下标志:

含义
NDIS_RSS_CAPS_MESSAGE_SIGNALED_INTERRUPTS
如果 NIC 支持消息信号中断 (MSIs) ,请设置此标志。 此标志指示 NIC 可以在将分配给该 CPU 的数据包排队后为每个 CPU 生成单独的中断。
NDIS_RSS_CAPS_CLASSIFICATION_AT_ISR
如果 NIC 可以向 MiniportInterrupt 函数指示目标 CPU 已排队接收的数据包,则设置此标志。
NDIS_RSS_CAPS_USING_MSI_X
如果 NIC 使用消息信号中断 (MSIs) ,请设置此标志。 NDIS 6.20 及更高版本中支持此标志。
NDIS_RSS_CAPS_SUPPORTS_MSI_X
如果 NIC 支持 MSIS,请设置此标志。 NDIS 6.30 及更高版本中支持此标志。
NDIS_RSS_CAPS_CLASSIFICATION_AT_DPC
如果微型端口驱动程序可以检测哪些目标 CPU 已从 其 MiniportInterruptDPC 函数排队接收数据包,请设置此标志。
NDIS_RSS_CAPS_HASH_TYPE_TCP_IPV4
如果 NIC 可以使用或不使用选项 (标识 IPv4 数据包) ,请设置此标志。 此外,NIC 还支持通过 IPv4 标头字段和 TCP 标头字段计算哈希值。
NDIS_RSS_CAPS_HASH_TYPE_TCP_IPV6
如果 NIC 可以标识 IPv6 数据包,并在 IPv6 数据包中的字段上计算哈希值,请设置此标志。 NIC 必须能够对基本 IPv6 标头中的字段和 TCP 标头中的字段计算哈希值。 如果 NIC 无法计算位于 IPv6 扩展标头中的字段的哈希值,请使用此标志。
NDIS_RSS_CAPS_HASH_TYPE_TCP_IPV6_EX
如果 NIC 可以标识 IPv6 数据包,并在包含 IPv6 扩展标头的 IPv6 数据包中的字段上计算哈希值,则设置此标志。 NIC 可以基于基本 IPv6 标头、IPv6 扩展标头和 TCP 标头中的字段计算哈希值。 NIC 必须能够在主地址选项中的字段和 IPv6 扩展标头中的类型 2 路由标头上计算哈希值。
NDIS_RSS_CAPS_HASH_TYPE_UDP_IPV4
如果 NIC 可以标识 IPv4 数据包(包含或不带选项)以及 NIC 是否支持计算 IPv4 标头字段和 UDP 标头字段的哈希值,则设置此标志。
NDIS_RSS_CAPS_HASH_TYPE_UDP_IPV6
如果 NIC 可以标识 IPv6 数据包,并在 IPv6 数据包中的字段上计算哈希值,请设置此标志。 NIC 必须能够基于基本 IPv6 标头中的字段和 UDP 标头中的字段计算哈希值。 如果 NIC 无法计算位于 IPv6 扩展标头中的字段的哈希值,请使用此标志。
NDIS_RSS_CAPS_HASH_TYPE_UDP_IPV6_EX
如果 NIC 可以标识 IPv6 数据包,并在包含 IPv6 扩展标头的 IPv6 数据包中的字段上计算哈希值,则设置此标志。 NIC 可以基于基本 IPv6 标头、IPv6 扩展标头和 UDP 标头中的字段计算哈希值。 NIC 必须能够在主地址选项中的字段和 IPv6 扩展标头中的类型 2 路由标头上计算哈希值。
NdisHashFunctionToeplitz
如果 NIC 支持 toeplitz 哈希函数,请设置此标志。 如果 NIC 支持 RSS,则必须支持哈希函数。 有关哈希函数的详细信息,请参阅 NDIS_RSS_HASH_FUNC_FROM_HASH_INFO
NdisHashFunctionReserved1
此标志保留供将来使用。
NdisHashFunctionReserved2
此标志保留供将来使用。
NdisHashFunctionReserved3
此标志保留供将来使用。

NumberOfInterruptMessages

如果 NIC 支持 MSIS,则 NIC 支持的中断消息数。 如果 NIC 不支持 MSIS,但支持基于行的中断,请将此数字设置为 1。

NumberOfReceiveQueues

NIC 支持的硬件接收队列数。

NumberOfIndirectionTableEntries

微型端口驱动程序在间接表中支持的最大条目数。 此值必须是 2 的幂。 所有 NDIS 6.30 及更高版本的微型端口适配器都必须支持此成员,这是虚拟函数所必需的。

备注

过度应用驱动程序可以使用 OID_GEN_RECEIVE_SCALE_CAPABILITIES 用于查询 NIC 及其微型端口驱动程序的接收端缩放 (RSS) 功能。

微型端口驱动程序在 NDIS_RECEIVE_SCALE_CAPABILITIES 结构中返回 RSS 功能。

对于某些工作负荷,由于路由更改或发送方不符合 MTU 限制,可能会碎片化 UDP 数据包的子集。 在这种情况下,基于 4 元组或 2 元组哈希的不同处理器可以指示同一流的数据包。 因此,播发 NDIS_RSS_CAPS_HASH_TYPE_UDP_IPV4NDIS_RSS_CAPS_HASH_TYPE_UDP_IPV6NDIS_RSS_CAPS_HASH_TYPE_UDP_IPV6_EX 的微型端口驱动程序应提供通过高级属性禁用 UDP RSS 功能的方法。

要求

   
最低受支持的客户端 在 NDIS 6.0 及更高版本中受支持。
Header ntddndis.h (包括 Ndis.h)

另请参阅

MiniportInterrupt

MiniportInterruptDPC

NDIS_OBJECT_HEADER

NDIS_RSS_HASH_FUNC_FROM_HASH_INFO OID_GEN_RECEIVE_SCALE_CAPABILITIES

接收方伸缩 (RSS)