Festlegen der Parameter eines virtuellen Ports
Ein überlastender Treiber kann die Parameter für einen virtuellen Port (VPort) auf einem NIC-Switch auf einem Netzwerkadapter ändern, der die Single Root-E/A-Virtualisierung (SINGLE Root I/O Virtualization, SR-IOV) unterstützt. Der Treiber gibt eine OID-Set-Anforderung (Object Identifier) von OID_NIC_SWITCH_VPORT_PARAMETERS aus, um diese Parameter zu ändern.
Bevor der überstehende Treiber diese OID-Set-Anforderung ausgibt, muss er eine NDIS_NIC_SWITCH_VPORT_PARAMETERS-Struktur mit den Parametern initialisieren, die auf dem VPort geändert werden sollen. Der Treiber initialisiert dann eine NDIS_OID_REQUEST-Struktur für die OID-Anforderung und legt den InformationBuffer-Member auf einen Zeiger auf die NDIS_NIC_SWITCH_VPORT_PARAMETERS-Struktur fest.
Es kann nur eine begrenzte Teilmenge der Konfigurationsparameter für einen VPort geändert werden. Der überstehende Treiber gibt den zu ändernden Parameter an, indem die folgenden Member der NDIS_NIC_SWITCH_VPORT_PARAMETERS-Struktur festgelegt werden:
Der SwitchId-Member muss auf den Bezeichner des NIC-Schalters festgelegt werden, für den Parameter zurückgegeben werden sollen.
Hinweis Ab Windows Server 2012 unterstützt die SR-IOV-Schnittstelle nur einen NIC-Switch auf dem Netzwerkadapter. Dieser Switch wird als Standard-NIC-Switch bezeichnet. Das SwitchId-Element muss auf NDIS_DEFAULT_SWITCH_ID festgelegt werden.
Das VPortId-Element muss auf den Bezeichner festgelegt werden, der dem VPort zugeordnet ist. Der überlastende Treiber ruft den VPort-Bezeichner auf eine der folgenden Arten ab:
Aus einer vorherigen OID-Methodenanforderung von OID_NIC_SWITCH_CREATE_VPORT.
Aus einer vorherigen OID-Methodenanforderung von OID_NIC_SWITCH_ENUM_VPORTS.
Die entsprechenden NDIS_NIC_SWITCH_VPORT_PARAMS_Xxx_CHANGED-Flags müssen im Flags-Element festgelegt werden. Member der NDIS_NIC_SWITCH_VPORT_PARAMETERS-Struktur können nur geändert werden, wenn ein entsprechendes flag NDIS_NIC_SWITCH_VPORT_PARAMS_Xxx_CHANGED in Ntddndis.h definiert ist.
Die Member der NDIS_NIC_SWITCH_VPORT_PARAMETERS-Struktur, die den im Flags-Member festgelegten flags NDIS_NIC_SWITCH_VPORT_PARAMS_Xxx_CHANGED entsprechen, werden mit den zu ändernden VPort-Konfigurationsparametern festgelegt.
Ab Windows Server 2012 können nur die folgenden Member der NDIS_NIC_SWITCH_VPORT_PARAMETERS-Struktur durch eine OID-Satzanforderung von OID_NIC_SWITCH_VPORT_PARAMETERS geändert werden:
Portname
Dieses Element enthält eine benutzerfreundliche Beschreibung des VPorts.
InterruptModeration
Dieser Member gibt die Einstellung für die Unterbrechungsmoderation des VPorts an.
Processoraffinity
Dieses Element gibt die Gruppennummer und eine Bitmap der CPUs an, denen dieser VPort zugeordnet werden kann.
Der überlastende Treiber muss die folgenden Richtlinien zum Ändern des ProcessorAffinity-Members für einen VPort befolgen:
Dieser Member ist nur für die an die PF angefügten VPorts gültig. Dieses Feld ist für nicht standardmäßige VPorts gültig, die an eine VF angefügt sind.
Für nicht standardmäßige VPorts, die an die PF angefügt sind, muss beim Erstellen des VPorts mindestens ein Prozessor angegeben werden. Die Prozessoraffinität, die dem nicht standardmäßigen VPort zugeordnet ist, kann nach der Erstellung des VPorts geändert werden.
Hinweis Nicht standardmäßige VPorts werden über OID-Methodenanforderungen von OID_NIC_SWITCH_CREATE_VPORT erstellt.
VPortState
Dieser Member gibt den aktuellen Zustand des VPorts an.
Der überlastende Treiber muss die folgenden Richtlinien befolgen, um das VPortState-Element für einen VPort zu ändern:
Für einen nicht standardmäßigen VPort, der an eine VF angefügt ist, muss der VPortState-Member immer auf NdisNicSwitchVPortStateActivated festgelegt werden.
Für einen nicht standardmäßigen VPort, der an die PF angefügt ist, muss der VPortState-Member beim Erstellen des VPorts auf NdisNicSwitchVPortStateDeactivated festgelegt werden. Der PF-VPort wird erst aktiviert, nachdem eine OID-Set-Anforderung von OID_NIC_SWITCH_VPORT_PARAMETERS von den überlastenden Treibern ausgegeben wurde, um den VPortState in einen aktivierten Zustand zu ändern.
Wenn der nicht standardmäßige VPort aktiviert ist, kann der PF-Miniporttreiber Ressourcen für den VPort zuordnen, z. B. freigegebener Arbeitsspeicher, der über NdisAllocateSharedMemory zugeordnet wird. Der PF-Miniporttreiber kann jederzeit nach der Aktivierung Ressourcen für VPort zuordnen, bis der Treiber den VPort über eine OID-Set-Anforderung von OID_NIC_SWITCH_DELETE_VPORT löscht.
Der Standard-VPort befindet sich immer im aktivierten Zustand. Der Wert des VPortState-Elements muss für den Standard-VPort immer auf NdisNicSwitchVPortStateActivated festgelegt werden.
Wenn sich ein VPort in einem aktivierten Zustand befindet, kann er nicht deaktiviert werden. Ein PF-Miniporttreiber kann Pakete nur dann von einem VPort empfangen und übertragen, wenn er sich in einem aktivierten Zustand befindet und die entsprechenden MAC-Filter für den VPort festgelegt sind. Nachdem der VPort jedoch über eine OID-Satzanforderung von OID_NIC_SWITCH_DELETE_VPORT gelöscht wurde, muss der Treiber die Ressourcen freigeben, die für den VPort zugewiesen wurden. Der Treiber muss auch alle ausstehenden Übertragungs- oder Empfangsvorgänge für Pakete auf dem VPort abbrechen.
Nachdem der PF-Miniporttreiber die OID-Set-Anforderung von OID_NIC_SWITCH_VPORT_PARAMETERS empfangen hat, konfiguriert der Treiber die Hardware mit den Konfigurationsparametern. Der Treiber kann nur die Konfigurationsparameter ändern, die durch NDIS_NIC_SWITCH_VPORT_PARAMETERS_Xxx_CHANGED flags im Flags-Member der NDIS_NIC_SWITCH_VPORT_PARAMETERS-Struktur identifiziert werden.