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

Receive Side Scaling (RSS)

NDIS_OBJECT_HEADER

NDIS_RSS_HASH_FUNC_FROM_HASH_INFO

NDIS_RSS_HASH_INFO_FROM_TYPE_AND_FUNC

NDIS_RSS_HASH_TYPE_FROM_HASH_INFO

OID_GEN_RECEIVE_SCALE_CAPABILITIES

OID_GEN_RECEIVE_SCALE_PARAMETERS