Definindo os parâmetros de uma porta virtual

Um driver de sobreposição pode alterar os parâmetros de uma VPort (porta virtual) em um comutador NIC em um adaptador de rede que dá suporte à virtualização de E/S de raiz única (SR-IOV). O driver emite uma solicitação de conjunto de OID (identificador de objeto) de OID_NIC_SWITCH_VPORT_PARAMETERS para alterar esses parâmetros.

Antes que o driver sobreposto emita essa solicitação de conjunto de OID, ele deve inicializar uma estrutura NDIS_NIC_SWITCH_VPORT_PARAMETERS com os parâmetros a serem alterados no VPort. Em seguida, o driver inicializa uma estrutura NDIS_OID_REQUEST para a solicitação OID e define o membro InformationBuffer como um ponteiro para a estrutura NDIS_NIC_SWITCH_VPORT_PARAMETERS .

Somente um subconjunto limitado de parâmetros de configuração para um VPort pode ser alterado. O driver de sobreposição 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 da opção NIC para a qual os parâmetros devem ser retornados.

    Nota Começando com Windows Server 2012, a interface SR-IOV dá suporte a apenas uma opção NIC no adaptador de rede. Essa opção é conhecida como a opção NIC padrão. O membro SwitchId deve ser definido como NDIS_DEFAULT_SWITCH_ID.

  • O membro VPortId deve ser definido como o identificador associado ao VPort. O driver de sobreposição obtém o identificador VPort por meio de uma das seguintes maneiras:

  • Os sinalizadores NDIS_NIC_SWITCH_VPORT_PARAMS_Xxx_CHANGED apropriados devem ser definidos no membro Flags. Os membros da estrutura NDIS_NIC_SWITCH_VPORT_PARAMETERS só poderão ser alterados se um sinalizador NDIS_NIC_SWITCH_VPORT_PARAMS_Xxx_CHANGED correspondente for definido em Ntddndis.h.

  • Os membros da estrutura NDIS_NIC_SWITCH_VPORT_PARAMETERS , que correspondem aos sinalizadores NDIS_NIC_SWITCH_VPORT_PARAMS_Xxx_CHANGED definidos no membro Flags , são definidos com os parâmetros de configuração do VPort que devem ser alterados.

Começando com 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
Esse membro contém uma descrição amigável do VPort.

InterruptModeration
Esse membro especifica a configuração de moderação de interrupção do VPort.

Processoraffinity
Esse membro especifica o número do grupo e um bitmap das CPUs às quais esse VPort pode ser associado.

O driver de sobreposição deve seguir estas diretrizes para alterar o membro ProcessorAffinity para um VPort:

  • Esse membro é válido somente para os VPorts anexados ao PF. Esse campo não é válido para VPorts não padrão anexados a uma VF.

  • Para VPorts não padrão anexados 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.

    Nota VPorts não padrão são criados por meio de solicitações de método OID de OID_NIC_SWITCH_CREATE_VPORT.

VPortState
Esse membro especifica o estado atual do VPort.

O driver de sobreposição deve seguir estas diretrizes para alterar o membro VPortState para um VPort:

  • Para um VPort não padrão anexado a um VF, o membro VPortState sempre deve ser definido como NdisNicSwitchVPortStateActivated.

  • Para um VPort não padrão anexado ao PF, o membro VPortState deve ser definido como NdisNicSwitchVPortStateDeactivated quando o VPort é criado. O VPort PF é ativado somente depois que uma solicitação de conjunto OID de OID_NIC_SWITCH_VPORT_PARAMETERS é emitida pelos drivers sobrepostos para alterar o VPortState para um estado ativado.

    Quando o VPort não padrão é ativado, o driver de miniporto PF pode alocar recursos para o VPort, como memória compartilhada alocada por meio de NdisAllocateSharedMemory. O driver de miniporto PF pode alocar recursos para VPort a qualquer momento depois de ser ativado até que o driver exclua o VPort por meio 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 sempre deve 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 miniporto PF poderá 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 que o VPort é excluído por meio de uma solicitação de conjunto 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 de transmissão ou recebimento pendentes para pacotes no VPort.

Depois que o driver de miniporto PF recebe a solicitação de conjunto OID de OID_NIC_SWITCH_VPORT_PARAMETERS, o driver configura o hardware com os parâmetros de configuração. O driver só pode alterar esses parâmetros de configuração identificados por sinalizadores NDIS_NIC_SWITCH_VPORT_PARAMETERS_Xxx_CHANGED no membro Flags da estrutura NDIS_NIC_SWITCH_VPORT_PARAMETERS .