Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Os drivers de miniporta registram a capacidade VMMQ (várias filas de máquina virtual) de uma NIC durante a inicialização do adaptador de miniporta.
Nota
Se a NIC der suporte ao VMMQ, o VPort padrão e pelo menos um VPort não padrão deverão dar suporte ao VMMQ.
Durante a inicialização, o driver de miniporta deve analisar a palavra-chave INF *RssOnHostVPorts para determinar se deve habilitar o recurso VMMQ na NIC. Para obter mais informações sobre como lidar com palavras-chave RSS para VMMQ, consulte Palavras-chave INF padronizadas para VMMQ.
Além disso, a pilha só poderá ativar o VMMQ na NIC se o adaptador de miniporta aceitar a criação de um switch NIC. O NDIS pode criar um switch NIC no adaptador de miniporta quando a palavra-chave INF *SriovPreferred é definida como one ou *SriovPreferred é definido como zero e *RssOrVmqPreference é definido como one. Para obter mais informações, consulte Palavras-chave INF padronizadas para SR-IOV e Palavras-chave INF padronizadas para VMQ.
Quando o driver de miniporto configura os parâmetros para o switch NIC, ele precisa definir os campos da estrutura NDIS_NIC_SWITCH_PARAMETERS da seguinte maneira:
Defina o membro Revision de Header como NDIS_NIC_SWITCH_PARAMETERS_REVISION_2.
Defina NumQueuePairsForDefaultVPort para o número de pares de fila atribuídos a um VPort padrão.
Os drivers de miniporta anunciam a capacidade VMMQ da NIC por meio da estrutura NDIS_NIC_SWITCH_CAPABILITIES. O driver de miniporta deve inicializar NDIS_NIC_SWITCH_CAPABILITIES da seguinte forma:
Defina o membro Revision de Header como NDIS_NIC_SWITCH_CAPABILITIES_REVISION_3.
Defina os marcadores NicSwitchCapabilities da seguinte maneira:
Defina NDIS_NIC_SWITCH_CAPS_SINGLE_VPORT_POOL como e para indicar que VPorts com configurações não padrão podem ser criados no PF. Esse sinalizador deve ser ativado.
Defina NDIS_NIC_SWITCH_CAPS_ASYMMETRIC_QUEUE_PAIRS_FOR_NONDEFAULT_VPORT_SUPPORTED para indicar que o NDIS pode alocar um número arbitrário de filas VMMQ em cada VPort. Caso contrário, todas as VPorts não padrão terão o mesmo número máximo de filas VMMQ que o campo maxNumQueuePairsPerNonDefaultVPort define.
Defina NDIS_NIC_SWITCH_CAPS_RSS_ON_PF_VPORTS_SUPPORTED como one para indicar que a NIC aceita VMMQ para PF VPorts.
Nota
Se qualquer um dos quatro sinalizadores PF VPort a seguir não estiver definido, os drivers de nível superior usarão os valores especificados quando os parâmetros RSS das PF VPorts forem definidos (incluindo a VPort padrão). Para obter mais informações, consulte Habilitar, desabilitar e atualizar o VMMQ em um VPort.
- Defina NDIS_NIC_SWITCH_CAPS_RSS_PER_PF_VPORT_INDIRECTION_TABLE_SUPPORTED como one para indicar que a NIC é capaz de manter tabelas de indireção por PF VPort. Este sinalizador deve ser definido.
Nota
Os três sinalizadores a seguir NDIS_NIC_SWITCH_CAPS_RSS_PER_PF_VPORT_HASH_FUNCTION_SUPPORTED, NDIS_NIC_SWITCH_CAPS_RSS_PER_PF_VPORT_HASH_TYPE_SUPPORTED e NDIS_NIC_SWITCH_CAPS_RSS_PER_PF_VPORT_HASH_KEY_SUPPORTED devem ser definidos como zero ou todos devem ser definidos como one. Se todos eles estiverem definidos como zero, o software calculará novamente o hash.
Defina NDIS_NIC_SWITCH_CAPS_RSS_PER_PF_VPORT_HASH_FUNCTION_SUPPORTED como one se a NIC permitir a configuração de uma função hash diferente por PF VPort.
Defina NDIS_NIC_SWITCH_CAPS_RSS_PER_PF_VPORT_HASH_TYPE_SUPPORTED como one se a NIC permitir a configuração de um tipo hash diferente por PF VPort.
Defina NDIS_NIC_SWITCH_CAPS_RSS_PER_PF_VPORT_HASH_KEY_SUPPORTED como one se a NIC permitir a configuração de uma chave secreta hash diferente por PF VPort.
Defina NDIS_NIC_SWITCH_CAPS_RSS_PER_PF_VPORT_INDIRECTION_TABLE_SIZE_RESTRICTED como one se a NIC tiver uma limitação para o tamanho da tabela de indireção para PF VPorts. Esse sinalizador força o emissor de um RSS OID a usar um tamanho de tabela de indireção por PF VPort igual ao número de filas de VPort arredondado para a próxima potência de dois. Esse sinalizador pode ser combinado com o sinalizador NDIS_NIC_SWITCH_CAPS_ASYMMETRIC_QUEUE_PAIRS_FOR_NONDEFAULT_VPORT_SUPPORTED (PF VPorts diferentes podem ter números diferentes de filas). Esse sinalizador impede que os usuários de VMMQ executem o direcionamento de fila refinado.
Defina MaxNumVPorts para especificar o número máximo de VPorts.
Defina MaxNumQueuePairs para especificar o número máximo de pares de fila que podem ser atribuídos a todos os VPorts. Isso inclui o VPort padrão anexado ao PF. Esse número deve refletir os recursos reais de hardware.
Defina MaxNumQueuePairsPerNonDefaultVPort para especificar o número máximo de pares de fila que podem ser atribuídos a um VPort não padrão.
Defina MaxNumRssCapableNonDefaultPFVPorts para especificar o número máximo de PF VPorts não padrão que podem permitir o VMMQ.
Defina NumberOfIndirectionTableEntriesForDefaultVPort para especificar o número de entradas de tabela de indireção para a VPort padrão.
Defina NumberOfIndirectionTableEntriesPerNonDefaultPFVPort para especificar o número de entradas de tabela de indireção para cada PF VPort não padrão. O tamanho da tabela de indireção deve ser idêntico para todas as PF VPorts que não são padrão.
Defina MaxNumQueuePairsForDefaultVPort para especificar o número máximo de pares de filas que podem ser atribuídos a uma VPort padrão durante a criação do switch NIC.
Depois que as capacidades de VMMQ são anunciadas, o NDIS é responsável por lidar com o OID OID_GEN_RECEIVE_SCALE_CAPABILITIES quando é chamado na VPort padrão ou em uma VPort não padrão. Quando o driver de miniporta retorna as capacidades do RSS na estrutura NDIS_RECEIVE_SCALE_CAPABILITIES, ele não deve restringir os campos NumberOfInterruptMessages por nenhuma das palavras-chave RSS padrão (como *MaxRssProcessors). O driver de nível superior incorporará esse número ao algoritmo de alocação de CPU do host.