[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <469EA106.5010106@trash.net>
Date: Thu, 19 Jul 2007 01:23:50 +0200
From: Patrick McHardy <kaber@...sh.net>
To: "Waskiewicz Jr, Peter P" <peter.p.waskiewicz.jr@...el.com>
CC: netdev@...r.kernel.org
Subject: Re: Question: how to detect if a qdisc is root or not?
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 majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists