diff options
author | David S. Miller <davem@davemloft.net> | 2008-07-08 19:55:56 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-07-08 19:55:56 -0400 |
commit | bb949fbd1878973c3539d9aecff52f284482a937 (patch) | |
tree | e8bde854b18be79723502167c16e2131914a75b7 /net/sched/sch_api.c | |
parent | e65d22e18038eed7307276e46810d884c402d57d (diff) |
netdev: Create netdev_queue abstraction.
A netdev_queue is an entity managed by a qdisc.
Currently there is one RX and one TX queue, and a netdev_queue merely
contains a backpointer to the net_device.
The Qdisc struct is augmented with a netdev_queue pointer as well.
Eventually the 'dev' Qdisc member will go away and we will have the
resulting hierarchy:
net_device --> netdev_queue --> Qdisc
Also, qdisc_alloc() and qdisc_create_dflt() now take a netdev_queue
pointer argument.
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/sched/sch_api.c')
-rw-r--r-- | net/sched/sch_api.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/net/sched/sch_api.c b/net/sched/sch_api.c index 69e918bb4278..b86c98bd06a3 100644 --- a/net/sched/sch_api.c +++ b/net/sched/sch_api.c | |||
@@ -552,8 +552,8 @@ static int qdisc_graft(struct net_device *dev, struct Qdisc *parent, | |||
552 | */ | 552 | */ |
553 | 553 | ||
554 | static struct Qdisc * | 554 | static struct Qdisc * |
555 | qdisc_create(struct net_device *dev, u32 parent, u32 handle, | 555 | qdisc_create(struct net_device *dev, struct netdev_queue *dev_queue, |
556 | struct nlattr **tca, int *errp) | 556 | u32 parent, u32 handle, struct nlattr **tca, int *errp) |
557 | { | 557 | { |
558 | int err; | 558 | int err; |
559 | struct nlattr *kind = tca[TCA_KIND]; | 559 | struct nlattr *kind = tca[TCA_KIND]; |
@@ -593,7 +593,7 @@ qdisc_create(struct net_device *dev, u32 parent, u32 handle, | |||
593 | if (ops == NULL) | 593 | if (ops == NULL) |
594 | goto err_out; | 594 | goto err_out; |
595 | 595 | ||
596 | sch = qdisc_alloc(dev, ops); | 596 | sch = qdisc_alloc(dev, dev_queue, ops); |
597 | if (IS_ERR(sch)) { | 597 | if (IS_ERR(sch)) { |
598 | err = PTR_ERR(sch); | 598 | err = PTR_ERR(sch); |
599 | goto err_out2; | 599 | goto err_out2; |
@@ -892,10 +892,12 @@ create_n_graft: | |||
892 | if (!(n->nlmsg_flags&NLM_F_CREATE)) | 892 | if (!(n->nlmsg_flags&NLM_F_CREATE)) |
893 | return -ENOENT; | 893 | return -ENOENT; |
894 | if (clid == TC_H_INGRESS) | 894 | if (clid == TC_H_INGRESS) |
895 | q = qdisc_create(dev, tcm->tcm_parent, tcm->tcm_parent, | 895 | q = qdisc_create(dev, &dev->rx_queue, |
896 | tcm->tcm_parent, tcm->tcm_parent, | ||
896 | tca, &err); | 897 | tca, &err); |
897 | else | 898 | else |
898 | q = qdisc_create(dev, tcm->tcm_parent, tcm->tcm_handle, | 899 | q = qdisc_create(dev, &dev->tx_queue, |
900 | tcm->tcm_parent, tcm->tcm_handle, | ||
899 | tca, &err); | 901 | tca, &err); |
900 | if (q == NULL) { | 902 | if (q == NULL) { |
901 | if (err == -EAGAIN) | 903 | if (err == -EAGAIN) |