IP Library Granted Patent US 7,586,911
Granted Patent B2
US 7,586,911 · App. 10/687,786 · Granted Sep 8, 2009

Method and apparatus for packet transmit queue control

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 7,586,911
App. No.
10/687,786
Granted
Sep 8, 2009
Kind
B2
Abstract

A packet transmit queue control system including a first data structure, a second data structure, a packet controller, and a port transmit controller is disclosed. The first data structure can include a plurality of linked-list data structures and can store unicast type packet pointers. The second data structure can include a plurality of first-in first-out (FIFO) structures and can store multicast type packet pointers. The packet controller can receive a first sequence of unicast and/or multicast type packets. The port transmit controller can provide a second sequence of the unicast and/or multicast type packets. Further, each of the plurality of FIFO structures can correspond to an output port of the system.

Claims (178)

1. A packet transmit queue control system, comprising:

a first data structure embodied on a tangible computer readable medium coupled to a packet controller and configured to store a plurality of first type packet pointers;

a second data structure embodied on a tangible computer readable medium coupled to the packet controller and configured to store a plurality of second type packet pointers, wherein the packet controller is configured to receive a first sequence of packet pointers and to provide each packet pointer to one of the first and second data structures;

a third data structure embodied on a tangible computer readable medium coupled to the second data structure and configured to store a plurality of status flags; and

a port transmit controller coupled to the first and second data structures and configured to provide a second sequence of packet pointers;

wherein the first data structure includes a plurality of linked-list data structures;

wherein the plurality of status flags include:

a first type packet pointer head position indication;

a first type packet pointer tail position indication;

an overall head pointer indication; and

an overall tail pointer indication.

2. The packet transmit queue control system of claim 1 , wherein:

the second data structure includes a plurality of first-in first-out (FIFO) structures.

3. The packet transmit queue control system of claim 2 , wherein:

each of the plurality of FIFO structures is coupled to a port.

4. The packet transmit queue control system of claim 1 , wherein:

the first type packet pointers include unicast pointers; and

the second type packet pointers include multicast pointers.

5. The packet transmit queue control system of claim 1 , wherein:

the second sequence of packet pointers includes port transmit scheduling information.

6. The packet transmit queue control system of claim 1 , wherein:

an ordering of the second sequence of packet pointers is substantially consistent with a packet arrival order.

7. The packet transmit queue control system of claim 3 , wherein:

the packet controller is configured to provide:

each of the plurality of first type packet pointers to a selected one of the plurality of linked-list data structures; and

each of the plurality of second type packet pointers to each of a group of the plurality of FIFO structures.

8. A data arrangement for packet transmit queue control, comprising:

a first data structure embodied on a tangible computer readable medium configured to store a plurality of first type packet pointers;

a second data structure embodied on a tangible computer readable medium configured to store a plurality of second type packet pointers; and

a third data structure embodied on a tangible computer readable medium coupled to the second data structure and configured to store a plurality of status flags;

wherein the first data structure includes a linked-list structure;

wherein the plurality of status flags include:

a first type packet pointer head position indication;

a first type packet pointer tail position indication;

an overall head pointer indication; and

an overall tail pointer indication.

9. The data arrangement for packet transmit queue control of claim 8 , wherein:

the second data structure includes a first-in first-out (FIFO) structure.

10. The data arrangement for packet transmit queue control of claim 8 , wherein:

the first type packet pointers include unicast pointers; and

the second type packet pointers include multicast pointers.

11. The data arrangement for packet transmit queue control of claim 10 , wherein:

each entry of the second data structure includes:

a previous unicast pointer indication field;

a next unicast pointer indication field;

a previous unicast pointer field; and

a packet pointer field.

12. A method of inserting a packet pointer in a packet queue control system, comprising:

(a) determining if a pointer is a first type or a second type;

(b) if die pointer is the first type, determining if an overall tail is the first type or the second type;

if the overall tail is the second type, setting an overall tail flag to a first state, and setting an entry to the first state;

getting a first type tail;

linking the pointer in a first data structure to the first type tail; and

setting the first type tail to the pointer; and

(c) if the pointer is the second type, determining if the overall tail is the first type or the second type;

