Determinazione delle funzionalità del commutatore della scheda di interfaccia di rete

Questo argomento descrive in che modo NDIS e driver eccessivamente determinano le funzionalità del commutatore NIC di una scheda di rete che supporta la virtualizzazione I/O radice singola (SR-IOV). In questo argomento sono contenute le informazioni indicate di seguito.

Funzionalità del commutatore della scheda di interfaccia di rete per la creazione di report durante MiniportInitializeEx

Esecuzione di query sulle funzionalità del commutatore di scheda di interfaccia di rete mediante l'overlying dei driver

Nota Solo il driver miniport per la funzione fisica PCI Express (PCIe) di una scheda di rete SR-IOV può segnalare le funzionalità del commutatore NIC. I driver Miniport per le funzioni virtuali PCIe non devono segnalare le funzionalità del commutatore NIC della scheda SR-IOV.

Per altre informazioni sulle opzioni della scheda di interfaccia di rete, vedere Commutatori di scheda di interfaccia di rete.

Funzionalità del commutatore della scheda di interfaccia di rete per la creazione di report durante MiniportInitializeEx

Quando NDIS chiama la funzione MiniportInitializeEx del driver miniport , il driver offre le funzionalità seguenti del commutatore della scheda di interfaccia di rete:

  • Set completo di funzionalità hardware per un commutatore di interfaccia di rete che la scheda di rete può supportare.

    Nota A partire da NDIS 6.30, viene creato un solo commutatore di scheda di interfaccia di rete nella scheda di rete. Questa opzione è nota come opzione di interfaccia di rete predefinita.

  • Funzionalità del commutatore della scheda di interfaccia di rete attualmente abilitate nella scheda di rete.

Il driver miniport segnala le funzionalità hardware del commutatore NIC della scheda di rete sottostante tramite una struttura NDIS_NIC_SWITCH_CAPABILITIES inizializzata nel modo seguente:

  1. 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_NIC_SWITCH_CAPABILITIES_REVISION_2 e il membro Size su NDIS_SIZEOF_NIC_SWITCH_CAPABILITIES_REVISION_2.

  2. Il driver miniport imposta i flag appropriati nel membro NicSwitchCapabilities della struttura NDIS_NIC_SWITCH_CAPABILITIES alle funzionalità del commutatore NIC della scheda di rete SR-IOV. Ad esempio, il driver miniport imposta il flag NDIS_NIC_SWITCH_CAPS_PER_VPORT_INTERRUPT_MODERATION_SUPPORTED se l'opzione NIC supporta la moderazione degli interrupt su ogni porta virtuale (VPort) creata sul commutatore.

  3. Il driver miniport imposta gli altri membri della struttura NDIS_NIC_SWITCH_CAPABILITIES sull'intervallo di valori per le funzionalità del commutatore NIC della scheda di rete SR-IOV. Ad esempio, il driver miniport imposta i membri MaxNumVFs e MaxNumVPorts sul numero massimo di VFs e VPort che l'adattatore può supportare.

    Nota A seconda delle risorse hardware disponibili nella scheda di rete, il driver miniport può impostare il membro MaxNumVFs su un valore minore della parola chiave *NumVFs . Per altre informazioni su questa parola chiave, vedere Parole chiave INF standardizzate per SR-IOV.

Quando NDIS chiama la funzione MiniportInitializeEx del driver miniport , il driver registra le funzionalità del commutatore NIC della scheda di rete seguendo questa procedura:

  1. Il driver miniport inizializza una struttura NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES .

    Il driver miniport imposta il membro HardwareNicSwitchCapabilities su un puntatore a una struttura NDIS_NIC_SWITCH_CAPABILITIES inizializzata in precedenza.

    Se l'impostazione del Registro di sistema per la parola chiave *SRIOV INF ha un valore pari a uno, la scheda di rete è attualmente abilitata per la creazione e la configurazione del commutatore NIC. Il driver miniport imposta i membri CurrentNicSwitchCapabilities su un puntatore alla stessa struttura NDIS_NIC_SWITCH_CAPABILITIES .

    Se l'impostazione del Registro di sistema per la parola chiave *SRIOV INF ha un valore pari a zero, la scheda di rete non è attualmente abilitata per la creazione e la configurazione del commutatore NIC. Il driver miniport deve impostare il membro CurrentNicSwitchCapabilities su NULL.

    Per altre informazioni sulla parola chiave *SRIOV INF, vedere Parole chiave INF standardizzate per SR-IOV.

  2. 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.

