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_RSS_HASH_FUNC_FROM_HASH_INFO
NDIS_RSS_HASH_INFO_FROM_TYPE_AND_FUNC
NDIS_RSS_HASH_TYPE_FROM_HASH_INFO