if the overall tail is the second type, adding the pointer to a second data structure field with a second state;

if the overall tail is the first type, adding the pointer to the second data structure field with the first state; and

setting the overall tail flag to the second state;

wherein the first data structure includes a plurality of linked-list data structures;

wherein a third data structure is coupled to the second data structure and is configured to store a plurality of status flags;

wherein the plurality of status flags include:

a first type packet pointer head position indication;

a first type packet pointer tail position indication;

an overall head pointer indication; and

an overall tail pointer indication.

13. The method of inserting the packet pointer in the packet queue control system of claim 12 , wherein:

the second data structure includes a first-in first-out (FIFO) data structure.

14. The method of inserting the packet pointer in the packet queue control system of claim 12 , wherein:

the first type pointer includes a unicast packet pointer; and

the second type pointer includes a multicast packet pointer.

15. The method of inserting the packet pointer in the packet queue control system of claim 12 , wherein:

the first state includes a yes-state; and

the second state includes a no-state.

16. The method of inserting the packet pointer in the packet queue control system of claim 12 , wherein:

the first data structure is accessed at most once; and

the second data structure is accessed at most once.

17. A means for inserting a packet pointer in a packet queue control system, comprising:

(a) means for determining if a pointer is a first type or a second type;

(b) if the pointer is the first type, means for determining if an overall tail is the first type or the second type;

if the overall tail is the second type, a means for setting an overall tail flag to a first state, and a means for setting an entry to the first state;

a means for getting a first type tail;

a means for linking the pointer in a first data structure embodied on a tangible computer readable medium to the first type tail; and

a means for setting the first type tail to the pointer; and

(c) if the pointer is the second type, a means for determining if the overall tail is the first type or the second type;

if the overall tail is the second type, a means for adding the pointer to a field of a second data structure embodied on a tangible computer readable medium with a second state;

if the overall tail is the first type, a means for adding the pointer to a field of the second data structure with the first state; and

a means for setting the overall tail flag to the second state;

wherein the first data structure includes a plurality of linked-list data structures;

wherein a third data structure embodied on a tangible computer readable medium is coupled to the second data structure and is configured to store a plurality of status flags;

wherein the plurality of status flags include:

a first type packet pointer head position indication;

a first type racket pointer tail Position indication;

an overall head pointer indication; and

an overall tail pointer indication.

18. A method of scheduling a packet pointer, comprising:

(a) determining if an overall head is a first type or a second type;

(b) if the overall head is the first type:

getting a first type head;

getting a first type pointer from a second data structure;

determining if the first type head matches the first type pointer;

if a match, setting an overall head flag to a second state; and

updating the first type head with a next pointer from a first data structure; and

(c) if the overall head is the second type:

getting a second type pointer from the second data structure;

determining if a field in the second data structure is a first state or the second state;

if the first state, setting the overall head flag to the first state; and

removing a head entry from the second data structure;

wherein the first data structure includes a plurality of linked-list data structures;

wherein a third data structure is coupled to the second data structure and is configured to store a plurality of status flags;

wherein the plurality of status flags include:

a first type packet pointer head position indication;

a first type packet pointer tail position indication;

an overall head pointer indication; and

an overall tail pointer indication.

19. The method of scheduling the packet pointer of claim 18 , wherein:

the second data structure includes a first-in first-out (FIFO) data structure.

20. The method of scheduling the packet pointer of claim 18 , wherein:

the first type pointer includes a unicast packet pointer; and

the second type pointer includes a multicast packet pointer.

21. The method of scheduling the packet pointer of claim 18 , wherein:

the first state includes a yes-state; and

the second state includes a no-state.

22. The method of scheduling the packet pointer of claim 18 , wherein:

the first data structure is accessed at most once; and

the second data structure is accessed at most once.

23. A means for scheduling a packet pointer, comprising:

(a) a means for determining if an overall head is a first type or a second type;

(b) if the overall head is the first type:

a means for getting a first type head;

a means for getting a first type pointer from a second data structure;

a means for determining if the first type head matches the first type pointer;

if a match, a means for setting an overall head flag to a second state; and

a means for updating the first type head with a next pointer from a first data structure; and

