IP Library Granted Patent US 9,160,684
Granted Patent B2
US 9,160,684 · App. 13/250,891 · Granted Oct 13, 2015

Dynamic updating of scheduling hierarchy in a traffic manager of a network processor

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 9,160,684
App. No.
13/250,891
Granted
Oct 13, 2015
Kind
B2
Abstract

Described embodiments provide for dynamically controlling a scheduling rate of each node in a scheduling hierarchy of a network processor. A traffic manager generates a tree scheduling hierarchy having a root scheduler and N scheduler levels. The network processor generates tasks corresponding to received packets. A traffic manager enqueues received tasks in a queue of the scheduling hierarchy associated with a data flow. The queue has a parent scheduler at each level of the hierarchy up to the root scheduler. The traffic manager maintains one or more scheduling data structures for each node in the scheduling hierarchy. If the traffic manager receives a rate reduction request corresponding to a given node of the scheduling hierarchy, the traffic manager updates one or more indicators in the scheduling data structure corresponding to the given node and removes the given node from the scheduling hierarchy, thereby reducing the scheduling rate of the node.

Claims (75)

1. A method of dynamically controlling a scheduling rate of each node in a scheduling hierarchy of a hardware network processor having a plurality of processing modules and at least one shared memory with packet data, the method comprising:

generating, by a traffic manager of the network processor, a scheduling hierarchy comprising a tree structure of a root scheduler and N scheduler levels, wherein a scheduler is a branch node and a queue is a leaf node of the scheduling hierarchy, wherein N is a positive integer;

generating, by the network processor, one or more tasks corresponding to each of a plurality of received packets associated with one or more data flows of the network processor;

enqueuing, by the traffic manager, a task provided by one of the plurality of processing modules of the network processor to an associated queue of the scheduling hierarchy, wherein the queue is associated with a data flow corresponding to the received task, the queue having a corresponding parent scheduler at each of one or more next levels of the scheduling hierarchy up to the root scheduler;

maintaining one or more scheduling data structures for each node in the scheduling hierarchy;

receiving a rate reduction request corresponding to a given node of the scheduling hierarchy;

updating one or more indicators in the scheduling data structure corresponding to the given node; and

removing the given node from the scheduling hierarchy by a corresponding parent scheduler of the given node, thereby reducing the scheduling rate of the given node.

2. The method of claim 1 , wherein the rate reduction request is one of a backpressure request by one of the processing modules to reduce a scheduling rate of the given node and a timer event request by the corresponding parent scheduler of the given node.

3. The method of claim 2 , wherein the step of updating one or more indicators in the scheduling data structure corresponding to the given node further comprises:

if the rate reduction request is a backpressure request, setting a backpressure indicator of the scheduling data structure corresponding to the given node; and

if the rate reduction request is a timer event request, setting a timer indicator of the scheduling data structure corresponding to the given node.

4. The method of claim 1 , wherein the step of removing the given node from the scheduling hierarchy by a corresponding parent scheduler of the given node comprises:

setting one or more status indicators of the corresponding parent scheduler, wherein the one or more status indicators comprise an active list of the corresponding parent scheduler, wherein the given node is indicated as inactive.

5. The method of claim 1 , further comprising:

reading the scheduling data structure from a level one (L1) cache of the traffic manager; and

writing the updated scheduling data structure to the L1 cache.

6. The method of claim 1 , further comprising:

receiving a rate reduction release request corresponding to the given node;

reading the scheduling data structure corresponding to the given node from the L1 cache;

determining a task count corresponding to the given node based on the scheduling data structure;

if the task count is non-zero:

re-enqueuing the given node in the scheduling hierarchy;

updating one or more indicators in the scheduling data structure corresponding to the given node indicating that the given node is released from the rate reduction request; and

writing the updated scheduling data structure to the L1 cache.

7. The method of claim 6 , wherein the step of re-enqueuing the given node in the scheduling hierarchy comprises:

providing a re-enqueue request to the corresponding parent scheduler of the given node, wherein the re-enqueue request comprises a node ID value of the given node; and

updating, by the corresponding parent scheduler, one or more status indicators corresponding to the given node.

8. The method of claim 7 , wherein the one or more status indicators comprise a pending list of the corresponding parent schedule, wherein the given node is indicated as pending, thereby replacing the given node in the scheduling hierarchy.

9. The method of claim 8 , further comprising:

scheduling, by the parent scheduler, corresponding child nodes on a corresponding active list; and

if no active child nodes remain, scheduling corresponding child nodes from the pending list.

10. The method of claim 6 , wherein the rate reduction release request is one of a backpressure release request by one of the processing modules to return to a given scheduling rate of the given node and a timer release request by the corresponding parent scheduler of the given node.

11. The method of claim 10 , comprising:

sending the timer release request after a predetermined amount of time elapses.

12. A non-transitory machine-readable medium, having encoded thereon program code, wherein, when the program code is executed by a machine, the machine implements a method of dynamically controlling a scheduling rate of each node in a scheduling hierarchy of a hardware network processor having a plurality of processing modules and at least one shared memory with packet data, the method comprising:

generating, by a traffic manager of the network processor, a scheduling hierarchy comprising a tree structure of a root scheduler and N scheduler levels, wherein a scheduler is a branch node and a queue is a leaf node of the scheduling hierarchy, wherein N is a positive integer;

generating, by the network processor, one or more tasks corresponding to each of a plurality of received packets associated with one or more data flows of the network processor;

enqueuing, by the traffic manager, a task provided by one of the plurality of processing modules of the network processor to an associated queue of the scheduling hierarchy, wherein the queue is associated with a data flow corresponding to the received task, the queue having a corresponding parent scheduler at each of one or more next levels of the scheduling hierarchy up to the root scheduler;

