NDIS_TASK_OFFLOAD_HEADER (Windows Embedded CE 6.0)
1/6/2010
This structure contains the encapsulation format for send and receive packets on which a miniport may perform tasks offloaded from the TCP/IP transport.
Syntax
typedef struct _NDIS_TASK_OFFLOAD_HEADER {
ULONG Version;
ULONG Size;
ULONG Reserved;
ULONG OffsetFirstTask;
NDIS_ENCAPSULATION_FORMAT EncapsulationFormat;
} NDIS_TASK_OFFLOAD_HEADER, *PNDIS_TASK_OFFLOAD_HEADER;
Members
- Version
Specifies the task-offload version supported by the TCP/IP transport. This value is always set to NDIS_TASK_OFFLOAD_VERSION.
- Size
Specifies, in bytes, the size of the NDIS_TASK_OFFLOAD_HEADER structure. Size is set to sizeof(NDIS_TASK_OFFLOAD_HEADER) and is used to determine the version of the NDIS_TASK_OFFLOAD_HEADER structure.
- Reserved
Reserved for future use.
- OffsetFirstTask
Specifies, in bytes, the offset from the beginning of the enclosing buffer to the first NDIS_TASK_OFFLOAD structure. The miniport is responsible for setting this value when responding to a query of OID_TCP_TASK_OFFLOAD. The TCP/IP transport is responsible for setting this value when setting OID_TCP_TASK_OFFLOAD. If no NDIS_TASK_OFFLOAD structures are in the buffer, OffsetFirstTask is set to zero.
- EncapsulationFormat
Specifies the encapsulation format for both send and receive packets that are passed to or from the TCP/IP transport through the miniport's NIC. This information is formatted as an NDIS_ENCAPSULATION_FORMAT structure.
Remarks
When the TCP/IP transport queries OID_TCP_TASK_OFFLOAD, it initializes and passes an NDIS_TASK_OFFLOAD_HEADER structure in the information buffer pointed to by the InformationBuffer member of the NDIS_REQUEST structure associated with the query. The miniport that receives this query examines the NDIS_TASK_OFFLOAD_HEADER structure to determine the encapsulation format for send and receive packets processed by the TCP/IP transport. The miniport or its NIC uses the encapsulation information to determine the format of the encapsulation header, as well as the start of the first IP header, in such packets so that the NIC can perform offload tasks on these packets.
The miniport responds to the OID_TCP_TASK_OFFLOAD query by appending one or more NDIS_TASK_OFFLOAD structures to the NDIS_TASK_OFFLOAD_HEADER structure in the information buffer. Each NDIS_TASK_OFFLOAD structure represents an offload task supported by the miniport's NIC. The miniport sets the OffsetFirstTask member of the NDIS_TASK_OFFLOAD_HEADER structure to the offset, in bytes, from the start of the information buffer to the first NDIS_TASK_OFFLOAD structure. The miniport does not alter any other values in the NDIS_TASK_OFFLOAD_HEADER structure. If the Version, Size, or EncapsulationFormat value specified in the NDIS_TASK_OFFLOAD_HEADER structure are not acceptable to the miniport, the miniport should fail the OID_TCP_TASK_OFFLOAD query.
To support task offloads for a particular frame type, a miniport's NIC must support the appropriate encapsulation types. The following table indicates which encapsulation types a miniport must support to be able to offload tasks for a given frame type.
Frame type | Encapsulation type |
---|---|
Ethernet |
IEEE_802_3_Encapsulation |
Token Ring |
IEEE_802_5_Encapsulation |
ATM (CLIP) |
LLC_SNAP_ROUTED_Encapsulation |
Other |
UNSPECIFIED_Encapsulation |
A NIC does not have to support the same set of offload tasks for each encapsulation type. For example, an Ethernet NIC can support checksum and IP security offloads for the IEEE_802_3_Encapsulation type (Ethernet DIX) but only checksum offloads for the LLC_SNAP_ROUTED_Encapsulation type.
A NIC can offload the segmentation of large TCP packets only if one of the following is true:
- It supports the encapsulation format specified by the TCP/IP protocol in the NDIS_TASK_OFFLOAD_HEADER structure.
- The specified encapsulation type is UNSPECIFIED_Encapsulation and Encapsulation
- HeaderSize is set to the size of the encapsulation header for the media supported by the miniport and its NIC.
The encapsulation format specified by the TCP/IP transport in the NDIS_TASK_OFFLOAD_HEADER structure applies to both send and receive packets that are passed to or from the TCP/IP transport through the NIC. Only one encapsulation format is supported per NIC at any given time.
To disable all of a NIC's task-offload capabilities, the TCP/IP transport sets OID_TCP_TASK_OFFLOAD, passing only NDIS_TASK_OFFLOAD_HEADER in the information buffer. In this case, the TCP/IP transport sets the OffsetFirstTask member of NDIS_TASK_OFFLOAD_HEADER to zero.
Requirements
Header | ndis.h |
Windows Embedded CE | Windows CE .NET 4.0 and later |
See Also
Reference
NDIS Structures
NDIS_ENCAPSULATION_FORMAT
NDIS_TASK_OFFLOAD
NDIS_REQUEST
NDIS_TASK_TCP_LARGE_SEND
NDIS_TASK_TCP_IP_CHECKSUM
OID_TCP_TASK_OFFLOAD