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 [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]> - 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