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 構造体。 NDIS_OBJECT_TYPE_RSS_PARAMETERSに指定 ヘッダー 構造体の 型 メンバーを設定します。
NDIS 6.60 以降のドライバーの場合は、リビジョン メンバーを NDIS_RECEIVE_SCALE_PARAMETERS_REVISION_3 に設定し、サイズ メンバーを NDIS_SIZEOF_RECEIVE_SCALE_PARAMETERS_REVISION_3に設定します。
NDIS 6.20 および NDIS 6.60 より前のドライバーの場合は、リビジョン メンバーを NDIS_RECEIVE_SCALE_PARAMETERS_REVISION_2 に設定し、サイズ メンバーを NDIS_SIZEOF_RECEIVE_SCALE_PARAMETERS_REVISION_2に設定します。
NDIS 6.0 ドライバーの場合は、リビジョン メンバーを NDIS_RECEIVE_SCALE_PARAMETERS_REVISION_1 に設定し、サイズ メンバーを NDIS_SIZEOF_RECEIVE_SCALE_PARAMETERS_REVISION_1に設定します。
Flags
USHORT ミニポート ドライバーが受信スケール パラメーターで何を行う必要があるかを示す値です。 ドライバーは、これらのフラグを使用して、変更されたパラメーターをすばやく特定し、それに応じて RSS 設定を更新できます。
手記
変更されていない RSS パラメーター情報を参照するフラグは、最適化を目的とします。 フラグが設定されている場合、対応するパラメーターは変更されていません。 フラグがクリアされている場合は、対応するパラメーターが変更されている場合と変更されていない可能性があります。ミニポート ドライバーは、パラメーターの潜在的な変更を判断するために、パラメーターの新しい値と現在の値を比較する必要があります。
クエリ要求で、このメンバーを 0 に設定します。
set 要求では、フラグは次のように定義されます。
価値 | 意味 |
---|---|
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 の Receive Side Scaling (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 以降でサポートされています。 |
ヘッダー | ntddndis.h (Ndis.h を含む) |
関連項目
NDIS_RSS_HASH_FUNC_FROM_HASH_INFO
NDIS_RSS_HASH_INFO_FROM_TYPE_AND_FUNC
NDIS_RSS_HASH_TYPE_FROM_HASH_INFO