SR-IOV 機能の判断

このトピックでは、NDIS と上にあるドライバーが、ネットワーク アダプターの単一ルート I/O 仮想化 (SR-IOV) 機能を決定する方法について説明します。 このトピックの内容は次のとおりです。

MiniportInitializeEx 中の SR-IOV 機能の報告

上にあるドライバーによる SR-IOV 機能の照会

MiniportInitializeEx 中の SR-IOV 機能の報告

NDIS が、ミニポート ドライバーの MiniportInitializeEx 関数を呼び出すと、ドライバーは、次の SR-IOV 機能を提供します。

  • ネットワーク アダプターがサポートできる SR-IOV ハードウェア機能の完全なセット。

  • ネットワーク アダプターで現在有効になっている SR-IOV 機能。

  • ミニポート ドライバーがネットワーク アダプターの PCI Express (PCIe) 物理機能 (PF) または仮想関数 (VF) を管理しているかどうか。

ミニポート ドライバーは、次のように初期化された NDIS_SRIOV_CAPABILITIES 構造体を介して、下にあるネットワーク アダプターの SR-IOV ハードウェア機能を報告します。

  1. ミニポート ドライバーは、Header メンバーを初期化します。 ドライバーは、HeaderType メンバーを NDIS_OBJECT_TYPE_DEFAULT に設定します。

    NDIS 6.30 以降、ミニポート ドライバーは、HeaderRevision メンバーを NDIS_SRIOV_CAPABILITIES _REVISION_1 に Size メンバーを NDIS_SIZEOF_SRIOV_CAPABILITIES_REVISION_1 に設定します。

  2. ミニポート ドライバーは、SR-IOV 機能を報告するため SriovCapabilities メンバーの適切なフラグを設定します。

    ネットワーク アダプターが SR-IOV をサポートしている場合、アダプターの PCI Express (PCIe) 物理機能のミニポート ドライバーは、次のフラグを設定する必要があります。

    • NDIS_SRIOV_CAPS_SRIOV_SUPPORTED

    • NDIS_SRIOV_CAPS_PF_MINIPORT

    Note

     ネットワーク アダプターの PCIe 仮想関数 (VF) のミニポート ドライバーは、NDIS_SRIOV_CAPS_VF_MINIPORT フラグと NDIS_SRIOV_CAPS_SRIOV_SUPPORTED フラグの両方を設定する必要があります。  

NDIS が、ミニポート ドライバーの MiniportInitializeEx 関数を呼び出すと、ドライバーは、次の手順に従って、ネットワーク アダプターの SR-IOV 機能を登録します。

  1. ミニポート ドライバーは、NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES 構造体を初期化します。

    ミニポート ドライバーは、HardwareSriovCapabilities メンバーを、以前に初期化された NDIS_SRIOV_CAPABILITIES 構造体へのポインターに設定します。

    *SRIOV INF キーワードのレジストリ設定の値が 1 の場合、SR-IOV 機能は現在ネットワーク アダプターで有効になっています。 ミニポート ドライバーは、CurrentSriovCapabilities メンバーを同じ NDIS_SRIOV_CAPABILITIES 構造体へのポインターに設定します。

    *SRIOV INF キーワードのレジストリ設定の値が 0 の場合、SR-IOV 機能は現在ネットワーク アダプターで無効になっています。 ミニポート ドライバーは、CurrentSriovCapabilities メンバーを NULL に設定する必要があります。

    *SRIOV INF キーワードの詳細については、「SR-IOV の標準化された INF キーワード」を参照してください。

  2. ドライバーは NdisMSetMiniportAttributes を呼び出し、MiniportAttributes パラメーターを NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES 構造体へのポインターに設定します。

アダプターの初期化プロセスの詳細については、「ミニポート アダプターの初期化」を参照してください。

上にあるドライバーによる SR-IOV 機能の照会

NDIS は、次の方法でネットワーク アダプターにバインドする上にあるドライバーにネットワーク アダプターの現在有効な SR-IOV 機能を渡します。

  • NDIS が上にあるフィルター ドライバーの FilterAttach 関数を呼び出すと、NDIS は AttachParameters パラメーターを介してネットワーク アダプターの SR-IOV 機能を渡します。 このパラメーターには、NDIS_FILTER_ATTACH_PARAMETERS 構造体へのポインターが含まれています。 この構造体の SriovCapabilities メンバーには NDIS_SRIOV_CAPABILITIES 構造体へのポインターが含まれています。

  • NDIS が上にあるプロトコル ドライバーの ProtocolBindAdapterEx 関数を呼び出すと、NDIS は BindParameters パラメーターを介してネットワーク アダプターの SR-IOV 機能を渡します。 このパラメーターには、NDIS_FILTER_ATTACH_PARAMETERS 構造体へのポインターが含まれています。 この構造体の SriovCapabilities メンバーには NDIS_SRIOV_CAPABILITIES 構造体へのポインターが含まれています。

NDIS は、上にあるプロトコルまたはフィルター ドライバーによって発行される OID_SRIOV_HARDWARE_CAPABILITIESOID_SRIOV_CURRENT_CAPABILITIES のオブジェクト識別子 (OID) クエリ要求を処理する場合、NDIS_SRIOV_CAPABILITIES 構造体も返します。