Udostępnij przez


Uzyskiwanie dostępu do informacji o odciążeniu protokołu TCP/IP NET_BUFFER_LIST

Wersje NDIS 6.0 i nowsze udostępniają dane odciążania protokołu TCP/IP (OOB) w składowej NetBufferListInfo struktury NET_BUFFER_LIST, która określa połączoną listę struktur NET_BUFFER. Członek NetBufferListInfo jest tablicą wartości, które zawierają informacje wspólne dla wszystkich struktur NET_BUFFER na liście.

Użyj następujących identyfikatorów z makrem NET_BUFFER_LIST_INFO, aby ustawić i uzyskać dane wyładowania OOB protokołu TCP/IP w tablicy NetBufferListInfo:

TcpIpChecksumNetBufferListInfo
Określa informacje dotyczące sumy kontrolnej, które są używane do odciążenia zadań sumy kontrolnej z protokołu TCP/IP na sterownik miniportu. Po określeniu tcpIpChecksumNetBufferListInfoNET_BUFFER_LIST_INFO zwraca strukturę NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO (a nie wskaźnik do struktury). Ta struktura zawiera unię, która umożliwia dostęp do informacji o sumie kontrolnej jako pojedynczej wartości PVOID lub jako pola bitowego.

IPsecOffloadV1NetBufferListInfo
Określa informacje o odciążeniu zabezpieczeń protokołu internetowego (IPsec), które są używane do przekazywania zadań IPsec z protokołu TCP/IP do sterownika miniportu. Po określeniu IPsecOffloadV1NetBufferListInfo NET_BUFFER_LIST_INFO zwraca strukturę NDIS_IPSEC_OFFLOAD_V1_NET_BUFFER_LIST_INFO.

TcpLargeSendNetBufferListInfo
Określa informacje używane do odciążania segmentacji dużego pakietu TCP z protokołu TCP/IP do sterownika miniportu. Po określeniu TcpLargeSendNetBufferListInfoNET_BUFFER_LIST_INFO zwraca strukturę NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO (a nie wskaźnik do struktury). Ta struktura zawiera unię, która umożliwia uzyskiwanie dostępu do informacji jako pojedynczą wartość PVOID lub jako pola bitowe.

ieee8021QNetBufferListInfo
Określa informacje o pakiecie 802.1Q. Po określeniu Ieee8021QNetBufferListInfo, NET_BUFFER_LIST_INFO zwraca członka wartości struktury NDIS_NET_BUFFER_LIST_8021Q_INFO. Ta struktura może określać priorytet 802.1p i informacje o identyfikatorze wirtualnej sieci LAN (VLAN). Informacje o priorytetach 802.1p są używane do ustanawiania priorytetu pakietów w sieciach mediów współdzielonych 802.

Jeśli sterownik miniportu zgłasza obsługę hermetyzacji NDIS_ENCAPSULATION_IEEE_802_3_P_AND_Q_IN_OOB, musi wstawić informacje Ieee8021QNetBufferListInfo do pakietów dużego odciążania w wersji 1 (LSOV1) i pakietów dużego odciążania Ethernet w wersji 2 (LSOV2).

TcpOffloadBytesTransferred
Określa liczbę bajtów danych, które zostały przeniesione w operacji odciążania TCP przy wysyłaniu, odbieraniu lub rozłączaniu.

TcpReceiveNoPush
Określa wartość logiczną, która reprezentuje tryb wypychania dla żądania odbierania w trybie odciążania TCP chimney. Jeśli true, żądanie odbierania jest w trybie nie wypychanym. W przeciwnym razie żądanie odbierania jest w trybie push.

W przypadku typów odciążania LSOV1, LSOV2, sum kontrolnych i IPsec, sterownik miniportu wykonuje odciążanie zadania w oparciu o typ danych OOB i możliwości odciążenia, które zgłosił. Jeśli na przykład sterownik protokołu wymaga usług LSOV1 dla pakietu IPv4, każde żądanie wysyłania, które sterownik protokołu dostarcza, zawiera informacje z członka LsoV1Transmit w danych OOB NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO. Należy pamiętać, że sterownik protokołu musi sprawdzić, czy sterownik miniportu obsługuje protokół IPv4 z określonym typem hermetyzacji przed wysłaniem żądania.

Struktura NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO zawiera maksymalny rozmiar segmentu (MSS). Element członkowski TcpHeaderOffset określa lokalizację nagłówka TCP, tak aby sterownik miniportu nie musiał analizować nagłówków IP, opcji IP ani nagłówków rozszerzenia IP.

Sterownik miniportu NDIS 6.0 lub nowszy, który obsługuje LSOV2 i LSOV1, musi sprawdzić typ elementu członkowskiego NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO, aby określić, czy stos sterowników używa LSOV2 lub LSOV1 i musi wykonać odpowiednie odciążenie.

W przypadku LSOv1, zanim sterownik miniportu zakończy proces wysyłania dużego pakietu TCP, który został podzielony na mniejsze pakiety za pomocą LSO, sterownik zapisuje liczbę bajtów ładunku TCP wysłanych w podzielonych pakietach w elemencie członkowskim TcpPayload struktury NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO.

Jeśli sterownik miniportu określa flagę NDIS_ENCAPSULATION_IEEE_802_3_P_AND_Q w swoich możliwościach, sterownik może wykonywać usługi odciążania zadań dla struktur NET_BUFFER_LIST zawierających nagłówek sieci VLAN w danych buforu. W przypadku danych odebranych ta flaga wskazuje, że sterownik miniportu obliczy sumę kontrolną odbioru i umieści nagłówek VLAN w pakiecie Ethernet.

Jeśli sterownik miniportu określa flagę NDIS_ENCAPSULATION_IEEE_802_3_P_AND_Q_IN_OOB w swoich możliwościach, sterownik może przeprowadzić offload dla struktury NET_BUFFER_LIST zawierającej nagłówek VLAN w Ieee8021QnetBufferListInfo danych OOB. W przypadku odciążania sumy kontrolnej przy odbiorze, miniport wstawia nagłówek VLAN do Ieee8021QnetBufferListInfo danych OOB.