PJ Waskiewicz wrote: > diff --git a/net/sched/sch_generic.c b/net/sched/sch_generic.c > index 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) > /* 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)) { > 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. BTW, I couldn't find anything but a single netif_wake_subqueue in your (old) e1000 patch. Why doesn't it stop subqueues? - 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