On Tue, Sep 26, 2017 at 4:39 PM, Vinicius Costa Gomes <vinicius.go...@intel.com> wrote: > +static int cbs_init(struct Qdisc *sch, struct nlattr *opt) > +{ > + struct cbs_sched_data *q = qdisc_priv(sch); > + struct net_device *dev = qdisc_dev(sch); > + > + if (!opt) > + return -EINVAL; > + > + /* FIXME: this means that we can only install this qdisc > + * "under" mqprio. Do we need a more generic way to retrieve > + * the queue, or do we pass the netdev_queue to the driver? > + */ > + q->queue = TC_H_MIN(sch->parent) - 1 - netdev_get_num_tc(dev); > + > + return cbs_change(sch, opt); > +}
Yeah it is ugly to assume its parent is mqprio, at least you should error out if it is not the case. I am not sure how we can solve this elegantly, perhaps you should extend mqprio rather than add a new one?