Nicht-RSS-Empfangsverarbeitung
Miniporttreiber, die keine RSS-Handle-Empfangsverarbeitung unterstützen, wie in diesem Thema beschrieben.
Die folgende Abbildung veranschaulicht die Nicht-RSS-Empfangsverarbeitung.
In der Abbildung stellen die gestrichelten Pfade einen alternativen Pfad für die Sende- und Empfangsverarbeitung dar. Da das System die Skalierung steuert, erfolgt die Verarbeitung nicht immer auf der CPU, die die beste Leistung bietet. Verbindungen werden nur zufällig auf derselben CPU über aufeinander folgende Unterbrechungen verarbeitet.
Der folgende Prozess wird für jeden Nicht-RSS-Interruptzyklus wiederholt:
Die NIC verwendet DMA, um einen Puffer mit empfangenen Daten zu füllen und das System zu unterbrechen.
Der Miniporttreiber hat während der Initialisierung die Empfangspuffer im freigegebenen Speicher zugeordnet.
Die Netzwerkkarte kann in diesem Unterbrechungszyklus jederzeit weitere Empfangspuffer füllen. Die Netzwerkkarte wird jedoch erst wieder unterbrochen, wenn der Miniporttreiber Interrupts aktiviert.
Die empfangenen Puffer, die das System in einem Unterbrechungszyklus verarbeitet, können vielen verschiedenen Netzwerkverbindungen zugeordnet werden.
NDIS ruft die MiniportInterrupt-Funktion (ISR) des Miniporttreibers für eine systembestimmte CPU auf.
Im Idealfall sollte die ISR an die am wenigsten ausgelastete CPU wechseln. In einigen Systemen weist das System die ISR jedoch einer verfügbaren CPU oder einer CPU zu, die der NIC zugeordnet ist.
Der ISR deaktiviert die Interrupts und fordert NDIS auf, einen verzögerten Prozeduraufruf (DPC) in die Warteschlange zu stellen, um die empfangenen Daten zu verarbeiten.
NDIS ruft die MiniportInterruptDPC-Funktion (DPC) auf der aktuellen CPU auf.
Die DPC-Builds empfangen Deskriptoren für alle empfangenen Puffer und geben die Daten im Treiberstapel an. Weitere Informationen finden Sie unter Empfangen von Netzwerkdaten.
Es kann viele Puffer für viele verschiedene Verbindungen geben, und es ist möglicherweise eine menge Verarbeitung zu erledigen. Die empfangenen Daten, die nachfolgenden Interruptzyklen zugeordnet sind, können auf anderen CPUs verarbeitet werden. Die Sendeverarbeitung für eine bestimmte Netzwerkverbindung kann auch auf einer anderen CPU ausgeführt werden.
Der DPC aktiviert die Interrupts. Dieser Unterbrechungszyklus ist abgeschlossen, und der Prozess wird erneut gestartet.