Manipulando a solicitação de OID_NIC_SWITCH_CREATE_SWITCH

O NDIS emite uma solicitação de método OID (identificador de objeto) de OID_NIC_SWITCH_CREATE_SWITCH para fazer o seguinte:

  • Habilite um comutador NIC em um adaptador de rede que foi criado estaticamente pelo driver de miniporto para a função física PCI Express (PCIe) (PF). O PF é um componente de hardware do adaptador de rede que dá suporte à SR-IOV (virtualização de E/S de raiz única).

    Uma opção NIC é criada estaticamente pelo driver de miniporto PF de dentro do contexto para a chamada para MiniportInitializeEx. O driver aloca os recursos e cria a opção com base nos parâmetros lidos nas configurações do Registro.

  • Crie dinamicamente um comutador NIC em um adaptador de rede.

    Se o driver de miniporto PF não der suporte à criação de comutador NIC estático, o driver de miniporta alocará os recursos e criará a opção com base nos parâmetros especificados na solicitação OID.

O driver de miniporto PF anuncia seu suporte à interface SR-IOV quando o NDIS chama a função MiniportInitializeEx do driver. Se o driver de miniporto PF der suporte a SR-IOV, o NDIS lerá a configuração de comutador NIC do registro. Antes que o NDIS emita uma solicitação de método OID de OID_NIC_SWITCH_CREATE_SWITCH para o driver de miniporto PF, o NDIS formata uma estrutura NDIS_NIC_SWITCH_PARAMETERS com as informações do Registro da seguinte maneira:

  • O NDIS define o membro SwitchType como o tipo da opção NIC.

    Começando com Windows Server 2012, o Windows dá suporte apenas a um tipo de comutador NdisNicSwitchTypeExternal. Um comutador externo especifica que as portas virtuais (VPorts) conectadas a esse tipo de comutador podem acessar a rede externa por meio da porta física no adaptador de rede.

    Para obter mais informações sobre a opção NIC, consulte Arquitetura SR-IOV.

  • O NDIS define o membro SwitchId como um valor de identificador para a opção NIC. O identificador de comutador é um inteiro entre zero e o número de opções compatíveis com o adaptador de rede. Um valor NDIS_DEFAULT_SWITCH_ID indica a opção NIC padrão.

    Nota Começando com Windows Server 2012, a interface SR-IOV dá suporte apenas ao comutador NIC padrão no adaptador de rede.

  • O NDIS define o membro NumVFs que especifica o número de VFs (PcIe Virtual Function) que podem ser alocados na opção NIC.

Quando ele recebe a solicitação de método OID de OID_NIC_SWITCH_CREATE_SWITCH, o driver de miniporto PF deve fazer o seguinte:

  1. Se o driver de miniporto PF der suporte à criação e à configuração do comutador estático, ele criará a opção NIC quando o NDIS chamar MiniportInitializeEx. Quando o driver lida com essa solicitação OID, ele deve verificar os parâmetros de configuração na estrutura NDIS_NIC_SWITCH_PARAMETERS . Os parâmetros devem ser os mesmos usados pelo driver para criar a opção durante a chamada para MiniportInitializeEx. Se isso não for verdadeiro, o driver deverá falhar na solicitação OID.

    Para obter mais informações, consulte Criação estática de um comutador NIC.

  2. Se o driver de miniporto PF der suporte à criação e à configuração do comutador dinâmico, o driver deverá validar os valores de configuração da estrutura NDIS_NIC_SWITCH_PARAMETERS e criar a opção NIC com base nesses valores.

    Para obter mais informações, consulte Criação dinâmica de um comutador NIC.

  3. O driver de miniporto PF deve alocar os recursos de hardware e software necessários para o VPort padrão na opção NIC.

    Nota O VPort padrão é sempre criado por meio de uma solicitação OID de OID_NIC_SWITCH_CREATE_SWITCH e excluído por meio de uma solicitação OID de OID_NIC_SWITCH_DELETE_SWITCH. Solicitações OID de OID_NIC_SWITCH_CREATE_VPORT e OID_NIC_SWITCH_DELETE_VPORT são usadas para a criação e exclusão de VPorts não padrão na opção NIC.

  4. O driver de miniporto PF que dá suporte à criação e à configuração do comutador dinâmico deve habilitar a virtualização SR-IOV no comutador chamando NdisMEnableVirtualization. Essa chamada configura o membro NumVFs e o bit Habilitar VF na estrutura de Funcionalidade Estendida SR-IOV do espaço de configuração PCI Express (PCIe) do adaptador.

    Para obter mais informações sobre o espaço de configuração SR-IOV, consulte a especificação PCI-SIG Single Root I/O Virtualization and Sharing 1.1 .

    Nota Se o driver de miniporto PF der suporte à criação de comutador estático, ele habilitará a virtualização SR-IOV depois de criar o comutador quando MiniportInitializeEx for chamado.

Se o driver de miniporto PF concluir com êxito a solicitação de método OID de OID_NIC_SWITCH_CREATE_SWITCH, ele permitirá que o seguinte ocorra:

  • Os VFs podem ser alocados na opção NIC por meio de solicitações de método OID de OID_NIC_SWITCH_ALLOCATE_VF.

  • VPorts não padrão podem ser criados na opção NIC por meio de solicitações de método OID de OID_NIC_SWITCH_CREATE_VPORT.

    O driver de miniporto é responsável por gerenciar seu pool de VPorts não padrão. O driver especifica o número de VPorts não padrão em seu pool por meio do membro NumVPorts da estrutura NDIS_NIC_SWITCH_INFO . O driver retorna essa estrutura por meio de uma solicitação de consulta OID de OID_NIC_SWITCH_ENUM_SWITCHES.

    Nota O adaptador de rede sempre deve criar um VPort padrão de seu pool para o PF.