Funzionalità DI VMMQ pubblicitarie
I driver Miniport registrano la funzionalità Virtual Machine Multiple Queues (VMMQ) di una scheda di interfaccia di rete durante l'inizializzazione dell'adattatore miniport.
Nota
Se la scheda di interfaccia di rete supporta VMMQ, il VPort predefinito e almeno un VPort non predefinito deve supportare VMMQ.
Durante l'inizializzazione, il driver miniport deve esaminare la parola chiave INF *RssOnHostVPorts per determinare se deve abilitare la funzionalità VMMQ nella scheda di interfaccia di rete. Per altre informazioni sulla gestione delle parole chiave RSS per VMMQ, vedere Parole chiave INF standardizzate per VMMQ.
Inoltre, lo stack può attivare VMMQ solo nella scheda di interfaccia di rete se l'adattatore miniport supporta la creazione di un commutatore della scheda di interfaccia di rete. NDIS può creare un commutatore NIC sull'adattatore miniport quando la parola chiave INF *SriovPreferred è impostata su uno o *SriovPreferred è impostato su zero e *RssOrVmqPreference è impostato su uno. Per altre informazioni, vedere Parole chiave INF standardizzate per SR-IOV e parole chiave INF standardizzate per VMQ.
Quando il driver miniport configura i parametri per l'opzione della scheda di interfaccia di rete, deve impostare i campi della struttura NDIS_NIC_SWITCH_PARAMETERS come indicato di seguito:
Impostare il membro Revision di Headersu NDIS_NIC_SWITCH_PARAMETERS_REVISION_2.
Impostare NumQueuePairsForDefaultVPort sul numero di coppie di code assegnate a un VPort predefinito.
I driver Miniport annunciano la funzionalità VMMQ della scheda di interfaccia di rete tramite la struttura NDIS_NIC_SWITCH_CAPABILITIES . Il driver miniport deve inizializzare NDIS_NIC_SWITCH_CAPABILITIES come indicato di seguito:
Impostare il membro Revision di Headersu NDIS_NIC_SWITCH_CAPABILITIES_REVISION_3.
Impostare i flag NicSwitchCapabilities come indicato di seguito:
Impostare NDIS_NIC_SWITCH_CAPS_SINGLE_VPORT_POOL su uno per indicare che le VPort non predefinite possono essere create nel file PF. Questo flag deve essere impostato.
Impostare NDIS_NIC_SWITCH_CAPS_ASYMMETRIC_QUEUE_PAIRS_FOR_NONDEFAULT_VPORT_SUPPORTED per indicare che NDIS può allocare un numero arbitrario di code VMMQ in ogni VPort. In caso contrario, tutti i VPort non predefiniti hanno lo stesso numero massimo di code VMMQ definite dal campo MaxNumQueuePairsPerNonDefaultVPort .
Impostare NDIS_NIC_SWITCH_CAPS_RSS_ON_PF_VPORTS_SUPPORTED su uno per indicare che la scheda di interfaccia di rete supporta VMMQ per I VPort PF.
Nota
Se uno dei quattro flag VPort PF seguenti non è impostato, i driver di livello superiore useranno i valori specificati quando vengono impostati i parametri RSS dei VPort PF (incluso il VPort predefinito). Per altre informazioni , vedere Abilitazione, disabilitazione e aggiornamento di VMMQ in un VPort.
- Impostare NDIS_NIC_SWITCH_CAPS_RSS_PER_PF_VPORT_INDIRECTION_TABLE_SUPPORTED su uno per indicare che la scheda di interfaccia di rete è in grado di gestire le tabelle indirette VPort PF. Questo flag deve essere impostato.
Nota
I tre flag seguenti NDIS_NIC_SWITCH_CAPS_RSS_PER_PF_VPORT_HASH_FUNCTION_SUPPORTED, NDIS_NIC_SWITCH_CAPS_RSS_PER_PF_VPORT_HASH_TYPE_SUPPORTED e NDIS_NIC_SWITCH_CAPS_RSS_PER_PF_VPORT_HASH_KEY_SUPPORTED devono essere tutti impostati su zero o tutti su uno. Se sono tutti impostati su zero, il software calcolerà nuovamente l'hash.
Impostare NDIS_NIC_SWITCH_CAPS_RSS_PER_PF_VPORT_HASH_FUNCTION_SUPPORTED su uno se la scheda di interfaccia di rete supporta l'impostazione di una funzione hash diversa per PF VPort.
Impostare NDIS_NIC_SWITCH_CAPS_RSS_PER_PF_VPORT_HASH_TYPE_SUPPORTED su uno se la scheda di interfaccia di rete supporta l'impostazione di un tipo hash diverso per ogni VPort PF.
Impostare NDIS_NIC_SWITCH_CAPS_RSS_PER_PF_VPORT_HASH_KEY_SUPPORTED su uno se la scheda di interfaccia di rete supporta l'impostazione di una chiave privata hash diversa per ogni VPort PF.
Impostare NDIS_NIC_SWITCH_CAPS_RSS_PER_PF_VPORT_INDIRECTION_TABLE_SIZE_RESTRICTED su uno se la scheda di interfaccia di rete presenta una limitazione per le dimensioni della tabella di riferimento indiretto per i VPort PF. Questo flag impone all'autorità di certificazione di un OID RSS di usare una dimensione di tabella di riferimento indiretto VPort per PF uguale al numero di code VPort arrotondate fino alla potenza successiva di due. Questo flag può essere combinato con il flag di NDIS_NIC_SWITCH_CAPS_ASYMMETRIC_QUEUE_PAIRS_FOR_NONDEFAULT_VPORT_SUPPORTED (i diversi VPort PF possono avere un numero diverso di code). Questo flag impedisce agli utenti di VMMQ di eseguire lo sterzamento della coda con granularità fine.
Impostare MaxNumVPorts per specificare il numero massimo di VPort.
Impostare MaxNumQueuePairs per specificare il numero massimo di coppie di code che possono essere assegnate a tutte le VPort. Ciò include il VPort predefinito collegato al file PF. Questo numero deve riflettere le funzionalità hardware effettive.
Impostare MaxNumQueuePairsPerNonDefaultVPort per specificare il numero massimo di coppie di code che possono essere assegnate a un VPort non predefinito.
Impostare MaxNumRssCapableNonDefaultPFVPorts per specificare il numero massimo di VPort PF non predefiniti che possono supportare VMMQ.
Impostare NumberOfIndirectionTableEntriesForDefaultVPort per specificare il numero di voci della tabella di riferimento indiretto per il VPort predefinito.
Impostare NumberOfIndirectionTableEntriesPerNonDefaultPFVPort per specificare il numero di voci della tabella di riferimento indiretto per ogni VPort PF non predefinito. Le dimensioni della tabella di riferimento indiretto devono essere uguali per tutte le VPort PF non predefinite.
Impostare MaxNumQueuePairsForDefaultVPort per specificare il numero massimo di coppie di code che possono essere assegnate a un VPort predefinito durante la creazione dell'opzione di interfaccia di rete.
Dopo aver annunciato le funzionalità VMMQ, NDIS è responsabile della gestione del OID_GEN_RECEIVE_SCALE_CAPABILITIES OID quando viene chiamato nel VPort predefinito o in un VPort non predefinito. Quando il driver miniport restituisce le funzionalità RSS nella struttura NDIS_RECEIVE_SCALE_CAPABILITIES , non deve vincolare i campi NumberOfInterruptMessages in base a una qualsiasi delle parole chiave RSS standard (ad esempio *MaxRssProcessors). Il driver di livello superiore incorpora questo numero nell'algoritmo di allocazione della CPU host.