共用方式為


判斷 NIC 交換器功能

本主題描述 NDIS 和過度載入驅動程式如何決定網路介面卡的 NIC 交換器功能,以支援單一根目錄 I/O 虛擬化 (SR-IOV) 。 本主題包含下列資訊:

在 MiniportInitializeEx期間報告 NIC 交換器功能

透過過度查詢驅動程式來查詢 NIC 交換器功能

注意 只有 PCI Express (PCIe 的迷你埠驅動程式) 實體函式 (SR-IOV 網路介面卡的 PF) 可以報告 NIC 交換器功能。 PCIe 虛擬函式的迷你埠驅動程式 (VFs) 不得報告 SR-IOV 介面卡的 NIC 交換器功能。

如需 NIC 參數的詳細資訊,請參閱 NIC 參數

在 MiniportInitializeEx期間報告 NIC 交換器功能

當 NDIS 呼叫迷你埠驅動程式的 MiniportInitializeEx 函式時,驅動程式會提供下列 NIC 切換功能:

  • 網路介面卡可支援之 NIC 交換器的完整硬體功能集。

    注意 從 NDIS 6.30 開始,網路介面卡上只會建立一個 NIC 交換器。 此參數稱為 預設 NIC 參數

  • 目前在網路介面卡上啟用的 NIC 交換器功能。

迷你埠驅動程式會透過下列方式初始化 的NDIS_NIC_SWITCH_CAPABILITIES 結構,報告基礎網路介面卡的 NIC 交換器硬體功能:

  1. 迷你埠驅動程式會初始化 Header 成員。 驅動程式會將HeaderType成員設定為 NDIS_OBJECT_TYPE_DEFAULT。

    從 NDIS 6.30 開始,迷你埠驅動程式會將HeaderRevision成員設定為 NDIS_NIC_SWITCH_CAPABILITIES_REVISION_2,並將Size成員設定為 NDIS_SIZEOF_NIC_SWITCH_CAPABILITIES_REVISION_2。

  2. 迷你埠驅動程式會將NDIS_NIC_SWITCH_CAPABILITIES結構的NicSwitchCapabilities成員中的適當旗標設定為 SR-IOV 網路介面卡的 NIC 交換器功能。 例如,如果 NIC 參數支援在交換器上建立的每個虛擬埠 (VPort) 中斷仲裁,迷你埠驅動程式就會設定 NDIS_NIC_SWITCH_CAPS_PER_VPORT_INTERRUPT_MODERATION_SUPPORTED 旗標。

  3. 迷你埠驅動程式會將 NDIS_NIC_SWITCH_CAPABILITIES 結構的其他成員設定為 SR-IOV 網路介面卡之 NIC 交換器功能的值範圍。 例如,迷你埠驅動程式會將 MaxNumVFsMaxNumVPorts 成員設定為介面卡可支援的 VFs 和 VPorts 數目上限。

    注意 根據網路介面卡上的可用硬體資源,迷你埠驅動程式可以將 MaxNumVFs 成員設定為其小於 其 *NumVFs 關鍵字的值。 如需此關鍵字的詳細資訊,請參閱 SR-IOV 的標準化 INF 關鍵字

當 NDIS 呼叫迷你埠驅動程式的 MiniportInitializeEx 函式時,驅動程式會遵循下列步驟來註冊網路介面卡的 NIC 交換器功能:

  1. 迷你埠驅動程式會初始化 NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES 結構。

    迷你埠驅動程式會將 HardwareNicSwitchCapabilities 成員設定為先前初始化 NDIS_NIC_SWITCH_CAPABILITIES 結構的指標。

    如果 *SRIOV INF 關鍵字的登錄設定有一個值,則網路介面卡目前已啟用 NIC 交換器建立和設定。 迷你埠驅動程式會將 CurrentNicSwitchCapabilities 成員設定為相同 NDIS_NIC_SWITCH_CAPABILITIES 結構的指標。

    如果 *SRIOV INF 關鍵字的登錄設定值為零,則網路介面卡目前不會啟用 NIC 交換器建立和設定。 迷你埠驅動程式必須將 CurrentNicSwitchCapabilities 成員設定為 Null。

    如需 *SRIOV INF 關鍵字的詳細資訊,請參閱 SR-IOV 的標準化 INF 關鍵字

  2. 驅動程式會呼叫 NdisMSetMiniportAttributes ,並將 MiniportAttributes 參數設定為 NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES 結構的指標。

如需配接器初始化程式的詳細資訊,請參閱 初始化 Miniport 配接器

建立不含 SR-IOV 的 NIC 交換器

未啟用 SR-IOV 時,NDIS 6.60 和更新版本中的迷你埠驅動程式必須遵循下列 NIC 交換器和 VMQ 功能的共存需求。 啟用 SR-IOV 時,迷你埠驅動程式應遵守上一節中的現有需求。

  • 迷你埠驅動程式會公告 NIC 交換器和 VMQ 功能。
  • NIC 可以在 NIC 交換器和 VMQ 模式之間切換,而不需要重新開機 NIC。
    • 一開始啟動 NIC 時,就可以在建立 NIC 交換器或建立 VMQ 佇列) (處於任一模式。
      • 如果建立 NIC 交換器,迷你埠會失敗任何後續的 VMQ 佇列配置回呼。
      • 如果第一次建立 VMQ 佇列,迷你埠驅動程式會成功 VMQ 佇列配置,並失敗任何 NIC 交換器配置呼叫。
    • 刪除 NIC 交換器或刪除所有 VMQ 佇列時,迷你埠驅動程式會返回初始狀態,並準備好再次進入上述任一模式。

若要公告可以在不使用 SR-IOV 的情況下建立 NIC 交換器,迷你埠驅動程式會在 NDIS_NIC_SWITCH_CAPABILITIES 結構的 NicSwitchCapabilities 成員中設定 NDIS_NIC_SWITCH_CAPS_NIC_SWITCH_WITHOUT_IOV_SUPPORTED 旗標。

透過過度查詢驅動程式來查詢 NIC 交換器功能

NDIS 會以下列方式將網路介面卡目前啟用的 NIC 交換器功能傳遞至系結至網路介面卡的過度驅動程式:

當 NDIS 處理物件識別碼 (OID) 過度通訊協定或篩選驅動程式所發出的OID_NIC_SWITCH_HARDWARE_CAPABILITIES和OID_NIC_SWITCH_CURRENT_CAPABILITIES查詢要求時,NDIS 也會傳回NDIS_NIC_SWITCH_CAPABILITIES結構。