NDIS_RECEIVE_HASH_PARAMETERS 结构 (ntddndis.h)

NDIS_RECEIVE_HASH_PARAMETERS 结构指定支持接收哈希计算的微型端口适配器的接收哈希参数。

语法

typedef struct _NDIS_RECEIVE_HASH_PARAMETERS {
  NDIS_OBJECT_HEADER Header;
  ULONG              Flags;
  ULONG              HashInformation;
  USHORT             HashSecretKeySize;
  ULONG              HashSecretKeyOffset;
} NDIS_RECEIVE_HASH_PARAMETERS, *PNDIS_RECEIVE_HASH_PARAMETERS;

成员

Header

NDIS_RECEIVE_HASH_PARAMETERS结构的NDIS_OBJECT_HEADER结构。 将 Header 指定的结构的 Type 成员设置为 NDIS_OBJECT_TYPE_DEFAULT,将 Revision 成员设置为 NDIS_RECEIVE_HASH_PARAMETERS_REVISION_1,将 Size 成员设置为 NDIS_SIZEOF_RECEIVE_HASH_PARAMETERS_REVISION_1。

Flags

一个 USHORT 值,指示微型端口驱动程序应对哈希参数执行的操作。 微型端口驱动程序可以使用这些标志快速确定哪些参数已更改,并相应地更新哈希设置。

在设置请求中,标志定义如下:

NDIS_RECEIVE_HASH_FLAG_ENABLE_HASH

如果设置了此标志,则启用对接收帧的哈希值进行计算,并将计算的哈希值放置在 NET_BUFFER_LIST 结构的 NetBufferListHashValue OOB 信息中。

如果此标志是明确的,请禁用对接收帧的哈希值的计算。

如果启用了接收哈希计算,微型端口驱动程序应设置此标志;否则,此标志应是明确的。

NDIS_RECEIVE_HASH_FLAG_HASH_INFO_UNCHANGED

HashInformation 成员未更改。 哈希信息包括哈希类型和哈希函数。

如果设置了此标志,则应忽略NDIS_RECEIVE_HASH_PARAMETERS结构的 HashInformation 成员。

如果清除此标志,HashInformation 成员将包含微型端口驱动程序必须用来计算接收帧上的哈希值的新值。

NDIS_RECEIVE_HASH_FLAG_HASH_KEY_UNCHANGED

密钥和关联的数据成员未更改。

如果设置了此标志,则应忽略密钥和关联的数据成员。

如果清除此标志,则密钥或关联的数据成员已更改,微型端口驱动程序必须使用新信息。

在查询请求中,标志定义如下:

HashInformation

在集请求中,NIC 应用于计算传入数据包的哈希值的哈希类型和哈希函数。

在查询请求中,NIC 使用的哈希类型和哈希函数。

过度覆盖驱动程序和 NDIS 可以使用 NDIS_RSS_HASH_INFO_FROM_TYPE_AND_FUNC 宏,将哈希类型和哈希函数合并到哈希信息中,并设置 HashInformation 成员。

微型端口驱动程序可以使用 NDIS_RSS_HASH_TYPE_FROM_HASH_INFO 宏,从 HashInformation 和 获取哈希类型 NDIS_RSS_HASH_FUNC_FROM_HASH_INFO 宏获取哈希函数。

HashSecretKeySize

哈希函数的密钥数组的大小(以字节为单位)。 NdisHashFunctionToeplitz 的数组大小为 40 字节。

HashSecretKeyOffset

哈希函数的密钥数组与NDIS_RECEIVE_HASH_PARAMETERS结构开头的偏移量。 使用此偏移量获取 320 位 (40 字节) 密钥。

在设置的请求中,密钥可以包含过度分配的驱动程序选择的任何数据。

在查询请求中,密钥包含 NIC 正在使用的数据。

注解

NDIS_RECEIVE_HASH_PARAMETERS 结构定义 OID_GEN_RECEIVE_HASH OID 的哈希参数。

注意 协议驱动程序必须先禁用接收哈希计算,然后才能启用 RSS。 如果 RSS 已启用,协议驱动程序会在启用接收哈希计算之前禁用 RSS。 如果当前已启用另一个服务,微型端口驱动程序应会使启用接收哈希计算或 RSS 的请求失败。
 
注意 密钥追加到NDIS_RECEIVE_HASH_PARAMETERS结构成员之后。
 

要求

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

另请参阅

NDIS_OBJECT_HEADER

NDIS_RSS_HASH_FUNC_FROM_HASH_INFO NDIS_RSS_HASH_INFO_FROM_TYPE_AND_FUNC NDIS_RSS_HASH_TYPE_FROM_HASH_INFO

NET_BUFFER_LIST

OID_GEN_RECEIVE_HASH