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 宏从 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 (include Ndis.h) |
另请参阅
NDIS_RSS_HASH_FUNC_FROM_HASH_INFO
NDIS_RSS_HASH_INFO_FROM_TYPE_AND_FUNC
NDIS_RSS_HASH_TYPE_FROM_HASH_INFO