다음을 통해 공유


OID_NIC_SWITCH_ALLOCATE_VF 요청 처리

네트워크 어댑터의 PCI Express(PCIe) PF(물리적 함수)에 대한 미니포트 드라이버가 OID_NIC_SWITCH_ALLOCATE_VF OID(개체 식별자) 메서드 요청을 처리하는 경우 다음을 수행합니다.

  • PF 미니포트 드라이버는 네트워크 어댑터의 PCIe VF(가상 함수)에 대한 소프트웨어 리소스를 할당합니다. 이러한 리소스는 NDIS_NIC_SWITCH_VF_PARAMETERS 구조에 지정된 매개 변수를 기반으로 구성됩니다.

  • PF 미니포트 드라이버는 네트워크 어댑터의 NIC 스위치에 VF를 할당합니다. NIC 스위치는 NDIS_NIC_SWITCH_VF_PARAMETERS 구조체의 SwitchId 멤버로 식별됩니다.

    NIC 스위치에 대한 자세한 내용은 NIC 스위치를 참조하세요.

  • PF 미니포트 드라이버는 VF 식별자를 사용하여 VFId 멤버를 업데이트합니다. 이 식별자는 0부터 시작하는 인덱스이며 PF 미니포트 드라이버에 의해 NIC 스위치에 할당된 모든 VF에서 고유해야 합니다.

    오버라이징 드라이버는 OID_NIC_SWITCH_FREE_VF또는 OID_NIC_SWITCH_VF_PARAMETERS 연속 OID 요청에서 VFId 멤버의 값을 사용합니다.

  • PF 미니포트 드라이버는 VF에 대한 PCIe 요청자 식별자(RID)로 RequestorId 멤버를 업데이트합니다.

    미니포트 드라이버는 NdisMGetVirtualFunctionLocation 을 호출하여 VF에 해당하는 RID 정보를 가져옵니다. 그런 다음 드라이버는 NdisMGetVirtualFunctionLocation 호출에서 반환된 정보를 기반으로 NDIS_MAKE_RID 매크로를 사용하여 RID를 만듭니다.

    RID는 가상화 스택에서 DMA를 다시 매핑하는 데 사용되며 PF와 VF 간의 인터럽트입니다. 또한 RID를 사용하면 IOMMU(하드웨어 입력/출력 메모리 관리 단위)가 게스트 물리적 주소를 실제 주소를 호스트하도록 변환할 수 있습니다.

  • PF 미니포트 드라이버는 VF를 초기화하고 노출합니다. 이렇게 하면 가상화 스택에서 VF를 사용할 준비가 됩니다.

PF 미니포트 드라이버가 필요한 소프트웨어 리소스를 성공적으로 할당하고 VF를 초기화할 수 있는 경우 드라이버는 NDIS_STATUS_SUCCESS 사용하여 OID 요청을 완료합니다. PF 미니포트 드라이버는 할당된 각 VF에 대한 VF ID를 유지해야 합니다. NDIS 및 덮어쓰는 드라이버는 VF 재설정 또는 해제와 같은 다양한 작업을 위해 PF 미니포트 드라이버에 대한 연속 OID 요청에서 VF 식별자를 사용합니다.

참고 VF에 대한 리소스가 할당되면 VPort(가상 포트)가 VF에 연결되지 않았기 때문에 VF가 연결되지 않은 상태입니다. 오버리싱 드라이버는 VPort 를 만들고 VF에 연결하기 위해 OID_NIC_SWITCH_CREATE_VPORT OID 요청을 실행할 수 있습니다. 자세한 내용은 가상 포트 만들기를 참조하세요.