Patent ID: 7562364

Claim:
A computerized method comprising: receiving packets of data in a first queue, each of the packets having one of a plurality of priorities, the plurality of priorities including a first priority and a second priority, the first priority being higher than the second priority; copying a first plurality of packets from the first queue to a second queue, the first queue and the second queue each containing a plurality of sub-queues, each of the plurality of sub-queues representing one of the plurality of priority levels, wherein each packet is placed in a sub-queue of the plurality of sub-queues that is associated with the priority level of the packet; scheduling a first set of packets from the second queue, wherein the first set of packets includes one or more of packets of the first priority if the second queue contains packets of the first priority and one or more packets of the second priority if the second queue contains packets of the second priority, and wherein the number of packets in the set of packets for each priority are chosen using weighted round robin scheduling based on the priority of each packet; providing the first set of packets from the second queue to a device driver; determining whether after the first set of packets has been provided to the device driver, the second queue includes a packet with the first priority; if the second queue includes a packet with a first priority after the first set of packets has been provided to the device driver, scheduling a second set of packets from the second queue using the weighted round robin scheduling, wherein the number of the packets scheduled is weighted based upon the priority of each packet; and if the second queue does not include a packet with the first priority after the first set of packets has been provided to the device driver, pausing scheduling of packets from the second queue, and copying a second plurality of packets from the first queue to the second queue.