Partilhar via


Determinando as capacidades do switch NIC

Este tópico descreve como o NDIS e os drivers sobrepostos determinam os recursos do comutador NIC de um adaptador de rede que oferece suporte à virtualização de E/S de raiz única (SR-IOV). Este tópico contém as seguintes informações:

Relatar as capacidades do switch NIC durante MiniportInitializeEx

Consulta de capacidades do switch NIC pelos drivers sobrepostos

Nota Apenas o driver de miniporta para a função física (PF) do PCI Express (PCIe) de um adaptador de rede SR-IOV pode indicar as capacidades do switch NIC. Os controladores de miniporta para funções virtuais PCIe (VFs) não devem indicar as capacidades do comutador NIC do adaptador SR-IOV.

Para obter mais informações sobre comutadores NIC, consulte comutadores NIC.

Reportando capacidades de switch NIC durante MiniportInitializeEx

Quando o NDIS chama a função MiniportInitializeExdo driver de miniporta, o driver fornece as seguintes capacidades de switch NIC:

  • O conjunto completo de recursos de hardware para um switch NIC que o adaptador de rede pode suportar.

    Observação A partir do NDIS 6.30, apenas um comutador NIC é criado no adaptador de rede. Este comutador é conhecido como o comutador NIC padrão .

  • Os recursos do comutador NIC que estão atualmente habilitados no adaptador de rede.

O driver de miniporta relata as capacidades de hardware do switch NIC do adaptador de rede subjacente através de uma estrutura NDIS_NIC_SWITCH_CAPABILITIES que é inicializada da seguinte forma:

  1. O driver de miniporta inicializa o membro do cabeçalho. O driver define o membro Tipo do Cabeçalho como NDIS_OBJECT_TYPE_DEFAULT.

    A partir do NDIS 6.30, o driver de miniporta define o membro Revisão de Cabeçalho como NDIS_NIC_SWITCH_CAPABILITIES_REVISION_2 e o membro Tamanho como NDIS_SIZEOF_NIC_SWITCH_CAPABILITIES_REVISION_2.

  2. O driver de miniporta define os sinalizadores apropriados no membro NicSwitchCapabilities da estrutura NDIS_NIC_SWITCH_CAPABILIDADES para definir as capacidades do switch NIC do adaptador de rede SR-IOV. Por exemplo, o controlador de miniporta define o sinalizador NDIS_NIC_SWITCH_CAPS_PER_VPORT_INTERRUPT_MODERATION_SUPPORTED caso o switch NIC suporte modulação de interrupções em cada porta virtual (VPort) criada no switch.

  3. O driver de miniporta define os outros membros da estrutura de NDIS_NIC_SWITCH_CAPABILITIES para o intervalo de valores para as capacidades de switch NIC do adaptador de rede SR-IOV. Por exemplo, o driver de miniporta define os membros MaxNumVFs e MaxNumVPorts para o número máximo de VFs e VPorts que o adaptador pode suportar.

    Observação Dependendo dos recursos de hardware disponíveis no adaptador de rede, o driver de miniporta pode definir o MaxNumVFs atributo para um valor inferior ao seu *NumVFs palavra-chave. Para obter mais informações sobre essa palavra-chave, consulte Palavras-chave INF padronizadas para SR-IOV.

Quando o NDIS chama a função MiniportInitializeEx do driver de miniporta, o driver regista as capacidades do comutador NIC do adaptador de rede seguindo estas etapas:

  1. O driver de miniporta inicializa uma estrutura NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES.

    O controlador de miniporta define o membro HardwareNicSwitchCapabilities como um ponteiro para uma estrutura NDIS_NIC_SWITCH_CAPABILITIES que foi previamente inicializada.

    Se a configuração do Registro para a palavra-chave *SRIOV INF tiver um valor de um, o adaptador de rede está atualmente habilitado para criação e configuração do comutador NIC. O driver de miniporta define os membros CurrentNicSwitchCapabilities como um ponteiro para a mesma estrutura NDIS_NIC_SWITCH_CAPABILITIES.

    Se a configuração do Registro para a palavra-chave *SRIOV INF tiver um valor zero, o adaptador de rede não está habilitado atualmente para a criação e configuração do switch NIC. O driver de miniporta deve definir o membro CurrentNicSwitchCapabilities como NULL.

    Para obter mais informações sobre a palavra-chave *SRIOV INF, consulte Palavras-chave INF padronizadas para SR-IOV.

  2. O driver chama NdisMSetMiniportAttributes e define o parâmetro MiniportAttributes como um ponteiro para a estrutura NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES .

Para obter mais informações sobre o processo de inicialização do adaptador, consulte inicializando um adaptador de miniporta.

Criando um switch NIC sem SR-IOV

Os controladores de miniportas no NDIS 6.60 e posterior devem aderir aos seguintes requisitos para a coexistência de um switch de NIC e funcionalidades VMQ quando o SR-IOV não está ativado. Quando SR-IOV estiver ativado, o driver de miniporta deve aderir aos requisitos existentes na seção anterior.

  • O driver de miniport anuncia os recursos do switch NIC e VMQ.
  • A NIC pode alternar entre o switch NIC e o modo VMQ sem uma reinicialização da NIC.
    • Quando a NIC começa, ela está pronta para funcionar em qualquer modo (criando um comutador NIC ou criando filas de VMQ).
      • Se um comutador NIC for criado, a miniporta fracassará em qualquer chamada subsequente de alocação de fila VMQ.
      • Se uma fila VMQ for criada primeiro, o driver de miniporta terá êxito na alocação da fila VMQ, mas falhará em qualquer chamada de alocação de switch NIC.
    • Quando o comutador NIC é excluído ou todas as filas VMQ são excluídas, o driver de miniporta retorna ao estado inicial e está pronto para entrar em qualquer um desses modos novamente.

Para anunciar que um switch NIC pode ser criado sem o uso de SR-IOV, o driver de miniporta define a bandeira NDIS_NIC_SWITCH_CAPS_NIC_SWITCH_WITHOUT_IOV_SUPPORTED no membro NicSwitchCapabilities da estrutura NDIS_NIC_SWITCH_CAPABILITIES.

Consultando capacidades do switch NIC por drivers sobrejacentes

O NDIS passa as capacidades de comutador NIC atualmente habilitadas do adaptador de rede para os controladores superiores que se ligam ao adaptador de rede da seguinte maneira:

O NDIS também retorna a estrutura NDIS_NIC_SWITCH_CAPABILITIES quando lida com solicitações de consulta de identificador de objeto (OID) de OID_NIC_SWITCH_HARDWARE_CAPABILITIES e OID_NIC_SWITCH_CURRENT_CAPABILITIES emitidas por drivers de protocolo ou filtro sobrepostos.