Partager via


Détermination des fonctionnalités de filtrage de réception

Cette rubrique décrit comment les pilotes NDIS et overlying déterminent les fonctionnalités de filtrage de réception d’une carte réseau qui prend en charge la virtualisation d’E/S racine unique (SR-IOV). Cette rubrique contient les informations suivantes :

Fonctionnalités de filtrage de réception de rapports pendant MiniportInitializeEx

Interrogation des fonctionnalités de filtrage de réception en sur-mentant les pilotes

Note Seul le pilote miniport pour la fonction physique (PF) PCI Express (PCIe) d’une carte réseau SR-IOV peut signaler des fonctionnalités de filtrage de réception. Les pilotes miniport pour les fonctions virtuelles PCIe ne doivent pas signaler les fonctionnalités de filtrage de réception de l’adaptateur SR-IOV.

Fonctionnalités de filtrage de réception de rapports pendant MiniportInitializeEx

Lorsque NDIS appelle la fonction MiniportInitializeEx du pilote PF miniport, le pilote fournit les fonctionnalités de filtrage de réception suivantes :

  • Les fonctionnalités de filtrage de réception matérielle complètes que la carte réseau peut prendre en charge.

  • Fonctionnalités de filtrage de réception pour les interfaces actuellement activées sur la carte réseau.

Le pilote miniport signale les fonctionnalités de filtrage de réception matérielle complètes de la carte réseau sous-jacente via une structure de NDIS_RECEIVE_FILTER_CAPABILITIES qui est initialisée de la manière suivante :

  1. Le pilote miniport initialise le membre Header . Le pilote définit le membre Type de l’en-tête sur NDIS_OBJECT_TYPE_DEFAULT.

    À compter de NDIS 6.30, le pilote miniport définit le membre Révision de l’en-tête sur NDIS_RECEIVE_FILTER_CAPABILITIES_REVISION_2 et le membre Size sur NDIS_SIZEOF_RECEIVE_FILTER_CAPABILITIES_REVISION_2.

  2. Le pilote miniport définit les autres membres de la structure NDIS_RECEIVE_FILTER_CAPABILITIES sur la plage de valeurs pour les fonctionnalités de filtrage de réception de la carte réseau SR-IOV. Par exemple, le pilote miniport définit les indicateurs appropriés dans SupportedFilterTests pour spécifier les opérations de test de filtre prises en charge par le pilote miniport.

  3. Outre SR-IOV, le filtrage de réception est également utilisé dans les interfaces suivantes :

    Si le pilote miniport prend en charge l’une de ces interfaces, il doit également définir les membres de la structure NDIS_RECEIVE_FILTER_CAPABILITIES sur la plage de valeurs de capacité de filtrage de réception spécifiques à l’interface. Par exemple, si le pilote prend en charge la fusion de paquets NDIS et SR-IOV, il doit définir l’indicateur NDIS_RECEIVE_FILTER_PACKET_COALESCING_SUPPORTED_ON_DEFAULT_QUEUE dans le membre SupportedQueueProperties .

Le pilote miniport signale les fonctionnalités de filtrage de réception actuellement activées de la carte réseau sous-jacente via une structure de NDIS_RECEIVE_FILTER_CAPABILITIES qui est initialisée de la manière suivante :

  1. Le pilote miniport initialise le membre Header . Le pilote définit le membre Type de l’en-tête sur NDIS_OBJECT_TYPE_DEFAULT.

    À compter de NDIS 6.30, le pilote miniport définit le membre Révision de l’en-tête sur NDIS_RECEIVE_FILTER_CAPABILITIES_REVISION_2 et le membre Size sur NDIS_SIZEOF_RECEIVE_FILTER_CAPABILITIES_REVISION_2.

  2. Le pilote miniport définit les autres membres de la structure NDIS_RECEIVE_FILTER_CAPABILITIES sur la plage de valeurs pour les fonctionnalités de filtrage de réception des interfaces actuellement activées. Par exemple, si le regroupement de paquets NDIS est activé, le pilote doit uniquement définir les membres spécifiques à cette technologie.

    Les interfaces qui utilisent le filtrage de réception sont activées ou désactivées via des mots clés INF standardisés. Pour plus d’informations sur la façon dont le regroupement de paquets NDIS est activé, consultez Mots clés INF standardisés pour le coalescing de paquets. Pour plus d’informations sur la façon dont SR-IOV et VMQ sont activés, consultez Gestion des mots clés INF standardisés SR-IOV, VMQ et RSS.

