NDIS_RSS_SET_INDIRECTION_ENTRY结构(ntddndis.h)

警告

本主题中的一些信息与预发行的产品有关,在进行商业发布之前,可能会对其进行大幅修改。 Microsoft对此处提供的信息不作任何明示或暗示的保证。

RSSv2 仅在 Windows 10 版本 1803 中处于预览状态。

NDIS_RSS_SET_INDIRECTION_ENTRY 结构表示用于设置单个间接表项的命令。 它包含在 NDIS_RSS_SET_INDIRECTION_ENTRIES 结构中,该结构在 OID_GEN_RSS_SET_INDIRECTION_TABLE_ENTRIES OID 中使用。 OID_GEN_RSS_SET_INDIRECTION_TABLE_ENTRIES是 RSS 版本 2 (RSSv2)同步 OID

语法

typedef struct _NDIS_RSS_SET_INDIRECTION_ENTRY {
  NDIS_NIC_SWITCH_ID       SwitchId;
  NDIS_NIC_SWITCH_VPORT_ID VPortId;
  ULONG                    Flags;
  USHORT                   IndirectionTableIndex;
  PROCESSOR_NUMBER         TargetProcessorNumber;
  NDIS_STATUS              EntryStatus;
} NDIS_RSS_SET_INDIRECTION_ENTRY, *PNDIS_RSS_SET_INDIRECTION_ENTRY;

成员

SwitchId

一个NDIS_NIC_SWITCH_ID值,表示 VPort 所在的 NIC 交换机。

交换机标识符是一个介于零和网络适配器支持的交换机数之间的整数。 NDIS_DEFAULT_SWITCH_ID值指示默认网络适配器交换机。

此字段应设置为本机 RSS 事例中的 0

VPortId

表示 VPort 标识符的NDIS_NIC_SWITCH_VPORT_ID值。

此字段应设置为本机 RSS 事例中的 0

Flags

包含按位 OR 标志的 ULONG 。 此成员限定此结构中的信息。

可能的标志如下所示:

价值 意义
NDIS_RSS_SET_INDIRECTION_ENTRY_FLAG_PRIMARY_PROCESSOR
指示 NDIS_RSS_SET_INDIRECTION_ENTRY 引用缩放实体的主处理器。 不使用间接表。 当主处理器处于*非活动状态*(启用 RSS 时),微型端口驱动程序应跟踪对此标志集的条目的更新,以便知道禁用 RSS 时哪个处理器将是主要处理器。
NDIS_RSS_SET_INDIRECTION_ENTRY_FLAG_DEFAULT_PROCESSOR
指示 NDIS_RSS_SET_INDIRECTION_ENTRY 引用缩放实体的默认处理器。 默认处理器处理未压缩的数据包。 不使用间接表。 当默认处理器为*非活动*(禁用 RSS 时),微型端口驱动程序应跟踪对此标志集的条目的更新,以便知道启用 RSS 时哪个处理器是默认的。

IndirectionTableIndex

ITE 的哈希索引,当前指向当前 CPU,并正在修改为指向另一个处理器。 当间接表 非活动(RSS 被禁用)时,微型端口驱动程序应跟踪间接表项的更新,以便在启用 RSS 时具有正确的间接表。

TargetProcessorNumber

ITE 应在完成时指向的目标处理器编号。 微型端口驱动程序应成功将 ITE 从当前处理器移动到当前处理器。

EntryStatus

一个NDIS_STATUS代码,指示此项的移动作的状态。 由于 NDIS_RSS_SET_INDIRECTION_ENTRY 用于同步 OID 调用的上下文中,因此微型端口驱动程序无法为此成员返回 NDIS_STATUS_PENDING

为了简化微型端口驱动程序的实现,上层协议会将此字段初始化为NDIS_STATUS_PENDING。 微型端口驱动程序必须用成功或失败的 NDIS 状态代码覆盖NDIS_STATUS_PENDING。 如果上层检测到此字段在完成 OID_GEN_RSS_SET_INDIRECTION_TABLE_ENTRIES OID 后仍NDIS_STATUS_PENDING,则会导致系统 bug 检查并指示微型端口驱动程序出现故障。

重要

组中包含 NDIS_RSS_SET_INDIRECTION_ENTRIES 结构中的所有 NDIS_RSS_SET_INDIRECTION_ENTRY 结构都必须使用相同的 entryStatus 标记。

如果此移动命令发生错误,请将 EntryStatus 设置为该错误条件的以下状态代码之一:

状态代码 错误条件
NDIS_STATUS_INVALID_PARAMETER
NDIS_STATUS_INVALID_PORT_STATE VPort 未激活或处于阻止其接受 RSSv2 OID 的其他状态。
NDIS_STATUS_NOT_ACCEPTED 执行组件 CPU 无效。
NDIS_STATUS_INVALID_DATA 对于 活动 转向参数,新处理器不是适配器 RSS 处理器集的一部分。 请注意,仅需要跟踪 非活动 参数。 稍后会在 RSS 状态转换期间(在 关闭)对其进行验证。
NDIS_STATUS_NO_QUEUES 一组命令条目无法检查该组指定的 VPort 的“队列数”。

要求

要求 价值
最低支持的客户端 在 NDIS 6.80 及更高版本中受支持。
标头 ntddndis.h (include Ndis.h)

另请参阅

NDIS_RSS_SET_INDIRECTION_ENTRIES

OID_GEN_RSS_SET_INDIRECTION_TABLE_ENTRIES

接收方缩放版本 2 (RSSv2)

NDIS 6.80 中的同步 OID 请求接口