Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Miniportdrivrutiner kan stödja RSS för nätverkskort som stöder RSS-hashvärdesberäkning och en enda mottagningskö för deskriptorer.
Följande bild illustrerar RSS-bearbetning med en enda mottagarbeskrivningskö.
I bilden representerar de streckade pilarna en alternativ sökväg för mottagningsbearbetning. RSS kan inte styra processorn som tar emot det första ISR-anropet.
Till skillnad från icke-RSS-mottagningsbearbetning distribueras RSS-baserad mottagningsbearbetning över flera processorer. Bearbetningen för en viss anslutning kan också kopplas till en viss PROCESSOR.
Följande process upprepas för varje avbrott:
Nätverkskortet använder DMA för att fylla buffertar med mottagna data och avbryter systemet.
Miniportdrivrutinen allokerade mottagningsbuffertarna i delat minne under initieringen.
Nätverkskortet kan när som helst fylla ytterligare mottagningsbuffertar men avbryter inte igen förrän miniportdrivrutinen aktiverar avbrotten.
De mottagna buffertar som systemet hanterar i ett avbrott kan associeras med många olika nätverksanslutningar.
NDIS anropar miniportdrivrutinens MiniportInterrupt funktion (ISR) på en systembestämd PROCESSOR.
ISR inaktiverar avbrotten och begär att NDIS ska köa ett anrop för uppskjuten procedur (DPC) för att bearbeta mottagna data.
NDIS anropar funktionen MiniportInterruptDPC (DPC) på den aktuella processorn. I DPC:
- Miniportdrivrutinen använder de hash-värden som NIC beräknade för varje mottagen buffert och omtilldelar varje mottagen buffert till en mottagningskö som är kopplad till en CPU.
- Den aktuella DPC begär att NDIS ska köa en DPC för var och en av de andra processorerna som är associerade med en icke-tom mottagningskö.
- Om den aktuella DPC:n körs på en processor som är associerad med en kö som inte är tom bearbetar den aktuella DPC:n de associerade mottagningsbuffertarna och anger mottagna data i drivrutinsstacken.
Att tilldela köer och ställa upp ytterligare DPC:er i kö medför extra bearbetningsbelastning. För att uppnå bättre systemprestanda måste den här kostnaden kompenseras genom bättre användning av tillgängliga processorer.
DPC på en viss CPU
- Bearbetar mottagningsbuffertarna som är associerade med sin mottagningskö och indikerar data upp i drivrutinsstacken. Mer information finns i som indikerar mottagning av RSS-data.
- Aktiverar avbrotten, om det är den sista DPC som ska slutföras. Det här avbrottet är klart och processen startar igen. Drivrutinen måste använda en atomisk åtgärd för att identifiera den sista DPC som har slutförts. Drivrutinen kan till exempel använda funktionen NdisInterlockedDecrement för att implementera en atomisk räknare.