Delen via


Het bepalen van mogelijkheden voor ontvangstfiltering

In dit onderwerp wordt beschreven hoe NDIS en overliggende stuurprogramma's de ontvangstfiltermogelijkheden bepalen van een netwerkadapter die ondersteuning biedt voor I/O-virtualisatie met één hoofdmap (SR-IOV). Dit onderwerp bevat de volgende informatie:

rapporteren van ontvangstfiltermogelijkheden tijdens MiniportInitializeEx

Queries uitvoeren op de ontvangstfiltermogelijkheden door bovenliggende stuurprogramma's

Opmerking Alleen het minipoortstuurprogramma voor de Physical Function (PF) van PCI Express (PCIe) van een SR-IOV netwerkadapter kan filtermogelijkheden rapporteren. Miniportstuurprogramma's voor PCIe Virtual Functions (VFs) mogen de ontvangstfiltermogelijkheden van de SR-IOV-adapter niet rapporteren.

Het rapporteren van ontvangstfiltermogelijkheden tijdens MiniportInitializeEx

Wanneer NDIS de MiniportInitializeEx functie van het PF-minipoortstuurprogramma aanroept, biedt het stuurprogramma de volgende mogelijkheden voor het filteren van ontvangen:

  • De volledige hardware ontvangt filtermogelijkheden die de netwerkadapter kan ondersteunen.

  • De ontvangstfiltermogelijkheden voor de interfaces die momenteel zijn ingeschakeld op de netwerkadapter.

Het minipoortstuurprogramma rapporteert de volledige hardwareontvangstfiltermogelijkheden van de onderliggende netwerkadapter via een NDIS_RECEIVE_FILTER_CAPABILITIES structuur die op de volgende manier wordt geïnitialiseerd:

  1. Het minipoortstuurprogramma initialiseert het Header lid. Het stuurprogramma stelt het Type lid van Header in op NDIS_OBJECT_TYPE_DEFAULT.

    Vanaf NDIS 6.30 stelt het minipoortstuurprogramma het Revision-element van Header in op NDIS_RECEIVE_FILTER_CAPABILITIES_REVISION_2 en het Size-element op NDIS_SIZEOF_RECEIVE_FILTER_CAPABILITIES_REVISION_2.

  2. Het minipoortstuurprogramma stelt de andere leden van de NDIS_RECEIVE_FILTER_CAPABILITIES structuur in op het bereik van waarden voor de ontvangstfiltermogelijkheden van de SR-IOV netwerkadapter. Met het minipoortstuurprogramma worden bijvoorbeeld de juiste vlaggen ingesteld in de SupportedFilterTests om filtertestbewerkingen op te geven die door het minipoortstuurprogramma worden ondersteund.

  3. Naast SR-IOV wordt ook ontvangen filteren toegepast in de volgende interfaces:

    Als het minipoortstuurprogramma ondersteuning biedt voor een van deze interfaces, moet het ook de leden van de NDIS_RECEIVE_FILTER_CAPABILITIES structuur instellen op het bereik van ontvangstfilterfunctiewaarden die specifiek zijn voor de interface. Als het stuurprogramma bijvoorbeeld NDIS-packetsamenvoeging en SR-IOV ondersteunt, moet het de vlag NDIS_RECEIVE_FILTER_PACKET_COALESCING_SUPPORTED_ON_DEFAULT_QUEUE instellen in het SupportedQueueProperties- lid.

Het minipoortstuurprogramma rapporteert de momenteel ingeschakelde ontvangstfiltermogelijkheden van de onderliggende netwerkadapter via een NDIS_RECEIVE_FILTER_CAPABILITIES structuur die op de volgende manier wordt geïnitialiseerd:

  1. Het minipoortstuurprogramma initialiseert het Header lid. Het stuurprogramma stelt het Type lid van Header in op NDIS_OBJECT_TYPE_DEFAULT.

    Vanaf NDIS 6.30 stelt het minipoortstuurprogramma de Revision lid van Header in op NDIS_RECEIVE_FILTER_CAPABILITIES_REVISION_2 en het Grootte lid op NDIS_SIZEOF_RECEIVE_FILTER_CAPABILITIES_REVISION_2.

  2. Het minipoortstuurprogramma stelt de andere leden van de NDIS_RECEIVE_FILTER_CAPABILITIES structuur in op het bereik van waarden voor de ontvangstfiltermogelijkheden van de interfaces die momenteel zijn ingeschakeld. Als NDIS-pakketverzameling bijvoorbeeld is ingeschakeld, moet het stuurprogramma alleen de leden instellen die specifiek zijn voor deze technologie.

    Interfaces die gebruikmaken van ontvangstfilters worden ingeschakeld of uitgeschakeld via gestandaardiseerde INF-trefwoorden. Zie Gestandaardiseerde INF-trefwoorden voor pakketsamenvoegingvoor meer informatie over hoe NDIS-pakketsamenvoeging wordt ingeschakeld. Zie voor meer informatie over hoe SR-IOV en VMQ worden ingeschakeld, Handling SR-IOV, VMQ en RSS gestandaardiseerde INF-trefwoorden.

