具有訊息訊號中斷的 RSS
迷你埠驅動程式可以支援訊息訊號中斷, (MSI) 以改善 RSS 效能。 MSIS 可讓 NIC 在 CPU 上要求中斷,以處理所接收的資料。 如需 MSI 的 NDIS 支援詳細資訊,請參閱 NDIS MSI-X。
下圖說明具有 MSI-X 的 RSS。
在圖中,虛線箭號代表在不同連線上的處理。 具有 MSI-X 的 RSS 可讓 NIC 中斷連線的正確 CPU。
下列程式會針對每個中斷重複執行:
The NIC:
使用 DMA 填入已接收資料的緩衝區。
迷你埠驅動程式會在初始化期間配置共用記憶體中的接收緩衝區。
計算雜湊值。
將緩衝區排入 CPU,並將佇列指派提供給迷你埠驅動程式。 例如,NIC 可以迴圈步驟 1-3 和 DMA 一份收到某些封包之後的 CPU 指派清單。 特定機制會保留給 NIC 設計。
使用 MSI-X,中斷與非空白佇列相關聯的 CPU。
NIC 可以填滿其他接收緩衝區,並隨時將它們新增至佇列,但不會再次中斷該 CPU,直到迷你埠驅動程式啟用該 CPU 的中斷為止。
NDIS 會在目前的 CPU 上呼叫迷你埠驅動程式的 ISR ( MiniportInterrupt) 。
ISR 會停用目前 CPU 上的中斷,並將目前的 CPU 上的 DPC 排入佇列。
當 DPC 在目前的 CPU 上執行時,仍會在其他 CPU 上發生中斷。
NDIS 會針對每個已排入佇列的 DPC 呼叫 MiniportInterruptDPC 函式。 每個 DPC:
- 建置其佇列中所有接收緩衝區的接收描述項,並指出驅動程式堆疊上的資料。 如需詳細資訊,請參閱 指出 RSS 接收資料。
- 啟用目前 CPU 的中斷。 此中斷已完成,且程式會再次啟動。 請注意,不需要任何不可部分完成的作業才能追蹤其他 DPC 的進度。