MSI X テーブル エントリの CPU アフィニティの変更

MSI-X をサポートする NDIS 6.1 以降のミニポート ドライバーは、デバイス割り当て MSI-X メッセージに MSI-X テーブル エントリをマスク、マスク解除、またはマップする NdisMConfigMSIXTableEntry 関数を呼び出すことができます。 RSS をサポートするミニポート ドライバーは、実行時に MSI-X テーブル エントリの CPU アフィニティを変更するために NdisMConfigMSIXTableEntry を使用します。

NdisMConfigMSIXTableEntry は、GUID_MSIX_TABLE_CONFIG_INTERFACE クエリを囲むラッパーです。 ミニポート ドライバーは、NdisMConfigMSIXTableEntry を、NDIS が MiniportInitializeEx 関数を呼び出した後、およびドライバーが MiniportHaltEx 関数から戻る前に、呼び出すことができます。

各 RSS キューの MSI-X テーブル エントリを割り当て、RSS プロセッサの数よりも少ないキューを持つミニポート ドライバーは、MiniportFilterResourceRequirements 関数に追加の MSI-X メッセージ リソースを追加できます。 デバイスの割り当てられたリソースを変更する方法の詳細については、「MSI-X リソース フィルター処理」を参照してください。

ミニポート ドライバーは、MSI X 割り込みリソースの CPU アフィニティを設定して、デバイスが RSS プロセッサごとに少なくとも 1 つの MSI-X メッセージを持つようにすることができます。 PCI バス ドライバーは、最初に n 個の MSI-X テーブル エントリ (n は、NIC ハードウェアがバスに報告した MSI-X テーブル エントリの数) を、変更されたリソース内の最初の n 個の MSI-X メッセージにマップすることに注意してください。 NDIS がMiniportInitializeEx を呼び出した後、ミニポート ドライバーが特定の MSI-X テーブル エントリのターゲット プロセッサを変更すると、ドライバーは NdisMConfigMSIXTableEntry を呼び出して、そのテーブル エントリを、既に目的のプロセッサのアフィニティ セットを持つ MSI-X メッセージにマップします。