Condividi tramite


Determinazione delle funzionalità di filtro della ricezione

In questo argomento viene descritto come i driver NDIS e overlying determinano le funzionalità di filtro di ricezione 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à di filtro di creazione di report durante miniportInitializeEx

Esecuzione di query sulle funzionalità di filtro tramite driver overlying

Nota Solo il driver miniport per la funzione fisica PCI Express (PCIe) di una scheda di rete SR-IOV può segnalare funzionalità di filtro. I driver miniport per le funzioni virtuali PCIe non devono segnalare le funzionalità di filtro di ricezione dell'adattatore SR-IOV.

Funzionalità di filtro di creazione di report durante miniportInitializeEx

Quando NDIS chiama la funzione Miniport MiniportInitializeEx del driver PF, il driver fornisce le funzionalità di filtro seguenti:

  • Funzionalità di filtro hardware complete che possono supportare la scheda di rete.

  • Funzionalità di filtro di ricezione per le interfacce attualmente abilitate nella scheda di rete.

Il driver miniport segnala le funzionalità di filtro hardware complete della scheda di rete sottostante tramite una struttura NDIS_RECEIVE_FILTER_CAPABILITIES inizializzata nel modo seguente:

  1. Il driver miniport inizializza il membro Header . Il driver imposta il membro Type di Intestazione su NDIS_OBJECT_TYPE_DEFAULT.

    A partire da NDIS 6.30, il driver miniport imposta il membro Revisionedell'intestazione su NDIS_RECEIVE_FILTER_CAPABILITIES_REVISION_2 e il membro Size su NDIS_SIZEOF_RECEIVE_FILTER_CAPABILITIES_REVISION_2.

  2. Il driver miniport imposta gli altri membri della struttura NDIS_RECEIVE_FILTER_CAPABILITIES sull'intervallo di valori per le funzionalità di filtro di ricezione della scheda di rete SR-IOV. Ad esempio, il driver miniport imposta i flag appropriati in SupportedFilterTests per specificare le operazioni di test di filtro supportate dal driver miniport.

  3. Oltre a SR-IOV, viene usato anche il filtro di ricezione nelle interfacce seguenti:

    Se il driver miniport supporta una di queste interfacce, deve anche impostare i membri della struttura NDIS_RECEIVE_FILTER_CAPABILITIES sull'intervallo di valori di funzionalità di filtro specifici dell'interfaccia. Ad esempio, se il driver supporta l'unione dei pacchetti NDIS e SR-IOV, deve impostare il flag di NDIS_RECEIVE_FILTER_PACKET_COALESCING_SUPPORTED_ON_DEFAULT_QUEUE nel membro SupportedQueueProperties .

Il driver miniport segnala le funzionalità di filtro di ricezione attualmente abilitate della scheda di rete sottostante tramite una struttura di NDIS_RECEIVE_FILTER_CAPABILITIES inizializzata nel modo seguente:

  1. Il driver miniport inizializza il membro Header . Il driver imposta il membro Type di Intestazione su NDIS_OBJECT_TYPE_DEFAULT.

    A partire da NDIS 6.30, il driver miniport imposta il membro Revisionedell'intestazione su NDIS_RECEIVE_FILTER_CAPABILITIES_REVISION_2 e il membro Size su NDIS_SIZEOF_RECEIVE_FILTER_CAPABILITIES_REVISION_2.

  2. Il driver miniport imposta gli altri membri della struttura NDIS_RECEIVE_FILTER_CAPABILITIES sull'intervallo di valori per le funzionalità di filtro di ricezione delle interfacce attualmente abilitate. Ad esempio, se il raggruppamento dei pacchetti NDIS è abilitato, il driver deve impostare solo i membri specifici di questa tecnologia.

    Le interfacce che usano il filtro di ricezione sono abilitate o disabilitate tramite parole chiave INF standardizzate. Per altre informazioni sul modo in cui è abilitato il coalescing dei pacchetti NDIS, vedere Parole chiave INF standardizzate per il coalescing dei pacchetti. Per altre informazioni sul modo in cui sono abilitati SR-IOV e VMQ, vedere Gestione delle parole chiave SR-IOV, VMQ e RSS Standardized INF.

Quando NDIS chiama la funzione MiniportInitializeEx del driver miniport , il driver registra le funzionalità di filtro di ricezione 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 HardwareReceiveFilterCapabilities all'indirizzo di una struttura NDIS_RECEIVE_FILTER_CAPABILITIES . Questa struttura è stata inizializzata in precedenza con le funzionalità di filtro hardware complete della scheda di rete.

  2. Se il pacchetto VMQ, SR-IOV e il raggruppamento NDIS sono tutti attualmente disabilitati nella scheda di rete, il driver miniport imposta il membro CurrentReceiveFilterCapabilities su NULL.

  3. Se vMQ, SR-IOV o il raggruppamento dei pacchetti NDIS sono attualmente abilitati nella scheda di rete, il driver miniport deve eseguire le operazioni seguenti:

    • Il driver miniport deve inizializzare un'altra struttura NDIS_RECEIVE_FILTER_CAPABILITIES con le funzionalità di filtro di ricezione correnti per le interfacce attualmente abilitate nella scheda di rete.

      Se l'interfaccia SR-IOV è abilitata, esistono situazioni in cui il driver miniport deve impostare i membri della struttura NDIS_RECEIVE_FILTER_CAPABILITIES sullo stesso valore o diverso. Questo perché l'interfaccia SR-IOV fornisce un meccanismo di accodamento simile a VMQ, ma usa porte virtuali (VPorts) anziché le code di ricezione della macchina virtuale.

      Ad esempio, il driver miniport deve impostare il flag di NDIS_RECEIVE_FILTER_VMQ_FILTERS_ENABLED nel membro EnabledFilterTypes se l'interfaccia VMQ o SR-IOV è abilitata. Tuttavia, il driver miniport deve impostare il membro NumQueues su zero se l'interfaccia SR-IOV è abilitata e un valore diverso da zero se l'interfaccia VMQ è abilitata.

    • Il driver miniport imposta il membro CurrentReceiveFilterCapabilities all'indirizzo della struttura NDIS_RECEIVE_FILTER_CAPABILITIES che contiene le funzionalità di filtro di ricezione correnti per l'interfaccia attualmente abilitata.

  4. Se vMQ, SR-IOV o il raggruppamento dei pacchetti NDIS sono attualmente abilitati nella scheda di rete, il driver miniport imposta il membro HardwareReceiveFilterCapabilities all'indirizzo di una struttura NDIS_RECEIVE_FILTER_CAPABILITIES . Questa struttura è stata inizializzata in precedenza con le funzionalità di filtro di ricezione attualmente abilitate della scheda di rete.

  5. 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à di filtro tramite driver overlying

NDIS passa le funzionalità di filtro di ricezione 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 del driver di filtro overlying, NDIS passa le funzionalità del commutatore della scheda di rete tramite il parametro AttachParameters . Questo parametro contiene un puntatore a una struttura NDIS_FILTER_ATTACH_PARAMETERS . Il membro ReceiveFilterCapabilities di questa struttura contiene un puntatore a una struttura NDIS_RECEIVE_FILTER_CAPABILITIES .

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

NDIS restituisce anche la struttura NDIS_RECEIVE_FILTER_CAPABILITIES quando gestisce le richieste di query dell'identificatore di oggetto (OID) di OID_RECEIVE_FILTER_CURRENT_CAPABILITIES e OID_RECEIVE_FILTER_HARDWARE_CAPABILITIES rilasciate tramite il protocollo o i driver di filtro.