Configurazione del risparmio energia NetAdapterCx

Tutti i driver client NetAdapterCx sono driver WDF (Windows Driver Framework) con funzionalità di risparmio energia simili a tutti i driver WDF. I driver NetAdapterCx richiedono configurazioni di alimentazione aggiuntive specifiche della rete, come descritto in questo articolo.

Un dispositivo di rete tipico supporta tre funzionalità comuni di risparmio energia:

Impostazione delle funzionalità di alimentazione della scheda di rete

Dopo aver configurato la funzionalità di risparmio energia di WDF, il passaggio successivo consiste nell'impostare le funzionalità di alimentazione della scheda di rete. Le funzionalità di risparmio energia sono suddivise in due categorie: funzionalità di offload del protocollo a basso consumo e Riattivazione.

Funzionalità di offload del protocollo a basso consumo

Per informazioni di base su come lo stack di rete Windows usa questa funzionalità, vedere Offload del protocollo per il risparmio energia NDIS.

I driver client impostano le funzionalità di offload del protocollo a basso consumo chiamando i metodi seguenti appropriati per l'hardware:

Funzionalità di riattivazione

I driver client chiamano uno dei metodi seguenti per impostare le funzionalità di riattivazione supportate dall'hardware quando il dispositivo è in stato di bassa potenza (Dx):

Consumo energetico e ripresa della latenza

Quando il dispositivo di rete si trova in Dx, consuma ancora l'alimentazione per eseguire l'offload e il braccio per la riattivazione. Dopo che il dispositivo avvia la riattivazione da Dx, si verifica un ritardo prima che il dispositivo possa trasferire nuovamente i pacchetti. Più profondo è lo stato interno di alimentazione che il dispositivo entra nella minore potenza consuma mentre è in Dx, ma più lunga è la latenza di ripresa.

La tabella seguente descrive le linee guida generali relative al compromesso tra consumo energetico e la latenza di ripresa per ogni funzionalità di riattivazione.

Importante

Alcune informazioni riguardano il prodotto in versione non definitiva che potrebbe essere modificato in modo sostanziale prima del rilascio commerciale. Microsoft non fornisce alcuna garanzia, espressa o implicita, rispetto alle informazioni fornite. Per altre informazioni su un tipo di dispositivo specifico, vedere la documentazione specifica del supporto e il programma di compatibilità hardware Windows (WHCP).

Funzionalità di riattivazione Eventi di riattivazione Consumo di energia elettrica Riprendi latenza
PacketFilter Eventuali corrispondenze di pacchetti configurate receivePacketFilter Deve essere inferiore a quando in D0 e il dispositivo deve essere mantenuto in uno stato appropriato in modo che la latenza di ripresa sia molto piccola <= 10 ms
Bitmap Tutti i pacchetti corrispondono al modello bitmap configurato Deve essere inferiore rispetto a quando è armato per PacketFilter perché ha più latitudine nella latenza di ripresa <= 300 ms
MagicPacket Magic Packet Simile a Bitmap <= 300 ms
MediaChange Supporti connessi o disconnessi Simile a Bitmap <= 300 ms

Nell'esempio seguente viene illustrato come un driver client potrebbe inizializzare le funzionalità di risparmio energia. Questa operazione viene eseguita durante l'avvio dell'adattatore net, ma prima di chiamare NetAdapterStart. In questo esempio, il driver client imposta le funzionalità di attivazione bitmap, modifica del supporto e filtro pacchetti.

//
// Set bitmap wake capabilities
//
NET_ADAPTER_WAKE_BITMAP_CAPABILITIES bitmapCapabilities;
NET_ADAPTER_WAKE_BITMAP_CAPABILITIES_INIT(&bitmapCapabilities);

bitmapCapabilities.BitmapPattern = TRUE;
bitmapCapabilities.MaximumPatternCount = deviceContext->PowerFiltersSupported;
bitmapCapabilities.MaximumPatternSize = 256;

NetAdapterWakeSetBitmapCapabilities(Adapter, &bitmapCapabilities);

//
// Set media change wake capabilities
//
NET_ADAPTER_WAKE_MEDIA_CHANGE_CAPABILITIES mediaChangeCapabilities;
NET_ADAPTER_WAKE_MEDIA_CHANGE_CAPABILITIES_INIT(&mediaChangeCapabilities);

mediaChangeCapabilities.MediaConnect = TRUE;
mediaChangeCapabilities.MediaDisconnect = TRUE;

NetAdapterWakeSetMediaChangeCapabilities(Adapter, &mediaChangeCapabilities);

//
// Set packet filter wake capabilities
//
if(deviceContext->SelectiveSuspendSupported)
{
    NET_ADAPTER_WAKE_PACKET_FILTER_CAPABILITIES packetFilterCapabilities;
    NET_ADAPTER_WAKE_PACKET_FILTER_CAPABILITIES_INIT(&packetFilterCapabilities);

    packetFilterCapabilities.PacketFilterMatch = TRUE;

    NetAdapterWakeSetPacketFilterCapabilities(Adapter, &packetFilterCapabilities);
}

Il client può facoltativamente registrare EVT_NET_DEVICE_PREVIEW_POWER_OFFLOAD e EVT_NET_DEVICE_PREVIEW_WAKE_SOURCE funzioni di callback per accettare o rifiutare gli offload e i modelli di riattivazione del protocollo in ingresso.