(c) if the overall head is the second type:

a means for getting a second type pointer from the second data structure;

a means for determining if a field in the second data structure is a first state or the second state;

if the first state, a means for setting the overall head flag to the first state; and

a means for removing a head entry from the second data structure;

wherein the first data structure includes a plurality of linked-list data structures;

wherein a third data structure is coupled to the second data structure and is configured to store a plurality of status flags;

wherein the plurality of status flags include:

a first type packet pointer head position indication;

a first type packet pointer tail position indication;

an overall head pointer indication; and

an overall tail pointer indication.

24. A method of managing packet pointers, comprising:

inserting a packet pointer according to the method of claim 15 ; and

scheduling the packet pointer comprising:

(a) determining if an overall head is a first type or a second type;

(b) if the overall head is the first type:

getting a first type head;

getting a first type pointer from a second data structure;

determining if the first type head matches the first type pointer;

if a match, setting an overall head flag to a second state; and

updating the first type head with a next pointer from the first data structure; and

(c) if the overall head is the second type:

getting a second type pointer from the second data structure;

determining if a field in the second data structure is a first state or the second state;

if the first state, setting the overall head flag to the first state; and

removing a head entry from the second data structure;

wherein the inserting the packet pointer and the scheduling the packet pointer include using a data arrangement for packet transmit queue control, comprising:

the first data structure configured to store a plurality of first type packet pointers;

the second data structure configured to store a plurality of second type packet pointers; and

a third data structure coupled to the second data structure and configured to store a plurality of status flags;

wherein the plurality of status flags include:

a first type packet pointer bead position indication;

a first type packet pointer tail position indication;

an overall head pointer indication; and

an overall tail pointer indication.

25. The method of managing packet pointers of claim 24 , wherein:

the inserting the packet pointer and the scheduling the packet pointer are operable in a system, comprising:

the first data structure coupled to a packet controller and configured to store the plurality of first type packet pointers;

the second data structure coupled to the packet controller and configured to store the plurality of second type packet pointers, wherein the packet controller is configured to receive a first sequence of packet pointers and to provide each packet pointer to one of the first and second data structures; and

a port transmit controller coupled to the first and second data structures and configured to provide a second sequence of packet pointers.

26. The packet transmit queue control system of claim 1 , wherein:

the port transmit controller is coupled to an output port.

27. The packet transmit queue control system of claim 3 , wherein:

each of the plurality of FIFO structures are coupled with a corresponding set of output port status flags.

Assignments (10)
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Feb 3, 2017
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: BROADCOM CORPORATION
Reel/Frame 041712/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 1, 2017
From: BROADCOM CORPORATION
To: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
Reel/Frame 041706/0001 →
PATENT SECURITY AGREEMENT Recorded Feb 11, 2016
From: BROADCOM CORPORATION
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 037806/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 16, 2015
From: NETLOGIC I LLC
To: BROADCOM CORPORATION
Reel/Frame 035443/0763 →
CHANGE OF NAME Recorded Apr 16, 2015
From: NETLOGIC MICROSYSTEMS, INC.
To: NETLOGIC I LLC
Reel/Frame 035443/0824 →
RELEASE OF SECURITY INTEREST Recorded Sep 2, 2011
From: VENTURE LENDING & LEASING, INC
To: NETLOGIC MICROSYSTEMS, INC.
Reel/Frame 026855/0108 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 11, 2010
From: RMI CORPORATION
To: NETLOGIC MICROSYSTEMS, INC.
Reel/Frame 023926/0338 →
CHANGE OF NAME Recorded May 1, 2008
From: RAZA MICROELECTRONICS, INC.
To: RMI CORPORATION
Reel/Frame 020886/0454 →
SECURITY INTEREST Recorded Apr 24, 2007
From: RAZA MICROELECTRONICS, INC.
To: VENTURE LENDING & LEASING IV, INC.
Reel/Frame 019224/0254 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 17, 2003
From: LIEN, WEI-HAN; YANG, BRIAN HANG WAI; SUBRAMANIAN, SRIDHAR
To: RAZA MICROELECTRONICS, INC.
Reel/Frame 014628/0174 →