Caminho TX do WDI

Componentes de caminho TX

O diagrama a seguir mostra os componentes do caminho TX.

wdi tx path.

Descritores TX

O TAL usa um TTD (Descritor TX de Destino) para informar o destino do tamanho e do local do quadro.

Diferentes dispositivos WLAN de destino podem ter definições diferentes do TTD. Devido a isso, a programação TTD é feita dentro do TAL, com base nas informações fornecidas pelo WDI. Para programar um TTD, o WDI especifica um NET_BUFFER_LIST (NBL), por meio do qual os metadados de quadro, como ID de quadro, TID estendido, descarregamentos de tarefas aplicáveis e ação de isenção de criptografia, são acessíveis.

O TAL transfere o TTD e o quadro TX para o destino. Nos metadados no TTD e nos campos dentro do cabeçalho do quadro, o destino pode determinar o destinatário pretendido do quadro de transmissão e como transmiti-lo.

Eventualmente, o destino transmite o quadro e notifica o host quando a transferência (e possivelmente a transmissão) é feita. O destino usa uma mensagem de conclusão TX que especifica se a transmissão foi bem-sucedida e as IDs dos quadros cuja transmissão foi concluída.

Operação básica

A transmissão de um quadro de dados envolve as etapas a seguir no software TX do host WLAN.

  1. O WDI obtém um NBL do NDIS e executa a classificação TX (se o WDI estiver operando no modo de enfileiramento PeerTID).
  2. A NBL está vinculada a um TTD obtido consultando o TAL. Para eficiência, o TAL pode pré-alocar TTDs de uma lista lookaside.
  3. O TxMgr enfileira o quadro de transmissão com base no PeerTID ou na Porta, dependendo do modo TargetPriorityQueueing .
  4. O TxMgr fornece o NBL e o TTD anexado ao TxEngine, que, por sua vez, o passa para o TIL para transferência para o destino. O TxEngine/TIL não enfileira quadros (por exemplo, antes de disponibilizá-los para AMD).
  5. O TxEngine indica a status TX atualizada de quadros pertencentes ao TxEngine/target usando a conclusão da transferência (e a indicação de conclusão de transmissão, se aplicável).
  6. Quando um quadro é Transferido Concluído (e, se necessário, TX Complete), o TxMgr pesquisa o NBL usando a ID do quadro, retorna o TTD para o pool do TxEngine e conclui o quadro para NDIS.

Host – controle de fluxo TX de destino

O controle TX Flow é necessário para evitar sobrecarregar o TIL e os recursos de destino.

O esquema de crédito de destino e o mecanismo de pausa/retomada

O TxMgr enfileira e transfere quadros TX para o destino de acordo com um esquema baseado em crédito. O destino fornece ao Mecanismo TX indicações de atualização de crédito que especificam os recursos disponíveis para quadros adicionais no destino. O número de créditos usados por cada quadro no destino é determinado no momento da programação TTD. O número de quadros passados para o TxEngine como parte de uma operação de envio de uma determinada fila é limitado pelos créditos disponíveis e pelo custo dos quadros à frente da linha na ordem FIFO.

Para o TxMgr, os créditos têm uma unidade abstrata. O Target/TxEngine deve usar qualquer definição de crédito mais útil para a implementação específica.

O TAL usa indicações de pausa/retomada para interromper/retomar o fluxo de tráfego TX de uma determinada porta ou destinado a um receptor específico com um determinado TID. Se o TxEngine receber uma solicitação de envio enquanto o crédito disponível for menor que o custo máximo do quadro, o TxEngine pausará o tráfego do TxMgr (em todas as portas) até a próxima atualização de crédito do destino.

Quando o WDI está no modo de enfileiramento de porta (TargetPriorityQueueing é igual a TRUE), as indicações de pausa/retomada são permitidas/definidas apenas em um nível de porta ou adaptador devido à ausência de classificação peer,TID e enfileiramento.

Limitando a contagem máxima de quadros para operações de envio

Para evitar a necessidade de filas temporárias no TIL (por exemplo, fila de correspondência de taxa de DMA), o número de quadros que o TxMgr passa para TxEngine em uma operação de envio é limitado por uma contagem máxima especificada pelo TxEngine. Esse limite pode ser específico para a fila da qual o TxMgr está tentando enviar e as alterações ao longo do tempo, à medida que mais espaço está disponível no TIL.

Host – agendamento de transferência TX de destino

O TxMgr usa um único thread TX para enviar quadros para o TxEngine. Há um thread TX enviando ativamente quadros para o TxEngine, desde que haja filas registradas em segundo plano.

O TxMgr agenda filas da maneira a seguir, dependendo do modo de enfileiramento.

Para enfileiramento de porta WDI (TargetPriorityQueueing é igual a TRUE), os serviços do TxMgr fazem filas usando o DRR (Deficit Round Robin) em todas as filas de portas com backlogged.

Para enfileiramento de PeerTID WDI (TargetPriorityQueueing é igual a FALSE), os serviços do TxMgr fazem filas de acordo com a prioridade ac sem passar fome em filas e garante que todos os recursos com gargalo no TIL e no destino sejam compartilhados entre fluxos RA-TID de maneira justa. Ele impede que fluxos lentos consumam uma parcela desproporcional desses recursos.

Em geral, o agendador usa DRR para escolher a fila TID de par para transmitir a qualquer momento. Para cada fila, o DRR associa um parâmetro quântico que limita o número de octetos a serem enviados da fila em cada rodada. O TxEngine atualiza esse parâmetro em cada operação de envio envolvendo a fila para corresponder ao tamanho esperado de uma ou duas oportunidades de transmissão.

Em geral, o agendador DRR atende apenas às filas RA-TID associadas ao AC com backlogged de prioridade mais alta. Para evitar a fome, o agendador executa periodicamente o DRR em todas as filas com backlogged.

Mapeamento de prioridade para TIDs estendidas reservadas de IHV

Quadros injetados pelo IHV com TID estendido no mapa de intervalo reservado de IHV para os seguintes ACs estendidos para fins de agendamento prioritário. A tabela está em ordem de aumentar a prioridade.

TID estendido AC estendido
17 AC_BK
18 AC_BE
19 AC_VI
20 AC_VO
21 AC_PR0
22 AC_PR1
23 AC_PR2
24 AC_PR3

Para enfileiramento de porta WDI, todos os quadros injetados são tratados igualmente, independentemente do TID estendido.

interface TxMgr-TxEngine

Solicitações para TxEngine

Indicações de TxEngine

Solicitações de controle específicas do TX

Indicações de controle específicas do TX

Funções de caminho TX WDI

NET_BUFFER_LIST

WDI_TXRX_CAPABILITIES