NDIS_RSS_SET_INDIRECTION_ENTRY 構造体 (ntddndis.h)

警告

本トピックの一部の情報はリリース前の製品に関することであり、正式版がリリースされるまでに大幅に変更される可能性があります。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。

RSSv2 は、Windows 10 バージョン 1803 でのみプレビューです。

NDIS_RSS_SET_INDIRECTION_ENTRY構造体は、1 つの間接参照テーブル エントリを設定するコマンドを表します。 これは、 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値。

スイッチ識別子は、0 からネットワーク アダプターがサポートするスイッチの数までの整数です。 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

現在の CPU を指しており、別のプロセッサを指すよう変更されている ITE のハッシュ インデックス。 間接参照テーブルが 非アクティブ (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されていることを検出した場合、システムバグチェックが発生し、ミニポート ドライバーに障害があることを示します。

重要

NDIS_RSS_SET_INDIRECTION_ENTRIES構造体に含まれるグループ内のすべてのNDIS_RSS_SET_INDIRECTION_ENTRY構造体は、同じ EntryStatus でマークする必要があります。

この移動コマンドでエラーが発生した場合は、 EntryStatus を、そのエラー条件の次のいずれかの状態コードに設定します。

status code エラー状態
NDIS_STATUS_INVALID_PARAMETER
  • SwitchId または VPortId メンバーが無効です。
  • 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 以降でサポートされています。
Header ntddndis.h (Ndis.h を含む)

こちらもご覧ください

NDIS_RSS_SET_INDIRECTION_ENTRIES

OID_GEN_RSS_SET_INDIRECTION_TABLE_ENTRIES

Receive Side Scaling Version 2 (RSSv2)

NDIS 6.80 の同期 OID 要求インターフェイス