Freigeben über


WLAN-Energieverwaltung für moderne Standbyplattformen

In einer Windows-Hardwareplattform, die das moderne Standby-Energiemodell implementiert, behält das Wi-Fi-Gerät seine Verbindung mit dem Netzwerk bei, während sich die Plattform im modernen Standby-Energiezustand befindet. Eine korrekte Energieverwaltung des Wi-Fi-Geräts – sowohl im modernen Standby als auch bei eingeschaltetem Display – ist für eine lange Akkulaufzeit unerlässlich.

Wi-Fi ist eine überall anzutreffende drahtlose Technologie mit mittlerer Reichweite, die Kommunikation mit großer Bandbreite und geringer Latenz zwischen Computersystemen, Geräten und dem Internet ermöglicht.

Jede Windows-Hardwareplattform, die Modern Standby unterstützt, muss entweder mit einem WLAN Gerät oder einem mobilen Breitbandgerät (MBB) ausgestattet sein. Da die WLAN-Integration gängiger und verbreiteter ist, wird erwartet, dass das WLAN-Gerät aktiviert und fast die gesamte Zeit verbunden ist.

Überblick

Ein WLAN-Gerät in einer Modern-Standby-Plattform muss mehrere wichtige Energieverwaltungs-Features unterstützen, um den Stromverbrauch sowohl auf dem Gerät als auch auf der Plattform insgesamt zu verringern.

Das erste Feature – als Stromsparmodus bezeichnet – ermöglicht es dem WLAN-Gerät, seinen Stromverbrauch zu verringern, während es weiterhin mit dem Zugriffspunkt verbunden bleibt. Der Stromsparmodus reduziert den Stromverbrauch auf Kosten einer erhöhten Datenübertragungslatenz. Es wird erwartet, dass der Stromsparmodus immer aktiviert ist, wenn die Plattform auf Akkustrom ausgeführt wird, außer wenn Verbindungen mit geringer Latenz erforderlich sind (z. B. für VOIP-Anrufe). Weitere Informationen finden Sie unter Automatischer WLAN-Stromsparmodus.

Das zweite wichtige Energieverwaltungs-Feature ist Aufwecken bei Musterübereinstimmung. Mit diesem Feature kann Windows das WLAN-Gerät dazu bringen, das System on a Chip (SoC) aufzuwecken, wenn das WLAN-Gerät ein Netzwerkpaket erkennt, das mit einem gespeicherten Muster übereinstimmt. Aufwecken bei Musterübereinstimmung ist nur während Modern Standby verfügbar. Während Aufwecken bei Musterübereinstimmung aktiviert ist, wird das WLAN-Gerät in einem sehr niedrigen Strommodus ausgeführt und es achtet auf eingehende Daten, die für bestimmte Systemdienste oder registrierte Anwendungen bestimmt sind (z. B. Pushbenachrichtigungen und E-Mails). Währenddessen befinden sich die anderen Komponenten in der Hardwareplattform in einem Niedrigstromzustand. Weitere Informationen finden Sie unter Netzwerk-Aufweckereignisse.

Darüber hinaus müssen WLAN-Geräte in einer Modern-Standby-Plattform die folgenden Runtime-Energieverwaltungs-Features unterstützen:

In diesem Artikel finden Sie eine Designanleitung für WLAN-Geräte in einer Modern-Standby-Plattform, die mit dem SoC über den Secure Digital Input/Output (I/O) (SDIO)- oder PCI Express (PCIe)-Bus oder physisch in den SoC selbst integriert sind. Microsoft hat keine WLAN-Geräte getestet, die sich über Universal Serial Bus (USB) mit Modern-Standby-Plattformen verbinden, und veröffentlicht keine Designanleitung für solche Geräte.

Das WLAN-Gerät wird von einem WLAN-Miniporttreiber verwaltet, den der Anbieter des WLAN-Geräts bereitstellt. Windows stellt Energieverwaltungs-Anforderungen (NDIS OIDs) auf dem Gerät aus, um den Stromsparmodus und das Aufwecken bei Musterübereinstimmung zu konfigurieren. Windows aktiviert und deaktiviert das Aufwecken bei Musterübereinstimmung, wenn die Plattform in Modern Standby übergeht oder es verlässt. Der WLAN-Miniporttreiber verarbeitet diese Anforderungen durch Konfigurieren des WLAN-Geräts über den SDIO-, PCIe- oder proprietären SoC-Bus.

Das WLAN-Gerät in einer Modern-Standby-Plattform ist fast immer eingeschaltet und es wird erwartet, dass es sehr stromeffizient ist. Wenn keine Daten über den WLAN-Link übertragen werden und der Stromsparmodus ist aktiviert, sollte das WLAN-Gerät im Durchschnitt weniger als 10 Milliwatt verbrauchen. Wenn der Benutzer den Radio-Ein/Aus-Zustand auf Aus festgelegt hat, indem er den Flugzeugmodus aktiviert oder explizit WLAN in der Anwendung Windows-Einstellungen deaktiviert hat, muss das WLAN-Gerät weniger als 1 Milliwatt im Durchschnitt verbrauchen.

Energieverwaltungsmodi des Geräts

Das Wi-Fi Gerät muss mehrere Energieverwaltungsmodi unterstützen. Jeder Modus ist eine Kombination von Geräteaktivität, Netzwerkkonnektivität und Aktivierung von Aufwecken bei Musterübereinstimmung.

Aktiv

Das WLAN-Gerät ist mit dem Netzwerk verbunden und sendet aktiv Daten.

Übergangsmechanismus: Die Hardware des WLAN-Geräts wechselt unabhängig vom Verbunden-Inaktiv-Modus zum aktiven Modus.

Verbunden-Inaktiv

Das WLAN-Gerät ist mit dem Netzwerk verbunden, übermittelt jedoch nicht aktiv Daten.

Übergangsmechanismus:

  • Die Hardware des WLAN-Geräts wechselt unabhängig vom Verbunden-Inaktiv-Modus zum aktiven Modus.
  • Der Stromverbrauch des Geräts im aktiven Modus ist abhängig von der Drahtlostechnologie (d. h. 802.11a/b/g/n), dem Abstand zum Zugriffspunkt, der Menge der übertragenen Daten usw.
Verbunden-Ruhezustand

Das WLAN-Gerät ist mit dem Zugriffspunkt verbunden, aber der Rest der Plattform befindet sich in einem sehr niedrigen Leistungszustand. Aufwecken bei Musterübereinstimmung ist aktiviert, sodass das WLAN-Gerät das SoC bei einer bestimmten Gruppe eingehender Netzwerkpakete aktiviert.

Übergangsmechanismus:

  • Bevor das Wi-Fi Gerät D0 verlässt, sendet NDIS eine OID_PM_ADD_WOL_PATTERN-Anforderung, um den WLAN-Miniporttreiber anzuweisen, Aufwecken bei Musterübereinstimmung hinzuzufügen.
  • Um den WLAN-Miniporttreiber anzuweisen, Aufwecken bei Musterübereinstimmung zu aktivieren, sendet NDIS eine OID_PM_PARAMETERS-Anforderung.
  • NDIS sendet eine OID_PNP_SET_POWER-Anforderung mit dem NDIS_DEVICE_POWER_STATE-Wert NdisDeviceStateD2 (für SDIO) oder NdisDeviceStateD3 (für PCIe).
Getrennt-Ruhezustand

Das WLAN-Gerät wird unterstützt, ist jedoch nicht mit einem Zugriffspunkt verbunden, da kein bevorzugter Zugriffspunkt innerhalb des Bereichs liegt. Der Rest der Plattform befindet sich in einem sehr niedrigem Leistungszustand. Aufwecken bei Musterübereinstimmung ist aktiviert und die Netzwerkabladeliste wird auf das WLAN-Gerät eingelotet. Das WLAN-Gerät verwendet die Netzwerkabladeliste, um regelmäßig nach bevorzugten Netzwerken für die Verbindungsherstellung zu suchen.

