Compartilhar via


Detecção de travamento le

Alguns firmware têm um temporizador watchdog que pode detectar travas de firmware. Alguns LE (drivers IHV) têm lógica para detectar se o firmware não está progredindo. A UE permite que o LE indique essas condições.

A indicação deve estar na porta do Adaptador (por exemplo, portid=0xFFFF). Por padrão, as indicações disparam o LE para executar o procedimento de recuperação de redefinição completa : chamar diagnosticar, coletar informações de depuração e solicitar PLDR.

Quando o temporizador le ou firmware watchdog detecta que o firmware parou, as expectativas da UE são as seguintes.

  1. Se estiver em D0,

    1. O LE indica NDIS_STATUS_WDI_INDICATION_FIRMWARE_STALLED.
    2. No retorno da indicação, o LE retorna (se houver) o comando WDI paralisado.
    3. A UE inicia o procedimento de Recuperação de Redefinição (RR).
  2. Se estiver no Dx, isso só poderá ocorrer com o firmware detectado.

    1. O firmware gera interrupção de ativação.
    2. Ao receber um comando D0, indica o motivo da ativação do motivo pelo qual o firmware parou.
    3. Depois de retornar d0 OID WDI, o LE indica NDIS_STATUS_WDI_INDICATION_FIRMWARE_STALLED.
    4. Conclua o procedimento como em D0: 1a, 1b e 1c.

wdi le hang detection.

Detecção de travamento no Dx

É possível que o firmware pare o progresso no Dx. Nesse caso, Dx é D3Hot para PCIe NIC e D2 para USB e SDIO. A NIC está armada para ativar e espera-se que mantenha a associação de ponto de acesso de forma autônoma ou verifique o NLO se não estiver associado.

Quando a NIC está em Dx, a comunicação com o host é bloqueada porque o barramento pode estar no estado de desligar. Portanto, o LE não é capaz de detectar firmware paralisado. O firmware em si precisa detectar a condição e elevar a linha de ativação (se a parte de ativação do código ainda estiver ativa) para trazer a pilha para D0, indiretamente por meio de ACPI ou conclusão de barramento, wait_wake_irp NDIS. Devido a isso, o NDIS define D0 como a NIC.

O firmware declara a ativação para tal condição. O LE deve indicar um motivo de ativação para a parada de firmware. O motivo da ativação WDI_WAKE_REASON_CODE_FIRMWARE_STALLED é definido como uma enumeração com os outros motivos de ativação.

Para que a Recuperação de Redefinição funcione nesse cenário, pelo menos duas partes do firmware ainda devem funcionar.

  1. O código de detecção de travamento.
  2. O código para declarar a interrupção de ativação.

Se houver uma falta de um deles, o lado host não saberá se o firmware está paralisado e o RR não acontece. Esse cenário não faz parte da meta de design.

wdi hang detection in dx.

Recuperação de redefinição disparada pelo módulo do sistema operacional

Isso é informativo para IHVs. Além das travas detectadas por UE e LE, outros componentes do sistema operacional podem detectar travas e/ou disparar a UE para invocar o procedimento de Recuperação de Redefinição. Atualmente, o componente wlansvc do modo de usuário no Windows 10 pode solicitar uma Recuperação de Redefinição para UE quando detecta uma conexão com a conectividade com a Internet e, posteriormente, perde a capacidade de acessar um servidor DNS sem desassociação por algum tempo. No futuro, a Microsoft poderá encontrar casos adicionais para disparar uma Recuperação de Redefinição para aprimorar as experiências do usuário final.

NDIS_STATUS_WDI_INDICATION_FIRMWARE_STALLED

WDI_TLV_INDICATION_WAKE_REASON