The NDIS_TCP_SEND_OFFLOADS_SUPPLEMENTAL_NET_BUFFER_LIST_INFO structure contains additional out-of-band information for encapsulated packets. For more information, see Network Virtualization using Generic Routing Encapsulation (NVGRE) Task Offload (NVGRE-TO).


  union {
    struct {
      ULONG IsEncapsulatedPacket : 1;
      ULONG EncapsulatedPacketOffsetsValid : 1;
      ULONG InnerFrameOffset : 8;
      ULONG TransportIpHeaderRelativeOffset : 6;
      ULONG TcpHeaderRelativeOffset : 10;
      ULONG IsInnerIPv6 : 1;
      ULONG TcpOptionsPresent : 1;
      ULONG Reserved : 4;
    } EncapsulatedPacketOffsets;
    PVOID Value;




If this member is TRUE, this NBL represents a packet containing an inner Ethernet frame with a transport IP header. It is FALSE for normal packets. When IsEncapsulatedPacket is TRUE, the existing header offset fields, NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO.LsoV2Transmit.TcpHeaderOffset and NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO.Transmit.TcpHeaderOffset, will not have correct values and must not be used by the NIC or driver. Instead, the miniport driver must use the offsets specified in the other members of this structure.


If this member is TRUE, the InnerFrameOffset, TransportIpHeaderRelativeOffset, and TcpHeaderRelativeOffset members have valid values.


Offset from the beginning of the packet to the first byte of the inner Ethernet frame.


Offset to the first byte of the inner IP header relative to the InnerFrameOffset.


Offset to the first byte of the inner (transport) header relative to the TransportIpHeaderRelativeOffset. This value is always set to the correct offset, even if the inner frame is not a TCP packet.


Set by the protocol driver to indicate that the inner IP header in the encapsulated packet contains IPv6 addresses.


Set by the protocol driver when the inner TCP header contains TCP options. This allows a miniport driver to optimize the case when there are no options to assume the TCP header length to access the payload.


Reserved for future use.


Reserved for future use.


The members of NDIS_TCP_SEND_OFFLOADS_SUPPLEMENTAL_NET_BUFFER_LIST_INFO are meaningful if and only if TcpIpChecksumNetBufferListInfo or TcpLargeSendNetBufferListInfo is specified in the NDIS_NET_BUFFER_LIST_INFO structure.

If the IsEncapsulatedPacket member is TRUE and the TcpIpChecksumNetBufferListInfo out-of-band (OOB) information is valid, this indicates that NVGRE support is required and the NIC must compute the checksum for the tunnel (outer) IP header, the transport (inner) IP header, and the TCP or UDP header if one of them is present. An NVGRE packet will only be offloaded if the packet conforms to miniport-advertised capabilities. For example, a packet containing a UDP header will not be offloaded if the miniport did not advertise UDP Tx checksum offload support in its base capabilities. For more information, see Offloading Checksum Tasks.


Minimum supported client Supported in NDIS 6.30 and later.
Header ndis.h

See also



Network Virtualization using Generic Routing Encapsulation (NVGRE) Task Offload

Offloading Checksum Tasks