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.