NDIS_RECEIVE_SCALE_PARAMETERS 構造体 (ntddndis.h)

NDIS_RECEIVE_SCALE_PARAMETERS構造体は、ミニポート アダプターの受信側スケーリング (RSS) パラメーターを指定します。

バージョン情報

構文

typedef struct _NDIS_RECEIVE_SCALE_PARAMETERS {
  NDIS_OBJECT_HEADER Header;
  USHORT             Flags;
  USHORT             BaseCpuNumber;
  ULONG              HashInformation;
  USHORT             IndirectionTableSize;
  ULONG              IndirectionTableOffset;
  USHORT             HashSecretKeySize;
  ULONG              HashSecretKeyOffset;
  ULONG              ProcessorMasksOffset;
  ULONG              NumberOfProcessorMasks;
  ULONG              ProcessorMasksEntrySize;
  PROCESSOR_NUMBER   DefaultProcessorNumber;
} NDIS_RECEIVE_SCALE_PARAMETERS, *PNDIS_RECEIVE_SCALE_PARAMETERS;

メンバー

Header

NDIS_RECEIVE_SCALE_PARAMETERS構造体のNDIS_OBJECT_HEADER構造体。 Header が指定する構造体の Type メンバーをNDIS_OBJECT_TYPE_RSS_PARAMETERSに設定します。

  • NDIS 6.60 以降のドライバーの場合は、 Revision メンバーを NDIS_RECEIVE_SCALE_PARAMETERS_REVISION_3 に設定し、 Size メンバーを NDIS_SIZEOF_RECEIVE_SCALE_PARAMETERS_REVISION_3 に設定します。

  • NDIS 6.20 および NDIS 6.60 より前のドライバーの場合は、 Revision メンバーを NDIS_RECEIVE_SCALE_PARAMETERS_REVISION_2 に、 Size メンバーを NDIS_SIZEOF_RECEIVE_SCALE_PARAMETERS_REVISION_2に設定します。

  • NDIS 6.0 ドライバーの場合は、 Revision メンバーを NDIS_RECEIVE_SCALE_PARAMETERS_REVISION_1 に設定し、 Size メンバーを NDIS_SIZEOF_RECEIVE_SCALE_PARAMETERS_REVISION_1に設定します。

Flags

ミニポート ドライバーが受信スケール パラメーターで何を行う必要があるかを示す USHORT 値。 ドライバーは、これらのフラグを使用して、変更されたパラメーターをすばやく特定し、それに応じて RSS 設定を更新できます。

注意

変更されていない RSS パラメーター情報を参照するフラグは、最適化を目的とします。 フラグが設定されている場合、対応するパラメーターは変更されていません。 フラグが明確な場合、対応するパラメーターが変更されている場合と変更されていない可能性があります。ミニポート ドライバーは、パラメーターの潜在的な変更を決定するために、パラメーターの新しい値と現在の値を比較する必要があります。

  • クエリ要求で、このメンバーを 0 に設定します。

  • セット要求では、フラグは次のように定義されます。

意味
NDIS_RSS_PARAM_FLAG_BASE_CPU_UNCHANGED BaseCpuNumber メンバーは変更されていません。
NDIS_RSS_PARAM_FLAG_HASH_INFO_UNCHANGED HashInformation メンバーは変更されていません。 ハッシュ情報には、ハッシュの種類とハッシュ関数が含まれます。
NDIS_RSS_PARAM_FLAG_ITABLE_UNCHANGED 間接参照テーブルと関連するデータ メンバーは変更されていません。
NDIS_RSS_PARAM_FLAG_HASH_KEY_UNCHANGED 秘密キーと関連付けられたデータ メンバーは変更されていません。
NDIS_RSS_PARAM_FLAG_DISABLE_RSS このフラグが設定されている場合、ミニポート ドライバーは他のすべてのフラグと設定を無視し、NIC の RSS を無効にする必要があります。
NDIS_RSS_PARAM_FLAG_DEFAULT_PROCESSOR_UNCHANGED このフラグが設定されている場合、 DefaultProcessorNumber は変更されていません。

BaseCpuNumber

RSS に使用する CPU の最小数。 この値は間接参照テーブルに組み込まれるため、 BaseCpuNumber を 0 に設定します。

HashInformation

セット要求では、このメンバーは、NIC が受信パケットのハッシュ値を計算するために使用するハッシュの種類とハッシュ関数です。 HashInformation メンバー内で指定されたハッシュ関数が 0 の場合、RSS は無効になります。

クエリ要求では、このメンバーは NIC が使用しているハッシュの種類とハッシュ関数です。

