Condividi tramite


Comunicazione backchannel da un driver miniport VF

Un driver miniport di una funzione virtuale PCI Express (PCIe) comunica con il driver miniport della funzione fisica PCIe (PF) per leggere o scrivere dati da un blocco di configurazione VF.

Viene usato un blocco di configurazione VF per la comunicazione backchannel tra i driver miniport PF e VF. Il fornitore hardware indipendente (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. Ad esempio, l'IHV può definire un blocco di configurazione VF che può essere usato per l'indirizzo MAC (Media Access Control) del driver miniport VF. È possibile usare un altro blocco di configurazione VF per la configurazione corrente di VF e della porta virtuale (VPort).

Nota I dati di ogni blocco di configurazione VF vengono usati solo dai driver PF e miniport VF. Il formato e il contenuto di questi dati sono opachi ai componenti del sistema operativo Windows.

A ogni blocco di configurazione VF viene assegnato un identificatore univoco dall'IHV. In questo modo il driver miniport VF può eseguire query o impostare informazioni su blocchi di configurazione VF specifici.

I driver miniport VF avviano l'operazione di lettura o scrittura in un blocco di configurazione VF specificato tramite le funzioni seguenti:

  • NdisMReadConfigBlock, che legge i dati da un blocco di configurazione VF specificato. Quando il driver miniport VF chiama questa funzione, specifica l'identificatore di blocco e la lunghezza dei dati da leggere. Il driver passa anche un puntatore al buffer che conterrà i dati richiesti.

  • NdisMWriteConfigBlock, che scrive i dati in un blocco di configurazione VF specificato. Quando il driver miniport VF chiama questa funzione, specifica l'identificatore di blocco e la lunghezza dei dati da scrivere. Il driver passa anche un puntatore al buffer da cui scrivere i dati.

Il driver miniport PF gestisce l'accesso al blocco di configurazione VF specificato nei modi seguenti:

  • Quando il driver miniport VF chiama NdisMReadConfigBlock, NDIS emette una richiesta di metodo OID (Object Identifier) di OID_SRIOV_READ_VF_CONFIG_BLOCK al driver miniport PF. Questa richiesta OID contiene i dati dei parametri passati dal driver miniport VF nella chiamata di funzione.

    Il driver miniport PF esegue l'operazione di lettura e restituisce i dati richiesti quando il driver completa la richiesta OID. Al termine della richiesta OID, NDIS torna dalla chiamata a NdisMReadConfigBlock.

  • Quando il driver miniport VF chiama NdisMWriteConfigBlock, NDIS invia una richiesta di metodo OID di OID_SRIOV_WRITE_VF_CONFIG_BLOCK al driver miniport PF. Questa richiesta OID contiene i dati dei parametri passati dal driver miniport VF nella chiamata di funzione.

    Il driver miniport PF esegue l'operazione di scrittura e completa la richiesta OID. Al termine della richiesta OID, NDIS restituisce dalla chiamata a NdisMWriteConfigBlock.

Nella figura seguente viene illustrato il processo di lettura e scrittura di blocchi di configurazione VF sull'interfaccia backchannel SR-IOV.

Diagramma che mostra il processo di lettura e scrittura di blocchi di configurazione VF tra il driver miniport VF, NDIS e il driver miniport PF.