diff options
Diffstat (limited to 'net/sched')
34 files changed, 107 insertions, 18 deletions
diff --git a/net/sched/Kconfig b/net/sched/Kconfig index 929218a47620..2f691fb180d1 100644 --- a/net/sched/Kconfig +++ b/net/sched/Kconfig | |||
@@ -328,13 +328,16 @@ config NET_CLS_FLOW | |||
328 | module will be called cls_flow. | 328 | module will be called cls_flow. |
329 | 329 | ||
330 | config NET_CLS_CGROUP | 330 | config NET_CLS_CGROUP |
331 | bool "Control Group Classifier" | 331 | tristate "Control Group Classifier" |
332 | select NET_CLS | 332 | select NET_CLS |
333 | depends on CGROUPS | 333 | depends on CGROUPS |
334 | ---help--- | 334 | ---help--- |
335 | Say Y here if you want to classify packets based on the control | 335 | Say Y here if you want to classify packets based on the control |
336 | cgroup of their process. | 336 | cgroup of their process. |
337 | 337 | ||
338 | To compile this code as a module, choose M here: the | ||
339 | module will be called cls_cgroup. | ||
340 | |||
338 | config NET_EMATCH | 341 | config NET_EMATCH |
339 | bool "Extended Matches" | 342 | bool "Extended Matches" |
340 | select NET_CLS | 343 | select NET_CLS |
@@ -433,7 +436,7 @@ config NET_ACT_POLICE | |||
433 | module. | 436 | module. |
434 | 437 | ||
435 | To compile this code as a module, choose M here: the | 438 | To compile this code as a module, choose M here: the |
436 | module will be called police. | 439 | module will be called act_police. |
437 | 440 | ||
438 | config NET_ACT_GACT | 441 | config NET_ACT_GACT |
439 | tristate "Generic actions" | 442 | tristate "Generic actions" |
@@ -443,7 +446,7 @@ config NET_ACT_GACT | |||
443 | accepting packets. | 446 | accepting packets. |
444 | 447 | ||
445 | To compile this code as a module, choose M here: the | 448 | To compile this code as a module, choose M here: the |
446 | module will be called gact. | 449 | module will be called act_gact. |
447 | 450 | ||
448 | config GACT_PROB | 451 | config GACT_PROB |
449 | bool "Probability support" | 452 | bool "Probability support" |
@@ -459,7 +462,7 @@ config NET_ACT_MIRRED | |||
459 | other devices. | 462 | other devices. |
460 | 463 | ||
461 | To compile this code as a module, choose M here: the | 464 | To compile this code as a module, choose M here: the |
462 | module will be called mirred. | 465 | module will be called act_mirred. |
463 | 466 | ||
464 | config NET_ACT_IPT | 467 | config NET_ACT_IPT |
465 | tristate "IPtables targets" | 468 | tristate "IPtables targets" |
@@ -469,7 +472,7 @@ config NET_ACT_IPT | |||
469 | classification. | 472 | classification. |
470 | 473 | ||
471 | To compile this code as a module, choose M here: the | 474 | To compile this code as a module, choose M here: the |
472 | module will be called ipt. | 475 | module will be called act_ipt. |
473 | 476 | ||
474 | config NET_ACT_NAT | 477 | config NET_ACT_NAT |
475 | tristate "Stateless NAT" | 478 | tristate "Stateless NAT" |
@@ -479,7 +482,7 @@ config NET_ACT_NAT | |||
479 | netfilter for NAT unless you know what you are doing. | 482 | netfilter for NAT unless you know what you are doing. |
480 | 483 | ||
481 | To compile this code as a module, choose M here: the | 484 | To compile this code as a module, choose M here: the |
482 | module will be called nat. | 485 | module will be called act_nat. |
483 | 486 | ||
484 | config NET_ACT_PEDIT | 487 | config NET_ACT_PEDIT |
485 | tristate "Packet Editing" | 488 | tristate "Packet Editing" |
@@ -488,7 +491,7 @@ config NET_ACT_PEDIT | |||
488 | Say Y here if you want to mangle the content of packets. | 491 | Say Y here if you want to mangle the content of packets. |
489 | 492 | ||
490 | To compile this code as a module, choose M here: the | 493 | To compile this code as a module, choose M here: the |
491 | module will be called pedit. | 494 | module will be called act_pedit. |
492 | 495 | ||
493 | config NET_ACT_SIMP | 496 | config NET_ACT_SIMP |
494 | tristate "Simple Example (Debug)" | 497 | tristate "Simple Example (Debug)" |
@@ -502,7 +505,7 @@ config NET_ACT_SIMP | |||
502 | If unsure, say N. | 505 | If unsure, say N. |
503 | 506 | ||
504 | To compile this code as a module, choose M here: the | 507 | To compile this code as a module, choose M here: the |
505 | module will be called simple. | 508 | module will be called act_simple. |
506 | 509 | ||
507 | config NET_ACT_SKBEDIT | 510 | config NET_ACT_SKBEDIT |
508 | tristate "SKB Editing" | 511 | tristate "SKB Editing" |
@@ -513,7 +516,7 @@ config NET_ACT_SKBEDIT | |||
513 | If unsure, say N. | 516 | If unsure, say N. |
514 | 517 | ||
515 | To compile this code as a module, choose M here: the | 518 | To compile this code as a module, choose M here: the |
516 | module will be called skbedit. | 519 | module will be called act_skbedit. |
517 | 520 | ||
518 | config NET_CLS_IND | 521 | config NET_CLS_IND |
519 | bool "Incoming device classification" | 522 | bool "Incoming device classification" |
diff --git a/net/sched/act_api.c b/net/sched/act_api.c index 64f5e328cee9..d8e0171d9a4b 100644 --- a/net/sched/act_api.c +++ b/net/sched/act_api.c | |||
@@ -15,6 +15,7 @@ | |||
15 | #include <linux/kernel.h> | 15 | #include <linux/kernel.h> |
16 | #include <linux/string.h> | 16 | #include <linux/string.h> |
17 | #include <linux/errno.h> | 17 | #include <linux/errno.h> |
18 | #include <linux/slab.h> | ||
18 | #include <linux/skbuff.h> | 19 | #include <linux/skbuff.h> |
19 | #include <linux/init.h> | 20 | #include <linux/init.h> |
20 | #include <linux/kmod.h> | 21 | #include <linux/kmod.h> |
diff --git a/net/sched/act_ipt.c b/net/sched/act_ipt.c index 082c520b0def..da27a170b6b7 100644 --- a/net/sched/act_ipt.c +++ b/net/sched/act_ipt.c | |||
@@ -19,6 +19,7 @@ | |||
19 | #include <linux/rtnetlink.h> | 19 | #include <linux/rtnetlink.h> |
20 | #include <linux/module.h> | 20 | #include <linux/module.h> |
21 | #include <linux/init.h> | 21 | #include <linux/init.h> |
22 | #include <linux/slab.h> | ||
22 | #include <net/netlink.h> | 23 | #include <net/netlink.h> |
23 | #include <net/pkt_sched.h> | 24 | #include <net/pkt_sched.h> |
24 | #include <linux/tc_act/tc_ipt.h> | 25 | #include <linux/tc_act/tc_ipt.h> |
diff --git a/net/sched/act_mirred.c b/net/sched/act_mirred.c index d329170243cb..c046682054eb 100644 --- a/net/sched/act_mirred.c +++ b/net/sched/act_mirred.c | |||
@@ -20,6 +20,7 @@ | |||
20 | #include <linux/rtnetlink.h> | 20 | #include <linux/rtnetlink.h> |
21 | #include <linux/module.h> | 21 | #include <linux/module.h> |
22 | #include <linux/init.h> | 22 | #include <linux/init.h> |
23 | #include <linux/gfp.h> | ||
23 | #include <net/net_namespace.h> | 24 | #include <net/net_namespace.h> |
24 | #include <net/netlink.h> | 25 | #include <net/netlink.h> |
25 | #include <net/pkt_sched.h> | 26 | #include <net/pkt_sched.h> |
diff --git a/net/sched/act_pedit.c b/net/sched/act_pedit.c index 6b0359a500e6..b7dcfedc802e 100644 --- a/net/sched/act_pedit.c +++ b/net/sched/act_pedit.c | |||
@@ -17,6 +17,7 @@ | |||
17 | #include <linux/rtnetlink.h> | 17 | #include <linux/rtnetlink.h> |
18 | #include <linux/module.h> | 18 | #include <linux/module.h> |
19 | #include <linux/init.h> | 19 | #include <linux/init.h> |
20 | #include <linux/slab.h> | ||
20 | #include <net/netlink.h> | 21 | #include <net/netlink.h> |
21 | #include <net/pkt_sched.h> | 22 | #include <net/pkt_sched.h> |
22 | #include <linux/tc_act/tc_pedit.h> | 23 | #include <linux/tc_act/tc_pedit.h> |
diff --git a/net/sched/act_police.c b/net/sched/act_police.c index 723964c3ee4f..654f73dff7c1 100644 --- a/net/sched/act_police.c +++ b/net/sched/act_police.c | |||
@@ -18,6 +18,7 @@ | |||
18 | #include <linux/skbuff.h> | 18 | #include <linux/skbuff.h> |
19 | #include <linux/rtnetlink.h> | 19 | #include <linux/rtnetlink.h> |
20 | #include <linux/init.h> | 20 | #include <linux/init.h> |
21 | #include <linux/slab.h> | ||
21 | #include <net/act_api.h> | 22 | #include <net/act_api.h> |
22 | #include <net/netlink.h> | 23 | #include <net/netlink.h> |
23 | 24 | ||
diff --git a/net/sched/act_simple.c b/net/sched/act_simple.c index 8daa1ebc7413..622ca809c15c 100644 --- a/net/sched/act_simple.c +++ b/net/sched/act_simple.c | |||
@@ -11,6 +11,7 @@ | |||
11 | */ | 11 | */ |
12 | 12 | ||
13 | #include <linux/module.h> | 13 | #include <linux/module.h> |
14 | #include <linux/slab.h> | ||
14 | #include <linux/init.h> | 15 | #include <linux/init.h> |
15 | #include <linux/kernel.h> | 16 | #include <linux/kernel.h> |
16 | #include <linux/skbuff.h> | 17 | #include <linux/skbuff.h> |
diff --git a/net/sched/cls_api.c b/net/sched/cls_api.c index 3725d8fa29db..f082b27ff46d 100644 --- a/net/sched/cls_api.c +++ b/net/sched/cls_api.c | |||
@@ -24,6 +24,7 @@ | |||
24 | #include <linux/kmod.h> | 24 | #include <linux/kmod.h> |
25 | #include <linux/netlink.h> | 25 | #include <linux/netlink.h> |
26 | #include <linux/err.h> | 26 | #include <linux/err.h> |
27 | #include <linux/slab.h> | ||
27 | #include <net/net_namespace.h> | 28 | #include <net/net_namespace.h> |
28 | #include <net/sock.h> | 29 | #include <net/sock.h> |
29 | #include <net/netlink.h> | 30 | #include <net/netlink.h> |
diff --git a/net/sched/cls_basic.c b/net/sched/cls_basic.c index 4e2bda854119..efd4f95fd050 100644 --- a/net/sched/cls_basic.c +++ b/net/sched/cls_basic.c | |||
@@ -10,6 +10,7 @@ | |||
10 | */ | 10 | */ |
11 | 11 | ||
12 | #include <linux/module.h> | 12 | #include <linux/module.h> |
13 | #include <linux/slab.h> | ||
13 | #include <linux/types.h> | 14 | #include <linux/types.h> |
14 | #include <linux/kernel.h> | 15 | #include <linux/kernel.h> |
15 | #include <linux/string.h> | 16 | #include <linux/string.h> |
diff --git a/net/sched/cls_cgroup.c b/net/sched/cls_cgroup.c index e4877ca6727c..221180384fd7 100644 --- a/net/sched/cls_cgroup.c +++ b/net/sched/cls_cgroup.c | |||
@@ -10,6 +10,7 @@ | |||
10 | */ | 10 | */ |
11 | 11 | ||
12 | #include <linux/module.h> | 12 | #include <linux/module.h> |
13 | #include <linux/slab.h> | ||
13 | #include <linux/types.h> | 14 | #include <linux/types.h> |
14 | #include <linux/string.h> | 15 | #include <linux/string.h> |
15 | #include <linux/errno.h> | 16 | #include <linux/errno.h> |
@@ -24,6 +25,25 @@ struct cgroup_cls_state | |||
24 | u32 classid; | 25 | u32 classid; |
25 | }; | 26 | }; |
26 | 27 | ||
28 | static struct cgroup_subsys_state *cgrp_create(struct cgroup_subsys *ss, | ||
29 | struct cgroup *cgrp); | ||
30 | static void cgrp_destroy(struct cgroup_subsys *ss, struct cgroup *cgrp); | ||
31 | static int cgrp_populate(struct cgroup_subsys *ss, struct cgroup *cgrp); | ||
32 | |||
33 | struct cgroup_subsys net_cls_subsys = { | ||
34 | .name = "net_cls", | ||
35 | .create = cgrp_create, | ||
36 | .destroy = cgrp_destroy, | ||
37 | .populate = cgrp_populate, | ||
38 | #ifdef CONFIG_NET_CLS_CGROUP | ||
39 | .subsys_id = net_cls_subsys_id, | ||
40 | #else | ||
41 | #define net_cls_subsys_id net_cls_subsys.subsys_id | ||
42 | #endif | ||
43 | .module = THIS_MODULE, | ||
44 | }; | ||
45 | |||
46 | |||
27 | static inline struct cgroup_cls_state *cgrp_cls_state(struct cgroup *cgrp) | 47 | static inline struct cgroup_cls_state *cgrp_cls_state(struct cgroup *cgrp) |
28 | { | 48 | { |
29 | return container_of(cgroup_subsys_state(cgrp, net_cls_subsys_id), | 49 | return container_of(cgroup_subsys_state(cgrp, net_cls_subsys_id), |
@@ -79,14 +99,6 @@ static int cgrp_populate(struct cgroup_subsys *ss, struct cgroup *cgrp) | |||
79 | return cgroup_add_files(cgrp, ss, ss_files, ARRAY_SIZE(ss_files)); | 99 | return cgroup_add_files(cgrp, ss, ss_files, ARRAY_SIZE(ss_files)); |
80 | } | 100 | } |
81 | 101 | ||
82 | struct cgroup_subsys net_cls_subsys = { | ||
83 | .name = "net_cls", | ||
84 | .create = cgrp_create, | ||
85 | .destroy = cgrp_destroy, | ||
86 | .populate = cgrp_populate, | ||
87 | .subsys_id = net_cls_subsys_id, | ||
88 | }; | ||
89 | |||
90 | struct cls_cgroup_head | 102 | struct cls_cgroup_head |
91 | { | 103 | { |
92 | u32 handle; | 104 | u32 handle; |
@@ -277,12 +289,19 @@ static struct tcf_proto_ops cls_cgroup_ops __read_mostly = { | |||
277 | 289 | ||
278 | static int __init init_cgroup_cls(void) | 290 | static int __init init_cgroup_cls(void) |
279 | { | 291 | { |
280 | return register_tcf_proto_ops(&cls_cgroup_ops); | 292 | int ret = register_tcf_proto_ops(&cls_cgroup_ops); |
293 | if (ret) | ||
294 | return ret; | ||
295 | ret = cgroup_load_subsys(&net_cls_subsys); | ||
296 | if (ret) | ||
297 | unregister_tcf_proto_ops(&cls_cgroup_ops); | ||
298 | return ret; | ||
281 | } | 299 | } |
282 | 300 | ||
283 | static void __exit exit_cgroup_cls(void) | 301 | static void __exit exit_cgroup_cls(void) |
284 | { | 302 | { |
285 | unregister_tcf_proto_ops(&cls_cgroup_ops); | 303 | unregister_tcf_proto_ops(&cls_cgroup_ops); |
304 | cgroup_unload_subsys(&net_cls_subsys); | ||
286 | } | 305 | } |
287 | 306 | ||
288 | module_init(init_cgroup_cls); | 307 | module_init(init_cgroup_cls); |
diff --git a/net/sched/cls_flow.c b/net/sched/cls_flow.c index e054c62857e1..6ed61b10e002 100644 --- a/net/sched/cls_flow.c +++ b/net/sched/cls_flow.c | |||
@@ -20,6 +20,7 @@ | |||
20 | #include <linux/ip.h> | 20 | #include <linux/ip.h> |
21 | #include <linux/ipv6.h> | 21 | #include <linux/ipv6.h> |
22 | #include <linux/if_vlan.h> | 22 | #include <linux/if_vlan.h> |
23 | #include <linux/slab.h> | ||
23 | 24 | ||
24 | #include <net/pkt_cls.h> | 25 | #include <net/pkt_cls.h> |
25 | #include <net/ip.h> | 26 | #include <net/ip.h> |
diff --git a/net/sched/cls_fw.c b/net/sched/cls_fw.c index 6d6e87585fb1..93b0a7b6f9b4 100644 --- a/net/sched/cls_fw.c +++ b/net/sched/cls_fw.c | |||
@@ -19,6 +19,7 @@ | |||
19 | */ | 19 | */ |
20 | 20 | ||
21 | #include <linux/module.h> | 21 | #include <linux/module.h> |
22 | #include <linux/slab.h> | ||
22 | #include <linux/types.h> | 23 | #include <linux/types.h> |
23 | #include <linux/kernel.h> | 24 | #include <linux/kernel.h> |
24 | #include <linux/string.h> | 25 | #include <linux/string.h> |
diff --git a/net/sched/cls_route.c b/net/sched/cls_route.c index dd872d5383ef..694dcd85dec8 100644 --- a/net/sched/cls_route.c +++ b/net/sched/cls_route.c | |||
@@ -10,6 +10,7 @@ | |||
10 | */ | 10 | */ |
11 | 11 | ||
12 | #include <linux/module.h> | 12 | #include <linux/module.h> |
13 | #include <linux/slab.h> | ||
13 | #include <linux/types.h> | 14 | #include <linux/types.h> |
14 | #include <linux/kernel.h> | 15 | #include <linux/kernel.h> |
15 | #include <linux/string.h> | 16 | #include <linux/string.h> |
diff --git a/net/sched/cls_tcindex.c b/net/sched/cls_tcindex.c index e806f2314b5e..20ef330bb918 100644 --- a/net/sched/cls_tcindex.c +++ b/net/sched/cls_tcindex.c | |||
@@ -9,6 +9,7 @@ | |||
9 | #include <linux/kernel.h> | 9 | #include <linux/kernel.h> |
10 | #include <linux/skbuff.h> | 10 | #include <linux/skbuff.h> |
11 | #include <linux/errno.h> | 11 | #include <linux/errno.h> |
12 | #include <linux/slab.h> | ||
12 | #include <net/act_api.h> | 13 | #include <net/act_api.h> |
13 | #include <net/netlink.h> | 14 | #include <net/netlink.h> |
14 | #include <net/pkt_cls.h> | 15 | #include <net/pkt_cls.h> |
diff --git a/net/sched/cls_u32.c b/net/sched/cls_u32.c index 07372f60bee3..17c5dfc67320 100644 --- a/net/sched/cls_u32.c +++ b/net/sched/cls_u32.c | |||
@@ -31,6 +31,7 @@ | |||
31 | */ | 31 | */ |
32 | 32 | ||
33 | #include <linux/module.h> | 33 | #include <linux/module.h> |
34 | #include <linux/slab.h> | ||
34 | #include <linux/types.h> | 35 | #include <linux/types.h> |
35 | #include <linux/kernel.h> | 36 | #include <linux/kernel.h> |
36 | #include <linux/string.h> | 37 | #include <linux/string.h> |
diff --git a/net/sched/em_meta.c b/net/sched/em_meta.c index 24dce8b648a4..3bcac8aa333c 100644 --- a/net/sched/em_meta.c +++ b/net/sched/em_meta.c | |||
@@ -58,6 +58,7 @@ | |||
58 | * only available if that subsystem is enabled in the kernel. | 58 | * only available if that subsystem is enabled in the kernel. |
59 | */ | 59 | */ |
60 | 60 | ||
61 | #include <linux/slab.h> | ||
61 | #include <linux/module.h> | 62 | #include <linux/module.h> |
62 | #include <linux/types.h> | 63 | #include <linux/types.h> |
63 | #include <linux/kernel.h> | 64 | #include <linux/kernel.h> |
diff --git a/net/sched/em_nbyte.c b/net/sched/em_nbyte.c index 370a1b2ea317..1a4176aee6e5 100644 --- a/net/sched/em_nbyte.c +++ b/net/sched/em_nbyte.c | |||
@@ -9,6 +9,7 @@ | |||
9 | * Authors: Thomas Graf <tgraf@suug.ch> | 9 | * Authors: Thomas Graf <tgraf@suug.ch> |
10 | */ | 10 | */ |
11 | 11 | ||
12 | #include <linux/gfp.h> | ||
12 | #include <linux/module.h> | 13 | #include <linux/module.h> |
13 | #include <linux/types.h> | 14 | #include <linux/types.h> |
14 | #include <linux/kernel.h> | 15 | #include <linux/kernel.h> |
diff --git a/net/sched/em_text.c b/net/sched/em_text.c index 853c5ead87fd..763253257411 100644 --- a/net/sched/em_text.c +++ b/net/sched/em_text.c | |||
@@ -9,6 +9,7 @@ | |||
9 | * Authors: Thomas Graf <tgraf@suug.ch> | 9 | * Authors: Thomas Graf <tgraf@suug.ch> |
10 | */ | 10 | */ |
11 | 11 | ||
12 | #include <linux/slab.h> | ||
12 | #include <linux/module.h> | 13 | #include <linux/module.h> |
13 | #include <linux/types.h> | 14 | #include <linux/types.h> |
14 | #include <linux/kernel.h> | 15 | #include <linux/kernel.h> |
diff --git a/net/sched/ematch.c b/net/sched/ematch.c index aab59409728b..e782bdeedc58 100644 --- a/net/sched/ematch.c +++ b/net/sched/ematch.c | |||
@@ -82,6 +82,7 @@ | |||
82 | */ | 82 | */ |
83 | 83 | ||
84 | #include <linux/module.h> | 84 | #include <linux/module.h> |
85 | #include <linux/slab.h> | ||
85 | #include <linux/types.h> | 86 | #include <linux/types.h> |
86 | #include <linux/kernel.h> | 87 | #include <linux/kernel.h> |
87 | #include <linux/errno.h> | 88 | #include <linux/errno.h> |
diff --git a/net/sched/sch_api.c b/net/sched/sch_api.c index 75fd1c672c61..145268ca57cf 100644 --- a/net/sched/sch_api.c +++ b/net/sched/sch_api.c | |||
@@ -28,6 +28,7 @@ | |||
28 | #include <linux/list.h> | 28 | #include <linux/list.h> |
29 | #include <linux/hrtimer.h> | 29 | #include <linux/hrtimer.h> |
30 | #include <linux/lockdep.h> | 30 | #include <linux/lockdep.h> |
31 | #include <linux/slab.h> | ||
31 | 32 | ||
32 | #include <net/net_namespace.h> | 33 | #include <net/net_namespace.h> |
33 | #include <net/sock.h> | 34 | #include <net/sock.h> |
@@ -1707,6 +1708,7 @@ static int __init pktsched_init(void) | |||
1707 | { | 1708 | { |
1708 | register_qdisc(&pfifo_qdisc_ops); | 1709 | register_qdisc(&pfifo_qdisc_ops); |
1709 | register_qdisc(&bfifo_qdisc_ops); | 1710 | register_qdisc(&bfifo_qdisc_ops); |
1711 | register_qdisc(&pfifo_head_drop_qdisc_ops); | ||
1710 | register_qdisc(&mq_qdisc_ops); | 1712 | register_qdisc(&mq_qdisc_ops); |
1711 | proc_net_fops_create(&init_net, "psched", 0, &psched_fops); | 1713 | proc_net_fops_create(&init_net, "psched", 0, &psched_fops); |
1712 | 1714 | ||
diff --git a/net/sched/sch_atm.c b/net/sched/sch_atm.c index ab82f145f689..fcbb86a486a2 100644 --- a/net/sched/sch_atm.c +++ b/net/sched/sch_atm.c | |||
@@ -3,6 +3,7 @@ | |||
3 | /* Written 1998-2000 by Werner Almesberger, EPFL ICA */ | 3 | /* Written 1998-2000 by Werner Almesberger, EPFL ICA */ |
4 | 4 | ||
5 | #include <linux/module.h> | 5 | #include <linux/module.h> |
6 | #include <linux/slab.h> | ||
6 | #include <linux/init.h> | 7 | #include <linux/init.h> |
7 | #include <linux/string.h> | 8 | #include <linux/string.h> |
8 | #include <linux/errno.h> | 9 | #include <linux/errno.h> |
diff --git a/net/sched/sch_cbq.c b/net/sched/sch_cbq.c index 3846d65bc03e..28c01ef5abc8 100644 --- a/net/sched/sch_cbq.c +++ b/net/sched/sch_cbq.c | |||
@@ -11,6 +11,7 @@ | |||
11 | */ | 11 | */ |
12 | 12 | ||
13 | #include <linux/module.h> | 13 | #include <linux/module.h> |
14 | #include <linux/slab.h> | ||
14 | #include <linux/types.h> | 15 | #include <linux/types.h> |
15 | #include <linux/kernel.h> | 16 | #include <linux/kernel.h> |
16 | #include <linux/string.h> | 17 | #include <linux/string.h> |
diff --git a/net/sched/sch_drr.c b/net/sched/sch_drr.c index a65604f8f2b8..b74046a95397 100644 --- a/net/sched/sch_drr.c +++ b/net/sched/sch_drr.c | |||
@@ -9,6 +9,7 @@ | |||
9 | */ | 9 | */ |
10 | 10 | ||
11 | #include <linux/module.h> | 11 | #include <linux/module.h> |
12 | #include <linux/slab.h> | ||
12 | #include <linux/init.h> | 13 | #include <linux/init.h> |
13 | #include <linux/errno.h> | 14 | #include <linux/errno.h> |
14 | #include <linux/netdevice.h> | 15 | #include <linux/netdevice.h> |
diff --git a/net/sched/sch_dsmark.c b/net/sched/sch_dsmark.c index d303daa45d49..63d41f86679c 100644 --- a/net/sched/sch_dsmark.c +++ b/net/sched/sch_dsmark.c | |||
@@ -5,6 +5,7 @@ | |||
5 | 5 | ||
6 | #include <linux/module.h> | 6 | #include <linux/module.h> |
7 | #include <linux/init.h> | 7 | #include <linux/init.h> |
8 | #include <linux/slab.h> | ||
8 | #include <linux/types.h> | 9 | #include <linux/types.h> |
9 | #include <linux/string.h> | 10 | #include <linux/string.h> |
10 | #include <linux/errno.h> | 11 | #include <linux/errno.h> |
diff --git a/net/sched/sch_fifo.c b/net/sched/sch_fifo.c index 69188e8358b4..5948bafa8ce2 100644 --- a/net/sched/sch_fifo.c +++ b/net/sched/sch_fifo.c | |||
@@ -10,6 +10,7 @@ | |||
10 | */ | 10 | */ |
11 | 11 | ||
12 | #include <linux/module.h> | 12 | #include <linux/module.h> |
13 | #include <linux/slab.h> | ||
13 | #include <linux/types.h> | 14 | #include <linux/types.h> |
14 | #include <linux/kernel.h> | 15 | #include <linux/kernel.h> |
15 | #include <linux/errno.h> | 16 | #include <linux/errno.h> |
@@ -43,6 +44,26 @@ static int pfifo_enqueue(struct sk_buff *skb, struct Qdisc* sch) | |||
43 | return qdisc_reshape_fail(skb, sch); | 44 | return qdisc_reshape_fail(skb, sch); |
44 | } | 45 | } |
45 | 46 | ||
47 | static int pfifo_tail_enqueue(struct sk_buff *skb, struct Qdisc* sch) | ||
48 | { | ||
49 | struct sk_buff *skb_head; | ||
50 | struct fifo_sched_data *q = qdisc_priv(sch); | ||
51 | |||
52 | if (likely(skb_queue_len(&sch->q) < q->limit)) | ||
53 | return qdisc_enqueue_tail(skb, sch); | ||
54 | |||
55 | /* queue full, remove one skb to fulfill the limit */ | ||
56 | skb_head = qdisc_dequeue_head(sch); | ||
57 | sch->bstats.bytes -= qdisc_pkt_len(skb_head); | ||
58 | sch->bstats.packets--; | ||
59 | sch->qstats.drops++; | ||
60 | kfree_skb(skb_head); | ||
61 | |||
62 | qdisc_enqueue_tail(skb, sch); | ||
63 | |||
64 | return NET_XMIT_CN; | ||
65 | } | ||
66 | |||
46 | static int fifo_init(struct Qdisc *sch, struct nlattr *opt) | 67 | static int fifo_init(struct Qdisc *sch, struct nlattr *opt) |
47 | { | 68 | { |
48 | struct fifo_sched_data *q = qdisc_priv(sch); | 69 | struct fifo_sched_data *q = qdisc_priv(sch); |
@@ -108,6 +129,20 @@ struct Qdisc_ops bfifo_qdisc_ops __read_mostly = { | |||
108 | }; | 129 | }; |
109 | EXPORT_SYMBOL(bfifo_qdisc_ops); | 130 | EXPORT_SYMBOL(bfifo_qdisc_ops); |
110 | 131 | ||
132 | struct Qdisc_ops pfifo_head_drop_qdisc_ops __read_mostly = { | ||
133 | .id = "pfifo_head_drop", | ||
134 | .priv_size = sizeof(struct fifo_sched_data), | ||
135 | .enqueue = pfifo_tail_enqueue, | ||
136 | .dequeue = qdisc_dequeue_head, | ||
137 | .peek = qdisc_peek_head, | ||
138 | .drop = qdisc_queue_drop_head, | ||
139 | .init = fifo_init, | ||
140 | .reset = qdisc_reset_queue, | ||
141 | .change = fifo_init, | ||
142 | .dump = fifo_dump, | ||
143 | .owner = THIS_MODULE, | ||
144 | }; | ||
145 | |||
111 | /* Pass size change message down to embedded FIFO */ | 146 | /* Pass size change message down to embedded FIFO */ |
112 | int fifo_set_limit(struct Qdisc *q, unsigned int limit) | 147 | int fifo_set_limit(struct Qdisc *q, unsigned int limit) |
113 | { | 148 | { |
diff --git a/net/sched/sch_generic.c b/net/sched/sch_generic.c index 5173c1e1b19c..ff4dd53eeff0 100644 --- a/net/sched/sch_generic.c +++ b/net/sched/sch_generic.c | |||
@@ -24,6 +24,7 @@ | |||
24 | #include <linux/init.h> | 24 | #include <linux/init.h> |
25 | #include <linux/rcupdate.h> | 25 | #include <linux/rcupdate.h> |
26 | #include <linux/list.h> | 26 | #include <linux/list.h> |
27 | #include <linux/slab.h> | ||
27 | #include <net/pkt_sched.h> | 28 | #include <net/pkt_sched.h> |
28 | 29 | ||
29 | /* Main transmission queue. */ | 30 | /* Main transmission queue. */ |
diff --git a/net/sched/sch_gred.c b/net/sched/sch_gred.c index 40408d595c08..51dcc2aa5c92 100644 --- a/net/sched/sch_gred.c +++ b/net/sched/sch_gred.c | |||
@@ -18,6 +18,7 @@ | |||
18 | * For all the glorious comments look at include/net/red.h | 18 | * For all the glorious comments look at include/net/red.h |
19 | */ | 19 | */ |
20 | 20 | ||
21 | #include <linux/slab.h> | ||
21 | #include <linux/module.h> | 22 | #include <linux/module.h> |
22 | #include <linux/types.h> | 23 | #include <linux/types.h> |
23 | #include <linux/kernel.h> | 24 | #include <linux/kernel.h> |
diff --git a/net/sched/sch_htb.c b/net/sched/sch_htb.c index 508cf5f3a6d5..0b52b8de562c 100644 --- a/net/sched/sch_htb.c +++ b/net/sched/sch_htb.c | |||
@@ -36,6 +36,7 @@ | |||
36 | #include <linux/compiler.h> | 36 | #include <linux/compiler.h> |
37 | #include <linux/rbtree.h> | 37 | #include <linux/rbtree.h> |
38 | #include <linux/workqueue.h> | 38 | #include <linux/workqueue.h> |
39 | #include <linux/slab.h> | ||
39 | #include <net/netlink.h> | 40 | #include <net/netlink.h> |
40 | #include <net/pkt_sched.h> | 41 | #include <net/pkt_sched.h> |
41 | 42 | ||
diff --git a/net/sched/sch_mq.c b/net/sched/sch_mq.c index d1dea3d5dc92..b2aba3f5e6fa 100644 --- a/net/sched/sch_mq.c +++ b/net/sched/sch_mq.c | |||
@@ -9,6 +9,7 @@ | |||
9 | */ | 9 | */ |
10 | 10 | ||
11 | #include <linux/types.h> | 11 | #include <linux/types.h> |
12 | #include <linux/slab.h> | ||
12 | #include <linux/kernel.h> | 13 | #include <linux/kernel.h> |
13 | #include <linux/string.h> | 14 | #include <linux/string.h> |
14 | #include <linux/errno.h> | 15 | #include <linux/errno.h> |
diff --git a/net/sched/sch_multiq.c b/net/sched/sch_multiq.c index 7db2c88ce585..c50876cd8704 100644 --- a/net/sched/sch_multiq.c +++ b/net/sched/sch_multiq.c | |||
@@ -18,6 +18,7 @@ | |||
18 | */ | 18 | */ |
19 | 19 | ||
20 | #include <linux/module.h> | 20 | #include <linux/module.h> |
21 | #include <linux/slab.h> | ||
21 | #include <linux/types.h> | 22 | #include <linux/types.h> |
22 | #include <linux/kernel.h> | 23 | #include <linux/kernel.h> |
23 | #include <linux/string.h> | 24 | #include <linux/string.h> |
diff --git a/net/sched/sch_netem.c b/net/sched/sch_netem.c index d8b10e054627..4714ff162bbd 100644 --- a/net/sched/sch_netem.c +++ b/net/sched/sch_netem.c | |||
@@ -14,6 +14,7 @@ | |||
14 | */ | 14 | */ |
15 | 15 | ||
16 | #include <linux/module.h> | 16 | #include <linux/module.h> |
17 | #include <linux/slab.h> | ||
17 | #include <linux/types.h> | 18 | #include <linux/types.h> |
18 | #include <linux/kernel.h> | 19 | #include <linux/kernel.h> |
19 | #include <linux/errno.h> | 20 | #include <linux/errno.h> |
diff --git a/net/sched/sch_prio.c b/net/sched/sch_prio.c index 93285cecb246..81672e0c1b25 100644 --- a/net/sched/sch_prio.c +++ b/net/sched/sch_prio.c | |||
@@ -12,6 +12,7 @@ | |||
12 | */ | 12 | */ |
13 | 13 | ||
14 | #include <linux/module.h> | 14 | #include <linux/module.h> |
15 | #include <linux/slab.h> | ||
15 | #include <linux/types.h> | 16 | #include <linux/types.h> |
16 | #include <linux/kernel.h> | 17 | #include <linux/kernel.h> |
17 | #include <linux/string.h> | 18 | #include <linux/string.h> |
diff --git a/net/sched/sch_sfq.c b/net/sched/sch_sfq.c index cb21380c0605..c5a9ac566007 100644 --- a/net/sched/sch_sfq.c +++ b/net/sched/sch_sfq.c | |||
@@ -20,6 +20,7 @@ | |||
20 | #include <linux/ipv6.h> | 20 | #include <linux/ipv6.h> |
21 | #include <linux/skbuff.h> | 21 | #include <linux/skbuff.h> |
22 | #include <linux/jhash.h> | 22 | #include <linux/jhash.h> |
23 | #include <linux/slab.h> | ||
23 | #include <net/ip.h> | 24 | #include <net/ip.h> |
24 | #include <net/netlink.h> | 25 | #include <net/netlink.h> |
25 | #include <net/pkt_sched.h> | 26 | #include <net/pkt_sched.h> |
diff --git a/net/sched/sch_teql.c b/net/sched/sch_teql.c index db69637069c4..3415b6ce1c0a 100644 --- a/net/sched/sch_teql.c +++ b/net/sched/sch_teql.c | |||
@@ -11,6 +11,7 @@ | |||
11 | #include <linux/module.h> | 11 | #include <linux/module.h> |
12 | #include <linux/types.h> | 12 | #include <linux/types.h> |
13 | #include <linux/kernel.h> | 13 | #include <linux/kernel.h> |
14 | #include <linux/slab.h> | ||
14 | #include <linux/string.h> | 15 | #include <linux/string.h> |
15 | #include <linux/errno.h> | 16 | #include <linux/errno.h> |
16 | #include <linux/if_arp.h> | 17 | #include <linux/if_arp.h> |