Gestione delle richieste OID_NIC_SWITCH_ALLOCATE_VF
Quando il driver miniport per la funzione fisica PCI Express (PCIe) nella scheda di rete gestisce la richiesta del metodo OID (Object Identifier) di OID_NIC_SWITCH_ALLOCATE_VF, esegue le operazioni seguenti:
Il driver miniport PF alloca le risorse software per una funzione virtuale PCIe (VF) nella scheda di rete. Queste risorse vengono configurate in base ai parametri specificati nella struttura NDIS_NIC_SWITCH_VF_PARAMETERS .
Il driver miniport PF assegna la funzione VF a un commutatore di interfaccia di rete sulla scheda di rete. L'opzione NIC è identificata dal membro SwitchId della struttura NDIS_NIC_SWITCH_VF_PARAMETERS .
Per altre informazioni su un commutatore della scheda di interfaccia di rete, vedere Commutatori di scheda di interfaccia di rete.
Il driver miniport PF aggiorna il membro VFId con un identificatore VF. Questo identificatore è un indice in base zero e deve essere univoco in tutte le VFS allocate sul commutatore della scheda di interfaccia di rete dal driver miniport PF.
Il driver overlying usa il valore del membro VFId nelle richieste OID successive di OID_NIC_SWITCH_FREE_VF o OID_NIC_SWITCH_VF_PARAMETERS.
Il driver miniport PF aggiorna il membro RequestorId con un ID richiesta PCIe (RID) per il VF.
Il driver miniport chiama NdisMGetVirtualFunctionLocation per ottenere le informazioni RID corrispondenti alla funzione VF. Il driver crea quindi il RID usando la macro NDIS_MAKE_RID in base alle informazioni restituite dalla chiamata a NdisMGetVirtualFunctionLocation.
Il RID viene usato dallo stack di virtualizzazione per il mapping di DMA e interrompe tra pf e VF. Il RID consente inoltre all'unità di gestione della memoria di input/output hardware (IOMMU) di convertire gli indirizzi fisici guest in indirizzi fisici host.
Il driver miniport PF inizializza ed espone la funzione VF. In questo modo il VF è pronto per l'uso dallo stack di virtualizzazione.
Se il driver miniport PF può allocare correttamente le risorse software necessarie e inizializzare la funzione VF, il driver completa la richiesta OID con NDIS_STATUS_SUCCESS. Il driver miniport PF deve mantenere gli ID VF per ogni VF allocato. I driver NDIS e overlying usano l'identificatore VF nelle richieste OID successive al driver miniport PF per varie azioni, ad esempio la reimpostazione o la liberazione della funzione VF.
Nota Quando le risorse per il VF vengono allocate, la funzione VF si trova in uno stato non collegato perché una porta virtuale (VPort) non è collegata alla funzione VF. Il driver overlying può inviare una richiesta OID di OID_NIC_SWITCH_CREATE_VPORT per creare e collegare un VPort al VF. Per altre informazioni, vedere Creazione di una porta virtuale.