Claims
- 1. A method for use with a computer system, comprising:
receiving a packet that includes a header, the header indicating at least one characteristic that is associated with a layer of a multiple layer protocol stack; parsing the packet with a network controller to extract said at least one characteristic; and passing a handle from the network controller to indicate said at least one characteristic.
- 2. The method of claim 1, wherein the act of passing comprises:
passing the handle to another layer of the protocol stack.
- 3. The method of claim 1, wherein said at least one characteristic comprises:
a port number associated with an application program.
- 4. The method of claim 1, wherein the layer comprises a data link layer.
- 5. The method of claim 1, wherein said at least one characteristic comprises:
a type of the packet.
- 6. The method of claim 1, wherein the handle associates the packet with a flow.
- 7. The method of claim 1, further comprising:
selectively transmitting acknowledgement packets based on said at least one characteristic.
- 8. The method of claim 1, further comprising:
storing data associated with the packet in a region of memory that is used by execution of an application based on said at least one characteristic.
- 9. The method of claim 1, wherein the layer comprises a transport layer.
- 10. The method of claim 1, wherein the act of receiving comprises:
receiving the packet from a network.
- 11. The method of claim 1, wherein the handle comprises an IP address and a TCP port.
- 12. The method of claim 1, wherein the handle comprises a number corresponding to a context.
- 13. The method of claim 1, wherein the handle is passed to the network controller.
- 14. The method of claim 1, further comprising:
using the packet to obtain memory space for another packet.
- 15. An apparatus for use with a computer system capable of executing software of a protocol stack to extract at least one characteristic of a packet, comprising:
an interface adapted to receive the packet, the packet including a header indicating said at least one characteristic; and a circuit adapted to:
parse the header to extract said at least one characteristic of the packet without causing the computer system to execute the software, and process the packet based on the extracted characteristic.
- 16. The apparatus of claim 15, wherein said at least one characteristic comprises:
a port number being associated with an application program.
- 17. The apparatus of claim 15, wherein the circuit comprises means for parsing the header.
- 18. The apparatus of claim 15, wherein said at least one characteristic comprises:
a type of the packet.
- 19. The apparatus of claim 15, wherein the circuit is further adapted to:
use said at least one characteristic to associate the packet with a flow.
- 20. The apparatus of claim 15, wherein the circuit is further adapted to:
store data from the packet in a final destination in a memory.
- 21. The apparatus of claim 15, wherein the apparatus comprises a network controller.
- 22. A computer system comprising:
a processor adapted to execute software of a network stack to extract at least one characteristic of a packet; and a peripheral device adapted to:
receive the packet, the packet including a header indicating said at least one characteristic, parse the header to extract said at least one characteristic, and at least partially process the packet based on the at least one extracted characteristic.
- 23. The computer system of claim 22, wherein the software comprises a network layer.
- 24. The computer system of claim 22, wherein said at least one characteristic comprises:
a port number associated with an application program.
- 25. The computer of claim 22, further comprising:
means for determining a memory address at which to store data.
- 26. The computer system of claim 22, wherein said at least one characteristic comprises:
a type of the packet.
- 27. The computer system of claim 22, wherein the peripheral device is further adapted to:
use said at least one characteristic to associate the packet with a flow.
- 28. The computer system of claim 22, wherein the peripheral device is further adapted to:
provide zero-copy support for an upper layer protocol layer, wherein the upper layer protocol layer is a layer that is higher than a transport layer.
- 29. The computer system of claim 22, wherein the peripheral device comprises a network controller.
- 30. The computer system of claim 28, wherein said at least one characteristic is a combination of a TCP source port, a TCP destination port, an IP source address, and an IP destination address.
- 31. The computer system of claim 30, wherein the peripheral device receives an indication of a destination address from the processor, and wherein the peripheral device provides said zero-copy support by transferring a data payload of the packet from the peripheral device directly into the destination address.
- 32. The computer system of claim 31, wherein the stack includes a transport processing layer, and wherein the stack performs substantially no TCP processing on the packet, and wherein the peripheral device performs substantially all TCP processing on the packet.
- 33. The computer system of claim 22, wherein the characteristic is that the packet is a fast-path packet.
- 34. The computer system of claim 22, wherein the peripheral device is further adapted to:
choose between slow-path processing the packet and fast-path processing the packet.
- 35. The computer system of claim 22, wherein the peripheral device is further adapted to:
receive an indication of said at least one characteristic onto said peripheral device from said processor, the peripheral device matching said at least one characteristic extracted from the header with said at least one characteristic received onto the peripheral device from said processor.
- 36. The method of claim 8, wherein the network controller comprises means for parsing the packet, and wherein said at least one characteristic is a combination of a TCP source port, a TCP destination port, an IP source address, and an IP destination address, and wherein the handle associates the packet with a flow.
- 37. The method of claim 8, wherein the computer system comprises:
means for determining a memory address at which to store data.
- 38. The method of claim 8, wherein the network controller is a TCP offload device.
- 39. The method of claim 8, further comprising:
passing an indication of said at least one characteristic to the network controller, and wherein the network controller matches said at least one characteristic extracted from the packet with said at least one characteristic passed to the network interface device.
- 40. The method of claim 8, further comprising:
receiving onto the network controller from the protocol stack an indication of the region of memory.
- 41. The method of claim 8, further comprising:
a step for receiving onto the network controller from the protocol stack an indication of the region of memory.
- 42. The method of claim 8, wherein the handle is a header buffer, and wherein the header buffer contains status information about the packet.
- 43. The method of claim 8, wherein the handle is a header buffer, and wherein the header buffer specifies a fast-path connection, the fast-path connection being identified by a TCP source port, a TCP destination port, an IP source address, and an IP destination address.
- 44. A method for use with a computer system, comprising:
receiving a packet that includes a header, the header including a TCP source port, a TCP destination port, an IP source address, and an IP destination address, and wherein a TCP connection is identified by the TCP source port, the TCP destination port, the IP source address, and the IP destination address; parsing the packet with a network controller to extract said TCP source port, said TCP destination port, said IP source address and said IP destination address; and passing an indication of the TCP connection from the network controller.
- 45. A computer system comprising:
a processor adapted to execute software of a protocol stack, the protocol stack having a TCP protocol processing layer; and a peripheral device adapted to:
receive a packet from a network, the packet including a header, the header indicating a TCP source port, a TCP destination port, an IP source address, and an IP destination address; parse the header to extract said TCP source port, said TCP destination port, said IP source address, and said IP destination address; determine based at least in part on said TCP source port, said TCP destination port, said IP source address, and said IP destination address whether the packet is a fast-path packet; and perform at least some TCP protocol processing on the packet if the packet is determined to be a fast-path 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/005;536, filed Nov. 7, 2001, which in turn claims the benefit under 35 U.S.C. §120 of U.S. patent application Ser. No. 09/384,792, filed Aug. 27, 1999, now U.S. Pat. No. 6,434,620, which in turn: 1) claims the benefit under 35 U.S.C. §119 of provisional patent application serial No. 60/098,296, filed Aug. 27, 1998, 2) claims the benefit under 35 U.S.C. §120 of U.S. patent application Ser. No. 09/067,544, filed Apr. 27, 1998, now U.S. Pat. No. 6,226,680, and 3) claims the benefit under 35 U.S.C. § 120 of U.S. patent application Ser. No. 09/141,713, filed Aug. 28, 1998, now U.S. Pat. No. 6,389,479. This application also claims the benefit under 35 U.S.C. §120 of U.S. patent application Ser. No. 09/464,283, filed Dec. 15, 1999, now U.S. Pat. No. 6,427,173, and claims the benefit under 35 U.S.C. §120 of U.S. patent application Ser. No. 09/514,425, filed Feb. 28, 2000, now U.S. Pat. No. 6,427,171. All of the above-listed applications are incorporated by reference herein.