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