aboutsummaryrefslogtreecommitdiffstats
path: root/net/sched/sch_api.c
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2008-07-08 19:55:56 -0400
committerDavid S. Miller <davem@davemloft.net>2008-07-08 19:55:56 -0400
commitbb949fbd1878973c3539d9aecff52f284482a937 (patch)
treee8bde854b18be79723502167c16e2131914a75b7 /net/sched/sch_api.c
parente65d22e18038eed7307276e46810d884c402d57d (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.c12
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
554static struct Qdisc * 554static struct Qdisc *
555qdisc_create(struct net_device *dev, u32 parent, u32 handle, 555qdisc_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)