diff options
Diffstat (limited to 'net/sched/sch_hfsc.c')
-rw-r--r-- | net/sched/sch_hfsc.c | 21 |
1 files changed, 3 insertions, 18 deletions
diff --git a/net/sched/sch_hfsc.c b/net/sched/sch_hfsc.c index 9d124c4ee3a7..874452c41a01 100644 --- a/net/sched/sch_hfsc.c +++ b/net/sched/sch_hfsc.c | |||
@@ -53,7 +53,6 @@ | |||
53 | #include <linux/module.h> | 53 | #include <linux/module.h> |
54 | #include <linux/types.h> | 54 | #include <linux/types.h> |
55 | #include <linux/errno.h> | 55 | #include <linux/errno.h> |
56 | #include <linux/jiffies.h> | ||
57 | #include <linux/compiler.h> | 56 | #include <linux/compiler.h> |
58 | #include <linux/spinlock.h> | 57 | #include <linux/spinlock.h> |
59 | #include <linux/skbuff.h> | 58 | #include <linux/skbuff.h> |
@@ -62,13 +61,11 @@ | |||
62 | #include <linux/list.h> | 61 | #include <linux/list.h> |
63 | #include <linux/rbtree.h> | 62 | #include <linux/rbtree.h> |
64 | #include <linux/init.h> | 63 | #include <linux/init.h> |
65 | #include <linux/netdevice.h> | ||
66 | #include <linux/rtnetlink.h> | 64 | #include <linux/rtnetlink.h> |
67 | #include <linux/pkt_sched.h> | 65 | #include <linux/pkt_sched.h> |
68 | #include <net/netlink.h> | 66 | #include <net/netlink.h> |
69 | #include <net/pkt_sched.h> | 67 | #include <net/pkt_sched.h> |
70 | #include <net/pkt_cls.h> | 68 | #include <net/pkt_cls.h> |
71 | #include <asm/system.h> | ||
72 | #include <asm/div64.h> | 69 | #include <asm/div64.h> |
73 | 70 | ||
74 | /* | 71 | /* |
@@ -122,7 +119,6 @@ struct hfsc_class | |||
122 | struct gnet_stats_basic bstats; | 119 | struct gnet_stats_basic bstats; |
123 | struct gnet_stats_queue qstats; | 120 | struct gnet_stats_queue qstats; |
124 | struct gnet_stats_rate_est rate_est; | 121 | struct gnet_stats_rate_est rate_est; |
125 | spinlock_t *stats_lock; | ||
126 | unsigned int level; /* class level in hierarchy */ | 122 | unsigned int level; /* class level in hierarchy */ |
127 | struct tcf_proto *filter_list; /* filter list */ | 123 | struct tcf_proto *filter_list; /* filter list */ |
128 | unsigned int filter_cnt; /* filter count */ | 124 | unsigned int filter_cnt; /* filter count */ |
@@ -1054,11 +1050,10 @@ hfsc_change_class(struct Qdisc *sch, u32 classid, u32 parentid, | |||
1054 | } | 1050 | } |
1055 | sch_tree_unlock(sch); | 1051 | sch_tree_unlock(sch); |
1056 | 1052 | ||
1057 | #ifdef CONFIG_NET_ESTIMATOR | ||
1058 | if (tca[TCA_RATE-1]) | 1053 | if (tca[TCA_RATE-1]) |
1059 | gen_replace_estimator(&cl->bstats, &cl->rate_est, | 1054 | gen_replace_estimator(&cl->bstats, &cl->rate_est, |
1060 | cl->stats_lock, tca[TCA_RATE-1]); | 1055 | &sch->dev->queue_lock, |
1061 | #endif | 1056 | tca[TCA_RATE-1]); |
1062 | return 0; | 1057 | return 0; |
1063 | } | 1058 | } |
1064 | 1059 | ||
@@ -1098,7 +1093,6 @@ hfsc_change_class(struct Qdisc *sch, u32 classid, u32 parentid, | |||
1098 | cl->qdisc = qdisc_create_dflt(sch->dev, &pfifo_qdisc_ops, classid); | 1093 | cl->qdisc = qdisc_create_dflt(sch->dev, &pfifo_qdisc_ops, classid); |
1099 | if (cl->qdisc == NULL) | 1094 | if (cl->qdisc == NULL) |
1100 | cl->qdisc = &noop_qdisc; | 1095 | cl->qdisc = &noop_qdisc; |
1101 | cl->stats_lock = &sch->dev->queue_lock; | ||
1102 | INIT_LIST_HEAD(&cl->children); | 1096 | INIT_LIST_HEAD(&cl->children); |
1103 | cl->vt_tree = RB_ROOT; | 1097 | cl->vt_tree = RB_ROOT; |
1104 | cl->cf_tree = RB_ROOT; | 1098 | cl->cf_tree = RB_ROOT; |
@@ -1112,11 +1106,9 @@ hfsc_change_class(struct Qdisc *sch, u32 classid, u32 parentid, | |||
1112 | cl->cl_pcvtoff = parent->cl_cvtoff; | 1106 | cl->cl_pcvtoff = parent->cl_cvtoff; |
1113 | sch_tree_unlock(sch); | 1107 | sch_tree_unlock(sch); |
1114 | 1108 | ||
1115 | #ifdef CONFIG_NET_ESTIMATOR | ||
1116 | if (tca[TCA_RATE-1]) | 1109 | if (tca[TCA_RATE-1]) |
1117 | gen_new_estimator(&cl->bstats, &cl->rate_est, | 1110 | gen_new_estimator(&cl->bstats, &cl->rate_est, |
1118 | cl->stats_lock, tca[TCA_RATE-1]); | 1111 | &sch->dev->queue_lock, tca[TCA_RATE-1]); |
1119 | #endif | ||
1120 | *arg = (unsigned long)cl; | 1112 | *arg = (unsigned long)cl; |
1121 | return 0; | 1113 | return 0; |
1122 | } | 1114 | } |
@@ -1128,9 +1120,7 @@ hfsc_destroy_class(struct Qdisc *sch, struct hfsc_class *cl) | |||
1128 | 1120 | ||
1129 | tcf_destroy_chain(cl->filter_list); | 1121 | tcf_destroy_chain(cl->filter_list); |
1130 | qdisc_destroy(cl->qdisc); | 1122 | qdisc_destroy(cl->qdisc); |
1131 | #ifdef CONFIG_NET_ESTIMATOR | ||
1132 | gen_kill_estimator(&cl->bstats, &cl->rate_est); | 1123 | gen_kill_estimator(&cl->bstats, &cl->rate_est); |
1133 | #endif | ||
1134 | if (cl != &q->root) | 1124 | if (cl != &q->root) |
1135 | kfree(cl); | 1125 | kfree(cl); |
1136 | } | 1126 | } |
@@ -1384,9 +1374,7 @@ hfsc_dump_class_stats(struct Qdisc *sch, unsigned long arg, | |||
1384 | xstats.rtwork = cl->cl_cumul; | 1374 | xstats.rtwork = cl->cl_cumul; |
1385 | 1375 | ||
1386 | if (gnet_stats_copy_basic(d, &cl->bstats) < 0 || | 1376 | if (gnet_stats_copy_basic(d, &cl->bstats) < 0 || |
1387 | #ifdef CONFIG_NET_ESTIMATOR | ||
1388 | gnet_stats_copy_rate_est(d, &cl->rate_est) < 0 || | 1377 | gnet_stats_copy_rate_est(d, &cl->rate_est) < 0 || |
1389 | #endif | ||
1390 | gnet_stats_copy_queue(d, &cl->qstats) < 0) | 1378 | gnet_stats_copy_queue(d, &cl->qstats) < 0) |
1391 | return -1; | 1379 | return -1; |
1392 | 1380 | ||
@@ -1448,8 +1436,6 @@ hfsc_init_qdisc(struct Qdisc *sch, struct rtattr *opt) | |||
1448 | return -EINVAL; | 1436 | return -EINVAL; |
1449 | qopt = RTA_DATA(opt); | 1437 | qopt = RTA_DATA(opt); |
1450 | 1438 | ||
1451 | sch->stats_lock = &sch->dev->queue_lock; | ||
1452 | |||
1453 | q->defcls = qopt->defcls; | 1439 | q->defcls = qopt->defcls; |
1454 | for (i = 0; i < HFSC_HSIZE; i++) | 1440 | for (i = 0; i < HFSC_HSIZE; i++) |
1455 | INIT_LIST_HEAD(&q->clhash[i]); | 1441 | INIT_LIST_HEAD(&q->clhash[i]); |
@@ -1464,7 +1450,6 @@ hfsc_init_qdisc(struct Qdisc *sch, struct rtattr *opt) | |||
1464 | sch->handle); | 1450 | sch->handle); |
1465 | if (q->root.qdisc == NULL) | 1451 | if (q->root.qdisc == NULL) |
1466 | q->root.qdisc = &noop_qdisc; | 1452 | q->root.qdisc = &noop_qdisc; |
1467 | q->root.stats_lock = &sch->dev->queue_lock; | ||
1468 | INIT_LIST_HEAD(&q->root.children); | 1453 | INIT_LIST_HEAD(&q->root.children); |
1469 | q->root.vt_tree = RB_ROOT; | 1454 | q->root.vt_tree = RB_ROOT; |
1470 | q->root.cf_tree = RB_ROOT; | 1455 | q->root.cf_tree = RB_ROOT; |