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结构。 将 Header 指定的结构的 Type 成员设置为NDIS_OBJECT_TYPE_RSS_PARAMETERS。
对于 NDIS 6.60 及更高版本的驱动程序,请将 Revision 成员设置为 NDIS_RECEIVE_SCALE_PARAMETERS_REVISION_3 并将 Size 成员设置为 NDIS_SIZEOF_RECEIVE_SCALE_PARAMETERS_REVISION_3。
对于 NDIS 6.20 和 NDIS 6.60 之前的驱动程序,请将 Revision 成员设置为 NDIS_RECEIVE_SCALE_PARAMETERS_REVISION_2 ,将 Size 成员设置为 NDIS_SIZEOF_RECEIVE_SCALE_PARAMETERS_REVISION_2。
对于 NDIS 6.0 驱动程序,请将 Revision 成员设置为 NDIS_RECEIVE_SCALE_PARAMETERS_REVISION_1 ,将 Size 成员设置为 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 宏从 HashInformation 获取哈希类型, 并使用NDIS_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 (包括 Ndis.h) |
另请参阅
NDIS_RSS_HASH_FUNC_FROM_HASH_INFO
NDIS_RSS_HASH_INFO_FROM_TYPE_AND_FUNC
NDIS_RSS_HASH_TYPE_FROM_HASH_INFO