Übergangsmechanismus:

  • Das WLAN-Gerät verwendet die Netzwerkabladeliste, um periodisch nach bevorzugten Netzwerken für die Verbindungsherstellung zu suchen.
  • Wenn ein übereinstimmende Netzwerk während dieser regelmäßigen Überprüfungen gefunden wird, weckt das WLAN-Gerät das SoC auf.
Radio aus

Das WLAN-Gerät wird weiterhin mit Strom versorgt, doch das Radio (RF-Komponenten) ist heruntergefahren.

Übergangsmechanismus:

  • Während es sich in D0 befindet, sendet NDIS eine OID_DOT11_NIC_POWER_STATE-Anforderung mit dem Wert FALSE, der angibt, dass das Radio ausgeschaltet werden soll.
Gerät ist heruntergefahren

Das WLAN-Gerät wurde vollständig heruntergefahren.

Übergangsmechanismus:

  • NDIS sendet eine OID_PNP_SET_POWER-Anforderung mit dem NDIS_DEVICE_POWER_STATE-Wert NdisDeviceStateD3.
  • Wenn das WLAN-Gerät mit SDIO oder PCIe verbunden ist, trennt die ACPI-Firmware des Systems das WLAN-Gerät vom Strom oder setzt es zurück, indem es eine GPIO-Leitung vom SoC zum WLAN-Gerät verwendet.
  • Wenn das WLAN-Gerät in das SoC integriert ist, ist die System-Firmware verantwortlich für das Ausschalten oder Zurücksetzen des WLAN-Geräts mithilfe eines proprietären Mechanismus.

Durchschnittlicher Stromverbrauch und Exit-Latenz

In der folgenden Tabelle wird der erwartete Stromverbrauch und die Latenz beim Beenden eines aktiven Zustands für jeden Energieverwaltungsmodus angezeigt. Bei diesen Zahlen wird davon ausgegangen, dass das WLAN-Gerät ständig mit einem einzelnen Zugriffspunkt verbunden ist, der über WPA2-Personal-Sicherheit verfügt, außer im Getrennt-Ruhezustand-Modus und im Strom-getrennt-Modus.


Energieverwaltungsmodi des Geräts Energiezustand des Geräts Durchschnittlicher Stromverbrauch Beenden der Latenz für aktiv
Aktiver Modus D0 <= 750 Milliwatt
Verbunden-Inaktiv-Modus D0 <= 25 Milliwatt <= 100 Millisekunden
Verbunden-Ruhezustand-Modus D2 für SDIO; D3 für PCIe <= 10 Milliwatt <= 300 Millisekunden
Getrennt-Ruhezustand-Modus D2 für SDIO; D3 für PCIe <= 10 Milliwatt <= 300 Millisekunden
Radio-aus-Modus D0 oder D2 <= 1 Milliwatt <= 2 Sekunden
Strom-getrennt-Modus (Aufwecken deaktiviert) D3 <= 1 Milliwatt <= 5 Sekunden

Für SDIO-verbundene Geräte ist D2 der tiefste weckbare Gerätestromzustand für Modern Standby. Für PCIe-verbundene Geräte ist D3 (genauer gesagt der D3hot-Unterzustand) der tiefste weckbare Gerätestromzustand für Modern Standby.

Windows 8, Windows 8.1 und Windows 10 unterstützen Modern Standby auf Off-SoC-WLAN-Geräten, die sich über den SDIO-Bus verbinden. Windows 8.1 unterstützt zusätzlich Moderne Standby auf Off-SoC-WLAN-Geräten, die sich über den PCIe-Bus verbinden.

Anforderungen, wenn ein WLAN-Gerät Schaltungen teilt

In einigen WLAN-Gerätedesigns teilt das WLAN-Gerät analoge und RF-Schaltungen mit den Bluetooth- und optionalen FM-Radiokommunikationsgeräten. In diesen WLAN-Gerätedesigns darf keine Stromzustandsabhängigkeit zwischen dem WLAN-Gerät und den anderen integrierten Kommunikationsgeräten vorhanden sein. Das WLAN-Gerät muss über interne Stromtaktschaltungen verfügen, um einen durchschnittlichen Stromverbrauch von weniger als 1 Milliwatt im Radio-aus-Modus sicherzustellen.

Softwaremechanismen für die Energieverwaltung

Die Energieverwaltung des WLAN-Geräts basiert hauptsächlich auf den NDIS-Befehlen, die der WLAN-Miniporttreiber vom Windows-Netzwerk-Subsystem empfängt. Der WLAN-Miniporttreiber ist für die Übersetzung dieser NDIS-Befehle (als OID-Anforderungen bezeichnet) in gerätespezifische Nachrichten verantwortlich, die an das WLAN-Gerät über den I/O-Bus gesendet werden.

Die Entwicklung eines NDIS-Treibers ist eine komplexe Aufgabe, deren Umfang über WLAN-Gerät-Energieveraltung hinausgeht. Hilfe zum Verständnis dieses Abschnitts finden Sie im Thema Natives 802.11 Wireless LAN. Wenn Sie ein WLAN-Entwickler sind, sollten Sie sich mit den Netzwerkgerätetests im Windows Hardware-Zertifizierungskit vertraut machen und diese Tests als De-facto-Referenz verwenden, um sicherzustellen, dass ein WLAN-Gerät und sein WLAN-Miniporttreiber ordnungsgemäß funktionieren.

Es wird erwartet, dass das WLAN-Gerät immer eingeschaltet und mit einem Netzwerk verbunden ist, außer wenn sich eine Modern-Standby-Plattform im Systembetriebszustand S5 (Herunterfahren) befindet. Eine korrekte Energieverwaltung des WLAN-Geräts – sowohl im Modern Standby als auch bei eingeschaltetem Display – ist für eine lange Akkulaufzeit unerlässlich. Der Energieverwaltungsmodus des WLAN-Geräts kann häufig geändert werden, da das Gerät auf Softwareanforderungen reagiert, um nach neuen Netzwerken zu suchen, oder das Gerät selbst erkennt, dass der Zugriffspunkt getrennt wurde. Die Softwaremechanismen für die Energieverwaltung und der resultierende Stromverbrauch in der folgenden Diskussion gehen davon aus, dass das WLAN-Gerät mit einem einzigen Zugriffspunkt verbunden ist, der eine angemessene Signalstärke aufweist.

Der WLAN-Miniporttreiber muss die folgenden wichtigsten Energieverwaltungsfunktionen aktivieren, um sicherzustellen, dass das WLAN-Gerät sowohl während Modern Standby als auch bei eingeschalteter Anzeige stromeffizient ist:

In den folgenden Absätzen werden die Anforderungen für diese beiden Features ausführlich erläutert.

Neben dem Stromsparmodus und dem Aufwecken bei Musterübereinstimmung müssen das WLAN-Gerät und der WLAN-Miniporttreiber mehrere andere Features unterstützen. Weitere Informationen finden Sie unter Weitere Anforderungen für WLAN-Energieverwaltung.

Stromsparmodus

Die Spezifikation 802.11 beschreibt einen automatischen Stromsparmodus (auch bezeichnet als Power Save Polling) für WLAN-Netzwerke. In diesem Modus überspringt das WLAN-Radio die Abfrage für eine Teilmenge von Übertragungsbeacons, wodurch der durchschnittliche Stromverbrauch des Geräts reduziert wird. Windows erfordert, dass das WLAN-Gerät den Stromsparmodus einschaltet, wenn das Gerät im Energieverwaltungsmodus Aktiv (D0), Verbunden-Inaktiv (D0) oder Verbunden-Ruhezustand (D2 für SDIO; D3 für PCIe) ist. Der Stromsparmodus ist nicht sinnvoll, wenn sich das WLAN-Gerät im Energieverwaltungsmodus „Radio aus“ befindet.

