Dela via


Backchannel-kommunikation från en VF Miniport-drivrutin

En miniportdrivrutin för en virtuell PCI Express-funktion (PCIe) (VF) kommunicerar med miniportdrivrutinen för PCIe Physical Function (PF) för att läsa eller skriva data från ett VF-konfigurationsblock.

Ett VF-konfigurationsblock används för backchannel-kommunikation mellan PF- och VF-miniportdrivrutinerna. Den oberoende maskinvaruleverantören (IHV) kan definiera ett eller flera VF-konfigurationsblock för enheten. Varje VF-konfigurationsblock har ett IHV-definierat format, längd och block-ID. IHV kan till exempel definiera ett VF-konfigurationsblock som kan användas för MAC-adressen (Media Access Control) för VF-miniportdrivrutinen. Ett annat VF-konfigurationsblock kan användas för nuvarande VF och virtuella portkonfigurationen (VPort).

Note Data från varje VF-konfigurationsblock används endast av PF- och VF-miniportdrivrutinerna. Formatet och innehållet i dessa data är ogenomskinliga för komponenter i Windows-operativsystemet.

Varje VF-konfigurationsblock tilldelas en unik identifierare av IHV. Detta gör att VF-miniportdrivrutinen kan fråga eller ange information om specifika VF-konfigurationsblock.

VF-miniportdrivrutiner initierar läs- eller skrivåtgärden på ett angivet VF-konfigurationsblock via följande funktioner:

  • NdisMReadConfigBlock, som läser data från ett angivet VF-konfigurationsblock. När VF-miniportdrivrutinen anropar den här funktionen anger den blockidentifierare och längden på de data som ska läsas. Drivrutinen skickar också en pekare till bufferten som ska innehålla de önskade data.

  • NdisMWriteConfigBlock, som skriver data till ett angivet VF-konfigurationsblock. När VF-miniportdrivrutinen anropar den här funktionen anger den blockidentifieraren och längden på de data som ska skrivas. Drivrutinen skickar också en pekare till bufferten som data ska skrivas från.

PF-miniportdrivrutinen hanterar åtkomsten till det angivna VF-konfigurationsblocket på följande sätt:

  • När VF-miniportdrivrutinen anropar NdisMReadConfigBlock, utfärdar NDIS en metodbegäran för objektidentifierare (OID) OID_SRIOV_READ_VF_CONFIG_BLOCK till PF-miniportdrivrutinen. Den här OID-begäran innehåller parameterdata som skickades av VF-miniportdrivrutinen i funktionsanropet.

    PF-miniportdrivrutinen utför läsåtgärden och returnerar begärda data när drivrutinen slutför OID-begäran. När OID-begäran har slutförts returnerar NDIS från anropet till NdisMReadConfigBlock.

  • När VF-miniportdrivrutinen anropar NdisMWriteConfigBlockutfärdar NDIS en OID-metodbegäran om OID_SRIOV_WRITE_VF_CONFIG_BLOCK till PF-miniportdrivrutinen. Den här OID-begäran innehåller parameterdata som skickades av VF-miniportdrivrutinen i funktionsanropet.

    PF-miniportdrivrutinen utför skrivåtgärden och slutför OID-begäran. När OID-begäran har slutförts returnerar NDIS från anropet till NdisMWriteConfigBlock.

Följande bild visar processen med att läsa och skriva VF-konfigurationsblock över SR-IOV backchannel-gränssnittet.

diagram som visar processen för att läsa och skriva VF-konfigurationsblock mellan VF-miniportdrivrutinen, NDIS och PF-miniportdrivrutinen.