Determinazione delle funzionalità SR-IOV
Questo argomento descrive in che modo NDIS e driver eccessivamente determinano le singole funzionalità di virtualizzazione I/O radice (SR-IOV) di una scheda di rete. In questo argomento sono contenute le informazioni indicate di seguito.
Creazione di report sulle funzionalità SR-IOV durante MiniportInitializeEx
Esecuzione di query sulle funzionalità SR-IOV tramite l'overlying dei driver
Creazione di report sulle funzionalità SR-IOV durante MiniportInitializeEx
Quando NDIS chiama la funzione MiniportInitializeEx del driver miniport , il driver offre le funzionalità SR-IOV seguenti:
Set completo di funzionalità hardware SR-IOV supportate dalla scheda di rete.
Funzionalità SR-IOV attualmente abilitate nella scheda di rete.
Indica se il driver miniport gestisce la funzione fisica PCI Express (PCIe) o la funzione virtuale (VF) nella scheda di rete.
Il driver miniport segnala le funzionalità hardware SR-IOV della scheda di rete sottostante tramite una struttura NDIS_SRIOV_CAPABILITIES inizializzata nel modo seguente:
Il driver miniport inizializza il membro Header . Il driver imposta il membro Type di Header su NDIS_OBJECT_TYPE_DEFAULT.
A partire da NDIS 6.30, il driver miniport imposta il membro Revision di Header su NDIS_SRIOV_CAPABILITIES _REVISION_1 e il membro Size su NDIS_SIZEOF_SRIOV_CAPABILITIES_REVISION_1.
Il driver miniport imposta i flag appropriati nel membro SriovCapabilities per segnalare le funzionalità SR-IOV.
Se la scheda di rete supporta SR-IOV, il driver miniport per la funzione fisica PCI Express (PCIe) della scheda deve impostare i flag seguenti:
NDIS_SRIOV_CAPS_SRIOV_SUPPORTED
NDIS_SRIOV_CAPS_PF_MINIPORT
Nota
Il driver miniport per una funzione virtuale PCIe (VF) della scheda di rete deve impostare sia il flag NDIS_SRIOV_CAPS_VF_MINIPORT che il flag NDIS_SRIOV_CAPS_SRIOV_SUPPORTED.
Quando NDIS chiama la funzione MiniportInitializeEx del driver miniport , il driver registra le funzionalità SR-IOV della scheda di rete seguendo questa procedura:
Il driver miniport inizializza una struttura NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES .
Il driver miniport imposta il membro HardwareSriovCapabilities su un puntatore alla struttura NDIS_SRIOV_CAPABILITIES inizializzata in precedenza.
Se l'impostazione del Registro di sistema per la parola chiave *SRIOV INF ha un valore pari a uno, le funzionalità SR-IOV sono attualmente abilitate nella scheda di rete. Il driver miniport imposta i membri CurrentSriovCapabilities su un puntatore alla stessa struttura NDIS_SRIOV_CAPABILITIES .
Se l'impostazione del Registro di sistema per la parola chiave *SRIOV INF ha un valore pari a zero, le funzionalità SR-IOV sono attualmente disabilitate nella scheda di rete. Il driver miniport deve impostare il membro CurrentSriovCapabilities su NULL.
Per altre informazioni sulla parola chiave *SRIOV INF, vedere Parole chiave INF standardizzate per SR-IOV.
Il driver chiama NdisMSetMiniportAttributes e imposta il parametro MiniportAttributes su un puntatore alla struttura NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES .
Per altre informazioni sul processo di inizializzazione dell'adattatore, vedere Inizializzazione di un adattatore Miniport.
Esecuzione di query sulle funzionalità SR-IOV tramite l'overlying dei driver
NDIS passa le funzionalità SR-IOV attualmente abilitate per la scheda di rete ai driver che si associano alla scheda di rete nel modo seguente:
Quando NDIS chiama la funzione FilterAttach di un driver di filtro eccessiva, NDIS passa le funzionalità SR-IOV della scheda di rete tramite il parametro AttachParameters . Questo parametro contiene un puntatore a una struttura NDIS_FILTER_ATTACH_PARAMETERS . Il membro SriovCapabilities di questa struttura contiene un puntatore a una struttura NDIS_SRIOV_CAPABILITIES .
Quando NDIS chiama la funzione ProtocolBindAdapterEx di un driver di protocollo overlying, NDIS passa le funzionalità SR-IOV della scheda di rete tramite il parametro BindParameters . Questo parametro contiene un puntatore a una struttura NDIS_FILTER_ATTACH_PARAMETERS . Il membro SriovCapabilities di questa struttura contiene un puntatore a una struttura NDIS_SRIOV_CAPABILITIES .
NDIS restituisce anche la struttura di NDIS_SRIOV_CAPABILITIES quando gestisce le richieste di query OID (Object Identifier) di OID_SRIOV_HARDWARE_CAPABILITIES e OID_SRIOV_CURRENT_CAPABILITIES rilasciate tramite driver di protocollo o filtro tramite overlying.