Reporting Packet Coalescing-Funktionen

Miniport-Treiber registrieren während der Netzwerkadapterinitialisierung die folgenden Funktionen bei NDIS:

  • Die paketverknappenden Funktionen, die der Netzwerkadapter unterstützt.

  • Die Paketverknappungsfunktionen, die derzeit auf dem Netzwerkadapter aktiviert sind.

  • Die Funktionen zur Paketverknappung von Empfangsfiltern, die derzeit auf dem Netzwerkadapter aktiviert sind.

Hinweis Die Unterstützung eines Miniporttreibers für die Paketkopplung kann über die Einstellung *PacketCoalescing INF Schlüsselwort (keyword) aktiviert oder deaktiviert werden. Diese Einstellung wird auf der Eigenschaftenseite Erweitert für den Netzwerkadapter angezeigt. Weitere Informationen zur Einstellung paketverknendende INF-Datei finden Sie unter Standardisierte INF-Schlüsselwörter für paketverknend.

Der Miniporttreiber meldet die Paketverknappungs- und Filterfunktionen des zugrunde liegenden Netzwerkadapters über eine NDIS_RECEIVE_FILTER_CAPABILITIES-Struktur . Wenn die Einstellung *PacketCoalescing Schlüsselwort (keyword) in der Registrierung den Wert 1 aufweist, wird die Paketkoalisierung aktiviert, und der Miniporttreiber initialisiert die NDIS_RECEIVE_FILTER_CAPABILITIES-Struktur wie folgt:

  1. Der Miniporttreiber initialisiert das Headerelement . Der Treiber legt den Typmember von Header auf NDIS_OBJECT_TYPE_DEFAULT fest.

    Wenn der Treiber das Zusammenfügen von Paketen unterstützt, legt er den Revisionsmember von Header auf den NDIS_RECEIVE_FILTER_CAPABILITIES_REVISION_2 und das Element Größe auf NDIS_SIZEOF_RECEIVE_FILTER_CAPABILITIES_REVISION_2 fest.

  2. Der Miniporttreiber legt das NDIS_RECEIVE_FILTER_PACKET_COALESCING_SUPPORTED_ON_DEFAULT_QUEUE-Flag im SupportedQueueProperties-Element fest.

    Wenn dieses Flag festgelegt ist, muss der Netzwerkadapter das Filtern empfangener Multicastpakete in Hardware unterstützen. Diese Filterung basiert auf den Multicastadressen, die NDIS auf den Netzwerkadapter ausgelagert hat, indem sie OID_802_3_MULTICAST_LIST Anforderungen für OID-Mengen gesendet wird.

    Hinweis Protokolltreiber können auch den Inhalt der Multicastadressenliste ändern, indem sie OID_802_3_ADD_MULTICAST_ADDRESS und OID_802_3_DELETE_MULTICAST_ADDRESS Anforderungen senden. NDIS kombiniert diese Anforderungen in OID_802_3_MULTICAST_LIST OID-Set-Anforderungen.

