Claims
- 1. A set of instructions executable on a host processor, the set of instructions being at least in part for interacting with a TCP offload device, wherein the TCP offload device receives data from a remote device across a TCP connection and places the data free of TCP headers into a memory accessible by the host processor, the set of instructions being for performing steps comprising:
(a) identifying a location in the memory; and (b) passing a handle to the TCP offload device, the handle corresponding to the TCP network connection, wherein the TCP offload device uses the handle to place the data free of TCP headers into the memory at the location identified in step (a).
- 2. The set of instructions of claim 1, wherein the TCP offload device sends ACKs back to the remote device to acknowledge receipt of the data as the data is being placed into the memory.
- 3. The set of instructions of claim 1, wherein the data is placed into the memory without the data being touched by the host processor.
- 4. The set of instructions of claim 1, wherein the host processor is part of a host computer, and wherein the TCP offload device and the memory are parts of the host computer, and wherein the data passes over the TCP connection from the remote device to the host computer.
- 5. The set of instructions of claim 1, wherein the set of instructions includes a driver, and wherein the handle passes from the driver to the TCP offload device.
- 6. The set of instructions of claim 5, wherein the set of instructions further includes a stack, and wherein the handle is opaque to the stack.
- 7. The set of instructions of claim 1, wherein the stack uses a heuristic method to determine a characteristic of the TCP connection.
- 8. The set of instructions of claim 1, wherein the set of instructions is also for performing steps comprising:
(c) sending a flush command to the TCP offload device.
- 9. The set of instructions of claim 1, wherein the set of instructions is also for performing steps comprising:
(c) identifying a second location in the memory; and (d) passing a second handle to the TCP offload device, wherein the handle is passed along with an indication of a length of a message to be sent from the TCP offload device.
- 10. The set of instructions of claim 1, wherein the remote device is an adapter, wherein the remote device has a TCP task offload capability, wherein the set of instructions includes a stack, and wherein the set of instructions is also for performing steps comprising:
(c) querying the adapter to determine whether the adapter has the TCP task offload capability.
- 11. The set of instructions of claim 10, wherein the set of instructions includes a structure that represents the adapter, and wherein the set of instructions is also for performing steps comprising:
(d) setting information in the structure depending on results of the querying in step (c).
- 12. The set of instructions of claim 11, wherein the set of instructions is also for performing steps comprising:
(e) monitoring statistics associated with the TCP connection.
- 13. The set of instructions of claim 1, wherein the set of instructions includes a stack that interacts with an application, and wherein the application accepts data for the TCP connection, and wherein the stack maintains a count indicative of an amount of data accepted by the application for the TCP connection.
- 14. The set of instructions of claim 1, wherein the TCP offload device is a specialized network communication device, and wherein the set of instructions is also for performing steps comprising:
(c) allocating processing of certain types of network messages to the specialized network communication device.
- 15. The set of instructions of claim 1, wherein an application program executing on the host processor identifies the location in memory to an operating system executing on the host processor.
- 16. An operating system that passes control of a TCP connection from a host computer to a TCP off load device coupled to the host computer, wherein after said control of the TCP connection is passed to the TCP offload device the TCP offload device performs all or substantially all TCP protocol processing on a network frame received onto the TCP offload device for the TCP connection such that operating system performs no or substantially no TCP protocol processing on the network frame.
- 17. The operating system of claim 16, wherein the operating system executes on a host computer, wherein the host computer includes a memory, wherein the operating system receives an indication of a destination in the memory from an application program, wherein the operating system communicates the indication of the destination to the TCP offload device, and wherein the TCP offload device uses the indication to place a data payload of the network frame into the destination.
- 18. The operating system of claim 17, wherein the operating system communicates a handle to the TCP offload device along with the indication of the destination, the handle being associated with the TCP connection.
- 19. The operating system of claim 18, wherein the operating system queries the TCP offload device whether the TCP offload device has a TCP offload capability.
- 20. The operating system of claim 19, wherein a communication control block (CCB) exists for the TCP connection, and wherein control of the CCB is passed from the operating system to the TCP offload device.
CROSS REFERENCE TO RELATED APPLICATIONS
[0001] The present application claims the benefit under 35 U.S.C. §120 of (and is a continuation of) U.S. patent application Ser. No. 10/208,093, which in turn claims the benefit under 35 U.S.C. §120 of (and is a continuation-in-part of) U.S. patent application Ser. No. 09/514,425, filed Feb. 28, 2000, which in turn claims the benefit under 35 U.S.C. §120 of (and is a continuation-in-part of): a) U.S. patent application Ser. No. 09/141,713, filed Aug. 28, 1998, now U.S. Pat. No. 6,389,479, which in turn claims the benefit under 35 U.S.C. §119 of provisional application 60/098,296, filed Aug. 27, 1998; b) U.S. patent application Ser. No. 09/067,544, filed Apr. 27, 1998, now U.S. Pat. No. 6,226,680, which in turn claims the benefit under 35 U.S.C. §119 of provisional application 60/061,809, filed Oct. 14, 1997; and c) U.S. patent application Ser. No. 09/384,792, filed Aug. 27, 1999, which in turn claims the benefit under 35 U.S.C. §119 of provisional application 60/098,296, filed Aug. 27, 1998.
[0002] The present application claims the benefit under 35 U.S.C. §120 of (and is a continuation of) U.S. patent application Ser. No. 10/208,093, which in turn claims the benefit under 35 U.S.C. §120 of (and is a continuation-in-part of) U.S. patent application Ser. No. 09/464,283, filed Dec. 15, 1999, which in turn claims the benefit under 35 U.S.C. §120 of (and is a continuation-in-part of) U.S. patent application Ser. No. 09/439,603, filed Nov. 12, 1999, now U.S. Pat. No. 6,247,060, which in turn claims the benefit under 35 U.S.C. §120 of (and is a continuation-in-part of) U.S. patent application Ser. No. 09/067,544, filed Apr. 27, 1998, now U.S. Pat. No. 6,226,680, which in turn claims the benefit under 35 U.S.C. §119 of provisional application 60/061,809, filed Oct. 14, 1997.
[0003] The subject matter of all of the applications listed above and patents listed above is incorporated herein by reference.
Provisional Applications (3)
|
Number |
Date |
Country |
|
60098296 |
Aug 1998 |
US |
|
60061809 |
Oct 1997 |
US |
|
60061809 |
Oct 1997 |
US |
Continuations (2)
|
Number |
Date |
Country |
Parent |
10208093 |
Jul 2002 |
US |
Child |
10706398 |
Nov 2003 |
US |
Parent |
10208093 |
Jul 2002 |
US |
Child |
10706398 |
Nov 2003 |
US |
Continuation in Parts (6)
|
Number |
Date |
Country |
Parent |
09514425 |
Feb 2000 |
US |
Child |
10208093 |
Jul 2002 |
US |
Parent |
09141713 |
Aug 1998 |
US |
Child |
09514425 |
Feb 2000 |
US |
Parent |
09067544 |
Apr 1998 |
US |
Child |
09514425 |
Feb 2000 |
US |
Parent |
09464283 |
Dec 1999 |
US |
Child |
10208093 |
Jul 2002 |
US |
Parent |
09439603 |
Nov 1999 |
US |
Child |
09464283 |
Dec 1999 |
US |
Parent |
09067544 |
Apr 1998 |
US |
Child |
09439603 |
Nov 1999 |
US |