Udostępnij za pośrednictwem


Funkcja RSS z kolejkowaniem sprzętu

Funkcja RSS z kolejkowaniem sprzętowym poprawia wydajność systemu w porównaniu z RSS z pojedynczą sprzętową kolejką odbierającą. Karty interfejsu sieciowego obsługujące kolejkowanie sprzętowe przypisują odebrane dane do wielu kolejek odbioru. Kolejki odbiorcze są skojarzone z procesorem. Karta sieciowa przypisuje odebrane dane do procesorów na podstawie wartości skrótu oraz tabeli pośredniej.

Na poniższym schemacie przedstawiono RSS z kolejkowaniem odbioru przez kartę sieciową.

Diagram ilustrujący RSS z kolejkowaniem odbioru przez kartę sieciową.

Na ilustracji strzałki kreskowane reprezentują alternatywną ścieżkę przetwarzania odbiorczego. RSS nie może sterować procesorem, który odbiera pierwsze wywołanie ISR. Sterownik nie musi kolejkować danych, więc może natychmiast zaplanować początkowe DPC na odpowiednich procesorach.

Następujący proces powtarza się dla każdego przerwania:

  1. Karta sieciowa (NIC):

    1. Używa DMA do wypełniania buforów odebranymi danymi.

      Sterownik miniportu przydzielił bufory odbiorcze w pamięci współdzielonej podczas inicjalizacji.

    2. Oblicza wartość skrótu.

    3. Kolejkuje bufor dla procesora i przekazuje przypisania kolejki do sterownika miniportu.

      Na przykład karta sieciowa może powtarzać kroki 1–3 i wykonać DMA listy przypisań procesora po otrzymaniu określonej liczby pakietów. Określony mechanizm jest pozostawiony do projektowania karty sieciowej.

    4. Przerywa system.

      Obsługiwane przez system w jednym przerwaniu buforowane dane są dystrybuowane między procesorami.

  2. NDIS wywołuje funkcję MiniportInterrupt (ISR) sterownika miniportu na procesorze określonym przez system.

  3. Sterownik miniportu prosi NDIS o kolejkowanie odroczonych wywołań procedur (DPC) dla każdego CPU, który ma niepustą kolejkę.

    Należy pamiętać, że wszystkie DPC muszą się zakończyć, zanim sterownik włączy przerwania. Należy również pamiętać, że ISR może działać na procesorze, który nie ma buforów do przetworzenia.

  4. NDIS wywołuje funkcję MiniportInterruptDPC dla każdej kolejkowanej DPC. DPC na danej jednostce CPU:

    1. Konstrukcje otrzymują deskryptory dla wszystkich odebranych buforów w swojej kolejce i przekazują dane w górę stosu sterowników.

      Aby uzyskać więcej informacji, zobacz Oznaczenie danych odbioru RSS.

    2. Włącza przerwania, jeśli jest to ostatni DPC do ukończenia. To przerwanie zostanie ukończone, a proces zostanie uruchomiony ponownie. Sterownik musi użyć operacji atomowej, aby zidentyfikować ostatni DPC, który ma zostać zakończony. Na przykład sterownik może użyć funkcji NdisInterlockedDecrement w celu zaimplementowania atomowego licznika.