Method and apparatus for minimizing spinlocks and retaining packet order in systems utilizing multiple transmit queues
First Claim
1. A method, comprising:
- defining at least two transmit queues for a priority level group;
receiving at least two transmit requests substantially simultaneously, the at least two transmit requests corresponding to at least one packet, respectively, the at least one packet having a priority designation corresponding to the priority level group; and
processing the at least two transmit requests in parallel to queue the at least one packet corresponding to a first one of the at least two transmit requests in a first available one of the at least two transmit queues, and to queue the at least one packet corresponding to a second one of the at least two transmit requests in a next available one of the at least two transmit queues.
1 Assignment
0 Petitions
Accused Products
Abstract
A method, apparatus, and article of manufacture for retaining packet order in multiprocessor systems utilizing multiple transmit queues while minimizing spinlocks are disclosed herein. Embodiments of the present invention define multiple transmit queues for a given priority level of packets to allow parallel processing and queuing of packets having equal priority in different transmit queues. Queuing packets of equal priority in different transmit queues minimizes processor time spent attempting to acquire queue-specific resources associated with one particular transmit queue. In addition, embodiments of the present invention provide an assignment mechanism to maximize utilization of the multiple transmit queues by queuing packets corresponding to each transmit request in a next available transmit queue defined for a given priority level. Coordination between hardware and software allows the order of the queued packets to be maintained in the transmission process.
-
Citations
27 Claims
-
1. A method, comprising:
-
defining at least two transmit queues for a priority level group;
receiving at least two transmit requests substantially simultaneously, the at least two transmit requests corresponding to at least one packet, respectively, the at least one packet having a priority designation corresponding to the priority level group; and
processing the at least two transmit requests in parallel to queue the at least one packet corresponding to a first one of the at least two transmit requests in a first available one of the at least two transmit queues, and to queue the at least one packet corresponding to a second one of the at least two transmit requests in a next available one of the at least two transmit queues. - View Dependent Claims (2, 3, 4, 5, 6)
-
-
7. A method, comprising:
-
defining at least two transmit queues to correspond to at least one priority level;
receiving at least two transmit requests at a send packet function of a device driver substantially simultaneously, each of the at least two transmit requests corresponding to at least one packet, respectively;
assigning the at least one packet corresponding to each of the at least two transmit requests to a queue group in response to a priority designation, the queue group including the at least two transmit queues corresponding to the at least one priority level;
queuing the at least one packet corresponding to a first one of the at least two transmit requests in a first available one of the at least two transmit queues; and
queuing the at least one packet corresponding to a second one of the at least two transmit requests in a next available one of the at least two transmit queues. - View Dependent Claims (8, 9, 10, 11)
-
-
12. An article of manufacture, comprising:
-
a machine-accessible medium including data that, if accessed by a machine, cause the machine to, define at least two transmit queues for a priority level group;
receive at least two transmit requests substantially simultaneously, the at least two transmit requests corresponding to at least one packet, respectively, the at least one packet having a priority designation corresponding to the priority level group; and
process the at least two transmit requests in parallel to queue the at least one packet corresponding to a first one of the at least two transmit requests in a first available one of the at least two transmit queues, and to queue the at least one packet corresponding to a second one of the at least two transmit requests in a next available one of the at least two transmit queues. - View Dependent Claims (13, 14, 15, 16, 17)
-
-
18. A article of manufacture, comprising:
a machine-accessible medium including data that, if accessed by a machine, cause the machine to, define at least two transmit queues to correspond to at least one priority level;
receive at least two transmit requests at a send packet function of a device driver substantially simultaneously, each of the at least two transmit requests corresponding to at least one packet, respectively;
assign the at least one packet corresponding to each of the at least two transmit requests to a queue group in response to a priority designation, the queue group including the at least two transmit queues corresponding to the at least one priority level;
queue the at least one packet corresponding to a first one of the at least two transmit requests in a first available one of the at least two transmit queues; and
queue the at least one packet corresponding to a second one of the at least two transmit requests in a next available one of the at least two transmit queues. - View Dependent Claims (19, 20, 21, 22)
-
23. A system, comprising:
-
a plurality of processors to receive at least two transmit requests substantially simultaneously, each of the at least two transmit requests corresponding to at least one packet having a priority designation corresponding to a priority level group;
a communications interface, communicatively coupled to the plurality of processors, to transmit packets on a network; and
a memory, communicatively coupled to the plurality of processors, to store data and to provide at least two transmit queues accessible to the communications interface, the at least two transmit queues defined to correspond to the priority level group, and in response to receipt of the at least two transmit requests substantially simultaneously at the plurality of processors, the plurality of processors process the at least two transmit requests in parallel to queue the at least one packet corresponding to a first one of the at least two transmit requests in a first available one of the at least two transmit queues and to queue the at least one packet corresponding to a second one of the at least two transmit requests in a next available one of the at least two transmit queues. - View Dependent Claims (24, 25, 26, 27)
-
Specification