Determinando as funcionalidades do SR-IOV

Este tópico descreve como o NDIS e os drivers overlying determinam os recursos de SR-IOV (virtualização de E/S de raiz única) de um adaptador de rede. Este tópico inclui as informações a seguir:

Relatando recursos SR-IOV durante MiniportInitializeEx

Consultando recursos SR-IOV por drivers em excesso

Relatando recursos SR-IOV durante MiniportInitializeEx

Quando o NDIS chama a função MiniportInitializeEx do driver de miniport, o driver fornece os seguintes recursos SR-IOV:

  • O conjunto completo de recursos de hardware SR-IOV aos quais o adaptador de rede pode dar suporte.

  • Os recursos SR-IOV que estão atualmente habilitados no adaptador de rede.

  • Se o driver de miniporta está gerenciando a PF (Função Física) PCI Express (PCIe) ou a VF (Função Virtual) no adaptador de rede.

O driver de miniporta relata as funcionalidades de hardware SR-IOV do adaptador de rede subjacente por meio de uma estrutura NDIS_SRIOV_CAPABILITIES inicializada da seguinte maneira:

  1. O driver de miniporta inicializa o membro Header . O driver define o membro Type de Header como NDIS_OBJECT_TYPE_DEFAULT.

    A partir do NDIS 6.30, o driver de miniporto define o membro Revision de Header como NDIS_SRIOV_CAPABILITIES _REVISION_1 e o membro Size como NDIS_SIZEOF_SRIOV_CAPABILITIES_REVISION_1.

  2. O driver de miniporta define os sinalizadores apropriados no membro SriovCapabilities para relatar as funcionalidades sr-IOV.

    Se o adaptador de rede der suporte a SR-IOV, o driver de miniporto para a função física PCI Express (PCIe) do adaptador deverá definir os seguintes sinalizadores:

    • NDIS_SRIOV_CAPS_SRIOV_SUPPORTED

    • NDIS_SRIOV_CAPS_PF_MINIPORT

    Observação

     O driver de miniporta para uma função virtual PCIe (VF) do adaptador de rede deve definir o sinalizador NDIS_SRIOV_CAPS_VF_MINIPORT e o sinalizador NDIS_SRIOV_CAPS_SRIOV_SUPPORTED.  

Quando o NDIS chama a função MiniportInitializeEx do driver de miniport, o driver registra os recursos SR-IOV do adaptador de rede seguindo estas etapas:

  1. O driver de miniporta inicializa uma estrutura NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES .

    O driver de miniporta define o membro HardwareSriovCapabilities como um ponteiro para a estrutura de NDIS_SRIOV_CAPABILITIES inicializada anteriormente.

    Se a configuração do Registro do *SRIOV INF palavra-chave tiver um valor igual a um, os recursos SR-IOV estarão habilitados no adaptador de rede no momento. O driver de miniporta define os membros CurrentSriovCapabilities como um ponteiro para o mesmo NDIS_SRIOV_CAPABILITIES estrutura.

    Se a configuração do Registro para o *SRIOV INF palavra-chave tiver um valor igual a zero, os recursos SR-IOV estarão desabilitados no adaptador de rede no momento. O driver de miniporta deve definir o membro CurrentSriovCapabilities como NULL.

    Para obter mais informações sobre o 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 miniport.

Consultando recursos SR-IOV por drivers em excesso

O NDIS passa os recursos sr-IOV atualmente habilitados do adaptador de rede para drivers excessivamente vinculados ao adaptador de rede da seguinte maneira:

  • Quando o NDIS chama uma função FilterAttach de um driver de filtro sobressalente, o NDIS passa os recursos SR-IOV do adaptador de rede por meio do parâmetro AttachParameters . Esse parâmetro contém um ponteiro para uma estrutura NDIS_FILTER_ATTACH_PARAMETERS . O membro SriovCapabilities dessa estrutura contém um ponteiro para uma estrutura NDIS_SRIOV_CAPABILITIES .

  • Quando o NDIS chama a função ProtocolBindAdapterEx de um driver de protocolo sobreposto, o NDIS passa as funcionalidades SR-IOV do adaptador de rede por meio do parâmetro BindParameters . Esse parâmetro contém um ponteiro para uma estrutura NDIS_FILTER_ATTACH_PARAMETERS . O membro SriovCapabilities dessa estrutura contém um ponteiro para uma estrutura NDIS_SRIOV_CAPABILITIES .

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