Claims
- 1. A method of processing a received packet, the method comprising:
identifying a network connection of the received packet; and allocating the network connection to a one of a set of multiple network protocol off-load engines.
- 2. The method of claim 1,
wherein the connection comprises a Transport Control Protocol (TCP) connection; and wherein at least one of the network protocol off-load engines comprises a TCP off-load engine.
- 3. The method of claim 1, wherein the connection comprises a transport layer connection.
- 4. The method of claim 1, wherein the allocating comprises minimizing the number of network protocol off-load engines currently allocated at least one connection.
- 5. The method of claim 1, wherein the allocating comprises allocating based on at least one signal from at least one of the engines identifying the engine's current usage.
- 6. The method of claim 1, wherein the allocating comprises storing data for the connection.
- 7. The method of claim 6, wherein the data comprises a source address, destination address, source port, and destination port.
- 8. The method of claim 1, wherein the allocating comprises maintaining a queue of engines allocated a first connection.
- 9. The method of claim 1, further comprising asserting a signal to a one of the multiple network protocol off-load engines allocated for the connection of a received packet.
- 10. The method of claim 9, further comprising performing network protocol operations on the packet with the network protocol off-load engine allocated to the connection.
- 11. The method of claim 1, further comprising
asserting a signal to network protocol off-load engines allocated to at least one on-going connection; and; receiving signals from the network protocol off-load engines receiving the signal that identify which, if any, of the network protocol off-load engines has been allocated to the connection of the packet.
- 12. A network protocol off-load engine, the engine comprising:
an input interface to receive packet data; an output interface to output results of network protocol operations; a controller interface to communicate with a controller of multiple network protocol off-load engines; and logic to:
perform network protocol operations on received packet data; and communicate with the controller by, at least, receiving a signal when the engine has been allocated to process a connection of a received packet.
- 13. The engine of claim 12, wherein the network protocol operations comprise Transport Control Protocol (TCP) operations.
- 14. The engine of claim 12, wherein the output interface comprises an interface to a bus shared by the multiple network protocol off-load engines.
- 15. The engine of claim 12, wherein the engine comprises storage and logic to store data identifying a connection allocated to the engine.
- 16. The engine of claim 15, wherein the storage comprises a content addressable memory (CAM).
- 17. The engine of claim 15, further comprising logic to assert a signal to the controller indicating that a lookup of a connection in the storage succeeded.
- 18. The engine of claim 12, further comprising asserting at least one signal to the controller identifying network protocol off-load engine usage.
- 19. The engine of claim 18, wherein the at least one signal comprises at least one of the following: a network protocol off-load engine full signal and a network protocol off-load engine empty signal.
- 20. The engine of claim 12, wherein the logic comprises a processor and storage storing instructions to perform network protocol operations.
- 21. The engine of claim 12, wherein the at least one signal enables the engine to perform network protocol operations on the received packet data.
- 22. A controller, the controller comprising:
at least one interface to a set of multiple network protocol off-load engines; and logic to allocate a network connection to a one of a set of multiple network protocol off-load engines.
- 23. The controller of claim 22,
wherein the connection comprises a Transport Control Protocol (TCP) connection; and wherein at least one of the network protocol off-load engines comprises a TCP off-load engine.
- 24. The controller of claim 22, wherein the logic to allocate comprises logic to minimize the number of off-load engines currently allocated at least one connection.
- 25. The controller of claim 22, wherein the allocating comprises allocating based on signals received from at least one of the engines, the signals identifying the at least one engines' respective usage.
- 26. The controller of claim 22, further comprising logic to assert a signal only to an engine allocated for the connection of a received packet.
- 27. The controller of claim 22, further comprising logic to:
assert a signal only to engines allocated to at least one on-going connection; and; receive signals from the engines receiving the signal that identify which, if any, of the engines has been allocated to a connection of a packet.
- 28. The controller of claim 22,
further comprising an interface to communicate with a hierarchically higher controller.
- 29. A system, comprising:
multiple network protocol off-load engines, the engines to perform network protocol operations on received packet data; at least one controller coupled to at least a sub-set of the multiple network protocol off-engines; a first bus to carry data of received packets to the multiple network protocol off-load engines; and a second bus to carry results of engine processing of the received packets from the multiple network protocol off-load engines.
- 30. The system of claim 29, wherein the multiple network protocol off-load engines comprise at least one Transport Control Protocol (TCP) off-load engine.
- 31. The system of claim 29, wherein the controller coordinates access to the second bus.
- 32. The system of claim 29, wherein the controller comprises logic to allocate a network connection to a one of the multiple network protocol off-load engines.
- 33. The system of claim 32, wherein the logic to allocate comprises logic to minimize a number of engines allocated to at least one on-going connection.
- 34. The system of claim 29, wherein the controller and the multiple network protocol off-load engines communicate using at least one of the following signals: a usage signal sent from an engine to the controller that identifies usage of an engine, a grant signal sent by the controller to at least one engine, and a signal sent from an engine to the controller indicating that the engine has been allocated to the connection of a packet.
- 35. The system of claim 29, wherein the multiple network protocol off-load engines store data identifying connections allocated to the respective engines.
- 36. The system of claim 29, further comprising at least one hierarchical controller to coordinate operation of multiple ones of the at least one controller, individual ones of the at least one controller coupled to a different sub-set of the multiple network protocol off-load engines.
- 37. The system of claim 36, wherein the hierarchical controller comprises logic to allocate a connection to the multiple network protocol off-load engines managed by a one of the of the at least one controllers.
- 38. A system, comprising:
at least one physical layer component (PHY); at least one Ethernet medium access controller (MAC) coupled to the at least one PHY; at least one host system, the host system comprising:
at least one host processor; and memory accessible by the host processor(s); and an Transport Control Protocol (TCP) off-load sub-system coupled to the at least one Ethernet MAC and the at least one host system, TCP off-load sub-system comprising:
multiple TCP off-load engines to perform TCP operations on received packets; and at least one controller, the at least one controller comprising logic to allocate a connection to a one of the multiple network protocol off-load engines.
- 39. The system of claim 38, wherein the at least one controller and at least one of the network protocol off-load engines communicate using at least one of the following signals: a usage signal sent from an engine to the controller that identifies usage of an engine, a grant signal sent by the controller to at least one engine, and a signal sent from an engine to the controller indicating that the engine has been allocated to the connection of a packet.
- 40. The system of claim 38,
further comprising at least one hierarchical controller; and wherein the at least one hierarchical controller and the at least one controller communicate using at least one of the following signals: a usage signal sent from the controller to the hierarchically higher controller that identifies usage of network protocol off-load engines coupled to the controller, a grant signal sent by the hierarchically higher controller to the controller, and a signal sent from the controller to the hierarchically higher controller indicating that a network protocol off-load engine coupled to the controller has been allocated to the connection of a packet.
REFERENCE TO RELATED APPLICATIONS
[0001] This application relates to the following co-pending applications: “NETWORK PROTOCOL ENGINE”, U.S. Ser. No. 10/234,392, filed Sep. 3, 2002; “PACKET-BASED CLOCK SIGNAL”, U.S. Ser. No. 10/234,489, filed Sep. 3, 2002; and “TRACKING OUT-OF-ORDER PACKETS”, U.S. Ser. No. 10/234,493, filed Sep. 3, 2002.