미니포트 드라이버는 미니포트 어댑터를 초기화하는 동안 NIC의 VMMQ(가상 머신 다중 큐) 기능을 등록합니다.
메모
NIC가 VMMQ를 지원하는 경우 기본 VPort와 최소한 하나 이상의 비기본 VPort가 VMMQ를 지원해야 합니다.
초기화 중에 미니포트 드라이버는 NIC에서 VMMQ 기능을 사용하도록 설정해야 하는지 여부를 확인하기 위해 *RssOnHostVPorts INF 키워드를 검사해야 합니다. VMMQ에 대한 RSS 키워드 처리에 대한 자세한 내용은 VMMQ 대한 표준화된 INF 키워드참조하세요.
또한 미니포트 어댑터가 NIC 스위치 만들기를 지원하는 경우에만 스택이 NIC에서 VMMQ를 활성화할 수 있습니다. NDIS는 미니포트 어댑터에서 NIC 스위치를 만들 수 있습니다. 이때, *SriovPreferred INF 키워드가 하나 로 설정되거나, *SriovPreferred 가 0 으로 설정되고, *RssOrVmqPreference 가 하나로 설정된 경우입니다. 자세한 내용은 표준화된 INF 키워드를 SR-IOV에 대한 표준화된 INF 키워드와 그리고VMQ에 대한 표준화된 INF 키워드를 참조하세요.
미니포트 드라이버가 NIC 스위치에 대한 매개 변수를 구성하는 경우 다음과 같이 NDIS_NIC_SWITCH_PARAMETERS 구조체의 필드를 설정해야 합니다.
헤더의Revision 멤버를 NDIS_NIC_SWITCH_PARAMETERS_REVISION_2로 설정합니다.
NumQueuePairsForDefaultVPort 기본 VPort에 할당된 큐 쌍 수로 설정합니다.
미니포트 드라이버는 NDIS_NIC_SWITCH_CAPABILITIES 구조를 통해 NIC의 VMMQ 기능을 광고합니다. 미니포트 드라이버는 NDIS_NIC_SWITCH_CAPABILITIES을(를) 다음과 같은 방식으로 초기화해야 합니다.
Header의 Revision 멤버를 NDIS_NIC_SWITCH_CAPABILITIES_REVISION_3으로 설정합니다.
다음과 같이 NicSwitchCapabilities 플래그를 설정합니다.
PF에서 기본이 아닌 VPort를 만들 수 있음을 나타내기 위해 NDIS_NIC_SWITCH_CAPS_SINGLE_VPORT_POOL을 하나로 설정합니다. 이 플래그를 설정해야 합니다.
NDIS가 각 VPort에 임의의 개수의 VMMQ 큐를 할당할 수 있음을 나타내려면 NDIS_NIC_SWITCH_CAPS_ASYMMETRIC_QUEUE_PAIRS_FOR_NONDEFAULT_VPORT_SUPPORTED를 설정하세요. 기본이 아닌 모든 VPort는 MaxNumQueuePairsPerNonDefaultVPort 필드가 정의하는 VMMQ 큐의 최대 수를 갖습니다.
NDIS_NIC_SWITCH_CAPS_RSS_ON_PF_VPORTS_SUPPORTED을 로 설정하고을 사용하여 NIC가 PF VPort용 VMMQ를 지원함을 나타냅니다.
메모
PF VPort 플래그당 다음 네 가지 플래그가 설정되지 않은 경우 상위 수준 드라이버는 PF VPort의 RSS 매개 변수가 설정될 때 지정된 값(기본 VPort 포함)을 사용합니다. 자세한 내용은 VPort 에서 VMMQ를 사용, 사용 안 함 및 업데이트하는 방법에 대해을 참조하세요.
- NIC가 PF VPort 간접 참조 테이블별로 유지 관리할 수 있음을 나타내기 위해 NDIS_NIC_SWITCH_CAPS_RSS_PER_PF_VPORT_INDIRECTION_TABLE_SUPPORTED를 으로 설정하고으로 표시합니다. 이 플래그를 설정해야 합니다.
메모
다음 세 가지 플래그 NDIS_NIC_SWITCH_CAPS_RSS_PER_PF_VPORT_HASH_FUNCTION_SUPPORTED, NDIS_NIC_SWITCH_CAPS_RSS_PER_PF_VPORT_HASH_TYPE_SUPPORTED 및 NDIS_NIC_SWITCH_CAPS_RSS_PER_PF_VPORT_HASH_KEY_SUPPORTED는 모두 0으로 설정하거나 모두 1로 설정해야 합니다. 모두 0 설정되면 소프트웨어에서 해시를 다시 계산합니다.
NIC가 PF VPort당 다른 해시 함수 설정을 지원하는 경우, NDIS_NIC_SWITCH_CAPS_RSS_PER_PF_VPORT_HASH_FUNCTION_SUPPORTED를 에서으로 설정합니다.
NIC가 PF VPort당 다른 해시 형식 설정을 지원하는 경우 NDIS_NIC_SWITCH_CAPS_RSS_PER_PF_VPORT_HASH_TYPE_SUPPORTED를 으로 설정하고로 설정하십시오.
PF VPort마다 다른 해시 비밀 키 설정을 NIC가 지원하는 경우, NDIS_NIC_SWITCH_CAPS_RSS_PER_PF_VPORT_HASH_KEY_SUPPORTED를 에서으로 설정하십시오.
NIC에 PF VPort의 간접 참조 테이블 크기에 제한이 있는 경우 NDIS_NIC_SWITCH_CAPS_RSS_PER_PF_VPORT_INDIRECTION_TABLE_SIZE_RESTRICTED를 으로 설정하십시오. 이 플래그는 RSS OID의 발급자에서 PF당 VPort 간접 참조 테이블 크기를 다음 2개로 반올림된 VPort 큐 수와 동일하게 사용하도록 강제합니다. 이 플래그는 NDIS_NIC_SWITCH_CAPS_ASYMMETRIC_QUEUE_PAIRS_FOR_NONDEFAULT_VPORT_SUPPORTED 플래그와 결합될 수 있습니다(PF VPort의 큐 수가 다를 수 있음). 이 플래그를 사용하면 VMMQ 사용자가 세분화된 큐 조향을 수행할 수 없습니다.
최대 VPort 수를 지정하려면 MaxNumVPorts 설정합니다.
maxNumQueuePairs 설정하여 모든 VPorts에 할당할 수 있는 최대 큐 쌍 수를 지정합니다. 여기에는 PF에 연결된 기본 VPort가 포함됩니다. 이 숫자는 실제 하드웨어 기능을 반영해야 합니다.
MaxNumQueuePairsPerNonDefaultVPort 설정하여 기본이 아닌 VPort에 할당할 수 있는 최대 큐 쌍 수를 지정합니다.
MaxNumRssCapableNonDefaultPFVPorts 설정하여 VMMQ를 지원할 수 있는 기본이 아닌 PF VPort의 최대 수를 지정합니다.
기본 VPort의 간접 참조 테이블 항목 수를 지정하려면 의 NumberOfIndirectionTableEntriesForDefaultVPort을(를)로 설정하세요.
numberOfIndirectionTableEntriesPerNonDefaultPFVPort을 설정하여, 기본이 아닌 각 PF VPort에 대한 간접 참조 테이블 항목 수를 지정합니다. 간접 참조 테이블의 크기는 기본이 아닌 모든 PF VPort에 대해 동일해야 합니다.
MaxNumQueuePairsForDefaultVPort 설정하여 NIC 스위치를 만드는 동안 기본 VPort에 할당할 수 있는 최대 큐 쌍 수를 지정합니다.
VMMQ 기능이 보급되면 NDIS는 기본 VPort 또는 기본이 아닌 VPort에서 호출될 때 OID_GEN_RECEIVE_SCALE_CAPABILITIES OID를 처리합니다. 미니포트 드라이버가 NDIS_RECEIVE_SCALE_CAPABILITIES 구조에서 RSS 기능을 반환하는 경우 표준 RSS 키워드(예: *MaxRssProcessors)로 NumberOfInterruptMessages 필드를 제한해서는 안 됩니다. 상위 수준 드라이버는 이 숫자를 호스트 CPU 할당 알고리즘에 통합합니다.