Claims
- 1. A first device for communication between a network and a second device, the first device being coupled to the network and being coupled to the second device, the second device having a protocol stack, wherein packets of a first type and packets of a second type are received onto the first device from the network, wherein the packets of the first type include TCP headers and wherein the packets of the second type do not contain TCP headers, the first device performing substantially all TCP transport layer processing on the packets of the first type such that the protocol stack of the second device does substantially no TCP transport layer processing on the packets of the first type, the first device transferring data portions of the packets of the first type to the second device such that the data portions of the packets of the first type are stored in a destination on the second device, the first device passing packets of the second type to the second device such that the protocol stack of the second device does transport layer and network layer processing on the packets of the second type.
- 2. The first device of claim 1, wherein the first device comprises protocol processing hardware and wherein the second device comprises a central processing unit (CPU), and wherein the protocol processing hardware is integrated with the CPU.
- 3. The first device of claim 1, wherein the first device is a network interface card (NIC) and wherein the second device is a host computer.
- 4. The first device of claim 1, wherein the first device is a communication processing device (CPD) that is integrated into a host computer.
- 5. The first device of claim 1, wherein the first device comprises:
hardware that generates an indication of whether an incoming packet is of the first type; and a processor that receives the indication and that performs TCP transport layer processing on the packets of the first type.
- 6. The first device of claim 5, wherein the indication of whether an incoming packet is of the first type is pushed onto a queue along with a buffer descriptor, the buffer descriptor indicating where in a memory on the first device a corresponding packet of the first type is stored.
- 7. The first device of claim 5, wherein the hardware is a fly-by sequencer.
- 8. The first device of claim 5, wherein the processor executes a single state machine that performs both IP and TCP protocol processing.
- 9. The first device of claim 5, wherein the processor executes a finite state machine from within one of a plurality of processes, wherein the processor has zero-cost overhead for switching from one of the processes to another of the processes, the switching involving reloading a base register of the processor.
- 10. The first device of claim 5, wherein the packets of the first type are received from the network at a rate, and wherein the data portions of the packets of the first type are transferred into the destination on the second device at the rate.
- 11. The first device of claim 1, wherein the first device comprises:
hardware that generates an indication of whether an incoming packet is of the first type; a first processor that performs TCP protocol processing on packets of the first type; and a second processor that performs TCP protocol processing on packets of the first type.
- 12. The first device of claim 1, wherein the first device receives an indication of the destination from the second device, the destination being a location in memory on the second device that is determined by an application level program executing on the second device, and wherein the data portions of the packets of the first type are transferred directly from the first device and into the destination on the second device.
- 13. The first device of claim 1, wherein the first device performs substantially all TCP transport layer processing on the packets of the first type such that the protocol stack of the second device does substantially no TCP transport layer processing on the packets of the first type,
and wherein other packets of the first type are received onto the first device from the network, the first device passing the other packets of the first type to the second device such that the protocol stack of the second device does transport layer and network layer processing on the other packets of the first type.
- 14. The first device of claim 13, wherein the packets of the first type that the protocol stack of the second device does substantially no TCP transport layer processing on are fast-path packets, and wherein the other packets of the first type are fast-path candidate packets.
- 15. A system, comprising:
a processor that executes a protocol processing stack including a transport protocol processing layer, an application layer program executing on the processor identifying a destination in a memory; and means for receiving a multi-packet session layer message from a network, the multi-packet session layer message being communicated across a TCP connection, the means performing substantially all TCP protocol processing on the packets of the multi-packet session layer message, the means transferring a data payload of the multi-packet session layer message directly into the destination identified by the application layer program.
- 16. The system of claim 15, wherein the means for receiving comprises:
fly-by hardware logic that analyzes the packet of the multi-packet session layer message as the packets pass through the fly-by hardware logic; and a processor that performs TCP protocol processing on the packets of the multi-packet session layer message.
- 17. The system of claim 15, wherein the means for receiving comprises:
means for analyzing the packets of the multi-packet session layer message at a bit rate that the packets are received from the network.
- 18. The system of claim 16, wherein the means for receiving further comprises:
a DMA controller that transfers the data payload of the multi-packet session layer message directly into the destination.
- 19. A method, comprising:
using hardware to determine whether a packet received from a network does not meet a plurality of criteria, the packet comprising a data portion and a header portion; wherein if the hardware determines that the packet does not meet the plurality of criteria then performing transport layer protocol processing on the packet by a first processor, the first processor being coupled to a memory and executing a program of a protocol layer higher than the transport layer; and wherein if the first processor does not perform said transport layer protocol processing on the packet then transport layer protocol processing is performed on the packet by a second processor such that the first processor does substantially no transport layer protocol processing on the packet, and wherein the program executing on the first processor identifies a destination in the memory, and wherein the data portion of the packet is transferred into the destination without the header portion being transferred into the destination and without the first processor moving the data portion.
- 20. The method of claim 19, wherein the packet includes a TCP header, and wherein the second processor performs TCP protocol processing on the packet such that the first processor performs substantially no TCP protocol processing on the packet.
- 21. The method of claim 20, wherein the first processor executes a protocol processing stack, wherein the protocol layer higher than the transport layer is an application layer, and wherein a data payload of a multi-packet session layer message is transferred into the destination without the first processor doing any substantial TCP protocol processing on the multi-packet session layer message, the multi-packet session layer message being communicated across the network over a TCP connection.
- 22. The method of claim 19, wherein the hardware is a sequencer.
- 23. The method of claim 19, wherein one of the plurality of criteria is a requirement that the transport layer protocol be the TCP protocol.
- 24. The method of claim 19, wherein the hardware is fly-by hardware logic.
- 25. The method of claim 19, wherein the hardware processes the header portion of the packet as the header portion of the packet passes through the hardware.
- 26. The method of claim 19, wherein the packet is received from the network at a bit rate, the hardware processing the header portion of the packet at the bit rate.
- 27. The method of claim 19, wherein the packet has a TCP header and wherein at least a part of the packet is stored in a memory buffer, the memory buffer being identified by a buffer descriptor, the hardware causing the buffer descriptor to be pushed onto a queue, the second processor using the buffer descriptor to retrieve said at least a part of the packet from the memory buffer.
CROSS-REFERENCE TO RELATED APPLICATIONS
[0001] This application claims the benefit under 35 U.S.C. §120 of U.S. patent application Ser. No. 10/092,967, entitled “FAST-PATH APPARATUS FOR RECEIVING DATA CORRESPONDING TO A TCP CONNECTION,” filed Mar. 6, 2002, by Laurence B. Boucher et al., which in turn claims the benefit under 35 U.S.C. §120 of U.S. patent application Ser. No. 10/023,240 (Attorney Docket No. ALA-006A), entitled “TRANSMIT FAST-PATH PROCESSING ON TCP/IP OFFLOAD NETWORK INTERFACE DEVICE,” filed Dec. 15, 2001, by Laurence B. Boucher et al., which in turn claims the benefit under 35 U.S.C. §120 of U.S. patent application Ser. No. 09/464,283 (Attorney Docket No. ALA-006), entitled “INTELLIGENT NETWORK INTERFACE DEVICE AND SYSTEM FOR ACCELERATED COMMUNICATION”, filed Dec. 15, 1999, by Laurence B. Boucher et al., which in turn claims the benefit under 35 U.S.C. §120 of U.S. patent application Ser. No. 09/439,603 (Attorney Docket No. ALA-009), entitled “INTELLIGENT NETWORK INTERFACE SYSTEM AND METHOD FOR ACCELERATED PROTOCOL PROCESSING”, filed Nov. 12, 1999, by Laurence B. Boucher et al., which in turn claims the benefit under 35 U.S.C. §120 of U.S. patent application Ser. No. 09/067,544 (Attorney Docket No. ALA-002), entitled “INTELLIGENT NETWORK INTERFACE SYSTEM AND METHOD FOR ACCELERATED PROTOCOL PROCESSING”, filed Apr. 27, 1998, which in turn claims the benefit under 35 U.S.C. § 119(e)(1) of the Provisional Application filed under 35 U.S.C. §111(b) entitled “INTELLIGENT NETWORK INTERFACE CARD AND SYSTEM FOR PROTOCOL PROCESSING,” Serial No. 60/061,809 (Attorney Docket No. ALA-001), filed on Oct. 14, 1997.
[0002] This application also claims the benefit under 35 U.S.C. §120 of U.S. patent application Ser. No. 09/384,792 (Attorney Docket No. ALA-008), entitled “INTELLIGENT NETWORK INTERFACE DEVICE AND SYSTEM FOR ACCELERATED COMMUNICATION,” filed Aug. 27, 1999, which in turn claims the benefit under 35 U.S.C. §120 of U.S. patent application Ser. No. 09/141,713 (Attorney Docket No. ALA-003), entitled “INTELLIGENT NETWORK INTERFACE DEVICE AND SYSTEM FOR ACCELERATED PROTOCOL PROCESSING”, filed Aug. 28, 1998, which both claim the benefit under 35 U.S.C. § 119(e)(1) of the Provisional Application filed under 35 U.S.C. § 111 (b) entitled “INTELLIGENT NETWORK INTERFACE DEVICE AND SYSTEM FOR ACCELERATED COMMUNICATION,” Serial No. 60/098,296 (Attorney Docket No. ALA-004), filed Aug. 27, 1998.
[0003] This application also claims the benefit under 35 U.S.C. §120 of U.S. patent application Ser. No. 09/416,925 (Attorney Docket No. ALA-005), entitled “QUEUE SYSTEM FOR MICROPROCESSORS,” filed Oct. 13, 1999, U.S. patent application Ser. No. 09/514,425 (Attorney Docket No. ALA-007), entitled “PROTOCOL PROCESSING STACK FOR USE WITH INTELLIGENT NETWORK INTERFACE CARD,” filed Feb. 28, 2000, U.S. patent application Ser. No. 09/675,484 (Attorney Docket No. ALA-010A), entitled “INTELLIGENT NETWORK STORAGE INTERFACE SYSTEM,” filed Sep. 29, 2000, U.S. patent application Ser. No. 09/675,700 (Attorney Docket No. ALA-010B), entitled “INTELLIGENT NETWORK STORAGE INTERFACE DEVICE,” filed Sep. 29, 2000, U.S. patent application Ser. No. 09/789,366 (Attorney Docket No. ALA-013), entitled “OBTAINING A DESTINATION ADDRESS SO THAT A NETWORK INTERFACE DEVICE CAN WRITE NETWORK DATA WITHOUT HEADERS DIRECTLY INTO HOST MEMORY,” filed Feb. 20, 2001, U.S. patent application Ser. No. 09/801,488 (Attorney Docket No. ALA-011), entitled “PORT AGGREGATION FOR NETWORK CONNECTIONS THAT ARE OFFLOADED TO NETWORK INTERFACE DEVICES,” filed Mar. 7, 2001, U.S. patent application Ser. No. 09/802,551 (Attorney Docket No. ALA-012), entitled “INTELLIGENT NETWORK STORAGE INTERFACE SYSTEM,” filed Mar. 9, 2001, U.S. patent application Ser. No. 09/802,426 (Attorney Docket No. ALA-014), entitled “REDUCING DELAYS ASSOCIATED WITH INSERTING A CHECKSUM INTO A NETWORK MESSAGE,” filed Mar. 9, 2001, U.S. patent application Ser. No. 09/802,550 (Attorney Docket No. ALA-015), entitled “INTELLIGENT INTERFACE CARD AND METHOD FOR ACCELERATED PROTOCOL PROCESSING,” filed Mar. 9, 2001, U.S. patent application Ser. No. 09/855,979 (Attorney Docket No. ALA-016), entitled “NETWORK INTERFACE DEVICE EMPLOYING DMA COMMAND QUEUE,” filed Mar. 14, 2001, U.S. patent application Ser. No. 09/970,124 (Attorney Docket No. ALA-020), entitled “NETWORK INTERFACE DEVICE THAT FAST-PATH PROCESSES SOLICITED SESSION LAYER READ COMMANDS,” filed Oct. 2, 2001.
[0004] The subject matter of all of the above-identified patent applications (including the subject matter in the Microfiche Appendix of U.S. application Ser. No. 09/464,283), and of the two above-identified provisional applications, is incorporated by reference herein.