Doorbell handling with priority processing function
First Claim
Patent Images
1. A method for communication over a network, comprising:
- assigning one or more doorbell addresses on a network interface adapter for use by a host processor;
writing a first descriptor to a system memory associated with the host processor, the first descriptor defining a first message to be sent over the network;
writing a command to a first one of the doorbell addresses instructing the adapter to read and execute the first descriptor;
writing a second descriptor to a second one of the doorbell addresses, the second descriptor defining a second message to be sent over the network;
responsive to the command having been written to the first one of the doorbell addresses, reading the first descriptor from the system memory using the network interface adapter, and sending the first message from the network interface adapter over the network responsive to the first descriptor; and
responsive to the second descriptor having been written to the second one of the doorbell addresses, sending the second message from the network interface adapter over the network.
3 Assignments
0 Petitions
Accused Products
Abstract
A network interface adapter provides a host processor with two complementary modes of submitting descriptors to be executed by the adapter: a normal mode, in which the host writes descriptors to a system memory and rings an assigned doorbell to notify the adapter; and a priority mode, in which the host writes the descriptor itself to a doorbell address of the adapter. In the priority mode, the adapter is relieved of the need to read the descriptor from the memory, and can thus begin execution as soon as it has resources available to do so.
-
Citations
29 Claims
-
1. A method for communication over a network, comprising:
-
assigning one or more doorbell addresses on a network interface adapter for use by a host processor;
writing a first descriptor to a system memory associated with the host processor, the first descriptor defining a first message to be sent over the network;
writing a command to a first one of the doorbell addresses instructing the adapter to read and execute the first descriptor;
writing a second descriptor to a second one of the doorbell addresses, the second descriptor defining a second message to be sent over the network;
responsive to the command having been written to the first one of the doorbell addresses, reading the first descriptor from the system memory using the network interface adapter, and sending the first message from the network interface adapter over the network responsive to the first descriptor; and
responsive to the second descriptor having been written to the second one of the doorbell addresses, sending the second message from the network interface adapter over the network. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
-
10. A method for direct memory access (DMA), comprising:
-
writing a first descriptor to a system memory associated with a host processor, the first descriptor defining a first operation for execution by a DMA engine;
writing a command to a first doorbell address of the DMA engine, instructing the engine to read and execute the first descriptor;
writing a second descriptor to a second doorbell address of the DMA engine, the second descriptor defining a second operation for execution by the DMA engine;
responsive to the command written to the first doorbell address, reading the first descriptor from the system memory and executing the first descriptor using the DMA engine; and
responsive to the second descriptor having been written to the second doorbell address, executing the second descriptor using the DMA engine. - View Dependent Claims (11, 12, 13, 14, 16, 17, 18, 19, 20, 21, 22, 23, 26, 27, 28, 29)
-
-
15. A network interface adapter, for coupling a host processor to a communication network, the adapter comprising:
-
a range of doorbell addresses in an address space of the host processor, the range including first and second doorbell addresses;
execution circuitry, adapted to send messages over the network responsive to descriptors prepared by the host processor, the descriptors including first and second descriptors; and
a doorbell handler, which is coupled to the range of doorbell addresses so as to receive a command written by the host processor to the first doorbell address, indicating that the first descriptor has been written to a system memory associated with the host processor, the first descriptor defining a first one of the messages, and so as to receive the second descriptor written by the host processor to the second doorbell address, the second descriptor defining a second one of the messages, the doorbell handler being further coupled, responsive to the command having been written to the first doorbell address, to instruct the execution circuitry to read the first descriptor from the system memory and to execute the first descriptor so as to send the first one of the messages, and responsive to the second descriptor having been written to the second doorbell address, to pass the second descriptor to the execution circuitry and to instruct the execution circuitry to execute the second descriptor so as to send the second one of the messages.
-
-
24. A host channel adapter, for coupling a host processor to a switch fabric, the adapter comprising:
-
a range of doorbell addresses in an address space of the host processor, the range including first and second doorbell addresses;
execution circuitry, adapted to generate data packets for transmission over the network responsive to work requests prepared by the host processor, the work requests including first and second work requests; and
a doorbell handler, which is coupled to the range of doorbell addresses so as to receive a command written by the host processor to the first doorbell address, indicating that the first work request has been written to a system memory associated with the host processor, and so as to receive the second work request written by the host processor to the second doorbell address, the doorbell handler being further coupled, responsive to the command having been written to the first doorbell address, to pass instructions to the execution circuitry to read the first work request from the system memory and to execute a first work queue element corresponding to the first work request so as to generate the data packets called for by the first work request, and responsive to the second work request having been written to the second doorbell address, to pass a work queue element corresponding to the second work request to the execution circuitry and to instruct the execution circuitry to execute the second work queue element so as to generate the data packets called for by the second work request.
-
-
25. A direct memory access (DMA) device, comprising:
-
a range of doorbell addresses in an address space of a host processor, the range including first and second doorbell addresses;
a DMA engine, adapted to access a system memory associated with the host processor, responsive to descriptors prepared by the host processor, the descriptors including first and second descriptors defining respective first and second operations for execution by the DMA engine; and
a doorbell handler, which is coupled to the range of doorbell addresses so as to receive a command written by the host processor to the first doorbell address, indicating that the first descriptor has been written to the system memory, and so as to receive the second descriptor written by the host processor to the second doorbell address, the doorbell handler being further coupled, responsive to the command having been written to the first doorbell address, to instruct the DMA engine to execute the first operation responsive to the first descriptor in the system memory, and responsive to the second descriptor having been written to the second doorbell address, to instruct the DMA engine to execute the second operation.
-
Specification