Sdílet prostřednictvím


Určení možností filtrování přijímání

Toto téma popisuje, jak NDIS a nadřazené ovladače určují možnosti příjmového filtrování síťového adaptéru, který podporuje jednokořenovou V/V (SR-IOV). Toto téma obsahuje následující informace:

Možnosti filtrování příjmu během MiniportInitializeEx

Dotazování možností filtrování příjmu prostřednictvím nadvazujících ovladačů

Poznámka Pouze ovladač miniportu pro fyzickou funkci PCI Express (PCIe) (PF) SR-IOV síťového adaptéru může hlásit možnosti filtrování. Ovladače miniportu pro virtuální funkce PCIe nesmí hlásit možnosti filtrování příjmu adaptéru SR-IOV.

Zpráva o možnostech filtrování přijímání během MiniportInitializeEx

Když NDIS volá funkci ovladače miniportu PF MiniportInitializeEx, ovladač poskytuje následující možnosti filtrování:

  • Kompletní hardware přijímá možnosti filtrování, které může síťový adaptér podporovat.

  • Možnosti filtrování příjmu pro rozhraní, která jsou aktuálně povolená na síťovém adaptéru.

Ovladač miniportu uvádí kompletní možnosti filtrování přijímání hardwaru síťového adaptéru prostřednictvím struktury NDIS_RECEIVE_FILTER_CAPABILITIES, která se inicializuje následujícím způsobem:

  1. Ovladač miniportu inicializuje člena hlavičky . Ovladač nastaví Typ člena záhlaví na NDIS_OBJECT_TYPE_DEFAULT.

    Počínaje verzí NDIS 6.30 nastaví ovladač miniportu Revision člen Header na NDIS_RECEIVE_FILTER_CAPABILITIES_REVISION_2 a člen Size na NDIS_SIZEOF_RECEIVE_FILTER_CAPABILITIES_REVISION_2.

  2. Ovladač miniportu nastaví ostatní členy struktury NDIS_RECEIVE_FILTER_CAPABILITIES na rozsah hodnot pro možnosti filtrování příjmu síťového adaptéru SR-IOV. Například ovladač miniportu nastaví příslušné příznaky v SupportedFilterTests, aby specifikoval testovací operace filtru, které ovladač miniportu podporuje.

  3. Kromě rozhraní SR-IOV se filtrování příjmu používá také v následujících rozhraních:

    Pokud ovladač miniportu podporuje některá z těchto rozhraní, musí také nastavit členy NDIS_RECEIVE_FILTER_CAPABILITIES struktury na rozsah hodnot schopností příjmu filtrování, které jsou specifické pro rozhraní. Pokud například ovladač podporuje sloučování paketů NDIS a SR-IOV, musí nastavit příznak NDIS_RECEIVE_FILTER_PACKET_COALESCING_SUPPORTED_ON_DEFAULT_QUEUE ve členu SupportedQueueProperties.

Ovladač miniportu hlásí aktuálně povolené možnosti filtrování příjmu základního síťového adaptéru prostřednictvím NDIS_RECEIVE_FILTER_CAPABILITIES struktury, která se inicializuje následujícím způsobem:

  1. Ovladač miniportu inicializuje člena hlavičky . Ovladač nastaví Typ člena záhlaví na NDIS_OBJECT_TYPE_DEFAULT.

    Počínaje verzí NDIS 6.30 nastaví ovladač miniportu Revision člen Header na NDIS_RECEIVE_FILTER_CAPABILITIES_REVISION_2 a člen Size na NDIS_SIZEOF_RECEIVE_FILTER_CAPABILITIES_REVISION_2.

  2. Ovladač miniportu nastaví ostatní členy NDIS_RECEIVE_FILTER_CAPABILITIES struktury na rozsah hodnot pro možnosti filtrování příjmu rozhraní, která jsou aktuálně povolena. Pokud je například povoleno sloučování paketů NDIS, musí ovladač nastavit pouze členy specifické pro tuto technologii.

    Rozhraní, která používají filtrování příjmu, jsou povolená nebo zakázaná prostřednictvím standardizovaných klíčových slov INF. Další informace o tom, jak je povoleno sloucování paketů NDIS, naleznete v tématu Standardizovaná klíčová slova INF pro sloučící pakety. Další informace o tom, jak jsou povoleny SR-IOV a VMQ, najdete v tématu Zpracování klíčových slov INF pro standardy SR-IOV, VMQ a RSS.

