IP Library Granted Patent US 10,541,935
Granted Patent B2
US 10,541,935 · App. 15/360,107 · Granted Jan 21, 2020

Network processors

Inventors: Asaf Koren (Netanya, IL); Eliezer Weitz (Holon, IL); Koby Harel (Hod Hasharon, IL); Ifat Naaman (Hod Hasharon, IL); Hilla Ben Yaacov (Bat Yam, IL); Tal Baum-Mizrachi (Kfar Saba, IL); Yanai Pomeranz (Kfar Saba, IL); Yariv Aviram (Pardes Hana, IL); Ira Joffe (Ramat Yohanan, IL); Oren Issac Wolach (Kfar Saba, IL); Assaf Amitai (Raanana, IL); Daniel Pasternak (Modlin, IL); Yoram Gorsetman (Kadima, IL); Ryan Hirth (Windsor, CA); Gal Sitton (Netanya, IL); Mitchell Gordon McGee (Santa Rosa, CA)
Assignee: Avago Technologies International Sales Pte. Limited
H04L47/6255H04L47/125H04L49/9015H04L49/9057H04L49/9078H04Q11/0066H04Q2011/0077
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 10,541,935
App. No.
15/360,107
Granted
Jan 21, 2020
Kind
B2
Abstract

The present disclosure is directed to a network processor for processing high volumes of traffic provided by todays access networks at (or near) wireline speeds. The network process can be implemented within a residential gateway to perform, among other functions, routing to deliver high speed data services (e.g., data services with rates up to 10 Gbit/s) from a wide area network (WAN) to end user devices in a local area network (LAN).

Claims (46)

1. A network processor comprising:

a packet processor grid comprising a plurality of packet processors;

a dispatcher configured to provide a plurality of packet descriptors from a linked list to the plurality of packet processors to process the plurality of packet descriptors; and

accelerator circuits configured to perform hardware based acceleration of packet processing tasks on behalf of the plurality of packet processors to process the plurality of packet descriptors, wherein the accelerator circuits are implemented in a different clock domain than the plurality of packet processors and are accessed by the plurality of packet processors via a communication bus,

wherein a first clock domain of the accelerator circuits is slower than a second clock domain of the plurality of packet processors, and

wherein an output of the network processor is based on the plurality of packet descriptors after the plurality of packet descriptors have been processed by the accelerator circuits.

2. The network processor of claim 1 , wherein the dispatcher is further configured to provide each of the plurality of packet descriptors to one of the plurality of packet processors based on utilizations of the plurality of packet processors.

3. A network processor comprising:

a packet processor grid comprising a plurality of packet processors;

a dispatcher configured to provide a plurality of packet descriptors from a linked list to the plurality of packet processors to process the plurality of packet descriptors, wherein the dispatcher is further configured to store the plurality of packet descriptors in the linked list based on an order in which the plurality of packet descriptors are received by the dispatcher;

accelerator circuits configured to perform hardware based acceleration of packet processing tasks on behalf of the plurality of packet processors to process the plurality of packet descriptors, wherein the accelerator circuits are implemented in a different clock domain than the plurality of packet processors and are accessed by the plurality of packet processors via a communication bus; and

a reorderer configured to receive the plurality of packet descriptors from the plurality of packet processors after the plurality of packet descriptors have been processed and store each of the plurality of packet descriptors in a same position in the linked list in which the packet descriptor was stored by the dispatcher,

wherein the reorderer is further configured to provide processed packet descriptors from the linked list as an output until a head of the linked list is empty.

4. A network processor comprising:

a packet processor grid comprising a plurality of packet processors;

a dispatcher configured to provide a plurality of packet descriptors from a linked list to the plurality of packet processors to process the plurality of packet descriptors;

accelerator circuits configured to perform hardware based acceleration of packet processing tasks on behalf of the plurality of packet processors to process the plurality of packet descriptors, wherein the accelerator circuits are implemented in a different clock domain than the plurality of packet processors and are accessed by the plurality of packet processors via a communication bus; and

a queue manager configured to queue one of the plurality of packet descriptors, processed by one of the plurality of packet processors, in an egress queue for transmission, wherein the queue manager is further configured to move a packet payload associated with the one of the plurality of packet descriptors from an internal memory of the network processor to an external memory of the network processor based on one or more conditions associated with the network processor.

5. The network processor of claim 4 , wherein the one or more conditions include an indication in the one of the plurality of packet descriptors.

6. The network processor of claim 4 , wherein the one or more conditions include an indication in configuration information of the egress queue.

