Ermitteln der NIC-Switch-Funktionen
In diesem Thema wird beschrieben, wie NDIS und Überleitungstreiber die NIC-Switchfunktionen eines Netzwerkadapters bestimmen, der die Einzelstamm-E/A-Virtualisierung (SR-IOV) unterstützt. Dieses Thema enthält die folgenden Informationen:
Meldung von NIC-Schaltkapazitäten während MiniportInitializeEx
Abfragen von NIC-Schaltkapazitäten durch übergeordnete Treiber
Hinweis Nur der Miniport-Treiber für die PCI Express (PCIe)-PF (physische Funktion) eines SR-IOV Netzwerkadapters kann NIC-Schaltkapazitäten melden. Miniporttreiber für virtuelle PCIe-Funktionen (VFs) dürfen die NIC-Switch-Funktionen des SR-IOV Adapters nicht melden.
Weitere Informationen zu NIC-Schaltern finden Sie unter NIC Switches.
Meldung von NIC-Schaltkapazitäten während MiniportInitializeEx
Wenn NDIS die MiniportInitializeEx-Funktion des Miniporttreibers aufruft, stellt der Treiber die folgenden NIC-Schalterfunktionen bereit:
Der vollständige Satz von Hardwarefunktionen für einen NIC-Switch, den der Netzwerkadapter unterstützen kann.
Hinweis Ab NDIS 6.30 wird nur ein NIC-Switch auf dem Netzwerkadapter erstellt. Dieser Schalter wird als Standard-NIC-Schalterbezeichnet.
Die NIC-Switchfunktionen, die derzeit auf dem Netzwerkadapter aktiviert sind.
Der Miniporttreiber meldet die Hardwarefunktionen des NIC-Switchs des zugrunde liegenden Netzwerkadapters über eine NDIS_NIC_SWITCH_CAPABILITIES Struktur, die wie folgt initialisiert wird:
Der Miniport-Treiber initialisiert das Header-Mitglied. Der Treiber legt das Typelement-Element des Headers auf NDIS_OBJECT_TYPE_DEFAULT fest.
Ab NDIS 6.30 legt der Miniport-Treiber das Revision-Mitglied von Header auf NDIS_NIC_SWITCH_CAPABILITIES_REVISION_2 und das Size-Mitglied auf NDIS_SIZEOF_NIC_SWITCH_CAPABILITIES_REVISION_2 fest.
Der Miniport-Treiber setzt geeignete Flags im NicSwitchCapabilities-Mitglied der NDIS_NIC_SWITCH_CAPABILITIES-Struktur auf die NIC-Schaltkapazitäten des SR-IOV Netzwerkadapters. Beispielsweise setzt der Miniport-Treiber das Flag NDIS_NIC_SWITCH_CAPS_PER_VPORT_INTERRUPT_MODERATION_SUPPORTED fest, wenn der NIC-Schalter die Interruptüberprüfung auf jedem virtuellen Port (VPort) unterstützt, der auf dem Schalter erstellt wird.
Der Miniport-Treiber legt die anderen Mitglieder der NDIS_NIC_SWITCH_CAPABILITIES-Struktur auf den Wertebereich für die NIC-Schaltkapazitäten des SR-IOV Netzwerkadapters fest. Beispielsweise legt der Miniport-Treiber die Mitglieder MaxNumVFs und MaxNumVPorts auf die maximale Anzahl von VFs und VPorts fest, die der Adapter unterstützen kann.
Hinweis Je nach den verfügbaren Hardwareressourcen auf dem Netzwerkadapter kann der Miniporttreiber den MaxNumVFs Member auf einen Wert festlegen, der kleiner als sein *NumVFs Schlüsselwort ist. Weitere Informationen zu diesem Schlüsselwort finden Sie unter Standardisierte INF-Schlüsselwörter für SR-IOV-.
Wenn NDIS die MiniportInitializeEx-Funktion des Miniporttreibers aufruft, registriert der Treiber die NIC-Switch-Funktionen des Netzwerkadapters mit den folgenden Schritten:
Der Miniport-Treiber initialisiert eine NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES-Struktur.
Der Miniport-Treiber legt das Mitglied HardwareNicSwitchCapabilities auf einen Zeiger zu einer vorher initialisierten NDIS_NIC_SWITCH_CAPABILITIES-Struktur fest.
Wenn die Registrierungseinstellung für die *SRIOV INF-Schlüsselwort einen Wert aufweist, ist der Netzwerkadapter derzeit für die Erstellung und Konfiguration von NIC-Switchen aktiviert. Der Miniport-Treiber legt die CurrentNicSwitchCapabilities-Mitglieder auf einen Zeiger zur selben NDIS_NIC_SWITCH_CAPABILITIES-Struktur fest.
Wenn die Registrierungseinstellung für die *SRIOV INF-Schlüsselwort den Wert Null hat, ist der Netzwerkadapter derzeit nicht für die Erstellung und Konfiguration von NIC-Switchen aktiviert. Der Miniporttreiber muss den CurrentNicSwitchCapabilities Member auf NULL festlegen.
Weitere Informationen zum *SRIOV INF-Schlüsselwort finden Sie unter Standardisierte INF-Schlüsselwörter für SR-IOV-.
Der Treiber ruft NdisMSetMiniportAttributes auf und setzt den Parameter MiniportAttributes auf einen Zeiger auf die Struktur NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES.
Weitere Informationen zum Adapterinitialisierungsprozess finden Sie unter Initialisieren eines Miniportadapters.
Erstellen eines NIC-Schalters ohne SR-IOV
Miniport-Treiber in NDIS 6.60 und höher müssen die folgenden Anforderungen für die Koexistenz eines NIC-Switches und vmQ-Funktionen erfüllen, wenn SR-IOV nicht aktiviert ist. Wenn SR-IOV aktiviert ist, sollte der Miniporttreiber die vorhandenen Anforderungen im vorherigen Abschnitt einhalten.
- Der Miniporttreiber kündigt sowohl NIC-Switch- als auch VMQ-Funktionen an.
- Die NIC kann zwischen NIC-Switch und VMQ-Modus umschalten, ohne einen NIC-Neustart auszuführen.
- Wenn die NIC zunächst gestartet wird, ist sie bereit, entweder einen NIC-Schalter zu erstellen oder VMQ-Warteschlangen zu erzeugen.
- Wenn ein NIC-Switch erstellt wird, schlägt der Miniport alle nachfolgenden VMQ-Warteschlangenzuordnungsrückrufe fehl.
- Wenn zuerst eine VMQ-Warteschlange erstellt wird, gelingt dem Miniport-Treiber die Zuweisung der VMQ-Warteschlange, und die Zuweisungsaufrufe für den NIC-Schalter schlagen fehl.
- Wenn der NIC-Switch gelöscht wird oder alle VMQ-Warteschlangen gelöscht werden, kehrt der Miniporttreiber in den Anfangszustand zurück und kann wieder in einen dieser Modi wechseln.
- Wenn die NIC zunächst gestartet wird, ist sie bereit, entweder einen NIC-Schalter zu erstellen oder VMQ-Warteschlangen zu erzeugen.
Um anzuzeigen, dass ein NIC-Schalter ohne die Verwendung von SR-IOV erstellt werden kann, setzt der Miniport-Treiber das Flag NDIS_NIC_SWITCH_CAPS_NIC_SWITCH_WITHOUT_IOV_SUPPORTED im NicSwitchCapabilities-Mitglied der NDIS_NIC_SWITCH_CAPABILITIES-Struktur.
Abfragen von NIC-Schaltkapazitäten durch übergeordnete Treiber
NDIS übergibt die derzeit aktivierten NIC-Switch-Funktionen des Netzwerkadapters an darüberliegende Treiber, die an den Netzwerkadapter auf folgende Weise gebunden werden:
Wenn NDIS die FilterAttach-Funktion eines übergeordneten Filtertreibers aufruft, übergibt NDIS die Funktionalitäten des Netzwerkadapters für den NIC-Switch über den Parameter AttachParameters. Dieser Parameter enthält einen Zeiger auf eine NDIS_FILTER_ATTACH_PARAMETERS Struktur. Das NicSwitchCapabilities-Mitglied dieser Struktur enthält einen Zeiger auf eine NDIS_NIC_SWITCH_CAPABILITIES-Struktur.
Wenn NDIS die ProtocolBindAdapterEx--Funktion eines überliegenden Protokolltreibers aufruft, gibt NDIS die NIC-Switchfunktionen des Netzwerkadapters über den BindParameters--Parameter weiter. Dieser Parameter enthält einen Zeiger auf eine NDIS_FILTER_ATTACH_PARAMETERS Struktur. Das NicSwitchCapabilities-Mitglied dieser Struktur enthält einen Zeiger auf eine NDIS_NIC_SWITCH_CAPABILITIES-Struktur.
NDIS gibt auch die NDIS_NIC_SWITCH_CAPABILITIES-Struktur zurück, wenn es OID (Objektkennungs-)-Abfrageanforderungen der OID_NIC_SWITCH_HARDWARE_CAPABILITIES und OID_NIC_SWITCH_CURRENT_CAPABILITIES verarbeitet, die von übergeordneten Protokoll- oder Filtertreibern ausgegeben werden.