Patent ID: 9705811
Date: 2017-07-11
CPC Classifications: H04L

Claim:
1. A method, comprising: (a) receiving a queue number and a packet descriptor, wherein the queue number indicates a queue stored within a memory unit, and wherein the packet descriptor is associated with a packet; (b) determining a priority level associated with the packet; (c) determining an amount of free memory in the memory unit by (c1) reading a free descriptor count from the memory unit, wherein a free descriptor counter located in the memory unit generates the free descriptor count and (c2) comparing the free descriptor count value with a free descriptor threshold value, wherein a first range includes all free descriptor count values greater than the free descriptor threshold value, wherein a second range includes all free descriptor count values less than the free descriptor threshold value, wherein the free descriptor counter decrements the free descriptor count when a packet descriptor is stored in a queue in the memory unit, and wherein the free descriptor counter increments the free descriptor count when a packet descriptor is removed from a queue the memory unit; (d) applying a global drop probability to generate a global drop indicator, wherein the global drop probability is a function of the amount of free memory; (e) applying a queue drop probability to generate a queue drop indicator, wherein the queue drop probability is a function of an instantaneous queue depth or a drop precedence value; (f) causing the packet to be transmitted when the priority level is a first priority level; (g) causing the packet to be transmitted with the priority level is a second priority level, the global drop indicator indicates that the packet is not to be dropped, and the queue drop indicator indicates that the packet is not to be dropped; and (h) causing the packet not to be transmitted when the priority level is the second priority level, and either the global drop indicator or the queue drop indicator indicate that the packet is to be dropped.