Exception Conditions that Terminate Coalescing
This section defines the checks that a receive segment coalescing (RSC)-capable miniport driver must perform on a segment before it can be coalesced.
A segment must pass both of the following types of checks before it can be coalesced:
Checks for presence of a certain condition in the segment. For example, the presence of a SYN flag in the TCP header would trigger an exception and the segment would not be coalesced. These types of checks are defined below.
Checks that depend on inspecting and correlating information from previously coalesced segments and the currently examined segments. For example, checking if the received segment is a duplicate acknowledgment falls in this category of checks. These types of checks are defined in Rules for Coalescing TCP/IP Segments.
If a check fails, an exception is triggered, and the miniport driver must terminate coalescing for that TCP connection and treat segments as follows:
TCP segments that were coalesced before the exception was detected should be indicated as a single unit.
TCP segments that are coalesced after the exception is detected should be indicated as a separate unit.
Note For exceptions 7 and 8 below, the miniport driver should resume coalescing starting with the segment that triggered the exception.
Receiving a segment that meets any of the following criteria must trigger an exception:
The hardware resource constraints in the NIC prevent coalescing.
The segment has an invalid TCP or IP checksum.
The segment contains any of the SYN, URG, RST, FIN in its TCP header, as defined in section 3.1 of RFC 793. More broadly, if the segment contains any flag other than PSH or ACK, it should trigger an exception. For ECN flags, see exception 8 below.
The segment contains one or more TCP options other than the TCP timestamp option. See RFC 1323 for a discussion of the TCP timestamp option.
The segment contains IPv4 options or IPv6 extension headers.
The segment is an IPv4 fragment.
Coalescing the currently received segment will cause the single coalesced unit to exceed the maximum legal IP Datagram length. This exception requires special handling. For more information, see:
The first flowchart in Rules for Coalescing TCP/IP Packets
"Responding to Queries for RSC Statistics" in Programming Considerations for RSC Drivers.
The segment contains ECN flags, as defined in RFC 3168, that meet one or both of the following criteria:
The segment contains a different value for the ECN field (ECT, CE) in the IP header than the previous segment.
The segment has a different value for the ECN flags (ECE and CWR) in the TCP header than the previous segment.