Wanneer NDIS de MiniportInitializeEx functie aanroept, registreert het stuurprogramma de ontvangstfiltermogelijkheden van de netwerkadapter door de volgende stappen uit te voeren:

  1. Het minipoortstuurprogramma initializeert een NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES structuur.

    Het minipoortstuurprogramma stelt de HardwareReceiveFilterCapabilities element in op het adres van een NDIS_RECEIVE_FILTER_CAPABILITIES structuur. Deze structuur was eerder geïnitialiseerd met de volledige hardware mogelijkheden voor het ontvangen en filteren van de netwerkadapter.

  2. Als de VMQ-, SR-IOV- en NDIS-pakketsamenvoeging momenteel zijn uitgeschakeld op de netwerkadapter, stelt het minipoortstuurprogramma de CurrentReceiveFilterCapabilities lid in op NULL.

  3. Als VMQ-, SR-IOV- of NDIS-pakketsamensmelten momenteel zijn ingeschakeld op de netwerkadapter, moet het minipoortstuurprogramma het volgende doen:

    • Het minipoortstuurprogramma moet een tweede NDIS_RECEIVE_FILTER_CAPABILITIES-structuur initialiseren met de huidige ontvangstfiltermogelijkheden voor de interfaces die momenteel op de netwerkadapter zijn ingeschakeld.

      Als de SR-IOV-interface is ingeschakeld, zijn er situaties waarin het minipoortstuurprogramma de leden van de NDIS_RECEIVE_FILTER_CAPABILITIES structuur moet instellen op dezelfde of verschillende waarden. Dit komt doordat de SR-IOV interface een vergelijkbaar wachtrijmechanisme biedt voor VMQ, maar virtuele poorten (VPorts) gebruikt in plaats van VM-ontvangstwachtrijen.

      Het miniportstuurprogramma moet bijvoorbeeld de NDIS_RECEIVE_FILTER_VMQ_FILTERS_ENABLED-vlag instellen in de EnabledFilterTypes-lidstructuur als ofwel de VMQ of SR-IOV interface is ingeschakeld. Het minipoortstuurprogramma moet echter de NumQueues- lid instellen op nul als de SR-IOV interface is ingeschakeld en een niet-nulwaarde als de VMQ-interface is ingeschakeld.

    • Het minipoortstuurprogramma stelt de CurrentReceiveFilterCapabilities-lidfunctie in op het adres van de NDIS_RECEIVE_FILTER_CAPABILITIES-structuur die de huidige ontvangstfiltermogelijkheden voor de momenteel ingeschakelde interface bevat.

  4. Als VMQ, SR-IOV of NDIS-pakketsamenvoeging momenteel zijn ingeschakeld op de netwerkadapter, stelt het minipoortstuurprogramma het lid HardwareReceiveFilterCapabilities in op het adres van een NDIS_RECEIVE_FILTER_CAPABILITIES structuur. Deze structuur is eerder geïnitialiseerd met de momenteel ingeschakelde ontvangstfiltermogelijkheden van de netwerkadapter.

  5. Het stuurprogramma roept NdisMSetMiniportAttributes aan en stelt de MiniportAttributes-parameter in als een aanwijzer naar de NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES-structuur.

Zie Initialiseren van een minipoortadaptervoor meer informatie over het initialisatieproces van de adapter.

Het controleren van ontvangstfilter mogelijkheden door bovenliggende stuurprogramma's

NDIS geeft de momenteel ingeschakelde ontvangstfiltermogelijkheden van de netwerkadapter door aan stuurprogramma's die op de volgende manier aan de netwerkadapter binden:

  • Wanneer NDIS de filterattach functie aanroept van een overliggend filterstuurprogramma, geeft NDIS de NIC-switchmogelijkheden van de netwerkadapter door via de parameter AttachParameters. Deze parameter bevat een aanwijzer naar een NDIS_FILTER_ATTACH_PARAMETERS structuur. De ReceiveFilterCapabilities member van deze structuur bevat een aanwijzer naar een NDIS_RECEIVE_FILTER_CAPABILITIES structuur.

  • Wanneer NDIS de ProtocolBindAdapterEx--functie van het overkoepelende protocolstuurprogramma aanroept, geeft NDIS de NIC-switchcapaciteiten van de netwerkadapter door via de BindParameters-parameter. Deze parameter bevat een aanwijzer naar een NDIS_FILTER_ATTACH_PARAMETERS structuur. De ReceiveFilterCapabilities member van deze structuur bevat een aanwijzer naar een NDIS_RECEIVE_FILTER_CAPABILITIES structuur.

NDIS retourneert ook de NDIS_RECEIVE_FILTER_CAPABILITIES structuur bij het afhandelen van object-ID-queryverzoeken van OID_RECEIVE_FILTER_CURRENT_CAPABILITIES en OID_RECEIVE_FILTER_HARDWARE_CAPABILITIES die worden uitgegeven door bovenliggende protocol- of filterstuurprogramma's.