Freigeben über


NDIS_RECEIVE_SCALE_PARAMETERS Struktur (ntddndis.h)

Die NDIS_RECEIVE_SCALE_PARAMETERS Struktur gibt die parameter Receive Side Scaling (RSS) parameter für einen Miniportadapter an.

Versionsinformationen

Syntax

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;

Angehörige

Header

Die NDIS_OBJECT_HEADER Struktur für die NDIS_RECEIVE_SCALE_PARAMETERS Struktur. Legen Sie das Type Element der Struktur fest, das Header- angibt, um NDIS_OBJECT_TYPE_RSS_PARAMETERS.

  • Legen Sie für NDIS 6.60 und höher das element Revision auf NDIS_RECEIVE_SCALE_PARAMETERS_REVISION_3 und das Size Member auf NDIS_SIZEOF_RECEIVE_SCALE_PARAMETERS_REVISION_3fest.

  • Legen Sie für NDIS 6.20- und Pre-NDIS 6.60-Treiber das element Revision auf NDIS_RECEIVE_SCALE_PARAMETERS_REVISION_2 und das Size Member auf NDIS_SIZEOF_RECEIVE_SCALE_PARAMETERS_REVISION_2fest.

  • Legen Sie für NDIS 6.0-Treiber das element Revision auf NDIS_RECEIVE_SCALE_PARAMETERS_REVISION_1 und das Size Member auf NDIS_SIZEOF_RECEIVE_SCALE_PARAMETERS_REVISION_1fest.

Flags

Ein USHORT--Wert, der angibt, was der Miniporttreiber mit den Parametern für die Empfangsskalierung tun soll. Der Treiber kann diese Flags verwenden, um schnell zu bestimmen, welche Parameter geändert wurden, und die RSS-Einstellungen entsprechend zu aktualisieren.

Anmerkung

Die Flags, die auf unveränderte RSS-Parameterinformationen verweisen, dienen zu Optimierungszwecken. Wenn ein Flag festgelegt ist, wurde an dem entsprechenden Parameter keine Änderung vorgenommen. Wenn ein Flag eindeutig ist, kann oder nicht der entsprechende Parameter geändert werden, und Miniporttreiber müssen den neuen Wert des Parameters mit dem aktuellen Wert vergleichen, um eine mögliche Änderung des Parameters zu ermitteln.

  • Legen Sie in einer Abfrageanforderung dieses Elements auf Null fest.

  • In einer Setanforderung werden die Flags wie folgt definiert:

Wert Bedeutung
NDIS_RSS_PARAM_FLAG_BASE_CPU_UNCHANGED Das BaseCpuNumber Member wurde nicht geändert.
NDIS_RSS_PARAM_FLAG_HASH_INFO_UNCHANGED Das HashInformation- Mitglieds hat sich nicht geändert. Die Hashinformationen umfassen die Hashtypen und die Hashfunktion.
NDIS_RSS_PARAM_FLAG_ITABLE_UNCHANGED Die Dereferenzierungstabelle und die zugehörigen Datenmmber wurden nicht geändert.
NDIS_RSS_PARAM_FLAG_HASH_KEY_UNCHANGED Der geheime Schlüssel und die zugehörigen Datenmmber wurden nicht geändert.
NDIS_RSS_PARAM_FLAG_DISABLE_RSS Wenn dieses Kennzeichen festgelegt ist, sollte der Miniporttreiber alle anderen Flags und Einstellungen ignorieren und RSS auf der NIC deaktivieren.
NDIS_RSS_PARAM_FLAG_DEFAULT_PROCESSOR_UNCHANGED Wenn dieses Flag festgelegt ist, wurde die DefaultProcessorNumber- nicht geändert.

BaseCpuNumber

Die niedrigste CPU-Cpu, die für RSS verwendet werden soll. Da dieser Wert in die Dereferenzierungstabelle integriert ist, legen Sie BaseCpuNumber auf Null fest.

HashInformation

In einer Satzanforderung ist dieses Element der Hashtyp und die Hashfunktion, mit der die NIC die Hashwerte für die eingehenden Pakete berechnen soll. Wenn die Hashfunktion, die innerhalb des HashInformation Member angegeben ist, null ist, ist RSS deaktiviert.

In einer Abfrageanforderung ist dieses Element der Hashtyp und die Hashfunktion, die die NIC verwendet.

Das Überführen von Treibern und NDIS kann das NDIS_RSS_HASH_INFO_FROM_TYPE_AND_FUNC-Makro verwenden, um den Hashtyp und die Hashfunktion in Hashinformationen zu kombinieren und das HashInformation Member festzulegen.

