NDIS_RECEIVE_SCALE_CAPABILITIES-Struktur (ntddndis.h)

Die NDIS_RECEIVE_SCALE_CAPABILITIES-Struktur gibt die RSS-Funktionen (Receive Side Scaling) eines Miniportadapters an.

Syntax

typedef struct _NDIS_RECEIVE_SCALE_CAPABILITIES {
  NDIS_OBJECT_HEADER  Header;
  NDIS_RSS_CAPS_FLAGS CapabilitiesFlags;
  ULONG               NumberOfInterruptMessages;
  ULONG               NumberOfReceiveQueues;
  USHORT              NumberOfIndirectionTableEntries;
} NDIS_RECEIVE_SCALE_CAPABILITIES, *PNDIS_RECEIVE_SCALE_CAPABILITIES;

Member

Header

Die NDIS_OBJECT_HEADER-Struktur für die NDIS_RECEIVE_SCALE_CAPABILITIES-Struktur . Legen Sie das Type-Element der Struktur, die Header angibt, auf NDIS_OBJECT_TYPE_RSS_CAPABILITIES fest.

Legen Sie für NDIS 6.60 und höher den Revisionsmember auf NDIS_RECEIVE_SCALE_CAPABILITIES_REVISION_3 und das Element Größe auf NDIS_SIZEOF_RECEIVE_SCALE_CAPABILITIES_REVISION_3 fest.

Legen Sie für NDIS 6.30 und höher den Revisionsmember auf NDIS_RECEIVE_SCALE_CAPABILITIES_REVISION_2 und das Element Größe auf NDIS_SIZEOF_RECEIVE_SCALE_CAPABILITIES_REVISION_2 fest.

Legen Sie für NDIS 6.0, 6.1 und 6.20 das Revisionselement auf NDIS_RECEIVE_SCALE_CAPABILITIES_REVISION_1 und das Element Größe auf NDIS_SIZEOF_RECEIVE_SCALE_CAPABILITIES_REVISION_1 fest.

CapabilitiesFlags

Eine Bitmaske von Flags, die die RSS-Funktionen der NIC angeben. Der Miniporttreiber kann die folgenden Flags angeben:

Wert Bedeutung
NDIS_RSS_CAPS_MESSAGE_SIGNALED_INTERRUPTS
Legen Sie dieses Flag fest, wenn die NIC message-signaled interrupts (MSIs) unterstützt. Dieses Flag gibt an, dass die NIC einen separaten Interrupt für jede CPU generieren kann, nachdem sie die Pakete in die Warteschlange gestellt hat, die dieser CPU zugewiesen sind.
NDIS_RSS_CAPS_CLASSIFICATION_AT_ISR
Legen Sie dieses Flag fest, wenn die NIC der MiniportInterrupt-Funktion angeben kann, welche Ziel-CPUs empfangene Pakete in die Warteschlange haben.
NDIS_RSS_CAPS_USING_MSI_X
Legen Sie dieses Flag fest, wenn die NIC message signaled interrupts (MSIs) verwendet. Dieses Flag wird in NDIS 6.20 und höher unterstützt.
NDIS_RSS_CAPS_SUPPORTS_MSI_X
Legen Sie dieses Flag fest, wenn die NIC MSIs unterstützt. Dieses Flag wird in NDIS 6.30 und höher unterstützt.
NDIS_RSS_CAPS_CLASSIFICATION_AT_DPC
Legen Sie dieses Flag fest, wenn der Miniporttreiber erkennen kann, welche Ziel-CPUs empfangene Pakete aus seiner MiniportInterruptDPC-Funktion in einer Warteschlange enthalten.
NDIS_RSS_CAPS_HASH_TYPE_TCP_IPV4
Legen Sie dieses Flag fest, wenn die NIC ein IPv4-Paket (mit oder ohne Optionen) identifizieren kann. Außerdem unterstützt die NIC die Berechnung des Hashwerts über die IPv4-Headerfelder und TCP-Headerfelder.
NDIS_RSS_CAPS_HASH_TYPE_TCP_IPV6
Legen Sie dieses Flag fest, wenn die NIC ein IPv6-Paket identifizieren und einen Hashwert für Felder in einem IPv6-Paket berechnen kann. Die NIC muss in der Lage sein, einen Hashwert über Felder im grundlegenden IPv6-Header und über Feldern im TCP-Header zu berechnen. Verwenden Sie dieses Flag, wenn die NIC keinen Hashwert über Feldern berechnen kann, die sich in IPv6-Erweiterungsheadern befinden.
NDIS_RSS_CAPS_HASH_TYPE_TCP_IPV6_EX
Legen Sie dieses Flag fest, wenn die NIC ein IPv6-Paket identifizieren und einen Hashwert für Felder in einem IPv6-Paket berechnen kann, das IPv6-Erweiterungsheader enthält. Die NIC kann einen Hashwert über Felder im grundlegenden IPv6-Header, IPv6-Erweiterungsheader und TCP-Header berechnen. Die NIC muss in der Lage sein, Hashwerte über Felder in der Option Startadresse und den Typ-2-Routingheader in den IPv6-Erweiterungsheadern zu berechnen.
NDIS_RSS_CAPS_HASH_TYPE_UDP_IPV4
Legen Sie dieses Flag fest, wenn die NIC ein IPv4-Paket mit oder ohne Optionen identifizieren kann und wenn die NIC die Berechnung des Hashwerts über die IPv4-Headerfelder und UDP-Headerfelder unterstützt.
NDIS_RSS_CAPS_HASH_TYPE_UDP_IPV6
Legen Sie dieses Flag fest, wenn die NIC ein IPv6-Paket identifizieren und einen Hashwert für Felder in einem IPv6-Paket berechnen kann. Die NIC muss in der Lage sein, einen Hashwert über Felder im grundlegenden IPv6-Header und über Feldern im UDP-Header zu berechnen. Verwenden Sie dieses Flag, wenn die NIC keinen Hashwert über Feldern berechnen kann, die sich in IPv6-Erweiterungsheadern befinden.
NDIS_RSS_CAPS_HASH_TYPE_UDP_IPV6_EX
Legen Sie dieses Flag fest, wenn die NIC ein IPv6-Paket identifizieren und einen Hashwert für Felder in einem IPv6-Paket berechnen kann, das IPv6-Erweiterungsheader enthält. Die NIC kann einen Hashwert über Felder im grundlegenden IPv6-Header, in IPv6-Erweiterungsheadern und im UDP-Header berechnen. Die NIC muss in der Lage sein, Hashwerte über Felder in der Option Startadresse und den Typ-2-Routingheader in den IPv6-Erweiterungsheadern zu berechnen.
NdisHashFunctionToeplitz
Legen Sie dieses Flag fest, wenn die NIC die Hashfunktion toeplitz unterstützt. Wenn die NIC RSS unterstützt, ist die Unterstützung für die Hashfunktion obligatorisch. Weitere Informationen zu Hashfunktionen finden Sie unter NDIS_RSS_HASH_FUNC_FROM_HASH_INFO.
NdisHashFunctionReserved1
Dieses Flag ist für die zukünftige Verwendung reserviert.
NdisHashFunctionReserved2
Dieses Flag ist für die zukünftige Verwendung reserviert.
NdisHashFunctionReserved3
Dieses Flag ist für die zukünftige Verwendung reserviert.

