다음을 통해 공유


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. 미니포트 드라이버는 헤더 멤버를 초기화합니다. 드라이버는 헤더Type 멤버를 NDIS_OBJECT_TYPE_DEFAULT 설정합니다.

    NDIS 6.30부터 미니포트 드라이버는 HeaderRevision 멤버를 NDIS_SRIOV_CAPABILITIES _REVISION_1, Size 멤버를 NDIS_SIZEOF_SRIOV_CAPABILITIES_REVISION_1 설정합니다.

  2. 미니포트 드라이버는 SriovCapabilities 멤버의 적절한 플래그를 설정하여 SR-IOV 기능을 보고합니다.

    네트워크 어댑터가 SR-IOV를 지원하는 경우 어댑터의 PCI Express(PCIe) 물리적 함수에 대한 미니포트 드라이버는 다음 플래그를 설정해야 합니다.

    • NDIS_SRIOV_CAPS_SRIOV_SUPPORTED

    • NDIS_SRIOV_CAPS_PF_MINIPORT

    참고

     네트워크 어댑터의 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 키워드(keyword) 대한 레지스트리 설정 값이 1인 경우 현재 네트워크 어댑터에서 SR-IOV 기능이 사용하도록 설정됩니다. 미니포트 드라이버는 CurrentSriovCapabilities 멤버를 동일한 NDIS_SRIOV_CAPABILITIES 구조체에 대한 포인터로 설정합니다.

    *SRIOV INF 키워드(keyword) 대한 레지스트리 설정 값이 0이면 현재 네트워크 어댑터에서 SR-IOV 기능이 비활성화됩니다. 미니포트 드라이버는 CurrentSriovCapabilities 멤버를 NULL로 설정해야 합니다.

    *SRIOV INF 키워드(keyword) 대한 자세한 내용은 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 구조를 반환합니다.