On Fri, Aug 21, 2015 at 09:14:58AM -0700, Eric Dumazet wrote: [...] > > diff --git a/net/sched/sch_generic.c b/net/sched/sch_generic.c > > index 1fb65f9..ab614ee 100644 > > --- a/net/sched/sch_generic.c > > +++ b/net/sched/sch_generic.c > > @@ -634,6 +634,11 @@ struct Qdisc *qdisc_create_dflt(struct netdev_queue > > *dev_queue, > > if (IS_ERR(sch)) > > goto errout; > > sch->parent = parentid; > > +#ifdef CONFIG_NET_SCHED > > + sch->handle = qdisc_alloc_handle(dev_queue->dev); > > + if (!sch->handle) > > + goto errout; > > +#endif > > > > if (!ops->init || ops->init(sch, NULL) == 0) > > return sch; > > This might break HTB setups with more than 32768 classes ?
Urgh. Thanks for noticing this! > The pfifo qdisc that gets attached had no handle. Yes, looks like I need to leave qdisc_create_dflt() alone. It is possible, by doing the above twice in sch_generic.c (once in attach_one_default_qdisc(), and in attach_default_qdiscs() as well). > qdisc_alloc_handle() has a limited range. Yes, I noticed this. Handles aren't reused in a running system either, which might contribute to this problem in other situations. V2 will follow, thanks again. Cheers, Phil -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html