基になるドライバーと NDIS では 、NDIS_RSS_HASH_INFO_FROM_TYPE_AND_FUNC マクロを使用して、ハッシュの種類とハッシュ関数をハッシュ情報に結合し、 HashInformation メンバーを設定できます。

ミニポート ドライバーは、 NDIS_RSS_HASH_TYPE_FROM_HASH_INFO マクロを使用して HashInformation からハッシュの種類を取得し、 NDIS_RSS_HASH_FUNC_FROM_HASH_INFO マクロを使用してハッシュ関数を取得できます。

IndirectionTableSize

間接テーブルのサイズ (バイト単位)。 RSS パラメーターを設定する上位レイヤー ドライバーでは、間接テーブル内のエントリの数が 2 の累乗であることを確認する必要があります。

IndirectionTableOffset

NDIS_RECEIVE_SCALE_PARAMETERS構造体の先頭からの間接テーブルのオフセット。 間接参照テーブルを取得するには、このオフセットを使用します。

HashSecretKeySize

ハッシュ関数の秘密鍵配列のサイズ (バイト単位)。 配列のサイズは、NdisHashFunctionToeplitz の場合は 40 バイトです。

HashSecretKeyOffset

NDIS_RECEIVE_SCALE_PARAMETERS構造体の先頭からのハッシュ関数の秘密鍵配列のオフセット。 このオフセットを使用して、320 ビット (40 バイト) の秘密キーを取得します。

  • セット要求では、秘密キーには、基になるドライバーが選択する任意のデータを含めることができます。

  • クエリ要求では、秘密キーには NIC が使用しているデータが含まれます。

ProcessorMasksOffset

NDIS_RECEIVE_SCALE_PARAMETERS構造体の先頭からのプロセッサ マスクの配列のオフセット。

NumberOfProcessorMasks

間接参照テーブルで使用されるプロセッサを表す GROUP_AFFINITY 型の配列内の要素の数

ProcessorMasksEntrySize

プロセッサ マスク配列エントリのサイズ (バイト単位)。

DefaultProcessorNumber

RSS が有効になっている場合、ハッシュを計算できないパケットを受信するプロセッサを指定します。

注釈

NDIS_RECEIVE_SCALE_PARAMETERS構造体は、OID_GEN_RECEIVE_SCALE_PARAMETERS OID の受信側スケーリング (RSS) パラメーターを定義します。

注意

間接参照テーブルと秘密キーは、 NDIS_RECEIVE_SCALE_PARAMETERS 構造体メンバーの後に追加されます。

間接参照テーブルのバージョン固有の形式は次のとおりです。

NDIS バージョン フォーマット
NDIS 6.20 以降のバージョン PROCESSOR_NUMBER IndirectionTable[IndirectionTableSize/sizeof(PROCESSOR_NUMBER)];
NDIS 6.20 より前 CCHAR IndirectionTable[IndirectionTableSize]

ドライバー スタックに古いドライバーと新しいドライバーがある場合、NDIS は間接参照テーブルを自動的に変換します。

ミニポート ドライバーは、ハードウェア キューに関連付ける CPU 番号を決定する間接参照テーブルを調べる必要があります。 間接テーブルに表示される異なる CPU 番号の合計数が、NIC でサポートされているハードウェア キューの数を超える場合、ミニポート ドライバーは間接参照テーブルから CPU 番号のサブセットを選択する必要があります。 サブセットは、ハードウェア キューの数と等しくなります。

ミニポート ドライバーは、 OID_GEN_RECEIVE_SCALE_CAPABILITIESに応答して受信キューの値の数を指定しました。

RSS パラメーターをクリアして RSS を無効にするために、NDIS は HashInformation メンバー内で指定されたハッシュ関数を 0 に設定します。 NDIS では、NDIS_RECEIVE_SCALE_PARAMETERS構造でNDIS_RSS_PARAM_FLAG_DISABLE_RSS フラグを設定することで RSS を無効にすることもできます。

RSS が無効になっている場合、ミニポート ドライバーは RSS 操作を実行せずに受信操作を処理する必要があります。

要件

要件
サポートされている最小のクライアント NDIS 6.0 以降でサポートされています。
Header ntddndis.h (Ndis.h を含む)

こちらもご覧ください

Receive Side Scaling (RSS)

NDIS_OBJECT_HEADER

NDIS_RSS_HASH_FUNC_FROM_HASH_INFO

NDIS_RSS_HASH_INFO_FROM_TYPE_AND_FUNC

NDIS_RSS_HASH_TYPE_FROM_HASH_INFO

OID_GEN_RECEIVE_SCALE_CAPABILITIES

OID_GEN_RECEIVE_SCALE_PARAMETERS