7. The network processor of claim 4 , wherein the one or more conditions include an occupancy of the internal memory exceeding an internal memory threshold assigned to the egress queue.

8. The network processor of claim 4 , wherein the one or more conditions include an occupancy of the egress queue exceeding an egress queue occupancy threshold.

9. A method comprising:

receiving a plurality of packet descriptors;

storing the plurality of packet descriptors in a linked list based on an order in which the plurality of packet descriptors are received;

providing each of the plurality of packet descriptors from the linked list to one of a plurality of packet processors based on utilizations of the plurality of packet processors;

sending, a subset of the plurality of packet descriptors, from one or more of the plurality of packet processors to accelerator circuits to perform hardware based acceleration of packet processing tasks on behalf of the one or more of the plurality of packet processors to process the subset of the plurality of packet descriptors;

storing each of a plurality of processed packet descriptors in a same position in the linked list in which a corresponding packet descriptor was stored before being processed by the one of the plurality of packet processors; and

providing the plurality of processed packet descriptors from the linked list as output until a head of the linked list is empty,

wherein the accelerator circuits are implemented in a different clock domain than the plurality of packet processors and are accessed by the plurality of packet processors via a communication bus.

10. The method of claim 9 , further comprising:

queuing one of the processed packet descriptors provided from the linked list in an egress queue for transmission.

11. The method of claim 10 , further comprising:

moving a packet payload associated with the one of the processed packet descriptors from an internal memory of a network processor to an external memory of the network processor based on an indication in the processed packet descriptor.

12. The method of claim 10 , further comprising:

moving a packet payload associated with the one of the processed packet descriptors from an internal memory of a network processor to an external memory of the network processor based on an indication in configuration information of the egress queue.

13. The method of claim 10 , further comprising:

moving a packet payload associated with the one of the processed packet descriptors from an internal memory of a network processor to an external memory of the network processor based on an occupancy of the internal memory exceeding an internal memory threshold assigned to the egress queue.

14. A network processor comprising:

a packet processor grid comprising a plurality of packet processors;

a dispatcher configured to receive a plurality of packet descriptors, store the plurality of packet descriptors in a linked list based on an order in which the plurality of packet descriptors are received by the dispatcher, and provide each of the plurality of packet descriptors from the linked list to one of the plurality of packet processors based on utilizations of the plurality of packet processors;

accelerator circuits configured to perform hardware based acceleration of packet processing tasks on behalf of the plurality of packet processors to process the plurality of packet descriptors, wherein the accelerator circuits are implemented in a different clock domain than the plurality of packet processors and are accessed by the plurality of packet processors via a communication bus; and

a reorderer configured to receive a plurality of processed packet descriptors from the plurality of packet processors, store each of the plurality of processed packet descriptors in a same position in the linked list in which a corresponding packet descriptor was stored by the dispatcher, and provide the plurality of processed packet descriptors from the linked list as output until a head of the linked list is empty.

15. The network processor of claim 14 , further comprising:

a queue manager configured to queue one of the plurality of processed packet descriptors, processed by one of the plurality of packet processors, in an egress queue for transmission.

16. The network processor of claim 15 , wherein the queue manager is further configured to move a packet payload associated with the one of the plurality of processed packet descriptors from an internal memory of the network processor to an external memory of the network processor based on an occupancy of the internal memory and an occupancy of the egress queue.

Assignments (4)
CORRECTIVE ASSIGNMENT TO CORRECT THE EXECUTION DATE OF THE MERGER AND APPLICATION NOS. 13/237,550 AND 16/103,107 FROM THE MERGER PREVIOUSLY RECORDED ON REEL 047231 FRAME 0369. ASSIGNOR(S) HEREBY CONFIRMS THE MERGER. Recorded Mar 8, 2019
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 048549/0113 →
MERGER Recorded Oct 4, 2018
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 047231/0369 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 1, 2017
From: BROADCOM CORPORATION
To: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
Reel/Frame 041706/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 23, 2016
From: KOREN, ASAF; WEITZ, ELIEZER; HAREL, KOBY; NAAMAN, IFAT; BEN YAACOV, HILLA; BAUM-MIZRACHI, TAL; POMERANZ, YANAI; AVIRAM, YARIV; JOFFE, IRA; WOLACH, OREN ISSAC; AMITAI, ASSAF; PASTERNAK, DANIEL; GORSETMAN, YORAM; HIRTH, RYAN; SITTON, GAL; MCGEE, MITCHELL GORDON
To: BROADCOM CORPORATION
Reel/Frame 040410/0796 →