Claims
- 1. A method for network communication, the method comprising:
receiving a plurality of packets from the network, each of the packets including a media access control layer header, a network layer header and a transport layer header; processing the packets by a first mechanism, so that for each packet the network layer header and the transport layer header are validated without an interrupt dividing the processing of the network layer header and the transport layer header; sorting the packets, dependent upon the processing, into first and second types of packets, so that the packets of the first type each contain data; sending the data from each packet of the first type to a destination without sending any of the media access control layer headers, network layer headers or transport layer headers to the destination.
- 2. The method of claim 1, wherein processing the packets by a first mechanism further comprises:
processing the media access control layer header for each packet without an interrupt dividing the processing of the media access control layer header and the network layer header.
- 3. The method of claim 1, further comprising:
processing an upper layer header of at least one of the packets by a second mechanism, thereby determining the destination, wherein the upper layer header corresponds to a protocol layer above the transport layer.
- 4. The method of claim 1, further comprising:
processing an upper layer header of at least one of the packets of the second type by a second mechanism, thereby determining the destination.
- 5. The method of claim 1, further comprising:
processing a transport layer header of another packet by a second mechanism, prior to receiving the plurality of packets from the network, thereby establishing a Transport Control Protocol (TCP) connection for the packets of the first type.
- 6. The method of claim 1, wherein sorting the packets includes classifying each of the packets of the first type as having an Internet Protocol (IP) header and a Transport Control Protocol (TCP).
- 7. The method of claim 1, further comprising:
transmitting a second plurality of packets to the network, each of the second plurality of packets containing a media access control layer header, a network layer header and a transport layer header, including processing the second plurality of packets by the first mechanism, so that for each packet the media access control layer header, the network layer header and the transport layer header are processed without an interrupt dividing the processing of the media access control layer header, the network layer header and the transport layer header.
- 8. The method of claim 1, wherein the first mechanism is a sequencer running microcode.
- 9. A method for communicating information over a network, the method comprising:
obtaining data from a source allocated by a first processor; dividing the data into multiple segments; prepending a packet header to each of the segments by a second processor, thereby forming a packet corresponding to each segment, each packet header containing a media access control layer header, a network layer header and a transport layer header, wherein the prepending of each packet header occurs without an interrupt dividing the prepending of the network layer header and the transport layer header; and transmitting the packets to the network.
- 10. The method of claim 9, wherein prepending a packet header to each of the segments by a second processor further comprises:
prepending the media access control layer header for each packet without an interrupt dividing the prepending of the media access control layer header and the network layer header.
- 11. The method of claim 9, wherein each packet header contains an Internet Protocol (IP) header and a Transport Control Protocol (TCP) header. the media access control layer header,
- 12. The method of claim 9, further comprising establishing a Transport Control Protocol (TCP) connection by the first processor and using the connection to prepend the packet header to each of the segments by the second processor.
- 13. The method of claim 9, further comprising creating a template header and forming each packet header based upon the template header.
- 14. The method of claim 9, wherein obtaining data from the source in memory allocated by the first processor is performed by a Direct Memory Access (DMA) unit controlled by the second processor.
- 15. The method of claim 9, further comprising prepending an upper layer header to the data, prior to dividing the data into multiple segments.
- 16. The method of claim 9, further comprising:
receiving another packet from the network, the other packet containing a receive header including information corresponding to a network layer and a transport layer; and selecting whether to process the other packet by the first processor or by the second processor.
- 17. A method for communicating information over a network, the method comprising:
providing multiple segments of data; prepending an outbound packet header to each of the segments, thereby forming an outbound packet corresponding to each segment, the outbound packet header containing an outbound media access control layer header, an outbound network layer header and an outbound transport layer header, wherein the prepending of each outbound packet header occurs without an interrupt dividing the prepending of the outbound media access control layer header, the outbound network layer header and the outbound transport layer header; transmitting the outbound packets to the network; receiving multiple inbound packets from the network, each of the inbound packets including an inbound media access control layer header, an inbound network layer header and an inbound transport layer header; processing the inbound packets, so that for each packet the inbound network layer header and the inbound transport layer header are validated without an interrupt dividing the processing of the inbound network layer header and the inbound transport layer header.
- 18. The method of claim 17, wherein the processing the inbound packets is performed simultaneously with the prepending the outbound packet header to each of the segments.
- 19. The method of claim 17, further comprising creating a template header and using the template header to form each outbound packet header.
- 20. The method of claim 17, wherein providing multiple segments of data includes dividing a block of data into the segments.
- 21. The method of claim 20, further comprising prepending an upper layer header to the block of data, prior to dividing the block of data into multiple segments.
- 22. The method of claim 17, further comprising:
sending data from each inbound packet to a destination without sending any of the media access control layer headers, network layer headers or transport layer headers to the destination.
- 23. The method of claim 17, further comprising:
processing an upper layer header of at least one of the packets by a second mechanism, thereby determining the destination, wherein the upper layer header corresponds to a protocol layer above the transport layer.
- 24. The method of claim 17, further comprising:
processing a transport layer header of another inbound packet, prior to receiving the plurality of packets from the network, thereby establishing a Transport Control Protocol (TCP) connection for the inbound packets.
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. § 1 19(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.