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 構造体。 ヘッダー が NDIS_OBJECT_TYPE_RSS_CAPABILITIESに指定する構造体の 型 メンバー 設定します。
NDIS 6.60 以降の場合は、リビジョン メンバーを NDIS_RECEIVE_SCALE_CAPABILITIES_REVISION_3 に設定し、サイズ メンバーを NDIS_SIZEOF_RECEIVE_SCALE_CAPABILITIES_REVISION_3に設定します。
NDIS 6.30 以降では、リビジョン メンバーを NDIS_RECEIVE_SCALE_CAPABILITIES_REVISION_2 に設定し、サイズ メンバーを NDIS_SIZEOF_RECEIVE_SCALE_CAPABILITIES_REVISION_2に設定します。
NDIS 6.0、6.1、および 6.20 の場合は、リビジョン メンバーを NDIS_RECEIVE_SCALE_CAPABILITIES_REVISION_1 に設定し、サイズ メンバーを NDIS_SIZEOF_RECEIVE_SCALE_CAPABILITIES_REVISION_1に設定します。
CapabilitiesFlags
NIC の RSS 機能を指定するフラグのビットマスク。 ミニポート ドライバーは、次のフラグを指定できます。
価値 | 意味 |
---|---|
|
NIC がメッセージシグナル割り込み (MSI) をサポートしている場合は、このフラグを設定します。 このフラグは、NIC が CPU に割り当てられているパケットをキューに入れた後に、CPU ごとに個別の割り込みを生成できることを示します。 |
|
NIC が、ターゲット CPU が受信パケットをキューに入れた ミニポートInterrupt 関数に指定できる場合は、このフラグを設定します。 |
|
NIC がメッセージ通知割り込み (MSI) を使用している場合は、このフラグを設定します。 このフラグは、NDIS 6.20 以降でサポートされています。 |
|
NIC がポートの独立した RSS 構成をサポートしている場合は、このフラグを設定します。 このフラグは、NDIS 6.30 以降でサポートされています。 |
|
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 が MIS をサポートしていないが、行ベースの割り込みをサポートしている場合は、この数を 1 に設定します。
NumberOfReceiveQueues
NIC がサポートするハードウェア受信キューの数。
NumberOfIndirectionTableEntries
ミニポート ドライバーが間接テーブルでサポートするエントリの最大数。 この値は 2 の累乗である必要があります。 すべての NDIS 6.30 以降のミニポート アダプターは、仮想関数に必要なこのメンバーをサポートする必要があります。
備考
基になるドライバーは、〘〘OID を OID_GEN_RECEIVE_SCALE_CAPABILITIES して、NIC とそのミニポート ドライバーの受信側スケーリング (RSS) 機能を照会します。
ミニポート ドライバーは、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 以降でサポートされています。 |
ヘッダー | ntddndis.h (Ndis.h を含む) |