OID_GEN_RECEIVE_SCALE_PARAMETERS_V2

警告

本主题中的一些信息与预发行的产品有关,在进行商业发布之前,可能会对其进行大幅修改。 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 中,DefaultQueuePrimaryProcessor 也使用 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
  • 间接表的大小正在减小,但不包含两个重复模式。
  • 在 RSS 状态转换(关闭),转向参数中的处理器 活动 不属于适配器的 RSS 处理器集。 请注意,非活动 转向参数仅跟踪对处理器的写入,并且不会强制执行。 当参数 活动时,在 RSS 状态转换期间强制实施。
NDIS_STATUS_INVALID_PARAMETER 标头或 OID 本身中的其他字段包含无效值。

要求

版本:Windows 10 版本 1709 标头:Ntddndis.h(包括 Ndis.h)

另请参阅