다음을 통해 공유


VF 미니포트 드라이버의 백채널 통신

PCI Express(PCIe) VF(가상 함수)의 미니포트 드라이버는 PF(PCIe 물리적 함수)의 미니포트 드라이버와 통신하여 VF 구성 블록에서 데이터를 읽거나 씁니다.

VF 구성 블록은 PF와 VF 미니포트 드라이버 간의 백채널 통신에 사용됩니다. IHV(독립 하드웨어 공급업체)는 디바이스에 대해 하나 이상의 VF 구성 블록을 정의할 수 있습니다. 각 VF 구성 블록에는 IHV 정의 형식, 길이 및 블록 ID가 있습니다. 예를 들어 IHV는 VF 미니포트 드라이버의 MAC(미디어 액세스 제어) 주소에 사용할 수 있는 VF 구성 블록을 정의할 수 있습니다. 현재 VF 및 VPort(가상 포트) 구성에 다른 VF 구성 블록을 사용할 수 있습니다.

참고 각 VF 구성 블록의 데이터는 PF 및 VF 미니포트 드라이버에서만 사용됩니다. 이 데이터의 형식과 콘텐츠는 Windows 운영 체제의 구성 요소에 불투명합니다.

각 VF 구성 블록에는 IHV에서 고유 식별자가 할당됩니다. 이렇게 하면 VF 미니포트 드라이버가 특정 VF 구성 블록에 대한 정보를 쿼리하거나 설정할 수 있습니다.

VF 미니포트 드라이버는 다음 함수를 통해 지정된 VF 구성 블록에서 읽기 또는 쓰기 작업을 시작합니다.

  • 지정된 VF 구성 블록에서 데이터를 읽는 NdisMReadConfigBlock입니다. VF 미니포트 드라이버가 이 함수를 호출하면 읽을 데이터의 블록 식별자 및 길이를 지정합니다. 또한 드라이버는 요청된 데이터를 포함할 버퍼에 대한 포인터를 전달합니다.

  • 지정된 VF 구성 블록에 데이터를 쓰는 NdisMWriteConfigBlock입니다. VF 미니포트 드라이버가 이 함수를 호출하면 기록할 데이터의 블록 식별자와 길이를 지정합니다. 또한 드라이버는 데이터를 쓸 버퍼에 대한 포인터를 전달합니다.

PF 미니포트 드라이버는 다음과 같은 방법으로 지정된 VF 구성 블록에 대한 액세스를 관리합니다.

  • VF 미니포트 드라이버가 NdisMReadConfigBlock을 호출하면 NDIS는 PF 미니포트 드라이버에 OID_SRIOV_READ_VF_CONFIG_BLOCK OID(개체 식별자) 메서드 요청을 발급합니다. 이 OID 요청에는 함수 호출에서 VF 미니포트 드라이버가 전달한 매개 변수 데이터가 포함됩니다.

    PF 미니포트 드라이버는 읽기 작업을 수행하고 드라이버가 OID 요청을 완료할 때 요청된 데이터를 반환합니다. OID 요청이 완료되면 NDIS는 NdisMReadConfigBlock 호출에서 를 반환합니다.

  • VF 미니포트 드라이버가 NdisMWriteConfigBlock을 호출하면 NDIS는 PF 미니포트 드라이버에 OID_SRIOV_WRITE_VF_CONFIG_BLOCK OID 메서드 요청을 발급합니다. 이 OID 요청에는 함수 호출에서 VF 미니포트 드라이버가 전달한 매개 변수 데이터가 포함됩니다.

    PF 미니포트 드라이버는 쓰기 작업을 수행하고 OID 요청을 완료합니다. OID 요청이 완료되면 NDIS는 NdisMWriteConfigBlock 호출에서 를 반환합니다.

다음 그림에서는 SR-IOV 백채널 인터페이스를 통해 VF 구성 블록을 읽고 쓰는 데 관련된 프로세스를 보여줍니다.

VF 미니포트 드라이버, NDIS 및 PF 미니포트 드라이버 간의 VF 구성 블록을 읽고 쓰는 프로세스를 보여 주는 다이어그램