On Tue, Jul 12, 2005 at 04:44:04PM -0700, David S. Miller wrote: > > If its about outgoing traffic, shouldn't a prio-qdisc as root qdisc do > > just fine? skb->priority can be used to select a queue. Incoming traffic > > with pre-classification by the NIC would require multiple input queues > > though .. > > I forgot what the real problem was, sorry. > > Yes, the issue is on outgoing traffic, and it has to do with > netif_queue_stop(). We need one piece of queue plugging state for > every queue the hardware supports. > > So if queue 0 fills up, packets can still be queued for > queue 1, 2, ... This can't be cleanly done with a single > binary queue-stopped state like we have now.
A related problem.. the microcode I wrote for the intel ixp2000 CPU (which has a packet bus going into the CPU itself) uses a single RX queue and a single TX queue for all subinterfaces. Depending on how the chip is hooked up, there can potentially be hundreds of network interfaces, all using the same two queues, as well as the same set of interrupt status/mask registers, etc. The way I 'solved' it for now is to call netif_stop_queue for all subinterfaces when the main TX queue fills up, and when packets arrive, call netif_rx_schedule on a fake network device and return packets for all subinterfaces in that fake device's poll() function. It's hardly the best solution, but then again, it's hardly the best design to use one RX/TX queue. (Susceptible to head-of-line blocking and all that.) cheers, Lennert - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html