Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Miniporttreiber können Message Signaled Interrupts (MSIs) unterstützen, um die RSS-Leistung zu verbessern. MSIs ermöglichen es der NIC, einen Interrupt auf der CPU anzufordern, der die empfangenen Daten verarbeitet. Weitere Informationen zur NDIS-Unterstützung für MSI finden Sie unter NDIS MSI-X.
Die folgende Abbildung zeigt RSS mit MSI-X.
In der Abbildung stellen die gestrichelten Pfeile die Verarbeitung über eine andere Verbindung dar. RSS mit MSI-X ermöglicht der NIC, einen Interrupt an die richtige CPU für eine Verbindung zu senden.
Der folgende Vorgang wird für jeden Interrupt wiederholt:
Die NIC:
Verwendet DMA zum Ausfüllen von Puffern mit empfangenen Daten.
Der Miniporttreiber hat während der Initialisierung die Empfangspuffer im gemeinsam genutzten Speicher zugewiesen.
Berechnet einen Hashwert.
Schiebt den Puffer in die Warteschlange der CPU und stellt die Zuweisungen der Warteschlange dem Miniporttreiber bereit. Beispielsweise könnte die NIC die Schritte 1-3 durchlaufen und dabei mittels DMA eine Liste der CPU-Zuordnungen nach dem Empfang einiger Pakete erstellen. Der spezifische Mechanismus bleibt dem NIC-Design überlassen.
Die CPU, die einer nicht leeren Warteschlange zugeordnet ist, wird durch MSI-X unterbrochen.
Die NIC kann zusätzliche Empfangspuffer ausfüllen und sie jederzeit zur Warteschlange hinzufügen, aber diese CPU nicht erneut unterbrechen, bis der Miniporttreiber die Unterbrechungen für diese CPU aktiviert.
NDIS ruft auf der aktuellen CPU die ISR des Miniporttreibers (MiniportInterrupt) auf.
Der ISR deaktiviert Unterbrechungen auf der aktuellen CPU und stellt einen DPC auf der aktuellen CPU in die Warteschlange.
Unterbrechungen können weiterhin auf den anderen CPUs auftreten, während der DPC auf der aktuellen CPU ausgeführt wird.
NDIS ruft die MiniportInterruptDPC-Funktion für jeden in der Warteschlange befindlichen DPC auf. Jeder DPC:
- Build-Prozesse erhalten Deskriptoren für alle empfangenen Puffer in ihrer Warteschlange und leiten die Daten im Treiber-Stapel weiter. Weitere Informationen finden Sie unter Angeben von RSS-Empfangsdaten.
- Aktiviert Unterbrechungen für die aktuelle CPU. Dieser Interrupt ist abgeschlossen und der Vorgang wird erneut gestartet. Beachten Sie, dass kein atomarer Vorgang erforderlich ist, um den Fortschritt anderer DPCs zu verfolgen.