Fluxo de pacotes em uma porta virtual

O comutador NIC padrão é um componente de um adaptador de rede que dá suporte à interface SR-IOV (virtualização de E/S de raiz única). O comutador sempre anexa a porta virtual padrão (VPort) à PF (Função Física) PCI Express (PCIe). A opção 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 se aplicam a pacotes que são enviados ou recebidos em um VPort anexado ao PF:

  • Os pacotes enviados ou recebidos pelo VPort padrão são especificados com um valor de identificador VPort de DEFAULT_VPORT_ID.

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

    Nota Quando um VPort é excluído, é possível que o driver de miniporto receba um NBL que contenha um valor VPortId inválido. Se isso acontecer, o miniporto deverá ignorar a ID de VPort inválida e usar DEFAULT_VPORT_ID . O VPortId é encontrado na parte NetBufferListFilteringInfo dos dados OOB da NBL e é recuperado usando a macro NET_BUFFER_LIST_RECEIVE_FILTER_VPORT_ID .

  • O driver de miniporto PF chama NdisMIndicateReceiveNetBufferLists para indicar os pacotes recebidos de uma VPort. Antes que o driver de miniporto PF chame NdisMIndicateReceiveNetBufferLists, ele deve definir o identificador VPort nos dados OOB (fora de banda) 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 que a pilha de virtualização chame NdisSendNetBufferLists, ela define o identificador VPort nos dados OOB na estrutura NET_BUFFER_LIST do 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 miniporto VF envia um pacote, ele enfileira o pacote na fila de transmissão de hardware para o VPort não padrão único anexado ao VF.