Partilhar via


Fluxo de pacotes através de uma porta virtual

O comutador NIC padrão é um componente de um adaptador de rede que suporta a interface de virtualização de E/S de raiz única (SR-IOV). O switch liga sempre a porta virtual predefinida (VPort) à Função Física (PF) PCI Express (PCIe). O switch pode anexar um ou mais VPorts não padrão ao PF. Para obter mais informações, consulte Criando uma porta virtual.

Os seguintes pontos aplicam-se aos pacotes enviados ou recebidos em um VPort anexado ao PF:

  • Os pacotes enviados ou recebidos no VPort padrão são especificados com um valor de identificação do VPort de DEFAULT_VPORT_ID.

    Os pacotes enviados ou recebidos por VPorts não predeterminados são especificados com o identificador do VPort que foi retornado quando o VPort foi criado através de uma solicitação de método OID de OID_NIC_SWITCH_CREATE_VPORT. Quando o driver manipula esta solicitação OID, ele obtém o identificador VPort do membro VPortId da estrutura NDIS_NIC_SWITCH_VPORT_PARAMETERS associada à solicitação OID.

    Observação Quando um VPort é excluído, é possível que o driver de miniporta receba uma NBL que contém um valor de VPortId inválido. Se isso acontecer, a miniporta deve ignorar o ID VPort inválido e usar DEFAULT_VPORT_ID ao invés disso. O VPortId é encontrado na seção NetBufferListFilteringInfo dos dados OOB da NBL e é recuperado através da macro NET_BUFFER_LIST_RECEIVE_FILTER_VPORT_ID.

  • O driver de miniporta PF chama NdisMIndicateReceiveNetBufferLists para indicar pacotes recebidos de um VPort. Antes que o driver de miniporta PF chame NdisMIndicateReceiveNetBufferLists, ele deve definir o identificador VPort nos dados fora de banda (OOB) na estrutura NET_BUFFER_LIST para o pacote. O driver faz isso usando a macro NET_BUFFER_LIST_RECEIVE_FILTER_VPORT_ID.

  • A pilha de virtualização chama NdisSendNetBufferLists para transmitir pacotes para um VPort. Antes de a pilha de virtualização chamar NdisSendNetBufferLists, ela define o identificador VPort nos dados OOB na estrutura NET_BUFFER_LIST para o pacote.

    O driver de miniporta obtém o identificador VPort usando a macro NET_BUFFER_LIST_RECEIVE_FILTER_VPORT_ID.

    O driver de miniporta deve enfileirar o pacote de transmissão na fila de transmissão de hardware do VPort especificado.

Nota O driver de miniporta para a função virtual PCIe (VF) não define ou consulta o identificador VPort nos dados OOB da estrutura NET_BUFFER_LIST para um pacote. Quando o driver de miniporta VF envia um pacote, ele enfileira o pacote na fila de transmissão de hardware para o único VPort não padrão que está conectado ao VF.