가상 포트의 매개 변수 설정
지나치게 많은 드라이버는 SR-IOV(단일 루트 I/O 가상화)를 지원하는 네트워크 어댑터의 NIC 스위치에서 VPort(가상 포트)에 대한 매개 변수를 변경할 수 있습니다. 드라이버는 이러한 매개 변수를 변경하기 위해 OID_NIC_SWITCH_VPORT_PARAMETERS OID(개체 식별자) 집합 요청을 발급합니다.
지나치게 많은 드라이버가 이 OID 집합 요청을 발급하기 전에 VPort에서 변경할 매개 변수를 사용하여 NDIS_NIC_SWITCH_VPORT_PARAMETERS 구조를 초기화해야 합니다. 그런 다음 드라이버는 OID 요청에 대한 NDIS_OID_REQUEST 구조를 초기화하고 InformationBuffer 멤버를 NDIS_NIC_SWITCH_VPORT_PARAMETERS 구조체에 대한 포인터로 설정합니다.
VPort에 대한 구성 매개 변수의 제한된 하위 집합만 변경할 수 있습니다. 오버리싱 드라이버는 NDIS_NIC_SWITCH_VPORT_PARAMETERS 구조체의 다음 멤버를 설정하여 변경할 매개 변수를 지정합니다.
SwitchId 멤버는 매개 변수를 반환할 NIC 스위치의 식별자로 설정해야 합니다.
참고 Windows Server 2012 SR-IOV 인터페이스는 네트워크 어댑터에서 하나의 NIC 스위치만 지원합니다. 이 스위치를 기본 NIC 스위치라고 합니다. SwitchId 멤버는 NDIS_DEFAULT_SWITCH_ID 설정해야 합니다.
VPortId 멤버는 VPort와 연결된 식별자로 설정해야 합니다. 오버리싱 드라이버는 다음 방법 중 하나를 통해 VPort 식별자를 가져옵니다.
이전 OID 메서드 요청에서 OID_NIC_SWITCH_CREATE_VPORT.
이전 OID 메서드 요청에서 OID_NIC_SWITCH_ENUM_VPORTS.
적절한 NDIS_NIC_SWITCH_VPORT_PARAMS_Xxx_CHANGED 플래그는 Flags 멤버에 설정해야 합니다. 해당 NDIS_NIC_SWITCH_VPORT_PARAMS_Xxx_CHANGED 플래그가 Ntddndis.h에 정의된 경우에만 NDIS_NIC_SWITCH_VPORT_PARAMETERS 구조체의 멤버를 변경할 수 있습니다.
Flags 멤버에 설정된 NDIS_NIC_SWITCH_VPORT_PARAMS_Xxx_CHANGED 플래그에 해당하는 NDIS_NIC_SWITCH_VPORT_PARAMETERS 구조체의 멤버는 변경할 VPort 구성 매개 변수를 사용하여 설정됩니다.
Windows Server 2012 시작하여 NDIS_NIC_SWITCH_VPORT_PARAMETERS 구조체의 다음 멤버만 OID_NIC_SWITCH_VPORT_PARAMETERS OID 집합 요청을 통해 변경할 수 있습니다.
PortName
이 멤버에는 VPort에 대한 사용자에게 친숙한 설명이 포함되어 있습니다.
인터럽트모더레이션
이 멤버는 VPort의 인터럽트 조정 설정을 지정합니다.
ProcessorAffinity
이 멤버는 이 VPort와 연결할 수 있는 CPU의 그룹 번호와 비트맵을 지정합니다.
오버리싱 드라이버는 VPort에 대한 ProcessorAffinity 멤버를 변경하기 위한 다음 지침을 따라야 합니다.
이 멤버는 PF에 연결된 VPort에 대해서만 유효합니다. 이 필드는 VF에 연결된 기본이 아닌 VPort에 대해 유효하지 않습니다.
PF에 연결된 기본이 아닌 VPort의 경우 VPort를 만들 때 하나 이상의 프로세서를 지정해야 합니다. 기본이 아닌 VPort와 연결된 프로세서 선호도는 VPort를 만든 후에 변경할 수 있습니다.
참고 기본이 아닌 VPort는 OID_NIC_SWITCH_CREATE_VPORT OID 메서드 요청을 통해 만들어집니다.
VPortState
이 멤버는 VPort의 현재 상태를 지정합니다.
오버리싱 드라이버는 VPort에 대한 VPortState 멤버를 변경하기 위한 다음 지침을 따라야 합니다.
VF에 연결된 기본이 아닌 VPort의 경우 VPortState 멤버는 항상 NdisNicSwitchVPortStateActivated로 설정되어야 합니다.
PF에 연결된 기본이 아닌 VPort의 경우 VPort를 만들 때 VPortState 멤버를 NdisNicSwitchVPortStateDeactivated 로 설정해야 합니다. PF VPort는 VPortState를 활성화된 상태로 변경하기 위해 지나치게 많은 드라이버가 OID_NIC_SWITCH_VPORT_PARAMETERS OID 집합 요청을 실행한 후에만 활성화됩니다.
기본이 아닌 VPort가 활성화되면 PF 미니포트 드라이버는 NdisAllocateSharedMemory를 통해 할당된 공유 메모리와 같은 VPort에 대한 리소스를 할당할 수 있습니다. PF 미니포트 드라이버는 드라이버가 OID_NIC_SWITCH_DELETE_VPORT OID 집합 요청을 통해 VPort를 삭제할 때까지 활성화된 후 언제든지 VPort에 대한 리소스를 할당할 수 있습니다.
기본 VPort는 항상 활성화된 상태입니다. VPortState 멤버의 값은 항상 기본 VPort에 대해 NdisNicSwitchVPortStateActivated로 설정되어야 합니다.
VPort가 활성화된 상태이면 비활성화할 수 없습니다. PF 미니포트 드라이버는 활성화된 상태이고 해당 MAC 필터가 VPort에 설정된 경우에만 VPort에서 패킷을 수신하고 전송할 수 있습니다. 그러나 OID_NIC_SWITCH_DELETE_VPORT OID 집합 요청을 통해 VPort를 삭제한 후 드라이버는 VPort에 할당된 리소스를 해제해야 합니다. 또한 드라이버는 VPort의 패킷에 대해 보류 중인 모든 전송 또는 수신 작업을 취소해야 합니다.
PF 미니포트 드라이버가 OID_NIC_SWITCH_VPORT_PARAMETERS OID 집합 요청을 받으면 드라이버는 구성 매개 변수를 사용하여 하드웨어를 구성합니다. 드라이버는 NDIS_NIC_SWITCH_VPORT_PARAMETERS 구조체의 Flags 멤버에서 NDIS_NIC_SWITCH_VPORT_PARAMETERS_Xxx_CHANGED 플래그로 식별된 구성 매개 변수만 변경할 수 있습니다.