OID_TCP_TASK_OFFLOAD
Stos hosta wysyła zapytanie do identyfikatora OID OID_TCP_TASK_OFFLOAD w celu uzyskania możliwości odciążania TCP karty sieciowej sterownika miniportu lub miejsca docelowego odciążania. Po określeniu możliwości odciążania obsługiwane przez kartę sieciową lub docelowy odciążania stos hostów ustawia ten identyfikator OID, aby włączyć co najmniej jedną zgłoszoną funkcję. Stos hosta może również wyłączyć wszystkie możliwości odciążania protokołu TCP lub karty sieciowej, ustawiając OID_TCP_TASK_OFFLOAD. Tylko jeden protokół jednocześnie może włączyć możliwości odciążania PROTOKOŁU TCP dla określonej karty sieciowej.
Wykonywanie zapytań dotyczących możliwości odciążania
Gdy stos hostów wykonuje zapytania OID_TCP_TASK_OFFLOAD, dostarcza InformationBuffer strukturę NDIS_TASK_OFFLOAD_HEADER. Ta struktura określa następujące elementy:
- Wersja odciążania obsługiwana przez stos hosta.
- Format hermetyzacji dla pakietów wysyłania i odbierania przetworzonych przez stos hostów.
- Rozmiar nagłówka hermetyzacji w takich pakietach.
Dzięki tym informacjom sterownik miniportu lub jego karta sieciowa może zlokalizować początek pierwszego nagłówka IP w pakiecie transmisji, który jest wymaganiem wstępnym do wykonania zadania odciążania. Element docelowy odciążania musi znać format hermetyzacji, aby przetwarzać pakiety odbierane. W odpowiedzi na zapytanie OID_TCP_TASK_OFFLOAD zwraca sterownik miniportu lub odciążanie obiektu docelowego w InformationBuffer, struktura NDIS_TASK_OFFLOAD_HEADER po której następuje natychmiast co najmniej jedna struktura NDIS_TASK_OFFLOAD. Każda struktura NDIS_TASK_OFFLOAD opisuje funkcję odciążania obsługiwaną przez kartę sieciową sterownika miniportu lub docelową odciążanie. Jeśli karta sieciowa sterownika miniportu lub docelowy odciążania obsługuje wiele wersji określonej możliwości odciążania, powinna zwrócić jedną NDIS_TASK_OFFLOAD strukturę dla każdej wersji.
Każda struktura NDIS_TASK_OFFLOAD ma element członkowski Task, który określa konkretną możliwość odciążania, do której ma zastosowanie struktura. Każda struktura NDIS_TASK_OFFLOAD ma również TaskBuffer, która zawiera informacje istotne dla określonej możliwości odciążania. Informacje w TaskBuffer są sformatowane jako jedna z następujących struktur:
-
NDIS_TASK_TCP_IP_CHECKSUM
Określa możliwości odciążania sumy kontrolnej. -
NDIS_TASK_IPSEC
Określa możliwości odciążania protokołu internetowego (IPsec). -
NDIS_TASK_TCP_LARGE_SEND
Określa duże możliwości segmentacji pakietów TCP. -
NDIS_TASK_TCP_CONNECTION_OFFLOAD
Określa możliwości odciążania komina TCP. Aby uzyskać więcej informacji na temat NDIS_TASK_TCP_CONNECTION_OFFLOAD, zobacz odciążanie technologii TCP Chimney.
Nuta
Jeśli sterownik pośredni modyfikuje zawartość pakietów przekazywanych do bazowego sterownika miniportu, tak aby nie można było wykonać funkcji odciążania TCP na pakietach, sterownik pośredni powinien odpowiadać na OID_TCP_TASK_OFFLOAD zapytania ze stanem NDIS_STATUS_NOT_SUPPORTED zamiast przekazywania żądania OID do bazowego sterownika miniportu lub odciążania docelowego.
Włączanie możliwości odciążania
Po wykonaniu zapytania o możliwości odciążania karty sieciowej lub odciążania obiektu docelowego stos hosta włącza co najmniej jedną z tych funkcji, ustawiając OID_TCP_TASK_OFFLOAD. Podczas ustawiania OID_TCP_TASK_OFFLOAD stos hostów dostarcza w InformationBufferstruktura NDIS_TASK_OFFLOAD_HEADER, po której następuje natychmiast struktura NDIS_TASK_OFFLOAD dla każdej funkcji odciążania włączonej przez stos hostów.
Task w każdej strukturze NDIS_TASK_OFFLOAD wskazuje możliwość odciążania, którą włącza stos hostów. Stos hosta umożliwia również określone aspekty konkretnej możliwości odciążania, ustawiając elementy członkowskie struktury w TaskBuffer każdej struktury NDIS_TASK_OFFLOAD.
Zmienianie możliwości odciążania
Aby zmienić możliwości odciążania włączone dla karty sieciowej lub miejsca docelowego odciążania, stos hostów ustawia OID_TCP_TASK_OFFLOAD. Sterownik miniportu lub element docelowy odciążania musi włączać tylko te możliwości odciążania określone przez najnowszy zestaw OID_TCP_TASK_OFFLOAD. Sterownik miniportu lub element docelowy odciążania musi wyłączyć wszystkie inne możliwości odciążania. Należy pamiętać, że przed wyłączeniem określonej funkcji odciążania tcp chimney stos hosta kończy odciążanie wszystkich odciążonych połączeń TCP, które korzystają z tej możliwości.
Obiekt docelowy odciążania może używać wskazówek wstrzymania lub wznowienia odciążania, aby zmienić zgłoszone możliwości odciążania protokołu TCP:
- Obiekt docelowy odciążania wskazuje na wstrzymanie, wywołując funkcję NdisMIndicateStatusEx z NDIS_STATUS_INDICATION->elementem członkowskim StatusCode ustawionym na NDIS_STATUS_OFFLOAD_PAUSE.
- Obiekt docelowy odciążania wskazuje wznawianie, wywołując funkcję NdisMIndicateStatusEx z NDIS_STATUS_INDICATION->elementem członkowskim StatusCode ustawionym na NDIS_STATUS_OFFLOAD_RESUME.
Po odciążeniu obiektu docelowego żąda odciążania stosu hostów w celu wznowienia odciążania obiektów stanu, stos hostów OID_TCP_TASK_OFFLOAD ponownie w celu uzyskania poprawionych możliwości odciążania protokołu TCP obiektu docelowego. Aby uzyskać więcej informacji, zobacz NDIS_STATUS_OFFLOAD_RESUME.
Wyłączanie możliwości odciążania
Aby wyłączyć wszystkie możliwości odciążania obsługiwane przez kartę sieciową lub obiekt docelowy odciążania, stos hostów ustawia OID_TCP_TASK_OFFLOAD. W InformationBuffer stos hosta dostarcza strukturę NDIS_TASK_OFFLOAD_HEADER z OffsetFirstTask składową tej struktury ustawioną na zero.
Wymagania
version: Windows Vista and later Header: Ntddndis.h (include Ndis.h)