A method for managing transfers of outgoing data, the method comprising: a) providing a first data queue in a transmit direction (220→230) for storing outgoing data corresponding to a first priority level; b) providing at least second and third data queues in the transmit direction (220→230) for storing outgoing data corresponding to at least second and third priority levels, respectively, wherein the second priority level is lower than the first priority level, and the third priority level is lower than the second priority level; c) servicing (430, 460; 440, 470; 450, 480), before detecting (420, NO) a starvation condition corresponding to the at least second and third data queues, the first, second, and third data queues in order from highest to lowest priority levels; d) detecting, if a data starvation condition corresponding to the at least second and third data queues is met (420, YES); e) while the data starvation condition is met (420, YES), performing the following: e1) servicing (450, 480; 440, 470) the at least second and third data queues in the transmit direction in a weighed round-robin fashion such that the second data queue is serviced more frequently than the third data queue, e2) detecting, if the data starvation condition corresponding to the at east second and third queue is met, e3) if the starvation condition corresponding to the at least second and third queue is met (420, YES), returning to step e1), e4) if the starvation condition corresponding to the at least second and third queue is not met (420, NO), returning to step c). a) providing a first data queue in a transmit direction (220→230) for storing outgoing data corresponding to a first priority level; b) providing at least second and third data queues in the transmit direction (220→230) for storing outgoing data corresponding to at least second and third priority levels, respectively, wherein the second priority level is lower than the first priority level, and the third priority level is lower than the second priority level; c) servicing (430, 460; 440, 470; 450, 480), before detecting (420, NO) a starvation condition corresponding to the at least second and third data queues, the first, second, and third data queues in order from highest to lowest priority levels; d) detecting, if a data starvation condition corresponding to the at least second and third data queues is met (420, YES); e) while the data starvation condition is met (420, YES), performing the following: e1) servicing (450, 480; 440, 470) the at least second and third data queues in the transmit direction in a weighed round-robin fashion such that the second data queue is serviced more frequently than the third data queue, e2) detecting, if the data starvation condition corresponding to the at east second and third queue is met, e3) if the starvation condition corresponding to the at least second and third queue is met (420, YES), returning to step e1), e4) if the starvation condition corresponding to the at least second and third queue is not met (420, NO), returning to step c). e1) servicing (450, 480; 440, 470) the at least second and third data queues in the transmit direction in a weighed round-robin fashion such that the second data queue is serviced more frequently than the third data queue, e2) detecting, if the data starvation condition corresponding to the at east second and third queue is met, e3) if the starvation condition corresponding to the at least second and third queue is met (420, YES), returning to step e1), e4) if the starvation condition corresponding to the at least second and third queue is not met (420, NO), returning to step c).