Der WLAN-Miniporttreiber muss den Stromsparmodus unterstützen und aktivieren, wenn sich das WLAN-Gerät in den folgenden Energieverwaltungsmodi befindet:

  • Aktiv (D0)
  • Verbunden-Inaktiv (D0)
  • Verbunden-Ruhezustand (D2/D3)

Der WLAN-Miniporttreiber muss Windows melden, dass es die automatische Aushandlung des Stromsparmodus unterstützt, indem das bAutoPowerSaveMode-Element der DOT11_EXTSTA_ATTRIBUTES-Struktur auf TRUE festgelegt wird. Als Reaktion auf diese Einstellung sendet Windows eine OID_DOT11_POWER_MGMT_MODE_AUTO_ENABLED-Anforderung an den WLAN-Miniporttreiber. Diese Anforderung weist den Treiber an, den Stromsparmodus automatisch zu aktivieren. Der WLAN-Miniporttreiber muss die Funktionen des Remotezugriffspunkts und des WLAN-Geräts selbst verwenden, um die richtige Stromsparstufe zu ermitteln, die aktiviert werden soll.

Wenn der automatische Stromsparmodus aktiviert ist, sendet Windows möglicherweise eine OID_DOT11_POWER_MGMT_REQUEST-Anforderung an den WLAN-Miniporttreiber. Diese Meldung gibt eine der vier definierten Stromsparstufen an. Die Stromsparstufe in dieser Nachricht muss als Hinweis auf den WLAN-Miniporttreiber für die Stromsparerwartungen des Betriebssystems oder des Benutzers zur aktuellen Zeit behandelt werden. Der von der OID_DOT11_POWER_MGMT_REQUEST-Anforderung zurückgegebene Wert kann verwendet werden, wenn der Treiber nicht erkennen kann, dass der Remotezugriffspunkt den Stromsparmodus unterstützt.

Aufwecken bei Musterübereinstimmung

Windows erfordert, dass alle Netzwerkgeräte in einer Modern-Standby-Plattform das Aufwecken bei Musterübereinstimmung unterstützen. Dieses Feature ermöglicht es dem Netzwerkgerät, die Netzwerkverbindung für interessante Pakete zu überwachen (indem eingehende Pakete mit Mustern verglichen werden, die auf dem Gerät gespeichert sind), während das SoC oder der Chipsatz ausgeschaltet sind, und den Hauptprozessor auf dem SoC oder dem Chipsatz aufzuwecken, wenn ein übereinstimmendes Muster erkannt wird. Diese Möglichkeit, WLAN-Verarbeitung vom Hauptprozessor abzuladen, ist wichtig, um Niedrigstrombetrieb in Modern Standby zu erzielen. Bevor die Plattform in Modern Standby übergeht und das WLAN-Gerät in den Verbunden-Ruhezustand (D2 für SDIO; D3 für PCIe) wechselt, sendet Windows eine Sammlung interessanter Muster an den Miniporttreiber, auf die das WLAN-Gerät überwacht werden muss.

Aufwecken bei Musterübereinstimmung ist eine wichtige Aktivierungsfunktion für Modern Standby. Aufwecken bei Musterübereinstimmung wird aktiviert, wenn das WLAN-Gerät im Verbunden-Ruhezustand-Modus (D2/D3) ausgeführt wird. Bevor das WLAN-Gerät in diesen Modus übergeht, weist Windows das Gerät an, alle Netzwerkpakete zu ignorieren, mit Ausnahme derjenigen, die einer angegebenen Reihe von Mustern entsprechen. Windows erstellt die Übereinstimmungsmuster basierend auf den Diensten und Anwendungen (z. B. Pushbenachrichtigungen und E-Mails), die derzeit verwendet werden. Das Abladen von Mustern zum WLAN-Gerät macht es möglich, dass der Rest der Hardwareplattform entweder deaktiviert oder in einem Niedrigstrommodus ist. Derweil bleibt das WLAN-Gerät eingeschaltet und wartet auf wichtigen eingehenden Netzwerkdatenverkehr.

Um Aufwecken bei übereinstimmenden Mustern zu unterstützen, muss der WLAN-Miniporttreiber zuerst ankündigen, dass er den Verbunden-Ruhezustand-Modus (D2/D3) unterstützt und dass er das System aus dem D2/D3-Energiezustand aufwecken kann. Um die Unterstützung für Aufwecken bei übereinstimmenden Mustern anzukündigen, muss der WLAN-Miniporttreiber folgendes tun:

  • Festlegen des Bits NDIS_PM_WOL_BITMAP_PATTERN im Element SupportedWoLPacketPatterns de Struktur NDIS_PM_CAPABILITIES, um anzugeben, dass das WLAN-Gerät das SoC basierend auf der Bitmapmustererkennung unterstützt.

  • Festlegen des Elements MinPatternWakeUp der Struktur NDIS_PM_CAPABILITIES auf NdisDeviceStateD2 (für SDIO) oder NdisDeviceStateD3 (für PCIe), um anzugeben, dass das WLAN-Gerät das SoC aktivieren kann, wenn sich das Gerät im D2/D3-Energiezustand befindet und ein übereinstimmendes Muster erkannt wird.

  • Festlegen des Elements NumTotalWoLPatterns der Struktur NDIS_PM_CAPABILITIES auf einen Wert mit 22 Dezimalstellen (oder mehr). Dieser Wert gibt an, dass Windows das WLAN-Gerät mit bis zu 22 (oder mehr) eindeutigen übereinstimmenden Mustern zum Aktivieren des SoC programmieren kann.

  • Festlegen des Bits NDIS_PM_WAKE_PACKET_INDICATION_SUPPORTED Bit im Element Flags der Struktur NDIS_PM_CAPABILITIES-Struktur. Dieses Flag gibt an, dass das WLAN-Gerät das Speichern und Abrufen des Pakets unterstützt, was dazu führt, dass das WLAN-Gerät das SoC aufweckt.

Wenn Windows zuerst erkennt, dass ein Systemdienst oder eine gehostete Anwendung Unterstützung für Aufwecken bei übereinstimmenden Mustern erfordert, sendet er die OID_PM_ADD_WOL_PATTERN-Anforderung an den WLAN-Miniporttreiber, um das Muster für die Übereinstimmung anzugeben. Diese Anforderung wird deutlich vor dem Zeitpunkt gesendet, da das Gerät in den Modus Verbunden-Ruhezustand (D2/D3) übergeht.

Übergehen in Verbunden-Standby mit aktiviertem Aufwecken bei übereinstimmenden Mustern

