# US 10,320,918 B1 · Data-flow architecture for a TCP offload engine

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

- Number: US 10,320,918 B1
- Document ID: US10320918B1
- Status: Granted
- Kind: B1
- Application number: 14/574,283
- Filed: 2014-12-17
- Granted: 2019-06-11
- Earliest claimed: 2014-12-17
- Assignees: Xilinx, Inc.
- Applicants: Xilinx, Inc.
- Inventors: Michaela Blott; David A. Sidler; Kimon Karras; Raymond Carley; Kornelis A. Vissers
- Web page: https://patentgrep.com/patent/US10320918B1

## CPC

- H04L 67/142: Managing session states for stateless protocols; Signalling session states; State transitions; Keeping-state mechanisms
- H04L 45/74: Address processing for routing
- 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: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

In an example, an integrated circuit (IC) includes a receive circuit, a transmit circuit, and a control circuit. The receive circuit includes a receive data path and a receive control interface, the receive data path coupled to store received transmission control protocol (TCP) data for a plurality of TCP sessions in a respective plurality of receive buffers in an external memory circuit external to the IC. The transmit circuit includes a transmit data path and a transmit control interface, the transmit data path coupled to read TCP data to be transmitted for the plurality of TCP sessions from a respective plurality of transmit buffers in the external memory circuit. The control circuit is coupled to the receive control interface and the transmit control interface, the control circuit configured to maintain data structures to maintain TCP state information for the plurality of TCP sessions.

## Claims

### Claim 1

An integrated circuit (IC), comprising:
a receive circuit having a receive data path and a receive control interface, the receive data path coupled to store received transmission control protocol (TCP) data for a plurality of TCP sessions in a respective plurality of receive buffers in an external memory circuit external to the IC;
a transmit circuit having a transmit data path and a transmit control interface, the transmit data path coupled to read TCP data to be transmitted for the plurality of TCP sessions from a respective plurality of transmit buffers in the external memory circuit;
a receive application interface coupled between the receive buffers in the external memory and an application circuit;
a transmit application interface coupled between the application circuit and the transmit buffers in the external memory; and
a control circuit coupled to the receive control interface and the transmit control interface and decoupled from the receive data path and the transmit data path, the control circuit configured to maintain data structures to maintain TCP state information for the plurality of TCP sessions.

### Claim 2 (depends on 1)

The IC of claim 1, further comprising:
a hash generator;
wherein the data structures include a TCP session lookup table having session identifiers for the plurality of sessions, each of the session identifiers being a hash generated by the hash generator in response to a source internet protocol (IP) address, a destination IP address, a source port, and a destination port.

### Claim 3 (depends on 1)

The IC of claim 1, wherein the data structures include a transmit segmentation and reassembly (SAR) table for the transmit circuit and a receive SAR table for the receive circuit, the transmit SAR table including pointers to locations in the plurality of transmit buffers and the receive SAR table including pointers to locations in the plurality of receive buffers.

### Claim 4 (depends on 3)

The IC of claim 3, wherein the receive circuit includes an out-out-order (OOO) TCP segment handler, and wherein the receive SAR table includes a pointer to valid data and at least one pointer to at least one OOO TCP segment for each of the plurality of receive buffers.

### Claim 5 (depends on 1)

The IC of claim 1, wherein:
the receive application interface is configured to receive requests to open a TCP port and to provide notifications that TCP data is available for access.

### Claim 6 (depends on 1)

The IC of claim 1, wherein:
the transmit application interface is configured to receive requests to open a TCP session and provide notifications of a TCP session identifier.

### Claim 7

