NDIS_RECEIVE_SCALE_PARAMETERS struttura (ntddndis.h)
La struttura NDIS_RECEIVE_SCALE_PARAMETERS specifica i parametri Receive Side Scaling (RSS) per un adattatore miniport.
Informazioni sulla versione
Sintassi
typedef struct _NDIS_RECEIVE_SCALE_PARAMETERS {
NDIS_OBJECT_HEADER Header;
USHORT Flags;
USHORT BaseCpuNumber;
ULONG HashInformation;
USHORT IndirectionTableSize;
ULONG IndirectionTableOffset;
USHORT HashSecretKeySize;
ULONG HashSecretKeyOffset;
ULONG ProcessorMasksOffset;
ULONG NumberOfProcessorMasks;
ULONG ProcessorMasksEntrySize;
PROCESSOR_NUMBER DefaultProcessorNumber;
} NDIS_RECEIVE_SCALE_PARAMETERS, *PNDIS_RECEIVE_SCALE_PARAMETERS;
Members
Header
Struttura NDIS_OBJECT_HEADER per la struttura NDIS_RECEIVE_SCALE_PARAMETERS . Impostare il membro Type della struttura specificata da Header su NDIS_OBJECT_TYPE_RSS_PARAMETERS.
Per i driver NDIS 6.60 e versioni successive, impostare il membro Revision su NDIS_RECEIVE_SCALE_PARAMETERS_REVISION_3 e il membro Size su NDIS_SIZEOF_RECEIVE_SCALE_PARAMETERS_REVISION_3.
Per i driver NDIS 6.20 e pre-NDIS 6.60, impostare il membro Revisione su NDIS_RECEIVE_SCALE_PARAMETERS_REVISION_2 e il membro Size su NDIS_SIZEOF_RECEIVE_SCALE_PARAMETERS_REVISION_2.
Per i driver NDIS 6.0, impostare il membro Revision su NDIS_RECEIVE_SCALE_PARAMETERS_REVISION_1 e il membro Size su NDIS_SIZEOF_RECEIVE_SCALE_PARAMETERS_REVISION_1.
Flags
Valore USHORT che indica cosa deve fare il driver miniport con i parametri di scalabilità di ricezione. Il driver può usare questi flag per determinare rapidamente quali parametri sono stati modificati e aggiornare di conseguenza le impostazioni RSS.
Nota
I flag che fanno riferimento alle informazioni sui parametri RSS invariati sono a scopo di ottimizzazione. Se viene impostato un flag, non è stata apportata alcuna modifica al parametro corrispondente. Se un flag è chiaro, il parametro corrispondente può o non essere stato modificato e i driver miniport devono confrontare il nuovo valore del parametro con il valore corrente per determinare una potenziale modifica nel parametro.
In una richiesta di query impostare questo membro su zero.
In una richiesta impostata i flag sono definiti come segue:
Valore | Significato |
---|---|
NDIS_RSS_PARAM_FLAG_BASE_CPU_UNCHANGED | Il membro BaseCpuNumber non è stato modificato. |
NDIS_RSS_PARAM_FLAG_HASH_INFO_UNCHANGED | Il membro HashInformation non è stato modificato. Le informazioni hash includono i tipi hash e la funzione hash. |
NDIS_RSS_PARAM_FLAG_ITABLE_UNCHANGED | La tabella indiretta e i membri dei dati associati non sono stati modificati. |
NDIS_RSS_PARAM_FLAG_HASH_KEY_UNCHANGED | La chiave privata e i membri dati associati non sono stati modificati. |
NDIS_RSS_PARAM_FLAG_DISABLE_RSS | Se questo flag è impostato, il driver miniport deve ignorare tutti gli altri flag e impostazioni e disabilitare RSS nella scheda di interfaccia di rete. |
NDIS_RSS_PARAM_FLAG_DEFAULT_PROCESSOR_UNCHANGED | Se questo flag è impostato, DefaultProcessorNumber non è stato modificato. |
BaseCpuNumber
Cpu del numero più basso da usare per RSS. Poiché questo valore viene incorporato nella tabella indiretta, impostare BaseCpuNumber su zero.
HashInformation
In una richiesta impostata, questo membro è il tipo hash e la funzione hash che la scheda di interfaccia di rete deve usare per calcolare i valori hash per i pacchetti in ingresso. Se la funzione hash specificata all'interno del membro HashInformation è zero, RSS è disabilitata.
In una richiesta di query, questo membro è il tipo hash e la funzione hash usata dalla scheda di interfaccia di rete.
Gli overlying driver e NDIS possono usare la macro NDIS_RSS_HASH_INFO_FROM_TYPE_AND_FUNC per combinare il tipo hash e la funzione hash in informazioni hash e impostare il membro HashInformation .
I driver Miniport possono usare la macro NDIS_RSS_HASH_TYPE_FROM_HASH_INFO per ottenere il tipo hash da HashInformation e la macro NDIS_RSS_HASH_FUNC_FROM_HASH_INFO per ottenere la funzione hash.
IndirectionTableSize
Dimensioni della tabella indiretta, in byte. Il driver di livello superiore che imposta i parametri RSS, deve assicurarsi che il numero di voci nella tabella indiretta sia una potenza pari a 2.
IndirectionTableOffset
Offset della tabella indiretta dall'inizio della struttura NDIS_RECEIVE_SCALE_PARAMETERS . Usare questo offset per ottenere la tabella di indiretto.
HashSecretKeySize
Dimensioni della matrice di chiavi segrete della funzione hash, in byte. Le dimensioni della matrice sono 40 byte per NdisHashFunctionToeplitz.
HashSecretKeyOffset
Offset della matrice di chiavi segrete della funzione hash dall'inizio della struttura NDIS_RECEIVE_SCALE_PARAMETERS . Usare questo offset per ottenere la chiave privata a 320 bit (40 byte).
In una richiesta impostata, la chiave privata può contenere tutti i dati scelti dal driver overlying.
In una richiesta di query, la chiave privata contiene i dati usati dalla scheda di interfaccia di rete.
ProcessorMasksOffset
Offset di una matrice di maschere processore dall'inizio della struttura NDIS_RECEIVE_SCALE_PARAMETERS .
NumberOfProcessorMasks
Numero di elementi in una matrice di tipo GROUP_AFFINITY che rappresenta i processori usati nella tabella indiretta
ProcessorMasksEntrySize
Dimensioni, in byte, di una voce della matrice maschera processore.
DefaultProcessorNumber
Quando RSS è abilitato, specifica il processore che riceverà pacchetti in cui non è possibile calcolare l'hash.
Commenti
La struttura NDIS_RECEIVE_SCALE_PARAMETERS definisce i parametri Receive Side Scaling (RSS) per l'OID OID_GEN_RECEIVE_SCALE_PARAMETERS .
Nota
La tabella indiretta e la chiave privata vengono aggiunte dopo i membri della struttura NDIS_RECEIVE_SCALE_PARAMETERS .
La tabella indiretta ha il formato specifico della versione seguente:
Versione NDIS | Formato |
---|---|
Versioni successive e NDIS 6.20 | PROCESSOR_NUMBER IndirectionTable[IndirectionTableSize/sizeof(PROCESSOR_NUMBER)]; |
Pre-NDIS 6.20 | CCHAR IndirectionTable[IndirectionTableSize] |
NDIS converte automaticamente la tabella indiretta se sono presenti driver precedenti e più recenti in uno stack di driver.
Il driver miniport deve esaminare la tabella di indiretto per determinare i numeri di CPU da associare alle code hardware. Se il numero totale di numeri di CPU diversi visualizzati nella tabella indiretta è maggiore del numero di code hardware supportate dalla scheda di interfaccia di rete, il driver miniport deve selezionare un subset dei numeri di CPU dalla tabella indiretta. Il subset è uguale al numero di code hardware.
Il driver miniport ha specificato il numero di code di ricezione in risposta alla OID_GEN_RECEIVE_SCALE_CAPABILITIES.
Per cancellare i parametri RSS e disabilitare RSS, NDIS imposta la funzione hash specificata all'interno del membro HashInformation è zero. NDIS può anche disabilitare RSS impostando il flag di NDIS_RSS_PARAM_FLAG_DISABLE_RSS nella struttura NDIS_RECEIVE_SCALE_PARAMETERS .
Se RSS è disabilitato, il driver miniport deve gestire le operazioni di ricezione senza eseguire operazioni RSS.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Supportato in NDIS 6.0 e versioni successive. |
Intestazione | ntddndis.h (include Ndis.h) |
Vedi anche
NDIS_RSS_HASH_FUNC_FROM_HASH_INFO
NDIS_RSS_HASH_INFO_FROM_TYPE_AND_FUNC
NDIS_RSS_HASH_TYPE_FROM_HASH_INFO