Condividi tramite


Determinazione delle funzionalità VMQ di una scheda di rete

NDIS fornisce l'interfaccia per determinare le funzionalità VMQ di una scheda di rete, ad esempio:

  • Funzionalità di filtro generiche di una scheda di rete.

  • Funzionalità supportate della coda di macchine virtuali.

  • Supporto "lookahead" per permettere la divisione della memoria dati di rete in due buffer distinti.

    Nota A partire da NDIS 6.30, la suddivisione dei dati dei pacchetti in buffer di ricerca separati non è più supportata.

I driver Miniport forniscono le informazioni seguenti a NDIS durante l'inizializzazione della scheda di rete:

  • Funzionalità hardware VMQ supportate dalla scheda di rete.

  • Funzionalità VMQ attualmente abilitate.

  • Le funzionalità globali di filtro di ricezione abilitate o disabilitate della scheda di rete.

Gli driver e le applicazioni superiori possono utilizzare le seguenti richieste di query per l'OID per ottenere le capacità della scheda di rete.

OID_RECEIVE_FILTER_HARDWARE_CAPABILITIES (Capacità hardware del filtro di ricezione)

OID_RECEIVE_FILTER_CURRENT_CAPABILITIES

OID_RECEIVE_FILTER_GLOBAL_PARAMETERS

NDIS gestisce queste richieste di query OID per i driver miniport. Pertanto, la richiesta non viene effettuata per i driver miniport. NDIS segnala le funzionalità VMQ di ricezione attualmente abilitate di una scheda di rete durante l'inizializzazione. Pertanto, i driver sovrapposti non devono eseguire query su questi OID.

La struttura NDIS_RECEIVE_FILTER_CAPABILITIES specifica le funzionalità di filtro di una scheda di rete. Questa struttura viene usata nei modi seguenti:

La struttura NDIS_RECEIVE_FILTER_CAPABILITIES include le informazioni seguenti:

TipiDiFiltroAbilitati
Tipi di filtri di ricezione supportati. Il flag NDIS_RECEIVE_FILTER_VMQ_FILTERS_ENABLED specifica che i filtri della coda di macchine virtuali (VMQ) sono abilitati.

TipiDiCodaAbilitati
Tipi di code di ricezione supportate. Il flag NDIS_RECEIVE_FILTER_VM_QUEUES_ENABLED specifica che le code di macchine virtuali sono abilitate.

NumQueues
Numero di code di ricezione supportate dalla scheda di rete. Per supportare VMQ, questo numero deve essere uguale o minore del numero di indirizzi MAC unicast supportati dalla scheda di interfaccia di rete. Questo numero non deve includere la coda predefinita.

Nota Il numero di indirizzi MAC unicast o code di macchine virtuali supportate da una scheda di rete non include l'indirizzo MAC della scheda di interfaccia di rete associata.

SupportedQueueProperties
Le proprietà della coda supportate dalla scheda di rete. Il flag NDIS_RECEIVE_FILTER_VM_QUEUE_SUPPORTED specifica che la scheda di rete fornisce i requisiti minimi per supportare il filtro VMQ. Una NIC compatibile con VMQ deve fornire un'entrata nella tabella MSI-X per ogni coda di ricezione. Pertanto, un driver miniport VMQ deve impostare il flag NDIS_RECEIVE_FILTER_MSI_X_SUPPORTED.

TestFiltriSupportati
Operazioni di test del filtro supportate da un driver miniport. Ad esempio, la scheda di rete supporta il test del campo di intestazione selezionato per determinare se è uguale a un determinato valore. Il driver miniport VMQ deve impostare il flag NDIS_RECEIVE_FILTER_TEST_HEADER_FIELD_EQUAL_SUPPORTED.

SupportedHeaders
Tipi di intestazioni di pacchetti di rete che un driver miniport può controllare. Ad esempio, la scheda di rete può esaminare l'intestazione MAC di un pacchetto di rete. L'intestazione MAC include il tipo di pacchetto, gli indirizzi MAC di destinazione e di origine, l'identificatore VLAN e i campi del tag di priorità. Un driver miniport VMQ deve impostare il flag di NDIS_RECEIVE_FILTER_MAC_HEADER_SUPPORTED.

SupportedMacHeaderFields
Tipi di campi di intestazione MAC che un driver miniport può controllare. Un driver miniport VMQ deve impostare il flag di NDIS_RECEIVE_FILTER_MAC_HEADER_DEST_ADDR_SUPPORTED.

