Condividi tramite


OID_SRIOV_READ_VF_CONFIG_SPACE

Un driver overlying genera una richiesta di metodo OID (Object Identifier) di OID_SRIOV_READ_VF_CONFIG_SPACE per leggere i dati dallo spazio di configurazione PCI Express (PCIe) per una funzione virtuale PCIe specificata nella scheda di rete.

Dopo aver restituito correttamente la richiesta di metodo OID, il membro InformationBuffer della struttura NDIS_OID_REQUEST contiene un puntatore a un buffer allocato dal chiamante. Questo buffer è formattato per contenere quanto segue:

  • Struttura NDIS_SRIOV_READ_VF_CONFIG_SPACE_PARAMETERS che contiene i parametri per un'operazione di lettura dello spazio di configurazione PCI di un VF.

  • Spazio buffer aggiuntivo per i dati da leggere dallo spazio di configurazione PCI.

Commenti

Il driver miniport VF viene eseguito nel sistema operativo guest di una partizione figlio Hyper-V. A causa di questo, il driver miniport VF non può accedere direttamente alle risorse hardware, ad esempio lo spazio di configurazione PCI di VF. Solo il driver miniport per la funzione fisica PCIe (PF) può accedere allo spazio di configurazione PCI per un VF. Il driver miniport PF viene eseguito nel sistema operativo di gestione di una partizione padre Hyper-V e ha accesso con privilegi alle risorse VF.

Per leggere lo spazio di configurazione PCI VF, i driver che vengono eseguiti nel sistema operativo di gestione eseguono la richiesta del metodo OID di OID_SRIOV_READ_VF_CONFIG_SPACE al driver miniport PF. Questa richiesta di metodo OID è necessaria per i driver miniport PF che supportano l'interfaccia di virtualizzazione I/O (SR-IOV) singola.

Ad esempio, lo stack di virtualizzazione eseguito nel sistema operativo di gestione genera la richiesta del metodo OID di OID_SRIOV_READ_VF_CONFIG_SPACE quando il driver miniport VF chiama NdisMGetBusData per leggere dallo spazio di configurazione PCI VF.

Quando gestisce la richiesta del metodo OID di OID_SRIOV_READ_VF_CONFIG_SPACE, il driver miniport PF deve seguire queste linee guida:

  • Il driver miniport deve verificare che il VF, specificato dal membro VFId della struttura NDIS_SRIOV_READ_VF_CONFIG_SPACE_PARAMETERS , abbia risorse che sono state assegnate in precedenza. Il driver miniport alloca le risorse per un VF tramite una richiesta di metodo OID di OID_NIC_SWITCH_ALLOCATE_VF. Se le risorse per il VF specificato non sono state allocate, il driver deve non riuscire la richiesta OID.

  • Il driver miniport deve verificare che il buffer (a cui fa riferimento il membro InformationBuffer della struttura di NDIS_OID_REQUEST ) sia sufficiente per restituire i dati dello spazio di configurazione PCIe richiesti. Se non è vero, il driver deve non riuscire la richiesta OID.

  • Il driver miniport chiama in genere NdisMGetVirtualFunctionBusData per eseguire query sullo spazio di configurazione PCIe richiesto. Tuttavia, il driver miniport può anche restituire i dati dello spazio di configurazione PCIe per il VF che il driver ha memorizzato nella cache dalle operazioni di lettura o scrittura precedenti dello spazio di configurazione PCIe.

    Nota Se un fornitore di hardware indipendente (IHV) fornisce un driver del bus virtuale (VBD) come parte del pacchetto driver SR-IOV, il driver miniport non deve chiamare NdisMGetVirtualFunctionBusData. Il driver deve invece interfacciarsi con VBD tramite un canale di comunicazione privato e richiedere che la chiamata VBD ReadVfConfigBlock. Questa funzione viene esposta dall'interfaccia GUID_VPCI_INTERFACE_STANDARD supportata dal driver del bus PCI (VPCI) sottostante.

Se il driver miniport PF può completare correttamente la richiesta OID, il driver deve copiare i dati dello spazio di configurazione PCI richiesti nel buffer a cui fa riferimento il membro InformationBufferdella struttura NDIS_OID_REQUEST. Il driver copia i dati nel buffer in corrispondenza dell'offset specificato dal membro BufferOffset della struttura NDIS_SRIOV_READ_VF_CONFIG_SPACE_PARAMETERS .

Per altre informazioni, vedere Esecuzione di query sui dati di configurazione PCI di una funzione virtuale.

Codici di stato restituiti

Il driver miniport PF restituisce uno dei codici di stato seguenti per la richiesta del metodo OID di OID_SRIOV_READ_VF_CONFIG_SPACE.

Codice di stato Descrizione

NDIS_STATUS_SUCCESS

La richiesta OID è stata completata correttamente.

NDIS_STATUS_NOT_SUPPORTED

Il driver miniport non supporta l'interfaccia di virtualizzazione I/O (SR-IOV) radice singola o non è abilitata per l'uso dell'interfaccia.

NDIS_STATUS_INVALID_PARAMETER

Uno o più membri della struttura NDIS_SRIOV_READ_VF_CONFIG_SPACE_PARAMETERS hanno valori non validi.

NDIS_STATUS_INVALID_LENGTH

Il buffer delle informazioni era troppo breve. Il driver miniport deve impostare i DATI. METHOD_INFORMATION. Membro ByteNeeded nella struttura NDIS_OID_REQUEST alla dimensione minima del buffer necessaria.

NDIS_STATUS_FAILURE

La richiesta non è riuscita per altri motivi.

Requisiti

Versione

Supportato in NDIS 6.30 e versioni successive.

Intestazione

Ntddndis.h (include Ndis.h)

Vedi anche


GUID_VPCI_INTERFACE_STANDARD

NDIS_OID_REQUEST

NDIS_SRIOV_READ_VF_CONFIG_SPACE_PARAMETERS

NdisMGetBusData

NdisMGetVirtualFunctionBusData

OID_NIC_SWITCH_ALLOCATE_VF

ReadVfConfigBlock