Modelli di offload e riattivazione del protocollo di programmazione

Durante la sequenza di accensione del dispositivo, il driver scorre i modelli di riattivazione abilitati e l'alimentazione del protocollo li scarica e li programma nell'hardware. Il driver esegue questa operazione nelle funzioni di callback EvtDeviceArmWakeFromS0 e EvtDeviceArmWakeFromSx .

L'esempio seguente mostra come un driver client potrebbe scorrere l'elenco dei criteri di riattivazione per verificare la presenza di una voce di pacchetto magic, quindi eseguire l'iterazione sull'elenco di offload di alimentazione per elaborare l'offload del protocollo ARP IPv4:

NTSTATUS
EvtDeviceArmWakeFromSx(
    WDFDEVICE     Device
)
{
    NETADAPTER adapter = GetDeviceContext(Device)->Adapter;

    //
    // Process wake source list
    //
    NET_WAKE_SOURCE_LIST wakeSourceList;
    NET_WAKE_SOURCE_LIST_INIT(&wakeSourceList);

    NetDeviceGetWakeSourceList(Device, &wakeSourceList);

    for(UINT32 i = 0; i < NetWakeSourceListGetCount(&wakeSourceList; i++); i++)
    {
        NETWAKESOURCE wakeSource = NetWakeSourceListGetElement(&wakeSourceList, i);
        NET_WAKE_SOURCE_TYPE const wakeSourceType = NetWakeSourceGetType(wakeSource);

        if(wakeSourceType == NetWakeSourceTypeMagicPacket)
        {
            // Enable magic packet wake for the adapter
            ..
            //
        }
    }

    //
    // Process power offload list
    //
    NET_POWER_OFFLOAD_LIST powerOffloadList;
    NET_POWER_OFFLOAD_LIST_INIT(&powerOffloadList);

    NetDeviceGetPowerOffloadList(Device, &powerOffloadList);

    for(UINT32 i = 0; i < NetPowerOffloadListGetCount(&powerOffloadList); i++)
    {
        NETPOWEROFFLOAD powerOffload = NetPowerOffloadGetElement(&powerOffloadList, i);
        NET_POWER_OFFLOAD_TYPE const powerOffloadType = NetPowerOffloadGetType(powerOffload);

        if(powerOffloadType == NetPowerOffloadTypeArp)
        {
            // Enable ARP protocol offload for the adapter
            ..
            //
        }
    }

    return STATUS_SUCCESS;
}

Per tornare ad alta potenza , il driver disabilita normalmente i modelli di alimentazione e riattivazione del protocollo programmati in precedenza nei callback EvtDeviceDisarmWakeFromSx e EvtDeviceDisarmWakeFromS0 corrispondenti .

Motivo della riattivazione dei report

Importante

È obbligatorio che i driver client segnalano il motivo della riattivazione a NetAdapterCx.

Quando l'hardware della scheda di interfaccia di rete riattiva il sistema, il driver client deve segnalare a NetAdapterCx quale origine di riattivazione ha attivato la riattivazione. Per la maggior parte delle origini di riattivazione, i driver usano la struttura NET_ADAPTER_WAKE_REASON_PACKET per descrivere il pacchetto di rete che ha attivato la riattivazione.

Se il NET_WAKE_SOURCE_TYPE è:

Scenari di risparmio energia per il sistema di standby moderno

Importante

Per la piattaforma modern standby, il driver di dispositivo di rete deve:

Per i requisiti moderni di standby completi per il tipo di dispositivo, vedere la documentazione specifica del supporto e WHCP.

Il sistema operativo è responsabile delle decisioni relative ai criteri di risparmio energia dei dispositivi di rete. Ad esempio, il sistema operativo controlla quando un dispositivo deve passare a Dx e quali tipi di eventi di rete il dispositivo deve riattivare. La responsabilità del driver del dispositivo è eseguire in modo affidabile la sequenza di transizione della potenza quando richiesto dal sistema operativo e quindi programmare correttamente l'hardware per la condizione di riattivazione impostata dal sistema operativo.

Il sistema operativo prende decisioni relative ai criteri di risparmio energia in base a un ampio set di fattori, inclusi i criteri di risparmio energia a livello di sistema e le scelte degli utenti. Di seguito sono riportati alcuni criteri di alimentazione comuni usati per i dispositivi di rete in un sistema di standby moderno:

Importante

Questi criteri di risparmio energia possono cambiare con gli aggiornamenti del sistema operativo e le informazioni seguenti vengono fornite come esempio. È consigliabile evitare dipendenze da specifici comportamenti end-to-end del sistema operativo.

  • Quando lo schermo del PC è attivo e il dispositivo di rete è inattiva, il sistema operativo chiede al sistema operativo di passare a Dx e armeggiarlo per La riattivazione di PacketFilter e MediaChange.

  • Quando il PC entra in standby moderno e il dispositivo di rete è stato inattiva, il sistema operativo chiede al sistema operativo di passare a Dx e armeggiarlo per Bitmap, MediaChange e Magic Packet wake.

  • Quando il PC passa a Hibernation, il sistema operativo chiede al sistema operativo di passare a Dx e bracciolo per la riattivazione del pacchetto magic.

Nota: i driver client NetAdapterCx controllano la visibilità della scheda gestione energia. Per altre informazioni, vedere Controllo utente dell'inattività del dispositivo e comportamento di riattivazione.