SR-IOV 機能の判断
このトピックでは、NDIS と上にあるドライバーが、ネットワーク アダプターの単一ルート I/O 仮想化 (SR-IOV) 機能を決定する方法について説明します。 このトピックの内容は次のとおりです。
MiniportInitializeEx 中の SR-IOV 機能の報告
MiniportInitializeEx 中の SR-IOV 機能の報告
NDIS が、ミニポート ドライバーの MiniportInitializeEx 関数を呼び出すと、ドライバーは、次の SR-IOV 機能を提供します。
ネットワーク アダプターがサポートできる SR-IOV ハードウェア機能の完全なセット。
ネットワーク アダプターで現在有効になっている SR-IOV 機能。
ミニポート ドライバーがネットワーク アダプターの PCI Express (PCIe) 物理機能 (PF) または仮想関数 (VF) を管理しているかどうか。
ミニポート ドライバーは、次のように初期化された NDIS_SRIOV_CAPABILITIES 構造体を介して、下にあるネットワーク アダプターの SR-IOV ハードウェア機能を報告します。
ミニポート ドライバーは、Header メンバーを初期化します。 ドライバーは、Header の Type メンバーを NDIS_OBJECT_TYPE_DEFAULT に設定します。
NDIS 6.30 以降、ミニポート ドライバーは、Header の Revision メンバーを NDIS_SRIOV_CAPABILITIES _REVISION_1 に Size メンバーを NDIS_SIZEOF_SRIOV_CAPABILITIES_REVISION_1 に設定します。
ミニポート ドライバーは、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 機能を登録します。
ミニポート ドライバーは、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 キーワード」を参照してください。
ドライバーは 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_CAPABILITIES と OID_SRIOV_CURRENT_CAPABILITIES のオブジェクト識別子 (OID) クエリ要求を処理する場合、NDIS_SRIOV_CAPABILITIES 構造体も返します。