Processamento de recebimento não RSS
Drivers de miniport que não dão suporte ao processamento de recebimento do identificador RSS, conforme descrito neste tópico.
A figura a seguir ilustra o processamento de recebimento não RSS.
Na figura, os caminhos tracejados representam um caminho alternativo para o processamento de envio e recebimento. Como o sistema controla o dimensionamento, o processamento nem sempre ocorre na CPU que fornece o melhor desempenho. As conexões são processadas na mesma CPU em interrupções sucessivas apenas por acaso.
O processo a seguir se repete para cada ciclo de interrupção não RSS:
A NIC usa o DMA para preencher um buffer com dados recebidos e interrompe o sistema.
O driver de miniporte alocou os buffers de recebimento na memória compartilhada durante a inicialização.
A NIC pode continuar a preencher buffers de recebimento adicionais a qualquer momento neste ciclo de interrupção. No entanto, a NIC não é interrompida novamente até que o driver de miniporte habilite as interrupções.
Os buffers recebidos que o sistema manipula em um ciclo de interrupção podem ser associados a muitas conexões de rede diferentes.
O NDIS chama a FUNÇÃO MiniportInterrupt (MiniportInterrupt ) do driver de miniport em uma CPU determinada pelo sistema.
O ideal é que o ISR vá para a CPU menos ocupada. No entanto, em alguns sistemas, o sistema atribui o ISR a uma CPU disponível ou a uma CPU associada à NIC.
O ISR desabilita as interrupções e solicita que o NDIS enfileira uma DPC (chamada de procedimento adiado) para processar os dados recebidos.
O NDIS chama a função MiniportInterruptDPC (o DPC) na CPU atual.
Os builds DPC recebem descritores para todos os buffers recebidos e indica os dados na pilha do driver. Para obter mais informações, consulte Recebendo dados de rede.
Pode haver muitos buffers para muitas conexões diferentes e há potencialmente muito processamento a ser concluído. Os dados recebidos associados a ciclos de interrupção subsequentes podem ser processados em outras CPUs. O processamento de envio para uma determinada conexão de rede também pode ser executado em uma CPU diferente.
O DPC habilita as interrupções. Esse ciclo de interrupção é concluído e o processo é iniciado novamente.