Definindo os parâmetros de uma porta virtual
Um driver sobreposto pode alterar os parâmetros de uma porta virtual (VPort) em um comutador NIC em um adaptador de rede que suporta virtualização de E/S de raiz única (SR-IOV). O driver emite um pedido de configuração de identificador de objeto (OID) de OID_NIC_SWITCH_VPORT_PARAMETERS para alterar esses parâmetros.
Antes que o driver subjacente emita essa solicitação de conjunto OID, ele deve inicializar uma estrutura de NDIS_NIC_SWITCH_VPORT_PARAMETERS com os parâmetros a serem alterados no VPort. Em seguida, o driver inicializa uma estrutura de NDIS_OID_REQUEST para a solicitação OID e define o membro InformationBuffer como um ponteiro para a estrutura NDIS_NIC_SWITCH_VPORT_PARAMETERS.
Apenas um subconjunto limitado de parâmetros de configuração para um VPort pode ser alterado. O driver subjacente especifica o parâmetro a ser alterado definindo os seguintes membros da estrutura NDIS_NIC_SWITCH_VPORT_PARAMETERS:
O membro SwitchId deve ser definido como o identificador do comutador NIC para o qual se pretende obter os parâmetros.
Observação A partir do Windows Server 2012, a interface SR-IOV suporta apenas um comutador NIC no adaptador de rede. Este switch é conhecido como o switch NIC padrão . O membro do SwitchId deve ser definido como NDIS_DEFAULT_SWITCH_ID.
O membro VPortId deve ser definido como o identificador associado ao VPort. O driver sobrejacente obtém o identificador VPort através de uma das seguintes maneiras:
De uma solicitação de método OID anterior de OID_NIC_SWITCH_CREATE_VPORT.
A partir de uma solicitação de método OID anterior de OID_NIC_SWITCH_ENUM_VPORTS.
As flags apropriadas NDIS_NIC_SWITCH_VPORT_PARAMS_ Xxx_CHANGEDdevem ser definidas no membro Flags . Os membros da estrutura NDIS_NIC_SWITCH_VPORT_PARAMETERS só podem ser alterados se existir um sinalizador NDIS_NIC_SWITCH_VPORT_PARAMS_Xxx_CHANGED correspondente definido em Ntddndis.h.
Os elementos da estrutura NDIS_NIC_SWITCH_VPORT_PARAMETERS, que correspondem aos sinalizadores NDIS_NIC_SWITCH_VPORT_PARAMS_Xxx_CHANGED configurados no elemento Flags, são atribuídos os parâmetros de configuração do VPort que precisam ser alterados.
A partir do Windows Server 2012, somente os seguintes membros da estrutura NDIS_NIC_SWITCH_VPORT_PARAMETERS podem ser alterados por meio de uma solicitação de conjunto OID de OID_NIC_SWITCH_VPORT_PARAMETERS:
PortName
Este membro contém uma descrição fácil de usar do VPort.
ModeraçãoDeInterrupção
Este membro especifica a configuração de moderação de interrupção do VPort.
ProcessorAffinity
Este membro especifica o número do grupo e um bitmap das CPUs às quais esse VPort pode ser associado.
O driver sobreposto deve seguir estas diretrizes para alterar o membro ProcessorAffinity para um VPort:
Este membro é válido apenas para os VPorts vinculados à PF. Este campo não é válido para VPorts não padrão anexados a um VF.
Para VPorts não padrão que estão conectados ao PF, pelo menos um processador deve ser especificado quando o VPort é criado. A afinidade do processador associada ao VPort não padrão pode ser alterada após a criação do VPort.
Observação VPorts não padrão são criados por meio de solicitações de método OID de OID_NIC_SWITCH_CREATE_VPORT.
VPortState
Este membro especifica o estado atual do VPort.
O driver superior deve seguir estas diretrizes para alterar o membro VPortState de um VPort:
Para um VPort não padrão que está conectado a um VF, o membro VPortState sempre deve ser definido como NdisNicSwitchVPortStateActivated.
Para um VPort não padrão que está conectado ao PF, o membro VPortState deve ser definido como NdisNicSwitchVPortStateDeactivated, quando o VPort é criado. O PF VPort é ativado somente depois que uma solicitação de definição de OID de OID_NIC_SWITCH_VPORT_PARAMETERS é emitida pelos drivers subjacentes para alterar o estado do VPort para ativado.
Quando o VPort não padrão é ativado, o driver de miniporta PF pode alocar recursos para o VPort, como memória compartilhada alocada através de NdisAllocateSharedMemory. O driver de miniporta PF pode alocar recursos para VPort a qualquer momento depois que ele é ativado até que o driver exclua o VPort através de uma solicitação de conjunto OID de OID_NIC_SWITCH_DELETE_VPORT.
O VPort padrão está sempre em um estado ativado. O valor do membro VPortState deve sempre ser definido como NdisNicSwitchVPortStateActivated para o VPort padrão.
Quando um VPort está em um estado ativado, ele não pode ser desativado. Um driver de miniporta PF pode receber e transmitir pacotes de um VPort somente se ele estiver em um estado ativado e os filtros MAC correspondentes estiverem definidos no VPort. No entanto, depois de o VPort ser excluído por meio de um pedido de configuração OID de OID_NIC_SWITCH_DELETE_VPORT, o driver deve liberar os recursos que foram alocados para o VPort. O driver também deve cancelar todas as operações pendentes de transmissão ou recebimento de pacotes no VPort.
Depois que o driver de miniport PF recebe o pedido de definição de OID de OID_NIC_SWITCH_VPORT_PARAMETERS, o driver configura o hardware com os parâmetros de configuração. O driver só pode alterar os parâmetros de configuração identificados pelos indicadores NDIS_NIC_SWITCH_VPORT_PARAMETERS_Xxx_CHANGED no membro Flags da estrutura NDIS_NIC_SWITCH_VPORT_PARAMETERS.