[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <D5C1322C3E673F459512FB59E0DDC3290340F84A@orsmsx414.amr.corp.intel.com>
Date: Wed, 18 Jul 2007 16:16:32 -0700
From: "Waskiewicz Jr, Peter P" <peter.p.waskiewicz.jr@...el.com>
To: <netdev@...r.kernel.org>
Cc: "Patrick McHardy" <kaber@...sh.net>
Subject: Question: how to detect if a qdisc is root or not?
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. Now the
information whether or not the qdisc is root gets passed via tc from
userspace, but that lives in the tcmsg struct, not the rtattr list of
options. Does anyone know, outside of adding another attribute to the
rtattr list, how to detect if a qdisc is a root qdisc within the
prio_tune() initialization routine? Any and all help would be much
appreciated.
Thanks,
PJ Waskiewicz
Intel Corporation
peter.p.waskiewicz.jr@...el.com <mailto:peter.p.waskiewicz.jr@...el.com>
-
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