OID_SRIOV_WRITE_VF_CONFIG_SPACE
Um driver sobreposto emite uma solicitação de conjunto de OID (identificador de objeto) de OID_SRIOV_WRITE_VF_CONFIG_SPACE para gravar dados no espaço de configuração do PCI Express (PCIe) para uma VF (Função Virtual PCIe) especificada no adaptador de rede.
Drivers sobrepostos emitem essa solicitação de conjunto de OID para o driver de miniporto para a PF (Função Física PCIe) do adaptador de rede. Essa solicitação de método OID é necessária para drivers de miniporto PF que dão suporte à interface sr-IOV (virtualização de E/S) raiz única.
O membro InformationBuffer da estrutura NDIS_OID_REQUEST contém um ponteiro para um buffer alocado pelo chamador. Esse buffer é formatado para conter o seguinte:
Uma estrutura NDIS_SRIOV_WRITE_VF_CONFIG_SPACE_PARAMETERS que contém os parâmetros para uma operação de gravação do espaço de configuração PCI de um VF.
Espaço de buffer adicional que contém os dados a serem gravados no espaço de configuração PCI.
Comentários
O driver de miniporto VF é executado no sistema operacional convidado de uma partição filho do Hyper-V. Por isso, o driver de miniporto VF não pode acessar diretamente recursos de hardware, como o espaço de configuração PCI do VF. Somente o driver de miniporto PF, que é executado no sistema operacional de gerenciamento de uma partição pai do Hyper-V, pode acessar o espaço de configuração PCI para uma VF.
O driver sobreposto, como a pilha de virtualização, emite a solicitação de conjunto de OID de OID_SRIOV_WRITE_VF_CONFIG_SPACE quando o driver de miniporto VF chama NdisMSetBusData para gravar em seu espaço de configuração PCI.
Quando ele lida com a solicitação de método OID de OID_SRIOV_WRITE_VF_CONFIG_SPACE, o driver de miniporto PF deve seguir estas diretrizes:
O driver de miniporto PF deve verificar se o VF, especificado pelo membro VFId da estrutura NDIS_SRIOV_WRITE_VF_CONFIG_SPACE_PARAMETERS , tem recursos que foram alocados anteriormente. O driver de miniporto PF aloca recursos para um VF por meio de uma solicitação de método OID de OID_NIC_SWITCH_ALLOCATE_VF.
Se os recursos do VF especificado não tiverem sido alocados, o driver deverá falhar na solicitação OID.
O driver de miniporto PF chama NdisMSetVirtualFunctionBusData para gravar no espaço de configuração PCI solicitado. No entanto, o driver de miniporto PF também pode retornar dados de espaço de configuração PCI para o VF que o driver armazena em cache de operações de leitura ou gravação anteriores do espaço de configuração PCI.
Nota Se um IHV (fornecedor independente de hardware) fornecer um VBD (driver de barramento virtual) como parte de seu pacote de driver SR-IOV, seu driver de miniporto PF não deverá chamar NdisMSetVirtualFunctionBusData. Em vez disso, o driver deve fazer a interface com o VBD por meio de um canal de comunicação privado e solicitar que o VBD chame SetVirtualFunctionData. Essa função é exposta da interface GUID_VPCI_INTERFACE_STANDARD compatível com o driver de barramento VPCI (PCI virtual) subjacente.
Se o driver de miniporto PF puder concluir com êxito a solicitação OID, o driver deverá copiar os dados de espaço de configuração PCI solicitados para o buffer referenciado pelo membro InformationBuffer da estrutura de NDIS_OID_REQUEST . O driver copia os dados para o buffer no deslocamento especificado pelo membro BufferOffset da estrutura NDIS_SRIOV_READ_VF_CONFIG_SPACE_PARAMETERS .
Para obter mais informações, consulte Definindo os dados de configuração de PCI de uma função virtual.
Retornar códigos de status
O driver de miniporto PF retorna um dos seguintes códigos de status para a solicitação de conjunto de OID de OID_SRIOV_WRITE_VF_CONFIG_SPACE.
Código de status | Descrição |
---|---|
NDIS_STATUS_SUCCESS |
A solicitação OID foi concluída com êxito. |
NDIS_STATUS_NOT_SUPPORTED |
O driver de miniporto PF não dá suporte à interface sr-IOV (virtualização de E/S raiz) ou não está habilitado para usar a interface. |
NDIS_STATUS_INVALID_PARAMETER |
Um ou mais dos membros da estrutura NDIS_SRIOV_WRITE_VF_CONFIG_SPACE_PARAMETERS têm valores inválidos. |
NDIS_STATUS_INVALID_LENGTH |
O buffer de informações era muito curto. O NDIS define os DADOS. SET_INFORMATION. Membro BytesNeeded na estrutura NDIS_OID_REQUEST para o tamanho mínimo do buffer necessário. |
NDIS_STATUS_FAILURE |
A solicitação falhou por outros motivos. |
Requisitos
Versão |
Com suporte no NDIS 6.30 e posterior. |
Cabeçalho |
Ntddndis.h (inclua Ndis.h) |
Confira também
NDIS_SRIOV_WRITE_VF_CONFIG_SPACE_PARAMETERS
NdisMSetVirtualFunctionBusData