Network interface device employing a DMA command queue
First Claim
1. An apparatus, comprising:
- means for maintaining a DMA command queue and a DMA command complete queue on a network interface device and for causing values to be pushed onto the DMA command queue and for causing values to be popped from the DMA command complete queue, each of the values pushed onto the DMA command queue being indicative of one of a plurality of DMA commands; and
a DMA controller that executes the plurality of DMA commands such that the DMA commands are completed in a particular order, the DMA controller pushing values onto the DMA command complete queue, each of the values pushed onto the DMA command complete queue indicating completion of one of the plurality of DMA commands.
3 Assignments
0 Petitions
Accused Products
Abstract
A network interface device couples a host computer to a network. The network interface device includes a processor and a DMA controller. The processor causes the DMA controller to perform multiple DMA commands before the processor takes a particular software branch. The processor issues the DMA commands by placing the DMA commands in a memory and then pushing values indicative of the DMA commands onto a DMA command queue. The values are popped off the DMA command queue and are executed by the DMA controller one at a time. The DMA commands are executed in the same order that they were issued by the processor. The processor need not monitor multiple DMA commands to make sure they have all been completed before the software branch is taken, but rather the processor pops a DMA command complete queue to make sure that the last of the DMA commands has been completed.
-
Citations
33 Claims
-
1. An apparatus, comprising:
-
means for maintaining a DMA command queue and a DMA command complete queue on a network interface device and for causing values to be pushed onto the DMA command queue and for causing values to be popped from the DMA command complete queue, each of the values pushed onto the DMA command queue being indicative of one of a plurality of DMA commands; and a DMA controller that executes the plurality of DMA commands such that the DMA commands are completed in a particular order, the DMA controller pushing values onto the DMA command complete queue, each of the values pushed onto the DMA command complete queue indicating completion of one of the plurality of DMA commands. - View Dependent Claims (2, 3)
-
-
4. A network interface device, comprising:
-
queue manager hardware that maintains a DMA command queue and a DMA command complete queue; a processor coupled to the queue manager hardware, the processor causing values to be pushed onto the DMA command queue, the processor causing values to be popped from the DMA command complete queue; a DMA controller coupled to the queue manager hardware, the DMA controller executing DMA commands, the DMA commands executed being indicated by values popped off the DMA command queue, the DMA controller pushing values onto the DMA command complete queue; local memory that temporarily stores a first portion of data transferred by execution of one or more DMA commands from data storage on a host coupled to the network interface device into the local memory, the local memory also temporarily storing a second portion of data transferred by execution of one or more DMA commands from the data storage on the host to the local memory; and physical layer interface and media access control circuitry, the physical layer interface and media access control circuitry outputting the first and second portions of data from the network interface device to a network, the first and second portions of data being output in the form of a data payload of a network communication. - View Dependent Claims (5, 6)
-
-
7. A method, comprising:
-
(a) pushing values onto a DMA command queue in an order, each of the values being indicative of a different one of a plurality of DMA commands, wherein the DMA command queue is maintained on a network interface device (NID), and wherein the NID performs fast-path transport and network layer protocol processing; (b) popping the DMA command queue such that a DMA controller on the NID executes the plurality of DMA commands in the order in which the associated values were pushed onto the DMA command queue, the DMA controller being a part of the NID; (c) the DMA controller pushing values onto a DMA command complete queue, each of the values pushed onto the DMA command complete queue indicating completion of one of the plurality of DMA commands; and (d) popping the DMA command complete queue. - View Dependent Claims (8, 9, 10)
-
-
11. A method, comprising:
-
(a) using a DMA command queue to ensure that a plurality of DMA moves are completed in a particular sequence, each of the DMA moves being a move of information from one location on a network interface device to another location on the network interface device, the DMA command queue being maintained by queue manager hardware on the network interface device, the DMA moves being carried out by a DMA controller, the DMA controller being a part of the network interface device; and (b) outputting at least part of the information from the network interface device, wherein a first of the plurality of DMA moves is a move of at least a part of a frame of a session layer message, and wherein a second of the plurality of DMA moves is a move of at least a part of a subsequent frame of the session layer message, wherein a processor pushes values onto the DMA command queue, each of the values being indicative of a different DMA command, and wherein the processor analyzes at least a part of the information moved in the first move, the processor doing the analyzing after the first move is complete. - View Dependent Claims (12, 13)
-
-
14. A method, comprising:
-
(a) using a DMA command queue to ensure that a plurality of DMA moves are completed in a particular sequence, each of the DMA moves being a move of information from one location on a network interface device to another location on the network interface device, the DMA command queue being maintained by queue manager hardware on the network interface device, the DMA moves being carried out by a DMA controller, the DMA controller being a part of the network interface device; (b) the DMA controller pushing values onto a DMA command complete queue, each value indicating that one of the DMA moves has been carried out by the DMA controller; (c) a processor on the network interface device popping values off the DMA command complete queue; and (d) outputting at least part of the information from the network interface device. - View Dependent Claims (15, 16, 17)
-
-
18. A method, comprising:
-
(a) maintaining on a network interface device a DMA command queue; (b) a processor on the network interface device causing a value to be pushed onto the DMA command queue, the value being indicative of corresponding DMA command; (c) popping a value off the DMA command queue, a DMA controller on the network interface device then executing a DMA command indicated by the popped value; (d) repeating (b) and (c) such that a first portion of data is transferred from host storage to a local memory on the network interface device and such that a second portion of data is transferred from the host storage to the local memory on the network interface device; and (e) after both the first portion and the second portion are present in the local memory, outputting the first and second portions of data from the network interface device to a network, the first and second portions making up at least a part of a data payload of a network communication, wherein the pushing of (b) occurs twice before the popping of (c) occurs once.
-
-
19. A method, comprising:
-
(a) maintaining on a network interface device a DMA command queue; (b) a processor on the network interface device causing a value to be pushed onto the DMA command queue, the value being indicative of corresponding DMA command; (c) popping a value off the DMA command queue, a DMA controller on the network interface device then executing a DMA command indicated by the popped value; (d) repeating (b) and (c) such that a first portion of data is transferred from host storage to a local memory on the network interface device and such that a second portion of data is transferred from the host storage to the local memory on the network interface device; (e) maintaining a DMA command complete queue on the network interface device, the DMA controller pushing values onto the DMA command complete queue, the processor popping values off the DMA command complete queue; and (f) after both the first portion and the second portion are present in the local memory, outputting the first and second portions of data from the network interface device to a network, the first and second portions making up at least a part of a data payload of a network communication. - View Dependent Claims (20, 21, 22, 23, 24, 25, 26)
-
-
27. A method, comprising:
-
(a) maintaining on a network interface device a DMA command queue, the DMA command queue being maintained by queue manager hardware on the network interface device; (b) a processor on the network interface device causing a value to be pushed onto the DMA command queue, the value being indicative of corresponding DMA command; (c) popping a value off the DMA command queue, a DMA controller on the network interface device then executing a DMA command indicated by the popped value; (d) repeating (b) and (c) such that a first portion of data is transferred from a first place on the network interface device to a second place on the network interface device, and such that a second portion of data is transferred from the first place on the network interface device to the second place on the network interface device; (e) maintaining a DMA command complete queue on the network interface device, the DMA controller pushing values onto the DMA command complete queue, the processor popping values off the DMA command complete queue; (f) after both the first portion and the second portion have been transferred to the second place in (d), the processor taking a software branch; and (g) after taking the software branch, the processor outputting the first and second portions of data from the network interface device. - View Dependent Claims (28, 29, 30, 31, 32, 33)
-
Specification