Hinweis Der Adapter muss alle eingehenden Multicastpakete ablehnen, deren MAC-Adresse (Destination Media Access Control) keiner der multicast-Adressen entspricht, die von diesen OID-Set-Anforderungen angegeben werden.

  1. Der Miniporttreiber legt das flag NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED im EnabledFilterTypes-Element fest.

    Hinweis Wenn der Treiber dieses Flag festlegt, muss er auch das NDIS_RECEIVE_FILTER_PACKET_COALESCING_SUPPORTED_ON_DEFAULT_QUEUE-Flag im SupportedQueueProperties-Element festlegen. Andernfalls schlägt NDIS den Aufruf von NdisMSetMiniportAttributes fehl, indem NDIS_STATUS_BAD_CHARACTERISTICS zurückgegeben wird.

  2. Wenn der Miniporttreiber das NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED-Flag festlegt, muss der Treiber alle Testkriterien des Empfangsfilters unterstützen. Der Treiber kündigt diese Unterstützung an, indem er die folgenden Flags im SupportedFilterTests-Member festlegt:

    • NDIS_RECEIVE_FILTER_TEST_HEADER_FIELD_EQUAL_SUPPORTED

    • NDIS_RECEIVE_FILTER_TEST_HEADER_FIELD_MASK_EQUAL_SUPPORTED

    • NDIS_RECEIVE_FILTER_TEST_HEADER_FIELD_NOT_EQUAL_SUPPORTED

    Hinweis Wenn der Miniporttreiber das flag NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED nicht festgelegt, muss der Treiber das SupportedFilterTests-Element auf 0 (null) festlegen.

  3. Wenn der Miniporttreiber das flag NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED festlegt, muss der Miniporttreiber das Filtern von Daten in verschiedenen Feldern der Header für die Medienzugriffssteuerung (Media Access Control, MAC), IP-Version 4 (IPv4) und IP-Version 6 (IPv6) unterstützen. Der Treiber kündigt diese Unterstützung an, indem er die folgenden Flags im SupportedHeaders-Element festlegt:

    • NDIS_RECEIVE_FILTER_MAC_HEADER_SUPPORTED

    • NDIS_RECEIVE_FILTER_ARP_HEADER_SUPPORTED

    • NDIS_RECEIVE_FILTER_IPV4_HEADER_SUPPORTED

    • NDIS_RECEIVE_FILTER_IPV6_HEADER_SUPPORTED

    • NDIS_RECEIVE_FILTER_UDP_HEADER_SUPPORTED

    Hinweis Wenn der Miniporttreiber das NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED-Flag nicht festgelegt, muss der Treiber das SupportedHeaders-Element auf 0 (null) festlegen.

  4. Wenn der Miniporttreiber das flag NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED festlegt, muss der Miniporttreiber das Filtern von Daten innerhalb des MAC-Headers (Media Access Control) des empfangenen Pakets unterstützen. Der Treiber kündigt diese Unterstützung an, indem er die folgenden Flags im SupportedMacHeaderFields-Element festlegt:

    • NDIS_RECEIVE_FILTER_MAC_HEADER_DEST_ADDR_SUPPORTED

    • NDIS_RECEIVE_FILTER_MAC_HEADER_PROTOCOL_SUPPORTED

    • NDIS_RECEIVE_FILTER_MAC_HEADER_PACKET_TYPE_SUPPORTED

    Hinweis Wenn der Miniporttreiber das flag NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED nicht festgelegt, muss der Treiber das SupportedMacHeaderFields-Element auf 0 (null) festlegen.

  5. Wenn der Miniporttreiber das NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED-Flag festlegt, muss der Miniporttreiber das Filtern von Daten im Header eines empfangenen ARP-Pakets (Address Resolution Protocol) unterstützen. Der Treiber kündigt diese Unterstützung an, indem er die folgenden Flags im SupportedARPHeaderFields-Element festlegt:

    • NDIS_RECEIVE_FILTER_ARP_HEADER_OPERATION_SUPPORTED

    • NDIS_RECEIVE_FILTER_ARP_HEADER_SPA_SUPPORTED

    • NDIS_RECEIVE_FILTER_ARP_HEADER_TPA_SUPPORTED

    Hinweis Wenn der Miniporttreiber das NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED-Flag nicht festgelegt, muss der Treiber das SupportedARPHeaderFields-Element auf 0 (null) festlegen.

  6. Wenn der Miniporttreiber das flag NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED festlegt, muss der Miniporttreiber das Filtern von Daten innerhalb des L3-Headers (Open Systems Interconnection) eines empfangenen IPv4-Pakets (IPv4) unterstützen. Der Treiber kündigt diese Unterstützung an, indem er die folgenden Flags im SupportedIPv4HeaderFields-Element festlegt:

    • NDIS_RECEIVE_FILTER_IPV4_HEADER_PROTOCOL_SUPPORTED

    Hinweis Wenn der Miniporttreiber das flag NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED nicht festgelegt, muss der Treiber das SupportedIPv4HeaderFields-Element auf Null festlegen.

  7. Wenn der Miniporttreiber das flag NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED festlegt, muss der Miniporttreiber das Filtern von Daten im L3-Header eines empfangenen IPv6-Pakets (IP Version 6) unterstützen. Der Treiber kündigt diese Unterstützung an, indem er die folgenden Flags im SupportedIPv6HeaderFields-Element festlegt:

    • NDIS_RECEIVE_FILTER_IPV6_HEADER_PROTOCOL_SUPPORTED

    Hinweis Wenn der Miniporttreiber das flag NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED nicht festgelegt, muss der Treiber das SupportedIPv6HeaderFields-Element auf 0 (null) festlegen.

  8. Wenn der Miniporttreiber das flag NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED festlegt, muss der Miniporttreiber das Filtern von Daten innerhalb des L4-Headers (OSI Layer 4) eines empfangenen UDP-Pakets (User Datagram Protocol) unterstützen. Der Treiber kündigt diese Unterstützung an, indem er die folgenden Flags im SupportedIUdpHeaderFields-Element festlegt:

    • NDIS_RECEIVE_FILTER_UDP_HEADER_DEST_PORT_SUPPORTED

    Hinweis Wenn das empfangene UDP-Paket IPv4-Optionen oder IPv6-Erweiterungsheader enthält, kann der Netzwerkadapter das Paket so behandeln, als ob der UDP-Filtertest fehlgeschlagen wäre. Auf diese Weise kann der Adapter das empfangene Paket automatisch löschen.