MaxMacHeaderFilters
Numero massimo di filtri di intestazione MAC supportati dal driver miniport. Dovrebbero esserci almeno tanti filtri di intestazione quante sono le code delle macchine virtuali.

MaxQueueGroups
Questo membro è riservato a NDIS.

MaxQueuesPerQueueGroup
Questo membro è riservato a NDIS.

MinLookaheadSplitSize
Dimensione minima, in byte, che la scheda di rete supporta per i segmenti di pacchetto lookahead.

Nota A partire da NDIS 6.30, la suddivisione dei dati dei pacchetti in buffer di ricerca separati non è più supportata. I driver Miniport che supportano NDIS 6.30 o versioni successive devono impostare questo membro su zero.

maxLookaheadSplitSize
La dimensione massima, in byte, supportata dalla scheda di rete per i segmenti di pacchetto in previsione.

Nota A partire da NDIS 6.30, la suddivisione dei dati dei pacchetti in buffer di ricerca separati non è più supportata. I driver Miniport che supportano NDIS 6.30 o versioni successive devono impostare questo membro su zero.

Dopo un ritorno riuscito dalla query OID OID_RECEIVE_FILTER_HARDWARE_CAPABILITIES, il membro InformationBuffer della struttura NDIS_OID_REQUEST contiene un puntatore a una struttura NDIS_RECEIVE_FILTER_CAPABILITIES. Queste funzionalità possono includere capacità hardware VMQ attualmente disabilitate dalle impostazioni del file INF o tramite la pagina delle proprietà Avanzate . Per altre informazioni sulle impostazioni dei file INF VMQ, vedere voci INF standard VMQ.

I driver miniport NDIS forniscono le funzionalità hardware di filtro di ricezione durante l'inizializzazione nel membro HardwareReceiveFilterCapabilities della struttura NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES.

Una volta restituito correttamente dalla query OID OID_RECEIVE_FILTER_CURRENT_CAPABILITIES, il membro InformationBuffer della struttura NDIS_OID_REQUEST contiene un puntatore a una struttura NDIS_RECEIVE_FILTER_CAPABILITIES. Queste funzionalità includono le funzionalità VMQ attualmente abilitate.

I driver miniport NDIS forniscono, durante l'inizializzazione, le funzionalità di filtro di ricezione attualmente abilitate nel membro CurrentReceiveFilterCapabilities della struttura NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES.

NDIS segnala le funzionalità di filtro di ricezione attualmente abilitate di una scheda di rete sottostante ai driver di protocollo superiori nel membro ReceiveFilterCapabilities della struttura NDIS_BIND_PARAMETERS durante l'operazione di associazione.

La struttura NDIS_RECEIVE_FILTER_GLOBAL_PARAMETERS viene usata nell'OID della query OID_RECEIVE_FILTER_GLOBAL_PARAMETERS per ottenere le impostazioni correnti del filtro di ricezione globale.

NDIS_RECEIVE_FILTER_GLOBAL_PARAMETERS include le informazioni seguenti:

TipiFiltroAbilitati
Tipi di filtri di ricezione abilitati. L'indicatore NDIS_RECEIVE_FILTER_VMQ_FILTERS_ENABLED specifica che i filtri della coda di macchine virtuali (VMQ) sono abilitati.

EnabledQueueTypes
Tipi di code di ricezione abilitate. Il flag NDIS_RECEIVE_FILTER_VM_QUEUES_ENABLED specifica che le code di macchine virtuali sono abilitate.

Una volta completato con successo il ritorno dalla query OID_RECEIVE_FILTER_GLOBAL_PARAMETERS OID, il membro InformationBuffer della struttura NDIS_OID_REQUEST contiene un puntatore a una struttura NDIS_RECEIVE_FILTER_GLOBAL_PARAMETERS. La struttura NDIS_RECEIVE_FILTER_GLOBAL_PARAMETERS specifica le funzionalità di filtro ricezione abilitate o disabilitate in una scheda di rete.

I driver del protocollo NDIS utilizzano OID_RECEIVE_FILTER_GLOBAL_PARAMETERS per interrogare i parametri di configurazione globale attuali relativi al filtraggio della ricezione su un adattatore di rete. Ad esempio, i driver di protocollo possono usare questo OID per determinare se i tipi di filtri di ricezione o le code di ricezione sono abilitati o disabilitati.