IP Library Granted Patent US 8,060,644
Granted Patent B1
US 8,060,644 · App. 11/747,673 · Granted Nov 15, 2011

Intelligent network adaptor with end-to-end 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 8,060,644
App. No.
11/747,673
Granted
Nov 15, 2011
Kind
B1
Abstract

A host is coupled to a network via an intelligent network adaptor. The host is executing an application configured to receive application data from a peer via the network and the intelligent network adaptor using a stateful connection according to a connection-oriented protocol. The intelligent network adaptor performs protocol processing of the connection. Application data is copied from host memory not configured for access by the application (possibly OS-associated host memory) to host memory associated with the application (application-associated host memory). The application data is received from the peer by the intelligent network adaptor and copied to host memory not configured for access by the application. The operating system selectively provides, to the intelligent network adaptor, information of the memory associated with the application. At least one portion of the application data for the connection is provided directly from the intelligent network adaptor to the memory associated with the application.

Claims (39)

1. A method of operating an intelligent network adaptor that couples a host to a network, the host executing an application configured to receive data packets, including application data, from a peer via the network and the intelligent network adaptor using a stateful connection between the host and the peer according to a connection-oriented protocol, wherein the intelligent network adaptor performs protocol processing of the connection, the method comprising:

by the intelligent network adaptor, performing protocol processing for the connection with the peer to, at least in part, obtain the application data from the data packets received from the peer, including indicating a receive window to the peer;

placing application data, received from the peer via the stateful connection, from the intelligent network adaptor directly to host memory application buffer associated with the application without the application data being first provided from the intelligent network adaptor to host memory buffer associated with a host operating system and not specifically with the application; and

causing the indicated receive window to be increased based on the application buffer becoming available due to the application consuming application data from the application buffer.

2. The method of claim 1 , further comprising:

causing the indicated receive window to be reduced based on the application data being placed in the host memory application buffer by the intelligent network adaptor.

3. The method of claim 1 , further comprising:

by the intelligent network adaptor, generating the receive window indication, including maintaining an indication of receive window credits based on an amount of the application data placed from the intelligent network adaptor to host memory application buffer and further based on the application data in the host memory application buffer being consumed by the application.

4. The method of claim 1 , further comprising:

placing application data, received from the peer via the stateful connection, from the intelligent network adaptor to the host memory buffer associated with the operating system and not specifically with the application and, based thereon, causing the indicated receive window to be reduced.

5. A method of operating an intelligent network adaptor that couples a host to a network, the host executing an application configured to receive data packets, including application data from a peer via the network and the intelligent network adaptor using a stateful connection between the host and the peer according to a connection-oriented protocol, wherein the intelligent network adaptor performs protocol processing of the connection, the method comprising:

by the intelligent network adaptor, performing protocol processing for the connection with the peer to, at least in part, obtain the application data from the data packets received from the peer, including providing a receive window to the peer;

placing application data, received from the peer via the stateful connection, from the intelligent network adaptor directly to host memory application buffer associated with the application without the application data being first provided from the intelligent network adaptor to host memory buffer associated with a host operating system and not specifically with the application; and

receiving, from the host, an indication that the application has consumed application data from the host memory application buffer associated with the application; and

generating the receive window based at least in part on the received indications of consumption of the application data from the host memory application buffer,

wherein

the host memory application buffer is larger than an amount of memory allowed by the connection-oriented protocol for flow control; and

the host is configured to expose to the interface adaptor, for use with the connection at any particular time, a portion of the host memory application buffer that is no larger than the amount of memory allowed by the connection-oriented protocol for flow control.

6. The method of claim 5 , wherein:

the host maintains the host memory application buffer as a ring structure.

7. The method of claim 5 , wherein:

the host maintains the host memory application buffer as a plurality of overlapping windows into the host memory application buffer, each window no larger than the amount of memory allowed by the connection-oriented protocol for flow control; and

the host selectively exposes to the interface adaptor one of the windows at any particular time.

8. The method of claim 7 , wherein:

maintaining the host memory application buffer as a plurality of overlapping windows includes maintaining the host memory application buffer as a ring structure, including maintaining producer and consumer pointers into a currently-exposed window, including advancing the producer pointer based on in-order application data being placed in the host memory application buffer and advancing the consumer pointer based on application data being consumed by the application from the host memory application buffer.