Wenn die Hardwareplattform in Modern Standby übergeht, überführt Windows das WLAN-Gerät in den Verbunden-Ruhezustand-Modus (D2 für SDIO; D3 für PCIe), indem es eine OID_PNP_SET_POWER-Anforderung, die einen Geräteleistungsstatus von NdisDeviceStateD2 (für SDIO) oder NdisDeviceStateD3 (für PCIe) angibt, sendet. In Reaktion auf diese Anforderung muss der WLAN-Miniporttreiber Folgendes tun:

  1. Keine neuen E/A-Anforderungen an den zugrunde liegenden Bustreiber oder Hardware senden. Wenn sich das WLAN-Gerät außerhalb des SoC befindet und über SDIO verbunden ist, ist der zugrunde liegende Bustreiber der Windows SD-Bustreiber Sdbus.sys. Wenn sich das WLAN-Gerät außerhalb des SoC befindet und über PCIe verbunden ist, ist der zugrunde liegende Bustreiber der Windows SD-Bustreiber Pci.sys. Wenn das WLAN-Gerät in das SoC integriert ist, wird der zugrunde liegende Bustreiber vom SoC-Anbieter bereitgestellt.

  2. Warten auf alle Flugmodus-E/O-Anforderungen und Ausführen aller E/O-Anforderungen in der Warteschlange.

  3. Programmieren des WLAN-Geräts für alle konfigurierten Aufweckmuster und Aufweckereignisse.

  4. Überführen des WLAN-Geräts in den richtigen Niedrigstromzustand (D2/D3) für den Verbunden-Ruhezustand-Modus.

  5. Wenn sich das WLAN-Gerät außerhalb des SoC befindet und über einen SDIO-Bus angefügt ist:

    1. Konfigurieren des WLAN-Geräts, um das SoC mithilfe der Out-of-Band-GPIO-Aufweckunterbrechung zu aktivieren. (Weitere Informationen finden Sie unter Energiekonfigruation für unterstützte Hardware.)

    2. Maskieren der WLAN-Geräteunterbrechungen und Abbrechen aller zugehörigen Timer. Für den WLAN-Miniport muss die Eigenschaft SDP_FUNCTION_INT_ENABLE auf FALSE festgelegt sein, indem die Routine SdBusSubmitRequest aufgerufen wird.

    3. Anweisen des SD-Bustreibers, die Weiterleitung von WLAN-Gerätetreiber zu beenden. Für den WLAN-Miniport muss die Eigenschaft SDP_SET_CARD_INTERRUPT_FORWARD auf FALSE festgelegt sein, indem die Routine SdBusSubmitRequest aufgerufen wird.

    4. Abschließen der Anforderung OID_PNP_SET_POWER für den Zustand NdisDeviceStateD2.

  6. Wenn sich das WLAN-Gerät außerhalb des SoC befindet und über einen PCIe-Bus angefügt ist:

    1. Konfigurieren Sie das WLAN-Gerät, um das System in Übereinstimmung mit dem PCIe-Standard aufzuwecken (mit PM_PME-Nachrichten; dies wird im folgenden Abschnitt weiter erläutert.)

    2. Maskieren der WLAN-Gerätunterbrechungen. Der WLAN-Minitporttreiber muss Unterbrechungen trennen, indem die IoDisconnectInterruptEx-Routine aufgerufen wird.

    3. Abschließen der Anforderung OID_PNP_SET_POWER für den Zustand NdisDeviceStateD3.

Wenn sich das WLAN-Gerät mit Verbunden-Ruhezustand-Modus befindet, wird erwartet, dass das Gerät die Verbindung mit dem zugeordneten WLAN-Netzwerk beibehält, um nach übereinstimmenden Mustern für das Aufwecken zu suchen und das SoC zu aktivieren, wenn eine Änderung des Netzwerkzustands auftritt. Beispielsweise muss das Wi-Fi-Gerät das SoC aktivieren können, wenn der Zugriffspunkt plötzlich nicht zugeordnet ist.

Die folgende Abbildung zeigt die Konfiguration von Software- und Hardwarekomponenten, um ein WLAN-Gerät zu unterstützen, das außerhalb des SoC ist und mit dem SoC über einen SDIO-Bus kommuniziert. ein WLAN-Gerät, das über SDIO verbunden ist

Beenden von Modern Standby für ein übereinstimmendes Muster

Wenn das WLAN-Gerät ein Paket mit einem übereinstimmenden Muster erkennt, muss dieses Paket zuerst in einem lokalen, nicht veränderlichen Speicher für den späteren Abruf durch den WLAN- Miniporttreiber gespeichert werden. Windows verfügt über Abrufinformationen zum Paket, damit der entsprechende Systemdienst oder die entsprechende Anwendung über das eingehende Paket benachrichtigt werden kann.

Als Nächstes muss das WLAN-Gerät eine Unterbrechung generieren, um das SoC zu aktivieren.

Wenn sich das WLAN-Gerät außerhalb des SoC auf einem SDIO-Port befindet, sollte die Unterbrechung über die Out-of-Band-GPIO-Unterbrechung übermittelt werden und dazu führen, dass das SoC aktiviert wird. Das ACPI-Subsystem bestimmt dann, dass die GPIO-Unterbrechung für das WLAN-Gerät die SoC-Aktivierung verursacht hat, und antwortet, indem ein Warten-Aufwecken-IRP (eine IRP_MN_WAIT_WAKE-Anforderung) abgeschlossen wird, die der NDIS-Porttreiber automatisch im Auftrag des WLAN- Miniporttreibers in der ACPI-Treiber ausstehen lassen hat.

Wenn sich das Wi-Fi Gerät außerhalb des SoC auf einem PCIe-Bus befindet und die ACPI-Firmware die Kontrolle über systemeigene PCIe-Features gewährt, werden Aufweck-Ereignisse gemäß der PCIe-Spezifikation mithilfe der folgenden Schritte behandelt:

  1. Wenn das WLAN-Gerät in einen Niedrigstromzustand übergeht, sendet der NDIS-Porttreiber automatisch ein Warten-Aufwecken-IRP den WLAN-Treiberstapel hinunter bis zum Inbox-PCI-Bustreiber, Pci.sys (nicht der ACPI-Treiber, Acpi.sys), der das IRP als ausstehend markiert, weil ein zukünftiges Aufweckereignis erwartet wird.

  2. Wenn das WLAN-Gerät aufwachen muss, sollte es eine WAKE-Benachrichtigung an den Stamm der PCIe-Hierarchie senden. Dazu sendet das Gerät eine in-Band-PM_PME-Nachricht über den PCIe-Bus.

  3. Die Aufweckbenachrichtigung wird über den Stammport der PCIE-Hierarchie über dem WLAN-Gerät geleitet. Der Stammport befindet sich im D0-Stromzustand und es wird erwartet, dass eine PME-Unterbrechung für den Inbox-PCI-Bustreiber, Pci.sys, generiert wird.

  4. Der PCI-Bustreiber im Stammport bringt die gesamte Gerätehierarchie unterhalb dieses Stammports zurück zu D0.

  5. Der PCI-Bustreiber untersucht das PME_Status-Bit jedes Geräts in der Hierarchie, um festzustellen, ob es eine WAKE-Benachrichtigung ausgestellt hat. Wenn das PMEStatus-Bit des WLAN-Geräts festgelegt ist, schließt der PCI-Bustreiber alle ausstehenden wartenden IRPs für diese Gerät ab, wodurch der IRP der in Schritt 1 ausstehend war, zu NDIS zurückkehrt.

Weitere Informationen finden Sie unter Niedrigstrom für Aufwecken auf LAN.

Wenn das WLAN-Gerät in das SoC integriert ist, ähnelt der Vorgang des Geräts dem für die Implementierung Off-SoC mit SDIO-Port. Der SoC-Anbieter muss das Gerät in der DSDT-Tabelle in der ACPI-Firmware beschreiben. Das ACPI-Subsystem wird dann das Wi-Fi Gerät aufzählen und das Warten-Aufwecken-IRP abschließen. Es wird empfohlen, dass Systemintegratoren, die SoCs verwenden, welche WLAN-Geräte integriert haben, bei der WLAN-Integration und Treiberentwicklung eng mit dem SoC-Anbieter zusammenarbeiten.

