RE: [PATCH 2/3] NET: [CORE] Stack changes to add multiqueue hardware support API
From: Waskiewicz Jr, Peter P <hidden>
Date: 2007-06-28 19:06:43
Waskiewicz Jr, Peter P wrote:quoted
quoted
Quick question: where are the sch_generic changes? :) If you hold for ten minutes I'll post a set of slightly changed patches with the NETDEVICES_MULTIQUEUE option and a fix for this.Jamal's and KK's qdisc_restart() rewrite took thenetif_queue_stopped()quoted
call out of sch_generic.c. So the underlying qdisc is onlyresponsiblequoted
for checking the queue status now before dequeueing.Yes, I noticed that now. Doesn't seem right though as long as queueing while queue is stopped is treated as a bug by the drivers. But I vaguely recall seeing a discussion about this, I'll check the archives.
The basic gist is before the dequeue is done, the qdisc is locked by the qdisc is running bit, so another CPU cannot get in there. So if the queue isn't stopped when a dequeue is done, that same queue should not be stopped when hard_start_xmit() is called. The only thing I could think of that could happen is some out-of-band cleanup routine in the driver where the tx_ring lock is held, and the skb is bounced back, where the driver returns NETIF_TX_BUSY, and you requeue. This is an extreme corner case, so the check could be removed. -PJ