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 轻型筛选器 (LWFs) 可见。 此 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 结构。

作为一个集,此 OID 的用途是执行以下操作:

  • 最初在本机 RSS 模式下 (小型端口适配器或在 VMQ 模式下的 VPort 中配置缩放实体) 。
  • 启用或禁用 RSS。
  • 在 RSS 模式下,执行非计时关键管理功能,例如更改哈希键、哈希类型和哈希函数、队列数或缩放实体的间接表项的数目。

注解

启用 RSS 并设置 RSS 参数的步骤可以是一步。 在上层使用此 OID 启用 RSS 后,缩放实体的初始状态如下所示:

  • 主处理器变为 非活动状态
  • 默认处理器变为 活动状态
  • 所有 ITEs 将变为 活动状态
  • 微型端口驱动程序开始计算 RSS 哈希,为所有数据包设置相应的 OOB,并将数据包定向到由间接表条目或默认处理器参数指定的处理器。

启用 RSS 后,上层会发出 OID_GEN_RSS_SET_INDIRECTION_TABLE_ENTRIES OID,将 ITEs 移动到不同的处理器。 在 RSSv2 中, DefaultQueuePrimaryProcessor 还会使用 OID_GEN_RSS_SET_INDIRECTION_TABLE_ENTRIES 移动到不同的处理器。

在禁用 RSS 的过程中,上层会将所有 ITEs 指向主处理器,然后再调用此 OID 以关闭 RSS。 此时,接收流量应以主处理器为目标。 但是,小型小型驱动程序不应期望在 VPort 删除之前禁用 RSS。 上层可以将 VPort 上的接收筛选器设置为零,从而确保没有接收流量流经 VPort,然后继续删除 VPort,而不会禁用 RSS。

上层将确保在执行管理功能之前不违反重要的固定条件。 例如:

  • 在更改队列的数目之前,上层将确保间接寻址表不引用超过为 VPort 配置的处理器。 在更改 VMMQ 限制的适配器的间接表条目数之前,上层将确保间接寻址表的内容已规范化为2的幂。

错误情况和状态代码

当发生错误时,此 OID 返回以下状态代码:

状态代码 添加状态
NDIS_STATUS_INVALID_LENGTH OID 的格式不正确。
NDIS_STATUS_NO_QUEUES 启用 RSS 时,将更改队列数量,但当前的间接寻址表引用的处理器比新数量的队列多。
NDIS_STATUS_INVALID_DATA
  • 间接寻址表大小减小,但不包含两次幂的重复模式。
  • 在将 RSS 状态转换 (为 onoff) 时,处于 活动 状态的方向盘参数的处理器不属于适配器的 RSS 处理器集。 请注意, 非活动 控制参数只跟踪对处理器的写入,不会强制执行。 当参数变为 活动状态时,会在 RSS 状态转换期间发生强制执行。
NDIS_STATUS_INVALID_PARAMETER 标头或 OID 本身中的其他字段包含无效的值。

要求

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

请参阅