Udostępnij za pośrednictwem


Przetwarzanie odbioru bez użycia RSS

Sterowniki Miniport, które nie obsługują RSS, realizują przetwarzanie odbioru zgodnie z opisem w tym temacie.

Na poniższej ilustracji przedstawiono przetwarzanie przyjmowania pakietów innych niż RSS.

Diagram ilustrujący przetwarzanie wysyłania i odbierania bez funkcji RSS.

Na rysunku przerywane ścieżki reprezentują alternatywne drogi w przetwarzaniu wysyłania i odbierania. Ponieważ system kontroluje skalowanie, przetwarzanie nie zawsze występuje na procesorze, który zapewnia najlepszą wydajność. Połączenia są przetwarzane na tym samym procesorze przez kolejne przerwania jedynie przypadkowo.

Następujący proces powtarza się dla każdego cyklu przerwania nie-RSS:

  1. Karta sieciowa używa DMA do wypełnienia buforu odebranymi danymi i wywołuje przerwanie systemowe.

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

  2. Karta sieciowa może dalej wypełniać dodatkowe bufory odbioru w dowolnym momencie tego cyklu przerwania. Jednak karta sieciowa nie przerywa ponownie, dopóki sterownik miniportu nie włączy przerwań.

    Odebrane bufory, które system obsługuje w jednym cyklu przerwania, mogą być skojarzone z wieloma różnymi połączeniami sieciowymi.

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

    W idealnym przypadku ISR powinien przejść do najmniej zajętego procesora. Jednak w niektórych systemach system przypisuje ISR do dostępnego procesora lub do procesora, który jest skojarzony z kartą sieciową (NIC).

  4. ISR wyłącza przerwania i prosi NDIS o umieszczenie w kolejce odroczonego wywołania procedury (DPC) na przetwarzanie odebranych danych.

  5. NDIS wywołuje funkcję MiniportInterruptDPC (DPC) na bieżącym procesorze.

  6. DPC odbiera deskryptory dla wszystkich otrzymanych buforów i przekazuje dane w górę stosu sterowników. Aby uzyskać więcej informacji, zobacz Odbieranie danych sieciowych.

    Step 2: Może istnieć wiele buforów dla wielu różnych połączeń, a także potencjalnie wiele zadań przetwarzania do ukończenia. Odebrane dane skojarzone z kolejnymi cyklami przerwania mogą być przetwarzane na innych procesorach CPU. Przetwarzanie wysyłania dla danego połączenia sieciowego może być również uruchamiane na innym CPU.

  7. DPC włącza przerwania. Ten cykl przerwań zostanie ukończony, a proces zostanie uruchomiony ponownie.