Parole chiave di enumerazione
NDIS 6.0 e versioni successive di NDIS forniscono parole chiave di enumerazione standardizzate per i driver miniport dei dispositivi di rete. Le parole chiave di enumerazione sono associate ai valori visualizzati come elenco in un menu.
Nell'esempio seguente viene illustrata una definizione di file INF per una parola chiave di enumerazione.
HKR, Ndi\params\<SubkeyName>, ParamDesc, 0, "%<SubkeyName>%"
HKR, Ndi\params\<SubkeyName>, Type, 0, "enum"
HKR, Ndi\params\<SubkeyName>, Default, 0, "3"
HKR, Ndi\params\<SubkeyName>, Optional, 0, "0"
HKR, Ndi\params\<SubkeyName>\enum, "0", 0, "%Disabled%"
HKR, Ndi\params\<SubkeyName>\enum, "1", 0, "%Tx Enabled%"
HKR, Ndi\params\<SubkeyName>\enum, "2", 0, "%Rx Enabled%"
HKR, Ndi\params\<SubkeyName>\enum, "3", 0, "%Rx & Tx Enabled%"
Le parole chiave di enumerazione generale sono:
*SpeedDuplex
Impostazioni di velocità e duplex supportate da un dispositivo. Il file INF del dispositivo deve elencare solo le impostazioni supportate dal dispositivo associato. Vale a dire, per un dispositivo Ethernet 10/100 che può supportare solo la modalità full-duplex, le impostazioni per velocità Gigabit o metà duplex non devono essere elencate nel file INF associato.
I valori di velocità che non sono definiti in modo specifico con valori enumerati di 0-10 possono essere impostati come numero che corrisponde al valore direttamente in Mbps. I valori diretti devono essere almeno 1.000 Mbps (1 Gbps) e versioni successive. Ecco alcuni esempi per specificare direttamente la velocità:
Valore SpeedDuplex | Velocità risultante |
---|---|
1\.000 | 1 Gbps |
10,000 | 10 Gbps |
25,000 | 25 Gbps |
50.000 | 50 Gbps |
100,000 | 100 Gbps |
*FlowControl
Possibilità per il dispositivo di abilitare o disabilitare il controllo del flusso nel percorso di invio o ricezione.
Nota I dispositivi Ethernet supportano oggi il controllo del flusso e i driver Windows 8 in box per LAN hanno il controllo del flusso abilitato per impostazione predefinita. Quando un debugger del kernel si collega a una di queste schede LAN, la scheda di interfaccia di rete inizierà a eseguire il push dei fotogrammi di sospensione del flusso nella rete. La maggior parte dei commutatori di rete reagisce temporaneamente eliminando la rete per tutti gli altri computer connessi allo stesso hub. Si tratta di uno scenario di sviluppo comune e l'esperienza utente finale è sia indesiderata che difficile da diagnosticare.
Nota Le impostazioni predefinite client e server non sono uguali; fare riferimento alla tabella delle impostazioni predefinite riportate di seguito.
Per questo motivo, in Windows 8 e versioni successive, NDIS disabilita automaticamente il controllo del flusso quando il debug è abilitato nel computer, ad esempio digitando bcdedit /set debug nella riga di comando. Quando il debug del kernel è abilitato e il miniport chiama NdisReadConfiguration e passa "*FlowControl" per il parametro Keyword , NDIS eseguirà l'override del valore configurato e restituirà zero.
Se è necessario abilitare il controllo del flusso durante il debug, NDIS fornisce il valore del Registro di sistema AllowFlowControlDebugger per consentire di eseguire questa operazione. Il valore del Registro di sistema AllowFlowControlUnderDebugger impedisce a NDIS di disabilitare il controllo del flusso e consente alle schede di interfaccia di rete di mantenere il comportamento configurato. È disponibile nella chiave del Registro di sistema seguente:
HKEY_LOCAL_MACHINE\Sistema\Currentcontrolset\Servizi\NDIS\Parametri
Impostare questo valore del Registro di sistema su 0x00000001.
Se non esiste, è possibile creare un valore con il nome AllowFlowControlUnderDebugger e il tipo REG_DWORD e impostarlo su 0x00000001 .
*PriorityVLANTag
Valore che indica se il dispositivo ha abilitato o disabilitato la possibilità di inserire i tag 802.1Q per la priorità dei pacchetti e le reti LAN virtuali( VLAN). Questa parola chiave non indica se il dispositivo è abilitato o disabilitato o i tag VLAN. Descrive invece quanto segue:
- Indica se il dispositivo inserisce tag 802.1Q durante un'operazione di invio
- Indica se le informazioni sul tag 802.1Q sono disponibili nelle informazioni NET_BUFFER_LIST fuori banda (OOB)
- Se il dispositivo copia i tag 802.1Q in OOB durante le operazioni di ricezione
Il driver miniport deve rimuovere l'intestazione 802.1Q da tutti i pacchetti di ricezione indipendentemente dall'impostazione *PriorityVLANTag . Se l'intestazione 802.1Q viene lasciata in un pacchetto, altri driver potrebbero non essere in grado di analizzare correttamente il pacchetto.
Se il flag Rx è abilitato nel percorso di ricezione, il driver miniport deve copiare l'intestazione 802.1Q rimossa in OOB.
In caso contrario, se il flag Rx è disabilitato, il driver miniport non deve copiare l'intestazione 802.1Q rimossa in OOB.
Se il flag Tx è abilitato sul percorso di trasmissione, il driver miniport deve eseguire le operazioni seguenti:
- Inserire l'intestazione 802.1Q in ogni pacchetto in uscita e riempirla con i dati da OOB (se esistono dati non zero in OOB).
- Pubblicizzare MacOptions appropriati in NDIS_MINIPORT_ADAPTER_GENERAL_ATTRIBUTES (NDIS_MAC_OPTION_8021P_PRIORITY e NDIS_MAC_OPTION_8021Q_VLAN).
In caso contrario, se il flag Tx è disabilitato, quindi:
- Il filtro miniport non deve rispettare le informazioni 802.1Q in OOB (e quindi non inserire alcun tag).
- Il filtro miniport non deve annunciare MacOptions appropriato in NDIS_MINIPORT_ADAPTER_GENERAL_ATTRIBUTES.
Nota Se il driver miniport supporta la qualità del servizio (QoS), deve anche leggere il valore della parola chiave *QOS . In base al valore della parola chiave *QOS , i valori della parola chiave *PriorityVLANTag vengono interpretati in modo diverso. Per altre informazioni, vedere Parole chiave INF standardizzate per QoS NDIS.
*InterruptModeration
Valore che descrive se il dispositivo è abilitato o disabilitato la moderazione degli interruzioni. Gli algoritmi di moderazione di interruzione sono dipendenti dal dispositivo. Il produttore del dispositivo può usare parole chiave non standardizzate per supportare le impostazioni algoritmiche. Per altre informazioni sulla moderazione degli interruzioni, vedere Moderazione degli interruzioni.
*RSS
Valore che descrive se il dispositivo è abilitato o disabilitato riceve il ridimensionamento laterale (RSS). Per altre informazioni su RSS, vedere Scalabilità laterale di ricezione.
*HeaderDataSplit
Valore che descrive se il dispositivo è abilitato o disabilitato la suddivisione dei dati dell'intestazione. Per altre informazioni sulla suddivisione dei dati di intestazione, vedere Divisione dei dati di intestazione.
Le parole chiave seguenti sono associate ai servizi di offload della connessione:
*TCPConnectionOffloadIPv4
*TCPConnectionOffloadIPv6
Per altre informazioni sulle parole chiave di offload della connessione, vedere Uso dei valori del Registro di sistema per abilitare e disabilitare l'offload della connessione.
Le parole chiave seguenti sono associate ai servizi di offload delle attività:
*IPChecksumOffloadIPv4
*TCPChecksumOffloadIPv4
*TCPChecksumOffloadIPv6
*UDPChecksumOffloadIPv4
*UDPChecksumOffloadIPv6
*LsoV1IPv4
*LsoV2IPv4
Nota Per i dispositivi che supportano sia l'offload di invio di grandi dimensioni versione 1 (LSOv1) sia LSOv2 su IPv4, solo la parola chiave *LsoV2IPv4 deve essere usata nei valori del file e del Registro di sistema INF. Se, ad esempio, la parola chiave *LsoV2IPv4 viene visualizzata nel file INF e la parola chiave *LsoV1IPv4 viene visualizzata nel Registro di sistema (o viceversa), la parola chiave *LsoV2IPv4 ha sempre la precedenza.
*LsoV2IPv6
*IPsecOffloadV1IPv4
*IPsecOffloadV2
*IPsecOffloadV2IPv4
*TCPUDPChecksumOffloadIPv4
*TCPUDPChecksumOffloadIPv6
Per altre informazioni sulle parole chiave offload TCP/IP, vedere Uso dei valori del Registro di sistema per abilitare e disabilitare l'offload delle attività.
Le colonne della tabella alla fine di questo argomento descrivono gli attributi seguenti per le parole chiave di enumerazione:
SubkeyName
Nome della parola chiave che è necessario specificare nel file INF e visualizzato nel Registro di sistema.
ParamDesc
Testo visualizzato associato a SubkeyName.
Valore
Valore intero di enumerazione associato a ogni opzione nell'elenco. Questo valore viene archiviato in NDI\params\SubkeyName\Value.
EnumDesc
Testo visualizzato associato a ogni valore visualizzato nel menu.
Default
Valore predefinito per il menu.
Nella tabella seguente sono elencate tutte le parole chiave e vengono descritti i valori che un driver deve usare per gli attributi precedenti. Per altre informazioni su una parola chiave, cercare la parola chiave nella documentazione di WDK.
SubkeyName | ParamDesc | Valore | EnumDesc |
---|---|---|---|
*SpeedDuplex | Velocità & duplex | 0 (predefinito) | Negoziazione automatica |
1 | 10 Mbps Half Duplex | ||
2 | 10 Mbps full duplex | ||
3 | 100 Mbps Half Duplex | ||
4 | 100 Mbps Full Duplex | ||
5 | 1,0 Gbps Half Duplex | ||
6 | 1,0 Gbps Full Duplex | ||
7 | 10 Gbps Full Duplex | ||
8 | 20 Gbps Full Duplex | ||
9 | 40 Gbps Full Duplex | ||
10 | 100 Gbps Full Duplex | ||
*FlowControl | Controllo di flusso | 0 (impostazione predefinita del server) | Tx & Rx disabilitato |
1 | Tx abilitato | ||
2 | Rx abilitato | ||
3 (impostazione predefinita client) | Rx & Tx abilitato | ||
4 | Negoziazione automatica | ||
*PriorityVLANTag | Priorità pacchetti & VLAN | 0 | Priorità pacchetti & VLAN disabilitata |
1 | Priorità pacchetto abilitata | ||
2 | VLAN abilitata | ||
3 (impostazione predefinita) | Priorità pacchetti & VLAN abilitata | ||
*InterruptModeration | Moderazione interrupt | 0 | Disabled |
1 (impostazione predefinita) | Attivato | ||
*RSS | Receive Side Scaling | 0 | Disabled |
1 (impostazione predefinita) | Attivato | ||
*HeaderDataSplit | Suddivisione dati intestazione | 0 (predefinito) | Disabled |
1 | Attivato | ||
*TCPConnectionOffloadIPv4 | Offload connessione TCP (IPv4) | 0 | Disabled |
1 (impostazione predefinita) | Attivato | ||
*TCPConnectionOffloadIPv6 | Offload connessione TCP (IPv6) | 0 | Disabled |
1 (impostazione predefinita) | Attivato | ||
*IPChecksumOffloadIPv4 | IPv4 Checksum Offload | 0 | Disabled |
1 | Tx abilitato | ||
2 | Rx abilitato | ||
3 (impostazione predefinita) | Rx & Tx abilitato | ||
*TCPChecksumOffloadIPv4 | Tcp Checksum Offload (IPv4) | 0 | Disabled |
1 | Tx Abilitato | ||
2 | Rx Abilitato | ||
3 (impostazione predefinita) | Rx & Tx abilitato | ||
*TCPChecksumOffloadIPv6 | Tcp Checksum Offload (IPv6) | 0 | Disabled |
1 | Tx Abilitato | ||
2 | Rx Abilitato | ||
3 (impostazione predefinita) | Rx & Tx abilitato | ||
*UDPChecksumOffloadIPv4 | Udp Checksum Offload (IPv4) | 0 | Disabled |
1 | Tx Abilitato | ||
2 | Rx Abilitato | ||
3 (impostazione predefinita) | Rx & Tx abilitato | ||
*UDPChecksumOffloadIPv6 | Checksum Offload UDP (IPv6) | 0 | Disabled |
1 | Tx Abilitato | ||
2 | Rx Abilitato | ||
3 (impostazione predefinita) | Rx & Tx abilitato | ||
*LsoV1IPv4 | Offload di trasmissione di grandi dimensioni versione 1 (IPv4) | 0 | Disabled |
1 (impostazione predefinita) | Attivato | ||
*LsoV2IPv4 | Offload di trasmissione di grandi dimensioni versione 2 (IPv4) | 0 | Disabled |
1 (impostazione predefinita) | Attivato | ||
*LsoV2IPv6 | Offload di trasmissione di grandi dimensioni versione 2 (IPv6) | 0 | Disabled |
1 (impostazione predefinita) | Attivato | ||
*IPsecOffloadV1IPv4 | Offload IPsec versione 1 (IPv4) | 0 | Disabled |
1 | Intestazione di autenticazione abilitata | ||
2 | ESP Abilitato | ||
3 (impostazione predefinita) | Intestazione di autenticazione & ESP abilitata | ||
*IPsecOffloadV2 | IPsec Offload | 0 | Disabled |
1 | Intestazione di autenticazione abilitata | ||
2 | ESP Abilitato | ||
3 (impostazione predefinita) | Intestazione di autenticazione & ESP abilitata | ||
*IPsecOffloadV2IPv4 | Offload IPsec (solo IPv4) | 0 | Disabled |
1 | Intestazione di autenticazione abilitata | ||
2 | ESP Abilitato | ||
3 (impostazione predefinita) | Intestazione di autenticazione & ESP abilitata | ||
*TCPUDPChecksumOffloadIPv4 | Tcp/UDP Checksum Offload (IPv4) | 0 | Disabled |
1 | Tx Abilitato | ||
2 | Rx Abilitato | ||
3 (impostazione predefinita) | Tx e Rx abilitato | ||
*TCPUDPChecksumOffloadIPv6 | Tcp/UDP Checksum Offload (IPv6) | 0 | Disabled |
1 | Tx abilitato | ||
2 | Rx abilitato | ||
3 (impostazione predefinita) | Tx e Rx abilitato |