Traitement de la requête OID_NIC_SWITCH_CREATE_SWITCH

NDIS émet une demande de méthode d’identificateur d’objet (OID) de OID_NIC_SWITCH_CREATE_SWITCH pour effectuer les opérations suivantes :

  • Activer un commutateur NIC sur une carte réseau qui a été créée statiquement par le pilote de miniport pour la fonction physique (PF) PCI Express (PCIe). La PF est un composant matériel de la carte réseau qui prend en charge la virtualisation d’E/S racine unique (SR-IOV).

    Un commutateur NIC est créé statiquement par le pilote de miniport PF dans le contexte vers l’appel à MiniportInitializeEx. Le pilote alloue les ressources et crée le commutateur en fonction des paramètres lus à partir des paramètres du Registre.

  • Créez dynamiquement un commutateur NIC sur une carte réseau.

    Si le pilote de miniport PF ne prend pas en charge la création d’un commutateur NIC statique, il alloue les ressources et crée le commutateur en fonction des paramètres spécifiés dans la requête OID.

Le pilote de miniport PF publie sa prise en charge de l’interface SR-IOV lorsque NDIS appelle la fonction MiniportInitializeEx du pilote. Si le pilote de miniport PF prend en charge SR-IOV, NDIS lit la configuration du commutateur NIC à partir du Registre. Avant que NDIS n’émette une requête de méthode OID de OID_NIC_SWITCH_CREATE_SWITCH au pilote de miniport PF, NDIS met en forme une structure NDIS_NIC_SWITCH_PARAMETERS avec les informations de Registre de la manière suivante :

  • NDIS définit le membre SwitchType sur le type du commutateur NIC.

    À partir de Windows Server 2012, Windows prend uniquement en charge un type de commutateur NdisNicSwitchTypeExternal. Un commutateur externe spécifie que les ports virtuels (VPorts) connectés à ce type de commutateur peuvent accéder au réseau externe via le port physique sur la carte réseau.

    Pour en savoir plus sur le commutateur NIC, consultez Architecture SR-IOV.

  • NDIS définit le membre SwitchId sur une valeur d’identificateur pour le commutateur NIC. L’identificateur de commutateur est un entier compris entre zéro et le nombre de commutateurs pris en charge par la carte réseau. Une valeur NDIS_DEFAULT_SWITCH_ID indique le commutateur NIC par défaut.

    Remarque : à partir de Windows Server 2012, l’interface SR-IOV prend uniquement en charge le commutateur NIC par défaut sur la carte réseau.

  • NDIS définit le membre NumVFs qui spécifie le nombre de fonctions virtuelles PCIe qui peuvent être allouées sur le commutateur NIC.

Lorsqu’il reçoit la demande de la méthode OID d’OID_NIC_SWITCH_CREATE_SWITCH, le pilote de miniport PF doit effectuer les opérations suivantes :

  1. Si le pilote de miniport PF prend en charge la création et la configuration du commutateur statique, il crée le commutateur NIC quand NDIS appelle MiniportInitializeEx. Lorsque le pilote gère cette demande OID, il doit vérifier les paramètres de configuration dans la structure NDIS_NIC_SWITCH_PARAMETERS. Les paramètres doivent être identiques à ceux utilisés par le pilote pour créer le commutateur pendant l’appel à MiniportInitializeEx. Dans le cas contraire, le pilote doit échouer à la demande OID.

    Pour en savoir plus, consultez la Création statique d’un commutateur NIC.

  2. Si le pilote de miniport PF prend en charge la création et la configuration du commutateur dynamique, il doit valider les valeurs de configuration de la structure NDIS_NIC_SWITCH_PARAMETERS et créer le commutateur NIC en fonction de ces valeurs.

    Pour en savoir plus, consultez la Création dynamique d’un commutateur NIC.

  3. Le pilote de miniport PF doit allouer les ressources matérielles et logicielles nécessaires pour le VPort par défaut sur le commutateur NIC.

    Remarque : le VPort par défaut est toujours créé par le biais d’une demande OID de OID_NIC_SWITCH_CREATE_SWITCH et supprimé par une demande OID de OID_NIC_SWITCH_DELETE_SWITCH. Les demandes OID de OID_NIC_SWITCH_CREATE_VPORT et de OID_NIC_SWITCH_DELETE_VPORT sont utilisées pour la création et la suppression de VPorts non définis par défaut sur le commutateur NIC.

  4. Le pilote de miniport PF qui prend en charge la création et la configuration dynamiques du commutateur doit activer la virtualisation SR-IOV sur le commutateur en appelant NdisMEnableVirtualization. Cet appel configure le membre NumVFs et le bit VF Enable dans la structure de fonctionnalité étendue SR-IOV de l’espace de configuration PCI Express (PCIe) de la carte.

    Pour en savoir plus sur l’espace de configuration SR-IOV, consultez la spécification Virtualisation d’E/S d’une racine unique et partage 1.1 PCI-SIG.

    Remarque : si le pilote de miniport PF prend en charge la création de commutateur statique, il active la virtualisation SR-IOV après avoir créé le commutateur lorsque MiniportInitializeEx est appelé.

Si le pilote de miniport PF termine avec succès la demande de méthode OID de OID_NIC_SWITCH_CREATE_SWITCH, il permet d’effectuer les opérations suivantes :

  • Les machines virtuelles peuvent être allouées sur le commutateur NIC par le biais de demandes de méthode OID de OID_NIC_SWITCH_ALLOCATE_VF.

  • Les ports virtuels non définis par défaut peuvent être créés sur le commutateur NIC via des demandes de méthode OID de OID_NIC_SWITCH_CREATE_VPORT.

    Le pilote de miniport est responsable de la gestion de son pool de ports virtuels non définis par défaut. Le pilote spécifie le nombre de ports virtuels non définis par défaut dans son pool via le membre NumVPorts de la structure NDIS_NIC_SWITCH_INFO. Le pilote renvoie cette structure via une demande d’interrogation OID de OID_NIC_SWITCH_ENUM_SWITCHES.

    Remarque : la carte réseau doit toujours créer un VPort par défaut à partir de son pool pour le PF.