Creazione di un commutatore di interfaccia di rete senza SR-IOV

I driver Miniport in NDIS 6.60 e versioni successive devono rispettare i requisiti seguenti per la coesistenza di un commutatore della scheda di interfaccia di rete e delle funzionalità VMQ quando SR-IOV non è abilitato. Quando SR-IOV è abilitato, il driver miniport deve rispettare i requisiti esistenti nella sezione precedente.

  • Il driver miniport annuncia sia il commutatore della scheda di interfaccia di rete che le funzionalità VMQ.
  • La scheda di interfaccia di rete può passare dall'opzione NIC alla modalità VMQ senza riavviare la scheda di interfaccia di rete.
    • Quando la scheda di interfaccia di rete viene avviata inizialmente, è pronta per essere in entrambe le modalità (creazione di un commutatore della scheda di interfaccia di rete o creazione di code VMQ).
      • Se viene creato un commutatore della scheda di interfaccia di rete, il miniport ha esito negativo nei callback di allocazione della coda VMQ successivi.
      • Se viene creata prima una coda VMQ, il driver miniport ha esito positivo sull'allocazione della coda VMQ e ha esito negativo in tutte le chiamate di allocazione del commutatore della scheda di interfaccia di rete.
    • Quando l'opzione della scheda di interfaccia di rete viene eliminata o tutte le code VMQ vengono eliminate, il driver miniport torna allo stato iniziale ed è pronto per passare nuovamente a una di queste modalità.

Per annunciare che è possibile creare un commutatore della scheda di interfaccia di rete senza l'uso di SR-IOV, il driver miniport imposta il flag NDIS_NIC_SWITCH_CAPS_NIC_SWITCH_WITHOUT_IOV_SUPPORTED nel membro NicSwitchCapabilities della struttura NDIS_NIC_SWITCH_CAPABILITIES .

Esecuzione di query sulle funzionalità del commutatore di scheda di interfaccia di rete mediante l'overlying dei driver

NDIS passa le funzionalità del commutatore della scheda di rete attualmente abilitata per i driver che si associano alla scheda di rete nel modo seguente:

  • Quando NDIS chiama la funzione FilterAttach di un driver di filtro eccessivo, NDIS passa le funzionalità del commutatore NIC della scheda di rete tramite il parametro AttachParameters . Questo parametro contiene un puntatore a una struttura NDIS_FILTER_ATTACH_PARAMETERS . Il membro NicSwitchCapabilities di questa struttura contiene un puntatore a una struttura NDIS_NIC_SWITCH_CAPABILITIES .

  • Quando NDIS chiama la funzione ProtocolBindAdapterEx di un driver di protocollo overlying, NDIS passa le funzionalità del commutatore NIC della scheda di rete tramite il parametro BindParameters . Questo parametro contiene un puntatore a una struttura NDIS_FILTER_ATTACH_PARAMETERS . Il membro NicSwitchCapabilities di questa struttura contiene un puntatore a una struttura NDIS_NIC_SWITCH_CAPABILITIES .

NDIS restituisce anche la struttura NDIS_NIC_SWITCH_CAPABILITIES quando gestisce le richieste di query OID (Object Identifier) di OID_NIC_SWITCH_HARDWARE_CAPABILITIES e OID_NIC_SWITCH_CURRENT_CAPABILITIES rilasciate tramite il protocollo o i driver di filtro.