NDIS_RSC_NBL_INFO union (ndis/nblrsc.h)

The NDIS_RSC_NBL_INFO union specifies receive segment coalescing (RSC) counter information that is associated with a NET_BUFFER_LIST structure.

Syntax

typedef union _NDIS_RSC_NBL_INFO {
  struct {
    USHORT CoalescedSegCount;
    USHORT DupAckCount;
  } Info;
  PVOID  Value;
} NDIS_RSC_NBL_INFO, *PNDIS_RSC_NBL_INFO;

Members

Info

A member in the union that is contained in NDIS_RSC_NBL_INFO. Drivers use Info to access RSC information. Info is a structure with the following members:

Info.CoalescedSegCount

The number of coalesced segments in the NET_BUFFER_LIST structure. For non-RSC packets this member must be set to zero. Drivers can access this member with the NET_BUFFER_LIST_COALESCED_SEG_COUNT macro.

Note  The RscTcpTimestampDelta information and the DupAckCount member should be non-zero only if CoalescedSegCount is not zero. See the remarks section for more information about RscTcpTimestampDelta.
 

Info.DupAckCount

The number of duplicate ACKs that were encountered while forming the NET_BUFFER_LIST structure. DupAckCount should be non-zero only if CoalescedSegCount is not zero. Drivers can access this member with the NET_BUFFER_LIST_DUP_ACK_COUNT macro.

Value

A member in the union that is contained in NDIS_RSC_NBL_INFO. Drivers use Value to access the RSC information as a single PVOID.

Remarks

To access receive segment coalescing (RSC) counter information that is associated with a NET_BUFFER_LIST structure, an NDIS driver calls the NET_BUFFER_LIST_INFO macro and specifies the TcpRecvSegCoalesceInfo information type which is in an NDIS_RSC_NBL_INFO union.

To access RSC timestamp information that is associated with a NET_BUFFER_LIST structure, an NDIS driver calls the NET_BUFFER_LIST_INFO macro and specifies the RscTcpTimestampDelta information type which is a single ULONG value.

Note  The RscTcpTimestampDelta information and the DupAckCount member of NDIS_RSC_NBL_INFO should be nonzero only if CoalescedSegCount is not zero.
 
The RscTcpTimestampDelta information might be set for coalesced segments that are using the TCP timestamp option. RscTcpTimestampDelta information should contain the delta between the earliest and the latest TCP timestamp values in the sequence of coalesced segments. The miniport driver can provide a 16-bit value for RscTcpTimestampDelta.

The NET_BUFFER_LIST structure of a single coalesced unit (SCU) is not different from the standard NET_BUFFER_LIST structure that is indicated on the receive path without RSC. The SCU resembles an IP jumbogram packet that came from the wire. Therefore, every indicated SCU must have one NET_BUFFER structure for each NET_BUFFER_LIST.

The NET_BUFFER can be an MDL chain and the MDL can have a total size that exceeds the normal maximum transmission unit (MTU) but must be limited by the maximum legal IP datagram length, see RFC791 section 3.1.

Also, the additional NET_BUFFER_LIST information can be provided for an SCU. NDIS performs the NET_BUFFER_LIST and NET_BUFFER validation. The host TCPIP stack performs packet checks including IP and TCP header validation.

Requirements

Requirement Value
Minimum supported client Supported for NDIS 6.30 and later drivers in Windows 8.
Header ndis/nblrsc.h (include ndis.h)

See also

NET_BUFFER_LIST

NET_BUFFER_LIST_COALESCED_SEG_COUNT

NET_BUFFER_LIST_DUP_ACK_COUNT

NET_BUFFER_LIST_INFO