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 功能的标志的位掩码。 微型端口驱动程序可以指定以下标志:
值 | 含义 |
---|---|
|
如果 NIC 支持) (消息信号中断,请设置此标志。 此标志指示 NIC 可以在将分配给该 CPU 的数据包排队后为每个 CPU 生成单独的中断。 |
|
如果 NIC 可以向 MiniportInterrupt 函数指示哪个目标 CPU 已排队接收的数据包,请设置此标志。 |
|
如果 NIC 使用消息信号中断 (MSI) ,请设置此标志。 NDIS 6.20 及更高版本中支持此标志。 |
|
如果 NIC 支持 MSI,请设置此标志。 NDIS 6.30 及更高版本中支持此标志。 |
|
如果微型端口驱动程序可以检测到哪些目标 CPU 已将来自其 MiniportInterruptDPC 函数的接收数据包排队,请设置此标志。 |
|
如果 NIC 可以标识 IPv4 数据包, () 或不使用选项,请设置此标志。 此外,NIC 支持通过 IPv4 标头字段和 TCP 标头字段计算哈希值。 |
|
如果 NIC 可以识别 IPv6 数据包,并在 IPv6 数据包中的字段上计算哈希值,请设置此标志。 NIC 必须能够通过基本 IPv6 标头中的字段和 TCP 标头中的字段计算哈希值。 如果 NIC 无法对位于 IPv6 扩展标头中的字段计算哈希值,请使用此标志。 |
|
如果 NIC 可以识别 IPv6 数据包,并在包含 IPv6 扩展标头的 IPv6 数据包中的字段上计算哈希值,请设置此标志。 NIC 可以对基本 IPv6 标头、IPv6 扩展标头和 TCP 标头中的字段计算哈希值。 NIC 必须能够通过主地址选项中的字段和 IPv6 扩展标头中的 type-2 路由标头计算哈希值。 |
|
如果 NIC 可以使用或不使用选项标识 IPv4 数据包,并且 NIC 支持通过 IPv4 标头字段和 UDP 标头字段计算哈希值,请设置此标志。 |
|
如果 NIC 可以识别 IPv6 数据包,并在 IPv6 数据包中的字段上计算哈希值,请设置此标志。 NIC 必须能够对基本 IPv6 标头中的字段和 UDP 标头中的字段计算哈希值。 如果 NIC 无法对位于 IPv6 扩展标头中的字段计算哈希值,请使用此标志。 |
|
如果 NIC 可以识别 IPv6 数据包,并在包含 IPv6 扩展标头的 IPv6 数据包中的字段上计算哈希值,请设置此标志。 NIC 可以对基本 IPv6 标头、IPv6 扩展标头和 UDP 标头中的字段计算哈希值。 NIC 必须能够通过主地址选项中的字段和 IPv6 扩展标头中的 type-2 路由标头计算哈希值。 |
|
如果 NIC 支持 toeplitz 哈希函数,请设置此标志。 如果 NIC 支持 RSS,则必须支持哈希函数。 有关哈希函数的详细信息,请参阅 NDIS_RSS_HASH_FUNC_FROM_HASH_INFO。 |
|
此标志留作将来使用。 |
|
此标志留作将来使用。 |
|
此标志留作将来使用。 |
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_IPV4、 NDIS_RSS_CAPS_HASH_TYPE_UDP_IPV6和 NDIS_RSS_CAPS_HASH_TYPE_UDP_IPV6_EX 的微型端口驱动程序应提供一种通过高级属性禁用 UDP RSS 功能的方法。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 在 NDIS 6.0 及更高版本中受支持。 |
标头 | ntddndis.h (包括 Ndis.h) |