NDIS_RSS_SET_INDIRECTION_ENTRY 结构 (ntddndis.h)

警告

本主题中的有些信息与预发布产品相关,该产品在商业发行之前可能发生重大更改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。

RSSv2 仅在 Windows 10 版本 1803 中提供预览版。

NDIS_RSS_SET_INDIRECTION_ENTRY 结构表示用于设置单个间接表条目的命令。 它包含在 OID_GEN_RSS_SET_INDIRECTION_TABLE_ENTRIES OID 中使用的 NDIS_RSS_SET_INDIRECTION_ENTRIES 结构中。 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

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

交换机标识符是介于零和网络适配器支持的交换机数之间的整数。 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_ENTRY 结构(包含在 NDIS_RSS_SET_INDIRECTION_ENTRIES 结构中)都必须使用相同的 EntryStatus 进行标记。

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

状态代码 添加状态
NDIS_STATUS_INVALID_PARAMETER
  • SwitchIdVPortId 成员无效。
  • Flags 成员无效。
  • IndirectionTableIndex 成员超过了NDIS_RECEIVE_SCALE_PARAMETERS_V2结构中当前配置的 NumberOfIndirectionTableEntries
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 (包括 Ndis.h)

另请参阅

NDIS_RSS_SET_INDIRECTION_ENTRIES

OID_GEN_RSS_SET_INDIRECTION_TABLE_ENTRIES

接收端缩放版本 2 (RSSv2)

NDIS 6.80 中的同步 OID 请求接口