Fonctionnalités VMMQ publicitaires
Les pilotes miniport inscrivent la fonctionnalité VMMQ (Virtual Machine Multiple Queues) d’une carte réseau lors de l’initialisation de l’adaptateur miniport.
Notes
Si la carte réseau prend en charge VMMQ, le VPort par défaut et au moins un VPort non par défaut doivent prendre en charge VMMQ.
Pendant l’initialisation, le pilote miniport doit examiner le mot clé INF *RssOnHostVPorts afin de déterminer s’il doit activer la fonctionnalité VMMQ sur la carte réseau. Pour plus d’informations sur la gestion des mots clés RSS pour VMMQ, consultez Mots clés INF standardisés pour VMMQ.
En outre, la pile ne peut activer VMMQ sur la carte réseau que si l’adaptateur miniport prend en charge la création d’un commutateur de carte réseau. NDIS peut créer un commutateur de carte réseau sur l’adaptateur miniport lorsque le *SriovPreferred INF mot clé est défini sur un ou *SriovPreferred est défini sur zéro et *RssOrVmqPreference est défini sur un. Pour plus d’informations, consultez Mots clés INF standardisés pour SR-IOV et Mots clés INF standardisés pour VMQ.
Lorsque le pilote miniport configure les paramètres du commutateur de carte réseau, il doit définir les champs de la structure NDIS_NIC_SWITCH_PARAMETERS comme suit :
Définissez le membre Révision de l’en-tête sur NDIS_NIC_SWITCH_PARAMETERS_REVISION_2.
Définissez NumQueuePairsForDefaultVPort le nombre de paires de files d’attente affectées à un VPort par défaut.
Les pilotes miniport publient la fonctionnalité VMMQ de la carte réseau via la structure NDIS_NIC_SWITCH_CAPABILITIES . Le pilote miniport doit initialiser NDIS_NIC_SWITCH_CAPABILITIES comme suit :
Définissez le membre Révision de l’en-têtesur NDIS_NIC_SWITCH_CAPABILITIES_REVISION_3.
Définissez les indicateurs NicSwitchCapabilities comme suit :
Définissez NDIS_NIC_SWITCH_CAPS_SINGLE_VPORT_POOL sur un pour indiquer que des VPorts autres que les valeurs par défaut peuvent être créées sur le PF. Cet indicateur doit être défini.
Définissez NDIS_NIC_SWITCH_CAPS_ASYMMETRIC_QUEUE_PAIRS_FOR_NONDEFAULT_VPORT_SUPPORTED pour indiquer que NDIS peut allouer un nombre arbitraire de files d’attente VMMQ sur chaque VPort. Sinon, tous les VPorts autres que ceux par défaut ont le même nombre maximal de files d’attente VMMQ que le champ MaxNumQueuePairsPerNonDefaultVPort définit.
Définissez NDIS_NIC_SWITCH_CAPS_RSS_ON_PF_VPORTS_SUPPORTED sur un pour indiquer que la carte réseau prend en charge VMMQ pour PF VPorts.
Notes
Si l’un des quatre indicateurs suivants par pf VPort n’est pas défini, les pilotes de niveau supérieur utilisent les valeurs spécifiées lorsque les paramètres RSS des VPorts PF sont définis (y compris le VPort par défaut). Pour plus d’informations , consultez Activation, désactivation et mise à jour de VMMQ sur un VPort.
- Définissez NDIS_NIC_SWITCH_CAPS_RSS_PER_PF_VPORT_INDIRECTION_TABLE_SUPPORTED sur une pour indiquer que la carte réseau est en mesure de gérer les tables d’indirection PF VPort. Cet indicateur doit être défini.
Notes
Les trois indicateurs suivants NDIS_NIC_SWITCH_CAPS_RSS_PER_PF_VPORT_HASH_FUNCTION_SUPPORTED, NDIS_NIC_SWITCH_CAPS_RSS_PER_PF_VPORT_HASH_TYPE_SUPPORTED et NDIS_NIC_SWITCH_CAPS_RSS_PER_PF_VPORT_HASH_KEY_SUPPORTED doivent tous avoir la valeur zéro ou être tous définis sur un. S’ils sont tous définis sur zéro, le logiciel calcule à nouveau le hachage.
Définissez NDIS_NIC_SWITCH_CAPS_RSS_PER_PF_VPORT_HASH_FUNCTION_SUPPORTED sur un si la carte réseau prend en charge la définition d’une autre fonction de hachage par VPort PF.
Définissez NDIS_NIC_SWITCH_CAPS_RSS_PER_PF_VPORT_HASH_TYPE_SUPPORTED sur un si la carte réseau prend en charge la définition d’un type de hachage différent par pf VPort.
Définissez NDIS_NIC_SWITCH_CAPS_RSS_PER_PF_VPORT_HASH_KEY_SUPPORTED sur une si la carte réseau prend en charge la définition d’une autre clé secrète de hachage par pf VPort.
Définissez NDIS_NIC_SWITCH_CAPS_RSS_PER_PF_VPORT_INDIRECTION_TABLE_SIZE_RESTRICTED sur un si la carte réseau a une limitation sur la taille de la table d’indirection pour les VPorts PF. Cet indicateur force l’émetteur d’un OID RSS à utiliser une taille de table d’indirection VPort par PF égale au nombre de files d’attente VPort arrondies à la puissance suivante de deux. Cet indicateur peut être combiné avec l’indicateur NDIS_NIC_SWITCH_CAPS_ASYMMETRIC_QUEUE_PAIRS_FOR_NONDEFAULT_VPORT_SUPPORTED (différents VPorts PF peuvent avoir différents nombres de files d’attente). Cet indicateur empêche les utilisateurs VMMQ d’effectuer une direction de file d’attente affinée.
Définissez MaxNumVPorts pour spécifier le nombre maximal de VPorts.
Définissez MaxNumQueuePairs pour spécifier le nombre maximal de paires de files d’attente qui peuvent être affectées à toutes les VPorts. Cela inclut le VPort par défaut qui est attaché au PF. Ce nombre doit refléter les fonctionnalités matérielles réelles.
Définissez MaxNumQueuePairsPerNonDefaultVPort pour spécifier le nombre maximal de paires de files d’attente qui peuvent être affectées à un VPort autre que celui par défaut.
Définissez MaxNumRssCapableNonDefaultPFVPorts pour spécifier le nombre maximal de VPorts PF non par défaut pouvant prendre en charge VMMQ.
Définissez NumberOfIndirectionTableEntriesForDefaultVPort pour spécifier le nombre d’entrées de table d’indirection pour le VPort par défaut.
Définissez NumberOfIndirectionTableEntriesPerNonDefaultPFVPort pour spécifier le nombre d’entrées de table d’indirection pour chaque VPort PF non par défaut. La taille de la table d’indirection doit être la même pour tous les VPorts PF non par défaut.
Définissez MaxNumQueuePairsForDefaultVPort pour spécifier le nombre maximal de paires de files d’attente qui peuvent être attribuées à un VPort par défaut lors de la création du commutateur de carte réseau.
Une fois les fonctionnalités VMMQ publiées, NDIS est responsable de la gestion de l’OID OID_GEN_RECEIVE_SCALE_CAPABILITIES lorsqu’il est appelé sur le VPort par défaut ou sur un VPort non par défaut. Lorsque le pilote miniport retourne les fonctionnalités RSS dans la structure NDIS_RECEIVE_SCALE_CAPABILITIES , il ne doit pas limiter les champs NumberOfInterruptMessages par l’un des mots clés RSS standard (tels que *MaxRssProcessors). Le pilote de niveau supérieur incorporera ce nombre dans l’algorithme d’allocation du processeur hôte.