IP Library Granted Patent US 8,995,425
Granted Patent B1
US 8,995,425 · App. 13/678,047 · Granted Mar 31, 2015

Network device scheduler and methods thereof

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,995,425
App. No.
13/678,047
Granted
Mar 31, 2015
Kind
B1
Abstract

Methods and systems for a network device are provided. The network device includes a stage one arbiter for a base-port for determining if there are any pending requests; blocking any other requests from a same receive queue destined for a same sub-port, same physical transmit queue, and same virtual transmit queue when there are any pending requests; selecting a group of requests with a highest priority and available resources; selecting at least two of the highest priority requests; selecting an oldest one of the requests having the same priority when there are requests with a same priority; sending the selected requests to a stage two arbiter for the base-port; and determining if any new requests have been made or if any previously pending requests have been removed.

Claims (49)

1. A machine-implemented method, comprising:

determining if a packet has been received at a receive segment of a base-port of a network device having a plurality of sub-ports configured to operate independently as a port for sending and receiving packets at a plurality of rates complying with a plurality of protocols;

storing the packet at a selected pause buffer receive queue;

determining if any requests for the selected receive queue are staged at a memory device used for storing a tag for the packet;

determining if another request from the selected receive queue is active when no requests for the selected receive queue are staged at the memory device,

determining if more than one request is active from the selected request queue when there is another request active for the selected receive queue;

staging the request at the memory device when more than one request is active from the selected request queue; and

sending the request to a stage one arbiter when more than one request is not active from the selected request queue.

2. The method of claim 1 , further comprising: if the packet has not been received, determining if there are any staged requests in the memory device for any other receive queue.

3. The method of claim 2 , further comprising if there are any staged requests in the memory device, determining if more than one request is active from the other receive queue.

4. The method of claim 3 , further comprising if more than one request is active from the other receive queue, determining if a grant has been received.

5. The method of claim 4 , further comprising if a grant has been received, removing the granted request from an appropriate one of the receive queues.

6. The method of claim 2 , further comprising if there are staged requests for receive queues that do not have more than one request pending, selecting an oldest staged request.

7. The method of claim 6 , further comprising sending the oldest staged request to a scheduler for the network device.

8. The method of claim 1 , wherein one of the plurality of sub-ports is configured to operate as a Fibre Channel port.

9. The method of claim 1 , wherein one of the plurality of sub-ports is configured to operate as an Ethernet or Fibre Channel over Ethernet port.

10. A system, comprising:

a processor executing instructions out of a memory for:

determining if a packet has been received at a receive segment of a base-port of a network device having a plurality of sub-ports configured to operate independently as a port for sending and receiving packets at a plurality of rates complying with a plurality of protocols;

storing the packet at a selected pause buffer receive queue;

determining if any requests for the selected receive queue are staged at a memory device used for storing a tag for the packet;

determining if another request from the selected receive queue is active when no requests for the selected receive queue are staged at the memory device,

determining if more than one request is active from the selected request queue when there is another request active for the selected receive queue;

staging the request at the memory device when more than one request is active from the selected request queue; and

sending the request to a stage one arbiter when more than one request is not active from the selected request queue.

11. The system of claim 10 , further comprising instructions for: if the packet has not been received, determining if there are any staged requests in the memory device for any other receive queue.

12. The system of claim 11 , further comprising instructions for: if there are any staged requests in the memory device, determining if more than one request is active from the other receive queue.

13. The system of claim 12 , further comprising instructions for: if more than one request is active from the other receive queue, determining if a grant has been received.

14. The system of claim 13 , further comprising instructions for: if a grant has been received, removing the granted request from an appropriate one of the receive queues.

15. The system of claim 11 , further comprising instructions for: if there are staged requests for receive queues that do not have more than one request pending, selecting an oldest staged request.

16. The system of claim 15 , further comprising instructions for: sending the oldest staged request to a scheduler for the network device.

17. The system of claim 10 , wherein one of the plurality of sub-ports is configured to operate as a Fibre Channel port.

18. The system of claim 10 , wherein one of the plurality of sub-ports is configured to operate as an Ethernet or Fibre Channel over Ethernet port.

19. A non-transitory, machine readable storage medium storing executable instructions, which when executed by a machine, causes the machine to perform a method, the method comprising:

determining if a packet has been received at a receive segment of a base-port of a network device having a plurality of sub-ports configured to operate independently as a port for sending and receiving packets at a plurality of rates complying with a plurality of protocols;

storing the packet at a selected pause buffer receive queue;

determining if any requests for the selected receive queue are staged at a memory device used for storing a tag for the packet;

determining if another request from the selected receive queue is active when no requests for the selected receive queue are staged at the memory device,

determining if more than one request is active from the selected request queue when there is another request active for the selected receive queue;

staging the request at the memory device when more than one request is active from the selected request queue; and

sending the request to a stage one arbiter when more than one request is not active from the selected request queue.

20. The non-transitory, machine readable storage medium of claim 19 , further comprising instructions for: if the packet has not been received, determining if there are any staged requests in the memory device for any other receive queue.

21. The non-transitory, machine readable storage medium of claim 20 , further comprising instructions for: if there are any staged requests in the memory device, determining if more than one request is active from the other receive queue.

22. The non-transitory, machine readable storage medium of claim 21 , further comprising instructions for: if more than one request is active from the other receive queue, determining if a grant has been received.

23. The non-transitory, machine readable storage medium of claim 22 , further comprising instructions for: if a grant has been received, removing the granted request from an appropriate one of the receive queues.

24. The non-transitory, machine readable storage medium of claim 20 , further comprising instructions for: if there are staged requests for receive queues that do not have more than one request pending, selecting an oldest staged request.

25. The non-transitory, machine readable storage medium of claim 24 , further comprising instructions for: sending the oldest staged request to a scheduler for the network device.

26. The non-transitory, machine readable storage medium of claim 19 , wherein one of the plurality of sub-ports is configured to operate as a Fibre Channel port.

27. The non-transitory, machine readable storage medium of claim 19 , wherein one of the plurality of sub-ports is configured to operate as an Ethernet or Fibre Channel over Ethernet port.

Assignments (7)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 15, 2020
From: CAVIUM INTERNATIONAL
To: MARVELL ASIA PTE, LTD.
Reel/Frame 053179/0320 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 17, 2020
From: CAVIUM, LLC
To: CAVIUM INTERNATIONAL
Reel/Frame 051948/0807 →
CHANGE OF NAME Recorded Oct 8, 2018
From: CAVIUM, INC.
To: CAVIUM, LLC
Reel/Frame 047205/0953 →
RELEASE OF SECURITY INTEREST Recorded Jul 6, 2018
From: JP MORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
To: CAVIUM, INC; CAVIUM NETWORKS LLC; QLOGIC CORPORATION
Reel/Frame 046496/0001 →
MERGER Recorded Oct 18, 2017
From: QLOGIC CORPORATION
To: CAVIUM, INC.
Reel/Frame 044812/0504 →
SECURITY AGREEMENT Recorded Mar 1, 2017
From: QLOGIC CORPORATION
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 041854/0119 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 15, 2012
From: DROPPS, FRANK R.; PAPENFUSS, GARY M.; SLECHTA, LEO J., JR.
To: QLOGIC, CORPORATION
Reel/Frame 029305/0698 →