# US 7,411,959 B2 · System and method for handling out-of-order frames

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 7,411,959 B2
- Document ID: US7411959B2
- Status: Granted
- Kind: B2
- Application number: 10/651,459
- Filed: 2003-08-29
- Published: 2004-03-04
- Granted: 2008-08-12
- Earliest claimed: 2002-08-30
- Assignees: Broadcom Corporation
- Inventors: Uri Elzur
- Web page: https://patentgrep.com/patent/US7411959B2

## CPC

- H04L 69/16: Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L 12/2856: {Access arrangements, e.g. Internet access (asynchronous transfer mode networks H04L12/5601; broadband local area networks H04L12/2801; optical access or distribution networks H04Q11/0067; access to open networks H04L12/5691; digital subscriber line end-user equipment and bit-level processing of data on a PSTN-based network H04M11/00; home network gateways H04L12/2834; wireless access networks H04W)}
- H04L 12/2898: {Subscriber equipments (DSL modems H04M11/062; cable modems H04L12/2801)}
- H04L 12/4633: {Interconnection of networks using encapsulation techniques, e.g. tunneling}
- H04L 47/10: Flow control; Congestion control
- H04L 47/193: at the transport layer, e.g. TCP related
- H04L 47/2441: relying on flow classification, e.g. using integrated services [IntServ]
- H04L 47/27: Evaluation or update of window size, e.g. using information derived from acknowledged [ACK] packets
- H04L 47/32: by discarding or delaying data units, e.g. packets or frames
- H04L 47/34: ensuring sequence integrity, e.g. using sequence numbers
- H04L 49/90: Buffering arrangements
- H04L 49/9063: {Intermediate storage in different physical parts of a node or terminal}
- H04L 63/1458: {Denial of Service}
- H04L 69/10: Streamlined, light-weight or high-speed protocols, e.g. express transfer protocol [XTP] or byte stream
- H04L 69/12: Protocol engines
- H04L 69/161: {Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields}
- H04L 69/162: {involving adaptations of sockets based mechanisms (secure socket layer H04L63/168)}
- H04L 69/163: In-band adaptation of TCP data exchange; In-band control procedures
- H04L 69/166: IP fragmentation; TCP segmentation
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

Aspects of the invention may be found in a method and system for handling out-of-order frames. In one embodiment, a method includes, for example, one or more of the following: receiving an out-of-order frame via a network interface card (NIC); placing data of the out-of-order frame in a host memory; and managing information relating to one or more holes in a receive window.

## Claims

### Claim 1

A method for handling out-of-order frames, comprising the steps of:
(a) receiving an out-of-order frame via a network subsystem;
(b) placing data of the out-of-order frame in a host memory;
(c) managing information relating to one or more holes resulting from the out-of-order frame in a receive window; and
(d) setting a programmable limit with respect to a number of holes allowed in the receive window.

### Claim 2 (depends on 1)

The method according to claim 1, wherein the out-of-order frame is received via a TCP offload engine (TOE) of the network subsystem or a TCP-enabled Ethernet controller (TEEC) of the network subsystem.

### Claim 3 (depends on 1)

The method according to claim 1, wherein the network subsystem does not store the out-of-order frame on an onboard memory.

### Claim 4 (depends on 3)

The method according to claim 3, wherein the network subsystem does not store one or more missing frames relating to the out-of-order frame.

### Claim 5 (depends on 1)

The method according to claim 1, wherein the network subsystem comprises a network interface card (NIC).

### Claim 6 (depends on 1)

The method according to claim 1, wherein step (b) comprises placing the data of the out-of-order frame in the host memory if the out-of-order frame is determined to be inside the receive window.

### Claim 7 (depends on 1)

The method according to claim 1, further comprising:
dropping the out-of-order frame if the out-of-order frame is determined not to be inside the receive window.

### Claim 8 (depends on 1)

The method according to claim 1, further comprising:
placing a portion of the data of the out-of-order frame in the host memory, the portion of the data being inside the receive window.

### Claim 9 (depends on 1)

The method according to claim 1, wherein step (c) comprises one or more of the following:
storing information relating to a new hole created by the placement of the data of the out-of-order frame,
updating information relating to an existing hole modified by the placement of the data of the out-of-order frame, and
deleting information relating to a plugged hole created by the placement of the data of the out-of-order frame.

### Claim 10 (depends on 9)

The method according to claim 9,
wherein the stored information resides on the network subsystem,
wherein the updated information resides on the network subsystem, and
wherein the deleted information resided on the network subsystem.

### Claim 11 (depends on 1)

The method according to claim 1, wherein the managed information resides on the network subsystem.

### Claim 12 (depends on 1)

The method according to claim 1, further comprising:
updating the receive window based upon the placement of the data of the out-of-order frame.

### Claim 13 (depends on 1)

The method according to claim 1, wherein step (b) comprises mapping TCP space into host buffer space.

### Claim 14 (depends on 1)

The method according to claim 1, wherein the network subsystem comprises a memory whose memory usage scales with a number of holes in the receive window.

### Claim 15 (depends on 1)

The method according to claim 1, wherein the network subsystem comprises a memory whose memory usage does not scale with a number of out-of-order frames received.
