IP Library Granted Patent US 9,055,104
Granted Patent B2
US 9,055,104 · App. 12/470,980 · Granted Jun 9, 2015

Freeing transmit memory on a network interface device prior to receiving an acknowledgment that transmit data has been received by a remote device

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,055,104
App. No.
12/470,980
Granted
Jun 9, 2015
Kind
B2
Abstract

A transmit offload engine (TOE) such as an intelligent network interface device (INIC), video controller or host bus adapter (HBA) that can communicate data over transport protocols such as Transport Control Protocol (TCP) for a host. Such a device can send and receive data for the host to and from a remote host, over a TCP connection maintained by the device. For sending data, the device can indicate to the host that data has been transmitted from the device to a network, prior to receiving, by the device from the network, an acknowledgement (ACK) for all the data, accelerating data transmission. The greatest sequence number for which all previous bytes have been ACKed can be provided with a response to a subsequent command, with the host maintaining a table of ACK values to complete commands when appropriate.

Claims (56)

1. A method for communication involving a computer, a network, and a network interface device of the computer, the network interface device being coupled to the network, the method comprising:

receiving, by the network interface device from the computer, a command to transmit application data from the computer to the network;

sending, by the network interface device to the network, data corresponding to the command, including prepending a transport layer header to at least some of the data;

sending, by the network interface device to the computer, a response to the command indicating that the data has been sent from the network interface device to the network, prior to receiving, by the network interface device from the network, an acknowledgement (ACK) that all the data corresponding to the command has been received; and

maintaining, by the network interface device, a Transport Control Protocol (TCP) connection that the command, the data and the ACK correspond to.

2. The method of claim 1 , wherein sending the response to the command is prompted by receiving, by the network interface device from the computer, a subsequent command to transmit additional application data from the computer to the network.

3. The method of claim 1 , further comprising sending a sequence number for the ACK with the response to the command.

4. The method of claim 1 , further comprising:

receiving, by the network interface device from the computer, a subsequent command to transmit additional application data from the computer to the network; and

sending, by the network interface device to the computer, a command response after receiving, by the network interface device from the network, an ACK for all the additional data.

5. The method of claim 1 , further comprising:

receiving, by the network interface device from the computer, a subsequent command to transmit additional application data from the computer to the network; and

sending, by the network interface device to the computer, information indicating completion of the subsequent command after receiving, by the network interface device from the network, an ACK for all the additional data.

6. The method of claim 1 , further comprising:

receiving, by the network interface device, the ACK;

sending, by the network interface device to the computer, an indication that the ACK has been received, to prompt the computer to complete the command.

7. The method of claim 1 , further comprising maintaining a table of ACK values including a value that corresponds to the ACK.

8. The method of claim 1 , further comprising:

storing a pointer to the command in a memory space of the network interface device; and

freeing the memory space upon sending, by the network interface device to the computer, the command response indicating that the data has been sent from the network interface device to the network.

9. The method of claim 1 , wherein receiving, by the network interface device from the computer, a command to transmit data includes receiving, by the network interface device from the computer, a pointer to the command.

10. The method of claim 1 , further comprising sending, with the response to the command, a SND_UNA value.

11. The method of claim 1 , further comprising sending, with the response to the command, an indication that all data has been received for a previous command.

12. A method for communication involving a computer, a network, and a network interface device of the computer, the network interface device being coupled to the network, the method comprising:

receiving, by the network interface device from the computer, a pointer to a command to transmit data from the computer to the network;

sending, by the network interface device to the network, data corresponding to the command;

sending, by the network interface device to the computer, a response to the command indicating that the data has been sent from the device to the network, prior to receiving, by the network interface device from the network, an acknowledgement (ACK) that all the data has been received; and

maintaining, by the network interface device, a Transport Control Protocol (TCP) connection that the command, the data and the ACK correspond to.

13. The method of claim 12 , wherein sending the response to the command is prompted by receiving, by the network interface device from the computer, a subsequent pointer to a subsequent command to transmit additional application data from the computer to the network.

14. The method of claim 12 , further comprising sending a sequence number for the ACK with the response to the command.

15. The method of claim 12 , further comprising:

receiving, by the network interface device, the ACK;

sending, by the network interface device to the computer, an indication that the ACK has been received to prompt the computer to complete the command.

16. The method of claim 12 , further comprising a table of ACK values including a value that corresponds to the ACK.

17. The method of claim 12 , further comprising:

storing the pointer to the command in a memory space of the device; and

freeing the memory space upon sending, from the network interface device to the computer, the command response indicating that the data has been sent from the network interface device to the network.

18. The method of claim 12 , further comprising determining that a memory space of the network interface device in which the pointer is stored is full, prior to sending the response to the command.

19. The method of claim 12 , further comprising sending, with the response to the command, a SND_UNA value.

20. The method of claim 12 , further comprising sending, with the response to the command, an indication that all data has been received for a previous command.

21. A method for communication involving a computer, a network, and a network interface device of the computer, the network interface device being coupled to the network, the method comprising:

receiving, by the device from the computer, a series of commands to transmit application data from the computer to the network;

sending, by the device to the network, data corresponding to the commands, including prepending a transport layer header to at least some of the data; and

sending, by the device to the computer, a response to the commands, each response including a SND_UNA value;

wherein data corresponding to one of the commands is sent by the device to the network prior to receiving an ACK for data corresponding to a prior one of the commands.

22. A system for communication involving a computer, a network, and a network interface device of the computer, the network interface device being coupled to the network, the system comprising:

means for receiving, by the network interface device from the computer, a command to transmit data from the computer to the network;

means for sending, by the network interface device to the network, data corresponding to the command, including means for prepending a transport layer header to at least some of the data; and

means for sending, by the network interface device to the computer, an indication that the data has been sent from the network interface device to the network, prior to receiving, by the network interface device from the network, an acknowledgement (ACK) that the data has been received.

23. A non-transitory computer readable medium storing a data structure for use with a host that is connected to a network by a network interface device, the data structure comprising:

instructions to receive, by the network interface device from the host, a command to transmit data from the host to the network;

instructions to send, by the device to the network, data corresponding to the command, including instructions for prepending transport layer header to at least some of the data; and

instructions to send, by the network interface device to the host, an indication that the data has been sent from the network interface device to the network, prior to receiving, by the network interface device from the network, an acknowledgement (ACK) that the data has been received.

24. The method of claim 12 , further comprising:

receiving, by the network interface device from the computer, a subsequent pointer to a subsequent command to transmit additional application data from the computer to the network; and

sending, by the network interface device to the computer, information indicating completion of the subsequent command after receiving, by the network interface device from the network, an ACK for the additional data.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 22, 2016
From: A-TECH LLC
To: ALACRITECH, INC.
Reel/Frame 039068/0884 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 15, 2013
From: ALACRITECH INC.
To: A-TECH LLC
Reel/Frame 031644/0783 →