Thread (153 messages) 153 messages, 21 authors, 2007-06-28

RE: [PATCH] NET: Multiqueue network device support.

From: Waskiewicz Jr, Peter P <hidden>
Date: 2007-06-11 18:05:33

PJ Waskiewicz wrote:
quoted
diff --git a/net/sched/sch_generic.c 
b/net/sched/sch_generic.c index 
quoted
f28bb2d..b9dc2a6 100644
--- a/net/sched/sch_generic.c
+++ b/net/sched/sch_generic.c
@@ -123,7 +123,8 @@ static inline int qdisc_restart(struct 
net_device *dev)
quoted
 			/* And release queue */
 			spin_unlock(&dev->queue_lock);
 
-			if (!netif_queue_stopped(dev)) {
+			if (!netif_queue_stopped(dev) &&
+			    !netif_subqueue_stopped(dev, 
skb->queue_mapping)) {
quoted
 				int ret;
 
 				ret = dev_hard_start_xmit(skb, dev);

Your patch doesn't update any other users of netif_queue_stopped().
The assumption that they can pass packets to the driver when 
the queue is running is no longer valid since they don't know 
whether the subqueue the packet will end up in is active (it 
might be different from queue 0 if packets were redirected 
from a multiqueue aware qdisc through TC actions). So they 
need to be changed to check the subqueue state as well.
I will look at all these cases and change them accordingly.  Thanks for
catching that.
BTW, I couldn't find anything but a single 
netif_wake_subqueue in your (old) e1000 patch. Why doesn't it 
stop subqueues?
A previous e1000 patch stopped subqueues.  The last e1000 patch I sent
to the list doesn't stop them, and that's a problem with that patch; it
was sent purely to show how the alloc_etherdev_mq() stuff worked, but I
missed the subqueue control.  I can fix that and send an updated patch
if you'd like.  The reason I missed it is we maintain an out-of-tree
driver and an in-tree driver, and mixing/matching code between the two
becomes a bit of a juggling act sometimes when doing little engineering
snippits.

Thanks for reviewing these.  I'll repost something with updates from
your feedback.

Cheers,
-PJ Waskiewicz
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help