Flusso di pacchetti su una porta virtuale
Il commutatore NIC predefinito è un componente di una scheda di rete che supporta la singola interfaccia di virtualizzazione I/O radice (SR-IOV). Il commutatore collega sempre la porta virtuale predefinita (VPort) alla funzione fisica PCI Express (PCIe). L'opzione può collegare uno o più VPort non predefiniti al file PF. Per altre informazioni, vedere Creazione di una porta virtuale.
I punti seguenti si applicano ai pacchetti inviati o ricevuti in un VPort collegato al file PF:
I pacchetti inviati o ricevuti tramite il VPort predefinito vengono specificati con un valore di identificatore VPort di DEFAULT_VPORT_ID.
I pacchetti inviati o ricevuti su VPort non predefiniti vengono specificati con l'identificatore VPort restituito quando il VPort è stato creato tramite una richiesta di metodo OID di OID_NIC_SWITCH_CREATE_VPORT. Quando il driver gestisce questa richiesta OID, ottiene l'identificatore VPort dal membro VPortId della struttura NDIS_NIC_SWITCH_VPORT_PARAMETERS associata alla richiesta OID.
Nota Quando viene eliminato un VPort, è possibile che il driver miniport riceva un NBL contenente un valore VPortId non valido. In questo caso, il miniport deve ignorare l'ID VPort non valido e usare invece DEFAULT_VPORT_ID . VPortId si trova nella parte NetBufferListFilteringInfo dei dati OOB di NBL e viene recuperata usando la macro NET_BUFFER_LIST_RECEIVE_FILTER_VPORT_ID.
Il driver miniport PF chiama NdisMIndicateReceiveNetBufferLists per indicare i pacchetti ricevuti da un VPort. Prima che il driver PF miniport chiami NdisMIndicateReceiveNetBufferLists, deve impostare l'identificatore VPort nei dati fuori banda (OOB) nella struttura NET_BUFFER_LIST per il pacchetto. Il driver esegue questa operazione utilizzando la macro NET_BUFFER_LIST_RECEIVE_FILTER_VPORT_ID .
Lo stack di virtualizzazione chiama NdisSendNetBufferLists per trasmettere pacchetti a un VPort. Prima che lo stack di virtualizzazione chiami NdisSendNetBufferLists, imposta l'identificatore VPort nei dati OOB nella struttura NET_BUFFER_LIST per il pacchetto.
Il driver miniport ottiene l'identificatore VPort usando la macro NET_BUFFER_LIST_RECEIVE_FILTER_VPORT_ID .
Il driver miniport deve accodamento del pacchetto di trasmissione nella coda di trasmissione hardware del VPort specificato.
Nota Il driver miniport per la funzione virtuale PCIe (VF) non imposta o esegue una query sull'identificatore VPort nei dati OOB della struttura NET_BUFFER_LIST per un pacchetto. Quando il driver miniport VF invia un pacchetto, accoda il pacchetto nella coda di trasmissione hardware per il singolo VPort non predefinito collegato alla VF.