Merge branch 'davem-next' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik...
[linux-2.6] / net / sched / Kconfig
1 #
2 # Traffic control configuration.
3
4
5 menuconfig NET_SCHED
6         bool "QoS and/or fair queueing"
7         select NET_SCH_FIFO
8         ---help---
9           When the kernel has several packets to send out over a network
10           device, it has to decide which ones to send first, which ones to
11           delay, and which ones to drop. This is the job of the queueing
12           disciplines, several different algorithms for how to do this
13           "fairly" have been proposed.
14
15           If you say N here, you will get the standard packet scheduler, which
16           is a FIFO (first come, first served). If you say Y here, you will be
17           able to choose from among several alternative algorithms which can
18           then be attached to different network devices. This is useful for
19           example if some of your network devices are real time devices that
20           need a certain minimum data flow rate, or if you need to limit the
21           maximum data flow rate for traffic which matches specified criteria.
22           This code is considered to be experimental.
23
24           To administer these schedulers, you'll need the user-level utilities
25           from the package iproute2+tc at <ftp://ftp.tux.org/pub/net/ip-routing/>.
26           That package also contains some documentation; for more, check out
27           <http://linux-net.osdl.org/index.php/Iproute2>.
28
29           This Quality of Service (QoS) support will enable you to use
30           Differentiated Services (diffserv) and Resource Reservation Protocol
31           (RSVP) on your Linux router if you also say Y to the corresponding
32           classifiers below.  Documentation and software is at
33           <http://diffserv.sourceforge.net/>.
34
35           If you say Y here and to "/proc file system" below, you will be able
36           to read status information about packet schedulers from the file
37           /proc/net/psched.
38
39           The available schedulers are listed in the following questions; you
40           can say Y to as many as you like. If unsure, say N now.
41
42 if NET_SCHED
43
44 comment "Queueing/Scheduling"
45
46 config NET_SCH_CBQ
47         tristate "Class Based Queueing (CBQ)"
48         ---help---
49           Say Y here if you want to use the Class-Based Queueing (CBQ) packet
50           scheduling algorithm. This algorithm classifies the waiting packets
51           into a tree-like hierarchy of classes; the leaves of this tree are
52           in turn scheduled by separate algorithms.
53
54           See the top of <file:net/sched/sch_cbq.c> for more details.
55
56           CBQ is a commonly used scheduler, so if you're unsure, you should
57           say Y here. Then say Y to all the queueing algorithms below that you
58           want to use as leaf disciplines.
59
60           To compile this code as a module, choose M here: the
61           module will be called sch_cbq.
62
63 config NET_SCH_HTB
64         tristate "Hierarchical Token Bucket (HTB)"
65         ---help---
66           Say Y here if you want to use the Hierarchical Token Buckets (HTB)
67           packet scheduling algorithm. See
68           <http://luxik.cdi.cz/~devik/qos/htb/> for complete manual and
69           in-depth articles.
70
71           HTB is very similar to CBQ regarding its goals however is has
72           different properties and different algorithm.
73
74           To compile this code as a module, choose M here: the
75           module will be called sch_htb.
76
77 config NET_SCH_HFSC
78         tristate "Hierarchical Fair Service Curve (HFSC)"
79         ---help---
80           Say Y here if you want to use the Hierarchical Fair Service Curve
81           (HFSC) packet scheduling algorithm.
82
83           To compile this code as a module, choose M here: the
84           module will be called sch_hfsc.
85
86 config NET_SCH_ATM
87         tristate "ATM Virtual Circuits (ATM)"
88         depends on ATM
89         ---help---
90           Say Y here if you want to use the ATM pseudo-scheduler.  This
91           provides a framework for invoking classifiers, which in turn
92           select classes of this queuing discipline.  Each class maps
93           the flow(s) it is handling to a given virtual circuit.
94
95           See the top of <file:net/sched/sch_atm.c> for more details.
96
97           To compile this code as a module, choose M here: the
98           module will be called sch_atm.
99
100 config NET_SCH_PRIO
101         tristate "Multi Band Priority Queueing (PRIO)"
102         ---help---
103           Say Y here if you want to use an n-band priority queue packet
104           scheduler.
105
106           To compile this code as a module, choose M here: the
107           module will be called sch_prio.
108
109 config NET_SCH_MULTIQ
110         tristate "Hardware Multiqueue-aware Multi Band Queuing (MULTIQ)"
111         ---help---
112           Say Y here if you want to use an n-band queue packet scheduler
113           to support devices that have multiple hardware transmit queues.
114
115           To compile this code as a module, choose M here: the
116           module will be called sch_multiq.
117
118 config NET_SCH_RED
119         tristate "Random Early Detection (RED)"
120         ---help---
121           Say Y here if you want to use the Random Early Detection (RED)
122           packet scheduling algorithm.
123
124           See the top of <file:net/sched/sch_red.c> for more details.
125
126           To compile this code as a module, choose M here: the
127           module will be called sch_red.
128
129 config NET_SCH_SFQ
130         tristate "Stochastic Fairness Queueing (SFQ)"
131         ---help---
132           Say Y here if you want to use the Stochastic Fairness Queueing (SFQ)
133           packet scheduling algorithm.
134
135           See the top of <file:net/sched/sch_sfq.c> for more details.
136
137           To compile this code as a module, choose M here: the
138           module will be called sch_sfq.
139
140 config NET_SCH_TEQL
141         tristate "True Link Equalizer (TEQL)"
142         ---help---
143           Say Y here if you want to use the True Link Equalizer (TLE) packet
144           scheduling algorithm. This queueing discipline allows the combination
145           of several physical devices into one virtual device.
146
147           See the top of <file:net/sched/sch_teql.c> for more details.
148
149           To compile this code as a module, choose M here: the
150           module will be called sch_teql.
151
152 config NET_SCH_TBF
153         tristate "Token Bucket Filter (TBF)"
154         ---help---
155           Say Y here if you want to use the Token Bucket Filter (TBF) packet
156           scheduling algorithm.
157
158           See the top of <file:net/sched/sch_tbf.c> for more details.
159
160           To compile this code as a module, choose M here: the
161           module will be called sch_tbf.
162
163 config NET_SCH_GRED
164         tristate "Generic Random Early Detection (GRED)"
165         ---help---
166           Say Y here if you want to use the Generic Random Early Detection
167           (GRED) packet scheduling algorithm for some of your network devices
168           (see the top of <file:net/sched/sch_red.c> for details and
169           references about the algorithm).
170
171           To compile this code as a module, choose M here: the
172           module will be called sch_gred.
173
174 config NET_SCH_DSMARK
175         tristate "Differentiated Services marker (DSMARK)"
176         ---help---
177           Say Y if you want to schedule packets according to the
178           Differentiated Services architecture proposed in RFC 2475.
179           Technical information on this method, with pointers to associated
180           RFCs, is available at <http://www.gta.ufrj.br/diffserv/>.
181
182           To compile this code as a module, choose M here: the
183           module will be called sch_dsmark.
184
185 config NET_SCH_NETEM
186         tristate "Network emulator (NETEM)"
187         ---help---
188           Say Y if you want to emulate network delay, loss, and packet
189           re-ordering. This is often useful to simulate networks when
190           testing applications or protocols.
191
192           To compile this driver as a module, choose M here: the module
193           will be called sch_netem.
194
195           If unsure, say N.
196
197 config NET_SCH_INGRESS
198         tristate "Ingress Qdisc"
199         depends on NET_CLS_ACT
200         ---help---
201           Say Y here if you want to use classifiers for incoming packets.
202           If unsure, say Y.
203
204           To compile this code as a module, choose M here: the
205           module will be called sch_ingress.
206
207 comment "Classification"
208
209 config NET_CLS
210         boolean
211
212 config NET_CLS_BASIC
213         tristate "Elementary classification (BASIC)"
214         select NET_CLS
215         ---help---
216           Say Y here if you want to be able to classify packets using
217           only extended matches and actions.
218
219           To compile this code as a module, choose M here: the
220           module will be called cls_basic.
221
222 config NET_CLS_TCINDEX
223         tristate "Traffic-Control Index (TCINDEX)"
224         select NET_CLS
225         ---help---
226           Say Y here if you want to be able to classify packets based on
227           traffic control indices. You will want this feature if you want
228           to implement Differentiated Services together with DSMARK.
229
230           To compile this code as a module, choose M here: the
231           module will be called cls_tcindex.
232
233 config NET_CLS_ROUTE4
234         tristate "Routing decision (ROUTE)"
235         select NET_CLS_ROUTE
236         select NET_CLS
237         ---help---
238           If you say Y here, you will be able to classify packets
239           according to the route table entry they matched.
240
241           To compile this code as a module, choose M here: the
242           module will be called cls_route.
243
244 config NET_CLS_ROUTE
245         bool
246
247 config NET_CLS_FW
248         tristate "Netfilter mark (FW)"
249         select NET_CLS
250         ---help---
251           If you say Y here, you will be able to classify packets
252           according to netfilter/firewall marks.
253
254           To compile this code as a module, choose M here: the
255           module will be called cls_fw.
256
257 config NET_CLS_U32
258         tristate "Universal 32bit comparisons w/ hashing (U32)"
259         select NET_CLS
260         ---help---
261           Say Y here to be able to classify packets using a universal
262           32bit pieces based comparison scheme.
263
264           To compile this code as a module, choose M here: the
265           module will be called cls_u32.
266
267 config CLS_U32_PERF
268         bool "Performance counters support"
269         depends on NET_CLS_U32
270         ---help---
271           Say Y here to make u32 gather additional statistics useful for
272           fine tuning u32 classifiers.
273
274 config CLS_U32_MARK
275         bool "Netfilter marks support"
276         depends on NET_CLS_U32
277         ---help---
278           Say Y here to be able to use netfilter marks as u32 key.
279
280 config NET_CLS_RSVP
281         tristate "IPv4 Resource Reservation Protocol (RSVP)"
282         select NET_CLS
283         ---help---
284           The Resource Reservation Protocol (RSVP) permits end systems to
285           request a minimum and maximum data flow rate for a connection; this
286           is important for real time data such as streaming sound or video.
287
288           Say Y here if you want to be able to classify outgoing packets based
289           on their RSVP requests.
290
291           To compile this code as a module, choose M here: the
292           module will be called cls_rsvp.
293
294 config NET_CLS_RSVP6
295         tristate "IPv6 Resource Reservation Protocol (RSVP6)"
296         select NET_CLS
297         ---help---
298           The Resource Reservation Protocol (RSVP) permits end systems to
299           request a minimum and maximum data flow rate for a connection; this
300           is important for real time data such as streaming sound or video.
301
302           Say Y here if you want to be able to classify outgoing packets based
303           on their RSVP requests and you are using the IPv6 protocol.
304
305           To compile this code as a module, choose M here: the
306           module will be called cls_rsvp6.
307
308 config NET_CLS_FLOW
309         tristate "Flow classifier"
310         select NET_CLS
311         ---help---
312           If you say Y here, you will be able to classify packets based on
313           a configurable combination of packet keys. This is mostly useful
314           in combination with SFQ.
315
316           To compile this code as a module, choose M here: the
317           module will be called cls_flow.
318
319 config NET_EMATCH
320         bool "Extended Matches"
321         select NET_CLS
322         ---help---
323           Say Y here if you want to use extended matches on top of classifiers
324           and select the extended matches below.
325
326           Extended matches are small classification helpers not worth writing
327           a separate classifier for.
328
329           A recent version of the iproute2 package is required to use
330           extended matches.
331
332 config NET_EMATCH_STACK
333         int "Stack size"
334         depends on NET_EMATCH
335         default "32"
336         ---help---
337           Size of the local stack variable used while evaluating the tree of
338           ematches. Limits the depth of the tree, i.e. the number of
339           encapsulated precedences. Every level requires 4 bytes of additional
340           stack space.
341
342 config NET_EMATCH_CMP
343         tristate "Simple packet data comparison"
344         depends on NET_EMATCH
345         ---help---
346           Say Y here if you want to be able to classify packets based on
347           simple packet data comparisons for 8, 16, and 32bit values.
348
349           To compile this code as a module, choose M here: the
350           module will be called em_cmp.
351
352 config NET_EMATCH_NBYTE
353         tristate "Multi byte comparison"
354         depends on NET_EMATCH
355         ---help---
356           Say Y here if you want to be able to classify packets based on
357           multiple byte comparisons mainly useful for IPv6 address comparisons.
358
359           To compile this code as a module, choose M here: the
360           module will be called em_nbyte.
361
362 config NET_EMATCH_U32
363         tristate "U32 key"
364         depends on NET_EMATCH
365         ---help---
366           Say Y here if you want to be able to classify packets using
367           the famous u32 key in combination with logic relations.
368
369           To compile this code as a module, choose M here: the
370           module will be called em_u32.
371
372 config NET_EMATCH_META
373         tristate "Metadata"
374         depends on NET_EMATCH
375         ---help---
376           Say Y here if you want to be able to classify packets based on
377           metadata such as load average, netfilter attributes, socket
378           attributes and routing decisions.
379
380           To compile this code as a module, choose M here: the
381           module will be called em_meta.
382
383 config NET_EMATCH_TEXT
384         tristate "Textsearch"
385         depends on NET_EMATCH
386         select TEXTSEARCH
387         select TEXTSEARCH_KMP
388         select TEXTSEARCH_BM
389         select TEXTSEARCH_FSM
390         ---help---
391           Say Y here if you want to be able to classify packets based on
392           textsearch comparisons.
393
394           To compile this code as a module, choose M here: the
395           module will be called em_text.
396
397 config NET_CLS_ACT
398         bool "Actions"
399         ---help---
400           Say Y here if you want to use traffic control actions. Actions
401           get attached to classifiers and are invoked after a successful
402           classification. They are used to overwrite the classification
403           result, instantly drop or redirect packets, etc.
404
405           A recent version of the iproute2 package is required to use
406           extended matches.
407
408 config NET_ACT_POLICE
409         tristate "Traffic Policing"
410         depends on NET_CLS_ACT 
411         ---help---
412           Say Y here if you want to do traffic policing, i.e. strict
413           bandwidth limiting. This action replaces the existing policing
414           module.
415
416           To compile this code as a module, choose M here: the
417           module will be called police.
418
419 config NET_ACT_GACT
420         tristate "Generic actions"
421         depends on NET_CLS_ACT
422         ---help---
423           Say Y here to take generic actions such as dropping and
424           accepting packets.
425
426           To compile this code as a module, choose M here: the
427           module will be called gact.
428
429 config GACT_PROB
430         bool "Probability support"
431         depends on NET_ACT_GACT
432         ---help---
433           Say Y here to use the generic action randomly or deterministically.
434
435 config NET_ACT_MIRRED
436         tristate "Redirecting and Mirroring"
437         depends on NET_CLS_ACT
438         ---help---
439           Say Y here to allow packets to be mirrored or redirected to
440           other devices.
441
442           To compile this code as a module, choose M here: the
443           module will be called mirred.
444
445 config NET_ACT_IPT
446         tristate "IPtables targets"
447         depends on NET_CLS_ACT && NETFILTER && IP_NF_IPTABLES
448         ---help---
449           Say Y here to be able to invoke iptables targets after successful
450           classification.
451
452           To compile this code as a module, choose M here: the
453           module will be called ipt.
454
455 config NET_ACT_NAT
456         tristate "Stateless NAT"
457         depends on NET_CLS_ACT
458         ---help---
459           Say Y here to do stateless NAT on IPv4 packets.  You should use
460           netfilter for NAT unless you know what you are doing.
461
462           To compile this code as a module, choose M here: the
463           module will be called nat.
464
465 config NET_ACT_PEDIT
466         tristate "Packet Editing"
467         depends on NET_CLS_ACT
468         ---help---
469           Say Y here if you want to mangle the content of packets.
470
471           To compile this code as a module, choose M here: the
472           module will be called pedit.
473
474 config NET_ACT_SIMP
475         tristate "Simple Example (Debug)"
476         depends on NET_CLS_ACT
477         ---help---
478           Say Y here to add a simple action for demonstration purposes.
479           It is meant as an example and for debugging purposes. It will
480           print a configured policy string followed by the packet count
481           to the console for every packet that passes by.
482
483           If unsure, say N.
484
485           To compile this code as a module, choose M here: the
486           module will be called simple.
487
488 config NET_ACT_SKBEDIT
489         tristate "SKB Editing"
490         depends on NET_CLS_ACT
491         ---help---
492           Say Y here to change skb priority or queue_mapping settings.
493
494           If unsure, say N.
495
496           To compile this code as a module, choose M here: the
497           module will be called skbedit.
498
499 config NET_CLS_IND
500         bool "Incoming device classification"
501         depends on NET_CLS_U32 || NET_CLS_FW
502         ---help---
503           Say Y here to extend the u32 and fw classifier to support
504           classification based on the incoming device. This option is
505           likely to disappear in favour of the metadata ematch.
506
507 endif # NET_SCHED
508
509 config NET_SCH_FIFO
510         bool