NDIS_RECEIVE_SCALE_CAPABILITIES 構造体 (ntddndis.h)
NDIS_RECEIVE_SCALE_CAPABILITIES構造体は、ミニポート アダプターの受信側スケーリング (RSS) 機能を指定します。
構文
typedef struct _NDIS_RECEIVE_SCALE_CAPABILITIES {
NDIS_OBJECT_HEADER Header;
NDIS_RSS_CAPS_FLAGS CapabilitiesFlags;
ULONG NumberOfInterruptMessages;
ULONG NumberOfReceiveQueues;
USHORT NumberOfIndirectionTableEntries;
} NDIS_RECEIVE_SCALE_CAPABILITIES, *PNDIS_RECEIVE_SCALE_CAPABILITIES;
メンバー
Header
NDIS_RECEIVE_SCALE_CAPABILITIES構造体のNDIS_OBJECT_HEADER構造体。 Header が指定する構造体の Type メンバーをNDIS_OBJECT_TYPE_RSS_CAPABILITIESに設定します。
NDIS 6.60 以降の場合は、 Revision メンバーを NDIS_RECEIVE_SCALE_CAPABILITIES_REVISION_3 に、 Size メンバーを NDIS_SIZEOF_RECEIVE_SCALE_CAPABILITIES_REVISION_3 に設定します。
NDIS 6.30 以降の場合は、 Revision メンバーを NDIS_RECEIVE_SCALE_CAPABILITIES_REVISION_2 に設定し、 Size メンバーを NDIS_SIZEOF_RECEIVE_SCALE_CAPABILITIES_REVISION_2に設定します。
NDIS 6.0、6.1、6.20 の場合、 Revision メンバーを NDIS_RECEIVE_SCALE_CAPABILITIES_REVISION_1 に設定し、 Size メンバーを NDIS_SIZEOF_RECEIVE_SCALE_CAPABILITIES_REVISION_1に設定します。
CapabilitiesFlags
NIC の RSS 機能を指定するフラグのビットマスク。 ミニポート ドライバーは、次のフラグを指定できます。
値 | 意味 |
---|---|
|
NIC でメッセージシグナル割り込み (MSI) がサポートされている場合は、このフラグを設定します。 このフラグは、NIC が CPU に割り当てられているパケットをキューに入れた後、CPU ごとに個別の割り込みを生成できることを示します。 |
|
NIC が、受信パケットをキューに入れたターゲット CPU を MiniportInterrupt 関数に指定できる場合は、このフラグを設定します。 |
|
NIC がメッセージシグナル割り込み (MSI) を使用している場合は、このフラグを設定します。 このフラグは、NDIS 6.20 以降でサポートされています。 |
|
NIC で MSI がサポートされている場合は、このフラグを設定します。 このフラグは、NDIS 6.30 以降でサポートされています。 |
|
ミニポート ドライバーが、ミニポート InterruptDPC 関数からパケットを受信キューに登録されているターゲット CPU を検出できる場合は、このフラグを設定します。 |
|
NIC が IPv4 パケットを識別できる場合 (オプションの有無にかかわらず) このフラグを設定します。 また、NIC では、IPv4 ヘッダー フィールドと TCP ヘッダー フィールドに対するハッシュ値の計算もサポートされています。 |
|
NIC が IPv6 パケットを識別し、IPv6 パケット内のフィールドに対してハッシュ値を計算できる場合は、このフラグを設定します。 NIC は、基本的な IPv6 ヘッダーのフィールドと TCP ヘッダー内のフィールドに対してハッシュ値を計算できる必要があります。 NIC が IPv6 拡張ヘッダーにあるフィールドに対してハッシュ値を計算できない場合は、このフラグを使用します。 |
|
NIC が IPv6 パケットを識別し、IPv6 拡張ヘッダーを含む IPv6 パケットのフィールドに対してハッシュ値を計算できる場合は、このフラグを設定します。 NIC は、基本的な IPv6 ヘッダー、IPv6 拡張ヘッダー、および TCP ヘッダーのフィールドに対してハッシュ値を計算できます。 NIC は、ホーム アドレス オプションのフィールドと IPv6 拡張ヘッダーの type-2 ルーティング ヘッダーに対してハッシュ値を計算できる必要があります。 |
|
オプションの有無にかかわらず NIC が IPv4 パケットを識別できる場合、および NIC が IPv4 ヘッダー フィールドと UDP ヘッダー フィールドに対するハッシュ値の計算をサポートしている場合は、このフラグを設定します。 |
|
NIC が IPv6 パケットを識別し、IPv6 パケット内のフィールドに対してハッシュ値を計算できる場合は、このフラグを設定します。 NIC は、基本的な IPv6 ヘッダーのフィールドと UDP ヘッダー内のフィールドに対してハッシュ値を計算できる必要があります。 NIC が IPv6 拡張ヘッダーにあるフィールドに対してハッシュ値を計算できない場合は、このフラグを使用します。 |
|
NIC が IPv6 パケットを識別し、IPv6 拡張ヘッダーを含む IPv6 パケットのフィールドに対してハッシュ値を計算できる場合は、このフラグを設定します。 NIC は、基本的な IPv6 ヘッダー、IPv6 拡張ヘッダー、および UDP ヘッダーのフィールドに対してハッシュ値を計算できます。 NIC は、ホーム アドレス オプションのフィールドと IPv6 拡張ヘッダーの type-2 ルーティング ヘッダーに対してハッシュ値を計算できる必要があります。 |
|
NIC で toeplitz ハッシュ関数がサポートされている場合は、このフラグを設定します。 NIC で RSS がサポートされている場合は、ハッシュ関数のサポートが必須です。 ハッシュ関数の詳細については、「 NDIS_RSS_HASH_FUNC_FROM_HASH_INFO」を参照してください。 |
|
このフラグは将来利用するために予約されています。 |
|
このフラグは将来利用するために予約されています。 |
|
このフラグは将来利用するために予約されています。 |
NumberOfInterruptMessages
NIC が MSI をサポートしている場合に NIC がサポートする割り込みメッセージの数。 NIC が MSI をサポートしていないが、行ベースの割り込みをサポートしている場合は、この数を 1 に設定します。
NumberOfReceiveQueues
NIC がサポートするハードウェア受信キューの数。
NumberOfIndirectionTableEntries
間接参照テーブルでミニポート ドライバーがサポートするエントリの最大数。 この値は 2 の累乗である必要があります。 すべての NDIS 6.30 以降のミニポート アダプターは、仮想関数に必要なこのメンバーをサポートする必要があります。
注釈
基になるドライバーは、 OID_GEN_RECEIVE_SCALE_CAPABILITIES NIC とそのミニポート ドライバーの受信側スケーリング (RSS) 機能を照会する OID。
ミニポート ドライバーは、 NDIS_RECEIVE_SCALE_CAPABILITIES 構造で RSS 機能を返します。
一部のワークロードでは、ルートの変更や送信者が MTU の制限に従っていないために、UDP パケットのサブセットが断片化される可能性があります。 このようなまれなケースでは、4 タプルまたは 2 タプル ハッシュに基づいて、同じフローのパケットが異なるプロセッサで示される可能性があります。 そのため、 NDIS_RSS_CAPS_HASH_TYPE_UDP_IPV4、NDIS_RSS_CAPS_HASH_TYPE_UDP_IPV6、 NDIS_RSS_CAPS_HASH_TYPE_UDP_IPV6_EXをアドバタイズするミニポート ドライバーは、詳細プロパティを使用して UDP RSS 機能を無効にする方法を 提供する必要 があります。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | NDIS 6.0 以降でサポートされています。 |
Header | ntddndis.h (Ndis.h を含む) |