次の方法で共有


RSS 以外の受信処理

RSS ハンドルをサポートしていないミニポート ドライバーは、このトピックの説明に従って処理を受け取ります。

次の図は、RSS 以外の受信処理を示しています。

RSS なしの送受信処理を示す図。

図では、破線のパスは、送受信処理の代替パスを表しています。 システムはスケーリングを制御するため、最適なパフォーマンスを提供する CPU で処理が常に行われるとは限りません。 接続は、同じ CPU で連続する割り込みによって偶然処理されます。

次のプロセスは、RSS 以外の割り込みサイクルごとに繰り返されます。

  1. NIC は DMA を使用して、受信したデータをバッファーに格納し、システムを中断します。

    ミニポート ドライバーは、初期化中に共有メモリ内の受信バッファーを割り当てた。

  2. NIC は、この割り込みサイクルでいつでも追加の受信バッファーを埋めることができます。 ただし、ミニポート ドライバーが割り込みを有効にするまで、NIC では割り込みは発生しません。

    システムが 1 回の割り込みサイクルで処理する受信バッファーは、さまざまなネットワーク接続に関連付けることができます。

  3. NDIS は、システムによって決定された CPU でミニポート ドライバーの ミニポートInterrupt 関数 (ISR) を呼び出します。

    理想的には、ISR は最もビジー状態の少ない CPU に移動する必要があります。 ただし、一部のシステムでは、使用可能な CPU または NIC に関連付けられている CPU に ISR が割り当てられます。

  4. ISR は割り込みを無効にし、受信したデータを処理する遅延プロシージャ 呼び出し (DPC) をキューに入れるために NDIS を要求します。

  5. NDIS は、現在の CPU の ミニポートInterruptDPC 関数 (DPC) を呼び出します。

  6. DPC ビルドは、受信したすべてのバッファーの記述子を受け取り、ドライバー スタック上のデータを示します。 詳細については、「 ネットワーク データの受信」を参照してください。

    さまざまな接続に対して多数のバッファーが存在する可能性があり、完了する処理が多くなる可能性があります。 後続の割り込みサイクルに関連付けられている受信データは、他の CPU で処理できます。 特定のネットワーク接続の送信処理は、別の CPU でも実行できます。

  7. DPC は割り込みを有効にします。 この割り込みサイクルが完了し、プロセスが再び開始されます。