Patent ID: 7155716

Claim:
A device comprising: a port to receive one or more data streams, each data stream including one or more data frames; a task scheduler coupled to the port, the task scheduler to generate a task identifier for every data frame received; a first queue to hold task identifiers for which a corresponding data frame is of a first priority type; a second queue to hold task identifiers for which the corresponding data frame is of a second priority type, the second priority type different than the first priority type; a switch coupled to the first and second queues, the switch configured to retrieve task identifiers from the first queue and the second queue in a fair manner; a third queue coupled to the switch, the third queue to hold a plurality of task identifiers placed in the third queue by the switch and provide the task identifiers to a processing unit in the order task identifiers were placed in the third queue by the switch; a classifier coupled to the port and to the first queue, the classifier to assign one of a plurality of priority types to every data frame received, the plurality of priority types including the first priority type and the second priority type, the classifier to monitor the first queue for an overflow condition and, if an overflow condition is detected, to reassign data frame priority types from the first priority type to the second priority type to prevent overflow of the first queue; and a task router coupled to the task scheduler, the classifier, the first queue, and the second queue, the task router configured to receive the task identifier from the task scheduler, the task identifier corresponding to a received data frame, receive a priority type from the classifier, the priority type corresponding to the received data frame, place the task identifier in the first queue if the priority type is the first priority type, and place the task identifier in the second queue if the priority type is the second priority type.