IP Library Granted Patent US 9,094,219
Granted Patent B2
US 9,094,219 · App. 13/795,579 · Granted Jul 28, 2015

Network processor having multicasting protocol

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,094,219
App. No.
13/795,579
Granted
Jul 28, 2015
Kind
B2
Abstract

An network processor is described that is configured to multicast multiple data packets to one or more engines. In one or more implementations, the network processor includes an input/output adapter configured to parse a plurality of tasks. The input/output adapter includes a multicast module configured to determine a reference count value based upon a maximum multicast value of the plurality of tasks. The input/output adapter is also configured to set a reference count decrement value within the control data portion of the plurality of tasks. The reference count decrement value is based upon the maximum multicast value. The input/output adapter is also configured to decrement the reference count value by a corresponding reference count decrement value upon receiving an indication from an engine.

Claims (34)

1. A network processor comprising:

an input/output adapter configured to parse a plurality of tasks, the plurality of tasks including a control data portion and a data portion, the input/output adapter comprising a task ring interface that connects a multicast module to processing modules, the multicast module configured to:

determine a reference count value based upon a maximum multicast value of the plurality of tasks;

set a reference count decrement value within the control data portion of the plurality of tasks, the reference count decrement value based upon the maximum multicast value; and

decrement the reference count value by a corresponding reference count decrement value upon receiving an indication from an engine, the indication representing the engine has completed operations on at least one of the plurality of tasks, the indication including the reference count decrement value.

2. The network processor as recited in claim 1 , wherein the input/output adapter is further configured to multicast the plurality of tasks to one or more engines.

3. The network processor as recited in claim 1 , wherein the initial reference count value comprises the maximum multicast value minus one.

4. The network processor as recited in claim 1 , wherein the reference count decrement value for a first subset of the plurality of tasks is one and the reference count decrement value for a second subset of the plurality of data packets is the maximum multicast value minus a number of times each task within the plurality of tasks is multicast.

5. The network processor as recited in claim 4 , wherein the first subset of the plurality of tasks is P minus one (P−1), where P is an integer value representing a total number of tasks comprising the plurality of tasks.

6. The network processor as recited in claim 1 , the network processor further comprising a memory communicatively coupled to the multicast module, wherein the input/output adapter is further configured to maintain a linked list representing a position of one or more blocks of data, the one or more blocks of data including data multicast within the plurality of tasks.

7. The network process as recited in claim 6 , wherein the input/output adapter is further configured to deallocate the one or more blocks of data when the reference count value reaches zero.

8. The network process as recited in claim 1 , wherein the control data portion comprises a header portion of each one of the plurality of tasks.

9. A network processor comprising:

an input/output adapter configured to parse a plurality of data packet copies, the plurality of data packet copies including a control data portion and a data portion, the input/output adapter comprising a task ring interface that connects a multicast module to processing modules, the multicast module configured to:

determine a reference count value based upon a maximum multicast value of the plurality of data packet copies;

set a reference count decrement value within the control data portion of the plurality of data packet copies, the reference count decrement value based upon the maximum multicast value; and

decrement the reference count value by a corresponding reference count decrement value upon receiving an indication from an engine, the indication representing the engine has completed operations on at least one of the plurality of data packet copies, the indication including the reference count decrement value, wherein the multicast module is configured to deallocate memory storing one or more blocks of data when the reference count is zero, the one or more blocks of data representing data multicast within the plurality of data packet copies.

10. The network processor as recited in claim 9 , wherein the input/output adapter is further configured to multicast the plurality of data packet copies to one or more engines.

11. The network processor as recited in claim 9 , wherein the initial reference count value comprises the maximum multicast value minus one.

12. The network process as recited in claim 9 , wherein the reference count decrement value for a first subset of the plurality of data packet copies is one and the reference count decrement value for a second subset of the plurality of data packet copies is the maximum multicast value minus a number of times each data packet copy within the plurality of data packet copies is multicast.

13. The network processor as recited in claim 12 , wherein the first subset of the plurality of data packet copies is P minus one (P−1), where P is an integer value representing a total number of data packet copies comprising the plurality of data packet copies.

14. The network processor as recited in claim 9 , the network processor further comprising a memory communicatively coupled to the multicast module, wherein the input/output adapter is further configured to maintain a linked list representing a position of one or more blocks of data, the one or more blocks of data including data multicast within the plurality of data packet copies.

15. The network process as recited in claim 9 , wherein the control data portion comprises a header portion of each one of the plurality of data packet copies.

16. A method, comprising:

parsing, with an input/output adapter, a plurality of data packet copies, the plurality of data packet copies including a control data portion and a data portion, the input/output adapter arranged with a task ring interface that connects a multicast module to a shared memory, processing modules and a memory manager of a network processor;

setting, with the multicast module, a reference count value prior to multicast transmission of a plurality of data packet copies;

setting, with the multicast module, a decrement reference count value within the control data portion of each one of the plurality of data packet copies;

determining, with the multicast module, whether an indication to decrement the reference count value has been received from one or more engines, the one or more engines configured to process one or more of the plurality of data packet copies;

decrementing, with the multicast module, the reference count value by the decrement reference count value after the indication is received, the indication including the decrement reference count value; and

deallocating, with the memory manager, a corresponding block of memory when the reference count value is zero, the block of memory configured to store data representing the data multicast within the plurality of data packet copies.

17. The method as recited in claim 16 , further comprising determining whether the reference count value is zero.

18. The method as recited in claim 16 , wherein deallocating a corresponding block of memory comprises deleting a linked list representing positions within the shared memory of the stored data.

19. The method as recited in claim 16 , wherein the initial reference count value comprises a maximum multicast value minus one.

20. The method as recited in claim 16 , wherein the reference count decrement value for a first subset of the plurality of data packet copies is one and the reference count decrement value for a second subset of the plurality of data packet copies is the maximum multicast value minus a number of times each data packet copy within the plurality of data packet copies is multicast.

Assignments (4)
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 →