net_sched: reintroduce dev->qdisc for use by sch_api
authorPatrick McHardy <kaber@trash.net>
Fri, 4 Sep 2009 06:41:18 +0000 (06:41 +0000)
committerDavid S. Miller <davem@davemloft.net>
Sun, 6 Sep 2009 09:07:03 +0000 (02:07 -0700)
commitaf356afa010f3cd2c8b8fcc3bce90f7a7b7ec02a
tree302d938363bbaec3e69a58e36dbf8a304b24144c
parent5b9a9ccfad8553dbf7a9b17ba78bad70215ed0e2
net_sched: reintroduce dev->qdisc for use by sch_api

Currently the multiqueue integration with the qdisc API suffers from
a few problems:

- with multiple queues, all root qdiscs use the same handle. This means
  they can't be exposed to userspace in a backwards compatible fashion.

- all API operations always refer to queue number 0. Newly created
  qdiscs are automatically shared between all queues, its not possible
  to address individual queues or restore multiqueue behaviour once a
  shared qdisc has been attached.

- Dumps only contain the root qdisc of queue 0, in case of non-shared
  qdiscs this means the statistics are incomplete.

This patch reintroduces dev->qdisc, which points to the (single) root qdisc
from userspace's point of view. Currently it either points to the first
(non-shared) default qdisc, or a qdisc shared between all queues. The
following patches will introduce a classful dummy qdisc, which will be used
as root qdisc and contain the per-queue qdiscs as children.

Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/linux/netdevice.h
net/core/rtnetlink.c
net/sched/cls_api.c
net/sched/sch_api.c
net/sched/sch_generic.c