Hinweis Wenn der Miniporttreiber das flag NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED nicht festgelegt, muss der Treiber das SupportedIUdpHeaderFields-Element auf 0 (null) festlegen.

  1. Der Miniporttreiber muss die maximale Anzahl von Tests für Paketheaderfelder melden, die für einen einzelnen Paket-Zusammenführungsfilter angegeben werden können. Der Treiber gibt diesen Wert im MaxFieldTestsPerPacketCoalescingFilter-Element an.

    Hinweis Netzwerkadapter, die das Zusammenfügen von Paketen unterstützen, müssen fünf oder mehr Paketheaderfelder unterstützen, die für einen einzelnen Paketverknappungsfilter angegeben werden können. Wenn der Adapter das Zusammenfügen von Paketen nicht unterstützt, muss der Miniporttreiber diesen Wert auf 0 (null) festlegen.

  2. Der Miniporttreiber muss die maximale Anzahl von Paketverknappungsfiltern melden, die vom Netzwerkadapter unterstützt werden. Der Treiber gibt diesen Wert im MaxPacketCoalescingFilters-Element an.

    Hinweis Netzwerkadapter, die die Paketverknappung unterstützen, müssen zehn oder mehr Paketverknappungsfilter unterstützen. Wenn der Adapter das Zusammenfügen von Paketen nicht unterstützt, muss der Miniporttreiber diesen Wert auf 0 (null) festlegen.

Wenn NDIS die MiniportInitializeEx-Funktion des Miniporttreibers aufruft, meldet der Treiber die Paketzusammenführungs- und Filterfunktionen des zugrunde liegenden Netzwerkadapters, indem er die folgenden Schritte ausführt:

Die Methode, die von Miniporttreibern verwendet wird, um die Paketverknappungs- und Filterfunktionen des zugrunde liegenden Netzwerkadapters zu melden, basiert auf der NDIS 6.20-Methode zum Melden von Energieverwaltungsfunktionen. Weitere Informationen zu dieser Methode finden Sie unter Reporting Power Management Capabilities.For more information about this method, see Reporting Power Management Capabilities.

Weitere Informationen zum Adapterinitialisierungsprozess finden Sie unter Initialisieren eines Miniportadapters.