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 指定的结构的 Type 成员设置为NDIS_OBJECT_TYPE_RSS_CAPABILITIES

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

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

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

CapabilitiesFlags

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

含义
NDIS_RSS_CAPS_MESSAGE_SIGNALED_INTERRUPTS
如果 NIC 支持) (消息信号中断,请设置此标志。 此标志指示 NIC 可以在将分配给该 CPU 的数据包排队后为每个 CPU 生成单独的中断。
NDIS_RSS_CAPS_CLASSIFICATION_AT_ISR
如果 NIC 可以向 MiniportInterrupt 函数指示哪个目标 CPU 已排队接收的数据包,请设置此标志。
NDIS_RSS_CAPS_USING_MSI_X
如果 NIC 使用消息信号中断 (MSI) ,请设置此标志。 NDIS 6.20 及更高版本中支持此标志。
NDIS_RSS_CAPS_SUPPORTS_MSI_X
如果 NIC 支持 MSI,请设置此标志。 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 扩展标头中的 type-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 扩展标头中的 type-2 路由标头计算哈希值。
NdisHashFunctionToeplitz
如果 NIC 支持 toeplitz 哈希函数,请设置此标志。 如果 NIC 支持 RSS,则必须支持哈希函数。 有关哈希函数的详细信息,请参阅 NDIS_RSS_HASH_FUNC_FROM_HASH_INFO
NdisHashFunctionReserved1
此标志留作将来使用。
NdisHashFunctionReserved2
此标志留作将来使用。
NdisHashFunctionReserved3
此标志留作将来使用。

NumberOfInterruptMessages

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

NumberOfReceiveQueues

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

NumberOfIndirectionTableEntries

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

注解

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

微型端口驱动程序返回 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 (包括 Ndis.h)

另请参阅

MiniportInterrupt

MiniportInterruptDPC

NDIS_OBJECT_HEADER

NDIS_RSS_HASH_FUNC_FROM_HASH_INFO OID_GEN_RECEIVE_SCALE_CAPABILITIES

接收方伸缩 (RSS)