IP Library Granted Patent US 7,243,284
Granted Patent B2
US 7,243,284 · App. 10/733,668 · Granted Jul 10, 2007

Limiting number of retransmission attempts for data transfer via network interface controller

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 7,243,284
App. No.
10/733,668
Granted
Jul 10, 2007
Kind
B2
Abstract

An RNIC implementation that performs direct data placement to memory where all segments of a particular connection are aligned, or moves data through reassembly buffers where all segments of a particular connection are non-aligned. The type of connection that cuts-through without accessing the reassembly buffers is referred to as a “Fast” connection because it is highly likely to be aligned, while the other type is referred to as a “Slow” connection. When a consumer establishes a connection, it specifies a connection type. The connection type can change from Fast to Slow and back. The invention reduces memory bandwidth, latency, error recovery using TCP retransmit and provides for a “graceful recovery” from an empty receive queue. The implementation also may conduct CRC validation for a majority of inbound DDP segments in the Fast connection before sending a TCP acknowledgement (Ack) confirming segment reception.

Claims (42)

1. A method of limiting a number of retransmission attempts for a data transfer via a network interface controller (NIC), the method comprising:

determining a type of a data transfer based on alignment of a direct data placement (DDP) segment of the data transfer;

storing a number of retransmission attempts for an error-including data transfer;

increasing the number of retransmission attempts by one each time a retransmission is attempted for the same error-including data transfer previously received; and

allowing another retransmission attempt of the error-including data transfer in the case that the number of retransmission attempts does not exceed a maximum retransmission attempt number.

2. The method of claim 1 , wherein the step of allowing includes dropping the data transfer and not confirming reception of the data transfer.

3. The method of claim 1 , further comprising the steps of:

storing a largest sequence number among at least one previously received error-including data transfer and a newly received error-including data transfer; and

resetting the number of transmission attempts in the case that a newly received in-order data transfer has a sequence number greater than the stored largest sequence number.

4. The method of claim 3 , wherein:

the newly received error-including data transfer is determined to have a sequence number greater than the largest sequence number by comparing the sequence number of the newly received error-including data transfer to the stored largest sequence number; and

the newly received in-order data transfer is determined to have a sequence number greater than the largest sequence number by comparing the sequence number of the newly received in-order data transfer to the stored largest sequence number.

5. The method of claim 1 , wherein, in the case that the number of retransmission attempts exceeds the maximum retransmission attempt number, the method further comprises the step of placing the data transfer to a reassembly buffer of the NIC.

6. The method of claim 5 , farther comprising the step of sending an Ack for the data transfer.

7. The method of claim 5 , farther comprising the step of changing a type of the data transfer from a first type to a second type.

8. The method of claim 7 , farther comprising the step of changing the type of the data transfer from the second type to the first type where: the reassembly buffer is empty, the data transfer includes aligned DDP segment, and the data transfer was originated as a first type.

9. The method of claim 8 , wherein the type of the data transfer determines whether the data transfer is placed to an internal buffer for direct data placement to a destination buffer or to the reassembly buffer.

10. A system for limiting a number of retransmission attempts for a data transfer via a network interface controller (NIC), the system comprising:

means for determining a type of a data transfer based on alignment of a direct data placement (DDP) segment of the data transfer;

means for storing a number of retransmission attempts for an error-including data transfer;

means for increasing the number of retransmission attempts by one each time a retransmission is attempted for the same error-including data transfer previously received; and

means for allowing another transmission attempt of the error-including data transfer in the case that the number of retransmission attempts does not exceed a maximum retransmission attempt number.

11. The system of claim 10 , wherein the means for allowing places the data transfer to a reassembly buffer of the NIC where the number of retransmission attempts exceeds the maximum retransmission attempt number.

12. The system of claim 10 , further comprising:

means for storing a largest sequence number among at least one previously received error-including data transfer and a newly received error-including data transfer; and

means for resetting the number of transmission attempts in the case that the newly received error-including data transfer has a sequence number greater than the stored largest sequence number.

13. The system of claim 12 , wherein

the newly received error-including data transfer is determined to have a sequence number greater than the stored largest sequence number by comparing the sequence number of the newly received error-including data transfer to the stored largest sequence number; and

the newly received in-order data transfer is determined to have a sequence number greater than the stored largest sequence number by comparing the sequence number of the newly received in-order data transfer to the stored largest sequence number.

14. The system of claim 10 , further comprising means for changing a type of the data transfer from a first type to a second type.

15. The system of claim 14 , further comprising means for changing changes the type of the data transfer from the second type to the first type where: a reassembly buffer of the NIC is empty, the data transfer includes aligned DDP segment, and the data transfer was originated as a first type.

16. The system of claim 15 , wherein the type of the data transfer determines whether the data transfer is placed to an internal buffer for direct data placement to a destination buffer or to the reassembly buffer.

17. A computer program product comprising a computer useable medium having computer readable program code embodied therein for limiting a number of retransmission attempts for a data transfer via a network interface controller (NIC), the program product comprising:

program code configured to determine a type of a data transfer based on alignment of a direct data placement (DDP) segment of the data transfer;

program code configured to store a number of retransmission attempts for an error-including data transfer;

program code configured to increase the number of retransmission attempts by one each time a retransmission is attempted for the same error-including data transfer previously received; and

program code configured to allow another retransmission attempt of the error-including data transfer in the case that the number of retransmission attempts does not exceed a maximum retransmission attempt number.

18. The program product of claim 17 , wherein the allowing program code places the data transfer to a reassembly buffer of the NIC where the number of retransmission attempts exceeds the maximum retransmission attempt number.

19. The program product of claim 17 , further comprising:

program code configured to store a largest sequence number among at least one previously received error-including data transfer and a newly received error-including data transfer; and

program code configured to reset the number of transmission attempts in the case that the new in-order received data transfer has a sequence number greater than the stored largest sequence number.

20. The program product of claim 19 , wherein the newly received error-including data transfer is determined to have a sequence number greater than the largest sequence number by program code configured to compare the sequence number of the newly received error-including data transfer to the stored largest sequence number.

Assignments (4)
RELEASE OF SECURITY INTEREST IN PATENT COLLATERAL AT REEL/FRAME NO. 37900/0720 Recorded Jul 13, 2018
From: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
To: MELLANOX TECHNOLOGIES, LTD.
Reel/Frame 046542/0792 →
PATENT SECURITY AGREEMENT Recorded Feb 24, 2016
From: MELLANOX TECHNOLOGIES, LTD.
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 037900/0720 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 2, 2013
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: MELLANOX TECHNOLOGIES, LTD.
Reel/Frame 030128/0885 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 11, 2003
From: MACHULSKY, ZORIK; MAKHERVAKS, VADIM
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 014817/0816 →