NDIS_RECEIVE_SCALE_PARAMETERS-Struktur (ntddndis.h)

Die NDIS_RECEIVE_SCALE_PARAMETERS-Struktur gibt die RSS-Parameter (Receive Side Scaling) 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;

Member

Header

Die NDIS_OBJECT_HEADER-Struktur für die NDIS_RECEIVE_SCALE_PARAMETERS-Struktur . Legen Sie den Typmember der Struktur, die Header angibt, auf NDIS_OBJECT_TYPE_RSS_PARAMETERS fest.

  • Legen Sie für Treiber von NDIS 6.60 und höher den Member Revision auf NDIS_RECEIVE_SCALE_PARAMETERS_REVISION_3 und das Element Größe auf NDIS_SIZEOF_RECEIVE_SCALE_PARAMETERS_REVISION_3 fest.

  • Legen Sie für NDIS 6.20- und Pre-NDIS 6.60-Treiber das Revisionselement auf NDIS_RECEIVE_SCALE_PARAMETERS_REVISION_2 und das Size-Element auf NDIS_SIZEOF_RECEIVE_SCALE_PARAMETERS_REVISION_2 fest.

  • Legen Sie für NDIS 6.0-Treiber das Revisionselement auf NDIS_RECEIVE_SCALE_PARAMETERS_REVISION_1 und das Element Größe auf NDIS_SIZEOF_RECEIVE_SCALE_PARAMETERS_REVISION_1 fest.

Flags

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

Hinweis

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

  • Legen Sie in einer Abfrageanforderung diesen Member auf 0 (null) fest.

  • In einer set-Anforderung werden die Flags wie folgt definiert:

Wert Bedeutung
NDIS_RSS_PARAM_FLAG_BASE_CPU_UNCHANGED Das BaseCpuNumber-Element wurde nicht geändert.
NDIS_RSS_PARAM_FLAG_HASH_INFO_UNCHANGED Das HashInformation-Element wurde nicht geändert. Die Hashinformationen umfassen die Hashtypen und die Hashfunktion.
NDIS_RSS_PARAM_FLAG_ITABLE_UNCHANGED Die Dereferenzierungstabelle und die zugeordneten Datenmember wurden nicht geändert.
NDIS_RSS_PARAM_FLAG_HASH_KEY_UNCHANGED Der geheime Schlüssel und die zugeordneten Datenmember wurden nicht geändert.
NDIS_RSS_PARAM_FLAG_DISABLE_RSS Wenn dieses Flag 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, hat sich die DefaultProcessorNumber nicht geändert.

BaseCpuNumber

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

HashInformation

In einer set-Anforderung ist dieser Member der Hashtyp und die Hashfunktion, die die NIC verwenden sollte, um die Hashwerte für die eingehenden Pakete zu berechnen. Wenn die Hashfunktion, die im HashInformation-Element angegeben wird, null ist, ist RSS deaktiviert.

In einer Abfrageanforderung ist dieser Member der Hashtyp und die Hashfunktion, die die NIC verwendet.

Übergeordnete Treiber und NDIS können das Makro NDIS_RSS_HASH_INFO_FROM_TYPE_AND_FUNC verwenden, um den Hashtyp und die Hashfunktion in Hashinformationen zu kombinieren und das HashInformation-Element festzulegen.

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

IndirectionTableSize

Die Größe der Dereferenzierungstabelle in Bytes. 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 aufweist.

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 Geheimnisschlüsselarrays der Hashfunktion in Bytes. Die Größe des Arrays beträgt 40 Byte für NdisHashFunctionToeplitz.

HashSecretKeyOffset

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

  • In einer set-Anforderung kann der geheime Schlüssel alle 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 Prozessormasken 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 Prozessormaskenarrayeintrags in Bytes.

DefaultProcessorNumber

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

Hinweise

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

Hinweis

Die Dereferenzierungstabelle und der geheime Schlüssel werden nach dem NDIS_RECEIVE_SCALE_PARAMETERS-Strukturmember angefügt.

Die Dereferenzierungstabelle hat das folgende versionsspezifische Format:

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

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

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

Der Miniporttreiber hat den Wert für die Anzahl der Empfangswarteschlangen als Reaktion auf OID_GEN_RECEIVE_SCALE_CAPABILITIES angegeben.

Um die RSS-Parameter zu löschen und RSS zu deaktivieren, legt NDIS die Hashfunktion fest, die im HashInformation-Element angegeben ist, auf Null. 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
Unterstützte Mindestversion (Client) Unterstützt in NDIS 6.0 und höher.
Kopfzeile ntddndis.h (include Ndis.h)

Weitere Informationen

Empfangsseitige Skalierung (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