Když NDIS volá funkci miniport ovladače MiniportInitializeEx, ovladač zaregistruje možnosti filtrování příjmu síťového adaptéru pomocí následujícího postupu:

  1. Ovladač miniportu inicializuje strukturu NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES.

    Ovladač miniportu nastaví HardwareReceiveFilterCapabilities člena na adresu NDIS_RECEIVE_FILTER_CAPABILITIES struktury. Tato struktura byla dříve inicializována s kompletními hardwarovými možnostmi filtrování příjmu síťového adaptéru.

  2. Pokud jsou v síťovém adaptéru aktuálně zakázány funkce VMQ, SR-IOV a slučování paketů NDIS, ovladač miniportu nastaví člena CurrentReceiveFilterCapabilities na hodnotu NULL.

  3. Pokud je na síťovém adaptéru aktuálně povolené propojení paketů VMQ, SR-IOV nebo NDIS, musí ovladač miniportu provést toto:

    • Ovladač miniportu musí inicializovat jinou strukturu NDIS_RECEIVE_FILTER_CAPABILITIES s aktuálními možnostmi filtrování příjmu pro rozhraní, která jsou aktuálně povolená na síťovém adaptéru.

      Pokud je rozhraní SR-IOV povoleno, existují situace, kdy musí ovladač miniportu nastavit členy NDIS_RECEIVE_FILTER_CAPABILITIES struktury na stejné nebo různé hodnoty. Důvodem je to, že rozhraní SR-IOV poskytuje podobný mechanismus zpracování front pro VMQ, ale používá virtuální porty (VPorts) místo front pro příjem VM.

      Například ovladač miniportu musí nastavit příznak NDIS_RECEIVE_FILTER_VMQ_FILTERS_ENABLED ve členu EnabledFilterTypes, pokud je povoleno rozhraní VMQ nebo SR-IOV. Pokud je rozhraní SR-IOV povoleno, musí ovladač miniportu nastavit člena NumQueues na nulu, a pokud je povoleno rozhraní VMQ, na nenulovou hodnotu.

    • Ovladač miniportu přiřadí členu CurrentReceiveFilterCapabilities adresu struktury NDIS_RECEIVE_FILTER_CAPABILITIES, která obsahuje aktuální možnosti filtrování příjmu pro aktuálně povolené rozhraní.

  4. Pokud jsou na síťovém adaptéru aktuálně povolené funkce VMQ, SR-IOV nebo NDIS slučování paketů, nastaví ovladač miniportu člena HardwareReceiveFilterCapabilities na adresu struktury NDIS_RECEIVE_FILTER_CAPABILITIES. Tato struktura byla dříve inicializována s aktuálně povolenými možnostmi filtrování příjmu síťového adaptéru.

  5. Ovladač volá NdisMSetMiniportAttributes a nastaví parametr MiniportAttributes jako ukazatel na strukturu NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES.

Další informace o procesu inicializace adaptéru naleznete v tématu Inicializace adaptéru miniport.

Dotazování možností filtrování příjmu prostřednictvím nadřazených ovladačů

NDIS předává právě povolené schopnosti přijímacího filtrování síťového adaptéru nadřazeným ovladačům, které jsou s ním svázány, následujícím způsobem:

NDIS také vrací strukturu NDIS_RECEIVE_FILTER_CAPABILITIES, když zpracovává požadavky na dotazy identifikátoru objektu (OID) OID_RECEIVE_FILTER_CURRENT_CAPABILITIES a OID_RECEIVE_FILTER_HARDWARE_CAPABILITIES, které jsou vystaveny nadřazeným protokolem nebo filtrovacími ovladači.