Waskiewicz Jr, Peter P wrote:
> I've been tracking down an issue with the recent multiqueue code,
> specifically with sch_prio and sch_rr loading as a root qdisc. Right
> now, we do not want to allow child qdiscs of sch_rr and sch_prio to load
> with multiqueue enabled; we want to restrict multiqueue-enabled qdiscs
> to the root qdisc (since this is the only thing to push into the
> device). The issue I have is I don't know how to detect if the qdisc
> I'm currently processing is the root qdisc, or if it's a child. From
> sch_prio.c:
>
> q->mq = RTA_GET_FLAG(tb[TCA_PRIO_MQ - 1]);
> if (q->mq) {
> if (sch->handle != TC_H_ROOT)
> return -EINVAL;
>
> if (netif_is_multiqueue(sch->dev)) {
>
> Unfortunately, this code isn't working. This sch->handle is the handle
> assigned to the qdisc upon creation, and it's not TC_H_ROOT.
You're right, thats a bug. TC_H_ROOT is the parent ID, which is
stored in sch->parent. IIRC its also passed to the ->init() function.
-
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