Condividi tramite


Rilevamento blocchi LE

Alcuni firmware hanno un timer watchdog che può rilevare i blocchi del firmware. Alcuni driver IHV (LE) hanno logica per rilevare se il firmware non effettua progressi. L'UE consente all'UE di indicare tali condizioni.

L'indicazione deve essere sulla porta adapter(ad esempio, portid=0xFFFF). Per impostazione predefinita, le indicazioni attivano le le per eseguire la procedura di ripristino di reimpostazione completa, ovvero la diagnosi di chiamata, la raccolta di informazioni di debug e la richiesta di PLDR.

Quando il timer watchdog del firmware o LE rileva che il firmware è bloccato, le aspettative dell'UE sono le seguenti.

  1. Se in D0,

    1. Il valore LE indica NDIS_STATUS_WDI_INDICATION_FIRMWARE_STALLED.
    2. Al ritorno dall'indicazione, il valore LE restituisce (se presente) il comando WDI bloccato.
    3. L'UE avvia la procedura Reset Recovery (RR).
  2. Se in Dx, questo può verificarsi solo con il firmware rilevato stallo.

    1. Il firmware genera l'interruzione della riattivazione.
    2. Quando si riceve un comando D0, indica il motivo della riattivazione del motivo per cui il firmware è bloccato.
    3. Dopo aver restituito l'OID WDI D0, il le indica NDIS_STATUS_WDI_INDICATION_FIRMWARE_STALLED.
    4. Completare la procedura come in D0: 1a, 1b e 1c.

wdi le hang detection.

Rilevamento blocchi in Dx

È possibile che il firmware arresta lo stato di avanzamento in Dx. In questo caso, Dx è D3Hot per PCIe NIC e D2 per USB e SDIO. La scheda di interfaccia di rete è armata per riattivare e mantenere autonoma l'associazione del punto di accesso o analizzare NLO se non associato.

Quando la scheda di interfaccia di rete è in Dx, la comunicazione all'host viene bloccata perché il bus potrebbe trovarsi nello stato di spegnimento. Di conseguenza, il le non è in grado di rilevare il firmware bloccato. Il firmware stesso deve rilevare la condizione e generare la linea di riattivazione (se la parte di riattivazione del codice è ancora attiva) per portare lo stack a D0, indirettamente tramite ACPI o bus completando, NDIS wait_wake_irp. A causa di questo, NDIS imposta D0 sulla scheda di interfaccia di rete.

Il firmware asserisce la riattivazione per tale condizione. Il LE deve indicare un motivo di riattivazione per lo stallo del firmware. Il motivo di riattivazione WDI_WAKE_REASON_CODE_FIRMWARE_STALLED è definito come enumerazione con gli altri motivi di riattivazione.

Per ripristinare il funzionamento in questo scenario, almeno due parti del firmware devono comunque funzionare.

  1. Codice di rilevamento di blocco.
  2. Codice per asserire l'interruzione della riattivazione.

Se c'è una mancanza di una, il lato Host non conosce se il firmware è bloccato e RR non si verifica. Questo scenario non fa parte dell'obiettivo di progettazione.

rilevamento di blocchi wdi in dx.

Il modulo del sistema operativo ha attivato il ripristino di reimpostazione

Si tratta di informazioni per IHV. Oltre ai blocchi rilevati da UE e LE, altri componenti del sistema operativo possono rilevare blocchi e/o attivare l'UE per richiamare la procedura Reimposta ripristino. Attualmente, il componente wlansvc in modalità utente in Windows 10 può richiedere un ripristino di ripristino in UE quando rileva una connessione con connettività Internet e successivamente perde la possibilità di accedere a un server DNS senza disassociazione per qualche tempo. In futuro, Microsoft potrebbe trovare casi aggiuntivi per attivare un ripristino di reimpostazione per migliorare le esperienze utente finali.

NDIS_STATUS_WDI_INDICATION_FIRMWARE_STALLED

WDI_TLV_INDICATION_WAKE_REASON