Allocation de VPorts pour VMMQ
NDIS alloue des VPorts lorsque la fonctionnalité VMMQ (Virtual Machine Multiple Queues) est présente de la manière suivante.
NDIS crée un VPort autre que celui par défaut sur l’adaptateur miniport en émettant la requête OID OID_NIC_SWITCH_CREATE_VPORT . Lors de la création d’un VPort de fonction physique RSS (PF), NDIS initialise la structure NDIS_NIC_SWITCH_VPORT_PARAMETERS comme suit :
NDIS définit le champ AttachedFunctionId sur NDIS_PF_FUNCTION_ID.
Si VMMQ est activé, NDIS définit le champ NumQueuePairs sur le nombre de paires de files d’attente VMMQ qui doivent être utilisées pour ce VPort. Ce nombre inclut le processeur RSS par défaut pour ce VPort. Il est garanti que le nombre total de processeurs ne dépassera pas ce nombre. Si VMMQ est désactivé, NDIS définit cette valeur sur un.
Si VMMQ est activé, le champ ProcessorAffinity définit un masque de bits des processeurs RSS potentiels que l’adaptateur miniport doit utiliser pour ce VPort. Les processeurs utilisés par la pile réseau pour remplir les entrées de table d’indirection pour le VPort sont un sous-ensemble des processeurs identifiés par ce masque de bits. Le masque sera un sous-ensemble des processeurs RSS retournés par l’appel à NdisGetRssProcessorInformation et le nombre de bits définis peut dépasser le nombre de files d’attente RSS demandées pour le VPort. Si VMMQ est désactivé, l’adaptateur miniport doit utiliser le numéro de processeur le plus bas spécifié dans ce masque de bits lors de la définition de l’affinité de la file d’attente VPort.
NDIS définit l’indicateur NDIS_NIC_SWITCH_VPORT_PARAMS_NUM_QUEUE_PAIRS_CHANGED pour indiquer que le membre NumQueuePairs a été mis à jour après la création du VPort. Lorsque VMMQ est activé, le nombre de files d’attente pour les VPorts par défaut et non par défaut peut être mis à jour.