IP Library Granted Patent US 7,855,954
Granted Patent B2
US 7,855,954 · App. 12/176,810 · Granted Dec 21, 2010

Speculative credit data flow control

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,855,954
App. No.
12/176,810
Granted
Dec 21, 2010
Kind
B2
Abstract

A method of speculative credit data flow control includes defining a low watermark value as a function of a number of open buffers in a receiving unit; receiving a data packet from a sending unit; determining whether the data packet includes a packet delay indicator; defining a first speculative credit value responsive to receiving the packet delay indicator; defining a second speculative credit value as a function of the first speculative credit value added to a regular credit value; generating a flow control packet including the second speculative credit value; and sending the flow control packet to the sending unit.

Claims (50)

1. A method comprising:

defining a low watermark value as a function of a number of open buffers in a receiving unit;

receiving a data packet from a sending unit;

determining whether the data packet includes a packet delay indicator located in a header of the data packet, wherein the packet delay indicator is sent by the sending unit responsive to determining that a transmission of the data packet was delayed;

defining a first speculative credit value responsive to receiving the packet delay indicator, wherein the first speculative credit value is defined by a function comprising adding half a difference between the low watermark value and an available credit limit value to a speculative credit value;

defining a second speculative credit value as a function of the first speculative credit value added to a regular credit value;

generating a flow control packet including the second speculative credit value;

sending the flow control packet to the sending unit; and

saving the defined second speculative credit value in a register.

2. The method of claim 1 , wherein the low watermark value is defined as a lowest number of open buffers responsive to determining that a time threshold has elapsed.

3. The method of claim 1 , wherein the low watermark value is defined as a lowest number of open buffers responsive to determining that a threshold amount of data packets have been received.

4. The method of claim 1 , wherein the first speculative credit value is defined by a function comprising incrementing a previous second speculative credit value.

5. The method of claim 1 , wherein the method further comprises:

determining if a buffer overload occurred responsive to receiving the data packet;

decrementing the first speculative credit value responsive to determining that a buffer overload occurred;

defining the second speculative credit value as a function of the decremented first speculative credit value added to the regular credit value;

generating a flow control packet including the second speculative credit value; and

sending the flow control packet to the sending unit.

6. The method of claim 1 , wherein the method further comprises:

determining if a buffer overload occurred responsive to receiving the data packet;

defining the second speculative credit value as zero responsive to determining that a buffer overload occurred;

generating a flow control packet including the second speculative credit value; and

sending the flow control packet to the sending unit.

7. The method of claim 1 , wherein the method further comprises:

determining if a buffer overload occurred responsive to receiving the data packet;

defining the second speculative credit value as a previous second speculative credit value saved in a register responsive to determining that a buffer overload occurred;

generating a flow control packet including the second speculative credit value; and

sending the flow control packet to the sending unit.

8. A system comprising:

a sending unit; and

a receiving unit in communication with the sending unit, wherein the receiving unit is operative to, define a low watermark value as a function of a number of open buffers in a receiving unit, receive a data packet from the sending unit, determine whether the data packet includes a packet delay indicator located in a header of the data packet, wherein the packet delay indicator is sent by the sending unit responsive to determining that a transmission of the data packet was delayed, define a first speculative credit value responsive to receiving the packet delay indicator, wherein the first speculative credit value is defined by a function comprising adding half a difference between the low watermark value and an available credit limit value to a speculative credit value, define a second speculative credit value as a function of the first speculative credit value added to a regular credit value, generate a flow control packet including the second speculative credit value, send the flow control packet to the sending unit, and saving the defined second speculative credit value in a register.

9. The system of claim 8 , wherein the low watermark value is defined as a lowest number of open buffers responsive to the receiving unit is operative to determine that a time threshold has elapsed.

10. The system of claim 8 , wherein the low watermark value is defined as a lowest number of open buffers responsive to the receiving unit is operative to determine that a threshold amount of data packets have been received.

11. The system of claim 8 , wherein the first speculative credit value is defined by a function comprising the receiving unit is operative to increment a previous second speculative credit value.

12. The system of claim 8 , wherein the receiving unit is further operative to: determine if a buffer overload occurred responsive to receiving the data packet, decrement the first speculative credit value responsive to determining that a buffer overload occurred, define the second speculative credit value as a function of the decremented first speculative credit value added to the regular credit value, generate a flow control packet with the second speculative credit value added to the regular credit value, and send the flow control packet to the sending unit.

13. The system of claim 8 , wherein the receiving unit is further operative to: determine if a buffer overload occurred responsive to receiving the data packet, define the second speculative credit value as zero responsive to determining that a buffer overload occurred, generate a flow control packet including the second speculative credit value as zero, and send the flow control packet to the sending unit.

14. The system of claim 8 , wherein the receiving unit is further operative to: determine if a buffer overload occurred responsive to receiving the data packet, define the second speculative credit value as a previous second speculative credit value saved in a register responsive to determining that a buffer overload occurred, generate a flow control packet including the second speculative credit value, and send the flow control packet to the sending unit.

15. A method comprising:

defining a low watermark value as a function of a number of open buffers in a receiving unit;

receiving a data packet from a sending unit;

determining whether the data packet includes a packet delay indicator;

defining a first speculative credit value responsive to receiving the packet delay indicator;

defining a second speculative credit value as a function of the first speculative credit value added to a regular credit value;

generating a flow control packet including the second speculative credit value;

sending the flow control packet to the sending unit;

determining if a buffer overload occurred responsive to receiving the data packet;

defining the second speculative credit value as a previous second speculative credit value saved in a register responsive to determining that a buffer overload occurred;

generating a flow control packet including the second speculative credit value;

and

sending the flow control packet to the sending unit.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 13, 2015
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: LINKEDIN CORPORATION
Reel/Frame 035201/0479 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 22, 2008
From: WILLENBORG, SCOTT M.; FUHS, RONALD E.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 021268/0991 →