I have been doing some experiments with the prio qdisc. I haven't tried to understand the code, but the behavior I have observed in the experiments leads me to believe that the prio qdisc operates in the following manner when the interface queue is full: 1) Suppose that we are operating with the default 3 priority bands and the interface queue is full of packets of the lowest priority (indicated by the TOS byte). 2) Then suppose a new packet of highest priority is to be sent to the interface for queuing. 3) It appears to me that the newly arriving packet of highest priority will be dropped because the queue is full. Prio does not appear to drop one of the lower priority packets waiting in the queue to make room for the higher priority packet. The evidence for this conclusion is that I can set the "txqueuelen" to a large value to make ample room for queuing high priority packets. Then if the interface is sent a mixture of an overload of low priority packets and a small load of high priority packets, the high priority packet suffer just as high a packet loss percentage as the low priority packets. To me this indicates that they are getting dropped at the interface because the queue is full. Can anyone with knowledge of the code or more knowledge of the proper operation of the prio qdisc verify that this is indeed what is happening? Also, the way I would really like prio to operate is that when the queue is full, I want it not to drop a newly arriving packet unless there are no lower priority packets waiting in the queue. If there is a lower priority packets waiting in the queue, I would like this packet to be dropped to make room for the higher priority packet. Does anyone know if there is a version of prio that operates this way, or if there is another qdisc that provides this capability? Thanks, Bibb Cain