Freigeben über


Behandeln von Paket-Koalescing-Empfangsfiltern

Mehrere Empfangsfilter werden über OID-Methodenanforderungen von OID_RECEIVE_FILTER_SET_FILTER in einen Miniporttreiber heruntergeladen. Jeder Filter kann einen oder mehrere Tests (Headerfeldtests) angeben, die der Netzwerkadapter verwendet, um zu bestimmen, ob ein empfangenes Paket in einem Hardware-Koalescingpuffer auf dem Adapter zusammengefügt werden soll.

Bevor der Miniporttreiber den Netzwerkadapter mit den Empfangsfiltern konfiguriert, sollte der Treiber die Empfangsfilter basierend auf den Hardwarefunktionen des Adapters optimieren. Beispielsweise ist für alle Empfangsfilter ein Headerfeldtest für den MAC-Header erforderlich. Daher kann der Treiber Filterregeln basierend auf den Ergebnissen dieses Tests optimieren. Dadurch kann der Adapter bestimmen, welche Feldtests der Open Systems Interconnection (OSI) Schicht 3 (L3) und L4 (Layer 4) als Nächstes ausgeführt werden sollen.

Sobald der Netzwerkadapter mit Empfangsfiltern konfiguriert wurde, muss er Folgendes tun:

  • Alle Headerfeldtestparameter für einen bestimmten Filter müssen auf dem empfangenen Paket übereinstimmen, um das Paket im Koalescingpuffer zu verschmelzen.

    Der Netzwerkadapter kombiniert die Ergebnisse aus allen Headerfeldtests eines Empfangsfilters mit einem logischen AND-Vorgang. Das heißt, wenn ein Headerfeldtest, der im Array der NDIS_RECEIVE_FILTER_FIELD_PARAMETERS-Strukturen für einen Empfangsfilter enthalten ist, fehlschlägt, erfüllt das empfangene Paket nicht das angegebene Filterkriterium und darf nicht zusammengefügt werden.

  • Der Netzwerkadapter überprüft nur Paketdaten basierend auf den angegebenen Headerfeldtestparametern. Der Adapter muss alle Headerfelder im Paket ignorieren, für die keine Headerfeldtests angegeben sind.

  • Wenn ein empfangenes Paket allen Headerfeldtests für einen der Empfangsfilter entspricht, muss der Netzwerkadapter das Paket innerhalb des Hardware-Koalescingpuffers zusammenfügen. Sobald das erste Paket zusammengekoppelt wird, muss der Netzwerkadapter einen Hardwaretimer starten und die Ablaufzeit auf den Wert des MaxCoalescingDelay-Members der NDIS_RECEIVE_FILTER_PARAMETERS-Struktur für den übereinstimmenden Empfangsfilter festlegen.

  • Wenn mehr Pakete empfangen werden, die mit einem Paket-Koalescing-Empfangsfilter übereinstimmen, legt der Netzwerkadapter sie in den Koalescingpuffer.

    Wenn der Hardwaretimer bereits ausgeführt wird, darf der Adapter den Timer für den übereinstimmenden Empfangsfilter nicht beenden oder neu starten. Der Adapter kann jedoch den Hardwaretimer mit dem kleinsten Ablaufwert aus übereinstimmenden Empfangsfiltern konfigurieren. Wenn der Treiber beispielsweise ein Paket empfängt, das dem Empfangsfilter X entspricht, startet der Adapter den Timer mit dem angegebenen Ablaufwert für diesen Empfangsfilter. Wenn der Adapter dann ein Paket empfängt, das dem Empfangsfilter Y entspricht, kann der Adapter den Hardwaretimer mit dem angegebenen Ablaufwert für diesen Empfangsfilter neu konfigurieren.

    Hinweis Der Netzwerkadapter darf den Hardwaretimer nicht neu konfigurieren, wenn die verbleibende Zeit auf dem Timer kleiner als die Ablaufzeit eines Empfangsfilters ist.

  • Sobald empfangene Pakete koalesiert werden, generiert der Netzwerkadapter einen Interrupt, wenn eines der folgenden Ereignisse auftritt:

    • Wenn der verfügbare Speicherplatz innerhalb des Hardware-Koalescingpuffers eine hardwarespezifische Niedrigwassermarke erreicht, muss der Netzwerkadapter einen Empfangsunterbrechung generieren, damit der Miniporttreiber die zusammengeknallten Empfangspakete verarbeiten kann.

    • Wenn der hardwarebasierte Timer, der für den Hardware-Koalescingpuffer verwendet wird, abläuft, muss der Netzwerkadapter einen Empfangsunterbrechung generieren, damit der Miniporttreiber die zusammengehörigen Empfangspakete verarbeiten kann.

    • Wenn ein Empfangsfilter gelöscht und Pakete zusammengelöst wurden, die mit diesem Filter übereinstimmen, muss der Netzwerkadapter einen Empfangsunterbrechung generieren, damit der Miniporttreiber die zusammengeknappten Empfangspakete verarbeiten kann.

    • Wenn ein empfangenes Paket keinem der Empfangsfilter entspricht, muss der Netzwerkadapter einen Empfangsunterbrechung generieren, damit der Miniporttreiber das empfangene Paket verarbeiten kann. Wenn Pakete zusammengefaktet wurden, muss der Miniporttreiber diese Pakete ebenfalls verarbeiten.

    • Wenn der Netzwerkadapter einen Interrupt für einen anderen Interrupt generiert status außer einem Empfangs-Interrupt, muss der Netzwerkadapter auch einen Empfangsunterbrechung status signalisieren, damit der Miniporttreiber die zusammengelösten empfangenen Pakete verarbeiten kann.

    Sobald der Interrupt generiert wird, muss der Netzwerkadapter den Hardwaretimer beenden, wenn er nicht abgelaufen ist, und den Hardware-Koalescingpuffer löschen.

Der Miniporttreiber muss einen koalescierten Paketzähler beibehalten, der einen Wert für die Anzahl der empfangenen Pakete enthält, die einem Paket-Koalescingfilter entsprechen. NDIS fragt diesen Leistungsindikator über eine OID-Abfrageanforderung von OID_PACKET_COALESCING_FILTER_MATCH_COUNT ab.

Der Netzwerkadapter führt nur paketbasiertes Koalescing durch, während die Hardware in einem Zustand mit voller Leistung arbeitet. Während sich die Hardware in einem Energiesparzustand befindet, darf der Adapter nur empfangene Pakete basierend auf Aktivierungsmustern filtern, die über OID-Setanforderungen von OID_PNP_ENABLE_WAKE_UP auf den Adapter geladen wurden.

Wenn der Netzwerkadapter in den Zustand "Full-Power" wechselt, muss der Miniporttreiber die folgenden Schritte ausführen:

  • Der Miniporttreiber muss den Netzwerkadapter so konfigurieren, dass alle zusammengeknappten Pakete innerhalb des Hardware-Koalescingpuffers verworfen werden. Der Netzwerkadapter hat diese Pakete möglicherweise bei der Umstellung in einen Zustand mit geringer Leistung zusammengefemert.

  • Der Miniporttreiber muss den Netzwerkadapter mit den paketverknappenden Empfangsfiltern konfigurieren, die vor dem Übergang mit geringer Leistung in den Treiber heruntergeladen wurden.

  • Der Miniporttreiber muss den zusammengefakteten Paketzähler löschen.