Miniporttreiber können das NDIS_RSS_HASH_TYPE_FROM_HASH_INFO Makro verwenden, um den Hashtyp aus HashInformation- und dem NDIS_RSS_HASH_FUNC_FROM_HASH_INFO Makro abzurufen, um die Hashfunktion abzurufen.

IndirectionTableSize

Die Größe der Dereferenzierungstabelle in Byte. Der Treiber der oberen Ebene, der die RSS-Parameter festlegt, muss sicherstellen, dass die Anzahl der Einträge in der Dereferenzierungstabelle eine Leistung von 2 ist.

IndirectionTableOffset

Der Offset der Dereferenzierungstabelle vom Anfang der NDIS_RECEIVE_SCALE_PARAMETERS Struktur. Verwenden Sie diesen Offset, um die Dereferenzierungstabelle abzurufen.

HashSecretKeySize

Die Größe des Geheimschlüsselarrays der Hashfunktion in Bytes. Die Größe des Arrays beträgt 40 Bytes für NdisHashFunctionToeplitz.

HashSecretKeyOffset

Der Offset des Schlüsselarrays der Hashfunktion vom Anfang der NDIS_RECEIVE_SCALE_PARAMETERS Struktur. Verwenden Sie diesen Offset, um den geheimen Schlüssel der 320-Bit-Version (40 Bytes) abzurufen.

  • In einer set-Anforderung kann der geheime Schlüssel beliebige Daten enthalten, die der überlastende Treiber auswäht.

  • In einer Abfrageanforderung enthält der geheime Schlüssel die Daten, die die NIC verwendet.

ProcessorMasksOffset

Der Offset eines Arrays von Prozessorformaten vom Anfang der NDIS_RECEIVE_SCALE_PARAMETERS-Struktur.

NumberOfProcessorMasks

Die Anzahl der Elemente in einem Array vom Typ GROUP_AFFINITY, die die in der Dereferenzierungstabelle verwendeten Prozessoren darstellen

ProcessorMasksEntrySize

Die Größe eines Prozessorformatarrayeintrags in Bytes.

DefaultProcessorNumber

Wenn RSS aktiviert ist, gibt den Prozessor an, der Pakete empfängt, in denen der Hash nicht berechnet werden kann.

Bemerkungen

Die NDIS_RECEIVE_SCALE_PARAMETERS-Struktur definiert die parameter Receive Side Scaling (RSS) für das OID_GEN_RECEIVE_SCALE_PARAMETERS OID.

Anmerkung

Die Dereferenzierungstabelle und der geheime Schlüssel werden nach den Elementen der NDIS_RECEIVE_SCALE_PARAMETERS Struktur angefügt.

Die Dereferenzierungstabelle weist das folgende versionsspezifische Format auf:

NDIS-Version Format
NDIS 6.20 und höhere Versionen PROCESSOR_NUMBER IndirectionTable[IndirectionTableSize/sizeof(PROCESSOR_NUMBER)];
Pre-NDIS 6.20 CCHAR IndirectionTable[IndirectionTableSize]

NDIS übersetzt automatisch die Dereferenzierungstabelle, wenn ältere und neuere Treiber in einem Treiberstapel vorhanden sind.

Der Miniporttreiber muss die Dereferenzierungstabelle untersuchen, um die CPU-Nummern zu ermitteln, die Hardwarewarteschlangen zugeordnet werden sollen. Wenn die Gesamtanzahl der verschiedenen CPU-Zahlen, die in der Dereferenzierungstabelle angezeigt werden, mehr als die Anzahl der Hardwarewarteschlangen ist, die von der NIC unterstützt werden, muss der Miniporttreiber eine Teilmenge der CPU-Nummern aus der Dereferenzierungstabelle auswählen. Die Teilmenge ist gleich der Anzahl der Hardwarewarteschlangen.

Der Miniporttreiber hat die Anzahl der Empfangswarteschlangen als Reaktion auf OID_GEN_RECEIVE_SCALE_CAPABILITIESangegeben.

Um die RSS-Parameter zu löschen und RSS zu deaktivieren, legt NDIS die Hashfunktion fest, die innerhalb des HashInformation Member null angegeben ist. NDIS kann RSS auch deaktivieren, indem das NDIS_RSS_PARAM_FLAG_DISABLE_RSS Flag in der NDIS_RECEIVE_SCALE_PARAMETERS-Struktur festgelegt wird.

Wenn RSS deaktiviert ist, sollte der Miniporttreiber Empfangsvorgänge verarbeiten, ohne RSS-Vorgänge auszuführen.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Unterstützt in NDIS 6.0 und höher.
Header- ntddndis.h (include Ndis.h)

Siehe auch

RSS- (Receive Side Scaling)

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