OID_SRIOV_VF_INVALIDATE_CONFIG_BLOCK

NDIS invia una richiesta di metodo OID (Object Identifier) di OID_SRIOV_VF_INVALIDATE_CONFIG_BLOCK per notificare al driver miniport una funzione virtuale PCI Express (PCIe) che i dati all'interno di uno o più blocchi di configurazione sono cambiati. NDIS genera questo OID quando il driver miniport per una funzione fisica PCIe chiama NdisMInvalidateConfigBlock.

Il membro InformationBuffer della struttura NDIS_OID_REQUEST contiene un puntatore a una struttura NDIS_SRIOV_VF_INVALIDATE_CONFIG_BLOCK_INFO . Questa struttura specifica uno o più blocchi di configurazione della funzione virtuale (VF) i cui dati sono stati modificati (invalidati) dal driver miniport PF.

Commenti

Viene usato un blocco di configurazione VF per la comunicazione backchannel tra i driver miniport PF e VF. L'IHV può definire uno o più blocchi di configurazione VF per il dispositivo. Ogni blocco di configurazione VF ha un formato, una lunghezza e un ID blocco definiti dall'IHV.

Nota I dati di ogni blocco di configurazione VF vengono usati solo dai driver PF e miniport VF.

I dati di configurazione VF vengono scambiati tra i driver seguenti:

  • Driver VF, che viene eseguito nel sistema operativo guest. Questo sistema operativo viene eseguito all'interno di una partizione figlio Hyper-V.

  • Driver PF, che viene eseguito nel sistema operativo di gestione. Questo sistema operativo viene eseguito all'interno della partizione padre hyper-V.

Per gestire le notifiche dei dati di configurazione VF non validi, NDIS e i driver miniport seguire questa procedura:

  1. Nel sistema operativo guest NDIS invia una richiesta di controllo di I/O di IOCTL_VPCI_INVALIDATE_BLOCK richiesta. Al termine di questo IOCTL, NDIS riceve una notifica che indica che i dati di configurazione VF sono stati modificati.

  2. Nel sistema operativo di gestione vengono eseguiti i passaggi seguenti:

    1. Il driver miniport PF chiama la funzione NdisMInvalidateConfigBlock per notificare a NDIS che i dati di configurazione VF sono stati modificati e non sono più validi. Il driver imposta il parametro BlockMask su una maschera di bit ULONGLONG che specifica quali blocchi di configurazione VF sono stati modificati. Ogni bit nella maschera di bit corrisponde a un blocco di configurazione VF. Se il bit è impostato su uno, i dati nel blocco di configurazione VF corrispondente sono stati modificati.

    2. NDIS segnala lo stack di virtualizzazione, che viene eseguito nel sistema operativo di gestione, sulla modifica ai dati del blocco di configurazione VF. Lo stack di virtualizzazione memorizza nella cache i dati dei parametri BlockMask .

      Nota Ogni volta che il driver miniport PF chiama NdisMInvalidateConfigBlock, lo stack di virtualizzazione ORs i dati del parametro BlockMask con il valore corrente nella cache.

    3. Lo stack di virtualizzazione invia una notifica al driver PCI virtuale (VPCI), che viene eseguito nel sistema operativo guest, sull'invalidazione dei dati di configurazione VF. Lo stack di virtualizzazione invia i dati dei parametri BlockMask memorizzati nella cache al driver VPCI.

  3. Nel sistema operativo guest vengono eseguiti i passaggi seguenti:

    1. Il driver VPCI salva i dati dei parametri BlockMask memorizzati nella cache nel membro BlockMask della struttura VPCI_INVALIDATE_BLOCK_OUTPUT associata alla richiesta di IOCTL_VPCI_INVALIDATE_BLOCK .

    2. Il driver VPCI completa correttamente la richiesta di IOCTL_VPCI_INVALIDATE_BLOCK . In questo caso, NDIS invia una richiesta di metodo OID di OID_SRIOV_VF_INVALIDATE_CONFIG_BLOCK al driver miniport VF. Una NDIS_SRIOV_VF_INVALIDATE_CONFIG_BLOCK_INFO viene passata nella richiesta OID. Questa struttura contiene i dati dei parametri BlockMask memorizzati nella cache.

      NDIS invia anche un'altra richiesta di IOCTL_VPCI_INVALIDATE_BLOCK per gestire le notifiche successive delle modifiche ai dati di configurazione VF.

    3. Quando il driver VF gestisce la richiesta di OID_SRIOV_VF_INVALIDATE_CONFIG_BLOCK, legge i dati dai blocchi di configurazione VF specificati.

Per altre informazioni sulla comunicazione backchannel all'interno dell'interfaccia SR-IOV (Single Root I/O Virtualization), vedere SR-IOV PF/VF Backchannel Communication.For more information about backchannel communication within the single root I/O virtualization interface (SR-IOV), see SR-IOV PF/VF Backchannel Communication.

Codici di stato restituiti

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

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 radice singola (SR-IOV) o non è abilitata per l'uso dell'interfaccia.

NDIS_STATUS_INVALID_PARAMETER

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

NDIS_STATUS_INVALID_LENGTH

Il buffer delle informazioni era troppo breve. NDIS imposta i DATI. SET_INFORMATION. Membro BytesNeeded nella struttura NDIS_OID_REQUEST alle dimensioni della struttura NDIS_SRIOV_VF_INVALIDATE_CONFIG_BLOCK_INFO .

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


IOCTL_VPCI_INVALIDATE_BLOCK

NDIS_OID_REQUEST

NDIS_SRIOV_VF_INVALIDATE_CONFIG_BLOCK_INFO

NdisMInvalidateConfigBlock

OID_SRIOV_READ_VF_CONFIG_SPACE

VPCI_INVALIDATE_BLOCK_OUTPUT