Wenn das Warten-Aufwecken-IRP abgeschlossen ist, sendet NDIS zuerst einen D0-IRP (eine IRP_MN_SET_POWER Anforderung des Typs DevicePowerState) den Stapel hinunter zum Bustreiber. Vor Abschluss des D0-IRP sendet NDIS den WLAN-Miniporttreiber an eine OID_PNP_SET_POWER-Anforderung mit dem Zielstatus NdisDeviceStateD0. In Reaktion auf diese Anforderung muss der WLAN-Miniporttreiber Folgendes tun:

  1. Überprüfen der WLAN-Gerätehardware, um den Grund für die Aufweckunterbrechung zu ermitteln. Der WLAN-Miniporttreiber muss NDIS über den Grund für die Aufweckunterbrechung benachrichtigen, indem ein NDIS_STATUS_PM_WAKE_REASON-Statusereignis generiert wird. Wenn die Aufweckunterbrechung durch ein eingehendes Netzwerkpaket verursacht wurde, muss der Treiber dieses Paket an NDIS über den regulären NDIS-Datenpfad übergeben, bevor der Treiber andere empfangene Pakete an NDIS übergibt.

  2. Wiederherstellen eines Registerstatus oder eines anderen Hardwarekontexts, der zum Abschließen des Überführens des WLAN-Geräts in den Verbunden-Inaktiv-Modus (D0) erforderlich ist.

  3. Wenn das WLAN-Gerät extern mit dem SoC und über SDIO verbunden ist, muss der WLAN-Miniporttreiber:

    1. Den SD-Bustreiber anweisen, Unterbrechungen an den WLAN-Miniporttreiber weiterzuleiten. Für den WLAN-Miniporttreiber muss die Eigenschaft SDP_SET_CARD_INTERRUPT_FORWARD auf FALSE festgelegt sein, indem die Routine SdBusSubmitRequest aufgerufen wird.

    2. WLAN-Geräteunterbrechungen maskieren. Für den WLAN-Miniporttreiber muss die Eigenschaft SDP_FUNCTION_INT_ENABLE auf FALSE festgelegt sein, indem die Routine SdBusSubmitRequest aufgerufen wird.

  4. Die Anforderung IRP_MN_SET_POWER abschließen.

Aufwecken bei übereinstimmenden Mustern und die Möglichkeit, das SoC aus einem Niedrigstrom-Inaktiv-Zustand aufzuwecken, ist essentiell, um während Modern Standby die Netzwerkkonnektivität aufrechtzuerhalten. WLAN-Treiberentwickler sollten eng mit Microsoft zusammenarbeiten, um einen WLAN-Miniporttreiber zu entwickeln, der diese erforderlichen Features implementiert.

Weitere Anforderungen für WLAN-Energieverwaltung

Neben dem Stromsparmodus und dem Aufwecken bei übereinstimmenden Mustern müssen das WLAN-Gerät und der Miniporttreiber mehrere andere Runtime-Energieverwaltungsfeatures für WLAN-Geräten in Modern-Standby-Plattformen unterstützen. Diese Features sind für die Verringerung des Stromverbrauchs im WLAN-Gerät und der gesamten Hardwareplattform unerlässlich. Wie zuvor beschrieben, müssen das WLAN-Gerät und der Miniporttreiber die folgenden Features unterstützen:

Radio-Ein/Aus-Zustand

Der WLAN-Miniporttreiber muss auf Windows-Anforderungen reagieren, um den Radio-Ein/Aus-Zustand für das WLAN-Gerät zu ändern. Der Benutzer kann den Radio-Ein/Aus-Zustand zu Aus ändern, indem der Flugzeugmodus aktiviert wird oder explizit WLAN in der Anwendung Windows-Einstellungen deaktiviert wird.

Wenn der Benutzer den Radio-Ein/Aus-Zustand des WLAN-Geräts zu Aus ändert, sendet Windows dem WLAN-Miniporttreiber eine OID_DOT11_NIC_POWER_STATE-Anforderung mit dem Wert FALSE. Als Antwort muss der WLAN-Miniporttreiber eine In-Band-Nachricht verwenden, um das Radio (RF-Subsystem) im WLAN-Gerät vom Strom zu trennen und das Gerät in einen Stromzustand zu versetzen, der nicht mehr als 1 Milliwatt im Durchschnitt verbraucht.

Wenn der Benutzer den Radio-Ein/Aus-Zustand des WLAN-Geräts zu Ein ändert, sendet Windows dem WLAN-Miniporttreiber eine OID_DOT11_NIC_POWER_STATE-Anforderung mit dem Wert TRUE. Als Antwort muss der WLAN-Miniporttreiber eine In-Band-Nachricht verwenden, um Strom auf das Radio im Wi-Fi-Gerät anzuwenden und das Gerät zurück in den Verbunden-Inaktiv-Modus zu überführen.

Wenn der Radio-Ein/Aus-Zustand des WLAN-Geräts auf Aus festgelegt ist, kann das WLAN-Gerät entweder im D0- oder D2-Stromstatus sein. NDIS überführt das WLAN-Gerät immer in den D0-Stromstatus, bevor der WLAN-Miniporttreiber über eine Änderung im Radio-Ein/Aus-Zustand benachrichtigt wird. Wenn der Benutzer zuvor den Radio-Ein/Aus-Zustand auf Aus festgelegt hat, muss der WLAN-Miniporttreiber keine spezifischen Aktionen ausführen, wenn die Hardwareplattform in Modern Standby übergeht. Wenn der Radio-Ein/Aus-Zustand auf Aus festgelegt ist, bleibt das Radio im Modern Standby aus, und wenn das System Modern Standby verlassen hat, bleibt der Radio-Ein/Aus-Status auf Aus, bis der Benutzer den Status zu Ein ändert.

Netzwerklistenabladung (NLO)

Das Feature Netzwerklistenabladung (NLO) ermöglicht, dass WLAN-Profilinformationen im lokalen Speicher in das WLAN-Gerät kopiert werden. Statt alle verfügbaren Kanäle für alle Zugriffspunkte zu scannen, verwendet das WLAN-Gerät diese Profilinformationen, um eine begrenzte Anzahl von Kanälen für bevorzugte Netzwerke zu scannen, wodurch der Stromverbrauch des WLAN-Geräts reduziert wird. Das WLAN-Gerät und der WLAN-Miniporttreiber in einer Modern-Standby-Plattform müssen Netzwerklistenabladung unterstützen. Diese Unterstützung beinhaltet die Handhabung von OID_DOT11_OFFLOAD_NETWORK_LIST-Anforderungen.

Um die NLO-Funktion anzuzeigen, muss der WLAN-Miniporttreiber das Flag NDIS_WLAN_WAKE_ON_NLO_DISCOVERY_SUPPORTED im Element MediaSpecificWakeUpEvents der Struktur NDIS_PM_CAPABILITIES festlegen.

ARP/NS-Abladung

Der WLAN-Miniporttreiber und das WLAN-Gerät müssen ARP/NS-Abladung unterstützen, wodurch das WLAN-Gerät autonom auf allgemeine Netzwerkanforderungen reagieren kann. Das Feature ARP/NS-Abladung verhindert, dass das SoC für allgemeine Netzwerkanforderungen aufwacht, die einfache und vorhersehbare Antworten haben. Um die Unterstützung für ARP/NS-Abladung anzugeben, muss der WLAN-Miniporttreiber die Flags NDIS_PM_PROTOCOL_OFFLOAD_ARP_SUPPORTED und NDIS_PM_PROTOCOL_OFFLOAD_NS_SUPPORTED im Element SupportedProtocolOffloads der Struktur NDIS_PM_CAPABILITIES festlegen.

Darüber hinaus müssen das WLAN-Gerät und der WLAN-Miniporttreiber mindestens eine IPv4-ARP-Abladeadresse und mindestens zwei DIPv6-NS-Abladeadressen unterstützen. Der WLAN-Miniporttreiber muss das Element NumArpOffloadIPv4Addresses der Struktur NDIS_PM_CAPABILITIES auf einen Wert von 1 oder höher festlegen. Der WLAN-Miniporttreiber muss das Element NumNSOffloadIPv6Addresses der Struktur NDIS_PM_CAPABILITIES auf einen Wert von 2 oder höher festlegen. Windows verwendet die Anforderung OID_PM_ADD_PROTOCOL_OFFLOAD zum Bereitstellen der ARP- und NS-Abladeadressen an den Wi-Fi Miniporttreiber.

D0-Paketzusammenführung

Das WLAN-Gerät und der WLAN-Miniporttreiber müssen D0-Paketzusammenführtung unterstützen, was ein Feature ist, das es dem WLAN-Gerät ermöglicht, gängige Netzwerkpakete mit geringer Priorität zum Abrufen in Batches durch das SoC zusammenzuführen. Dieses Feature reduziert die Gesamtmenge und Häufigkeit von Kern-Chipsatz-Unterbrechungen, sodass das SoC in länger in Niedrigstromzuständen bleiben kann, was die Akkulaufzeit verlängert. Der WLAN-Miniporttreiber gibt Unterstützung für D0-Paketzusammenführung an, indem mehrere Werte in der Struktur NDIS_RECEIVE_FILTER_CAPABILITIES festgelegt werden.

