Claims
- 1. A network interface adapter, comprising:
a network interface, coupled to send and receive messages over a network; a client interface, for coupling to a client device so as to receive from the client device work requests to send the messages over the network using a plurality of transport service instances, each of the messages being associated with a respective one of the transport service instances; and message processing circuitry, coupled between the network interface and the client interface, and comprising:
an execution unit, which is adapted to generate the messages in response to the work requests and to pass the messages to the network interface to be sent over the network; a memory, which is coupled to store records of the messages that have been generated by the execution unit in respective lists according to the transport service instances with which the messages are associated; and a completion unit, which is adapted to receive the records from the memory and, responsive thereto, to report to the client device, via the client interface, upon completion of the messages.
- 2. An adapter according to claim 1, wherein the lists are contained together in a common database, in which each of the transport service instances has a respective number of entries, wherein the number is variable among the transport service instances.
- 3. An adapter according to claim 2, wherein the number of the entries for each of the transport service instances is determined by the number of the messages associated therewith that have been sent over the network and whose completion has not yet been reported to the client device by the completion unit.
- 4. An adapter according to claim 2, wherein the lists comprise a linked list of the entries maintained for each of the transport service instances.
- 5. An adapter according to claim 4, wherein when the execution unit generates one of the messages, a corresponding one of the records is pushed onto a tail of the linked list, and wherein when the completion unit is to report on the completion of the one of the messages, the corresponding one of the records is popped from a head of the linked list.
- 6. An adapter according to claim 4, wherein the memory is adapted to store a further linked list of the entries in the database that are free for writing of further records thereto.
- 7. An adapter according to claim 1, wherein at least some of the transport service instances belong to a reliable transport service, and wherein the completion unit is adapted to read the records from the memory of the messages sent using the reliable transport service when respective responses to the messages are received by the network interface, and to report the completion of the messages to the client device responsive to the records and to the responses.
- 8. An adapter according to claim 1, wherein the messages are carried over the network in the form of packets, which are sent and received by the adapter through the network interface.
- 9. An adapter according to claim 8, wherein the network comprises a switch fabric, and wherein the network interface is coupled to send and receive the packets over the switch fabric.
- 10. An adapter according to claim 9, wherein the transport service instances comprise queue pairs, which are used by the client device to interact with a transport layer of the network.
- 11. A network interface adapter, comprising:
a network interface, coupled to send and receive messages containing message data over a network using a plurality of transport service instances, each of the messages being associated with a respective one of the transport service instances; a client interface, for coupling to a client device so as to exchange the message data with the client device; and message processing circuitry, coupled between the network interface and the client interface and adapted to process the messages sent and received over the network using context information with respect to the transport service instances with which the messages are associated, the circuitry comprising:
a first cache memory, adapted to store a first portion of the context information for at least some of the transport service instances, such that each of the at least some of the transport service instances is allocated a substantially equal part of the first cache memory; and a second cache memory, adapted to store a second portion of the context information for the at least some of the transport service instances, such that the part of the second cache memory allocated to each of the transport service instances varies responsive to a respective characteristic of each of the transport service instances.
- 12. An adapter according to claim 11, wherein the characteristic of each of the transport service instances responsive to which the part of the second cache memory allocated thereto varies comprises a respective level of activity on the network that is associated with each of the transport service instances.
- 13. An adapter according to claim 12, wherein the message processing circuitry is adapted to report to the client device upon completion of the messages sent over the network, and wherein the respective level of activity for each of the transport service instances is determined by a respective number of the messages associated with each of the transport service instances that have been sent over the network through the network interface but whose completion has not yet been reported to the client device.
- 14. An adapter according to claim 12, wherein each of the transport service instances is assigned a respective limit on use of the second cache memory, which limit may differ among the transport service instances, and wherein the respective level of activity on the network associated with each of the transport service instances is constrained so that the use of the second cache memory does not exceed the respective limit.
- 15. An adapter according to claim 11, wherein the second portion of the context information for all of the at least some of the transport service instances is contained together in a common database in the second cache memory, in which each of the transport service instances has a respective number of entries that is variable among the transport service instances.
- 16. An adapter according to claim 15, wherein the second portion of the context information is held in the form of a respective linked list for each of the at least some of the transport service instances in the common database.
- 17. An adapter according to claim 11, wherein the first cache memory is coupled to load the first portion of the context information from a system memory associated with the client device, via the client interface, for the at least some of the transport service instances with respect to which the packet processing circuitry is processing the messages.
- 18. An adapter according to claim 11, wherein the messages are carried over the network in the form of packets, which are sent and received by the adapter through the network interface.
- 19. An adapter according to claim 18, wherein the network comprises a switch fabric, and wherein the network interface is coupled to send and receive the packets over the switch fabric.
- 20. An adapter according to claim 19, wherein the transport service instances comprise queue pairs, which are used by the client device to interact with a transport layer of the network.
- 21. A method for network communication, comprising:
receiving work requests from a client device to send messages over a network using a plurality of transport service instances, such that each of the messages is associated with a respective one of the transport service instances; sending the messages over the network in response to the work requests; storing, in a common memory shared among the transport service instances, records of the messages that have been sent over the network in respective lists according to the transport service instances with which the messages are associated; and upon completion of the messages, reading the records from the memory and, responsive thereto, reporting the completion to the client device.
- 22. A method according to claim 21, wherein storing the records comprises storing the lists together in a common database, in which each of the transport service instances has a respective number of entries, wherein the number is variable among the transport service instances.
- 23. A method according to claim 22, wherein the number of the entries for each of the transport service instances is determined by the number of the messages associated therewith that have been sent over the network and whose completion has not yet been reported to the client device by the completion unit.
- 24. A method according to claim 22, wherein the lists comprise a linked list of the entries maintained for each of the transport service instances.
- 25. A method according to claim 24, wherein storing the records comprises, upon sending one of the messages, pushing a corresponding one of the records onto a tail of the linked list, and wherein reading the records comprises popping the corresponding one of the records from a head of the linked list in order to report the completion.
- 26. A method according to claim 24, and comprising maintaining a further linked list of the entries in the database that are free for writing of further records thereto, wherein pushing the corresponding one of the records comprises selecting one of the entries from the head of the further linked list for writing the one of the records thereto.
- 27. A method according to claim 22, wherein at least some of the transport service instances belong to a reliable transport service, and wherein reading the records comprises reading the records of the messages sent using the reliable transport service upon receiving respective responses to the messages from the network, and wherein reporting the completion comprises reporting the completion responsive to the records and to the responses.
- 28. A method according to claim 21, wherein sending the messages comprises sending data packets over the network.
- 29. A method according to claim 28, wherein the network comprises a switch fabric, and wherein sending the data packets comprises sending the packets over the switch fabric.
- 30. A method according to claim 29, wherein the transport service instances comprise queue pairs, which are used by the client device to interact with a transport layer of the network.
- 31. A method for network communication, comprising:
coupling a network adapter between a client device and a network; storing context information in first and second cache memories of the network adapter with respect to a plurality of transport service instances for use in sending and receiving data packets over the network via the adapter, the first and second cache memories being configured to store respective first and second portions of the context information for each of the transport service instances, such that each of the transport service instances is allocated a substantially equal part of the first cache memory for the first portion of its context information, while the part of the second cache memory allocated to each of the transport service instances for the second portion of its context information varies responsive to a respective characteristic of each of the transport service instances; and processing messages sent over the network to and from the client device via the network adapter using the transport service instances, responsive to the context information stored in the first and second cache memories.
- 32. A method according to claim 31, wherein the characteristic of each of the transport service instances responsive to which the part of the second cache memory allocated thereto varies comprises a respective level of activity on the network that is associated with each of the transport service instances.
- 33. A method according to claim 32, and comprising reporting from the network adapter to the client device upon completion of the messages sent over the network, wherein the respective level of activity for each of the transport service instances is determined by a respective number of the messages associated with each of the transport service instances that have been sent over the network by the network adapter but whose completion has not yet been reported to the client device.
- 34. A method according to claim 32, wherein storing the context information comprises assigning each of the transport service instances a respective limit on use of the second cache memory, which limit may differ among the transport service instances, and wherein processing the messages comprises constraining the respective level of activity on the network associated with each of the transport service instances so that the use of the second cache memory does not exceed the respective limit.
- 35. A method according to claim 31, wherein storing the context information comprises storing the second portion of the context information for all of the transport service instances together in a common database in the second cache memory, in which each of the transport service instances has a respective number of entries that is variable among the transport service instances.
- 36. A method according to claim 35, wherein storing the second portion of the context information comprises storing the entries in a respective linked list for each of the transport service instances in the common database.
- 37. A method according to claim 31, wherein storing the context information comprises loading the first portion of the context information from a system memory associated with the client device into the first cache memory for the transport service instances with respect to which the network adapter is processing the messages.
- 38. A method according to claim 31, wherein processing the messages comprises sending and receiving data packets over the network.
- 39. A method according to claim 38, wherein the network comprises a switch fabric, and wherein sending and receiving the data packets comprises sending and receiving the data packets over the switch fabric.
- 40. A method according to claim 39, wherein the transport service instances comprise queue pairs, which are used by the client device to interact with a transport layer of the network.
CROSS-REFERENCE TO RELATED APPLICATIONS
[0001] This application claims the benefit of U.S. Provisional Patent Application No. 60/283,018, filed Apr. 11, 2001. It is a continuation-in-part of a U.S. patent application entitled, “Network Interface Adapter with Shared Data Send Resources,” filed Dec. 4, 2001, and of another U.S. patent application entitled, “Queue Pair Context Cache,” filed Jan. 23, 2002. The disclosures of all these related applications are incorporated herein by reference.
Provisional Applications (1)
|
Number |
Date |
Country |
|
60283018 |
Apr 2001 |
US |
Continuation in Parts (2)
|
Number |
Date |
Country |
Parent |
10000456 |
Dec 2001 |
US |
Child |
10118941 |
Apr 2002 |
US |
Parent |
10052413 |
Jan 2002 |
US |
Child |
10118941 |
Apr 2002 |
US |