diff options
author | Patrick McHardy <kaber@trash.net> | 2009-09-04 06:41:18 +0000 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2009-09-06 02:07:03 -0700 |
commit | af356afa010f3cd2c8b8fcc3bce90f7a7b7ec02a (patch) | |
tree | 302d938363bbaec3e69a58e36dbf8a304b24144c /include | |
parent | 5b9a9ccfad8553dbf7a9b17ba78bad70215ed0e2 (diff) | |
download | lwn-af356afa010f3cd2c8b8fcc3bce90f7a7b7ec02a.tar.gz lwn-af356afa010f3cd2c8b8fcc3bce90f7a7b7ec02a.zip |
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>
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/netdevice.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index 121cbad0aae5..a44118b1b56c 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h @@ -832,6 +832,9 @@ struct net_device /* Number of TX queues currently active in device */ unsigned int real_num_tx_queues; + /* root qdisc from userspace point of view */ + struct Qdisc *qdisc; + unsigned long tx_queue_len; /* Max frames per queue allowed */ spinlock_t tx_global_lock; /* |