NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO (Compact 7)
3/12/2014
This structure specifies information that is used in offloading large send offload (LSO) tasks from the TCP/IP transport to a miniport adapter. The NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO structure is part of the NET_BUFFER_LIST information.
Syntax
typedef struct _NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO {
union {
struct {
ULONG Unused:30;
ULONG Type:1;
ULONG Reserved2:1;
} Transmit;
struct {
ULONG MSS:20;
ULONG TcpHeaderOffset:10;
ULONG Type:1;
ULONG Reserved2:1;
} LsoV1Transmit;
struct {
ULONG TcpPayload:30;
ULONG Type:1;
ULONG Reserved2:1;
} LsoV1TransmitComplete;
struct {
ULONG MSS:20;
ULONG TcpHeaderOffset:10;
ULONG Type:1;
ULONG IPVersion:1;
} LsoV2Transmit;
struct {
ULONG Reserved:30;
ULONG Type:1;
ULONG Reserved2:1;
} LsoV2TransmitComplete;
PVOID Value;
};
} NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO,*PNDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO;
Members
Transmit
A structure within NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO that specifies transmit information and that contains the following members:- Unused
A ULONG value that specifies unused space that is reserved for NDIS.
- Type
The offload type that the miniport driver should run. Protocol drivers set this member to NDIS_TCP_LARGE_SEND_OFFLOAD_V1_TYPE to specify large send offload version 1 (LSOV1) operations or to NDIS_TCP_LARGE_SEND_OFFLOAD_V2_TYPE to specify large send offload version 2 (LSOV2) operations.
- Reserved2
Reserved for NDIS.
- Unused
LsoV1Transmit
A structure within NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO that specifies LSO transmit information and that contains the following members:- MSS
The maximum segment size (MSS), in bytes, for each packet after segmentaion. The TCP/IP transport writes this value before passing a large TCP packet to a miniport driver for segmentation. The size of TCP payload in each transmitted segment must not exceed this value.
- TcpHeaderOffset
The offset, in bytes, of the TCP header from the beginning of the packet for TCP packets. Miniport drivers can use TcpHeaderOffset to determine the location of the TCP header so that they do not have to parse IP headers.
- Type
The offload type that the miniport driver should run. Protocol drivers set this member to NDIS_TCP_LARGE_SEND_OFFLOAD_V1_TYPE to specify LSOV1 operations or to NDIS_TCP_LARGE_SEND_OFFLOAD_V2_TYPE to specify LSOV2 operations.
- Reserved2
Reserved for NDIS.
- MSS
LsoV1TransmitComplete
A structure within NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO that specifies LSO transmit complete information and that contains the following members:- TcpPayload
The total number of TCP payload bytes in a set of packets that a network interface card (NIC) created by segmenting a large packet. A miniport driver writes the TCP payload size before completing the send of an LSO packet.
- Type
The offload type that the miniport driver performed. The mniport drivers leaves this value the same as it was when the overlying driver submitted the packet for transmit.
- Reserved2
Reserved for NDIS.
- TcpPayload
LsoV2Transmit
A structure within NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO that specifies LSOV2 transmit information and that contains the following members:- MSS
The MSS, in bytes, for each TCP segment. The TCP/IP transport writes this value before passing a large TCP packet to a miniport driver for segmentation.
- TcpHeaderOffset
The offset, in bytes, of the TCP header from the beginning of the packet for TCP packets. Miniport drivers can use TcpHeaderOffset to determine the location of the TCP header so that they do not have to parse IP headers.
- Type
The offload type that the miniport driver should run. Protocol drivers set this member to NDIS_TCP_LARGE_SEND_OFFLOAD_V1_TYPE to specify LSOV1 operations or to NDIS_TCP_LARGE_SEND_OFFLOAD_V2_TYPE to specify LSOV2 operations.
- IPVersion
The IP version of the packet. For IPv4 packets, IPVersion is set to NDIS_TCP_LARGE_SEND_OFFLOAD_IPv4. For IPv6 packets, IPVersion is set to NDIS_TCP_LARGE_SEND_OFFLOAD_IPv6.
- MSS
LsoV2TransmitComplete
A structure within NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO that specifies LSOV2 transmit complete information and that contains the following members:- Reserved
Reserved for NDIS.
- Type
The offload type that the miniport driver performed. The mniport drivers leaves this value the same as it was when the overlying driver submitted the packet for transmit.
- Reserved2
Reserved for NDIS.
- Reserved
- Value
A PVOID version of the LSO information. Use this member to access the raw information instead of the specific fields.
Remarks
The NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO structure specifies information for LSOV1 and LSOV2 operations. The NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO structure is part of the information that is included in a NET_BUFFER_LIST structure.To set and get the LSOV1 or LSOV2 information, use the TcpLargeSendNetBufferListInfo index with the NET_BUFFER_LIST_INFO macro. NET_BUFFER_LIST_INFO returns a ULONG value (not a pointer to a ULONG value).
The TCP/IP transport updates the MSS and TcpHeaderOffset members of the NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO structure before sending a large packet to a miniport driver.
For LSOV1, miniport drivers write the TCP payload size in the TcpPayload member before completing a send operation for a segmented packet.
Requirements
Header |
ntddndis.h |
See Also
Reference
NDIS TCP/IP Offload Structures
NET_BUFFER_LIST
NET_BUFFER_LIST_INFO