9. The method of claim 8 , wherein:

maintaining the host memory application buffer as a plurality of overlapping windows includes, as the consumer pointer is advanced based on consumption of application data by the application, releasing credits corresponding to the connection from the host to the intelligent network adaptor; and

the intelligent network adaptor generates the receive window for the connection based at least in part on the released credits.

10. The method of claim 9 , wherein:

releasing credits corresponding to the connection from the host to the intelligent network adaptor includes accumulating credits corresponding to the connection and bunching the release of accumulated credits from the host to the intelligent network adaptor.

11. The method of claim 8 , wherein:

advancing the producer pointer based on in-order application data being placed in the host memory application buffer includes the intelligent network adaptor accumulating notifications to the host of application data being placed in the host memory application buffer to moderate the notifications being provided to the host.

12. The method of claim 7 , wherein:

maintaining the producer and consumer pointers into the currently-exposed window includes constraining the producer pointer from being advanced only as far as the one-window's worth of memory away from the consumer pointer.

13. The method of claim 8 , wherein:

maintaining the host memory application buffer as a plurality of overlapping windows includes, as the producer pointer is advanced based on placing of application data by the intelligent network adaptor, decrementing receive windows credits corresponding to the connection; and

the intelligent network adaptor generates the receive window based at least in part on receive window credits corresponding to the connection.

14. The method of claim 7 , wherein:

the application data placing includes placing the application data, in time, substantially in the order received by the intelligent network adaptor, reordered spatially in the host memory application buffer from the order received by the intelligent network adaptor, to account for temporally out-of-order receipt by the intelligent network adaptor.

Assignments (10)
RELEASE OF SECURITY INTEREST Recorded Dec 26, 2025
From: CSNK WORKING CAPITAL FINANCE CORP.
To: CHELSIO COMMUNICATIONS, INC.
Reel/Frame 074070/0784 →
RELEASE OF SECURITY INTEREST Recorded Dec 18, 2025
From: WESTERN ALLIANCE BANK, AN ARIZONA CORPORATION
To: CHELSIO COMMUNICATIONS, INC.
Reel/Frame 073264/0525 →
CORRECTIVE ASSIGNMENT TO CORRECT THE THE FIRST PAGE OF THE INTELLECTUAL PROPERTY SECURITY AGREEMENT HAS AN INCORRECT DATE THAT NEEDS TO BE CORRECTED PREVIOUSLY RECORDED ON REEL 050050 FRAME 0396. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY INTEREST. Recorded Aug 15, 2019
From: CHELSIO COMMUNICATIONS, INC.
To: WESTERN ALLIANCE BANK, AN ARIZONA CORPORATION
Reel/Frame 050112/0234 →
SECURITY INTEREST Recorded Aug 14, 2019
From: CHELSIO COMMUNICATIONS, INC.
To: WESTERN ALLIANCE BANK, AN ARIZONA CORPORATION
Reel/Frame 050050/0396 →
RELEASE OF SECURITY INTEREST Recorded Apr 25, 2017
From: NOVIRIAN CAPITAL
To: CHELSIO COMMUNICATIONS, INC.
Reel/Frame 042142/0232 →
SECURITY INTEREST Recorded Jul 29, 2016
From: CHELSIO COMMUNICATIONS, INC.
To: NOVIRIAN CAPITAL
Reel/Frame 039296/0550 →
RELEASE OF SECURITY INTEREST Recorded Jul 15, 2016
From: EAST WEST BANK
To: CHELSIO COMMUNICATIONS, INC.
Reel/Frame 039360/0596 →
RELEASE OF SECURITY INTEREST Recorded Oct 21, 2014
From: EAST WEST BANK
To: CHELSIO COMMUNICATIONS, INC.
Reel/Frame 033989/0930 →
SECURITY INTEREST Recorded Oct 21, 2014
From: CHELSIO COMMUNICATIONS, INC.
To: SILICON VALLEY BANK
Reel/Frame 033990/0451 →
SECURITY AGREEMENT Recorded May 9, 2013
From: CHELSIO COMMUNICATIONS, INC.
To: EAST WEST BANK
Reel/Frame 030389/0982 →