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 结构。 设置 标头 指定为 NDIS_OBJECT_TYPE_RSS_CAPABILITIES的结构 类型 成员。

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

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

对于 NDIS 6.0、6.1 和 6.20,请将 修订 成员设置为 NDIS_RECEIVE_SCALE_CAPABILITIES_REVISION_1,并将 大小 成员设置为 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_RSS_AVAILABLE_ON_PORTS
如果 NIC 支持端口的独立 RSS 配置,请设置此标志。 NDIS 6.30 及更高版本中支持此标志。
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 OID 来查询 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 及更高版本中受支持。
标头 ntddndis.h (include Ndis.h)

另请参阅

MiniportInterrupt

MiniportInterruptDPC

NDIS_OBJECT_HEADER

NDIS_RSS_HASH_FUNC_FROM_HASH_INFO OID_GEN_RECEIVE_SCALE_CAPABILITIES

接收方缩放(RSS)