Anzeigen von VMMQ-Funktionen
Miniporttreiber registrieren die VMMQ-Funktion (Virtual Machine Multiple Queues) einer NIC während der Miniportadapterinitialisierung.
Hinweis
Wenn die NIC VMMQ unterstützt, müssen der Standard-VPort und mindestens ein nicht standardmäßiger VPort VMMQ unterstützen.
Während der Initialisierung muss der Miniporttreiber die *RssOnHostVPorts INF-Schlüsselwort (keyword) untersuchen, um festzustellen, ob das VMMQ-Feature für die NIC aktiviert werden soll. Weitere Informationen zum Behandeln von RSS-Schlüsselwörtern für VMMQ finden Sie unter Standardisierte INF-Schlüsselwörter für VMMQ.
Darüber hinaus kann der Stapel VMMQ nur auf der NIC aktivieren, wenn der Miniportadapter das Erstellen eines NIC-Switches unterstützt. NDIS kann einen NIC-Schalter am Miniportadapter erstellen, wenn entweder die *SriovPreferred INF-Schlüsselwort (keyword) auf 1 oder *SriovPreferred auf null und *RssOrVmqPreference auf 1 festgelegt ist. Weitere Informationen finden Sie unter Standardisierte INF-Schlüsselwörter für SR-IOV und Standardisierte INF-Schlüsselwörter für VMQ.
Wenn der Miniporttreiber die Parameter für den NIC-Switch konfiguriert, müssen die Felder der NDIS_NIC_SWITCH_PARAMETERS-Struktur wie folgt festgelegt werden:
Legen Sie das Revisionselement von Header auf NDIS_NIC_SWITCH_PARAMETERS_REVISION_2 fest.
Legen Sie NumQueuePairsForDefaultVPort auf die Anzahl der Warteschlangenpaare fest, die einem Standard-VPort zugewiesen sind.
Miniporttreiber kündigen die VMMQ-Funktion der NIC über die NDIS_NIC_SWITCH_CAPABILITIES-Struktur an. Der Miniporttreiber muss NDIS_NIC_SWITCH_CAPABILITIES wie folgt initialisieren:
Legen Sie das Revisionselement von Header auf NDIS_NIC_SWITCH_CAPABILITIES_REVISION_3 fest.
Legen Sie die NicSwitchCapabilities-Flags wie folgt fest:
Legen Sie NDIS_NIC_SWITCH_CAPS_SINGLE_VPORT_POOL auf 1 fest, um anzugeben, dass nicht standardmäßige VPorts für die PF erstellt werden können. Dieses Flag muss festgelegt werden.
Legen Sie NDIS_NIC_SWITCH_CAPS_ASYMMETRIC_QUEUE_PAIRS_FOR_NONDEFAULT_VPORT_SUPPORTED fest, um anzugeben, dass NDIS eine beliebige Anzahl von VMMQ-Warteschlangen auf jedem VPort zuordnen kann. Andernfalls verfügen alle nicht standardmäßigen VPorts über die gleiche maximale Anzahl von VMMQ-Warteschlangen wie das Feld MaxNumQueuePairsPerNonDefaultVPort definiert.
Legen Sie NDIS_NIC_SWITCH_CAPS_RSS_ON_PF_VPORTS_SUPPORTED auf eins fest, um anzugeben, dass die NIC VMMQ für PF-VPorts unterstützt.
Hinweis
Wenn eines der folgenden vier VPort-Flags pro PF nicht festgelegt ist, verwenden Treiber auf höherer Ebene die Werte, die angegeben werden, wenn die RSS-Parameter der PF-VPorts festgelegt werden (einschließlich des Standard-VPorts). Weitere Informationen finden Sie unter Aktivieren, Deaktivieren und Aktualisieren von VMMQ auf einem VPort.
- Legen Sie NDIS_NIC_SWITCH_CAPS_RSS_PER_PF_VPORT_INDIRECTION_TABLE_SUPPORTED auf 1 fest, um anzugeben, dass die NIC in der Lage ist, Pro PF-VPort-Indirektionstabellen zu verwalten. Dieses Flag muss festgelegt werden.
Hinweis
Die folgenden drei Flags NDIS_NIC_SWITCH_CAPS_RSS_PER_PF_VPORT_HASH_FUNCTION_SUPPORTED, NDIS_NIC_SWITCH_CAPS_RSS_PER_PF_VPORT_HASH_TYPE_SUPPORTED und NDIS_NIC_SWITCH_CAPS_RSS_PER_PF_VPORT_HASH_KEY_SUPPORTED müssen alle auf 0 oder alle auf 1 festgelegt werden. Wenn sie alle auf null festgelegt sind, berechnet die Software den Hash neu.
Legen Sie NDIS_NIC_SWITCH_CAPS_RSS_PER_PF_VPORT_HASH_FUNCTION_SUPPORTED auf einen fest, wenn die NIC das Festlegen einer anderen Hashfunktion pro PF-VPort unterstützt.
Legen Sie NDIS_NIC_SWITCH_CAPS_RSS_PER_PF_VPORT_HASH_TYPE_SUPPORTED auf ein fest, wenn die NIC das Festlegen eines anderen Hashtyps pro PF-VPort unterstützt.
Legen Sie NDIS_NIC_SWITCH_CAPS_RSS_PER_PF_VPORT_HASH_KEY_SUPPORTED auf eins fest, wenn die NIC das Festlegen eines anderen Hashschlüssels pro PF-VPort unterstützt.
Legen Sie NDIS_NIC_SWITCH_CAPS_RSS_PER_PF_VPORT_INDIRECTION_TABLE_SIZE_RESTRICTED auf einen fest, wenn die NIC eine Einschränkung für die Größe der Indirektionstabelle für PF-VPorts aufweist. Dieses Flag zwingt den Aussteller einer RSS-OID, eine Größe pro PF-VPort-Indirektionstabelle zu verwenden, die der Anzahl von VPort-Warteschlangen entspricht, die auf die nächste Leistung von zwei aufgerundet sind. Dieses Flag kann mit dem NDIS_NIC_SWITCH_CAPS_ASYMMETRIC_QUEUE_PAIRS_FOR_NONDEFAULT_VPORT_SUPPORTED-Flag kombiniert werden (verschiedene PF-VPorts können eine unterschiedliche Anzahl von Warteschlangen aufweisen). Dieses Flag verhindert, dass VMMQ-Benutzer eine differenzierte Warteschlangensteuerung ausführen.
Legen Sie MaxNumVPorts fest, um die maximale Anzahl von VPorts anzugeben.
Legen Sie MaxNumQueuePairs fest, um die maximale Anzahl von Warteschlangenpaaren anzugeben, die allen VPorts zugewiesen werden können. Dies schließt den Standard-VPort ein, der an die PF angefügt ist. Diese Zahl sollte die tatsächlichen Hardwarefunktionen widerspiegeln.
Legen Sie MaxNumQueuePairsPerNonDefaultVPort fest, um die maximale Anzahl von Warteschlangenpaaren anzugeben, die einem nicht standardmäßigen VPort zugewiesen werden können.
Legen Sie MaxNumRssCapableNonDefaultPFVPorts fest, um die maximale Anzahl nicht standardmäßiger PF-VPorts anzugeben, die VMMQ unterstützen können.
Legen Sie NumberOfIndirectionTableEntriesForDefaultVPort fest, um die Anzahl der Indirektionstabelleneinträge für den Standard-VPort anzugeben.
Legen Sie NumberOfIndirectionTableEntriesPerNonDefaultPFVPort fest, um die Anzahl der Indirektionstabelleneinträge für jeden nicht standardmäßigen PF-VPort anzugeben. Die Größe der Indirektionstabelle sollte für alle nicht standardmäßigen PF-VPorts identisch sein.
Legen Sie MaxNumQueuePairsForDefaultVPort fest, um die maximale Anzahl von Warteschlangenpaaren anzugeben, die während der Erstellung eines NIC-Switches einem Standard-VPort zugewiesen werden können.
Nachdem die VMMQ-Funktionen angekündigt wurden, ist NDIS für die Behandlung der OID_GEN_RECEIVE_SCALE_CAPABILITIES OID verantwortlich, wenn sie entweder auf dem Standard-VPort oder einem nicht standardmäßigen VPort aufgerufen wird. Wenn der Miniporttreiber die RSS-Funktionen in der NDIS_RECEIVE_SCALE_CAPABILITIES-Struktur zurückgibt, sollten die NumberOfInterruptMessages-Felder nicht durch eines der standardmäßigen RSS-Schlüsselwörter (z. B. *MaxRssProcessors) eingeschränkt werden. Der Treiber der oberen Ebene integriert diese Zahl in den Host-CPU-Zuordnungsalgorithmus.