Mengakses Informasi NET_BUFFER_LIST Offload TCP/IP

NDIS versi 6.0 dan yang lebih baru menyediakan data out-of-band (OOB) offload TCP/IP di anggota NetBufferListInfo dari struktur NET_BUFFER_LIST , yang menentukan daftar tertaut struktur NET_BUFFER . Anggota NetBufferListInfo adalah array nilai yang berisi informasi yang umum untuk semua struktur NET_BUFFER dalam daftar.

Gunakan pengidentifikasi berikut dengan makro NET_BUFFER_LIST_INFO untuk mengatur dan mendapatkan data OOB offload TCP/IP di array NetBufferListInfo :

TcpIpChecksumNetBufferListInfo
Menentukan informasi checksum yang digunakan dalam membongkar tugas checksum dari protokol TCP/IP ke driver miniport. Saat Anda menentukan TcpIpChecksumNetBufferListInfo, NET_BUFFER_LIST_INFO mengembalikan struktur NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO (bukan penunjuk ke struktur). Struktur ini berisi penyatuan yang memungkinkan informasi checksum diakses sebagai nilai PVOID tunggal atau sebagai bidang bit.

IPsecOffloadV1NetBufferListInfo
Menentukan informasi offload keamanan protokol Internet (IPsec) yang digunakan dalam membongkar tugas IPsec dari protokol TCP/IP ke driver miniport. Saat Anda menentukan IPsecOffloadV1NetBufferListInfo, NET_BUFFER_LIST_INFO mengembalikan struktur NDIS_IPSEC_OFFLOAD_V1_NET_BUFFER_LIST_INFO .

TcpLargeSendNetBufferListInfo
Menentukan informasi yang digunakan dalam membongkar segmentasi paket TCP besar dari protokol TCP/IP ke driver miniport. Saat Anda menentukan TcpLargeSendNetBufferListInfo, NET_BUFFER_LIST_INFO mengembalikan struktur NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO (bukan penunjuk ke struktur). Struktur ini berisi penyatuan yang memungkinkan informasi diakses sebagai nilai PVOID tunggal atau sebagai bidang bit.

Ieee8021QNetBufferListInfo
Menentukan informasi 802.1Q tentang paket. Saat Anda menentukan Ieee8021QNetBufferListInfo, NET_BUFFER_LIST_INFO mengembalikan anggota Nilai dari struktur NDIS_NET_BUFFER_LIST_8021Q_INFO . Struktur ini dapat menentukan prioritas 802.1p dan informasi pengidentifikasi LAN virtual (VLAN). Informasi prioritas 802.1p digunakan untuk menetapkan prioritas paket di jaringan 802 media bersama.

Jika driver miniport melaporkan dukungan untuk enkapulasi NDIS_ENCAPSULATION_IEEE_802_3_P_AND_Q_IN_OOB, driver miniport harus memasukkan data Ieee8021QNetBufferListInfo ke dalam paket Ethernet pengiriman offload besar versi 1 (LSOV1) dan offload pengiriman besar versi 2 (LSOV2).

TcpOffloadBytesTransferred
Menentukan jumlah byte data yang ditransfer dalam operasi pengiriman, penerimaan, atau pemutusan sambungan cerobong asap TCP.

TcpReceiveNoPush
Menentukan nilai Boolean yang mewakili mode pendorongan offload cerobong asap TCP menerima permintaan. Jika TRUE, permintaan terima berada dalam mode non-push. Jika tidak, permintaan terima dalam mode pendorongan.

Untuk jenis offload LSOV1, LSOV2, checksum, dan IPsec, driver miniport melakukan offload tugas berdasarkan jenis data OOB dan kemampuan offload yang dilaporkannya. Misalnya, jika driver protokol memerlukan layanan LSOV1 untuk paket IPv4, setiap permintaan pengiriman yang diberikan driver protokol menyertakan informasi dari anggota LsoV1Transmit dalam data OOB NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO . Perhatikan bahwa driver protokol harus memverifikasi bahwa driver miniport mendukung IPv4, dengan jenis enkapulasi yang ditentukan, sebelum membuat permintaan pengiriman.

Struktur NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO berisi ukuran segmen maksimum (MSS). Anggota TcpHeaderOffset menentukan lokasi header TCP sehingga driver miniport tidak perlu mengurai header IP, opsi IP, atau header ekstensi IP.

Driver miniport NDIS 6.0 dan yang lebih baru yang mendukung LSOV2 dan LSOV1 harus memeriksa jenis anggota NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO untuk menentukan apakah tumpukan driver menggunakan LSOV2 atau LSOV1 dan harus melakukan offload yang sesuai.

Untuk LSOv1, sebelum driver miniport menyelesaikan pengiriman paket TCP besar yang telah disegmentasi menjadi paket yang lebih kecil dengan menggunakan LSO, driver menulis jumlah byte payload TCP yang dikirimnya dalam paket tersegmentasi di anggota TcpPayload NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO.

Jika driver miniport menentukan bendera NDIS_ENCAPSULATION_IEEE_802_3_P_AND_Q dalam kemampuannya, driver dapat melakukan layanan offload tugas untuk struktur NET_BUFFER_LIST yang berisi header VLAN dalam data buffer. Dalam kasus data yang diterima, bendera ini menunjukkan bahwa driver miniport akan melakukan perhitungan checksum terima dan meletakkan header VLAN di paket Ethernet.

Jika driver miniport menentukan bendera NDIS_ENCAPSULATION_IEEE_802_3_P_AND_Q_IN_OOB dalam kemampuannya, driver dapat melakukan offload pada struktur NET_BUFFER_LIST yang berisi header VLAN di data OOB Ieee8021QnetBufferListInfo . Dalam kasus offload checksum penerima, miniport menyisipkan header VLAN ke dalam data OOB Ieee8021QnetBufferListInfo .