An integrated circuit (IC), comprising:
an Ethernet controller;
an internet protocol (IP) controller, coupled to the Ethernet controller; and
a transmission control protocol (TCP) offload engine, coupled to the IP controller, the TCP offload engine including:
a receive circuit having a receive data path and a receive control interface, the receive data path coupled to store received TCP data for a plurality of TCP sessions in a respective plurality of receive buffers in an external memory circuit external to the IC;
a transmit circuit having a transmit data path and a transmit control interface, the transmit data path coupled to read TCP data to be transmitted for the plurality of TCP sessions from a respective plurality of transmit buffers in the external memory circuit;
a receive application interface coupled between the receive buffers in the external memory and an application circuit;
a transmit application interface coupled between the application circuit and the transmit buffers in the external memory; and
a control circuit coupled to the receive control interface and the transmit control interface and decoupled from the receive data path and the transmit data path, the control circuit configured to maintain data structures to maintain TCP state information for the plurality of TCP sessions.

### Claim 8 (depends on 7)

The IC of claim 7, further comprising:
a hash generator;
wherein the data structures include a TCP session lookup table having session identifiers for the plurality of sessions, each of the session identifiers being a hash generated by the hash generator in response to a source IP address, a destination IP address, a source port, and a destination port.

### Claim 9 (depends on 7)

The IC of claim 7, wherein the data structures include a transmit segmentation and reassembly (SAR) table for the transmit circuit and a receive SAR table for the receive circuit, the transmit SAR table including pointers to locations in the plurality of transmit buffers and the receive SAR table including pointers to locations in the plurality of receive buffers.

### Claim 10 (depends on 9)

The IC of claim 9, wherein the receive circuit includes an out-out-order (OOO) TCP segment handler, and wherein the receive SAR table includes a pointer to valid data and at least one pointer to at least one OOO TCP segment for each of the plurality of receive buffers.

### Claim 11 (depends on 7)

The IC of claim 7, wherein:
the receive application interface is configured to receive requests to open a TCP port and to provide notifications that TCP data is available for access.

### Claim 12 (depends on 7)

The IC of claim 7, wherein:
the transmit application interface is configured to receive requests to open a TCP session and provide notifications of a TCP session identifier.

### Claim 13 (depends on 7)

The IC of claim 7, further comprising at least one application circuit coupled to the TCP offload engine.

### Claim 14 (depends on 7)

The IC of claim 7, further comprising an address resolution protocol (ARP) handler, an ARP table, and a ping handler coupled to the IP controller.

### Claim 15

A method of operating a transmission control protocol (TCP) offload engine in an integrated circuit (IC), the method comprising:
storing TCP data received from an application circuit through a receive application interface on a receive data path for a plurality of TCP sessions in a respective plurality of receive buffers in an external memory circuit external to the IC;
transmitting TCP data to be transmitted from the application circuit through a transmit application interface on a transmit data path for the plurality of TCP sessions from a respectively plurality of transmit buffers in the external memory circuit; and
maintaining data structures to maintain TCP state information for the plurality of TCP sessions in a control circuit that is decoupled from the receive data path and the transmit data path.

### Claim 16 (depends on 15)

The method of claim 15, further comprising:
generating a TCP session identifier by computing a hash of a tuple comprising a source internet protocol (IP) address, a source port, a destination IP address, and a destination port.

### Claim 17 (depends on 15)

The method of claim 15, wherein the data structures include a transmit segmentation and reassembly (SAR) table for the transmit circuit and a receive SAR table for the receive circuit, the transmit SAR table including pointers to locations in the plurality of transmit buffers and the receive SAR table including pointers to locations in the plurality of receive buffers.

### Claim 18 (depends on 17)

The method of claim 17, further comprising:
handling out-of-order TCP segments;
wherein the receive SAR table includes a pointer to valid data and at least one pointer to at least one OOO TCP segment for each of the plurality of receive buffers.

### Claim 19 (depends on 15)

The method of claim 15, further comprising:
receiving requests to open a TCP port; and
providing notifications that TCP data is available for access.

### Claim 20 (depends on 15)

The method of claim 15, further comprising:
receiving requests to open a TCP session; and
providing notifications of a TCP session identifier.
