NDIS_RECEIVE_SCALE_PARAMETERS结构(ntddndis.h)

NDIS_RECEIVE_SCALE_PARAMETERS 结构指定微型端口适配器的 接收端缩放(RSS) 参数。

版本信息

语法

typedef struct _NDIS_RECEIVE_SCALE_PARAMETERS {
  NDIS_OBJECT_HEADER Header;
  USHORT             Flags;
  USHORT             BaseCpuNumber;
  ULONG              HashInformation;
  USHORT             IndirectionTableSize;
  ULONG              IndirectionTableOffset;
  USHORT             HashSecretKeySize;
  ULONG              HashSecretKeyOffset;
  ULONG              ProcessorMasksOffset;
  ULONG              NumberOfProcessorMasks;
  ULONG              ProcessorMasksEntrySize;
  PROCESSOR_NUMBER   DefaultProcessorNumber;
} NDIS_RECEIVE_SCALE_PARAMETERS, *PNDIS_RECEIVE_SCALE_PARAMETERS;

成员

Header

NDIS_RECEIVE_SCALE_PARAMETERS 结构的 NDIS_OBJECT_HEADER 结构。 设置 标头 指定为 NDIS_OBJECT_TYPE_RSS_PARAMETERS的结构的 类型 成员。

  • 对于 NDIS 6.60 及更高版本的驱动程序,请将 修订版 成员设置为 NDIS_RECEIVE_SCALE_PARAMETERS_REVISION_3,并将 大小 成员设置为 NDIS_SIZEOF_RECEIVE_SCALE_PARAMETERS_REVISION_3

  • 对于 NDIS 6.20 和预 NDIS 6.60 驱动程序,请将 修订版 成员设置为 NDIS_RECEIVE_SCALE_PARAMETERS_REVISION_2,并将 大小 成员设置为 NDIS_SIZEOF_RECEIVE_SCALE_PARAMETERS_REVISION_2

  • 对于 NDIS 6.0 驱动程序,请将 修订版 成员设置为 NDIS_RECEIVE_SCALE_PARAMETERS_REVISION_1,并将 大小 成员设置为 NDIS_SIZEOF_RECEIVE_SCALE_PARAMETERS_REVISION_1

Flags

USHORT 值,该值指示微型端口驱动程序应使用接收缩放参数执行的作。 驱动程序可以使用这些标志快速确定哪些参数已更改并相应地更新 RSS 设置。

注意

引用未更改 RSS 参数信息的标志用于优化目的。 如果设置了标志,则不会对相应的参数进行更改。 如果标志明确,则相应的参数可能或可能已更改,微型端口驱动程序必须将参数的新值与当前值进行比较,以确定参数中的潜在更改。

  • 在查询请求中,将此成员设置为零。

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

价值 意义
NDIS_RSS_PARAM_FLAG_BASE_CPU_UNCHANGED BaseCpuNumber 成员未更改。
NDIS_RSS_PARAM_FLAG_HASH_INFO_UNCHANGED HashInformation 成员尚未更改。 哈希信息包括哈希类型和哈希函数。
NDIS_RSS_PARAM_FLAG_ITABLE_UNCHANGED 间接表和关联的数据成员没有更改。
NDIS_RSS_PARAM_FLAG_HASH_KEY_UNCHANGED 机密密钥和关联的数据成员未更改。
NDIS_RSS_PARAM_FLAG_DISABLE_RSS 如果设置了此标志,微型端口驱动程序应忽略所有其他标志和设置,并在 NIC 上禁用 RSS。
NDIS_RSS_PARAM_FLAG_DEFAULT_PROCESSOR_UNCHANGED 如果设置了此标志,则 DefaultProcessorNumber 未更改。

BaseCpuNumber

要用于 RSS 的最小 CPU 数。 由于此值已合并到间接表中,因此请将 BaseCpuNumber 设置为零。

HashInformation

在设置请求中,此成员是 NIC 应用于计算传入数据包的哈希值的哈希类型和哈希函数。 如果在 HashInformation 成员中指定的哈希函数为零,则禁用 RSS。

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

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

微型端口驱动程序可以使用 NDIS_RSS_HASH_TYPE_FROM_HASH_INFO 宏从 HashInformationNDIS_RSS_HASH_FUNC_FROM_HASH_INFO 宏获取哈希函数的哈希类型。

IndirectionTableSize

间接表的大小(以字节为单位)。 设置 RSS 参数的上层驱动程序必须确保间接表中的条目数是 2 的幂。

IndirectionTableOffset

间接表与 NDIS_RECEIVE_SCALE_PARAMETERS 结构开头的偏移量。 使用此偏移量获取间接表。

HashSecretKeySize

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

HashSecretKeyOffset

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

  • 在设置请求中,密钥可以包含过度驱动因素选择的任何数据。

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

ProcessorMasksOffset

处理器掩码数组与 NDIS_RECEIVE_SCALE_PARAMETERS 结构开头的偏移量。

NumberOfProcessorMasks

类型 GROUP_AFFINITY 表示间接表中使用的处理器的数组中的元素数

ProcessorMasksEntrySize

处理器掩码数组条目的大小(以字节为单位)。

DefaultProcessorNumber

启用 RSS 后,指定将接收无法计算哈希的数据包的处理器。

言论

NDIS_RECEIVE_SCALE_PARAMETERS 结构定义 OID_GEN_RECEIVE_SCALE_PARAMETERS OID 的 接收端缩放(RSS) 参数。

注意

间接表和密钥追加在 NDIS_RECEIVE_SCALE_PARAMETERS 结构成员之后。

间接表具有以下特定于版本的格式:

NDIS 版本 格式
NDIS 6.20 及更高版本 PROCESSOR_NUMBER IndirectionTable[IndirectionTableSize/sizeof(PROCESSOR_NUMBER)];
Pre-NDIS 6.20 CCHAR IndirectionTable[IndirectionTableSize]

如果驱动程序堆栈中存在较旧和较新的驱动程序,NDIS 会自动转换间接表。

微型端口驱动程序必须检查间接表,以确定要与硬件队列关联的 CPU 编号。 如果间接表中显示的不同 CPU 数字总数大于 NIC 支持的硬件队列数,则微型端口驱动程序必须从间接表中选取 CPU 数的子集。 子集与硬件队列数相等。

微型端口驱动程序指定了接收队列值的数目,以响应 OID_GEN_RECEIVE_SCALE_CAPABILITIES

若要清除 RSS 参数并禁用 RSS,NDIS 设置在 HashInformation 成员中指定的哈希函数为零。 NDIS 还可以通过在 NDIS_RECEIVE_SCALE_PARAMETERS 结构中设置 NDIS_RSS_PARAM_FLAG_DISABLE_RSS 标志来禁用 RSS。

如果禁用 RSS,微型端口驱动程序应处理接收作,而无需执行 RSS作。

要求

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

另请参阅

接收方缩放(RSS)

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

OID_GEN_RECEIVE_SCALE_CAPABILITIES

OID_GEN_RECEIVE_SCALE_PARAMETERS