NumberOfInterruptMessages

Die Anzahl der Interruptnachrichten, die die NIC unterstützt, wenn die NIC MSIs unterstützt. Wenn die NIC keine MSIs unterstützt, aber zeilenbasierte Interrupts unterstützt, legen Sie diese Zahl auf 1 fest.

NumberOfReceiveQueues

Die Anzahl der Von der NIC unterstützten Hardware-Empfangswarteschlangen.

NumberOfIndirectionTableEntries

Die maximale Anzahl von Einträgen, die der Miniporttreiber in der Indirektionstabelle unterstützt. Dieser Wert muss eine Leistung von 2 sein. Alle Miniportadapter NDIS 6.30 und höher müssen diesen Member unterstützen, was für virtuelle Funktionen erforderlich ist.

Hinweise

Überlastende Treiber können die OID_GEN_RECEIVE_SCALE_CAPABILITIES OID zum Abfragen der RSS-Funktionen (Receive Side Scaling) einer NIC und ihres Miniporttreibers.

Der Miniporttreiber gibt die RSS-Funktionen in einer NDIS_RECEIVE_SCALE_CAPABILITIES Struktur zurück.

Bei einigen Workloads kann eine Teilmenge von UDP-Paketen aufgrund von Routenänderungen fragmentiert werden oder der Absender die MTU-Einschränkungen nicht einhält. In solchen seltenen Fällen könnten Pakete desselben Flows auf verschiedenen Prozessoren basierend auf dem 4-Tupel- oder 2-Tupelhash angegeben werden. Daher sollten Miniporttreiber, die NDIS_RSS_CAPS_HASH_TYPE_UDP_IPV4, NDIS_RSS_CAPS_HASH_TYPE_UDP_IPV6 und NDIS_RSS_CAPS_HASH_TYPE_UDP_IPV6_EX ankündigen, eine Möglichkeit bieten, UDP RSS-Funktionen über erweiterte Eigenschaften zu deaktivieren.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Unterstützt in NDIS 6.0 und höher.
Kopfzeile ntddndis.h (include Ndis.h)

Weitere Informationen

MiniportInterrupt

MiniportInterruptDPC

NDIS_OBJECT_HEADER

NDIS_RSS_HASH_FUNC_FROM_HASH_INFO OID_GEN_RECEIVE_SCALE_CAPABILITIES

Empfangsseitige Skalierung (RSS)