O controlador só pode manipular 4.096 entradas de anel em cada anel. A NIC realmente precisa do endereço DMA de cada slot disponível em cada buffer de anel. Tem apenas 4.096 slots em cada direção. (E mais não ajudaria de qualquer maneira.)
O anel funciona assim (eu cobrirei apenas receber, porque é mais simples, mas o conceito é o mesmo):
-
O driver aloca um certo número de buffers de recebimento na memória principal de DMA.
-
O driver informa à NIC os endereços base desses buffers.
-
À medida que a NIC recebe pacotes, ela os envia para esses buffers.
-
O driver pergunta ao NIC quantos pacotes ele tem DMA na memória principal.
-
O driver processa esses pacotes.
-
O driver aloca novos buffers de recebimento para reabastecer o anel.
-
O driver registra os endereços base dos novos buffers com a NIC.
Portanto, a NIC precisa conhecer o endereço físico de cada buffer no anel. Essa NIC tem apenas 4.096 slots em cada direção para esses endereços físicos.