In der folgenden Liste der Elemente werden die Funktionen der D0-Paketzusammenführung zusammengefasst, die das WLAN-Gerät unterstützen und die der WLAN-Miniporttreiber melden muss. Der WLAN-Miniporttreiber muss diese Funktionen in der Struktur NDIS_RECEIVE_FILTER_CAPABILITIES angeben. Für jedes Element zeigt die Liste den Mindestwert an, der für ein bestimmtes Element dieser Struktur erforderlich ist. NDIS sendet eine OID_RECEIVE_FILTER_SET_FILTER Anforderungen an den WLAN-Miniporttreiber, um die Paketzusammenführungsfilter festzulegen. Die Paketzusammenführungsfilter geben an, welche Pakete in einem Zusammenführungspuffer auf dem WLAN-Gerät zusammengestellt werden müssen.

SupportedQueueProperties

NDIS_RECEIVE_FILTER_PACKET_COALESCING_SUPPORTED_ON_DEFAULT_QUEUE

Hinweis    Dieses Flag muss immer in den HardwareReceiveFilterCapabilities vorhanden sein, um die Hardwarefunktion anzugeben. Dieses Flag muss in den CurrentReceiveFilterCapabilities vorhanden sein, wenn das erweiterte Schlüsselwort PacketCoalescing nicht null ist.
EnabledFilterTypes, Mindestwert:

NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED

SupportedFilterTests, Mindestwerte:

NDIS_RECEIVE_FILTER_TEST_HEADER_FIELD_EQUAL_SUPPORTED
NDIS_RECEIVE_FILTER_TEST_HEADER_FIELD_NOT_EQUAL_SUPPORTED
NDIS_RECEIVE_FILTER_TEST_HEADER_FIELD_MASK_EQUAL_SUPPORTED

SupportedHeaders, Mindestwerte:

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

SupportedMacHeaderFields, Mindestwerte:

NDIS_RECEIVE_FILTER_MAC_HEADER_DEST_ADDR_SUPPORTED
NDIS_RECEIVE_FILTER_MAC_HEADER_PROTOCOL_SUPPORTED
NDIS_RECEIVE_FILTER_MAC_HEADER_PACKET_TYPE_SUPPORTED

SupportedARPHeaderFields, Mindestwerte:

NDIS_RECEIVE_FILTER_ARP_HEADER_OPERATION_SUPPORTED
NDIS_RECEIVE_FILTER_ARP_HEADER_SPA_SUPPORTED
NDIS_RECEIVE_FILTER_ARP_HEADER_TPA_SUPPORTED

SupportedIPv4HeaderFields, Mindestwert:

NDIS_RECEIVE_FILTER_IPV4_HEADER_PROTOCOL_SUPPORTED

SupportedIPv6HeaderFields, Mindestwert:

NDIS_RECEIVE_FILTER_IPV6_HEADER_PROTOCOL_SUPPORTED

SupportedUdpHeaderFields, Mindestwert:

NDIS_RECEIVE_FILTER_UDP_HEADER_DEST_PORT_SUPPORTED

MaxFieldTestsPerPacketCoalescingFilter, Mindestwert:

5

MaxPacketCoalescingFilters, Mindestwert:

10

NDIS sendet OID_RECEIVE_FILTER_CLEAR_FILTER-Anforderungen, um zuvor festgelegte Paketzusammenführungsfilter zu löschen, wenn diese Filter nicht mehr erforderlich sind. NDIS kann einzelne Paketzusammenführungsfilter dynamisch festlegen und löschen. Der WLAN-Miniporttreiber muss den aktuellen Satz von Paketzusammenführungsfiltern jederzeit nachverfolgen können, kann Zusammenführung jedoch nur anwenden, wenn sich das WLAN-Gerät im D0-Stromzustand befindet (und sich entweder im aktiven Modus oder im Verbunden-Inaktiv-Modus befindet).

Dynamische DTIM-Konfiguration

Der WLAN-Miniporttreiber muss die dynamische Konfiguration des Delivery Traffic Indication Message- (DTIM) Intervalls unterstützen. Dynamisches Anpassen des DTIM-Intervalls auf einen größeren Wert während des Verbunden-Ruhezustand-Modus (D2 für SDIO; D3 für PCIe) ermöglicht es dem WLAN-Gerät, sehr wenig Strom zu verbrauchen und gleichzeitig eine Verbindung mit dem Zugriffspunkt aufrechtzuerhalten. Die zusätzliche Latenz, die aus dem längeren DTIM-Intervall resultiert, ist im Verbunden-Ruhezustand-Modus (D2/D3) nicht ausschlaggebend.

Der WLAN-Miniporttreiber sollte dynamische DTIM-Intervalle unterstützen, indem die folgenden Anleitungen implementiert werden:

  • Das WLAN-Gerät (im STA-Modus) muss einen Listen-Intervallwert von 10 für den Zugriffspunkt ankündigen. Dieser Wert erzwingt den Zugriffspunkt, um Daten für den WLAN-Client für 10 Beacon-Intervalle zwischenzuspeichern.

  • Um das WLAN-Gerät darauf vorzubereiten, in den Verbunden-Ruhezustand-Modus (D2/D3) überzugehen, muss der Treiber die Länge des DTIM-Intervalls zu etwa 500 Millisekunden ändern. Der anzugebende DTIM-Wert hängt vom Wert der normalen Traffic Indication Message (TIM) ab. Wenn die TIM beispielsweise derzeit 100 Millisekunden beträgt, sollte das WLAN-Gerät einen DTIM-Wert von 5 verwenden (für ein Intervall von 500 Millisekunden). Wenn die TIM derzeit 300 Millisekunden beträgt, sollte das WLAN-Gerät einen DTIM-Wert von 2 (für ein Intervall von 600 Millisekunden) verwenden.

Wenn das WLAN-Gerät wieder in den Verbunden-Inaktiv-Modus (D0) zurückwechselt, muss das WLAN-Gerät auf die ursprüngliche DTIM zurückgesetzt werden, die mit dem Zugriffspunkt ausgehandelt wurde.

Aufweckauslöser für WLAN-Konnektivität

Wenn das WLAN-Gerät während Modern Standby mit einem Netzwerk verbunden ist, müssen das WLAN-Gerät und der WLAN-Miniporttreiber auch das Aufwecken des SoC basierend auf einem Satz von Aufweckauslösern für WLAN-Konnektivität unterstützen. Es gelten folgende Anforderungen:

  • Ausführen von GTK- (WPA/WPA2) und IGTK- (WPA2) Aktualisierung im Modern-Standby-Modus.
  • Unterstützen des Aufweckens bei GTL- und IGTK-Handshake-Fehlern.
  • Unterstützen des Aufweckens, wenn ein EAP-Request/Identity-Paket von 802.1x empfangen wird.
  • Unterstützen des Aufweckens, wenn eine Vier-Wege-Handshake-Anforderung empfangen wird.
  • Unterstützen von wake-on-association-lost mit dem aktuellen Zugriffspunkt.

Durch das Aufwecken des SoC bei diesen WLAN-spezifischen Ereignissen kann Windows benachrichtigt werden, wenn die WLAN-Konnektivität gefährdet ist oder wenn das WLAN-Gerät die Verbindung mit dem zugeordneten Zugriffspunkt verliert. Als Antwort weist Windows möglicherweise den WLAN-Miniporttreiber und das Gerät an, eine Verbindung zu einem anderen WLAN-Netzwerk herzustellen. Oder Windows kann stattdessen das Mobile Breitband- (MBB) Radio verwenden, um eine Verbindung herzustellen. Der WLAN-Miniporttreiber muss jede dieser Aufweckauslöserfunktionen angeben (z. B. durch Festlegen des Flags NDIS_WLAN_WAKE_ON_AP_ASSOCIATION_LOST_SUPPORTED) im Element "SupportedWakeUpEvents der Struktur NDIS_PM_CAPABILITIES.

