NDIS_ENCAPSULATION_FORMAT (Windows Embedded CE 6.0)

1/6/2010

The NDIS_ENCAPSULATION_FORMAT structure used for the EncapsulationFormat member of the NDIS_TASK_OFFLOAD_HEADER structure.

Syntax

typedef struct _NDIS_ENCAPSULATION_FORMAT {
  NDIS_ENCAPSULATION Encapsulation;
  struct {
    ULONG FixedHeaderSize:1;
    ULONG Reserved:31;
  } Flags;
  ULONG EncapsulationHeaderSize;
} NDIS_ENCAPSULATION_FORMAT,*PNDIS_ENCAPSULATION_FORMAT;

Members

  • Encapsulation
    Specifies the encapsulation type as one of the following NDIS_ENCAPSULATION values.

    Value Description

    UNSPECIFIED_Encapsulation

    An encapsulation type other than those listed below.

    NULL_Encapsulation

    This is reserved.

    IEEE_802_3_Encapsulation

    IEEE 802.3 encapsulation (Ethernet_DIX).

    IEEE_802_5_Encapsulation

    IEEE 802.5 encapsulation.

    LLC_SNAP_ROUTED_Encapsulation

    LLC encapsulation for routed protocols, as described in RFC 1483.

    Also used to indicate Ethernet LLC/SNAP encapsulation.

    LLC_SNAP_BRIDGE_Encapsulation

    This is reserved.

  • FixedHeaderSize
    This is always set to 1 to indicate that the encapsulation header is the same size in each packet.
  • Reserved
    This is reserved.
  • EncapsulationHeaderSize
    Specifies, in bytes, the size of the encapsulation header. The first IP header in the encapsulated transmit packet starts at this offset from the start of the packet.

Remarks

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 EncapsulationHeaderSize 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_TASK_OFFLOAD_HEADER
NDIS_TASK_OFFLOAD
NDIS_REQUEST
NDIS_TASK_TCP_LARGE_SEND
NDIS_TASK_TCP_IP_CHECKSUM
OID_TCP_TASK_OFFLOAD