Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Sterowniki Miniport mogą obsługiwać funkcję RSS dla kart sieciowych, które obsługują obliczanie skrótów RSS i pojedynczą kolejkę deskryptorów odbiorczych.
Na poniższej ilustracji przedstawiono przetwarzanie RSS z pojedynczą kolejką deskryptorów odbioru.
Na ilustracji strzałki kreskowane reprezentują alternatywną ścieżkę przetwarzania odbiorczego. RSS nie może sterować procesorem, który odbiera pierwsze wywołanie ISR.
W przeciwieństwie do przetwarzania odbioru bez użycia RSS, przetwarzanie odbioru oparte na RSS jest rozdzielane między wiele procesorów CPU. Ponadto przetwarzanie dla danego połączenia może być powiązane z danym procesorem CPU.
Następujący proces powtarza się dla każdego przerwania:
Karta sieciowa używa DMA do wypełniania buforów odebranymi danymi i wywołuje przerwanie systemu.
Sterownik miniportu przydzielił bufory odbiorcze w pamięci współdzielonej podczas inicjalizacji.
Karta sieciowa może wypełnić dodatkowe bufory odbiorcze w dowolnym momencie, ale nie generuje ponownie przerwania, dopóki sterownik miniportu nie włączy przerwań.
Odebrane bufory, które system obsługuje w jednym przerwaniu, mogą być skojarzone z wieloma różnymi połączeniami sieciowymi.
NDIS wywołuje funkcję MiniportInterrupt (ISR) sterownika miniportu na procesorze określonym przez system.
ISR wyłącza przerwania i prosi NDIS o umieszczenie w kolejce odroczonego wywołania procedury (DPC) na przetwarzanie odebranych danych.
NDIS wywołuje funkcję MiniportInterruptDPC (DPC) na bieżącym CPU. W DPC:
- Sterownik miniportu używa wartości skrótu obliczanych przez kartę sieciową dla każdego odebranego buforu i ponownie przypisuje każdy odebrany bufor do kolejki odbiorczej skojarzonej z CPU.
- Bieżący DPC prosi NDIS o zakolejkowanie DPC dla każdego z pozostałych CPU, które są skojarzone z niepustą kolejką odbierania.
- Jeśli bieżąca DPC jest uruchomiona na procesorze CPU skojarzonym z niepustą kolejką, bieżąca DPC przetwarza skojarzone bufory odbiorcze i przesyła odebrane dane w górę po stosie sterowników.
Przypisywanie kolejek i kolejkowanie dodatkowych DPC wymaga dodatkowego narzutu obciążenia procesora. Aby osiągnąć lepszą wydajność systemu, obciążenie to musi zostać zrównoważone przez lepsze wykorzystanie dostępnych procesorów CPU.
DPC na danej jednostce CPU:
- Przetwarza bufory odbioru skorelowane z jego kolejką odbioru i przesyła dane w górę stosu sterowników. Aby uzyskać więcej informacji, zobacz Oznaczenie danych odbioru RSS.
- 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.