maintaining one or more scheduling data structures for each node in the scheduling hierarchy;

receiving a rate reduction request corresponding to a given node of the scheduling hierarchy;

updating one or more indicators in the scheduling data structure corresponding to the given node; and

removing the given node from the scheduling hierarchy by a corresponding parent scheduler of the given node, thereby reducing the scheduling rate of the given node.

13. The non-transitory machine-readable medium of claim 12 , wherein the rate reduction request is one of a backpressure request by one of the processing modules to reduce a scheduling rate of the given node and a timer event request by the corresponding parent scheduler of the given node.

14. The non-transitory machine-readable medium of claim 12 , wherein the step of updating one or more indicators in the scheduling data structure corresponding to the given node further comprises:

if the rate reduction request is a backpressure request, setting a backpressure indicator of the scheduling data structure corresponding to the given node; and

if the rate reduction request is a timer event request, setting a timer indicator of the scheduling data structure corresponding to the given node.

15. The non-transitory machine-readable medium of claim 12 , wherein the step of removing the given node from the scheduling hierarchy by a corresponding parent scheduler of the given node comprises:

setting one or more status indicators of the corresponding parent scheduler, wherein the one or more status indicators comprise an active list of the corresponding parent scheduler, wherein the given node is indicated as inactive.

16. The non-transitory machine-readable medium of claim 12 , further comprising:

receiving a rate reduction release request corresponding to the given node;

reading the scheduling data structure corresponding to the given node from an L1 cache;

determining a task count corresponding to the given node based on the scheduling data structure;

if the task count is non-zero:

re-enqueuing the given node in the scheduling hierarchy;

updating one or more indicators in the scheduling data structure corresponding to the given node indicating that the given node is released from the rate reduction request; and

writing the updated scheduling data structure to the L1 cache.

17. The non-transitory machine-readable medium of claim 16 , wherein the step of re-enqueuing the given node in the scheduling hierarchy comprises:

providing a re-enqueue request to the corresponding parent scheduler of the given node, wherein the re-enqueue request comprises a node ID value of the given node; and

updating, by the corresponding parent scheduler, one or more status indicators corresponding to the given node,

wherein the one or more status indicators comprise a pending list of the corresponding parent schedule, wherein the given node is indicated as pending, thereby replacing the given node in the scheduling hierarchy.

18. The non-transitory machine-readable medium of claim 17 , further comprising:

scheduling, by the parent scheduler, corresponding child nodes on a corresponding active list; and

if no active child nodes remain, scheduling corresponding child nodes from the pending list.

19. A hardware network processor comprising:

a plurality of processing modules and at least one shared memory with packet data, wherein one of the plurality of processing modules is configured to generate one or more tasks corresponding to each of a plurality of received packets associated with one or more data flows;

a traffic manager of the network processor configured to:

receive a task corresponding to a data flow, the task provided by one of the plurality of processing modules of the network processor;

generate a scheduling hierarchy comprising a tree structure of a root scheduler and N scheduler levels, wherein a scheduler is a branch node and a queue is a leaf node of the scheduling hierarchy, wherein N is a positive integer;

enqueue each received task in a queue of the scheduling hierarchy associated with the received task, the queue having a corresponding parent scheduler at each of one or more next levels of the scheduling hierarchy up to a root scheduler of the scheduling hierarchy, wherein the queue and one or more corresponding parent schedulers at each level of the scheduling hierarchy form a branch of the scheduling hierarchy;

maintain one or more scheduling data structures for each node in the scheduling hierarchy;

receive a rate reduction request corresponding to a given node of the scheduling hierarchy;

update one or more indicators in the scheduling data structure corresponding to the given node; and

remove the given node from the scheduling hierarchy by a corresponding parent scheduler of the given node, thereby reducing the scheduling rate of the given node.

20. The network processor of claim 19 , wherein the network processor is implemented as an integrated circuit chip.

Assignments (6)
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENT RIGHTS (RELEASES RF 032856-0031) Recorded Feb 2, 2016
From: DEUTSCHE BANK AG NEW YORK BRANCH, AS COLLATERAL AGENT
To: LSI CORPORATION; AGERE SYSTEMS LLC
Reel/Frame 037684/0039 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 24, 2015
From: LSI CORPORATION
To: INTEL CORPORATION
Reel/Frame 035090/0477 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS AT REEL/FRAME NO. 32856/0031 Recorded Nov 18, 2014
From: DEUTSCHE BANK AG NEW YORK BRANCH
To: LSI CORPORATION; AGERE SYSTEMS LLC
Reel/Frame 034286/0872 →
PATENT SECURITY AGREEMENT Recorded May 8, 2014
From: LSI CORPORATION; AGERE SYSTEMS LLC
To: DEUTSCHE BANK AG NEW YORK BRANCH, AS COLLATERAL AGENT
Reel/Frame 032856/0031 →
CORRECTIVE ASSIGNMENT TO CORRECT THE APPLICATION NUMBER FROM 13250981 TO APPLICATION NUMBER 13250891 PREVIOUSLY RECORDED ON REEL 027006 FRAME 0199. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Oct 4, 2011
From: SUNDARARAMAN, BALAKRISHNAN; NEMAWARKAR, SHASHANK; SONNIER, DAVID; VESTAL, ALLEN
To: LSI CORPORATION
Reel/Frame 027012/0435 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 3, 2011
From: SUNDARARAMAN, BALAKRISHNAN; NEMAWARKAR, SHASHANK; SONNIER, DAVID; VESTAL, ALLEN
To: LSI CORPORATION
Reel/Frame 027006/0199 →