警告
本主题中的一些信息与预发行的产品有关,在进行商业发布之前,可能会对其进行大幅修改。 Microsoft对此处提供的信息不作任何明示或暗示的保证。
RSSv2 仅在 Windows 10 版本 1809 中处于预览状态。
OID_GEN_RECEIVE_SCALE_PARAMETERS_V2 OID 将发送到 支持 RSSv2的微型端口驱动程序,以设置缩放实体的间接表以外的运行时参数。 OID_GEN_RECEIVE_SCALE_PARAMETERS_V2替换 RSSv1 中的 OID_GEN_RECEIVE_SCALE_PARAMETERS OID,在 NDIS 6.80 之前,NDIS 轻型筛选器(LFS)不可见。 此 OID 是常规 OID,可以作为查询或设置请求发出。 它在 IRQL == PASSIVE_LEVEL颁发。 当在 NIC 交换机创建时设置 NDIS_OID_REQUEST_FLAGS_VPORT_ID_VALID 标志时,它可以面向给定的 VPort。 否则,它会针对本机 RSS 案例中的物理 NIC。
作为查询,NDIS 和过度配置驱动程序可以使用OID_GEN_RECEIVE_SCALE_PARAMETERS_V2来查询 NIC 的 RSS 参数。 NDIS 返回定义当前 RSS 参数的 NDIS_RECEIVE_SCALE_PARAMETERS_V2 结构。
作为一个 Set,此 OID 的目的是执行以下作:
- 最初配置缩放实体(本机 RSS 模式下的微型端口适配器或 VMQ 模式下的 VPort)。
- 启用或禁用 RSS。
- 在 RSS 模式下,执行非计时关键管理功能,例如更改哈希键、哈希类型和哈希函数、队列数或缩放实体的间接表条目数。
言论
可以在一个步骤中启用 RSS 和设置 RSS 参数。 在上层使用此 OID 启用 RSS 后,缩放实体的初始状态如下所示:
- 主处理器变为非活动 。
- 默认处理器变为活动 。
- 所有 ITE 都成为 活动。
- 微型端口驱动程序开始计算 RSS 哈希、为所有数据包设置对应的 OOB,并将数据包定向到间接表项或默认处理器参数指定的处理器。
启用 RSS 后,上层会发出 OID_GEN_RSS_SET_INDIRECTION_TABLE_ENTRIES OID 以将 ITE 移动到不同的处理器。 在 RSSv2 中,DefaultQueue 和 PrimaryProcessor 也使用 OID_GEN_RSS_SET_INDIRECTION_TABLE_ENTRIES 移动到其他处理器。
在禁用 RSS 的过程中,上层会将所有 ITE 指向主处理器,然后再调用此 OID 以关闭 RSS。 在此点之后,接收流量应面向主处理器。 但是,微型端口驱动程序不应在 VPort 删除之前禁用 RSS。 上层可以将 VPort 上的接收筛选器设置为零,从而确保没有接收流量流经 VPort,然后继续删除 VPort 而不禁用 RSS。
上层将确保在执行管理功能之前不违反重要的固定项。 例如:
- 在更改队列数之前,上层将确保间接表引用的处理器数不会超过为 VPort 配置的处理器。 在更改 VMMQ-RESTRICTED 适配器的间接表项数之前,上层将确保间接表的内容规范化为 2 的幂。
错误条件和状态代码
发生错误时,此 OID 将返回以下状态代码:
状态代码 | 错误条件 |
---|---|
NDIS_STATUS_INVALID_LENGTH | OID 格式不正确。 |
NDIS_STATUS_NO_QUEUES | 启用 RSS 时,正在更改队列数,但当前间接表引用的处理器数比新的队列数多。 |
NDIS_STATUS_INVALID_DATA |
|
NDIS_STATUS_INVALID_PARAMETER | 标头或 OID 本身中的其他字段包含无效值。 |
要求
版本:Windows 10 版本 1709 标头:Ntddndis.h(包括 Ndis.h)