Lorsque NDIS appelle la fonction MiniportInitializeEx du pilote miniport, le pilote enregistre les fonctionnalités de filtrage de réception de la carte réseau en procédant comme suit :

  1. Le pilote miniport initialise une structure NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES .

    Le pilote miniport définit le membre HardwareReceiveFilterCapabilities sur l’adresse d’une structure de NDIS_RECEIVE_FILTER_CAPABILITIES . Cette structure a été initialisée auparavant avec les fonctionnalités de filtrage de réception matérielles complètes de la carte réseau.

  2. Si la fusion des paquets VMQ, SR-IOV et NDIS est actuellement désactivée sur la carte réseau, le pilote miniport définit le membre CurrentReceiveFilterCapabilities sur NULL.

  3. Si la fusion de paquets VMQ, SR-IOV ou NDIS est actuellement activée sur la carte réseau, le pilote miniport doit effectuer les opérations suivantes :

    • Le pilote miniport doit initialiser une autre structure NDIS_RECEIVE_FILTER_CAPABILITIES avec les fonctionnalités de filtrage de réception actuelles pour les interfaces actuellement activées sur la carte réseau.

      Si l’interface SR-IOV est activée, il existe des situations dans lesquelles le pilote miniport doit définir les membres de la structure NDIS_RECEIVE_FILTER_CAPABILITIES sur des valeurs identiques ou différentes. En effet, l’interface SR-IOV fournit un mécanisme de mise en file d’attente similaire à VMQ, mais utilise des ports virtuels (VPorts) au lieu de files d’attente de réception de machine virtuelle.

      Par exemple, le pilote miniport doit définir l’indicateur NDIS_RECEIVE_FILTER_VMQ_FILTERS_ENABLED dans le membre EnabledFilterTypes si l’interface VMQ ou SR-IOV est activée. Toutefois, le pilote miniport doit définir le membre NumQueues sur zéro si l’interface SR-IOV est activée et une valeur différente de zéro si l’interface VMQ est activée.

    • Le pilote miniport définit le membre CurrentReceiveFilterCapabilities sur l’adresse de la structure NDIS_RECEIVE_FILTER_CAPABILITIES qui contient les fonctionnalités de filtrage de réception actuelles pour l’interface actuellement activée.

  4. Si la fusion de paquets VMQ, SR-IOV ou NDIS est actuellement activée sur la carte réseau, le pilote miniport définit le membre HardwareReceiveFilterCapabilities sur l’adresse d’une structure de NDIS_RECEIVE_FILTER_CAPABILITIES . Cette structure a été initialisée avec les fonctionnalités de filtrage de réception actuellement activées de la carte réseau.

  5. Le pilote appelle NdisMSetMiniportAttributes et définit le paramètre MiniportAttributes sur un pointeur vers la structure NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES .

Pour plus d’informations sur le processus d’initialisation de l’adaptateur, consultez Initialisation d’un adaptateur Miniport.

Interrogation des fonctionnalités de filtrage de réception en sur-mentant les pilotes

NDIS transmet les fonctionnalités de filtrage de réception actuellement activées de la carte réseau aux pilotes qui se lient à la carte réseau de la manière suivante :

  • Lorsque NDIS appelle la fonction FilterAttach d’un pilote de filtre trop long, NDIS transmet les fonctionnalités de commutateur de carte réseau de la carte réseau via le paramètre AttachParameters . Ce paramètre contient un pointeur vers une structure NDIS_FILTER_ATTACH_PARAMETERS . Le membre ReceiveFilterCapabilities de cette structure contient un pointeur vers une structure NDIS_RECEIVE_FILTER_CAPABILITIES .

  • Lorsque NDIS appelle la fonction ProtocolBindAdapterEx d’un pilote de protocole sur-menting, NDIS transmet les fonctionnalités de commutateur de carte réseau de la carte réseau via le paramètre BindParameters . Ce paramètre contient un pointeur vers une structure NDIS_FILTER_ATTACH_PARAMETERS . Le membre ReceiveFilterCapabilities de cette structure contient un pointeur vers une structure NDIS_RECEIVE_FILTER_CAPABILITIES .

NDIS retourne également la structure de NDIS_RECEIVE_FILTER_CAPABILITIES lorsqu’il gère les requêtes d’identificateur d’objet (OID) de OID_RECEIVE_FILTER_CURRENT_CAPABILITIES et de OID_RECEIVE_FILTER_HARDWARE_CAPABILITIES qui sont émises par des pilotes de protocole ou de filtres qui se superposent.