diff options
| author | Patrick McHardy <kaber@trash.net> | 2007-07-15 03:03:05 -0400 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2007-07-15 03:03:05 -0400 |
| commit | c3bc7cff8fddb6ff9715be8bfc3d911378c4d69d (patch) | |
| tree | e23946fb3583ee17e95c07f6e04b5dcc498fa581 | |
| parent | 73ca4918fbb98311421259d82ef4ab44feeace43 (diff) | |
[NET_SCHED]: Kill CONFIG_NET_CLS_POLICE
The NET_CLS_ACT option is now a full replacement for NET_CLS_POLICE,
remove the old code. The config option will be kept around to select
the equivalent NET_CLS_ACT options for a short time to allow easier
upgrades.
Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
| -rw-r--r-- | include/net/act_api.h | 30 | ||||
| -rw-r--r-- | include/net/pkt_cls.h | 8 | ||||
| -rw-r--r-- | include/net/sch_generic.h | 2 | ||||
| -rw-r--r-- | net/sched/Kconfig | 8 | ||||
| -rw-r--r-- | net/sched/Makefile | 1 | ||||
| -rw-r--r-- | net/sched/act_police.c | 246 | ||||
| -rw-r--r-- | net/sched/cls_api.c | 40 | ||||
| -rw-r--r-- | net/sched/cls_u32.c | 3 | ||||
| -rw-r--r-- | net/sched/sch_atm.c | 19 | ||||
| -rw-r--r-- | net/sched/sch_cbq.c | 45 | ||||
| -rw-r--r-- | net/sched/sch_dsmark.c | 13 | ||||
| -rw-r--r-- | net/sched/sch_hfsc.c | 3 | ||||
| -rw-r--r-- | net/sched/sch_htb.c | 3 | ||||
| -rw-r--r-- | net/sched/sch_ingress.c | 19 | ||||
| -rw-r--r-- | net/sched/sch_tbf.c | 2 |
15 files changed, 38 insertions, 404 deletions
diff --git a/include/net/act_api.h b/include/net/act_api.h index 2f0273feabd3..68b4eaf7719d 100644 --- a/include/net/act_api.h +++ b/include/net/act_api.h | |||
| @@ -121,34 +121,4 @@ extern int tcf_action_dump_old(struct sk_buff *skb, struct tc_action *a, int, in | |||
| 121 | extern int tcf_action_dump_1(struct sk_buff *skb, struct tc_action *a, int, int); | 121 | extern int tcf_action_dump_1(struct sk_buff *skb, struct tc_action *a, int, int); |
| 122 | extern int tcf_action_copy_stats (struct sk_buff *,struct tc_action *, int); | 122 | extern int tcf_action_copy_stats (struct sk_buff *,struct tc_action *, int); |
| 123 | #endif /* CONFIG_NET_CLS_ACT */ | 123 | #endif /* CONFIG_NET_CLS_ACT */ |
| 124 | |||
| 125 | extern int tcf_police(struct sk_buff *skb, struct tcf_police *p); | ||
| 126 | extern void tcf_police_destroy(struct tcf_police *p); | ||
| 127 | extern struct tcf_police * tcf_police_locate(struct rtattr *rta, struct rtattr *est); | ||
| 128 | extern int tcf_police_dump(struct sk_buff *skb, struct tcf_police *p); | ||
| 129 | extern int tcf_police_dump_stats(struct sk_buff *skb, struct tcf_police *p); | ||
| 130 | |||
| 131 | static inline int | ||
| 132 | tcf_police_release(struct tcf_police *p, int bind) | ||
| 133 | { | ||
| 134 | int ret = 0; | ||
| 135 | #ifdef CONFIG_NET_CLS_ACT | ||
| 136 | if (p) { | ||
| 137 | if (bind) | ||
| 138 | p->tcf_bindcnt--; | ||
| 139 | |||
| 140 | p->tcf_refcnt--; | ||
| 141 | if (p->tcf_refcnt <= 0 && !p->tcf_bindcnt) { | ||
| 142 | tcf_police_destroy(p); | ||
| 143 | ret = 1; | ||
| 144 | } | ||
| 145 | } | ||
| 146 | #else | ||
| 147 | if (p && --p->tcf_refcnt == 0) | ||
| 148 | tcf_police_destroy(p); | ||
| 149 | |||
| 150 | #endif /* CONFIG_NET_CLS_ACT */ | ||
| 151 | return ret; | ||
| 152 | } | ||
| 153 | |||
| 154 | #endif | 124 | #endif |
diff --git a/include/net/pkt_cls.h b/include/net/pkt_cls.h index 6c29920cbe29..7968b1d66369 100644 --- a/include/net/pkt_cls.h +++ b/include/net/pkt_cls.h | |||
| @@ -65,8 +65,6 @@ struct tcf_exts | |||
| 65 | { | 65 | { |
| 66 | #ifdef CONFIG_NET_CLS_ACT | 66 | #ifdef CONFIG_NET_CLS_ACT |
| 67 | struct tc_action *action; | 67 | struct tc_action *action; |
| 68 | #elif defined CONFIG_NET_CLS_POLICE | ||
| 69 | struct tcf_police *police; | ||
| 70 | #endif | 68 | #endif |
| 71 | }; | 69 | }; |
| 72 | 70 | ||
| @@ -91,8 +89,6 @@ tcf_exts_is_predicative(struct tcf_exts *exts) | |||
| 91 | { | 89 | { |
| 92 | #ifdef CONFIG_NET_CLS_ACT | 90 | #ifdef CONFIG_NET_CLS_ACT |
| 93 | return !!exts->action; | 91 | return !!exts->action; |
| 94 | #elif defined CONFIG_NET_CLS_POLICE | ||
| 95 | return !!exts->police; | ||
| 96 | #else | 92 | #else |
| 97 | return 0; | 93 | return 0; |
| 98 | #endif | 94 | #endif |
| @@ -129,11 +125,7 @@ tcf_exts_exec(struct sk_buff *skb, struct tcf_exts *exts, | |||
| 129 | #ifdef CONFIG_NET_CLS_ACT | 125 | #ifdef CONFIG_NET_CLS_ACT |
| 130 | if (exts->action) | 126 | if (exts->action) |
| 131 | return tcf_action_exec(skb, exts->action, res); | 127 | return tcf_action_exec(skb, exts->action, res); |
| 132 | #elif defined CONFIG_NET_CLS_POLICE | ||
| 133 | if (exts->police) | ||
| 134 | return tcf_police(skb, exts->police); | ||
| 135 | #endif | 128 | #endif |
| 136 | |||
| 137 | return 0; | 129 | return 0; |
| 138 | } | 130 | } |
| 139 | 131 | ||
diff --git a/include/net/sch_generic.h b/include/net/sch_generic.h index 0153cd9d1b8d..8a67f24cbe02 100644 --- a/include/net/sch_generic.h +++ b/include/net/sch_generic.h | |||
| @@ -290,7 +290,7 @@ static inline int qdisc_reshape_fail(struct sk_buff *skb, struct Qdisc *sch) | |||
| 290 | { | 290 | { |
| 291 | sch->qstats.drops++; | 291 | sch->qstats.drops++; |
| 292 | 292 | ||
| 293 | #if defined(CONFIG_NET_CLS_ACT) || defined(CONFIG_NET_CLS_POLICE) | 293 | #ifdef CONFIG_NET_CLS_ACT |
| 294 | if (sch->reshape_fail == NULL || sch->reshape_fail(skb, sch)) | 294 | if (sch->reshape_fail == NULL || sch->reshape_fail(skb, sch)) |
| 295 | goto drop; | 295 | goto drop; |
| 296 | 296 | ||
diff --git a/net/sched/Kconfig b/net/sched/Kconfig index b4662888bdbd..d3f7c3f9407a 100644 --- a/net/sched/Kconfig +++ b/net/sched/Kconfig | |||
| @@ -472,12 +472,12 @@ config NET_ACT_SIMP | |||
| 472 | 472 | ||
| 473 | config NET_CLS_POLICE | 473 | config NET_CLS_POLICE |
| 474 | bool "Traffic Policing (obsolete)" | 474 | bool "Traffic Policing (obsolete)" |
| 475 | depends on NET_CLS_ACT!=y | 475 | select NET_CLS_ACT |
| 476 | select NET_ACT_POLICE | ||
| 476 | ---help--- | 477 | ---help--- |
| 477 | Say Y here if you want to do traffic policing, i.e. strict | 478 | Say Y here if you want to do traffic policing, i.e. strict |
| 478 | bandwidth limiting. This option is obsoleted by the traffic | 479 | bandwidth limiting. This option is obsolete and just selects |
| 479 | policer implemented as action, it stays here for compatibility | 480 | the option replacing it. It will be removed in the future. |
| 480 | reasons. | ||
| 481 | 481 | ||
| 482 | config NET_CLS_IND | 482 | config NET_CLS_IND |
| 483 | bool "Incoming device classification" | 483 | bool "Incoming device classification" |
diff --git a/net/sched/Makefile b/net/sched/Makefile index 020767a204d4..b67c36f65cf2 100644 --- a/net/sched/Makefile +++ b/net/sched/Makefile | |||
| @@ -8,7 +8,6 @@ obj-$(CONFIG_NET_SCHED) += sch_api.o sch_blackhole.o | |||
| 8 | obj-$(CONFIG_NET_CLS) += cls_api.o | 8 | obj-$(CONFIG_NET_CLS) += cls_api.o |
| 9 | obj-$(CONFIG_NET_CLS_ACT) += act_api.o | 9 | obj-$(CONFIG_NET_CLS_ACT) += act_api.o |
| 10 | obj-$(CONFIG_NET_ACT_POLICE) += act_police.o | 10 | obj-$(CONFIG_NET_ACT_POLICE) += act_police.o |
| 11 | obj-$(CONFIG_NET_CLS_POLICE) += act_police.o | ||
| 12 | obj-$(CONFIG_NET_ACT_GACT) += act_gact.o | 11 | obj-$(CONFIG_NET_ACT_GACT) += act_gact.o |
| 13 | obj-$(CONFIG_NET_ACT_MIRRED) += act_mirred.o | 12 | obj-$(CONFIG_NET_ACT_MIRRED) += act_mirred.o |
| 14 | obj-$(CONFIG_NET_ACT_IPT) += act_ipt.o | 13 | obj-$(CONFIG_NET_ACT_IPT) += act_ipt.o |
diff --git a/net/sched/act_police.c b/net/sched/act_police.c index d20403890877..bf90e60f8411 100644 --- a/net/sched/act_police.c +++ b/net/sched/act_police.c | |||
| @@ -50,7 +50,6 @@ struct tc_police_compat | |||
| 50 | 50 | ||
| 51 | /* Each policer is serialized by its individual spinlock */ | 51 | /* Each policer is serialized by its individual spinlock */ |
| 52 | 52 | ||
| 53 | #ifdef CONFIG_NET_CLS_ACT | ||
| 54 | static int tcf_act_police_walker(struct sk_buff *skb, struct netlink_callback *cb, | 53 | static int tcf_act_police_walker(struct sk_buff *skb, struct netlink_callback *cb, |
| 55 | int type, struct tc_action *a) | 54 | int type, struct tc_action *a) |
| 56 | { | 55 | { |
| @@ -96,9 +95,8 @@ rtattr_failure: | |||
| 96 | nlmsg_trim(skb, r); | 95 | nlmsg_trim(skb, r); |
| 97 | goto done; | 96 | goto done; |
| 98 | } | 97 | } |
| 99 | #endif | ||
| 100 | 98 | ||
| 101 | void tcf_police_destroy(struct tcf_police *p) | 99 | static void tcf_police_destroy(struct tcf_police *p) |
| 102 | { | 100 | { |
| 103 | unsigned int h = tcf_hash(p->tcf_index, POL_TAB_MASK); | 101 | unsigned int h = tcf_hash(p->tcf_index, POL_TAB_MASK); |
| 104 | struct tcf_common **p1p; | 102 | struct tcf_common **p1p; |
| @@ -121,7 +119,6 @@ void tcf_police_destroy(struct tcf_police *p) | |||
| 121 | BUG_TRAP(0); | 119 | BUG_TRAP(0); |
| 122 | } | 120 | } |
| 123 | 121 | ||
| 124 | #ifdef CONFIG_NET_CLS_ACT | ||
| 125 | static int tcf_act_police_locate(struct rtattr *rta, struct rtattr *est, | 122 | static int tcf_act_police_locate(struct rtattr *rta, struct rtattr *est, |
| 126 | struct tc_action *a, int ovr, int bind) | 123 | struct tc_action *a, int ovr, int bind) |
| 127 | { | 124 | { |
| @@ -247,10 +244,19 @@ failure: | |||
| 247 | static int tcf_act_police_cleanup(struct tc_action *a, int bind) | 244 | static int tcf_act_police_cleanup(struct tc_action *a, int bind) |
| 248 | { | 245 | { |
| 249 | struct tcf_police *p = a->priv; | 246 | struct tcf_police *p = a->priv; |
| 247 | int ret = 0; | ||
| 250 | 248 | ||
| 251 | if (p != NULL) | 249 | if (p != NULL) { |
| 252 | return tcf_police_release(p, bind); | 250 | if (bind) |
| 253 | return 0; | 251 | p->tcf_bindcnt--; |
| 252 | |||
| 253 | p->tcf_refcnt--; | ||
