VMMQ용 VPort 할당

NDIS는 다음과 같은 방식으로 VMMQ(Virtual Machine 다중 큐) 기능이 있는 경우 VPort를 할당합니다.

NDIS는 OID_NIC_SWITCH_CREATE_VPORT OID 요청을 실행하여 미니포트 어댑터에 기본이 아닌 VPort를 만듭니다. RSS PF(물리적 함수) VPort를 만들 때 NDIS는 다음과 같이 NDIS_NIC_SWITCH_VPORT_PARAMETERS 구조를 초기화합니다.

  • NDIS는 AttachedFunctionId 필드를 NDIS_PF_FUNCTION_ID 설정합니다.

  • VMMQ를 사용하는 경우 NDIS는 NumQueuePairs 필드를 이 VPort에 사용해야 하는 VMMQ 큐 쌍 수로 설정합니다. 이 번호에는 이 VPort의 기본 RSS 프로세서가 포함됩니다. 총 프로세서 수가 이 수를 초과하지 않도록 보장됩니다. VMMQ를 사용하지 않도록 설정하면 NDIS에서 이 값을 1로 설정합니다.

  • VMMQ를 사용하는 경우 ProcessorAffinity 필드는 미니포트 어댑터가 이 VPort에 사용해야 하는 잠재적인 RSS 프로세서의 비트 마스크를 정의합니다. 네트워크 스택이 VPort에 대한 간접 참조 테이블 항목을 채우는 데 사용한 프로세서는 이 비트 마스크가 식별하는 프로세서의 하위 집합입니다. 마스크는 NdisGetRssProcessorInformation 호출에서 반환된 RSS 프로세서의 하위 집합이며 설정된 비트 수가 VPort에 대해 요청된 RSS 큐 수를 초과할 수 있습니다. VMMQ를 사용하지 않도록 설정한 경우 미니포트 어댑터는 VPort 큐의 선호도를 설정할 때 이 비트 마스크에 지정된 가장 낮은 프로세서 번호를 사용해야 합니다.

  • NDIS는 NDIS_NIC_SWITCH_VPORT_PARAMS_NUM_QUEUE_PAIRS_CHANGED 플래그를 설정하여 VPort를 만든 후 NumQueuePairs 멤버가 업데이트되었음을 나타냅니다. VMMQ를 사용하도록 설정하면 기본 VPort 및 기본이 아닌 VPort에 대한 큐 수를 업데이트할 수 있습니다.