共用方式為


具有訊息訊號中斷的 RSS

迷你埠驅動程式可以支援訊息訊號中斷, (MSI) 以改善 RSS 效能。 MSIS 可讓 NIC 在 CPU 上要求中斷,以處理所接收的資料。 如需 MSI 的 NDIS 支援詳細資訊,請參閱 NDIS MSI-X

下圖說明具有 MSI-X 的 RSS。

說明 RSS 與 MSI-X 在網路堆疊中的圖表。

在圖中,虛線箭號代表在不同連線上的處理。 具有 MSI-X 的 RSS 可讓 NIC 中斷連線的正確 CPU。

下列程式會針對每個中斷重複執行:

  1. The NIC:

    1. 使用 DMA 填入已接收資料的緩衝區。

      迷你埠驅動程式會在初始化期間配置共用記憶體中的接收緩衝區。

    2. 計算雜湊值。

    3. 將緩衝區排入 CPU,並將佇列指派提供給迷你埠驅動程式。 例如,NIC 可以迴圈步驟 1-3 和 DMA 一份收到某些封包之後的 CPU 指派清單。 特定機制會保留給 NIC 設計。

    4. 使用 MSI-X,中斷與非空白佇列相關聯的 CPU。

  2. NIC 可以填滿其他接收緩衝區,並隨時將它們新增至佇列,但不會再次中斷該 CPU,直到迷你埠驅動程式啟用該 CPU 的中斷為止。

  3. NDIS 會在目前的 CPU 上呼叫迷你埠驅動程式的 ISR ( MiniportInterrupt) 。

  4. ISR 會停用目前 CPU 上的中斷,並將目前的 CPU 上的 DPC 排入佇列。

    當 DPC 在目前的 CPU 上執行時,仍會在其他 CPU 上發生中斷。

  5. NDIS 會針對每個已排入佇列的 DPC 呼叫 MiniportInterruptDPC 函式。 每個 DPC:

    1. 建置其佇列中所有接收緩衝區的接收描述項,並指出驅動程式堆疊上的資料。 如需詳細資訊,請參閱 指出 RSS 接收資料
    2. 啟用目前 CPU 的中斷。 此中斷已完成,且程式會再次啟動。 請注意,不需要任何不可部分完成的作業才能追蹤其他 DPC 的進度。