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 之前) LDF (NDIS 轻型筛选器不可见。 此 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)

另请参阅