Unterstützte Hardwareenergiekonfigurationen

Windows unterstützt drei Hardware-Energieverwaltungskonfigurationen für das WLAN-Gerät in einer Modern-Standby-Plattform. Das WLAN-Gerät muss sich entweder außerhalb des SoC befinden und über SDIO oder PCIe angeschlossen sein oder physisch in den SoC-Chip integriert und über einen proprietären internen Bus angeschlossen sein.

Der Systemdesigner darf keine USB-Busverbindung verwenden, um ein WLAN-Gerät in eine Modern-Standby-Plattform zu integrieren.

Außerhalb des SoC, angeschlossen über SDIO

In dieser Konfiguration, die im vorherigen Blockdiagramm gezeigt wird, befindet sich das WLAN-Gerät außerhalb des SoC und ist über einen SDIO-Bus mit dem SoC verbunden. Das WLAN-Gerät verfügt möglicherweise über einen oder mehrere Pins, die mit GPIO-Pins auf dem SoC verbunden sind. Das WLAN-Gerät muss entweder an eine Stromschiene angeschlossen sein, die immer eingeschaltet ist oder direkt mit dem Power-Management IC (PMIC) verbunden ist.

Das WLAN-Gerät muss in der Lage sein, eine Aufweckunterbrechung über ein Out-of-band-Signal zu generieren, dass von einem Unterbrechungsausgabepin auf dem WLAN-Gerät zu einem GPIO-Pin auf dem SoC weitergeleitet wird. Die Unterbrechungsleitung vom Gerät muss mit einem immer verfügbaren GPIO-Pin auf dem SoC verbunden sein, sodass das Aufwecksignal des WLAN-Geräts den SoC aus seinem niedrigsten Leistungsstatus während Modern Standby aufwecken kann. Der Systemintegrator muss das ACPI-GpioInt-Makro verwenden, um die GPIO-Unterbrechungsverbindung unter dem WLAN-Gerät im ACPI-Namespace zu beschreiben. Das Feld Freigegeben des GpioInt-Makros muss auf „ExclusiveAndWake“ festgelegt werden, um anzugeben, dass die GPIO-Unterbrechung das System aus dem Ruhezustand aufwecken kann. Die Einstellung „ExclusiveAndWake“ ermöglicht es dem ACPI-Treiber, das Warten-Aufwecken-Protokoll für das WLAN-Gerät automatisch abzuschließen und das Gerät in Verbunden-Inaktiv-Modus (D0) zurückzuversetzen, wenn sich das Gerät im Verbunden-Ruhezustand-Modus (D2) befindet, wenn es den SoC unterbricht. Die ACPI-Firmware muss angeben, dass das WLAN-Gerät die Plattform aus dem Verbunden-Ruhezustand-Modus (D2) aufecken kann. Dazu muss der Systemintegrator sowohl _S4W- als auch _S0W-Objekte im ACPI-Namespace unter dem WLAN-Gerät inkludieren, wie im folgenden Beispiel gezeigt wird:

    Name(_S0W, 2)
    Name(_S4W, 2)

Der Wert 2 in diesem Beispiel gibt den D2-Gerätestromzustand an.

Als Option kann das WLAN-Gerät einen Eingabepin haben, der ein Aktivieren- oder Zurücksetzen-Signal von einem GPIO-Ausgabepin auf dem SoC akzeptiert. Der GPIO-Pin wird von der System-Firmware gesteuert. Der GPIO-Pin kann umgeschaltet werden, um das WLAN-Gerät vollständig herunterzufahren oder zurückzusetzen. Wenn ein solcher GPIO-Pin verwendet wird, um das WLAN-Gerät zu aktivieren oder zurückzusetzen, muss der Systemintegrator diesen Pin in einer GPIO-Betriebsregion verfügbar machen. Der Systemintegrator muss außerdem die Kontrollmethoden _PS0 und _PS3 unter dem WLAN-Gerät im ACPI-Namespace enthalten.

Die Implementierung der _PS3-Methode muss das WLAN-Gerät herunterfahren oder zurücksetzen, indem der Zustand des GPIO-Ausgabepins über den GPIO-Betriebsbereich geändert wird. Wenn das WLAN-Gerät spezifische Anforderungen für das Timing des Zurücksetzens enthält, muss der Integrator diese Anforderungen in ACPI-Firmware implementieren, indem er die ACPI-Ruhezustand-Methode verwendet, um die Ausführung zu verzögern oder, oder die Zurücksetzungsleitung für die angegebene Zeit auf dem erforderlichen Signalniveau hält.

Die Implementierung der _PS0-Kontrollmethode muss zuverlässig Strom auf das WLAN-Gerät anwenden und das Gerät betriebsfähig machen.

Außerhalb des SoC, angeschlossen über SDIO

In dieser Konfiguration befindet sich das WLAN-Gerät außerhalb des SoC und ist an den PCIe-Bus angeschlossen. Das Gerät befindet sich im D3-Gerätestromzustand, wenn es im Verbunden-Ruhezustand-Modus oder im Getrennt-Ruhezustand-Modus ist. Im Zustand D3 verbleibt das Gerät im D3hot-Unterzustand und geht nicht in den D3cold-Unterzustand über. Das WLAN-Gerät muss entweder an eine Stromschiene angeschlossen sein, die immer eingeschaltet ist oder direkt mit dem Power-Management IC (PMIC) verbunden ist.

Hinweis    Die WLAN-Hardware sollte PCI-Architekturmittel verwenden, um ein Aufweckereignis (PME) zu generieren.

Bei D3 muss das Gerät in der Lage sein, ein Aufweckereignis zu signalisieren, indem eine PM_PME-Nachricht gesendet wird, die sich in der Bandbreite über den PCIe-Bus verteilt. Das Aufweckereignis generiert eine Unterbrechung vom PCIe-Stammport aus, und diese Unterbrechung wird vom Inbox-PCI-But-Treiber, Pci.sys, gehandhabt.

Um dem Betriebssystem Kontrolle über native PCIe-Features zu gewähren, muss die ACPI-Firmware eine _OSC-Kontrollmethode im ACPI-Namespace haben. Darüber hinaus muss der ACPI-Namespace ein _S0W-Objekt enthalten, um anzugeben, dass das WLAN-Gerät die Plattform vom Verbunden-Ruhezustand-Modus oder dem Getrennt-Ruhezustand-Modus aufwecken kann. Dieses Objekt muss sich unter dem WLAN-Gerät im ACPI-Namespace befinden und wie im folgenden Beispiel dargestellt deklariert sein:

    Name(_S0W, 3)

Die folgende Abbildung zeigt die Konfiguration von Software- und Hardwarekomponenten, um ein WLAN-Gerät zu unterstützen, das außerhalb des SoC ist und mit dem SoC über einen SDIO-Bus kommuniziert.

ein WLAN-Gerät, das über einen PCIe-Bus verbunden ist

Integriert in den SoC

Wenn das WLAN-Gerät in das SoC integriert ist, ist eine enge Kopplung zwischen dem WLAN-Miniporttreiber und einem proprietären SoC-Bustreiber erforderlich. Die Implementierung dieses Treibers liegt außerhalb des Umfangs dieses Dokuments. Der WLAN-Miniporttreiber muss jedoch alle in Softwaremechanismen für die Energieverwaltung beschriebenen Features implementieren.

Der Systemintegrator sollte sich an den SoC-Anbieter für ACPI-Implementierungsdetails für WLAN-Geräte, die direkt in das SoC integriert sind, wenden.

Testen und Validieren

