Condividi tramite


Accesso alle informazioni di offload TCP/IP NET_BUFFER_LIST

NDIS versione 6.0 e versioni successive forniscono dati TCP/IP offload out-of-band (OOB) nel membro NetBufferListInfo della struttura NET_BUFFER_LIST , che specifica un elenco collegato di strutture NET_BUFFER . Il membro NetBufferListInfo è una matrice di valori che contengono informazioni comuni a tutte le strutture NET_BUFFER nell'elenco.

Usare gli identificatori seguenti con la macro NET_BUFFER_LIST_INFO per impostare e ottenere i dati OOB TCP/IP offload nella matrice NetBufferListInfo :

TcpIpChecksumNetBufferListInfo
Specifica le informazioni di checksum usate per l'offload delle attività checksum dal protocollo TCP/IP a un driver miniport. Quando si specifica TcpIpChecksumNetBufferListInfo, NET_BUFFER_LIST_INFO restituisce una struttura NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO (non un puntatore alla struttura). Questa struttura contiene un'unione che consente l'accesso alle informazioni checksum come singolo valore PVOID o come campi bit.

IPsecOffloadV1NetBufferListInfo
Specifica le informazioni di offload del protocollo Internet (IPsec) usate per l'offload delle attività IPsec dal protocollo TCP/IP a un driver miniport. Quando si specifica IPsecOffloadV1NetBufferListInfo, NET_BUFFER_LIST_INFO restituisce una struttura NDIS_IPSEC_OFFLOAD_V1_NET_BUFFER_LIST_INFO .

TcpLargeSendNetBufferListInfo
Specifica le informazioni usate per il offload della segmentazione di un pacchetto TCP di grandi dimensioni dal protocollo TCP/IP a un driver miniport. Quando si specifica TcpLargeSendNetBufferListInfo, NET_BUFFER_LIST_INFO restituisce una struttura NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO (non un puntatore alla struttura). Questa struttura contiene un'unione che consente l'accesso alle informazioni come singolo valore PVOID o come campi bit.

Ieee8021QNetBufferListInfo
Specifica le informazioni 802.1Q su un pacchetto. Quando si specifica Ieee8021QNetBufferListInfo, NET_BUFFER_LIST_INFO restituisce il membro Value di una struttura NDIS_NET_BUFFER_LIST_8021Q_INFO . Questa struttura può specificare le informazioni sull'identificatore VLAN (802.1p priority and virtual LAN). Le informazioni sulla priorità 802.1p vengono usate per stabilire la priorità dei pacchetti nelle reti shared-media 802.

Se un driver miniport segnala il supporto per l'incapsulamento NDIS_ENCAPSULATION_IEEE_802_3_P_AND_Q_IN_OOB, deve inserire i pacchetti Ethernet Ieee8021QNetBufferListInfo in pacchetti Ethernet di invio di grandi dimensioni versione 1 (LSOV1) e offload di grandi dimensioni (LSOV2).

TcpOffloadBytesTransferred
Specifica il numero di byte di dati trasferiti in un'operazione di offload del camino TCP, ricezione o disconnessione.

TcpReceiveNoPush
Specifica un valore booleano che rappresenta la modalità push di una richiesta di ricezione di offload del camino TCP. Se TRUE, la richiesta di ricezione è in modalità non push. In caso contrario, la richiesta di ricezione è in modalità push.

Per i tipi di offload LSOV1, LSOV2, checksum e IPsec, un driver miniport esegue l'offload delle attività in base al tipo di dati OOB e alle funzionalità di offload segnalate. Ad esempio, se un driver di protocollo richiede servizi LSOV1 per un pacchetto IPv4, ogni richiesta di invio fornita dal driver del protocollo include le informazioni del membro LsoV1Transmit nei dati OOB NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO. Si noti che il driver del protocollo deve verificare che il driver miniport supporti IPv4, con il tipo di incapsulamento specificato, prima di effettuare la richiesta di invio.

La struttura NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO contiene la dimensione massima del segmento (MSS). Il membro TcpHeaderOffset specifica la posizione dell'intestazione TCP in modo che il driver miniport non deve analizzare intestazioni IP, opzioni IP o intestazioni di estensione IP.

Un driver miniport NDIS 6.0 e versioni successive che supporta LSOV2 e LSOV1 deve controllare il membro Type di NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO per determinare se lo stack di driver usa LSOV2 o LSOV1 e deve eseguire il offload appropriato.

Per LSOv1, prima che un driver miniport completi l'invio di un pacchetto TCP di grandi dimensioni che ha segmentato in pacchetti più piccoli usando LSO, il driver scrive il numero di byte di payload TCP inviati nei pacchetti segmentati nel membro TcpPayload di NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO.

Se un driver miniport specifica il flag di NDIS_ENCAPSULATION_IEEE_802_3_P_AND_Q nelle relative funzionalità, il driver può eseguire servizi di offload attività per le strutture NET_BUFFER_LIST che contengono l'intestazione VLAN nei dati del buffer. Nel caso dei dati ricevuti, questo flag indica che il driver miniport eseguirà il calcolo del checksum di ricezione e inserisce l'intestazione VLAN nel pacchetto Ethernet.

Se un driver miniport specifica il flag di NDIS_ENCAPSULATION_IEEE_802_3_P_AND_Q_IN_OOB nelle relative funzionalità, il driver può eseguire offload in NET_BUFFER_LIST strutture che contengono l'intestazione VLAN nei dati Ieee8021QnetBufferListInfo OOB. Nel caso di offload del checksum di ricezione, il miniport inserisce l'intestazione VLAN nei dati Ieee8021QnetBufferListInfo OOB.