Elaborazione di ricezione non RSS
Driver miniport che non supportano l'elaborazione di ricezione di handle RSS come descritto in questo argomento.
La figura seguente illustra l'elaborazione della ricezione non RSS.
Nella figura i percorsi tratteggiati rappresentano un percorso alternativo per l'elaborazione di invio e ricezione. Poiché il sistema controlla la scalabilità, l'elaborazione non viene sempre eseguita sulla CPU che offre prestazioni ottimali. Le connessioni vengono elaborate sulla stessa CPU solo per caso.
Il processo seguente si ripete per ogni ciclo di interrupt non RSS:
La scheda di interfaccia di rete usa DMA per riempire un buffer con i dati ricevuti e interrompe il sistema.
Il driver miniport ha allocato i buffer di ricezione nella memoria condivisa durante l'inizializzazione.
La scheda di interfaccia di rete può continuare a riempire buffer di ricezione aggiuntivi in qualsiasi momento in questo ciclo di interruzione. Tuttavia, la scheda di interfaccia di rete non interrompe di nuovo fino a quando il driver miniport non abilita l'interruzione.
I buffer ricevuti gestiti dal sistema in un ciclo di interruzione possono essere associati a molte connessioni di rete diverse.
NDIS chiama la funzione MiniportInterrupt (ISR) del driver miniport su una CPU determinata dal sistema.
Idealmente, l'ISR dovrebbe passare alla CPU meno occupata. In alcuni sistemi, tuttavia, il sistema assegna l'ISR a una CPU disponibile o a una CPU associata alla scheda di interfaccia di rete.
L'ISR disabilita le interruzioni e richiede a NDIS di accodare una chiamata di procedura posticipata (DPC) per elaborare i dati ricevuti.
NDIS chiama la funzione MiniportInterruptDPC (DPC) sulla CPU corrente.
Le compilazioni DPC ricevono descrittori per tutti i buffer ricevuti e indicano i dati dello stack di driver. Per altre informazioni, vedere Ricezione di dati di rete.
Possono essere presenti molti buffer per molte connessioni diverse ed è potenzialmente necessario completare molte elaborazioni. I dati ricevuti associati ai cicli di interruzione successivi possono essere elaborati in altre CPU. L'elaborazione dell'invio per una determinata connessione di rete può essere eseguita anche in una CPU diversa.
Il DPC abilita le interruzioni. Questo ciclo di interruzione è completo e il processo viene riavviato.