pkt_sched: Fix tx queue selection in tc_modify_qdisc
authorJarek Poplawski <jarkao2@gmail.com>
Tue, 15 Sep 2009 09:53:07 +0000 (02:53 -0700)
committerDavid S. Miller <davem@davemloft.net>
Tue, 15 Sep 2009 09:53:07 +0000 (02:53 -0700)
commit926e61b7c44db83013159ac2f74bccd451607b5a
tree512b532e22d4374948e0d149902304edfbef7e25
parentca519274d537706b6fb1e3e91238d34a23320584
pkt_sched: Fix tx queue selection in tc_modify_qdisc

After the recent mq change there is the new select_queue qdisc class
method used in tc_modify_qdisc, but it works OK only for direct child
qdiscs of mq qdisc. Grandchildren always get the first tx queue, which
would give wrong qdisc_root etc. results (e.g. for sch_htb as child of
sch_prio). This patch fixes it by using parent's dev_queue for such
grandchildren qdiscs. The select_queue method's return type is changed
BTW.

With feedback from: Patrick McHardy <kaber@trash.net>

Signed-off-by: Jarek Poplawski <jarkao2@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/net/sch_generic.h
net/sched/sch_api.c
net/sched/sch_mq.c