Tests und Überprüfungen des Wi-Fi Geräts sollten sich auf die direkte Messung des Stromverbrauchs konzentrieren und überprüfen, ob das Muster-Übereinstimmungs-Wake ordnungsgemäß funktioniert.

Die direkte Messung des Gerätestromverbrauchs ist ein kritischer Teil des Testens und Validierens für ein WLAN-Gerät. Da das WLAN-Gerät fast immer eingeschaltet ist, wenn sich die Plattform nicht im Systemzustand S5 (Herunterfahren) befindet, muss der Systemintegrator den WLAN-Stromverbrauch in einer Reihe verschiedener Systemszenarien und Konfigurationen testen und validieren. Es wird empfohlen, den Stromverbrauch des WLAN-Geräts für die beiden Arten von Verbindungen, die in der folgenden Tabelle dargestellt sind, direkt zu messen.


Szenario Durchschnittliche Zielleistung Kommentare
Flugzeugmodus, Radio aus
  • Bildschirm aktiviert, D0-Zustand
<= 1 Milliwatt Das Radio kann ausgeschaltet sein, wenn die Anzeige aktiviert ist, als auch während Modern Standby. Wenn das Radio ausgeschaltet ist, darf der Stromverbrauch nicht mehr als 1 Milliwatt im Durchschnitt für D0 und D2 betragen.
Bildschirm ein, inaktiv
  • Stromsparmodus wird automatisch aktiviert
  • Keine aktiven Datenübertragungen
  • DTIM für die Unterstützung von Zugriffspunkten konfiguriert
  • WPA2-Personal-Sicherheit
<= 10 Milliwatt Tests mit dem WLAN-Gerät sollten mit einer Vielzahl von Verbindungen mit verbraucherorientierten und kommerziellen WLAN-Zugriffspunkten durchgeführt werden.
Verbunden-Ruhezustand
  • Bildschirm deaktiviert, Aufwecken bei übereinstimmenden Mustern aktiviert, D2-Zustand
  • DTIM konfiguriert auf 5
  • WPA2-Personal-Sicherheit
<= 10 Milliwatt

Checkliste Energieverwaltung

Systemintegratoren und SoC-Anbieter sollten die nachstehende Checkliste verwenden, um zu überprüfen, ob ihr Energieverwaltungsdesign mit WLAN-Geräten und WLAN-Miniport kompatibel mit Windows 8 und Windows 8.1 ist.

Hinweis Das Windows Hardware-Zertifizierungskit enthält eine umfangreiche Reihe von WLAN-Treibertests, um sicherzustellen, dass das WLAN-Gerät mit Windows 8 und Windows 8.1 kompatibel ist. WLAN-Geräteanbieter und WLAN-Miniporttreiber-Entwicklern wird empfohlen, die Tests des Windows Hardware-Zertifizierungskits einzusehen und sie zu verwenden, um ihre Treiberimplementierung so früh wie möglich im Designzyklus überprüfen.

  • Der WLAN-Geräteanbieter muss einen Treiber entwickeln, der folgende Bedingungen erfüllt:

    • Unterstützt Aufwecken bei Musterübereinstimmung.
    • Unterstützt Stromsparmodus.
    • Unterstützt Radio ein/aus.
    • Unterstützt Netzwerklistenabladung (NLO).
    • Unterstützt D0-Paketzusammenführung.
    • Unterstützt Aufwecken bei AP-Trennung und zusätzliche WLAN-Aufweckauslöser.
    • Unterstützt ARP/NS-Abladung.
    • Unterstützt dynamische DTIM-Konfiguration.
    • Übergibt alle anwendbaren Netzwerktests im Windows Hardware-Zertifizierungskit.
  • Wenn sich das WLAN-Gerät außerhalb des SoC befindet und über SDIO angefügt ist, muss der Systemintegrator die Hardware und Firmware für das WLAN-Gerät entwickeln, um Folgendes zu tun:

    • Weiterleiten der WLAN-Aufweckunterbrechung vom WLAN-Gerät an einen immer verfügbaren GPIO-Pin auf dem SoC.

    • Einfügen des GPIOInt-Makros unter dem WLAN-Gerät im ACPI-Namespace, wobei das Freigegeben-Feld auf „ExclusiveAndWake“ festgelegt ist.

    • Einfügen des _S4W-Objekts unter dem WLAN-Geräts in den ACPI-Namespace mit dem tiefsten Aufweckstatus 0x2 für D2. Angeben als „Name(_S4W, 2)“.

    • Einfügen des _S0W-Objekts unter dem WLAN-Geräts in den ACPI-Namespace mit dem tiefsten Aufweckstatus 0x2 für D2. Angeben als „Name(_S0W, 2)“.

    • Weiterleiten eines Strom-aktivieren- oder Zurücksetzen-Signals von einem GPIO-Ausgabe-Pin auf dem SoC an das Wi-Fi Gerät.

    • Beschreiben der optionalen Strom-aktivieren- oder Zurücksetzen-Ausgabe-Pin in einer GPIO-Bertriebsregion.

    • Bereitstellen der Steuerelementmethoden _PS3 und _PS0 Steuerelementmethoden und/oder der Stromressourcenverweise _PRn. Diese Einträge sollten unter dem WLAN-Gerät im ACPI-Namespace vorhanden sein.

    • Implementieren Sie die _PS3-Methode oder Stromressourcenmethoden, um das WLAN-Gerät vom Strom zu trennen.

    • Implementieren Sie die _PS0-Methode oder Power-Ressourcenmethoden, um Strom für das WLAN-Gerät wiederherzustellen.

    • Fügen Sie alle gerätespezifischen Strom-ein- oder Rücksetzungssequenzzeiten in die Implementierung der Methoden _PS3 und _PS0 ein. Die Ausführung der ACPI-Methode kann mithilfe der Ruhezustand-Methode verzögert werden.

  • Wenn sich das WLAN-Gerät außerhalb des SoC befindet und über PCIe angefügt ist, muss der Systemintegrator die Hardware und Firmware für das WLAN-Gerät entwickeln, um Folgendes zu tun:

    • Einfügen einer _OSC Steuermethode im ACPI-Namespace ein, um die Betriebssystemsteuerung über systemeigene PCIe-Features zu gewähren.

      Einfügen des _S4W-Objekts unter dem WLAN-Geräts in den ACPI-Namespace mit dem tiefsten Aufweckstatus 0x3 für D3. Angeben als „Name(_S4W, 3)“.

  • Der Systemintegrator muss die richtige Energieverwaltung des WLAN-Geräts testen und validieren, indem er folgendermaßen vorgeht:

    • Verifizieren, dass der durchschnittliche Stromverbrauch des WLAN-Geräts im Radio-aus-Modus weniger als 1 Milliwatt ist.

    • Verifizieren, dass der durchschnittliche Stromverbrauch des WLAN-Geräts kleiner als 10 Milliwatt ist, wenn das Gerät im Verbunden-Ruhezustand-Modus (D2 für SDIO; D3 für PCI) oder im Verbunden-Inaktiv-Modus (D0) ist und nicht aktiv Daten überträgt.

    • Verifizieren, dass der WLAN-Miniport Aufwecken bei Musterübereinstimmung richtig unterstützt und in der Lage ist, das SoC aus dem tiefsten Inaktivitätszustand aufzuwecken, wenn ein übereinstimmendes Muster erkannt wird.

    • Verifzieren, dass das WLAN-Gerät das SoC aus ihrem tiefsten Inaktivitätszustand aktivieren kann, wenn das Gerät seine Verbindung mit dem zugeordneten Zugriffspunkt verliert.

    • Verifizieren, dass das WLAN-Gerät das SoC nicht unberechtigterweise aufweckt.

    • Verwenden der Tests, die im Windows Hardware-Zertifizierungskit enthalten sind, um zu überprüfen, ob das WLAN-Gerät die Netzwerkabladeliste (NLO), ARP/NS-Abladung und D0-Paketzusammenführung ordnungsgemäß implementiert.