IP Library Granted Patent US 8,737,418
Granted Patent B2
US 8,737,418 · App. 13/032,445 · Granted May 27, 2014

Queue speed-up by using multiple linked lists

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,737,418
App. No.
13/032,445
Granted
May 27, 2014
Kind
B2
Abstract

One embodiment of the present invention provides a switch that includes a transmission mechanism configured to transmit frames stored in a queue, and a queue management mechanism configured to store frames associated with the queue in a number of sub-queues which allow frames in different sub-queues to be retrieved independently, thereby facilitating parallel processing of the frames stored in the sub-queues.

Claims (42)

1. A switch, comprising:

a transmission module operable to determine corresponding output ports for frames stored in a queue; and

a queue management module operable to:

store frames associated with the queue in a number of sub-queues which allow frames in different sub-queues to be retrieved independently;

select a second sub-queue for retrieving a second frame before receiving a queue status update of a previously selected first sub-queue from which a first frame has been retrieved; and

schedule subsequent transmissions for the first and second frames before receiving a queue status update of the first sub-queue, thereby achieving a pipelined parallel processing among the sub-queues.

2. The switch of claim 1 , wherein the sub-queues are implemented using linked lists, wherein a respective linked list has a head and a tail pointer, and wherein the head and the tail pointers are maintained by the queue management circuitry.

3. The switch of claim 2 , further comprising a linked list management module operable to:

store a respective linked list corresponding to a respective sub-queue; and

update the head pointer maintained by the queue management circuitry.

4. The switch of claim 1 , wherein the queue management module further comprises a first counter associated with the queue, and wherein a current count of the first counter specifies in which sub-queue an incoming frame is to be enqueued.

5. The switch of claim 4 , wherein the queue management module is operable to queue the incoming frame to a sub-queue following a round-robin sequence.

6. The switch of claim 1 , wherein the queue management module further comprises a second counter associated with the queue, and wherein a current count of the second counter specifies from which sub-queue an outgoing frame is to be dequeued.

7. The switch of claim 6 , wherein the outgoing frame is dequeued from the sub-queues following a round-robin sequence; and

wherein the queue management module is further operable to increment the second counter to select the second sub-queue before receiving a queue status update of the first sub-queue.

8. The switch of claim 1 , wherein the sub-queues include at least one queue that is associated with an inactive output port.

9. The switch of claim 1 , wherein the switch is a Fibre Channel over Ethernet (FCoE) switch.

10. The switch of claim 1 , wherein the queue is associated with a priority class.

11. The switch of claim 1 , wherein the queue is a Fibre Channel (FC) virtual channel (VC) queue configured to store frames belonging to a particular VC.

12. A computer-executable method for facilitating queuing of communication frames at a switch, comprising:

storing frames associated with a queue in a number of sub-queues which allow frames in different sub-queues to be retrieved independently;

selecting a second sub-queue for retrieving a second frame before receiving a queue status update of a previously selected first sub-queue from which a first frame has been retrieved; and

scheduling subsequent transmissions for the first and second frames before receiving a queue status update of the first sub-queue, thereby achieving a pipelined parallel processing among the sub-queues.

13. The method of claim 12 , further comprising:

implementing the sub-queues using linked lists, wherein a respective linked list has a head and a tail pointer; and

maintaining the head and the tail pointers for the linked list in queue management circuitry.

14. The method of claim 13 , further comprising:

storing a respective linked list corresponding to a respective sub-queue in a linked-list management circuitry; and

updating, by the linked-list management circuitry, the head pointer maintained in the queue management circuitry after a frame is retrieved from the corresponding sub-queue.

15. The method of claim 12 , further comprising maintaining a first counter associated with the queue, wherein a current count of the first counter specifies in which sub-queue an incoming frame is to be enqueued.

16. The method of claim 15 , wherein the incoming frame is enqueued to a sub-queue following a round-robin sequence.

17. The method of claim 12 , further comprising maintaining a second counter associated with the queue, and wherein a current count of the second counter specifies from which sub-queue an outgoing frame is to be dequeued.

18. The method of claim 17 , wherein the outgoing frame is dequeued from the sub-queues following a round-robin sequence; and

further comprising incrementing the second counter to select the second sub-queue before receiving a queue status update of the first sub-queue.

19. The method of claim 12 , wherein storing the frames in the sub-queues involves storing at least one frame in a queue that is associated with an inactive output port.

20. The method of claim 12 , wherein the switch is a Fibre Channel over Ethernet (FCoE) switch.

21. The method of claim 12 , wherein the queue is associated with a priority class.

22. The method of claim 12 , wherein the queue is a Fibre Channel (FC) virtual channel (VC) queue configured to store frames belonging to a particular VC.

23. A queuing means, comprising:

a storing means for storing frames associated with a queue in a number of sub-queues which allow frames in different sub-queues to be retrieved independently;

a selecting means for selecting a second sub-queue for retrieving a second frame before receiving a queue status update of a previously selected first sub-queue from which a first frame has been retrieved; and

a scheduling means for scheduling subsequent transmissions for the first and second frames before receiving a queue status update of the first sub-queue, thereby achieving a pipelined parallel processing among the sub-queues.

Assignments (7)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 18, 2018
From: BROCADE COMMUNICATIONS SYSTEMS LLC
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 047270/0247 →
CHANGE OF NAME Recorded Dec 13, 2017
From: BROCADE COMMUNICATIONS SYSTEMS, INC.
To: BROCADE COMMUNICATIONS SYSTEMS LLC
Reel/Frame 044891/0536 →
RELEASE OF SECURITY INTEREST Recorded Jan 22, 2015
From: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
To: BROCADE COMMUNICATIONS SYSTEMS, INC.; FOUNDRY NETWORKS, LLC
Reel/Frame 034804/0793 →
RELEASE OF SECURITY INTEREST Recorded Jan 21, 2015
From: BANK OF AMERICA, N.A., AS ADMINISTRATIVE AGENT
To: BROCADE COMMUNICATIONS SYSTEMS, INC.; FOUNDRY NETWORKS, LLC
Reel/Frame 034784/0609 →
SUPPLEMENTAL PATENT SECURITY AGREEMENT Recorded Sep 26, 2011
From: BROCADE COMMUNICATIONS SYSTEMS, INC.; FOUNDRY NETWORKS, LLC; INRANGE TECHNOLOGIES CORPORATION; MCDATA CORPORATION; MCDATA SERVICES CORPORATION
To: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 026971/0042 →
SUPPLEMENTAL PATENT SECURITY AGREEMENT Recorded Sep 20, 2011
From: BROCADE COMMUNICATIONS SYSTEMS, INC.; FOUNDRY NETWORKS, LLC; MCDATA CORPORATION
To: BANK OF AMERICA, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 026938/0922 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 14, 2011
From: CHENG, JOSEPH JUH-EN; LIU, JIAN
To: BROCADE COMMUNICATIONS SYSTEMS, INC.
Reel/Frame 025949/0381 →