Modo de baixa latência de Wi-Fi

O Android 10 estende a API de bloqueio de Wi-Fi para permitir apps sensíveis à latência para configurar o Wi-Fi de baixa latência . O modo de baixa latência começa quando todas as condições a seguir são atendidas:

  • O Wi-Fi está ativado e o dispositivo tem acesso à Internet.
  • O app criou e adquiriu um bloqueio de Wi-Fi e está sendo executado no primeiro plano.
  • A tela está ligada.

Para oferecer suporte ao modo de baixa latência em dispositivos, os fabricantes precisam atualizar o o driver WLAN e o HAL do fornecedor. No modo de baixa latência, a economia de energia (também conhecida como modo soneca na norma IEEE 802.11) é explicitamente desativado pela estrutura. Os parâmetros de roaming e busca nas camadas de driver e firmware podem ser otimizada para reduzir ainda mais a latência do Wi-Fi. As otimizações exatas são específicas de implementação.

O Android tem um modo de bloqueio de Wi-Fi de alto desempenho (introduzido no nível 12 da API) separado do modo de baixa latência.

Implementação

Para oferecer suporte ao recurso de modo de baixa latência de Wi-Fi, forneça implementações para as seguintes funções IWifiChip.

Na HAL da AIDL:

  • int getFeatureSet()
  • void setLatencyMode(in LatencyMode mode)

Na HAL HIDL (1.3 ou mais recente):

  • getCapabilities_1_3() generates (WifiStatus status, bitfield<ChipCapabilityMask> capabilities)
  • setLatencyMode(LatencyMode mode) generates (WifiStatus status)

Uma implementação de referência pode ser encontrada wifi_legacy_hal.cpp com as seguintes funções:

  • wifi_error wifi_get_supported_feature_set(wifi_interface_handle iface, feature_set *set)
  • wifi_error wifi_set_latency_mode(wifi_interface_handle handle, wifi_latency_mode mode)

No modo de baixa latência, a economia de energia é explicitamente desativada pelo WifiLockManager no framework do Android. Para isso, o driver WLAN precisa oferecer suporte ao comando NL80211, NL80211_CMD_SET_POWER_SAVE para ativar e desativar a economia de energia. Quando ligar o Wi-Fi o salvamento estiver desativado, o sistema Wi-Fi deverá permanecer ativado e pronto para para enviar ou receber pacotes com atraso mínimo.

Desativar o recurso

Para desativar o recurso de modo de baixa latência, atualize o código subjacente do getFeatureSet() para a HAL da AIDL ou getCapabilities_1_3() para a HAL de HIDL, para que capabilities & SET_LATENCY_MODE = 0, em que SET_LATENCY_MODE é definido na definição de AIDL ou HIDL do IWifiChip. Quando esse recurso está desativado, o framework desativa a economia de energia somente quando o modo de baixa latência está ativo.

Validação

Para testar se o modo de baixa latência funciona quando ativado, execute o comando e testes de latência de ping manuais.

Testes automatizados

Execute os seguintes testes de VTS e CTS:

Teste manual

Ambiente e equipamento de teste exigidos

Para testes manuais, é necessária a seguinte configuração:

  • Ponto de acesso (AP) Wi-Fi
  • Smartphone e computador de teste no dispositivo em teste

    • O DUT precisa estar conectado ao ponto de acesso pelo Wi-Fi.
    • O computador de teste deve estar conectado ao ponto de acesso via Wi-Fi ou Ethernet.
    • O computador de teste precisa estar conectado ao DUT por USB.
  1. Ativar o modo de baixa latência.

    adb root
    adb shell cmd wifi force-low-latency-mode enabled
    
  2. Verifique se o computador está conectado ao smartphone pelo ADB. De o shell do adb, fazendo pings no gateway continuamente por três horas a cada segundo em intervalos de tempo real.

  3. Salve o resultado do teste em um arquivo de texto e use uma planilha ou um arquivo para gerar um histograma dos resultados do teste de latência de ping.

  4. Repita as etapas de 1 a 3 com o modo de latência desativado.

    adb root
    adb shell cmd wifi force-low-latency-mode disabled
    
  5. Compare os resultados do teste para garantir que o valor médio da latência de ping seja reduzidos quando o modo de baixa latência está ativado.

.
  1. Ativar o modo de baixa latência.

    adb root
    adb shell cmd wifi force-low-latency-mode enabled
    
  2. Na linha de comando do computador de teste, dê um ping no IP do smartphone endereço continuamente por 3 horas em intervalos de 1 segundo.

  3. Salve o resultado do teste em um arquivo de texto e use uma planilha ou um arquivo para gerar um histograma dos resultados do teste de latência de ping.

  4. Repita as etapas de 1 a 3 com o modo de latência desativado.

    adb root
    adb shell cmd wifi force-low-latency-mode disabled
    
  5. Compare os resultados do teste para garantir que o valor médio da latência de ping seja reduzidos quando o modo de baixa latência está ativado.

.

Outros testes

Repita os testes acima em ambientes diferentes. Por exemplo, em em casa ou no escritório.