Bestimmen der NIC Switch-Funktionen
In diesem Thema wird beschrieben, wie NDIS und übergeordnete Treiber die NIC-Switchfunktionen eines Netzwerkadapters bestimmen, der die Single Root-E/A-Virtualisierung (Single Root I/O Virtualization, SR-IOV) unterstützt. Dieses Thema enthält folgende Informationen:
Melden von NIC-Switch-Funktionen während MiniportInitializeEx
Abfragen von NIC-Switch-Funktionen durch Overlying-Treiber
Hinweis Nur der Miniporttreiber für die PHYSISCHE FUNKTION (PCIe) eines SR-IOV-Netzwerkadapters kann NIC-Switchfunktionen melden. Miniporttreiber für PCIe Virtual Functions (VFs) dürfen die NIC-Switch-Funktionen des SR-IOV-Adapters nicht melden.
Weitere Informationen zu NIC-Switches finden Sie unter NIC-Switches.
Melden von NIC-Switch-Funktionen während MiniportInitializeEx
Wenn NDIS die MiniportInitializeEx-Funktion des Miniporttreibers aufruft, stellt der Treiber die folgenden NIC-Switchfunktionen 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 Switch wird als Standard-NIC-Switch bezeichnet.
Die NIC-Switchfunktionen, die derzeit auf dem Netzwerkadapter aktiviert sind.
Der Miniporttreiber meldet die Hardwarefunktionen des NIC-Switches des zugrunde liegenden Netzwerkadapters über eine NDIS_NIC_SWITCH_CAPABILITIES-Struktur , die wie folgt initialisiert wird:
Der Miniporttreiber initialisiert das Headerelement . Der Treiber legt den Typmember von Header auf NDIS_OBJECT_TYPE_DEFAULT fest.
Ab NDIS 6.30 legt der Miniporttreiber das Revisionselement von Header auf NDIS_NIC_SWITCH_CAPABILITIES_REVISION_2 und das Element Größe auf NDIS_SIZEOF_NIC_SWITCH_CAPABILITIES_REVISION_2 fest.
Der Miniporttreiber legt die entsprechenden Flags im NicSwitchCapabilities-Member der NDIS_NIC_SWITCH_CAPABILITIES-Struktur auf die NIC-Switchfunktionen des SR-IOV-Netzwerkadapters fest. Der Miniporttreiber legt beispielsweise das flag NDIS_NIC_SWITCH_CAPS_PER_VPORT_INTERRUPT_MODERATION_SUPPORTED fest, wenn der NIC-Switch die Interruptmoderation für jeden virtuellen Port (VPort) unterstützt, der auf dem Switch erstellt wird.
Der Miniporttreiber legt die anderen Member der NDIS_NIC_SWITCH_CAPABILITIES-Struktur auf den Wertebereich für die NIC-Switchfunktionen des SR-IOV-Netzwerkadapters fest. Der Miniporttreiber legt beispielsweise die MaxNumVFs - und MaxNumVPorts-Member auf die maximale Anzahl von VFs und VPorts fest, die der Adapter unterstützen kann.
Hinweis Abhängig von den verfügbaren Hardwareressourcen auf dem Netzwerkadapter kann der Miniporttreiber den MaxNumVFs-Member auf einen Wert festlegen, der kleiner als seine *NumVFs-Schlüsselwort (keyword) ist. Weitere Informationen zu diesem Schlüsselwort (keyword) 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-Switchfunktionen des Netzwerkadapters, indem er die folgenden Schritte ausführt:
Der Miniporttreiber initialisiert eine NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES-Struktur .
Der Miniporttreiber legt den HardwareNicSwitchCapabilities-Member auf einen Zeiger auf eine zuvor initialisierte NDIS_NIC_SWITCH_CAPABILITIES-Struktur fest.
Wenn die Registrierungseinstellung für die *SRIOV INF-Schlüsselwort (keyword) den Wert 1 aufweist, ist der Netzwerkadapter derzeit für die Erstellung und Konfiguration des NIC-Switches aktiviert. Der Miniporttreiber legt die CurrentNicSwitchCapabilities-Member auf einen Zeiger auf dieselbe NDIS_NIC_SWITCH_CAPABILITIES-Struktur fest.
Wenn die Registrierungseinstellung für die *SRIOV INF-Schlüsselwort (keyword) den Wert 0 (null) aufweist, ist der Netzwerkadapter derzeit nicht für die Erstellung und Konfiguration des NIC-Switches aktiviert. Der Miniporttreiber muss das CurrentNicSwitchCapabilities-Element auf NULL festlegen.
Weitere Informationen zum *SRIOV INF-Schlüsselwort (keyword) finden Sie unter Standardisierte INF-Schlüsselwörter für SR-IOV.
Der Treiber ruft NdisMSetMiniportAttributes auf und legt den MiniportAttributes-Parameter auf einen Zeiger auf die NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES-Struktur fest.
Weitere Informationen zum Adapterinitialisierungsprozess finden Sie unter Initialisieren eines Miniportadapters.
Erstellen eines NIC-Switches ohne SR-IOV
Miniport-Treiber in NDIS 6.60 und höher müssen die folgenden Anforderungen für die Koexistenz von NIC-Switch und VMQ-Funktionen erfüllen, wenn SR-IOV nicht aktiviert ist. Wenn SR-IOV aktiviert ist, sollte der Miniporttreiber die im vorherigen Abschnitt vorhandenen Anforderungen erfüllen.
- Der Miniporttreiber kündigt sowohl NIC-Switch- als auch VMQ-Funktionen an.
- Die NIC kann ohne NIC-Neustart zwischen dem NIC-Switch und dem VMQ-Modus umschalten.
- Wenn die NIC anfangs gestartet wird, kann sie sich in einem der beiden Modi befinden (entweder einen NIC-Switch erstellen oder VMQ-Warteschlangen erstellen).
- Wenn ein NIC-Switch erstellt wird, schlägt der Miniport alle nachfolgenden VMQ-Warteschlangenzuordnungsrückrufe fehl.
- Wenn zuerst eine VMQ-Warteschlange erstellt wird, ist der Miniporttreiber erfolgreich bei der VMQ-Warteschlangenzuordnung und schlägt alle NIC-Switchzuordnungsaufrufe fehl.
- Wenn der NIC-Switch gelöscht 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 anfangs gestartet wird, kann sie sich in einem der beiden Modi befinden (entweder einen NIC-Switch erstellen oder VMQ-Warteschlangen erstellen).
Um anzukündigen, dass ein NIC-Switch ohne die Verwendung von SR-IOV erstellt werden kann, legt der Miniporttreiber das flag NDIS_NIC_SWITCH_CAPS_NIC_SWITCH_WITHOUT_IOV_SUPPORTED im NicSwitchCapabilities-Member der NDIS_NIC_SWITCH_CAPABILITIES-Struktur fest.
Abfragen von NIC-Switch-Funktionen durch Overlying-Treiber
NDIS übergibt die derzeit aktivierten NIC-Switchfunktionen des Netzwerkadapters an überlastende Treiber, die auf folgende Weise an den Netzwerkadapter gebunden sind:
Wenn NDIS die FilterAttach-Funktion eines übergeordneten Filtertreibers aufruft, übergibt NDIS die NIC-Switchfunktionen des Netzwerkadapters über den AttachParameters-Parameter . Dieser Parameter enthält einen Zeiger auf eine NDIS_FILTER_ATTACH_PARAMETERS-Struktur . Der NicSwitchCapabilities-Member dieser Struktur enthält einen Zeiger auf eine NDIS_NIC_SWITCH_CAPABILITIES-Struktur .
Wenn NDIS die ProtocolBindAdapterEx-Funktion eines übergeordneten Protokolltreibers aufruft, übergibt NDIS die NIC-Switchfunktionen des Netzwerkadapters über den BindParameters-Parameter . Dieser Parameter enthält einen Zeiger auf eine NDIS_FILTER_ATTACH_PARAMETERS-Struktur . Der NicSwitchCapabilities-Member 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 OID-Abfrageanforderungen (Object Identifier, Objektbezeichner) von OID_NIC_SWITCH_HARDWARE_CAPABILITIES und OID_NIC_SWITCH_CURRENT_CAPABILITIES verarbeitet werden, die von übergeordneten Protokoll- oder Filtertreibern ausgegeben werden.