Claims
- 1. A device for use with a first apparatus that is connectable to a second apparatus by a network, the first apparatus containing a memory and a first processor operating a stack of protocol processing layers that create a context for communication between an application of the first apparatus and an application of the second apparatus, the device comprising:
a communication processing mechanism connected to the first processor and to the network, said communication processing mechanism containing a second processor and instructions to choose, by referencing the context, whether a network message packet is processed by the protocol processing layers or the context is employed to transfer data contained in said packet between the network and the first apparatus memory.
- 2. The device of claim 1, wherein said communication processing mechanism includes a receive sequencer with directions to classify said packet, wherein said packet contains control information corresponding to the stack of protocol layers.
- 3. The device of claim 1, wherein said communication processing mechanism includes a receive sequencer with directions to generate a summary of a message packet received from the network, said packet containing control information corresponding to the stack of protocol layers, and said instructions including an instruction to compare said summary with said context.
- 4. The device of claim 1, wherein said instructions include a first instruction to create a header corresponding to said context and having control information corresponding to several of the protocol processing layers, and said instructions include a second instruction to prepend said header to said data for transmission of said packet from the first apparatus to the second apparatus.
- 5. The device of claim 1, wherein said communication processing mechanism has a direct memory access unit to send, based upon said context, said data from said communication processing mechanism to the first apparatus memory, without a header accompanying said data.
- 6. The device of claim 1, wherein said instructions include receive instructions to process packets received by the first apparatus from the network and transmit instructions to process packets transmitted from the first apparatus to the network.
- 7. The device of claim 1, wherein said context includes Internet Protocol (IP) addresses of said first and said second apparatuses and Transport Control Protocol (TCP) ports of said first and said second apparatuses.
- 8. The device of claim 1, wherein said communication processing mechanism includes a queue manager connected to said second processor.
- 9. A device for use with a first apparatus that can communicate with a second apparatus by a network, the first apparatus containing a first processor operating a stack of protocol processing layers that create a Transport Control Protocol (TCP) connection between the first apparatus and the second apparatus, the device comprising:
a receive mechanism coupled to the network and having logic to classify a message packet received from the network by the device, said message packet containing data and a header with control information corresponding to several of said protocol layers, said logic including directions to create a descriptor of said packet, and a second processor coupled to said receive mechanism and to the first apparatus, having instructions to compare said descriptor with the connection and to choose, based upon said comparing, whether to send said message packet to the stack for protocol processing or to send said data directly to a destination in the first apparatus without processing said message packet by the stack.
- 10. The device of claim 9, wherein said receive mechanism includes a sequencer.
- 11. The device of claim 9, further comprising a queue manager containing logic circuits to provide information for said second processor.
- 12. The device of claim 9, wherein said receive mechanism and said second processor process a plurality of message packets to send data from each of said packets to said destination without an interrupt.
- 13. The device of claim 9, wherein the connection is one of a plurality of TCP connections maintained by the device, and a hash of each said connection is stored in a memory of the device.
- 14. The device of claim 13, further comprising a least recently used register (LRU) for determining which of said connections are stored in said memory.
- 15. The device of claim 9, wherein said receive mechanism has a sequence of hardware logic units for processing said header.
- 16. The device of claim 9, further comprising a direct memory access (DMA) controller for sending, based upon said connection, said data to said destination without said header.
- 17. The device of claim 9, further comprising directions for said second processor to transmit a second message packet from the first apparatus to the network without employing the stack, including directions to create a header corresponding to said connection as part of said second message packet.
- 18. A device for processing communication between a network and a host having a stack of protocol layers, said device comprising:
a sequencer that categorizes a message packet received from the network to create a summary of said packet, said packet including data and a header containing information corresponding to a transport layer protocol, a memory to store said packet and said summary, a microprocessor to match said summary with a connection context and to move said data without said information to a destination in the host indicated by said context.
- 19. The device of claim 18, wherein said microprocessor includes a plurality of pipelined processors, with one of said processors configured to transmit network messages and another of said processors configured to receive network messages.
- 20. The device of claim 18, further comprising a CPU operating a stack of protocol processing layers to process a second packet having a second summary that does not match said connection context.
- 21. A device for transferring a message between a network and a host computer, wherein the message includes a packet having a series of headers corresponding to a sequence of protocol layers, the device comprising a sequencer that parses the series of headers as a stream of bits to generate a status of said packet, and a processor including logic to process a Transport Control Protocol (TCP) header of said packet.
- 22. The device of claim 21, further comprising a central processing unit (CPU) running a protocol processing stack to generate a Transmission Control Block (TCB) corresponding to said packet.
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,” Ser. 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,” Ser. 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.