設定虛擬埠的參數
過度處理驅動程式可以在支援單一根目錄 I/O 虛擬化 (SR-IOV) 之網路介面卡上的 NIC 交換器上,變更虛擬埠 (VPort) 的參數。 驅動程式會發出物件識別碼, (OID) 設定 OID_NIC_SWITCH_VPORT_PARAMETERS 要求來變更這些參數。
在過度處理驅動程式發出此 OID 集合要求之前,它必須先使用 VPort 上要變更的參數來初始化 NDIS_NIC_SWITCH_VPORT_PARAMETERS 結構。 驅動程式接著會初始化 OID 要求的 NDIS_OID_REQUEST 結構,並將 InformationBuffer 成員設定為 NDIS_NIC_SWITCH_VPORT_PARAMETERS 結構的指標。
只能變更 VPort 的有限組態參數子集。 過度配置驅動程式會藉由設定 NDIS_NIC_SWITCH_VPORT_PARAMETERS 結構的下列成員來指定要變更的參數:
SwitchId成員必須設定為要傳回參數之 NIC 參數的識別碼。
注意從 Windows Server 2012 開始,SR-IOV 介面僅支援網路介面卡上的一個 NIC 交換器。 此參數稱為 預設 NIC 參數。 SwitchId成員必須設定為 NDIS_DEFAULT_SWITCH_ID。
VPortId成員必須設定為與 VPort 相關聯的識別碼。 過度處理驅動程式會透過下列其中一種方式取得 VPort 識別碼:
從先前的 OID 方法要求 OID_NIC_SWITCH_CREATE_VPORT。
從先前的 OID 方法要求 OID_NIC_SWITCH_ENUM_VPORTS。
必須在 Flags 成員中設定適當的NDIS_NIC_SWITCH_VPORT_PARAMS_Xxx_CHANGED 旗標 。 只有在 Ntddndis.h 中定義對應的 NDIS_NIC_SWITCH_VPORT_PARAMS_Xxx_CHANGED 旗標時,才能變更NDIS_NIC_SWITCH_VPORT_PARAMETERS結構的成員。
NDIS_NIC_SWITCH_VPORT_PARAMETERS結構的成員會對應至Flags成員中設定的 NDIS_NIC_SWITCH_VPORT_PARAMS_Xxx_CHANGED 旗標,會使用要變更的 VPort 組態參數來設定。
從 Windows Server 2012 開始,只能透過 OID_NIC_SWITCH_VPORT_PARAMETERS的 OID集合要求來變更NDIS_NIC_SWITCH_VPORT_PARAMETERS結構的下列成員:
PortName
此成員包含 VPort 的使用者易記描述。
InterruptModeration
此成員會指定 VPort 的中斷仲裁設定。
ProcessorAffinity
這個成員會指定此 VPort 可以與這個 VPort 相關聯的 CPU 群組編號和點陣圖。
過度配置驅動程式必須遵循下列指導方針來變更 VPort 的 ProcessorAffinity 成員:
此成員僅適用于附加至 PF 的 VPorts。 此欄位對附加至 VF 的非預設 VPorts 無效。
對於附加至 PF 的非預設 VPorts,必須在建立 VPort 時指定至少一個處理器。 建立 VPort 之後,可以變更與非預設 VPort 相關聯的處理器親和性。
注意 非預設 VPorts 是透過 OID_NIC_SWITCH_CREATE_VPORT的 OID 方法要求來建立。
VPortState
此成員會指定 VPort 的目前狀態。
過度處理驅動程式必須遵循下列指導方針來變更 VPort 的 VPortState 成員:
對於附加至 VF 的非預設 VPort, VPortState 成員一律必須設定為 NdisNicSwitchVPortStateActivated。
如果是附加至 PF 的非預設 VPort, VPortState 成員必須在建立 VPort 時設定為 NdisNicSwitchVPortStateDeactivated 。 只有在 OID 集合要求 OID_NIC_SWITCH_VPORT_PARAMETERS 由過度的驅動程式發出,以將 VPortState 變更為已啟用狀態之後,才會啟動 PF VPort。
啟用非預設 VPort 時,PF 迷你埠驅動程式可以配置 VPort 的資源,例如透過 NdisAllocateSharedMemory配置的共用記憶體。 PF 迷你埠驅動程式可能會在啟動 VPort 之後,隨時配置 VPort 的資源,直到驅動程式透過 OID_NIC_SWITCH_DELETE_VPORT的 OID 集合要求刪除 VPort 為止。
預設 VPort 一律處於啟動狀態。 預設 VPort 的 VPortState成員值必須一律設定為NdisNicSwitchVPortStateActivated。
當 VPort 處於啟用狀態時,就無法停用。 只有在 VPort 處於啟用狀態且對應的 MAC 篩選器是在 VPort 上設定時,PF 迷你埠驅動程式才能從 VPort 接收和傳輸封包。 不過,透過 OID_NIC_SWITCH_DELETE_VPORT的 OID 集合要求刪除 VPort 之後,驅動程式必須釋放配置給 VPort 的資源。 驅動程式也必須取消 VPort 上封包的所有擱置傳輸或接收作業。
在 PF 迷你埠驅動程式收到 OID_NIC_SWITCH_VPORT_PARAMETERS的 OID 集合要求之後,驅動程式會使用組態參數來設定硬體。 驅動程式只能變更NDIS_NIC_SWITCH_VPORT_PARAMETERS_Xxx所識別的組態參數_CHANGED NDIS_NIC_SWITCH_VPORT_PARAMETERS結構之Flags成員中的旗標。