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:
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.
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:
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.
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.